/* ==========================================================================
   GREEN Sub theme
   html/assets/css/style.css をベースに、末尾へ WordPress 用の追加分を記述しています。
   セクションごとに template-parts/front/*.php と対応しています。
   ========================================================================== */

:root{
	--color-text: #1f2622;
	--color-text-soft: #5b625e;
	--color-bg: #ffffff;
	--color-bg-beige: #f8f7f3;
	--color-bg-gray: #f1f1ee;
	--color-border: #e3e3dd;
	--color-primary: #1e3a30;        /* ヘッダーボタン・アクセント */
	--color-footer: #1f2b27;
	--color-tag-bg: #dfecc9;
	--color-tag-text: #4b6b2e;

	--max-width: 1200px;
	--header-height: 92px;
	--radius-pill: 999px;
	--ease: cubic-bezier(.22, 1, .36, 1);

	--font-base: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
	--font-num: "Cormorant Garamond", "Times New Roman", serif;
}

/* ---------- reset / base ---------- */
*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{ margin: 0; font-family: var(--font-base); font-size: 16px; line-height: 1.9; color: var(--color-text); background: var(--color-bg); letter-spacing: .06em; -webkit-font-smoothing: antialiased; }
img{ display: block; max-width: 100%; height: auto; }
a{ color: inherit; text-decoration: none; transition: color .3s var(--ease), background-color .3s var(--ease), border-color .3s var(--ease), opacity .3s var(--ease); }
h1, h2, h3, p, ul{ margin: 0; }
ul{ padding: 0; list-style: none; }
button{ font: inherit; color: inherit; cursor: pointer; }
a:focus-visible, button:focus-visible{ outline: 2px solid var(--color-primary); outline-offset: 3px; }

/* ---------- arrow (→) ---------- */
.arrow{ position: relative; display: inline-block; width: 14px; height: 1.5px; margin-left: 14px; background: currentColor; vertical-align: middle; transition: transform .3s var(--ease); }
.arrow::after{ content: ""; position: absolute; right: 0; top: 50%; width: 7px; height: 7px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: translateY(-50%) rotate(45deg); }
a:hover .arrow{ transform: translateX(4px); }

/* ---------- buttons ---------- */
.btn{ display: inline-flex; align-items: center; justify-content: center; min-width: 220px; padding: 14px 32px; border-radius: var(--radius-pill); font-size: 15px; font-weight: 500; letter-spacing: .1em; line-height: 1.5; }
.btn--white{ background: #fff; color: var(--color-text); box-shadow: 0 6px 20px rgba(0,0,0,.08); }
.btn--white:hover{ background: var(--color-primary); color: #fff; }
.btn--outline{ border: 1.5px solid var(--color-primary); color: var(--color-primary); background: transparent; }
.btn--outline:hover{ background: var(--color-primary); color: #fff; }
.btn--lg{ min-width: 280px; padding: 22px 40px; }

/* ==========================================================================
   header
   ========================================================================== */
.site-header{ position: sticky; top: 0; z-index: 100; background: #fff; transition: box-shadow .3s var(--ease); }
.site-header.is-scrolled{ box-shadow: 0 4px 20px rgba(0,0,0,.06); }
.site-header__inner{ display: flex; align-items: center; justify-content: space-between; gap: 32px; min-height: var(--header-height); padding: 0 4.5%; }

.site-logo{ display: flex; align-items: center; gap: 14px; flex-shrink: 0; }
.site-logo__mark{ position: relative; width: 34px; height: 34px; border: 2px solid var(--color-text); }
.site-logo__mark::before{ content: ""; position: absolute; left: 6px; top: 6px; width: 10px; height: 20px; border-right: 2px solid var(--color-text); border-bottom: 2px solid var(--color-text); }
.site-logo__text{ font-size: 18px; font-weight: 500; line-height: 1.3; letter-spacing: .06em; }

.site-header__nav-wrap{ display: flex; align-items: center; flex: 1; justify-content: space-between; gap: 32px; }
.global-nav{ flex: 1; display: flex; justify-content: center; }
.global-nav__list{ display: flex; gap: clamp(20px, 3vw, 48px); }
.global-nav__list a{ position: relative; display: block; padding: 6px 0; font-size: 14px; font-weight: 700; letter-spacing: .08em; }
.global-nav__list a::after{ content: ""; position: absolute; left: 0; right: 100%; bottom: 0; height: 1.5px; background: var(--color-primary); transition: right .3s var(--ease); }
.global-nav__list a:hover::after,
.global-nav__list .is-current a::after{ right: 0; }

.site-header__cta{ display: inline-flex; align-items: center; padding: 14px 28px; border-radius: 3px; background: var(--color-primary); color: #fff; font-size: 15px; font-weight: 500; white-space: nowrap; }
.site-header__cta:hover{ background: #2d5446; }

.site-header__toggle{ display: none; flex-direction: column; justify-content: center; gap: 6px; width: 44px; height: 44px; padding: 0 8px; margin-left: auto; border: 0; background: transparent; }
.site-header__toggle span{ display: block; height: 2px; background: var(--color-text); transition: transform .3s var(--ease), opacity .3s var(--ease); }
.site-header__toggle[aria-expanded="true"] span:nth-child(1){ transform: translateY(8px) rotate(45deg); }
.site-header__toggle[aria-expanded="true"] span:nth-child(2){ opacity: 0; }
.site-header__toggle[aria-expanded="true"] span:nth-child(3){ transform: translateY(-8px) rotate(-45deg); }

@media (max-width: 960px){
	:root{ --header-height: 68px; }
	.site-logo__mark{ width: 28px; height: 28px; }
	.site-logo__mark::before{ left: 4px; top: 4px; width: 8px; height: 16px; }
	.site-logo__text{ font-size: 15px; }
	.site-header__toggle{ display: flex; }
	.site-header__nav-wrap{ position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; align-items: stretch; gap: 24px; padding: 24px 6% 32px; background: #fff; box-shadow: 0 12px 24px rgba(0,0,0,.08); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity .3s var(--ease), transform .3s var(--ease), visibility .3s; }
	.site-header__nav-wrap.is-open{ opacity: 1; visibility: visible; transform: none; }
	.global-nav{ justify-content: flex-start; }
	.global-nav__list{ flex-direction: column; gap: 0; width: 100%; }
	.global-nav__list li{ border-bottom: 1px solid var(--color-border); }
	.global-nav__list a{ padding: 14px 0; }
	.global-nav__list a::after{ display: none; }
	.site-header__cta{ justify-content: center; }
}

/* ==========================================================================
   hero
   ========================================================================== */
.hero{ position: relative; height: clamp(480px, 52vw, 760px); overflow: hidden; background: var(--color-primary); color: #fff; }
.hero__slides{ position: relative; height: 100%; }
.hero__slide{ position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity 1.2s var(--ease), visibility 1.2s; }
.hero__slide.is-active{ opacity: 1; visibility: visible; }
.hero__image{ width: 100%; height: 100%; object-fit: cover; transform: scale(1.06); transition: transform 7s linear; }
.hero__slide.is-active .hero__image{ transform: scale(1); }
.hero__slide::before{ content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(22,40,32,.78) 0%, rgba(22,40,32,.45) 38%, rgba(22,40,32,0) 62%); }

.hero__body{ position: absolute; z-index: 2; top: 50%; left: 9%; transform: translateY(-50%); max-width: 600px; }
.hero__label{ margin-bottom: 24px; font-size: 14px; font-weight: 500; letter-spacing: .14em; }
.hero__label span{ margin: 0 .3em; opacity: .6; }
.hero__title{ margin-bottom: 28px; font-size: clamp(28px, 3.4vw, 52px); font-weight: 500; line-height: 1.55; letter-spacing: .12em; }
.hero__text{ margin-bottom: 40px; font-size: clamp(13px, 1vw, 15px); line-height: 2; letter-spacing: .12em; }
.hero__slide .hero__body > *{ opacity: 0; transform: translateY(16px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.hero__slide.is-active .hero__body > *{ opacity: 1; transform: none; }
.hero__slide.is-active .hero__body > *:nth-child(2){ transition-delay: .15s; }
.hero__slide.is-active .hero__body > *:nth-child(3){ transition-delay: .3s; }
.hero__slide.is-active .hero__body > *:nth-child(4){ transition-delay: .45s; }

/* 見出し右寄せ（カスタマイザーで選択） */
.hero__slide--right::before{ background: linear-gradient(270deg, rgba(22,40,32,.78) 0%, rgba(22,40,32,.45) 38%, rgba(22,40,32,0) 62%); }
.hero__slide--right .hero__body{ left: auto; right: 9%; text-align: right; }

.hero__nav{ position: absolute; z-index: 3; top: 50%; width: 56px; height: 56px; margin-top: -28px; border: 0; border-radius: 50%; background: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.12); transition: transform .3s var(--ease); }
.hero__nav:hover{ transform: scale(1.08); }
.hero__nav::before{ content: ""; position: absolute; top: 50%; left: 50%; width: 10px; height: 10px; border-top: 2px solid var(--color-text); border-right: 2px solid var(--color-text); }
.hero__nav--prev{ left: 2.5%; }
.hero__nav--prev::before{ transform: translate(-30%, -50%) rotate(-135deg); }
.hero__nav--next{ right: 2.5%; }
.hero__nav--next::before{ transform: translate(-70%, -50%) rotate(45deg); }

.hero__dots{ position: absolute; z-index: 3; left: 50%; bottom: 32px; display: flex; gap: 22px; transform: translateX(-50%); }
.hero__dot{ width: 14px; height: 14px; padding: 0; border: 2px solid #fff; border-radius: 50%; background: transparent; transition: background-color .3s var(--ease); }
.hero__dot[aria-current="true"]{ background: #fff; }

@media (max-width: 767px){
	.hero{ height: 560px; }
	.hero__slide::before{ background: linear-gradient(180deg, rgba(22,40,32,.25) 0%, rgba(22,40,32,.75) 100%); }
	.hero__body,
	.hero__slide--right .hero__body{ top: auto; bottom: 72px; left: 6%; right: 6%; transform: none; }
	.hero__slide--right::before{ background: linear-gradient(180deg, rgba(22,40,32,.25) 0%, rgba(22,40,32,.75) 100%); }
	.hero__label{ margin-bottom: 12px; }
	.hero__title{ margin-bottom: 16px; }
	.hero__text{ margin-bottom: 24px; }
	.hero__nav{ display: none; }
	.hero__dots{ bottom: 24px; }
}

/* ==========================================================================
   news
   ========================================================================== */
.news{ padding: 64px 4.5% 72px; background: var(--color-bg-beige); }
.news__inner{ display: grid; grid-template-columns: 260px 1fr; max-width: var(--max-width); margin: 0 auto; }
.news__head{ align-self: start; margin-top: 40px; padding-left: 22px; border-left: 4px solid var(--color-primary); }
.news__title{ font-size: 24px; font-weight: 700; line-height: 1.4; letter-spacing: .12em; }
.news__sub{ margin-top: 10px; font-size: 13px; font-weight: 500; letter-spacing: .1em; color: var(--color-text-soft); }

.news__body{ padding: 16px 0 16px 44px; border-left: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); }
.news__item{ border-bottom: 1px solid var(--color-border); }
.news__item a{ display: grid; grid-template-columns: 120px 100px 1fr; align-items: center; gap: 16px; padding: 22px 8px 22px 0; font-size: 14px; }
.news__item a:hover .news__text{ color: var(--color-primary); text-decoration: underline; text-underline-offset: 4px; }
.news__date{ font-weight: 500; letter-spacing: .04em; }
.news__cat{ justify-self: start; padding: 2px 12px; background: var(--color-tag-bg); color: var(--color-tag-text); font-size: 12px; letter-spacing: .12em; }
.news__more{ display: flex; align-items: center; justify-content: flex-end; margin-top: 12px; font-size: 13px; }
.news__more .arrow{ width: 10px; margin-left: 10px; }
.news__more .arrow::after{ width: 6px; height: 6px; }
.news__more:hover{ color: var(--color-primary); }

@media (max-width: 767px){
	.news{ padding: 48px 6%; }
	.news__inner{ grid-template-columns: 1fr; gap: 24px; }
	.news__head{ margin-top: 0; }
	.news__body{ padding: 0; border-left: 0; border-bottom: 0; }
	.news__item a{ grid-template-columns: auto 1fr; gap: 8px 16px; padding: 18px 0; }
	.news__text{ grid-column: 1 / -1; }
}

/* ==========================================================================
   section head (共通見出し)
   ========================================================================== */
.section-head{ padding: 0 6%; margin-bottom: 88px; text-align: center; }
.section-head__en{ margin-bottom: 8px; font-size: 14px; font-weight: 500; letter-spacing: .14em; }
.section-head__title{ font-size: clamp(28px, 2.6vw, 38px); font-weight: 500; line-height: 1.4; letter-spacing: .14em; }
.section-head__title::after{ content: ""; display: block; width: 40px; height: 1.5px; margin: 30px auto 28px; background: var(--color-text); }
.section-head__lead{ font-size: 15px; line-height: 2.1; letter-spacing: .12em; }

@media (max-width: 767px){
	.section-head{ margin-bottom: 48px; }
	.section-head__title::after{ margin: 20px auto; }
	.section-head__lead{ font-size: 14px; }
}

/* ==========================================================================
   service
   ========================================================================== */
.service{ padding-top: 96px; background: var(--color-bg-beige); }
.service__list{ display: flex; flex-direction: column; gap: 32px; padding-bottom: 32px; }

.service-item{ display: grid; grid-template-columns: 1fr 1fr; min-height: clamp(380px, 32vw, 480px); background: var(--color-bg-gray); }
.service-item__image{ overflow: hidden; }
.service-item__image img{ width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.service-item:hover .service-item__image img{ transform: scale(1.04); }

.service-item__body{ position: relative; align-self: center; padding: 56px 8% 56px 16%; }
.service-item__num{ position: absolute; top: 24px; left: 3%; font-family: var(--font-num); font-size: clamp(64px, 6vw, 100px); font-weight: 400; line-height: 1; letter-spacing: 0; color: rgba(31,38,34,.07); pointer-events: none; }
.service-item__en{ position: relative; margin-bottom: 4px; font-size: 13px; font-weight: 500; letter-spacing: .1em; }
.service-item__title{ position: relative; margin-bottom: 24px; font-size: clamp(22px, 1.9vw, 28px); font-weight: 700; letter-spacing: .14em; }
.service-item__text{ position: relative; margin-bottom: 36px; font-size: 14px; line-height: 2.1; letter-spacing: .12em; color: var(--color-text-soft); }

/* 画像右・テキスト左 */
.service-item--reverse{ background: var(--color-bg-beige); }
.service-item--reverse .service-item__image{ order: 2; }
.service-item--reverse .service-item__body{ padding-left: 17%; padding-right: 6%; }
.service-item--reverse .service-item__num{ left: 6%; }

@media (max-width: 767px){
	.service{ padding-top: 64px; }
	.service__list{ gap: 0; padding-bottom: 0; }
	.service-item{ grid-template-columns: 1fr; min-height: 0; }
	.service-item__image{ aspect-ratio: 16 / 10; }
	.service-item--reverse .service-item__image{ order: 0; }
	.service-item__body,
	.service-item--reverse .service-item__body{ padding: 48px 6% 56px; }
	.service-item__num,
	.service-item--reverse .service-item__num{ top: 16px; left: auto; right: 6%; }
}

/* ==========================================================================
   cta
   ========================================================================== */
.cta{ position: relative; overflow: hidden; }
.cta__bg{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cta::before{ content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(255,255,255,.7) 0%, rgba(255,255,255,.35) 45%, rgba(255,255,255,0) 70%); }
.cta__inner{ position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 40px; max-width: var(--max-width); min-height: 360px; margin: 0 auto; padding: 64px 4.5%; }
.cta__title{ margin-bottom: 24px; font-size: clamp(26px, 2.6vw, 38px); font-weight: 500; line-height: 1.6; letter-spacing: .14em; }
.cta__text{ font-size: 14px; line-height: 2.1; letter-spacing: .12em; }

/* 背景色の場合（カスタマイザーで選択） */
.cta--color::before{ display: none; }
.cta--dark{ color: #fff; }

@media (max-width: 767px){
	.cta::before{ background: rgba(255,255,255,.6); }
	.cta__inner{ flex-direction: column; align-items: flex-start; min-height: 0; padding: 56px 6%; }
	.cta .btn--lg{ align-self: stretch; min-width: 0; padding: 18px 32px; }
}

/* ==========================================================================
   footer
   ========================================================================== */
.site-footer{ background: var(--color-footer); color: #fff; }
.site-footer__inner{ max-width: var(--max-width); margin: 0 auto; padding: 56px 4.5% 40px; }

.sns-list{ display: flex; justify-content: center; gap: 22px; padding-bottom: 40px; }
.sns-list a{ display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: #fff; transition: transform .3s var(--ease); }
.sns-list a:hover{ transform: translateY(-3px); }
.sns-list svg{ display: block; }

.footer-nav{ border-top: 1px solid rgba(255,255,255,.15); border-bottom: 1px solid rgba(255,255,255,.15); }
.footer-nav__list{ display: flex; flex-wrap: wrap; justify-content: center; gap: 8px clamp(24px, 5vw, 72px); padding: 30px 0; }
.footer-nav__list a{ font-size: 14px; letter-spacing: .1em; }
.footer-nav__list a:hover{ opacity: .6; }

.site-footer__bottom{ display: flex; justify-content: space-between; align-items: center; gap: 16px; padding-top: 28px; }
.site-footer__copy small{ font-size: 13px; letter-spacing: .06em; }
.site-footer__credit{ font-size: 11px; letter-spacing: .04em; opacity: .85; }

@media (max-width: 767px){
	.site-footer__inner{ padding: 48px 6% 32px; }
	.footer-nav__list{ display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 28px 8%; }
	.site-footer__bottom{ flex-direction: column-reverse; gap: 6px; }
}

/* ==========================================================================
   WordPress 追加分（静的コーディングに無い要素）
   ========================================================================== */

/* 管理バー表示時のヘッダー位置 */
.admin-bar .site-header{ top: 32px; }
@media (max-width: 782px){
	.admin-bar .site-header{ top: 46px; }
}
@media (max-width: 600px){
	.admin-bar .site-header{ top: 0; }
}

/* カスタムロゴ（外観 > カスタマイズ > サイト基本情報 で設定時） */
.site-logo .custom-logo-link{ display: block; }
.site-logo .custom-logo{ width: auto; max-height: 48px; }
@media (max-width: 960px){
	.site-logo .custom-logo{ max-height: 36px; }
}

.news__empty{ padding: 22px 0; font-size: 14px; color: var(--color-text-soft); }

/* ---------- 新着情報一覧・記事・404（.sub-page 内） ---------- */
.sub-page .news__list{ border-top: 1px solid var(--color-border); }
.sub-page .news__item a{ padding-left: 8px; }
.sub-page__inner--narrow{ max-width: 860px; }
.sub-page .entry{ padding: 48px clamp(24px, 5vw, 56px); border: 1px solid var(--color-border); background: #fff; }
.page-body__inner--center{ display: flex; flex-direction: column; align-items: center; gap: 40px; text-align: center; }

/* ---------- お知らせ詳細 ---------- */
.entry__head{ padding-bottom: 28px; margin-bottom: 40px; border-bottom: 1px solid var(--color-border); }
.entry__meta{ display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-bottom: 16px; font-size: 14px; }
.entry__title{ font-size: clamp(20px, 2vw, 26px); font-weight: 700; line-height: 1.6; letter-spacing: .1em; }
.entry__thumb{ margin-bottom: 40px; }
.entry__thumb img{ width: 100%; }

/* ---------- 本文（ブロックエディタ出力） ---------- */
.entry__content{ font-size: 15px; line-height: 2.1; }
.entry__content > * + *{ margin-top: 1.6em; }
.entry__content h2{ margin-top: 2.4em; padding-left: 18px; border-left: 4px solid var(--color-primary); font-size: 22px; line-height: 1.5; }
.entry__content h3{ margin-top: 2em; padding-bottom: 8px; border-bottom: 1px solid var(--color-border); font-size: 18px; line-height: 1.5; }
.entry__content h4{ margin-top: 1.8em; font-size: 16px; }
.entry__content ul{ padding-left: 1.4em; list-style: disc; }
.entry__content ol{ padding-left: 1.6em; }
.entry__content a{ color: var(--color-primary); text-decoration: underline; text-underline-offset: 3px; }
.entry__content a:hover{ opacity: .7; }
.entry__content table{ width: 100%; border-collapse: collapse; font-size: 14px; }
.entry__content th,
.entry__content td{ padding: 14px 16px; border: 1px solid var(--color-border); text-align: left; }
.entry__content th{ background: var(--color-bg-beige); font-weight: 500; }
.entry__content figure{ margin-left: 0; margin-right: 0; }
.entry__content figcaption{ margin-top: 8px; font-size: 13px; color: var(--color-text-soft); }
.entry__content .wp-block-button__link{ display: inline-flex; align-items: center; padding: 14px 32px; border-radius: var(--radius-pill); background: var(--color-primary); color: #fff; text-decoration: none; }
.entry__content .wp-block-button__link:hover{ opacity: 1; background: #2d5446; }

/* ---------- 前後の記事 ---------- */
.entry-nav{ display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px; margin-top: 72px; padding-top: 40px; border-top: 1px solid var(--color-border); font-size: 14px; }
.entry-nav__next{ text-align: right; }
.entry-nav a:not(.btn-square):hover{ color: var(--color-primary); }
@media (max-width: 767px){
	.entry-nav{ grid-template-columns: 1fr 1fr; }
	.entry-nav .btn-square{ grid-column: 1 / -1; grid-row: 2; }
}

/* ---------- ページ送り ---------- */
.pagination{ margin-top: 56px; }
.pagination .nav-links{ display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.pagination .page-numbers{ display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 12px; border: 1px solid var(--color-border); font-size: 14px; }
.pagination .page-numbers.current{ border-color: var(--color-primary); background: var(--color-primary); color: #fff; }
.pagination a.page-numbers:hover{ border-color: var(--color-primary); color: var(--color-primary); }
.pagination .page-numbers.dots{ border: 0; }
/* ---------- 下層ページ 濃色の見出しエリア ---------- */
:root{ --color-accent-soft: #8fae76; }

.page-hero{ background: var(--color-footer); color: #fff; }
.page-hero__inner{ max-width: var(--max-width); margin: 0 auto; padding: 64px 4.5% 56px; }
.page-hero__en{ display: flex; align-items: center; gap: 12px; margin-bottom: 18px; font-size: 12px; font-weight: 500; letter-spacing: .14em; color: var(--color-accent-soft); }
.page-hero__en::before{ content: ""; width: 32px; height: 1px; background: currentColor; }
/* パンくず（見出しエリアの下） */
.breadcrumb{ border-bottom: 1px solid var(--color-border); background: var(--color-bg-beige); }
.breadcrumb__list{ display: flex; flex-wrap: wrap; gap: 0 .4em; max-width: var(--max-width); margin: 0 auto; padding: 14px 4.5%; list-style: none; font-size: 11px; letter-spacing: .08em; color: var(--color-text-soft); }
.breadcrumb__list li + li::before{ content: "／"; margin-right: .4em; opacity: .7; }
.breadcrumb__list a{ color: var(--color-text); }
.breadcrumb__list a:hover{ opacity: .7; }
@media (max-width: 767px){
	.breadcrumb__list{ padding: 12px 6%; }
}
.page-hero__title{ margin-bottom: 28px; font-size: clamp(28px, 2.6vw, 36px); font-weight: 500; line-height: 1.4; letter-spacing: .14em; }
.page-hero__lead{ max-width: 560px; font-size: 13px; line-height: 2.1; letter-spacing: .08em; }
@media (max-width: 767px){
	.page-hero__inner{ padding: 48px 6% 40px; }
	.page-hero__title{ margin-bottom: 20px; }
}

/* 画像・地図の仮枠（カスタマイザーのプレビュー中のみ表示） */
.placeholder-box{ display: grid; place-items: center; background-color: #e9e6da; background-image: linear-gradient(rgba(0,0,0,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(0,0,0,.05) 1px, transparent 1px); background-size: 26px 26px; border: 1px solid var(--color-border); }
.placeholder-box span{ font-size: 11px; letter-spacing: .2em; color: var(--color-text-soft); }

/* 明るい背景色の見出しエリア（page-hero--light） */
.page-hero--light{ color: var(--color-text); }
.page-hero--light .page-hero__en{ color: #5f7f48; }
.page-hero--light .page-hero__title{ color: var(--color-primary); }

/* 写真背景の見出しエリア（page-hero--image） */
.page-hero--image{ position: relative; overflow: hidden; background: var(--color-bg-beige); color: var(--color-text); }
.page-hero__bg{ position: absolute; inset: 0; }
.page-hero__bg img{ width: 100%; height: 100%; object-fit: cover; }
.page-hero--image::before{ content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(248,247,243,.92) 0%, rgba(248,247,243,.7) 40%, rgba(248,247,243,0) 70%); }
.page-hero--image .page-hero__inner{ position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: center; min-height: 260px; padding-top: 48px; padding-bottom: 48px; }
.page-hero--image .page-hero__title{ color: var(--color-primary); }
@media (max-width: 767px){
	.page-hero--image::before{ background: rgba(248,247,243,.78); }
	.page-hero--image .page-hero__inner{ min-height: 220px; }
}

/* 小見出し */
.sub-head{ margin-bottom: 32px; font-size: clamp(18px, 1.6vw, 22px); font-weight: 700; letter-spacing: .12em; }

/* 小見出し（線＋英字） */
.eyebrow{ display: flex; align-items: center; gap: 12px; margin-bottom: 18px; font-size: 11px; font-weight: 500; letter-spacing: .14em; color: var(--color-accent-soft); }
.eyebrow::before{ content: ""; width: 24px; height: 1px; background: currentColor; }

/* ==========================================================================
   アクセスページ（page-access.php）
   ========================================================================== */
.access{ padding: 64px 4.5% 96px; background: var(--color-bg-beige); }
.access__inner{ max-width: 1000px; margin: 0 auto; }

.access-info{ display: grid; grid-template-columns: 1fr 1.1fr; align-items: center; gap: clamp(32px, 5vw, 56px); }
.access-info--no-image{ grid-template-columns: 1fr; }
.access-info__image{ aspect-ratio: 4 / 3; overflow: hidden; }
.access-info__image img{ width: 100%; height: 100%; object-fit: cover; }

.info-table{ margin: 0; border-top: 1px solid var(--color-border); }
.info-table__row{ display: grid; grid-template-columns: 110px 1fr; gap: 16px; padding: 18px 4px; border-bottom: 1px solid var(--color-border); }
.info-table dt{ font-size: 12px; letter-spacing: .08em; color: var(--color-accent-soft); }
.info-table dd{ margin: 0; font-size: 13px; line-height: 1.9; letter-spacing: .06em; }

.access-map{ margin-top: 80px; }
.access-map__frame{ aspect-ratio: 2 / 1; }
.access-map__frame iframe{ display: block; width: 100%; height: 100%; border: 1px solid var(--color-border); }

.access-message{ display: grid; grid-template-columns: 1fr 38%; align-items: center; gap: clamp(32px, 8vw, 80px); margin-top: 80px; padding-top: 80px; border-top: 1px solid var(--color-border); }
.access-message--no-image{ grid-template-columns: 1fr; }
.access-message__title{ margin-bottom: 28px; font-size: clamp(20px, 1.8vw, 24px); font-weight: 700; letter-spacing: .12em; }
.access-message__text{ font-size: 13px; line-height: 2.1; letter-spacing: .06em; color: var(--color-text-soft); }
.access-message__text p + p{ margin-top: 1em; }
.access-message__image{ aspect-ratio: 8 / 7; overflow: hidden; }
.access-message__image img{ width: 100%; height: 100%; object-fit: cover; }

.access__content{ margin-top: 80px; }

@media (max-width: 767px){
	.access{ padding: 48px 6% 72px; }
	.access-info,
	.access-message{ grid-template-columns: 1fr; }
	.info-table__row{ grid-template-columns: 1fr; gap: 4px; padding: 16px 0; }
	.access-map{ margin-top: 56px; }
	.access-map__frame{ aspect-ratio: 4 / 3; }
	.access-message{ margin-top: 56px; padding-top: 56px; }
}

/* ==========================================================================
   料金ページ・導入実績ページ 共通（page-price.php / page-works.php）
   ========================================================================== */
.sub-page{ padding: 64px 4.5% 96px; background: var(--color-bg-beige); }
.sub-page__inner{ max-width: 1000px; margin: 0 auto; }
.sub-section + .sub-section{ margin-top: 72px; padding-top: 72px; border-top: 1px solid var(--color-border); }

/* 写真＋テキストの横並び */
.media-row{ display: grid; grid-template-columns: 1fr 1.1fr; align-items: center; gap: clamp(32px, 5vw, 56px); }
.media-row--no-image{ grid-template-columns: 1fr; }
.media-row__image{ aspect-ratio: 4 / 3; overflow: hidden; }
.media-row__image img{ width: 100%; height: 100%; object-fit: cover; }
.media-row__text{ font-size: 13px; line-height: 2.1; letter-spacing: .06em; color: var(--color-text-soft); }

/* 左線つき見出し */
.label-head{ display: inline-block; margin-bottom: 24px; padding: 8px 18px; border-left: 3px solid var(--color-accent-soft); background: #e7ecdc; font-size: 15px; font-weight: 700; letter-spacing: .1em; }

/* 概要の項目一覧 */
.point-list{ margin: 0; border-top: 1px solid var(--color-border); }
.point-list__row{ display: grid; grid-template-columns: 90px 1fr; gap: 16px; padding: 18px 4px; border-bottom: 1px solid var(--color-border); font-size: 13px; letter-spacing: .06em; }
.point-list dt{ font-weight: 700; }
.point-list dd{ margin: 0; }

/* 料金プラン */
.plan-table{ border: 1px solid var(--color-border); }
.plan-table__row{ display: grid; grid-template-columns: 220px 1fr; }
.plan-table__row + .plan-table__row{ border-top: 1px solid var(--color-border); }
.plan-table__head{ padding: 24px; border-right: 1px solid var(--color-border); background: #fbfaf7; }
.plan-table__row:nth-child(odd) .plan-table__head{ background: #edf1e5; }
.plan-table__name{ margin-bottom: 6px; font-size: 13px; letter-spacing: .08em; }
.plan-table__price{ font-size: 18px; font-weight: 500; letter-spacing: .04em; }
.plan-table__price small{ margin-left: 4px; font-size: 11px; font-weight: 400; }
.plan-table__body{ padding: 24px; background: #fbfaf7; font-size: 13px; line-height: 2; letter-spacing: .04em; color: var(--color-text-soft); }

/* 機能詳細の表 */
.spec-table{ overflow-x: auto; -webkit-overflow-scrolling: touch; }
.spec-table table{ width: 100%; min-width: 720px; border-collapse: collapse; border: 1px solid var(--color-border); font-size: 12px; letter-spacing: .04em; }
.spec-table th,
.spec-table td{ padding: 14px 16px; text-align: left; font-weight: 400; }
.spec-table thead th{ background: var(--color-footer); color: #fff; font-weight: 500; }
.spec-table tbody tr{ border-top: 1px solid var(--color-border); background: #fbfaf7; }
.spec-table tbody tr:nth-child(even){ background: #edf1e5; }
.spec-table tbody th{ white-space: nowrap; }
.spec-table tfoot td{ border-top: 1px solid var(--color-border); background: #fbfaf7; font-size: 11px; color: var(--color-text-soft); }

/* 補足ボックス */
.sub-section.note-box{ padding: 32px 36px; border: 1px solid #ddd8c6; background: #ece8dc; }
.note-box__text{ font-size: 12px; line-height: 2; letter-spacing: .06em; color: var(--color-text-soft); }
.note-box__text p + p{ margin-top: .8em; }

/* ページ下部のお問い合わせ帯 */
.page-cta{ padding: 64px 6%; background: #efebe0; text-align: center; }
.page-cta .eyebrow{ justify-content: center; }
.page-cta .eyebrow::before{ display: none; }
.page-cta__title{ margin-bottom: 32px; font-size: clamp(18px, 1.6vw, 22px); font-weight: 700; letter-spacing: .12em; }
.page-cta__buttons{ display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }

.btn-square{ display: inline-flex; align-items: center; justify-content: center; min-width: 180px; padding: 14px 28px; border: 1.5px solid var(--color-footer); font-size: 13px; font-weight: 500; letter-spacing: .08em; }
.btn-square--outline{ background: #fff; color: var(--color-footer); }
.btn-square--outline:hover{ background: var(--color-footer); color: #fff; }
.btn-square--dark{ background: var(--color-footer); color: #fff; }
.btn-square--dark:hover{ background: #2d5446; border-color: #2d5446; }

@media (max-width: 767px){
	.sub-page{ padding: 48px 6% 72px; }
	.sub-section + .sub-section{ margin-top: 48px; padding-top: 48px; }
	.media-row{ grid-template-columns: 1fr; }
	.point-list__row{ grid-template-columns: 1fr; gap: 2px; padding: 14px 0; }
	.plan-table__row{ grid-template-columns: 1fr; }
	.plan-table__head{ border-right: 0; border-bottom: 1px solid var(--color-border); }
	.sub-section.note-box{ padding: 24px 20px; }
	.page-cta__buttons .btn-square{ flex: 1 1 100%; }
}

/* ==========================================================================
   お問い合わせページ（page-contact.php / Contact Form 7）
   ========================================================================== */
.contact{ max-width: 760px; padding: 56px clamp(24px, 6vw, 64px); border: 1px solid var(--color-border); background: #fff; }
.contact .entry__content > p:first-child{ margin-bottom: 40px; font-size: 14px; text-align: center; }

.wpcf7-form > p{ margin: 0 0 28px; }
.wpcf7-form label{ display: block; font-size: 14px; font-weight: 700; letter-spacing: .08em; }
.wpcf7-form label br{ display: none; }
.wpcf7-form-control-wrap{ display: block; margin-top: 10px; }
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form input[type="number"],
.wpcf7-form input[type="date"],
.wpcf7-form select,
.wpcf7-form textarea{ width: 100%; padding: 14px 16px; border: 1px solid var(--color-border); border-radius: 2px; background: var(--color-bg-beige); font: inherit; font-size: 15px; font-weight: 400; letter-spacing: .04em; color: var(--color-text); transition: border-color .3s var(--ease), background-color .3s var(--ease); }
.wpcf7-form textarea{ min-height: 200px; resize: vertical; }
.wpcf7-form input:focus,
.wpcf7-form select:focus,
.wpcf7-form textarea:focus{ outline: none; border-color: var(--color-primary); background: #fff; }
.wpcf7-form input[aria-invalid="true"],
.wpcf7-form textarea[aria-invalid="true"]{ border-color: #c0392b; }

/* 必須表示（ラベル内に「（必須）」等を書いた場合用）*/
.wpcf7-form .required{ margin-left: 8px; padding: 1px 8px; background: var(--color-primary); color: #fff; font-size: 11px; font-weight: 500; }

/* 送信ボタン */
.wpcf7-form > p:last-of-type{ margin: 40px 0 0; text-align: center; }
.wpcf7-form .wpcf7-submit{ min-width: 240px; padding: 16px 40px; border: 1.5px solid var(--color-footer); border-radius: 0; background: var(--color-footer); color: #fff; font: inherit; font-size: 15px; font-weight: 500; letter-spacing: .12em; cursor: pointer; transition: background-color .3s var(--ease), border-color .3s var(--ease); -webkit-appearance: none; appearance: none; }
.wpcf7-form .wpcf7-submit:hover{ background: #2d5446; border-color: #2d5446; }
.wpcf7-form .wpcf7-submit:disabled{ opacity: .5; cursor: default; }
.wpcf7-form .wpcf7-spinner{ display: block; margin: 12px auto 0; }

/* エラー・送信結果 */
.wpcf7-not-valid-tip{ margin-top: 6px; font-size: 12px; font-weight: 400; color: #c0392b; }
.wpcf7 form .wpcf7-response-output{ margin: 32px 0 0; padding: 16px 20px; border: 1px solid var(--color-border); font-size: 14px; text-align: center; }
.wpcf7 form.sent .wpcf7-response-output{ border-color: var(--color-accent-soft); background: #edf1e5; }
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output{ border-color: #c0392b; background: #fbeeec; color: #a5281b; }

.wpcf7-turnstile{ margin-bottom: 28px; }

@media (max-width: 767px){
	.contact{ padding: 40px 20px; }
	.wpcf7-form .wpcf7-submit{ width: 100%; min-width: 0; }
}

/* ==========================================================================
   サービス詳細ページ（page-templates/service.php ＋ patterns/service-*.php）
   ブロックのスタイルはパターンの .service-section を起点にしているので、エディター内でも同じ見た目になります。
   ========================================================================== */
.service-body > .service-section{ margin-top: 0; }
.service-body .wp-block-group__inner-container{ width: 100%; }
.service-section + .service-section{ margin-top: 72px; padding-top: 72px; border-top: 1px solid var(--color-border); }
.service-section > * + *{ margin-top: 0; }

.service-section h2.wp-block-heading{ margin: 0 0 32px; padding: 0; border: 0; font-size: clamp(18px, 1.6vw, 22px); font-weight: 700; line-height: 1.5; letter-spacing: .12em; }
.service-section p{ font-size: 14px; line-height: 2.1; letter-spacing: .06em; color: var(--color-text-soft); }
.service-section p + p{ margin-top: 1em; }

/* 写真＋テキスト */
.service-section .wp-block-media-text{ grid-template-columns: 1fr 1.1fr; }
.service-section .wp-block-media-text__media img{ width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.service-section .wp-block-media-text__content{ padding: 0 0 0 clamp(24px, 5vw, 56px); }
.service-section .wp-block-media-text__content h2.wp-block-heading{ margin-bottom: 20px; }

/* 特長カード */
.service-section .feature-cards{ gap: 20px; margin: 0; }
.service-section .feature-cards .wp-block-column{ padding: 28px 24px; border: 1px solid var(--color-border); background: #fff; }
.service-section .feature-cards h3.wp-block-heading{ display: inline-block; margin: 0 0 16px; padding: 6px 14px; border: 0; border-left: 3px solid var(--color-accent-soft); background: #e7ecdc; font-size: 15px; font-weight: 700; letter-spacing: .08em; }
.service-section .feature-cards p{ font-size: 13px; }

/* ご利用の流れ */
.service-section .flow-list{ margin: 0; padding: 0; list-style: none; counter-reset: flow; }
.service-section .flow-list > li{ position: relative; padding: 22px 24px 22px 84px; border: 1px solid var(--color-border); background: #fff; font-size: 13px; line-height: 1.9; letter-spacing: .06em; color: var(--color-text-soft); counter-increment: flow; }
.service-section .flow-list > li + li{ margin-top: 12px; }
.service-section .flow-list > li::before{ content: counter(flow, decimal-leading-zero); position: absolute; top: 50%; left: 24px; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--color-footer); color: #fff; font-family: var(--font-num); font-size: 17px; transform: translateY(-50%); }
.service-section .flow-list strong{ display: block; margin-bottom: 2px; font-size: 15px; color: var(--color-text); }

/* よくあるご質問 */
.service-section .wp-block-details.faq{ margin: 0; border-bottom: 1px solid var(--color-border); }
.service-section h2.wp-block-heading + .wp-block-details.faq{ border-top: 1px solid var(--color-border); }
.service-section .faq summary{ position: relative; padding: 20px 48px 20px 44px; font-size: 15px; font-weight: 700; letter-spacing: .06em; cursor: pointer; list-style: none; }
.service-section .faq summary::-webkit-details-marker{ display: none; }
.service-section .faq summary::before{ content: "Q"; position: absolute; top: 14px; left: 8px; font-family: var(--font-num); font-size: 24px; font-weight: 500; color: var(--color-accent-soft); }
.service-section .faq summary::after{ content: "+"; position: absolute; top: 50%; right: 12px; font-size: 20px; font-weight: 400; transform: translateY(-50%); }
.service-section .faq[open] summary::after{ content: "−"; }
.service-section .faq > p{ position: relative; margin: 0; padding: 0 12px 22px 44px; }
.service-section .faq > p::before{ content: "A"; position: absolute; top: -6px; left: 8px; font-family: var(--font-num); font-size: 24px; color: var(--color-text-soft); }

/* ボタン */
.service-section .wp-block-buttons{ margin-top: 24px; }
.service-section .wp-block-button__link{ min-width: 240px; padding: 16px 40px; border: 1.5px solid var(--color-footer); border-radius: 0; background: var(--color-footer); color: #fff; font-size: 14px; font-weight: 500; letter-spacing: .1em; text-align: center; text-decoration: none; }
.service-section .wp-block-button__link:hover{ background: #2d5446; border-color: #2d5446; opacity: 1; }
.service-section .is-style-outline .wp-block-button__link{ background: #fff; color: var(--color-footer); }

/* リード（中央寄せのキャッチコピー） */
.service-section.message-lead h2.wp-block-heading{ margin-bottom: 36px; font-size: clamp(24px, 2.6vw, 34px); font-weight: 500; line-height: 1.7; letter-spacing: .14em; color: var(--color-primary); }
.service-section.message-lead p{ font-size: 15px; line-height: 2.4; color: var(--color-text); }

/* 企業理念（MISSION / VISION / VALUE） */
.service-section .mvv-item{ display: grid; grid-template-columns: 160px 1fr; gap: 6px 32px; margin: 0; padding: 28px 0; border-bottom: 1px solid var(--color-border); }
.service-section h2.wp-block-heading + .mvv-item{ border-top: 1px solid var(--color-border); }
/* クラシックテーマではグループの中身が .wp-block-group__inner-container で包まれるため、包みを無視してグリッドに並べる */
.service-section .mvv-item > .wp-block-group__inner-container{ display: contents; }
.service-section .mvv-item p,
.service-section .mvv-item h3{ margin: 0; }
.service-section .mvv-item .mvv-item__label{ grid-row: span 2; align-self: center; font-family: var(--font-num); font-size: 24px; letter-spacing: .1em; color: var(--color-accent-soft); }
.service-section .mvv-item h3.wp-block-heading{ margin: 0; padding: 0; border: 0; font-size: 18px; font-weight: 700; letter-spacing: .1em; color: var(--color-text); }
.service-section .mvv-item p + p{ margin-top: 0; }

/* 写真右のメディア＋テキスト（代表メッセージなど） */
.service-section .wp-block-media-text.has-media-on-the-right{ grid-template-columns: 1.1fr 1fr; }
.service-section .has-media-on-the-right .wp-block-media-text__content{ padding: 0 clamp(24px, 5vw, 56px) 0 0; }
.service-section .message-block .wp-block-media-text__media img{ aspect-ratio: 8 / 7; }
.service-section p.signature{ margin-top: 28px; font-size: 14px; letter-spacing: .1em; color: var(--color-text); }

/* 本文内のお問い合わせ導線 */
.service-section.content-cta{ padding: 56px 24px; border-top: 0; background: #efebe0; }
.service-section.content-cta h2.wp-block-heading{ margin-bottom: 16px; }
.service-section.content-cta .wp-block-buttons{ gap: 12px; }

/* 他のサービス */
.service-others{ margin-top: 80px; padding-top: 72px; border-top: 1px solid var(--color-border); }
.service-others__list{ display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 20px; }
.service-others__card{ display: block; height: 100%; border: 1px solid var(--color-border); background: #fff; }
.service-others__image{ display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.service-others__image img{ width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.service-others__card:hover img{ transform: scale(1.04); }
.service-others__title{ display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; font-size: 15px; font-weight: 700; letter-spacing: .08em; }
.service-others__card:hover .service-others__title{ color: var(--color-primary); }

@media (max-width: 781px){
	.service-section .wp-block-media-text__content,
	.service-section .has-media-on-the-right .wp-block-media-text__content{ padding: 24px 0 0; }
	.service-section .mvv-item{ grid-template-columns: 1fr; }
	.service-section .mvv-item .mvv-item__label{ grid-row: auto; font-size: 20px; }
	.service-section.message-lead p br{ display: none; }
}
@media (max-width: 767px){
	.service-section + .service-section{ margin-top: 48px; padding-top: 48px; }
	.service-section .flow-list > li{ padding: 18px 16px 18px 68px; }
	.service-section .flow-list > li::before{ left: 16px; width: 36px; height: 36px; font-size: 15px; }
	.service-section .wp-block-button__link{ width: 100%; min-width: 0; }
	.service-others{ margin-top: 56px; padding-top: 48px; }
}

.screen-reader-text{ position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
