@charset "UTF-8";
/*
 * ======================================
 * 追加クラス一覧（共通SCSS取り込み検討用）
 * ======================================
 *
 * .mz-section / .mz-pt-* / .mz-pb-*   - clamp() で可変するセクション上下余白（CSS変数で上下個別指定）
 * .mz-w-1000 / .mz-w-820              - container の最大幅バリエーション（1000px / 820px）
 * .mz-mb-* / .mz-mt-* / .mz-gap-*     - tablet以下で半減しない固定余白（24/28/32/36/40/44/48/56）
 * .mz-flex / __main / __sub / __img   - flex-wrap + flex-basis による2カラム（幅不足で自動縦積み）
 * .mz-overlay / --72 / --78           - サブカラー系の半透明オーバーレイ（rgba(36,92,54,.72〜.78)）
 * .mz-cover-img                       - セクション背景として敷く絶対配置の写真
 * .mz-btn / --white / --outline / --sm / --between / --submit - 角丸ピル型ボタン（矢印SVG付き）
 * .mz-lead / .mz-text                 - リード文（サブカラー太字）/ 本文（行間2.1）
 * .mz-mv                              - TOPメインビジュアル（写真1枚固定＋グラデ暗幕＋左下コピー＋SCROLL）
 * .mz-about-photos                    - 写真2枚の段違い配置
 * .mz-service-band / .mz-glass-box    - 写真背景の業務内容帯＋半透明枠ボックス
 * .mz-dot-list / .mz-dash-list / .mz-check-list - ●・短線・チェック丸アイコンのリスト
 * .mz-report-grid / .mz-report-card   - 作業日報タイル（card-blog の見た目上書き）
 * .mz-cat / .mz-cat-nav               - カテゴリラベル / カテゴリ切替ピル
 * .mz-link-more                       - 下線付きテキストリンク（一覧を見る）
 * .mz-bnr / .mz-bnr-grid              - 写真＋本文＋丸矢印の導線バナー
 * .mz-cta                             - フッター上のお問い合わせ帯（footer-cta の上書き）
 * .mz-footer                          - フッター本体（footer-body の上書き）
 * .mz-page-hero / .mz-breadcrumb      - 下層ヒーロー / パンくず
 * .mz-dl / --boxed                    - 項目＋内容の定義リスト（幅不足で縦積み）
 * .mz-history                         - 縦線＋丸ドットの沿革タイムライン
 * .mz-works / .mz-pill-label          - 施工実績ボックス / ピル型区分ラベル
 * .mz-map                             - 地図埋め込み（16:7）
 * .mz-area / .mz-chip(s)              - 対応エリアボックス / 地名チップ
 * .mz-target / .mz-anchor-nav         - 業務内容の対象別ボックス / ページ内リンク
 * .mz-num-heading                     - 番号＋英字＋日本語の業務見出し（heading-number の上書き）
 * .mz-service-img / .mz-noimage       - 業務写真枠 / ノーイメージ枠
 * .mz-extra / .mz-worry / .mz-note    - 補足ボックス / お悩みボックス / 緑枠ボックス（制度案内）
 * .mz-case                            - 施工事例ビフォーアフター（作業前→作業後）
 * .mz-land / .mz-tags / .mz-others    - 造園工事の項目ボックス / タグ / その他の作業カード
 * .mz-badge                           - サブカラーのピル型強調テキスト
 * .mz-blog / .mz-side-title / .mz-archive / .mz-pagination - ブログ2カラム・サイドバー・ページ送り
 * .mz-entry                           - 記事詳細
 * .mz-form / .mz-faq                  - お問い合わせフォーム / よくある質問
 *
 * ======================================
 * 共通SCSSに不足していたもの
 * ======================================
 *
 * 【値の粒度不足】
 *  - section / container の余白・幅が固定値のみ。clamp() による可変余白、1160px＋可変paddingのコンテナがない
 *  - mt/mb の40px以上が tablet で自動半減するため、半減させたくない固定値（44/48/56）を表現できない
 *  - 24/28/32/36/44 などの余白刻み、gap 16/24 がない
 *  - body の font-size が tablet/SP で自動縮小（1.4/1.2rem）する。SPでも16pxを保つ指定がない
 * 【指定方向不足】
 *  - background-position を 50% 40% 等に寄せる object-position utility がない
 * 【状態不足】
 *  - a:hover の opacity:.8 が全リンクに掛かる。色変化のみのホバーにしたい案件で打ち消しが必要
 * 【構造不足】
 *  - flex-basis + flex-wrap で幅不足時に自動縦積みする2カラム（column2 は固定%＋tabletで縦積み）
 *  - 項目＋内容の定義リスト（幅不足で縦積み）、縦線＋丸ドットの年表、ビフォーアフター、写真2枚段違い
 *  - header-bar がドロップダウン型SPメニュー（ヘッダー直下に開く白パネル）に対応していない
 *  - footer-cta に背景写真＋暗幕のバリエーションがない
 * 【装飾パターン不足】
 *  - サブカラー系オーバーレイ（rgba(sub,0.72〜0.78)）、半透明白枠ボックス、緑枠ボックス、チェック丸アイコンリスト
 *
 */

/* ==========================================================================
   Base（claude-design-output の本文設定に合わせる）
   ========================================================================== */
body {
  color: #26302a;
  font-size: 1.6rem;
  line-height: 1.9;
  letter-spacing: 0.04em;
}
@media (max-width: 896px) {
  body { font-size: 1.6rem; }
}
a { color: #2F7545; }
a:hover { color: #2DB338; opacity: 1; }
img { display: block; }
[id] { scroll-margin-top: 90px; }

/* ==========================================================================
   Layout
   ========================================================================== */
.container {
  max-width: 1160px;
  padding-left: clamp(20px, 5vw, 40px);
  padding-right: clamp(20px, 5vw, 40px);
}
.container.mz-w-1000 { max-width: 1000px; }
.container.mz-w-820 { max-width: 820px; }

.mz-section {
  --pt: clamp(80px, 10vw, 130px);
  --pb: clamp(80px, 10vw, 130px);
  position: relative;
  padding-top: var(--pt);
  padding-bottom: var(--pb);
}
.mz-pt-xl { --pt: clamp(80px, 10vw, 140px); }
.mz-pb-xl { --pb: clamp(80px, 10vw, 140px); }
.mz-pt-m { --pt: clamp(80px, 10vw, 120px); }
.mz-pb-m { --pb: clamp(80px, 10vw, 120px); }
.mz-pt-intro { --pt: clamp(72px, 9vw, 120px); }
.mz-pb-intro { --pb: clamp(72px, 9vw, 120px); }
.mz-pt-item { --pt: clamp(56px, 7vw, 96px); }
.mz-pb-item { --pb: clamp(56px, 7vw, 96px); }
.mz-pb-s { --pb: clamp(48px, 6vw, 80px); }
.mz-pt-blog { --pt: clamp(56px, 8vw, 100px); }
.mz-pt-0 { --pt: 0px; }
.mz-border-top { border-top: 1px solid #e3ece1; }

/* 半減しない固定余白 */
.mz-mb-24 { margin-bottom: 24px; }
.mz-mb-28 { margin-bottom: 28px; }
.mz-mb-32 { margin-bottom: 32px; }
.mz-mb-36 { margin-bottom: 36px; }
.mz-mb-40 { margin-bottom: 40px; }
.mz-mb-44 { margin-bottom: 44px; }
.mz-mb-48 { margin-bottom: 48px; }
.mz-mt-28 { margin-top: 28px; }
.mz-mt-40 { margin-top: 40px; }
.mz-mt-44 { margin-top: 44px; }
.mz-mt-56 { margin-top: 56px; }
.mz-gap-16 { gap: 16px; }
.mz-gap-24 { gap: 24px; }

/* flex-basis 2カラム（幅不足で自動的に縦積み） */
.mz-flex {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
.mz-flex__main,
.mz-flex__sub,
.mz-flex__img { min-width: 0; }
.mz-flex--about { gap: clamp(40px, 6vw, 80px); }
.mz-flex--about .mz-flex__main { flex: 1 1 420px; }
.mz-flex--about .mz-flex__sub { flex: 1 1 380px; }
.mz-flex--intro { gap: clamp(36px, 6vw, 72px); }
.mz-flex--intro .mz-flex__main { flex: 1 1 400px; }
.mz-flex--intro .mz-flex__img { flex: 1 1 420px; width: 100%; }
.mz-flex--intro .mz-flex__main--420 { flex-basis: 420px; }
.mz-flex--service { gap: clamp(28px, 4vw, 56px); align-items: stretch; }
.mz-flex--area { gap: clamp(32px, 4vw, 56px); }

/* 写真を背景として敷く */
.mz-cover-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mz-cover-img--pos-40 { object-position: 50% 40%; }

.mz-overlay {
  position: absolute;
  inset: 0;
  background: rgba(36, 92, 54, 0.74);
}
.mz-overlay--72 { background: rgba(36, 92, 54, 0.72); }

/* ==========================================================================
   Typography
   ========================================================================== */
/* セクション見出し（英字＋日本語） */
.heading .heading__en {
  display: block;
  font-size: clamp(4.4rem, 7vw, 6.4rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0.02em;
  color: #2DB338;
}
.heading .heading__ja {
  margin-top: 8px;
  font-size: 2.2rem;
  font-weight: 600;
  line-height: 1.9;
  letter-spacing: 0.14em;
  color: #26302a;
}
.heading--white .heading__en,
.heading--white .heading__ja { color: #fff; }
/* 小さめ英字＋大きめ日本語（採用メッセージ） */
.heading.mz-heading-sm .heading__en {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.22em;
}
.heading.mz-heading-sm .heading__ja {
  font-size: clamp(2.4rem, 3vw, 3.4rem);
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.06em;
}

.mz-lead {
  font-size: clamp(2rem, 3vw, 2.5rem);
  font-weight: 600;
  line-height: 1.8;
  color: #2F7545;
}
.mz-lead--lg {
  font-size: clamp(2rem, 2.2vw, 2.6rem);
  font-weight: 700;
  line-height: 1.7;
}
.mz-lead--center {
  text-align: center;
  font-size: clamp(1.8rem, 2vw, 2.2rem);
  font-weight: 700;
}
.mz-text { line-height: 2.1; text-wrap: pretty; }
.mz-text--205 { line-height: 2.05; }
.mz-text--20 { line-height: 2; }

/* ==========================================================================
   Button
   ========================================================================== */
.btn.mz-btn {
  gap: 16px;
  width: auto;
  max-width: none;
  min-width: 260px;
  padding: 15px 40px;
  border: 0;
  border-radius: 999px;
  background: #2F7545;
  color: #fff;
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.08em;
}
.btn.mz-btn:hover { background: #245c36; color: #fff; opacity: 1; }
.mz-btn__arrow { flex: none; }
.btn.mz-btn--white { background: #fff; color: #2F7545; }
.btn.mz-btn--white:hover { background: #EEF5EC; color: #245c36; }
.btn.mz-btn--outline {
  gap: 14px;
  min-width: 0;
  padding: 14px 40px;
  border: 1px solid #2F7545;
  background: transparent;
  color: #2F7545;
  letter-spacing: 0.04em;
}
.btn.mz-btn--outline:hover { background: #2F7545; color: #fff; }
.btn.mz-btn--sm {
  flex: none;
  gap: 12px;
  min-width: 0;
  padding: 12px 28px;
  font-size: 1.5rem;
  letter-spacing: 0.04em;
}
.btn.mz-btn--between {
  justify-content: space-between;
  gap: 20px;
  padding: 16px 32px;
  letter-spacing: 0.04em;
}
.btn.mz-btn--w300 { min-width: 300px; }  /* お問い合わせボタン（.mz-cta__btn）と横幅を揃える */
.btn.mz-btn--submit {
  min-width: 0;
  padding: 18px 64px;
  font-weight: 700;
  letter-spacing: 0.1em;
  cursor: pointer;
}
@media (max-width: 639px) {
  .btn.mz-btn { font-size: 1.6rem; }
  .btn.mz-btn--sm { font-size: 1.5rem; }
  /* スマホ時はボタン幅を統一して中央配置（お問い合わせ・送信ボタンも同じ幅） */
  .btn.mz-btn,
  .footer-cta .footer-cta__mail.mz-cta__btn {
    display: flex;
    width: 100%;
    min-width: 0;
    max-width: 320px;
    margin-left: auto;
    margin-right: auto;
  }
}

/* ==========================================================================
   Header
   ========================================================================== */
.header-bar.mz-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255, 255, 255, 0.97);
  border-bottom: 1px solid #e3ece1;
  box-shadow: none;
}
.mz-header .header__inner {
  max-width: none;
  height: auto;
  padding: 14px clamp(16px, 2vw, 28px);
  gap: 24px;
}
.mz-header .header-logo {
  color: #26302a;
  line-height: 1.3;
}
.mz-header .header-logo:hover { color: #26302a; }
.mz-header .header-logo__body { gap: 2px; }
.mz-header .header-logo__sub {
  font-size: 1.1rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  color: #4f5b53;
}
.mz-header .header-logo__name {
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: 0.08em;
  color: #26302a;
}
.mz-header .header__nav {
  gap: 4px;
  margin-right: 28px;
}
.mz-header .header__nav-item a {
  padding: 6px 12px;
  color: #26302a;
  line-height: 1.4;
}
.mz-header .header__nav-item a::after { display: none; }
.mz-header .header__nav-en {
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.14em;
  color: #2DB338;
}
.mz-header .header__nav-ja {
  margin-top: 0;
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.4;
  color: #26302a;
  transition: color 0.3s ease;
}
.mz-header .header__nav-item a:hover .header__nav-ja,
.mz-header .header__nav-item--current .header__nav-ja { color: #2F7545; }
.mz-header .header__right { height: auto; }
.mz-header .header__tel {
  gap: 6px;
  font-size: 2.4rem;
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: 0.04em;
  color: #2F7545;
}
.mz-header .header__tel::before { display: none; }
.mz-header .header__tel:hover { color: #2DB338; opacity: 1; }
@media (max-width: 1179px) {
  .mz-header .header__inner { padding-top: 14px; padding-bottom: 14px; min-height: 80px; }
  .mz-header .header__right { display: flex; margin-left: auto; margin-right: 80px; }
}
@media (max-width: 639px) {
  .mz-header .header__right { display: none; }
}

/* ハンバーガー（デザイン：サブカラー丸ボタン＋MENU） */
.nav-toggle {
  top: 14px;
  right: clamp(16px, 2vw, 28px);
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: #2F7545;
  backdrop-filter: none;
}
.nav-toggle .nav-toggle__line {
  width: 20px;
  background: #fff;
}
.nav-toggle .nav-toggle__line:nth-child(1) { top: 14px; }
.nav-toggle .nav-toggle__line:nth-child(2) { top: 21px; }
.nav-toggle .nav-toggle__line:nth-child(3) { display: none; }
.nav-toggle.is-active .nav-toggle__line:nth-child(1) { top: 18px; transform: translateX(-50%) rotate(45deg); }
.nav-toggle.is-active .nav-toggle__line:nth-child(2) { top: 18px; opacity: 1; transform: translateX(-50%) rotate(-45deg); }
.mz-nav-toggle__label {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 12px;
  font-family: "Jost", sans-serif;
  font-size: 0.9rem;
  line-height: 1;
  letter-spacing: 0.1em;
  color: #fff;
}

/* SPメニュー（ヘッダー直下に開く白パネル） */
.sp-nav {
  top: 81px;
  bottom: auto;
  display: block;
  max-height: calc(100vh - 81px);
  padding: 12px clamp(20px, 4vw, 40px) 28px;
  border-top: 1px solid #e3ece1;
  background: #fff;
  box-shadow: 0 8px 20px rgba(30, 60, 35, 0.1);
}
.sp-nav .sp-nav__list { max-width: none; text-align: left; }
.sp-nav .sp-nav__item { border-bottom: 1px solid #e3ece1; }
.sp-nav .sp-nav__item:first-child { border-top: 0; }
.sp-nav .sp-nav__link {
  align-items: baseline;
  gap: 12px;
  padding: 16px 4px;
  color: #26302a;
  font-size: 1.8rem;
  font-weight: 500;
}
.sp-nav .sp-nav__link::after { display: none; }
.sp-nav .sp-nav__link:hover { background: none; color: #2F7545; }
.sp-nav .sp-nav__en {
  order: 2;
  margin: 0;
  padding: 0;
  font-size: 1.4rem;
  letter-spacing: 0.14em;
  color: #2DB338;
  opacity: 1;
}
.sp-nav .sp-nav__bottom { max-width: none; margin-top: 20px; }
.sp-nav .sp-nav__bottom .header__tel {
  display: flex;
  justify-content: center;
  padding: 14px;
  border-radius: 999px;
  background: #2F7545;
  color: #fff;
  font-size: 2rem;
  font-weight: 500;
}
.sp-nav .sp-nav__bottom .header__tel::before { display: none; }

/* ==========================================================================
   TOP：メインビジュアル
   ========================================================================== */
.mz-mv {
  position: relative;
  height: clamp(480px, 82vh, 820px);
  overflow: hidden;
  background: #2a3a2c;
}
#slideshow {
  position: absolute;
  inset: 0;
  height: clamp(480px, 82vh, 820px);
}
#slideshow .swiper-slide,
#slideshow .main_slider__inner { width: 100%; height: 100%; }
#slideshow img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 60%;
}
.mz-mv__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10, 25, 12, 0.7) 0%, rgba(10, 25, 12, 0.38) 55%, rgba(10, 25, 12, 0) 80%);
  pointer-events: none;
}
.mz-mv__text {
  position: absolute;
  left: 0;
  right: 0;
  bottom: clamp(40px, 7vw, 88px);
  padding: 0 clamp(56px, 6vw, 80px) 0 clamp(16px, 2vw, 28px);
  color: #fff;
}
.mz-mv__en {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  font-size: 1.3rem;
  font-weight: 500;
  letter-spacing: 0.24em;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
}
.mz-mv__en-line { width: 32px; height: 1px; background: #fff; }
.mz-mv__catch {
  font-size: clamp(2.6rem, 3.8vw, 4.8rem);
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.08em;
  text-shadow: 0 2px 14px rgba(0, 0, 0, 0.35);
  text-wrap: pretty;
}
.mz-mv__lead {
  margin-top: 16px;
  font-size: clamp(1.4rem, 1.4vw, 1.6rem);
  font-weight: 500;
  line-height: 2;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);
  text-wrap: pretty;
}
.mz-mv__scroll {
  position: absolute;
  right: clamp(14px, 2vw, 28px);
  bottom: 40px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: #fff;
}
.mz-mv__scroll-text {
  writing-mode: vertical-rl;
  font-size: 1.1rem;
  letter-spacing: 0.2em;
}
.mz-mv__scroll-line { width: 1px; height: 64px; background: rgba(255, 255, 255, 0.8); }
.mz-br-sp { display: none; }
@media (max-width: 639px) {
  .mz-mv__text { padding-right: 16px; }
  .mz-mv__scroll { display: none; }
  /* 1行の最大文字数（キャッチ15字・リード21字）が画面幅に収まるよう vw 指定 */
  .mz-mv__catch { font-size: 5.6vw; letter-spacing: 0.04em; }
  .mz-mv__lead { font-size: 4.2vw; letter-spacing: 0; }
  .mz-br-sp { display: inline; }
  .mz-br-pc { display: none; }
}

/* TOP：本橋造園について */
.mz-about-photos {
  display: flex;
  flex-direction: column;
  gap: clamp(32px, 4vw, 52px);
}
.mz-about-photos__img { width: 80%; }
.mz-about-photos__img--shift { margin-left: 20%; }

/* TOP：業務内容（写真背景帯） */
.mz-service-band {
  padding-left: clamp(16px, 5vw, 75px);
  padding-right: clamp(16px, 5vw, 75px);
}
.mz-service-band__box {
  position: relative;
  overflow: hidden;
  color: #fff;
}
.mz-service-band__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 900px;
  margin: 0 auto;
  padding: clamp(64px, 8vw, 110px) clamp(20px, 5vw, 40px);
  text-align: center;
}
.mz-service-band__boxes {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  width: 100%;
  max-width: 640px;
  text-align: left;
}
.mz-glass-box {
  flex: 1 1 260px;
  min-width: 0;
  padding: 24px 28px 28px;
  border: 1px solid rgba(255, 255, 255, 0.55);
  background: rgba(255, 255, 255, 0.1);
}
.mz-glass-box__title {
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.6);
  text-align: center;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #fff;
}
.mz-dot-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.mz-dot-list li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1.5rem;
  color: #fff;
}
.mz-dot-list li::before {
  content: "";
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #fff;
}

/* TOP / 一覧：作業日報タイル */
.mz-link-more {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 4px;
  border-bottom: 1px solid #2DB338;
  font-weight: 500;
  color: #2F7545;
}
.mz-report-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: clamp(20px, 3vw, 36px);
}
.mz-report-grid--list {
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: clamp(20px, 2.5vw, 32px);
}
.card-blog__item.mz-report-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: #26302a;
  transition: color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
}
.card-blog__item.mz-report-card--boxed {
  gap: 14px;
  padding: 16px 16px 26px;
  background: #fff;
  box-shadow: 0 4px 20px rgba(30, 60, 35, 0.1);
}
.card-blog__item.mz-report-card:hover { color: #2F7545; }
.card-blog__item.mz-report-card--boxed:hover {
  box-shadow: 0 8px 28px rgba(30, 60, 35, 0.18);
  transform: translateY(-3px);
}
.mz-report-card .mz-report-card__img {
  height: auto;
  aspect-ratio: 4 / 3;
  margin: 0;
  border-radius: 0;
  background: #EAF2E7;
}
.card-blog__item:hover .mz-report-card__img img { transform: scale(1.05); }
.mz-report-card__meta {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 1.3rem;
}
.mz-report-grid--list .mz-report-card__meta { gap: 10px; }
.mz-report-card .mz-report-card__date {
  margin: 0;
  padding: 0;
  background: none;
  font-size: 1.3rem;
  font-weight: 400;
  letter-spacing: 0.08em;
  color: #4f5b53;
}
.mz-report-card .mz-report-card__title {
  display: block;
  font-size: 1.7rem;
  font-weight: 500;
  line-height: 1.7;
  -webkit-line-clamp: unset;
  overflow: visible;
}
.mz-report-card .mz-report-card__title--sm { font-size: 1.6rem; }
.mz-cat {
  display: inline-block;
  margin: 0;
  padding: 2px 12px;
  border-radius: 999px;
  background: #2F7545;
  color: #fff;
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1.6;
}
.mz-cat--sm { padding: 1px 10px; }
.mz-cat--lg { padding: 2px 14px; font-size: 1.3rem; line-height: 1.9; }

/* TOP：会社概要・採用情報バナー */
.mz-bnr-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
  gap: clamp(20px, 3vw, 32px);
}
.mz-bnr {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 4px 20px rgba(30, 60, 35, 0.1);
  color: #26302a;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.mz-bnr:hover {
  color: #26302a;
  box-shadow: 0 8px 28px rgba(30, 60, 35, 0.18);
  transform: translateY(-3px);
}
.mz-bnr__img { width: 100%; aspect-ratio: 16 / 8; object-fit: cover; }
.mz-bnr__img--pos-40 { object-position: 50% 40%; }
.mz-bnr__body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 28px clamp(22px, 3vw, 36px) 32px;
}
.mz-bnr__en {
  font-size: 1.3rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  color: #2DB338;
}
.mz-bnr__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-size: 2.2rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}
.mz-bnr__arrow {
  display: flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #2F7545;
  color: #fff;
}
.mz-bnr__text { font-size: 1.5rem; line-height: 1.9; color: #3d4841; }

/* ==========================================================================
   お問い合わせ帯（footer-cta 上書き）
   ========================================================================== */
.footer-cta.mz-cta {
  padding: 0;
  overflow: hidden;
  background: #2F7545;
  color: #fff;
}
.footer-cta.mz-cta::before {
  z-index: 1;
  background: rgba(36, 92, 54, 0.78);
}
.footer-cta .mz-cta__inner {
  z-index: 2;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 32px;
  max-width: 1160px;
  padding: clamp(64px, 8vw, 100px) clamp(20px, 5vw, 40px);
}
.mz-cta__label { font-size: 1.3rem; letter-spacing: 0.14em; }
.mz-cta__en {
  margin: 4px 0 18px;
  font-size: clamp(4.4rem, 6vw, 6.4rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0.02em;
}
.mz-cta__title {
  margin-bottom: 6px;
  font-size: clamp(1.8rem, 2vw, 2.2rem);
  font-weight: 700;
  letter-spacing: 0.08em;
}
.footer-cta .mz-cta__desc { font-size: 1.4rem; line-height: 1.9; }
.footer-cta .footer-cta__mail.mz-cta__btn {
  gap: 16px;
  width: auto;
  max-width: none;
  min-width: 300px;
  padding: 18px 44px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: #fff;
  color: #2F7545;
  font-family: "Zen Kaku Gothic New", sans-serif;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}
.footer-cta .footer-cta__mail.mz-cta__btn::before { display: none; }
.footer-cta .footer-cta__mail.mz-cta__btn:hover { background: transparent; color: #fff; }
.mz-cta__btn-arrow { stroke: #fff; }
.mz-cta__btn:hover .mz-cta__btn-arrow { stroke: #2F7545; }
@media (max-width: 639px) {
  .footer-cta .mz-cta__inner { flex-direction: row; padding: clamp(64px, 8vw, 100px) clamp(20px, 5vw, 40px); }
  .footer-cta .footer-cta__mail.mz-cta__btn { min-width: 0; width: 100%; }
}

/* ==========================================================================
   Footer（footer-body 上書き）
   ========================================================================== */
.footer-body.mz-footer { padding: 0; color: #26302a; }
.mz-footer .mz-footer__inner {
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 48px;
  max-width: 1160px;
  padding: clamp(56px, 7vw, 88px) clamp(20px, 5vw, 40px);
}
.mz-footer .mz-footer__info {
  display: flex;
  flex: 1 1 320px;
  flex-direction: column;
  gap: 4px;
  width: auto;
  line-height: 1.5;
}
.mz-footer__sub { font-size: 1.2rem; letter-spacing: 0.12em; color: #4f5b53; }
.mz-footer__name { font-size: 2.4rem; font-weight: 700; letter-spacing: 0.08em; }
.mz-footer__address { margin-top: 20px; font-size: 1.4rem; letter-spacing: 0.08em; }
.mz-footer__tel { font-size: 1.4rem; letter-spacing: 0.08em; color: #26302a; }
.mz-footer__copy { margin-top: 20px; font-size: 1.2rem; letter-spacing: 0.1em; color: #4f5b53; }
.mz-footer .mz-footer__nav {
  display: grid;
  flex: 1 1 440px;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 32px 24px;
  max-width: 600px;
  padding-top: 12px;
}
.mz-footer .footer-body__nav-item a {
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: #26302a;
  line-height: 1.4;
}
.mz-footer .footer-body__nav-item a:hover,
.mz-footer .footer-body__nav-item a:hover .mz-footer__nav-ja { color: #2F7545; }
.mz-footer__nav-en { font-size: 1.3rem; font-weight: 500; letter-spacing: 0.04em; color: #2F7545; }
.mz-footer__nav-ja { font-size: 1.5rem; font-weight: 700; letter-spacing: 0.12em; transition: color 0.3s ease; }
@media (max-width: 896px) {
  .mz-footer .mz-footer__inner { flex-direction: row; }
}
@media (max-width: 639px) {
  .mz-footer .mz-footer__nav { display: none; }
}

/* ==========================================================================
   下層ヒーロー / パンくず
   ========================================================================== */
.page-hero.mz-page-hero { background: #2F7545; }
.mz-page-hero .page-hero__overlay { z-index: 1; }
.mz-page-hero .mz-page-hero__content {
  align-items: center;
  max-width: 1160px;
  margin: 0 auto;
  padding: clamp(72px, 10vw, 124px) clamp(20px, 5vw, 40px) clamp(60px, 8vw, 96px);
  text-align: center;
  color: #fff;
}
.mz-page-hero .heading__en {
  font-size: clamp(4.4rem, 6vw, 7.2rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0.03em;
  color: #fff;
  text-shadow: none;
}
.mz-page-hero .heading__ja {
  margin-top: 12px;
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.9;
  letter-spacing: 0.16em;
  color: #fff;
}
.breadcrumb.mz-breadcrumb {
  padding-top: 16px;
  padding-bottom: 16px;
  font-size: 1.3rem;
  color: #4f5b53;
}
.mz-breadcrumb .breadcrumb__list { gap: 10px; }
.mz-breadcrumb .breadcrumb__item { gap: 10px; }
.mz-breadcrumb .breadcrumb__item:not(:last-child)::after { content: "／"; margin: 0; color: #4f5b53; }
.mz-breadcrumb .breadcrumb__link { color: #2F7545; }
.mz-breadcrumb .breadcrumb__link:hover { color: #2DB338; text-decoration: none; }
.mz-breadcrumb .breadcrumb__current { color: #4f5b53; }

/* ==========================================================================
   会社概要
   ========================================================================== */
.mz-dl { border-top: 2px solid #2DB338; }
.mz-dl__row {
  display: flex;
  flex-wrap: wrap;
  column-gap: 24px;
  row-gap: 4px;
  padding: 22px 8px;
  border-bottom: 1px solid #dcebd8;
}
.mz-dl__th { flex: 0 0 180px; font-weight: 700; color: #2F7545; }
.mz-dl__td { flex: 999 1 320px; min-width: 0; line-height: 1.9; }
.mz-dl--boxed {
  padding: 8px clamp(16px, 3vw, 40px);
  border-top: 0;
  border-radius: 4px;
  background: #fff;
}
.mz-dl--boxed .mz-dl__row { padding: 22px 4px; }
.mz-dl--boxed .mz-dl__th { flex-basis: 120px; }
@media (max-width: 639px) {
  /* 会社概要表：最長行「一般建設業許可 東京都知事許可 造園工事業他」が1行に収まるサイズ */
  .mz-dl:not(.mz-dl--boxed) .mz-dl__td { font-size: 3.6vw; letter-spacing: 0; }
}

.mz-history { position: relative; padding-left: 36px; }
.mz-history::before {
  content: "";
  position: absolute;
  left: 7px;
  top: 10px;
  bottom: 10px;
  width: 2px;
  background: #bfe2c0;
}
.mz-history__row {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  column-gap: 32px;
  row-gap: 6px;
  padding-bottom: 40px;
}
.mz-history__row::before {
  content: "";
  position: absolute;
  left: -36px;
  top: 6px;
  width: 16px;
  height: 16px;
  border: 4px solid #2DB338;
  border-radius: 50%;
  background: #fff;
}
.mz-history__date { flex: 0 0 220px; font-size: 1.7rem; font-weight: 700; color: #2F7545; }
.mz-history__text {
  flex: 999 1 300px;
  min-width: 0;
  padding: 18px 24px;
  border-radius: 4px;
  background: #fff;
  line-height: 1.9;
}

.mz-works-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
  gap: clamp(24px, 3vw, 40px);
}
.mz-works {
  padding: clamp(24px, 3vw, 40px);
  border: 1px solid #dcebd8;
  border-radius: 4px;
}
.mz-works__title {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 24px;
  font-size: 2rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}
.mz-works__title::before {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #2DB338;
}
.mz-works__groups { display: flex; flex-direction: column; gap: 24px; }
.mz-pill-label {
  display: inline-block;
  margin-bottom: 10px;
  padding: 2px 14px;
  border-radius: 999px;
  background: #F2F8F0;
  color: #2F7545;
  font-size: 1.4rem;
  font-weight: 700;
}
.mz-dash-list { display: flex; flex-direction: column; gap: 6px; }
.mz-dash-list li { display: flex; gap: 10px; font-size: 1.5rem; line-height: 1.8; }
.mz-dash-list li::before {
  content: "";
  flex: none;
  width: 6px;
  height: 1px;
  margin-top: 12px;
  background: #2DB338;
}

.embed.mz-map {
  min-height: 320px;
  aspect-ratio: 16 / 7;
  border-radius: 4px;
  background: #dcebd8;
}

.mz-area {
  display: flex;
  flex: 1 1 520px;
  flex-direction: column;
  gap: 20px;
  min-width: 0;
}
.mz-area__box {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 32px;
  padding: 28px clamp(20px, 3vw, 36px);
  border: 1px solid #dcebd8;
  border-radius: 4px;
}
.mz-area__pref { flex: 0 0 120px; font-size: 2rem; font-weight: 700; color: #2F7545; }
.mz-area__body { flex: 999 1 320px; min-width: 0; }
.mz-area__lead { margin-bottom: 14px; font-weight: 700; }
.mz-area__map {
  flex: 0 1 380px;
  width: 100%;
  min-width: 0;
  max-width: 380px;
  margin: 0 auto;
  aspect-ratio: 1 / 1;
  object-fit: contain;
}
@media (max-width: 639px) {
  .mz-area__map { order: -1; }
}
.mz-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.mz-chip {
  padding: 4px 14px;
  border-radius: 999px;
  background: #F2F8F0;
  font-size: 1.4rem;
}
.mz-chip--plain { padding: 4px 6px; background: none; color: #4f5b53; }

/* ==========================================================================
   業務内容
   ========================================================================== */
.mz-grid-2 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
  gap: 20px;
}
.mz-target { padding: clamp(24px, 3vw, 36px); border-radius: 4px; }
.mz-target__en {
  margin-bottom: 4px;
  font-size: 1.3rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  color: #2F7545;
}
.mz-target__title { margin-bottom: 12px; font-size: 1.8rem; font-weight: 700; line-height: 1.6; }
.mz-target__small { font-size: 1.4rem; font-weight: 500; }
.mz-target__text { font-size: 1.5rem; }

.mz-anchor-nav {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  margin-top: 40px;
}
.mz-anchor-nav__link {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: 8px 12px;
  text-align: center;
  line-height: 1.5;
  border: 1px solid #bfdcbc;
  border-radius: 999px;
  background: #fff;
  color: #26302a;
  font-size: 1.4rem;
  font-weight: 500;
}
.mz-anchor-nav__link:hover { border-color: #2DB338; color: #2F7545; }
@media (max-width: 896px) {
  .mz-anchor-nav { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 639px) {
  .mz-anchor-nav { grid-template-columns: repeat(2, 1fr); }
  .mz-anchor-nav__link { font-size: 1.3rem; }
}

.heading-number.mz-num-heading {
  align-items: flex-end;
  gap: 20px;
  margin-bottom: 32px;
}
.heading-number.mz-num-heading .heading__number {
  font-size: clamp(4.4rem, 5vw, 6.4rem);
  font-weight: 400;
  line-height: 0.9;
  color: #2DB338;
}
.heading-number.mz-num-heading .heading__en {
  display: block;
  font-size: 1.3rem;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.2em;
  color: #2F7545;
}
.heading-number.mz-num-heading .heading__ja {
  font-size: clamp(2.2rem, 2.6vw, 3rem);
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.08em;
}
.mz-num-heading__small { font-size: 0.6em; font-weight: 500; }

.mz-service-img {
  flex: 1 1 400px;
  min-width: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: #EAF2E7;
  align-self: flex-start;
}
.mz-service-img img { width: 100%; height: 100%; object-fit: cover; }
.mz-service-body {
  display: flex;
  flex: 1 1 440px;
  flex-direction: column;
  gap: 24px;
  min-width: 0;
}
.mz-service-body--tight { gap: 14px; }
.mz-noimage {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #EAF2E7;
  font-family: "Jost", sans-serif;
  font-size: 1.3rem;
  letter-spacing: 0.2em;
  color: #6d8a72;
}
.mz-noimage--col { flex-direction: column; gap: 4px; }
.mz-noimage__en { font-size: 1.4rem; letter-spacing: 0.24em; }
.mz-noimage__ja { font-family: "Zen Kaku Gothic New", sans-serif; font-size: 1.2rem; letter-spacing: 0.04em; }
.mz-extra {
  padding: 18px 22px;
  border-radius: 4px;
  background: #F2F8F0;
  font-weight: 500;
  line-height: 1.9;
  color: #2F7545;
}
.mz-worry { padding: 22px 24px; border: 1px solid #dcebd8; border-radius: 4px; }
.mz-worry__title { margin-bottom: 12px; font-size: 1.5rem; font-weight: 700; color: #2F7545; }
.mz-check-list { display: flex; flex-direction: column; gap: 8px; }
.mz-check-list li { display: flex; gap: 10px; font-size: 1.5rem; line-height: 1.7; }
.mz-check-list li::before {
  content: "";
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: 4px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Ccircle cx='9' cy='9' r='9' fill='%232DB338'/%3E%3Cpath d='M5 9.2l2.6 2.6L13 6.4' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") no-repeat center / contain;
}
.mz-note {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 32px;
  margin-top: 32px;
  padding: clamp(22px, 3vw, 32px);
  border: 2px solid #2DB338;
  border-radius: 4px;
  background: #F2F8F0;
}
.mz-note__body { flex: 999 1 420px; min-width: 0; }
.mz-note__title { margin-bottom: 6px; font-size: 1.7rem; font-weight: 700; color: #2F7545; }
.mz-note__text { line-height: 1.9; }

.mz-case { margin-top: 40px; }
.mz-case__label {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  font-weight: 700;
}
.mz-case__en { font-size: 1.3rem; font-weight: 500; letter-spacing: 0.2em; color: #2DB338; }
.mz-case__row { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.mz-case__img {
  position: relative;
  flex: 1 1 260px;
  aspect-ratio: 4 / 3;
  border-radius: 4px;
}
.mz-case__img img { width: 100%; height: 100%; object-fit: cover; border-radius: 4px; }
.mz-case__tag {
  position: absolute;
  left: 12px;
  top: 12px;
  padding: 2px 12px;
  border-radius: 999px;
  background: #fff;
  color: #26302a;
  font-family: "Zen Kaku Gothic New", sans-serif;
  font-size: 1.3rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.mz-case__tag--after { background: #2F7545; color: #fff; }
.mz-case__arrow { flex: none; margin: 0 auto; }
@media (max-width: 639px) {
  .mz-case__row { flex-direction: column; align-items: stretch; }
  .mz-case__img { flex: none; width: 100%; }
  .mz-case__arrow { transform: rotate(90deg); }
}

.mz-land { padding: 20px 24px; border: 1px solid #dcebd8; border-radius: 4px; }
.mz-land__title { margin-bottom: 6px; font-size: 1.7rem; font-weight: 700; color: #2F7545; }
.mz-land__text { margin-bottom: 10px; font-size: 1.5rem; }
.mz-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.mz-tag { padding: 2px 12px; border-radius: 999px; background: #F2F8F0; font-size: 1.3rem; }

.mz-others-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
  gap: 16px;
}
.mz-others { padding: 26px 28px; border-radius: 4px; background: #fff; }
.mz-others .mz-land__title { margin-bottom: 8px; }
.mz-others__text { margin-bottom: 12px; font-size: 1.5rem; }
.mz-others__note { font-size: 1.4rem; color: #4f5b53; }

/* ==========================================================================
   採用情報
   ========================================================================== */
.mz-badge {
  display: inline-block;
  padding: 10px 26px;
  border-radius: 999px;
  background: #2F7545;
  color: #fff;
  font-size: clamp(1.6rem, 1.8vw, 1.9rem);
  font-weight: 700;
  letter-spacing: 0.06em;
}

/* ==========================================================================
   作業日報（一覧・詳細）
   ========================================================================== */
.main-side.mz-blog {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: clamp(40px, 5vw, 64px);
}
.mz-blog .mz-blog__main { flex: 999 1 560px; width: auto; min-width: 0; }
.mz-blog .mz-blog__side {
  position: static;
  display: flex;
  flex: 1 1 260px;
  flex-direction: column;
  gap: 40px;
  width: auto;
  min-width: 0;
  max-width: 100%;
  margin-top: 0;
}
.mz-cat-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 36px; }
.mz-cat-nav__link {
  display: inline-block;
  min-width: 104px;  /* 最長4文字（剪定作業・挨拶など）に揃える */
  padding: 8px 20px;
  text-align: center;
  border: 1px solid #bfdcbc;
  border-radius: 999px;
  background: #fff;
  color: #26302a;
  font-size: 1.4rem;
  font-weight: 500;
}
.mz-cat-nav__link:hover { border-color: #2DB338; color: #2F7545; }
.mz-cat-nav__link.is-current { border-color: #2F7545; background: #2F7545; color: #fff; }

.pagination.mz-pagination { margin: 56px 0 0; }
.mz-pagination .pagination__link {
  min-width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid #bfdcbc;
  border-radius: 50%;
  font-family: "Jost", sans-serif;
  color: #26302a;
}
.mz-pagination .pagination__link:hover { border-color: #2DB338; color: #2F7545; }
.mz-pagination .pagination__link.is-current { border-color: #2F7545; background: #2F7545; color: #fff; }
.mz-pagination .pagination__link--next { padding: 0 20px; border-radius: 999px; letter-spacing: 0.1em; }

.mz-side-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 2px solid #2DB338;
  font-size: 1.6rem;
  font-weight: 700;
}
.mz-side-title__en { font-size: 1.1rem; font-weight: 500; letter-spacing: 0.18em; color: #2F7545; }
.mz-archive__link {
  display: flex;
  justify-content: space-between;
  padding: 12px 4px;
  border-bottom: 1px solid #e3ece1;
  color: #26302a;
  font-size: 1.5rem;
}
.mz-archive__link:hover { color: #2F7545; }
.mz-archive__count { color: #4f5b53; }

.mz-entry__meta { display: flex; align-items: center; gap: 12px; font-size: 1.4rem; }
.mz-entry__date { letter-spacing: 0.08em; color: #4f5b53; }
.mz-entry__title {
  margin: 16px 0 32px;
  padding-bottom: 24px;
  border-bottom: 1px solid #dcebd8;
  font-size: clamp(2.2rem, 2.8vw, 3rem);
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.04em;
}
.mz-entry__img { aspect-ratio: 16 / 10; overflow: hidden; margin-bottom: 36px; background: #EAF2E7; }
.mz-entry__img img { width: 100%; height: 100%; object-fit: cover; }
.mz-entry__body { display: flex; flex-direction: column; gap: 22px; line-height: 2.1; }
.mz-entry__body img { height: auto; }
.mz-entry__back {
  display: flex;
  justify-content: center;
  margin-top: 56px;
  padding-top: 32px;
  border-top: 1px solid #dcebd8;
}

/* ==========================================================================
   お問い合わせ
   ========================================================================== */
.mz-form__inner {
  display: flex;
  flex-direction: column;
  border-top: 2px solid #2DB338;
}
.mz-form__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 24px;
  padding: 22px 0;
  border-bottom: 1px solid #dcebd8;
}
.mz-form__row--top { align-items: flex-start; }
.mz-form__label {
  display: flex;
  flex: 0 0 200px;
  align-items: center;
  gap: 10px;
  font-weight: 700;
}
.mz-form__row--top .mz-form__label { padding-top: 12px; }
.mz-form__req {
  padding: 0 8px;
  border-radius: 4px;
  background: #2F7545;
  color: #fff;
  font-size: 1.1rem;
  line-height: 20px;
}
.mz-form__req--any { background: #e3ece1; color: #3d4841; }
.form-input.mz-form__input {
  flex: 999 1 300px;
  width: auto;
  min-width: 0;
  height: 52px;
  padding: 0 16px;
  border: 1px solid #c9dcc6;
  border-radius: 6px;
  background: #FAFCF9;
  font-family: inherit;
  font-size: 1.6rem;
  color: #26302a;
}
.form-input.mz-form__input:focus { border-color: #2DB338; outline: none; }
.form-input.mz-form__textarea { height: auto; padding: 14px 16px; line-height: 1.8; resize: vertical; }
.mz-form__submit { display: flex; justify-content: center; margin-top: 44px; }

.mz-faq { display: flex; flex-direction: column; gap: 16px; }
.mz-faq__item { padding: clamp(22px, 3vw, 32px); border-radius: 4px; background: #fff; }
.mz-faq__q { display: flex; gap: 14px; margin-bottom: 14px; font-size: 1.7rem; font-weight: 700; }
.mz-faq__a { display: flex; gap: 14px; padding-top: 14px; border-top: 1px dashed #c9dcc6; }
.mz-faq__mark { font-size: 2.2rem; line-height: 1.3; color: #2DB338; }
.mz-faq__mark--a { color: #2F7545; }

/* CMSフォーム出力の上書き（CMS側のスタイルに勝つため !important） */
.submit-btn {
  display: block !important;
  min-width: 260px !important;
  margin: 44px auto 0 !important;
  padding: 18px 64px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: #2F7545 !important;
  color: #fff !important;
  font-family: inherit !important;
  font-size: 1.6rem !important;
  font-weight: 700 !important;
  line-height: 1.9 !important;
  letter-spacing: 0.1em !important;
  cursor: pointer !important;
  transition: background 0.3s ease !important;
}
.submit-btn:hover { background: #245c36 !important; color: #fff !important; opacity: 1 !important; }
@media (max-width: 639px) {
  .submit-btn {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 320px !important;
    padding: 16px 40px !important;
    white-space: nowrap !important;
  }
}
.form-pattern-1 dl dt:not(.pattern-exclusion) span.required::before {
  color: #fff !important;
  background: #2F7545 !important;
}

/* ==========================================================================
   ページトップボタン（共通 .page-top にアイコンを追加）
   ========================================================================== */
.page-top__link::before {
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  font-size: 1.8rem;
  content: "\f077";
}
