@charset "UTF-8";
/* ==========================================================================
   いがみ建築工房 main.css（TOPページ v6-2 準拠）
   ブレークポイント
     SP      : 〜767px
     Tablet+ : 768px〜   （PC用ボタン・FV縦メニュー表示）
     Wide    : 1140px〜  （固定ヘッダーの横並びメニュー表示）
     ※ 想いセクションの写真比率のみ 1200px で切替
   ========================================================================== */

:root {
	--bg: #f3f0ea;
	--bg-sub: #e9e4da;
	--bg-dark: #2b2723;
	--ink: #24201c;
	--text-sub: #4a443d;
	--grey: #7d746a;
	--line: #d8d1c5;
	--hdr-h: 72px;
	--gutter: clamp(20px, 5vw, 80px);
	--col-gap: clamp(12px, 2vw, 32px);
	--serif: 'Noto Serif JP', serif;
	--sans: 'Noto Sans JP', sans-serif;
	--italic: 'Libre Baskerville', serif;
}
@media (max-width: 767px) {
	:root { --hdr-h: 56px; }
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font-family: var(--sans);
	font-weight: 400;
	-webkit-text-size-adjust: 100%;
}
a { color: var(--ink); text-decoration: none; }
a:hover { opacity: .7; }
img { display: block; max-width: 100%; }
button { font: inherit; color: inherit; }
h1, h2, h3, p { margin: 0; }
.site-main { display: block; }
html.is-locked { overflow: hidden; }

/* PC/SP 出し分け */
.sp-only { display: none !important; }
@media (max-width: 767px) {
	.pc-only { display: none !important; }
	.sp-only { display: inline-block !important; }
}

/* ---------- 共通パーツ ---------- */
.btn {
	display: inline-block;
	border: 1px solid var(--ink);
	border-radius: 2px;
	padding: 9px 16px;
	font-size: 15px;
	letter-spacing: .06em;
	white-space: nowrap;
	color: var(--ink);
}
.btn--solid { background: var(--ink); color: #fff; }
.btn--outline-white { color: #fff; border-color: rgba(255,255,255,.9); }
.btn--white { color: var(--ink); background: #fff; border-color: #fff; }

.icon-tel {
	display: flex; align-items: center; justify-content: center;
	width: 44px; height: 44px; flex-shrink: 0; color: var(--ink);
}
.icon-tel--white { color: #fff; filter: drop-shadow(0 1px 4px rgba(0,0,0,.35)); }

.hamburger {
	background: none; border: 0; cursor: pointer;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	gap: 12px; min-width: 64px; min-height: 44px; padding: 0 0 0 8px;
}
.hamburger span { display: block; width: 56px; height: 1px; background: var(--ink); }
.hamburger--white { gap: 10px; }
.hamburger--white span { background: #fff; }

/* + / − トグル（ドロワー・フッター共通） */
.acc-toggle {
	position: relative; width: 44px; height: 44px; flex-shrink: 0;
	background: none; border: 0; padding: 0; cursor: pointer;
}
.acc-toggle span {
	position: absolute; top: 50%; left: 50%;
	background: var(--ink);
	transform: translate(-50%, -50%);
}
.acc-toggle span:nth-child(1) { width: 14px; height: 1px; }
.acc-toggle span:nth-child(2) { width: 1px; height: 14px; transition: transform .3s; }
.acc.is-open > div > .acc-toggle span:nth-child(2) { transform: translate(-50%, -50%) rotate(90deg) scaleY(0); }
.acc-toggle--light span { background: #fff; }
.acc-toggle--light span:nth-child(1) { width: 16px; }
.acc-toggle--light span:nth-child(2) { height: 16px; }
.acc__body { display: none; }
.acc.is-open > .acc__body { display: flex; }

/* 縦書きテキストブロック（SPでは横書きに切替） */
.vtext { writing-mode: vertical-rl; display: flex; flex-direction: column; }
.vtext h2 { white-space: nowrap; }
@media (max-width: 767px) {
	.vtext { writing-mode: horizontal-tb !important; height: auto !important; gap: 20px !important; }
	.vtext h2 { white-space: normal !important; letter-spacing: .08em !important; line-height: 1.6 !important; }
	.vtext p { padding-top: 0 !important; letter-spacing: .06em !important; line-height: 2 !important; }
	.vtext-wrap { justify-self: stretch !important; align-items: stretch !important; }
}

.ttl-sm { font: 400 clamp(22px, 2.2vw, 28px)/1.5 var(--serif); letter-spacing: .14em; }
.ttl-md { font: 400 clamp(24px, 2.4vw, 30px)/1.5 var(--serif); letter-spacing: .14em; }

.link-line {
	font-size: 15px; letter-spacing: .12em; padding: 10px 0;
	border-bottom: 1px solid var(--ink);
}
.link-arrow {
	align-self: flex-end;
	display: flex; align-items: center; gap: 20px;
	font-size: 15px; letter-spacing: .14em;
	padding: 12px 0; border-bottom: 1px solid var(--ink);
}
.link-arrow--serif { align-self: flex-start; font: 400 15px/1 var(--serif); letter-spacing: .14em; }
.link-more {
	align-self: flex-start;
	font-size: 14px; letter-spacing: .12em; color: var(--grey);
	padding-bottom: 6px; border-bottom: 1px solid #b9b0a3;
}
.link-more--end { align-self: flex-end; margin-top: 24px; }

/* ==========================================================================
   Header（固定）
   ========================================================================== */
.site-header {
	position: fixed; top: 0; left: 0; right: 0; z-index: 40;
	height: var(--hdr-h);
	display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px;
	padding: 0 clamp(12px, 2vw, 28px);
	background: var(--bg);
	transition: transform .45s ease, opacity .45s ease;
	transform: translateY(-100%); opacity: 0; pointer-events: none;
}
.site-header.is-visible { transform: translateY(0); opacity: 1; pointer-events: auto; }
.site-header__logo { display: block; flex-shrink: 0; }
.site-header__logo img { height: clamp(18px, 1.6vw, 20px); width: auto; max-width: none; }
@media (max-width: 767px) {
	.site-header {
		background: rgba(243,240,234,.72);
		-webkit-backdrop-filter: blur(12px) saturate(1.2);
		backdrop-filter: blur(12px) saturate(1.2);
	}
	.site-header__logo img { height: 20px; }
}
/* 下層ページ：固定ヘッダー分の余白（Astra ループ内の .site-main には重ねない） */
body:not(.home) > .site-main { padding-top: var(--hdr-h); }
/* Astra アーカイブ見出しの旧ヘッダー用余白を打ち消し */
body.ikh-theme:not(.home) .ast-archive-description {
	margin-top: 0;
	padding-top: 28px;
}

.gnav { display: none; }
@media (min-width: 1140px) {
	.gnav {
		justify-self: center; display: flex; align-items: stretch;
		gap: clamp(14px, 1.6vw, 26px); height: 72px;
	}
}
.gnav__item { position: relative; display: flex; align-items: center; }
.gnav__link { font-size: 15px; letter-spacing: .08em; white-space: nowrap; padding: 6px 0; }
.gnav__sub {
	display: none;
	position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
	min-width: 280px; background: var(--bg); padding: 10px 0; flex-direction: column;
}
.gnav__item:hover .gnav__sub,
.gnav__item:focus-within .gnav__sub { display: flex; }
.gnav__sub a, .fv-nav__sub a { font-size: 15px; line-height: 1.6; padding: 10px 20px; color: var(--ink); }
.gnav__sub a:hover, .fv-nav__sub a:hover { background: var(--bg-sub); opacity: 1; }

.hdr-actions { justify-self: end; display: flex; align-items: center; gap: 10px; }

/* ==========================================================================
   Drawer（ハンバーガーメニュー）
   ========================================================================== */
.drawer { position: fixed; inset: 0; z-index: 50; display: none; justify-content: flex-end; }
.drawer.is-open { display: flex; }
.drawer__backdrop { position: absolute; inset: 0; background: rgba(40,36,32,.38); }
.drawer__panel {
	position: relative; width: min(480px, 100%); height: 100%;
	background: #f1efeb; color: var(--ink); overflow: auto;
	padding: 56px clamp(24px, 4vw, 48px) 48px clamp(40px, 5vw, 72px);
}
.drawer__line { position: absolute; top: 56px; bottom: 40px; left: clamp(20px, 2.4vw, 32px); width: 1px; background: #cfc9bf; }
.drawer__close {
	position: absolute; top: 0; right: clamp(12px, 2vw, 28px); z-index: 2;
	width: 64px; height: var(--hdr-h); padding: 0;
	background: none; border: 0; cursor: pointer;
}
.drawer__close span {
	position: absolute; top: 50%; left: 36px; width: 56px; height: 1px; background: var(--ink);
}
.drawer__close span:nth-child(1) { transform: translate(-50%,-50%) rotate(30deg);  animation: ikX1 .5s cubic-bezier(.6,0,.2,1) .05s both; }
.drawer__close span:nth-child(2) { transform: translate(-50%,-50%) rotate(-30deg); animation: ikX2 .5s cubic-bezier(.6,0,.2,1) .05s both; }
@keyframes ikX1 { from { transform: translate(-50%, calc(-50% - 6px)) rotate(0deg); } to { transform: translate(-50%,-50%) rotate(30deg); } }
@keyframes ikX2 { from { transform: translate(-50%, calc(-50% + 6px)) rotate(0deg); } to { transform: translate(-50%,-50%) rotate(-30deg); } }

.drawer__tagline {
	position: absolute; top: 56px; left: clamp(40px, 5vw, 72px);
	writing-mode: vertical-rl; font: 400 15px/2 var(--serif); letter-spacing: .3em;
}
.drawer__nav { display: flex; flex-direction: column; padding-top: clamp(120px, 22vh, 220px); }
.drawer__nav .acc { display: flex; flex-direction: column; }
.drawer__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.drawer__link { flex: 1; font: 400 18px/1.6 var(--serif); letter-spacing: .16em; padding: 14px 0; }
.drawer__sub { flex-direction: column; padding: 0 0 12px 14px; }
.drawer__sub a { color: #5a534b; font: 400 15px/1.7 var(--serif); letter-spacing: .08em; padding: 7px 0; }
.drawer__pills { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 48px; }
.pill {
	border: 1px solid var(--ink); border-radius: 999px; padding: 6px 18px;
	font: 400 15px/1.6 var(--serif); letter-spacing: .12em;
}
.pill--solid { background: var(--ink); color: #fff; }

/* ==========================================================================
   01 FV
   ========================================================================== */
.fv {
	position: relative; height: 100vh; min-height: 560px; max-height: 960px;
	overflow: hidden; color: #fff;
}
.fv__slide {
	position: absolute; inset: 0; width: 100%; height: 100%;
	object-fit: cover; max-width: none;
	opacity: 0; transform: scale(1);
	transition: opacity 2.4s ease, transform 10s linear;
}
.fv__slide.is-active { opacity: 1; transform: scale(1.06); }

.fv__dots {
	position: absolute; left: clamp(16px, 2vw, 28px); top: 50%; transform: translateY(-50%); z-index: 3;
	display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.fv__dot {
	position: relative; width: 1px; height: 12px; padding: 0; border: 0;
	background: #fff; opacity: .5; cursor: pointer; transition: all .4s;
}
.fv__dot::before { content: ""; position: absolute; inset: -3px -10px; } /* タップ領域拡張 */
.fv__dot.is-active { height: 28px; opacity: 1; }

.fv__shade {
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(30,24,18,.4) 0%, rgba(30,24,18,0) 22%, rgba(30,24,18,0) 62%, rgba(30,24,18,.5) 100%);
}

/* FV 縦書きメニュー（768px〜） */
.fv-nav {
	position: absolute; top: 28px; left: 28px; z-index: 4;
	display: flex; flex-direction: column; gap: 22px;
	font-size: 15px; letter-spacing: .3em; writing-mode: vertical-rl;
	text-shadow: 0 1px 6px rgba(0,0,0,.3);
}
.fv-nav__item { position: relative; padding-bottom: 12px; }
.fv-nav__item > a { color: #fff; }
.fv-nav__sub {
	display: none;
	position: absolute; top: 100%; left: 0; z-index: 6;
	writing-mode: horizontal-tb; min-width: 280px;
	background: rgba(243,240,234,.97); padding: 10px 0; flex-direction: column;
	text-shadow: none; letter-spacing: .06em;
}
.fv-nav__item:hover .fv-nav__sub,
.fv-nav__item:focus-within .fv-nav__sub { display: flex; }

.fv__actions {
	position: absolute; top: 0; right: clamp(12px, 2vw, 28px); z-index: 3;
	height: var(--hdr-h); display: flex; align-items: center; gap: 10px;
}

.fv__logo { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -60%); }
.fv__logo img { width: clamp(220px, 26vw, 360px); max-width: 80vw; height: auto; filter: drop-shadow(0 1px 10px rgba(0,0,0,.35)); }
.fv__logo-v { display: none; }

.fv__catch {
	position: absolute; right: clamp(20px, 4vw, 56px); left: clamp(20px, 4vw, 56px); bottom: clamp(20px, 3.5vh, 32px);
	display: flex; flex-direction: column; align-items: flex-end; text-align: right;
	text-shadow: 0 1px 10px rgba(0,0,0,.35); pointer-events: none;
}
.fv__catch h1 { font: 400 clamp(24px, 2.8vw, 36px)/1 var(--serif); letter-spacing: .16em; }
.fv__caption {
	position: absolute; left: clamp(20px, 4vw, 56px); bottom: clamp(20px, 3.5vh, 32px);
	font: 400 13px/1 var(--sans); letter-spacing: .14em;
	color: rgba(255,255,255,.92); text-shadow: 0 1px 6px rgba(0,0,0,.35);
	max-width: calc(100% - 40px);
}

@media (max-width: 767px) {
	.fv-nav, .fv__logo { display: none; }
	.fv__logo-v {
		display: block; position: absolute; top: 50%; left: 50%; z-index: 2;
		transform: translate(-50%, -58%);
	}
	.fv__logo-v img { width: 34px; height: auto; max-width: none; filter: drop-shadow(0 1px 8px rgba(0,0,0,.4)); }
	.fv__catch { bottom: 96px; }
	.fv__caption {
		white-space: nowrap; letter-spacing: .02em;
		font-size: calc((100vw - 40px) / 29); max-width: none;
	}
}

/* ==========================================================================
   02 イベント・お知らせ
   ========================================================================== */
.sec-event { padding: clamp(56px, 7vw, 96px) var(--gutter); }
.event-grid {
	max-width: 1080px; margin: 0 auto;
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 40px 64px; align-items: start;
}
.event-head { display: flex; flex-direction: column; gap: 20px; }
.event-list { display: flex; flex-direction: column; }
.event-card {
	display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 20px; align-items: center;
	padding: 24px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.event-card + .event-card { border-top: 0; }
.event-card__thumb { width: 120px; aspect-ratio: 1; }
.event-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.event-card__body { display: flex; flex-direction: column; gap: 8px; }
.event-card__meta { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; font-size: 14px; letter-spacing: .08em; }
.badge { border: 1px solid var(--ink); padding: 3px 10px; }
.event-card__cat { color: var(--grey); }
.event-card__title { font: 400 18px/1.7 var(--serif); letter-spacing: .06em; }
@media (max-width: 767px) {
	.sec-event { padding-bottom: 32px; }
	.event-grid { row-gap: 12px; }
}

/* ==========================================================================
   03 想い
   ========================================================================== */
.sec-philo {
	overflow-x: hidden;
	padding: clamp(96px, 14vw, 200px) var(--gutter) clamp(64px, 8vw, 120px);
}
.philo-grid {
	max-width: 1280px; margin: 0 auto;
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--col-gap); row-gap: clamp(40px, 5vw, 72px); align-items: start;
}
.philo-grid img { width: 100%; height: 100%; object-fit: cover; }
.philo-grid__main { grid-column: 1 / 7; aspect-ratio: 4/5; }
.philo-grid__text {
	grid-column: 7 / 13; justify-self: center;
	display: flex; flex-direction: column; align-items: flex-end; gap: 40px;
}
.vtext--philo { gap: clamp(28px, 3vw, 44px); height: clamp(420px, 40vw, 560px); }
.vtext--philo h2 { font: 400 clamp(24px, 2.6vw, 32px)/1.8 var(--serif); letter-spacing: .28em; }
.vtext--philo p { padding-top: 3em; font: 400 clamp(16px, 1.2vw, 17px)/2.3 var(--sans); letter-spacing: .16em; color: var(--text-sub); }
.philo-grid__links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 28px; }
.philo-grid__a { grid-column: 2 / 5; aspect-ratio: 3/4; }
.philo-grid__b { grid-column: 6 / 10; margin-top: 96px; aspect-ratio: 3/2; }
.philo-grid__c { grid-column: 10 / 13; margin-top: -40px; aspect-ratio: 3/4; }
@media (max-width: 1199px) {
	.philo-grid__main { grid-column: 1 / 6; }
	.philo-grid__text { grid-column: 6 / 13; }
}
@media (max-width: 767px) {
	.sec-philo { padding-top: 40px; }
	.philo-grid__main, .philo-grid__text { grid-column: 1 / -1; }
	.philo-grid__a { grid-column: 1 / 7; }
	.philo-grid__b { grid-column: 7 / -1; margin-top: 48px; }
	.philo-grid__c { grid-column: 3 / 11; margin-top: 0; }
}

/* パララックス帯（iOS Safari は background-attachment:fixed 非対応のため通常表示になります） */
.parallax {
	height: clamp(320px, 60vh, 640px);
	background: url('../images/IMG_9650.webp') center / cover no-repeat fixed;
}

/* ==========================================================================
   04 施工事例
   ========================================================================== */
.sec-works { padding: clamp(96px, 14vw, 200px) var(--gutter) clamp(80px, 10vw, 160px); }
.sec-works__inner { max-width: 1280px; margin: 0 auto; display: flex; flex-direction: column; gap: clamp(56px, 8vw, 120px); }
.sec-works__head {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: 24px 48px; align-items: start;
}
.sec-works__head p { font-size: 16px; line-height: 2.2; letter-spacing: .1em; color: var(--text-sub); }
.works-grid {
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--col-gap); row-gap: clamp(48px, 6vw, 80px); align-items: start;
}
.work { display: flex; flex-direction: column; gap: 14px; color: var(--ink); }
.work:hover { opacity: 1; }
.work__thumb {
	position: relative;
	width: 100%;
	overflow: hidden;
	background: #e6e0d5;
	aspect-ratio: 3 / 2;
	flex-shrink: 0;
}
.work__thumb img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center;
	transition: transform 1s ease;
}
.work:hover .work__thumb img { transform: scale(1.04); }
.work__title { font: 400 17px/1.6 var(--serif); letter-spacing: .1em; }
/* 配置（PC） */
.work:nth-child(1) { grid-column: 1 / 8; }
.work:nth-child(2) { grid-column: 9 / 13; margin-top: 160px; }
.work:nth-child(3) { grid-column: 2 / 6;  margin-top: -40px; }
.work:nth-child(4) { grid-column: 7 / 13; margin-top: 96px; }
.work:nth-child(5) { grid-column: 1 / 7;  margin-top: 40px; }
.work:nth-child(6) { grid-column: 8 / 12; margin-top: 160px; }
.work:nth-child(2) .work__thumb,
.work:nth-child(3) .work__thumb,
.work:nth-child(6) .work__thumb { aspect-ratio: 4/5; }
@media (max-width: 767px) {
	.work:nth-child(n) { margin-top: 0; }
	.work:nth-child(1), .work:nth-child(4) { grid-column: 1 / -1; }
	.work:nth-child(2) { grid-column: 4 / -1; }
	.work:nth-child(3), .work:nth-child(6) { grid-column: 1 / 10; }
	.work:nth-child(5) { grid-column: 3 / -1; }
}

/* ==========================================================================
   05 家づくり（大切にしている3つのこと）
   ========================================================================== */
.sec-concept { position: relative; overflow: hidden; padding: clamp(96px, 12vw, 180px) var(--gutter); }
.sec-concept__bg { position: absolute; inset: 0; background: url('../images/IMG_9919.webp') center / cover no-repeat fixed; }
.sec-concept__veil { position: absolute; inset: 0; background: rgba(243,240,234,.86); }
.concept-grid {
	position: relative; max-width: 1280px; margin: 0 auto;
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--col-gap); row-gap: 64px; align-items: start;
}
.concept-grid__left {
	grid-column: 1 / 7; align-self: stretch;
	display: flex; flex-direction: row-reverse; align-items: stretch; gap: clamp(32px, 4vw, 64px);
}
.vtext--concept {
	position: sticky; top: 20vh; align-self: flex-start;
	gap: 28px; height: clamp(360px, 44vh, 520px);
}
.vtext--concept h2 { font: 400 clamp(28px, 3vw, 42px)/1.6 var(--serif); letter-spacing: .24em; }
.concept-sub {
	display: flex; align-items: center; gap: 16px;
	font: 400 15px/1 var(--serif); letter-spacing: .2em; white-space: nowrap;
}
.concept-sub__line { height: 80px; width: 1px; background: var(--ink); }
/* 「3」：Libre Baskerville Italic・縦中横 */
.num3 {
	text-combine-upright: all; -webkit-text-combine: horizontal;
	font: italic 400 2.4em/1 var(--italic); letter-spacing: 0;
	margin: -.3em 0; position: relative; left: -.03em;
}
.concept-photos { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: clamp(56px, 8vw, 120px); }
.concept-photos img { width: 100%; height: 100%; object-fit: cover; }
.concept-photos__1 { width: 88%; aspect-ratio: 3/2; }
.concept-photos__2 { align-self: flex-end; width: 60%; aspect-ratio: 3/4; }
.concept-photos__3 { width: 76%; aspect-ratio: 3/2; }
.concept-grid__right { grid-column: 8 / 13; display: flex; flex-direction: column; }
.concept-item {
	border-top: 1px solid rgba(36,32,28,.35);
	padding: clamp(32px, 4vw, 56px) 0 clamp(40px, 5vw, 72px);
	display: flex; flex-direction: column; gap: clamp(24px, 3vw, 40px);
}
.concept-item h3 { font: 400 clamp(24px, 2.6vw, 34px)/1.6 var(--serif) !important; letter-spacing: .24em !important; }
.concept-item p { font: 400 16px/2.5 var(--serif); letter-spacing: .18em; color: var(--text-sub); }
.concept-item p span { display: block; }
.concept-item__photo img { width: 100%; height: 100%; object-fit: cover; }
.concept-item:nth-child(1) .concept-item__photo { align-self: flex-end;   width: 62%; aspect-ratio: 3/2; }
.concept-item:nth-child(2) .concept-item__photo { align-self: flex-start; width: 48%; aspect-ratio: 4/5; }
.concept-item:nth-child(3) .concept-item__photo { align-self: flex-end;   width: 70%; aspect-ratio: 3/2; }
@media (max-width: 767px) {
	.concept-grid__left, .concept-grid__right { grid-column: 1 / -1; }
	.concept-grid__left { flex-direction: column; }
	.vtext--concept { position: static; }
	.concept-photos { display: none; }
	.concept-item:nth-child(n) .concept-item__photo { width: 80%; }
}

/* ==========================================================================
   06 動画
   ========================================================================== */
.sec-movie {
	position: relative; overflow: hidden; color: #fff;
	min-height: clamp(560px, 80vh, 860px);
	display: flex; align-items: center; justify-content: center;
	padding: clamp(96px, 12vw, 160px) var(--gutter);
}
.sec-movie__bg { position: absolute; inset: 0; background: url('../images/IMG_0658.webp') center / cover no-repeat; }
.sec-movie__video {
	position: absolute; top: 50%; left: 50%;
	width: max(100%, 177.78vh); height: max(100%, 56.25vw); min-width: 100%; min-height: 100%;
	transform: translate(-50%, -50%) scale(1.15); border: 0; pointer-events: none;
}
.sec-movie__veil { position: absolute; inset: 0; background: rgba(36,32,28,.58); }
.sec-movie__body {
	position: relative; display: flex; flex-direction: column; align-items: center;
	gap: clamp(28px, 3vw, 44px); text-align: center;
}
.sec-movie__body h2 { font: 400 clamp(28px, 3.4vw, 46px)/1.75 var(--serif) !important; letter-spacing: .2em !important; }
.sec-movie__body p { font: 400 clamp(16px, 1.3vw, 18px)/2 var(--serif); letter-spacing: .16em; }
.sec-movie__btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin-top: 8px; }
.pill-white {
	color: #fff; border: 1px solid rgba(255,255,255,.9); border-radius: 999px;
	padding: 14px 36px; font: 400 16px/1.4 var(--serif); letter-spacing: .12em;
}
.pill-white:hover { background: rgba(255,255,255,.12); opacity: 1; }

/* ==========================================================================
   07 見学予約
   ========================================================================== */
.sec-visit { padding: clamp(80px, 10vw, 160px) var(--gutter); background: var(--bg-sub); }
.visit-grid {
	max-width: 1280px; margin: 0 auto;
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--col-gap); row-gap: 56px; align-items: start;
}
.visit-grid img { width: 100%; height: auto; }
.visit-grid__text { grid-column: 1 / 5; justify-self: center; gap: clamp(24px, 3vw, 40px); height: clamp(320px, 32vw, 420px); }
.vtext--visit h2 { font: 400 clamp(24px, 2.6vw, 32px)/1.8 var(--serif); letter-spacing: .24em; }
.vtext--visit p { padding-top: 2.5em; font: 400 16px/2.3 var(--sans); letter-spacing: .16em; color: var(--text-sub); }
.visit-grid__card1 { grid-column: 5 / 9; }
.visit-grid__card2 { grid-column: 9 / 13; margin-top: 120px; }
.btn-dark {
	grid-column: 1 / -1; justify-self: center;
	display: flex; align-items: center; gap: 20px;
	padding: 20px 56px; background: var(--ink); color: #fff;
	font-size: 16px; letter-spacing: .14em;
}
@media (max-width: 767px) {
	.visit-grid__text, .visit-grid__card1, .visit-grid__card2 { grid-column: 1 / -1; }
	.visit-grid__card2 { margin-top: 0; }
}

/* ==========================================================================
   08 写真帯（マーキー）
   ========================================================================== */
.band {
	--band-h: clamp(420px, 46vw, 680px);
	position: relative; display: flex; flex-wrap: wrap;
	height: var(--band-h); overflow: hidden; background: var(--bg-dark);
}
@media (max-width: 767px) { .band { --band-h: 70vw; } }
.band__track { display: flex; width: max-content; animation: ikMarquee 400s linear infinite; }
.band__row { display: flex; }
.band__row img {
	height: var(--band-h); width: auto; aspect-ratio: 3/2;
	object-fit: cover; flex-shrink: 0; max-width: none;
}
.band__row img.is-tall { aspect-ratio: 3/4; }
@keyframes ikMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.band__shade {
	position: absolute; inset: 0; pointer-events: none;
	background: linear-gradient(180deg, rgba(30,26,22,0) 45%, rgba(30,26,22,.55) 100%);
}
.band__caption {
	position: absolute; left: clamp(20px, 6vw, 96px); right: clamp(20px, 6vw, 96px); bottom: clamp(28px, 6vw, 72px);
	display: flex; flex-wrap: wrap; align-items: center; gap: 20px 32px; color: #fff; pointer-events: none;
}
.band__caption span { font: 400 clamp(22px, 2.6vw, 34px)/1.4 var(--serif); letter-spacing: .2em; }
@media (prefers-reduced-motion: reduce) { .band__track { animation: none; } }

/* ==========================================================================
   09 分譲住宅
   ========================================================================== */
.sec-land { background: var(--bg-dark); color: var(--bg); padding: clamp(48px, 6vw, 88px) var(--gutter); }
.land-grid {
	max-width: 1080px; margin: 0 auto;
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 32px 64px; align-items: start;
}
.land-grid__head { display: flex; flex-direction: column; gap: 16px; }
.land-grid__head h2 { font: 400 22px/1.5 var(--serif); letter-spacing: .14em; }
.land-grid__head p { font-size: 15px; line-height: 2.1; letter-spacing: .08em; color: #d9d0c3; }
.land-list { display: flex; flex-direction: column; }
.land-list a {
	display: flex; justify-content: space-between; gap: 16px;
	padding: 18px 0; border-top: 1px solid rgba(255,255,255,.25);
	color: var(--bg); font-size: 16px; letter-spacing: .06em;
}
.land-list a:last-child { border-bottom: 1px solid rgba(255,255,255,.25); }
.land-banner { display: block; max-width: 1080px; margin: clamp(32px, 4vw, 56px) auto 0; }
.land-banner:hover { opacity: .85; }
.land-banner img { width: 100%; height: auto; }

/* ==========================================================================
   10 お問い合わせ
   ========================================================================== */
.sec-contact { padding: clamp(80px, 10vw, 160px) var(--gutter); }
.sec-contact__inner {
	max-width: 1080px; margin: 0 auto;
	display: flex; flex-direction: column; align-items: center; gap: 36px; text-align: center;
}
.contact-cards {
	width: 100%; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
	gap: clamp(24px, 3vw, 40px); margin-bottom: clamp(16px, 2vw, 24px);
}
.contact-card { position: relative; display: block; aspect-ratio: 1/1; overflow: hidden; color: var(--ink); }
.contact-card:hover { opacity: .88; }
.contact-card--tour { background: linear-gradient(180deg, #3f78c8 0%, #5b8fd6 100%); }
.contact-card--catalog { background: #dcdcdc; }
.contact-card > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.contact-card__body {
	position: absolute; top: 9%; left: 0; right: 0; padding: 0 16px;
	display: flex; flex-direction: column; align-items: center; gap: clamp(12px, 1.6vw, 20px);
}
.contact-card__lead { font: 400 clamp(14px, 1.2vw, 16px)/1.8 var(--serif); letter-spacing: .12em; }
.contact-card__title { font: 500 clamp(22px, 2.6vw, 34px)/1.4 var(--serif); letter-spacing: .14em; }
.contact-card__more { font: 400 15px/1 var(--serif); letter-spacing: .12em; padding-bottom: 8px; border-bottom: 1px solid var(--ink); }
.contact-tel { display: flex; flex-direction: column; gap: 6px; align-items: center; }
.contact-tel__num { font: 400 26px/1.3 var(--serif); letter-spacing: .08em; }
.contact-tel__hours { font-size: 14px; letter-spacing: .08em; color: var(--grey); }
.contact-tel__mail { margin-top: 12px; font: 400 15px/1 var(--serif); letter-spacing: .12em; padding-bottom: 8px; border-bottom: 1px solid var(--ink); }
.contact-area { font-size: 14px; line-height: 1.9; letter-spacing: .08em; color: var(--grey); }
.contact-area__ttl { display: block; margin-bottom: 4px; }
.contact-area__row { display: block; }
.contact-area__row > span { display: inline-block; white-space: nowrap; }

/* ==========================================================================
   CTA（共通・フッター直上）
   ========================================================================== */
.cta-split {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
	gap: 1px; background: var(--bg);
}
.cta-split__card {
	position: relative; display: flex; align-items: center; justify-content: center;
	min-height: clamp(420px, 42vw, 620px); overflow: hidden; color: #fff; text-align: center;
}
.cta-split__card:hover { opacity: 1; }
.cta-split__card > img {
	position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none;
	transition: transform 1s ease;
}
.cta-split__card:hover > img { transform: scale(1.04); }
.cta-split__card::after {
	content: ""; position: absolute; inset: 0;
	background: rgba(36,32,28,.5); transition: background .45s ease;
}
.cta-split__card:hover::after { background: rgba(36,32,28,.32); }
.cta-split__body {
	position: relative; z-index: 1;
	display: flex; flex-direction: column; align-items: center;
	gap: clamp(20px, 2.4vw, 32px); padding: 48px 24px;
}
.cta-split__title { font: 400 clamp(22px, 2.2vw, 30px)/1.5 var(--serif); letter-spacing: .16em; }
.cta-split__desc { font: 400 clamp(16px, 1.25vw, 18px)/2.1 var(--sans); letter-spacing: .12em; }
.cta-split__action {
	display: flex; align-items: center; gap: 14px; margin-top: 8px;
	font: 400 16px/1 var(--serif); letter-spacing: .12em;
	padding-bottom: 12px; border-bottom: 1px solid rgba(255,255,255,.6);
}
.cta-split__arrow {
	display: flex; align-items: center; justify-content: center;
	width: 30px; height: 20px; border-radius: 999px; background: #fff; color: var(--ink); font-size: 14px;
	transition: transform .35s ease;
}
.cta-split__card:hover .cta-split__arrow { transform: translateX(4px); }
@media (max-width: 767px) {
	.cta-split__desc { font-size: 15px; letter-spacing: .04em; line-height: 2; }
}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer {
	padding: 72px var(--gutter) 96px;
	background: var(--bg-dark); color: #e8e1d6; font-size: 15px; line-height: 1.9;
}
.site-footer__inner { max-width: 1280px; margin: 0 auto; display: flex; flex-wrap: wrap; gap: 56px; }
.site-footer__info { flex: 1 1 240px; display: flex; flex-direction: column; gap: 12px; }
.site-footer__logo { align-self: flex-start; margin-bottom: 8px; }
.site-footer__logo img { height: 30px; width: auto; }
.site-footer__tel { font: 400 18px/1.5 var(--serif); color: #e8e1d6; letter-spacing: .06em; }
.site-footer__sns { display: flex; gap: 4px; flex-wrap: wrap; margin-left: -10px; }
.site-footer__sns a { color: #e8e1d6; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; }
.fnav {
	flex: 3 1 560px;
	display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
	column-gap: 40px; align-items: start;
}
.fnav__item { border-bottom: 1px solid rgba(255,255,255,.2); }
.fnav__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.fnav__link { flex: 1; color: #fff; font-size: 16px; letter-spacing: .1em; padding: 14px 0; }
.fnav__sub { flex-direction: column; gap: 2px; padding: 0 0 14px 12px; }
.fnav__sub a { color: #cfc6ba; font-size: 14px; line-height: 1.7; padding: 4px 0; }
.fnav__sub a:hover { color: #fff; opacity: 1; }
.site-footer__copy { margin: 56px 0 0; text-align: center; color: #b8ad9e; font-size: 14px; }

/* スマホ下部固定バー */
.sp-bar { display: none; }
@media (max-width: 767px) {
	.sp-bar {
		position: sticky; bottom: 0; z-index: 20;
		display: grid; grid-template-columns: 1fr 1fr 1.25fr;
		font-size: 12px; line-height: 1.3; letter-spacing: 0; white-space: nowrap; text-align: center;
		box-shadow: 0 -2px 10px rgba(0,0,0,.1);
	}
}
.sp-bar__item {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
	padding: 10px 2px 9px; color: var(--ink); background: var(--bg);
}
.sp-bar__item:first-child { border-right: 1px solid #ddd6ca; }
.sp-bar__item--dark { color: #fff; background: var(--ink); }

/* ==========================================================================
   下層ページ（標準ページ）
   ========================================================================== */
.page-body { max-width: 880px; margin: 0 auto; padding: clamp(64px, 9vw, 120px) 20px clamp(80px, 10vw, 140px); }
.page-head { margin-bottom: clamp(40px, 5vw, 64px); }
.page-head__title { font: 400 clamp(26px, 3vw, 36px)/1.5 var(--serif); letter-spacing: .14em; }
.entry-content { font-size: 16px; line-height: 2.1; letter-spacing: .06em; color: var(--text-sub); }
.entry-content > * + * { margin-top: 1.6em; }
.entry-content h2 { font: 400 clamp(22px, 2.4vw, 28px)/1.6 var(--serif); letter-spacing: .12em; color: var(--ink); margin-top: 2.4em; }
.entry-content h3 { font: 400 clamp(19px, 1.8vw, 22px)/1.6 var(--serif); letter-spacing: .1em; color: var(--ink); margin-top: 2em; }
.entry-content a { text-decoration: underline; text-underline-offset: 3px; }
.entry-content img { height: auto; }
.post-list { list-style: none; margin: 0; padding: 0; }
.post-list a { display: flex; gap: 24px; padding: 18px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.post-list time { color: var(--grey); flex-shrink: 0; }

/* ==========================================================================
   Astra / TypeSquare との競合解消
   Elementor Kit は PHP 側で .elementor 内だけに付与している。
   ここでは Astra の見出しカラー・サイズと TypeSquare のフォント指定を打ち消し、
   上で定義した ikhome 側のクラス指定がそのまま見えるようにする。
   ========================================================================== */
body.ikh-theme {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font-family: var(--sans);
	font-size: 16px;
	font-weight: 400;
	line-height: 1.8;
	-webkit-text-size-adjust: 100%;
}
/* サイズは各クラス指定を残し、Astra の見出しカラーだけ打ち消す（詳細度はクラス指定より低く保つ） */
h1, h2, h3, h4, h5, h6 {
	margin: 0;
	color: inherit;
}

/* TypeSquare の h1:lang(ja) より詳細度を上げる。Elementor ページ本体は対象外 */
body.ikh-theme:not(.elementor-page) h1:lang(ja),
body.ikh-theme:not(.elementor-page) h2:lang(ja),
body.ikh-theme:not(.elementor-page) h3:lang(ja),
body.ikh-theme:not(.elementor-page) .entry-title:lang(ja),
body.ikh-theme.home h1:lang(ja),
body.ikh-theme.home h2:lang(ja),
body.ikh-theme.home h3:lang(ja) {
	font-family: var(--serif);
}

/* Canvas ページに埋め込まれた旧ヘッダーを隠し、テーマヘッダーに統一する */
body.elementor-template-canvas:not(.elementor-editor-active) .elementor > header.elementor-top-section {
	display: none !important;
}

/* 下層 Elementor：旧ヘッダー回避の先頭マージン（例: 200px）を打ち消し
   固定ヘッダー分の余白は .site-main の padding-top で確保済み */
body:not(.home) .elementor > .elementor-top-section:first-child {
	margin-top: 0 !important;
}

/* ==========================================================================
   Astra の a:hover / button:hover 打ち消し
   ホバーで暗い背景・暗い文字色になり、白文字や細い線が見えなくなるのを防ぐ
   ========================================================================== */
.hamburger:hover,
.hamburger:focus,
.drawer__close:hover,
.drawer__close:focus,
.acc-toggle:hover,
.acc-toggle:focus {
	background: none;
	background-color: transparent;
	border: 0;
	color: inherit;
	box-shadow: none;
}
.hamburger:hover span,
.hamburger:focus span,
.drawer__close:hover span,
.drawer__close:focus span,
.acc-toggle:hover span,
.acc-toggle:focus span { background: var(--ink); }
.hamburger--white:hover span,
.hamburger--white:focus span { background: #fff; }
.acc-toggle--light:hover span,
.acc-toggle--light:focus span { background: #fff; }

.site-header a:hover,
.site-header a:focus,
.drawer a:hover,
.drawer a:focus,
.fv a:hover,
.fv a:focus,
.site-footer a:hover,
.site-footer a:focus,
.sp-bar a:hover,
.sp-bar a:focus {
	color: inherit;
}

.gnav__link:hover,
.gnav__link:focus { color: var(--ink); }
.gnav__sub a:hover,
.fv-nav__sub a:hover { color: var(--ink); background: var(--bg-sub); opacity: 1; }
.fv-nav__item > a:hover,
.fv-nav__item > a:focus { color: #fff; }
.btn--outline:hover,
.btn--outline:focus { color: var(--ink); }
.btn--solid:hover,
.btn--solid:focus,
.site-header .btn--solid:hover,
.site-header .btn--solid:focus { color: #fff; }
.btn--outline-white:hover,
.btn--outline-white:focus { color: #fff; }
.btn--white:hover,
.btn--white:focus,
.fv .btn--white:hover,
.fv .btn--white:focus { color: var(--ink); }
.cta-split__card:hover,
.cta-split__card:focus { color: #fff; }
.icon-tel:hover,
.icon-tel:focus { color: var(--ink); }
.icon-tel--white:hover,
.icon-tel--white:focus { color: #fff; }
.pill:hover { color: var(--ink); }
.pill--solid:hover,
.pill--solid:focus,
.drawer .pill--solid:hover,
.drawer .pill--solid:focus { color: #fff; }
.pill-white:hover { color: #fff; }

.fnav__link:hover,
.fnav__link:focus { color: #fff; }
.fnav__sub a:hover,
.fnav__sub a:focus { color: #fff; opacity: 1; }
.site-footer__sns a:hover,
.site-footer__sns a:focus,
.site-footer__tel:hover,
.site-footer__tel:focus { color: #e8e1d6; }
.sp-bar__item:hover { color: var(--ink); background: var(--bg); }
.sp-bar__item--dark:hover { color: #fff; background: var(--ink); }