@charset "UTF-8";
/*
 * ======================================
 * 追加クラス一覧（共通SCSS取り込み検討用）
 * ======================================
 *
 * ▼ 土台
 * .nc-container / --1080 / --1000 / --900  - コンテナ（max-width:1400px + padding:0 40px）
 * .nc-sec-*                                - 各セクションの上下padding（実数値）
 * .nc-sechead / __en / __ja                - 英日2段セクション見出し（中央 / --left で左）
 * .nc-en-label                             - 小英字ラベル（REAL ESTATE 等）
 * .nc-arrow-link                           - 下線＋矢印のテキストリンク
 * .nc-btn / --lg / --submit                - 緑ベタ塗りボタン
 * .nc-fig                                  - 画像枠（object-fit:cover + プレースホルダ地色）
 * .nc-list-dot                             - ●付きの箇条書き（TOP事業紹介）
 * .nc-fade                                 - スクロールフェードイン（JS有効時のみ）
 * .nc-mb-{n} / .nc-mt-{n}                  - 共通 utility に無い刻みの余白
 *
 * ▼ 元データ（claude-design-output）に assets/style.css が含まれていないため
 *   下記のみ実装側で決めた値（受領後に差し替え可能）
 *   - ヘッダー高さ：110px（スクロール時 90px）／ロゴ高さ 64px（同 52px）
 *     ※ロゴのフィルタは元データどおり無し（反転はフッターのみ）
 *   - ホバー挙動：ボタン #274d36 → #468560（0.3s）、矢印リンクは色＋矢印4px移動
 *   - 見出し等 line-height 未指定箇所：共通CSSの body 値（1.8）を継承
 *
 * ▼ 共通パーツ
 * .nc-loader / __logo                      - オープニングローダー（1セッション初回のみ）
 * .nc-header / __inner / __logo / __actions / __icon / __contact  - ヘッダー
 * .nc-nav-toggle                           - ハンバーガー（共通 .nav-toggle の見た目差分）
 * .nc-menu / __inner / __list / __item / __link / __en / __ja / __info … - 全画面メニュー
 * .nc-footer / __inner / __brand / __nav / __sns / __bottom …     - フッター
 *
 * ▼ TOPページ
 * .nc-mv / __overlay / __body / __ttl / __lead / __line           - メインビュー
 * .nc-mv__base / __slides / __slide                               - MVのクロスフェード（CMS差し替えまでの仮）
 * .nc-about / __grid / __figs / __fig-*                           - 会社紹介
 * .nc-business / __bg / __inner / __list / __row / __fig / __ttl / __txt / __link - 事業紹介
 * .nc-strength / __bg / __lead / __list / __item / __icon …       - 強み
 * .nc-insta / __grid / __body / __figs                            - Instagram
 * .nc-contact / __lead / __form / __row / __label / __req / __note … - お問い合わせ
 * .nc-privacy / __head / __body …                                 - 個人情報保護方針（共通 .accordion の差分）
 *
 * ▼ 下層ページ
 * .nc-hero / __img / __body / __en / __ja                         - ページヒーロー
 * .nc-msg / __ttl / __txt                                         - 導入メッセージ
 * .nc-dl / __row / __dt / __dd                                    - 会社情報の定義リスト
 * .nc-access / __grid / __map                                     - アクセス
 * .nc-biz / __grid / __figs / __list / __item                     - 事業内容（下層）
 * .nc-window / __ttl / __grid / __item / __thumb                  - 「4つの窓口」ボックス
 * .nc-cta-band / __txt                                            - 下層下部のCTA帯
 * .nc-recruit-* / .nc-position / .nc-step                         - 採用情報
 *
 * ======================================
 * 共通SCSSに不足していたもの（5分類）
 * ======================================
 *
 * ・値の粒度不足
 *   - section padding：104 / 110 / 126 / 130 / 96 / 74 / 34px 等、共通の
 *     $section_padding(120) と utility(5刻み〜120) では表現できない実数値が
 *     デザイン全体で使われている → セクション単位のクラスで実数指定
 *   - font-size：13/15/17/19/22/26/28/30/32/34/46/56px。共通 fz-* は
 *     0.1rem 刻みだが 13/15/17/19 等の中間値・46/56 の見出し値が不足
 *   - letter-spacing：0.24em / 0.26em / 0.28em / 0.3em が ls-* に無い
 *   - line-height：2.05 / 2.15 / 2.2 / 2.35 / 1.62 / 1.85 / 1.9 が lh-* に無い
 *   - gap：56 / 64 / 70 / 80 / 90px が gap-* に無い
 *
 * ・指定方向不足
 *   - grid-template-columns の非等分比率（0.85fr 1fr / 1.05fr 1fr /
 *     1.15fr 1fr / 1.2fr 1fr 1fr / 240px 1fr / 200px 1fr）。共通は
 *     grid-2〜4 の等分と column2 の %比率のみ
 *
 * ・状態不足
 *   - なし（hover は共通の hover-* + transition で表現できる範囲）
 *
 * ・構造不足
 *   - ヘッダー右上の「緑の箱」（ロゴ横並び＋ヘッダー上端から10px下げて
 *     ぶら下がる帯）は header__right では表現できない
 *   - 全画面メニューが2カラム（ナビ＋会社情報）構成。共通 sp-nav は
 *     1カラム中央揃え前提
 *   - フッターの3カラム（1.2fr 1fr 1fr）＋QRブロック。共通 footer-body は
 *     35%/60% の2カラム
 *
 * ・装飾パターン不足
 *   - セクション全面に写真を opacity:0.34 / 0.55 で敷く背景（bg-photo-* は
 *     片側配置のみで全面 opacity 指定ができない）
 *
 */

/* ==========================================================================
   0. 土台
   ========================================================================== */
:root {
  --nc-green: #274d36;
  --nc-green-mid: #468560;
  --nc-green-light: #5e9c78;
  --nc-green-dark: #1e3d2b;
  --nc-ink: #2f4243;
  --nc-txt: #433430;
  --nc-txt-sub: #5d5751;
  --nc-txt-light: #8b8378;
  --nc-white: #fcfcfc;
  --nc-bg-sub: #f7f7f7;
  --nc-bg-sub2: #f2f2f0;
  --nc-bg-gray: #eaeae8;
  --nc-line: #e2ded7;
  --nc-line2: #ddd8d3;
  --nc-ph: #e9ebe6;
  --nc-gold: #e9e19a;
  --nc-ja: "Zen Old Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --nc-en: "Cormorant", "Times New Roman", serif;
  --nc-header-h: 110px;
  --nc-header-h-fixed: 90px;
}

/* ベーシックプラン：PC固定幅 */
body {
  min-width: 1280px;
  color: var(--nc-txt);
}

/* コンテナ（実数値：max-width 1400px / 左右 padding 40px） */
.nc-container {
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 40px;
}
.nc-container--1080 { max-width: 1080px; }
.nc-container--1000 { max-width: 1000px; }
.nc-container--900  { max-width: 900px; }

/* セクション見出し（英字＋日本語） */
.nc-sechead { text-align: center; }
.nc-sechead--left { text-align: left; }
.nc-sechead__en {
  margin: 0 0 10px;
  font-family: var(--nc-en);
  font-weight: 400;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.1em;
  color: var(--nc-green);
}
.nc-sechead__en--md {
  margin: 0 0 8px;
  font-size: 32px;
}
.nc-sechead__en--sm { font-size: 34px; }
.nc-sechead__ja {
  margin: 0;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 13px;
  letter-spacing: 0.3em;
  color: var(--nc-txt-light);
}

/* 小英字ラベル（REAL ESTATE / TELECOM / ENTRY） */
.nc-en-label {
  margin: 0 0 16px;
  font-family: var(--nc-en);
  font-weight: 400;
  font-size: 14px;
  line-height: 1;
  letter-spacing: 0.28em;
  color: var(--nc-green-mid);
}

/* 下線＋矢印リンク */
.nc-arrow-link {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--nc-green);
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: var(--nc-green);
  transition: color 0.3s ease, border-color 0.3s ease;
}
.nc-arrow-link svg { transition: transform 0.3s ease; }
.nc-arrow-link:hover {
  opacity: 1;
  color: var(--nc-green-mid);
  border-bottom-color: var(--nc-green-mid);
}
.nc-arrow-link:hover svg { transform: translateX(4px); }
.nc-arrow-link--sm {
  gap: 14px;
  padding-bottom: 10px;
  font-size: 13px;
}

/* 緑ベタ塗りボタン */
.nc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  height: 56px;
  padding: 0 40px;
  background: var(--nc-green);
  color: var(--nc-white);
  font-family: var(--nc-ja);
  font-size: 13px;
  letter-spacing: 0.18em;
  white-space: nowrap;
  border: 0;
  cursor: pointer;
  transition: background 0.3s ease;
}
.nc-btn:hover {
  opacity: 1;
  background: var(--nc-green-mid);
}
.nc-btn--lg {
  height: 62px;
  padding: 0 52px;
  font-size: 14px;
  letter-spacing: 0.2em;
}
.nc-btn--submit {
  height: 62px;
  padding: 0 76px;
  font-size: 15px;
  letter-spacing: 0.24em;
}

/* 画像枠（プレースホルダ地色 + object-fit） */
.nc-fig {
  overflow: hidden;
  background: var(--nc-ph);
}
.nc-fig img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* スクロールフェードイン（JS有効時のみ発動） */
.js .nc-fade {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}
.js .nc-fade.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ==========================================================================
   1. ヘッダー（共通 .header-sticky の見た目差分）
   ========================================================================== */
.nc-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  min-width: 1280px;
  height: var(--nc-header-h);
  display: flex;
  align-items: center;
  background: transparent;
  box-shadow: none;
  z-index: 50;
  transition: height 0.35s ease, background 0.3s ease;
}
.nc-header--solid { background: var(--nc-white); }
.nc-header.is-fixed {
  position: fixed;
  height: var(--nc-header-h-fixed);
  background: transparent;
  box-shadow: none;
}
.nc-header__inner {
  width: 96%;
  max-width: none;
  height: 100%;
  padding: 0;
  margin: 0 auto;
  flex: 0 0 auto;
}
.nc-header__logo {
  display: flex;
  align-items: center;
  gap: 14px;
}
.nc-header__logo img {
  height: 64px;
  width: auto;
  display: block;
  transition: height 0.35s ease;
}
.nc-header.is-fixed .nc-header__logo img { height: 52px; }

.nc-header__actions {
  display: flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  height: auto;
  margin-top: 10px;
  padding: 16px 22px;
  background: var(--nc-green);
}
.nc-header__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: var(--nc-white);
  transition: opacity 0.3s ease;
}
.nc-header__icon:hover { opacity: 0.65; }
.nc-header__contact {
  display: flex;
  align-items: center;
  height: 46px;
  padding: 0 8px;
  color: var(--nc-white);
  font-family: var(--nc-ja);
  font-size: 13px;
  letter-spacing: 0.16em;
  transition: opacity 0.3s ease;
}
.nc-header__contact:hover { opacity: 0.65; }

/* ハンバーガー（共通 .nav-toggle の見た目差分） */
.nc-nav-toggle {
  display: flex;
  position: static;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 44px;
  height: 44px;
  margin-left: 10px;
  background: transparent;
  backdrop-filter: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
.nc-nav-toggle .nav-toggle__line {
  position: static;
  display: block;
  width: 26px;
  height: 1px;
  background: var(--nc-white);
  transform: none;
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.nc-nav-toggle.is-active .nav-toggle__line:nth-child(1) {
  top: auto;
  transform: translateY(8px) rotate(45deg);
}
.nc-nav-toggle.is-active .nav-toggle__line:nth-child(2) { opacity: 0; }
.nc-nav-toggle.is-active .nav-toggle__line:nth-child(3) {
  top: auto;
  transform: translateY(-8px) rotate(-45deg);
}

/* ==========================================================================
   2. 全画面メニュー（共通 .sp-nav の見た目差分）
   ========================================================================== */
.nc-menu {
  position: fixed;
  inset: 0;
  z-index: 45;
  background: rgba(252, 252, 252, 0.985);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  overflow-y: auto;
  padding: 172px 0 60px;
}
.nc-menu__inner {
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  flex: 0 0 auto;
  padding: 0 40px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 90px;
  align-items: center;
}
.nc-menu__list {
  display: flex;
  flex-direction: column;
  width: auto;
  max-width: none;
  text-align: left;
  border-top: 1px solid var(--nc-line);
}
.nc-menu__item {
  border-bottom: 1px solid var(--nc-line);
  border-top: 0;
}
.nc-menu__item:first-child { border-top: 0; }
.nc-menu__link {
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  gap: 28px;
  padding: 22px 4px;
  color: var(--nc-green);
  font-weight: 400;
  transition: opacity 0.3s ease;
}
.nc-menu__link::after { content: none; }
.nc-menu__link:hover {
  background: transparent;
  opacity: 0.6;
}
.nc-menu__en {
  font-family: var(--nc-en);
  font-size: 28px;
  line-height: 1.2;
  letter-spacing: 0.1em;
  color: var(--nc-green);
  opacity: 1;
  margin-right: 0;
  padding-left: 0;
}
.nc-menu__ja {
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.24em;
  color: var(--nc-txt);
}
.nc-menu__info {
  margin-top: 0;
  width: auto;
  max-width: none;
  text-align: left;
}
.nc-menu__logo {
  height: 70px;
  width: auto;
  display: block;
  margin-bottom: 36px;
}
.nc-menu__address {
  margin: 0 0 22px;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 2.1;
  letter-spacing: 0.06em;
  color: var(--nc-txt);
}
.nc-menu__hours {
  margin: 0 0 34px;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2.1;
  letter-spacing: 0.06em;
  color: var(--nc-txt-light);
}
.nc-menu__link-sm {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--nc-en);
  font-size: 14px;
  letter-spacing: 0.18em;
  color: var(--nc-green);
}
.nc-menu__link-sm--mb { margin-bottom: 22px; }

/* ==========================================================================
   3. フッター
   ========================================================================== */
.nc-footer {
  background: var(--nc-green);
  padding: 80px 0 0;
}
.nc-footer__inner {
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  flex: 0 0 auto;
  padding: 0 40px 70px;
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 60px;
}
.nc-footer__logo {
  height: 64px;
  width: auto;
  display: block;
  margin-bottom: 28px;
  filter: brightness(0) invert(1);
}
.nc-footer__address {
  margin: 0 0 20px;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2.1;
  letter-spacing: 0.06em;
  color: rgba(252, 252, 252, 0.92);
}
.nc-footer__hours {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 13px;
  line-height: 2.1;
  letter-spacing: 0.06em;
  color: rgba(252, 252, 252, 0.66);
}
.nc-footer__nav {
  display: flex;
  flex-direction: column;
  gap: 22px;
  padding-top: 8px;
  align-items: flex-start;
}
.nc-footer__nav-link {
  font-family: var(--nc-en);
  font-size: 15px;
  letter-spacing: 0.14em;
  color: var(--nc-gold);
}
.nc-footer__nav-ja {
  font-family: var(--nc-ja);
  font-size: 12px;
  letter-spacing: 0.16em;
  color: rgba(252, 252, 252, 0.9);
  margin-left: 14px;
}
.nc-footer__contact {
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-items: flex-start;
  margin-top: 14px;
  padding-top: 26px;
  border-top: 1px solid rgba(252, 252, 252, 0.3);
  width: 100%;
}
.nc-footer__contact-link {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(252, 252, 252, 0.7);
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: var(--nc-white);
}
.nc-footer__contact-link svg { transition: transform 0.3s ease; }
.nc-footer__contact-link:hover svg { transform: translateX(4px); }
.nc-footer__contact-note {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 13px;
  line-height: 2;
  letter-spacing: 0.06em;
  color: rgba(252, 252, 252, 0.7);
}
.nc-footer__sns {
  padding-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 26px;
  align-items: flex-start;
}
.nc-footer__sns-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--nc-en);
  font-size: 14px;
  letter-spacing: 0.18em;
  color: var(--nc-gold);
}
.nc-footer__qr-row {
  display: flex;
  align-items: center;
  gap: 18px;
}
.nc-footer__qr {
  width: 104px;
  height: 104px;
  background: var(--nc-white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--nc-en);
  font-size: 11px;
  letter-spacing: 0.16em;
  color: #9aa39a;
  text-align: center;
  line-height: 1.6;
}
.nc-footer__qr-note {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 13px;
  line-height: 2;
  letter-spacing: 0.06em;
  color: rgba(252, 252, 252, 0.7);
}
.nc-footer__bottom {
  background: var(--nc-green-dark);
  padding: 22px 0;
}
.nc-footer__copyright {
  margin: 0;
  text-align: center;
  font-family: var(--nc-en);
  font-size: 13px;
  letter-spacing: 0.18em;
  color: rgba(252, 252, 252, 0.8);
}

/* ==========================================================================
   4. 余白の刻み補完（共通 utility に無い実数値）
   ========================================================================== */
.nc-mb-8  { margin-bottom: 8px; }
.nc-mb-12 { margin-bottom: 12px; }
.nc-mb-14 { margin-bottom: 14px; }
.nc-mb-16 { margin-bottom: 16px; }
.nc-mb-18 { margin-bottom: 18px; }
.nc-mb-22 { margin-bottom: 22px; }
.nc-mb-24 { margin-bottom: 24px; }
.nc-mb-26 { margin-bottom: 26px; }
.nc-mb-28 { margin-bottom: 28px; }
.nc-mb-32 { margin-bottom: 32px; }
.nc-mb-34 { margin-bottom: 34px; }
.nc-mb-36 { margin-bottom: 36px; }
.nc-mb-44 { margin-bottom: 44px; }
.nc-mb-46 { margin-bottom: 46px; }
.nc-mb-52 { margin-bottom: 52px; }
.nc-mb-58 { margin-bottom: 58px; }
.nc-mb-74 { margin-bottom: 74px; }

/* ==========================================================================
   5. TOP：メインビュー
   ========================================================================== */
.nc-mv {
  position: relative;
  height: 100vh;
  min-height: 700px;
  overflow: hidden;
  background: var(--nc-ph);
}
.nc-mv #slideshow {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.nc-mv #slideshow .swiper-slide,
.nc-mv #slideshow .main_slider__inner {
  width: 100%;
  height: 100%;
}
.nc-mv #slideshow img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* --------------------------------------------------------------------------
 * MVスライド（CMSスライダーに差し替えるまでの仮表示）
 *   ・切り替えはクロスフェードのみ（スライドイン・ズームは使わない）
 *   ・21秒で3枚を一巡＝1枚あたり7秒、うち1.4秒がクロスフェード
 *   ・Swiper JS は初期化しない。重ね配置は .nc-mv__slide 側だけに当てているので、
 *     CMS差し替え（このブロックごと削除）後は .swiper-slide の基本指定だけが残る
 *
 *   delayの決め方：1枚目だけフェードイン済みの位置（-1.4s）から始めることで、
 *   ページを開いた瞬間から1枚目が出ている状態にする。2枚目以降は 5.6s → 12.6s と
 *   7秒間隔で送る。※1枚目を 0s にすると開いた直後に切り替わってしまうので注意
 * -------------------------------------------------------------------------- */
.nc-mv__base {
  position: absolute;
  inset: 0;
}
.nc-mv__slides {
  position: absolute;
  inset: 0;
}
.nc-mv__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  animation: nc-mvfade 21s linear infinite both;
}
/* 画像の読み込みが済むまでの地色（デザインデータの指定値） */
.nc-mv__slide--1 { background: #e6e8e2; animation-delay: -1.4s; }  /* 久留米の街並み */
.nc-mv__slide--2 { background: #dfe4dd; animation-delay: 5.6s; }   /* 筑後川 */
.nc-mv__slide--3 { background: #e3e6e0; animation-delay: 12.6s; }  /* 相談風景 */

@keyframes nc-mvfade {
  0%      { opacity: 0; }
  6.667%  { opacity: 1; }   /* 1.4s：フェードイン完了 */
  33.333% { opacity: 1; }   /* 7.0s：表示終わり */
  40%     { opacity: 0; }   /* 8.4s：フェードアウト完了 */
  100%    { opacity: 0; }
}

/* 動きを抑える設定の環境では切り替えず、1枚目だけを表示する */
@media (prefers-reduced-motion: reduce) {
  .nc-mv__slide { animation: none; }
  .nc-mv__slide--1 { opacity: 1; }
}

.nc-mv__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(47, 66, 67, 0.68) 0%, rgba(47, 66, 67, 0.4) 46%, rgba(47, 66, 67, 0.06) 78%);
  pointer-events: none;
}
.nc-mv__body {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding-top: 152px;
  padding-bottom: 60px;
}
.nc-mv__inner { animation: nc-mvrise 1.1s ease-out both; }
.nc-mv__ttl {
  margin: 0;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 56px;
  line-height: 1.62;
  letter-spacing: 0.06em;
  color: var(--nc-white);
  text-wrap: pretty;
}
.nc-mv__lead {
  margin: 34px 0 0;
  font-family: var(--nc-ja);
  font-size: 17px;
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: rgba(252, 252, 252, 0.92);
}
.nc-mv__line {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: rgba(252, 252, 252, 0.35);
}
@keyframes nc-mvrise {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ==========================================================================
   6. TOP：会社紹介
   ========================================================================== */
.nc-sec-about {
  background: var(--nc-white);
  padding: 130px 0 120px;
}
.nc-about__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 90px;
  align-items: center;
}
.nc-about__ttl {
  margin: 0 0 34px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 30px;
  line-height: 1.9;
  letter-spacing: 0.06em;
  color: var(--nc-ink);
  text-wrap: pretty;
}
.nc-about__txt {
  margin: 0 0 20px;
  font-family: var(--nc-ja);
  font-size: 16px;
  line-height: 2.35;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
  text-wrap: pretty;
}
.nc-about__txt--last { margin-bottom: 0; }
.nc-about__figs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.nc-about__fig { height: 300px; }
.nc-about__fig--offset {
  height: 300px;
  margin-top: 56px;
}
.nc-about__fig--wide {
  height: 220px;
  grid-column: 1 / -1;
}

/* ==========================================================================
   7. TOP：事業内容
   ========================================================================== */
.nc-sec-business {
  position: relative;
  padding: 120px 0 126px;
  background: var(--nc-white);
}
.nc-business__bg {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0.34;
  pointer-events: none;
}
.nc-business__inner { position: relative; }
.nc-business__list {
  display: flex;
  flex-direction: column;
  gap: 64px;
}
.nc-business__row {
  display: grid;
  grid-template-columns: 0.85fr 1fr;
  gap: 56px;
  align-items: center;
}
.nc-business__fig { aspect-ratio: 4/3; }
.nc-business__ttl {
  margin: 0 0 26px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 28px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-business__txt {
  margin: 0 0 30px;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 2.2;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
  text-wrap: pretty;
}
.nc-list-dot {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.nc-list-dot li {
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.06em;
  color: var(--nc-txt-sub);
  display: flex;
  align-items: baseline;
  gap: 12px;
}
.nc-list-dot i {
  font-size: 6px;
  color: var(--nc-green-light);
  position: relative;
  top: -3px;
}
.nc-business__link { margin-top: 40px; }

/* ==========================================================================
   8. TOP：強み
   ========================================================================== */
.nc-sec-strength {
  position: relative;
  padding: 126px 0 130px;
  background: var(--nc-white);
}
.nc-strength__bg {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0.55;
  pointer-events: none;
}
.nc-strength__inner { position: relative; }
.nc-strength__lead {
  margin: 0 auto 70px;
  max-width: 980px;
  text-align: center;
  font-family: var(--nc-ja);
  font-size: 19px;
  line-height: 2.35;
  letter-spacing: 0.08em;
  color: var(--nc-txt);
  text-wrap: balance;
}
.nc-strength__list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px;
}
.nc-strength__item {
  background: transparent;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.nc-strength__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 104px;
  height: 104px;
  border: 1px solid #cfd6cd;
  border-radius: 50%;
  margin-bottom: 30px;
}
.nc-strength__icon svg { display: block; }
.nc-strength__ttl {
  margin: 0 0 14px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 18px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-strength__txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2.05;
  letter-spacing: 0.06em;
  color: var(--nc-txt-sub);
  text-wrap: pretty;
}

/* ==========================================================================
   9. TOP：Instagram
   ========================================================================== */
.nc-sec-insta {
  background: var(--nc-white);
  padding: 110px 0;
}
.nc-insta__grid {
  display: grid;
  grid-template-columns: 1fr 1.15fr;
}
.nc-insta__body {
  padding: 0 56px 0 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.nc-insta__txt {
  margin: 0 0 40px;
  font-family: var(--nc-ja);
  font-size: 16px;
  line-height: 2.3;
  letter-spacing: 0.06em;
  color: var(--nc-txt);
}
.nc-insta__btn-row {
  display: flex;
  align-items: center;
  gap: 28px;
}
.nc-insta__figs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: start;
  align-self: center;
}
.nc-insta__fig {
  aspect-ratio: 1/1;
  background: #f2f3f0;
}

/* ==========================================================================
   10. TOP：お問い合わせ
   ========================================================================== */
.nc-sec-contact {
  background: var(--nc-bg-sub);
  padding: 120px 0 130px;
  border-top: 1px solid var(--nc-line);
}
.nc-contact__lead {
  margin: 0 auto 58px;
  text-align: center;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 2.2;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
}
.nc-form {
  display: flex;
  flex-direction: column;
  gap: 30px;
}
.nc-form__row {
  display: grid;
  grid-template-columns: 200px 1fr;
  align-items: center;
  gap: 24px;
}
.nc-form__row--top { align-items: start; }
.nc-form__label {
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.14em;
  color: var(--nc-ink);
}
.nc-form__label--top { padding-top: 16px; }
.nc-form__req {
  color: var(--nc-green-mid);
  margin-left: 8px;
  font-size: 11px;
}
.nc-form__input,
.nc-form__textarea {
  width: 100%;
  border: 1px solid var(--nc-line2);
  background: var(--nc-white);
  border-radius: 0;
  font-size: 15px;
  font-family: inherit;
  color: var(--nc-txt);
  outline: none;
  transition: border-color 0.3s ease;
}
.nc-form__input {
  height: 52px;
  padding: 0 18px;
}
.nc-form__textarea {
  padding: 16px 18px;
  line-height: 1.9;
  resize: vertical;
}
.nc-form__input:focus,
.nc-form__textarea:focus { border-color: var(--nc-green-mid); }
.nc-form__submit-row {
  display: flex;
  justify-content: center;
  margin-top: 18px;
}
.nc-form__note {
  margin: 6px 0 0;
  text-align: center;
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--nc-txt-light);
}

/* --------------------------------------------------------------------------
   CMSメールフォーム（cms_ajax / form-pattern-1）を現行デザインに合わせる
   ※CMSの mail-form.css はJSで後から読み込まれるため、
     .nc-cmsform を先頭に付けて詳細度で上書きしている（順番では勝てない）
   -------------------------------------------------------------------------- */
.nc-cmsform .form-contents {
  padding: 0;
  margin: 0;
}
.nc-cmsform .form-pattern-1 { background: transparent; }

/* 行レイアウト：label 200px + 入力欄（旧 .nc-form__row と同じ） */
.nc-cmsform .form-contents form dl {
  display: grid;
  grid-template-columns: 200px 1fr;
  align-items: start;
  column-gap: 24px;
  row-gap: 30px;
  margin: 0 0 48px;
}
.nc-cmsform .form-contents form dl dt:not(.pattern-exclusion) {
  float: none;
  width: auto;
  margin: 0;
  padding: 16px 0 0;
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.14em;
  line-height: 1.5;
  color: var(--nc-ink);
}
.nc-cmsform .form-contents form dl dd:not(.pattern-exclusion) {
  width: auto;
  margin: 0;
  padding: 0;
  border-bottom: 0;
  line-height: 1.5;
}

/* 必須ラベル：赤バッジ → ラベル右のグリーン小文字 */
.nc-cmsform .form-contents form dl dt:not(.pattern-exclusion) span.required {
  display: inline-flex;
  align-items: center;
}
.nc-cmsform .form-pattern-1 dl dt:not(.pattern-exclusion) span.required::before {
  order: 2;
  content: '必須';
  top: 0;
  margin: 0 0 0 8px;
  padding: 0;
  background: transparent;
  border-radius: 0;
  color: var(--nc-green-mid);
  font-size: 11px;
  letter-spacing: 0.1em;
}

/* 入力欄（旧 .nc-form__input / __textarea と同じ） */
.nc-cmsform .form-contents dd:not(.pattern-exclusion) .textarea,
.nc-cmsform .form-contents dd:not(.pattern-exclusion) .textarea-serect {
  width: 100%;
  border: 1px solid var(--nc-line2);
  border-radius: 0;
  background: var(--nc-white);
  color: var(--nc-txt);
  font-family: inherit;
  font-size: 15px;
  outline: none;
  transition: border-color 0.3s ease;
}
.nc-cmsform .form-contents dd:not(.pattern-exclusion) input.textarea {
  height: 52px;
  padding: 0 18px;
}
.nc-cmsform .form-contents dd:not(.pattern-exclusion) .textarea-serect {
  height: 52px;
  padding: 0 14px;
}
.nc-cmsform .form-contents dd:not(.pattern-exclusion) textarea.textarea {
  min-height: 220px;
  padding: 16px 18px;
  line-height: 1.9;
  resize: vertical;
}
.nc-cmsform .form-contents dd:not(.pattern-exclusion) .textarea:focus,
.nc-cmsform .form-contents dd:not(.pattern-exclusion) .textarea-serect:focus {
  border-color: var(--nc-green-mid);
}
.nc-cmsform .form-contents dd:not(.pattern-exclusion) .textarea::placeholder {
  color: var(--nc-txt-light);
  font-size: 14px;
}

/* 送信ボタン（旧 .nc-btn--submit と同じ） */
.nc-cmsform .form-contents .submit-btn,
.nc-cmsform .form-pattern-1 .submit-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  height: 62px;
  padding: 0 76px;
  margin: 18px auto 0;
  background: var(--nc-green);
  border: 0;
  border-radius: 0;
  color: var(--nc-white);
  font-family: var(--nc-ja);
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 0.24em;
  transition: background 0.3s ease;
}
.nc-cmsform .form-pattern-1 .submit-btn::before { content: none; }
.nc-cmsform .form-pattern-1 .submit-btn:hover,
.nc-cmsform .form-pattern-1 :not(.pattern-exclusion) button:hover {
  background: var(--nc-green-mid);
}

/* エラー表示 */
.nc-cmsform .form-contents .form-err-msg {
  margin: 0 0 30px;
  padding: 18px 20px;
  border: 1px solid #d98b8b;
  background: var(--nc-white);
  color: #c0392b;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 1.9;
}

/* 送信完了メッセージ */
.nc-cmsform .form-pattern-1 .form-thanks-msg {
  padding: 70px 40px;
  border: 1px solid var(--nc-line2);
  background: var(--nc-white);
}
.nc-cmsform .form-contents .form-thanks-msg p {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 2.2;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
}
.nc-cmsform .form-contents .form-thanks-msg .back-home-btn {
  width: auto;
  margin: 36px auto 0;
}
.nc-cmsform .form-pattern-1 .form-thanks-msg .back-home-btn a {
  width: fit-content;
  margin: 0 auto;
  padding: 0 52px;
  height: 62px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 0;
  background: var(--nc-green);
  color: var(--nc-white);
  font-family: var(--nc-ja);
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 0.2em;
}
.nc-cmsform .form-pattern-1 .form-thanks-msg .back-home-btn a:hover {
  background: var(--nc-green-mid);
}

/* 個人情報保護方針（共通 .accordion の見た目差分） */
.nc-privacy {
  margin-top: 70px;
  border: 0;
  border-top: 1px solid var(--nc-line2);
  border-bottom: 1px solid var(--nc-line2);
  border-radius: 0;
  overflow: visible;
}
.nc-privacy__head {
  width: 100%;
  background: transparent;
  border: 0;
  padding: 28px 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-align: left;
  font-size: 14px;
  font-weight: 400;
}
.nc-privacy__head:hover { background: transparent; }
.nc-privacy__head::after { content: none; }
.nc-privacy__head-inner {
  display: flex;
  align-items: baseline;
  gap: 20px;
}
.nc-privacy__en {
  font-family: var(--nc-en);
  font-size: 20px;
  letter-spacing: 0.14em;
  color: var(--nc-green);
}
.nc-privacy__ja {
  font-family: var(--nc-ja);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: var(--nc-txt);
}
.nc-privacy__icon {
  font-size: 14px;
  color: var(--nc-green);
}
.nc-privacy.is-open .nc-privacy__icon::before { content: "\f068"; }
.nc-privacy__body {
  border-top: 0;
  background: transparent;
  padding: 4px 4px 42px;
}
.nc-privacy.is-open .nc-privacy__body {
  display: flex;
  flex-direction: column;
  gap: 30px;
}
.nc-privacy__txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2.15;
  letter-spacing: 0.06em;
  color: var(--nc-txt);
  text-wrap: pretty;
}
.nc-privacy__sub-ttl {
  margin: 0 0 12px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 15px;
  letter-spacing: 0.12em;
  color: var(--nc-ink);
}
.nc-privacy__sub-txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2.15;
  letter-spacing: 0.06em;
  color: var(--nc-txt-sub);
  text-wrap: pretty;
}
.nc-privacy__sign {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 13px;
  line-height: 2.1;
  letter-spacing: 0.06em;
  color: var(--nc-txt-light);
}

/* 上マージンの刻み補完 */
.nc-mt-14 { margin-top: 14px; }
.nc-mt-34 { margin-top: 34px; }
.nc-mt-40 { margin-top: 40px; }
.nc-mt-44 { margin-top: 44px; }
.nc-mt-46 { margin-top: 46px; }

/* ==========================================================================
   11. 下層：ページヒーロー
   ========================================================================== */
.nc-hero {
  position: relative;
  height: 62vh;
  min-height: 460px;
  background: var(--nc-bg-sub2);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.nc-hero__fig {
  position: absolute;
  right: 0;
  top: 0;
  width: 46%;
  height: 100%;
}
.nc-hero__body {
  position: relative;
  padding: 152px 40px 70px;
}
.nc-hero__en {
  margin: 0 0 12px;
  font-family: var(--nc-en);
  font-weight: 400;
  font-size: 46px;
  line-height: 1;
  letter-spacing: 0.1em;
  color: var(--nc-green);
}
.nc-hero__ja {
  margin: 0;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 14px;
  letter-spacing: 0.3em;
  color: var(--nc-txt-light);
}

/* ==========================================================================
   12. 会社概要
   ========================================================================== */
.nc-sec-msg {
  background: var(--nc-white);
  padding: 110px 0 100px;
}
.nc-msg { text-align: center; }
.nc-msg__ttl {
  margin: 0 0 34px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 30px;
  line-height: 1.9;
  letter-spacing: 0.08em;
  color: var(--nc-ink);
  text-wrap: pretty;
}
.nc-msg__txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 18px;
  line-height: 2.4;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
}
.nc-msg__txt--2 { margin: 34px 0 0; }

.nc-sec-profile {
  background: var(--nc-bg-sub);
  padding: 104px 0 110px;
  border-top: 1px solid var(--nc-line);
}
.nc-dl {
  margin: 0;
  border-top: 1px solid var(--nc-line2);
}
.nc-dl__row {
  display: grid;
  grid-template-columns: 240px 1fr;
  border-bottom: 1px solid var(--nc-line2);
}
.nc-dl__dt {
  padding: 26px 0;
  font-family: var(--nc-ja);
  font-size: 15px;
  letter-spacing: 0.16em;
  color: var(--nc-ink);
}
.nc-dl__dd {
  margin: 0;
  padding: 26px 0;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 1.9;
  letter-spacing: 0.06em;
  color: var(--nc-txt);
}

.nc-sec-access {
  background: var(--nc-white);
  padding: 100px 0 110px;
}
.nc-access__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 70px;
  align-items: start;
}
.nc-access__address {
  margin: 0 0 28px;
  font-family: var(--nc-ja);
  font-size: 16px;
  line-height: 2.2;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
}
.nc-access__hours {
  margin: 0 0 34px;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 2.2;
  letter-spacing: 0.07em;
  color: var(--nc-txt-sub);
}
.nc-access__map {
  height: 380px;
  border: 1px solid var(--nc-line);
  border-radius: 0;
}

/* ==========================================================================
   13. 事業内容（下層）
   ========================================================================== */
.nc-sec-biz-1 {
  background: var(--nc-white);
  padding: 110px 0 20px;
}
.nc-sec-biz-2 {
  background: var(--nc-bg-gray);
  padding: 110px 0 120px;
}
.nc-biz__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: start;
}
.nc-biz__ttl {
  margin: 0 0 34px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 34px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-biz__txt {
  margin: 0 0 40px;
  font-family: var(--nc-ja);
  font-size: 16px;
  line-height: 2.35;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
  text-wrap: pretty;
}
.nc-biz__list {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--nc-line);
}
.nc-biz__list li {
  padding: 22px 0;
  border-bottom: 1px solid var(--nc-line);
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 1.9;
  letter-spacing: 0.06em;
  color: var(--nc-txt);
}
.nc-biz__figs {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.nc-biz__figs--offset { padding-top: 40px; }
.nc-biz__fig-lg { height: 420px; }
.nc-biz__fig-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.nc-biz__fig-sm { height: 200px; }
.nc-biz__link { margin-top: 44px; }

.nc-sec-window {
  background: var(--nc-white);
  padding: 70px 0 120px;
}
.nc-window {
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
  background: var(--nc-bg-sub);
  padding: 48px 52px;
}
.nc-window__ttl {
  margin: 0 0 36px;
  text-align: center;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 20px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-window__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 40px;
}
.nc-window__item {
  display: flex;
  align-items: center;
  gap: 18px;
}
.nc-window__thumb {
  display: block;
  width: 96px;
  height: 72px;
  flex: 0 0 auto;
}
.nc-window__label {
  font-family: var(--nc-ja);
  font-size: 15px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}

/* 下層下部のCTA帯 */
.nc-cta-band {
  background: var(--nc-bg-sub);
  padding: 96px 0;
  border-top: 1px solid var(--nc-line);
}
.nc-cta-band--gray {
  background: var(--nc-bg-sub2);
  border-top: 0;
}
.nc-cta-band__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.nc-cta-band__txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 22px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-cta-band__label {
  margin: 0 0 12px;
  font-family: var(--nc-en);
  font-size: 15px;
  line-height: 1;
  letter-spacing: 0.26em;
  color: var(--nc-green-mid);
}

/* ==========================================================================
   14. 採用情報
   ========================================================================== */
.nc-sec-recruit-msg {
  background: var(--nc-white);
  padding: 110px 0 100px;
}
.nc-recruit__grid {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: 80px;
  align-items: center;
}
.nc-recruit__ttl {
  margin: 0 0 36px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 32px;
  line-height: 1.85;
  letter-spacing: 0.07em;
  color: var(--nc-ink);
  text-wrap: pretty;
}
.nc-recruit__txt {
  margin: 0 0 22px;
  font-family: var(--nc-ja);
  font-size: 16px;
  line-height: 2.35;
  letter-spacing: 0.07em;
  color: var(--nc-txt);
  text-wrap: pretty;
}
.nc-recruit__txt--last { margin-bottom: 0; }
.nc-recruit__figs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.nc-recruit__fig { height: 280px; }
.nc-recruit__fig--offset {
  height: 280px;
  margin-top: 48px;
}

.nc-sec-position {
  background: var(--nc-bg-sub);
  padding: 104px 0 110px;
  border-top: 1px solid var(--nc-line);
}
.nc-position__list {
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--nc-line);
  border: 1px solid var(--nc-line);
}
.nc-position__item {
  background: var(--nc-white);
  padding: 44px 46px;
}
.nc-position__label {
  margin: 0 0 14px;
  font-family: var(--nc-en);
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0.26em;
  color: var(--nc-green-mid);
}
.nc-position__ttl {
  margin: 0 0 18px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 24px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-position__txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 15px;
  line-height: 2.15;
  letter-spacing: 0.06em;
  color: var(--nc-txt);
  text-wrap: pretty;
}
.nc-position__note {
  margin-top: 34px;
  padding: 26px 30px;
  background: var(--nc-white);
  border: 1px solid var(--nc-line);
}
.nc-position__note p {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2;
  letter-spacing: 0.06em;
  color: var(--nc-txt-sub);
}

.nc-sec-step {
  background: var(--nc-white);
  padding: 104px 0 110px;
}
.nc-step__list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px;
}
.nc-step__fig {
  height: 150px;
  margin-bottom: 28px;
}
.nc-step__num {
  margin: 0 0 20px;
  font-family: var(--nc-en);
  font-size: 34px;
  line-height: 1;
  letter-spacing: 0.08em;
  color: var(--nc-green-mid);
}
.nc-step__ttl {
  margin: 0 0 14px;
  font-family: var(--nc-ja);
  font-weight: 400;
  font-size: 18px;
  letter-spacing: 0.1em;
  color: var(--nc-ink);
}
.nc-step__txt {
  margin: 0;
  font-family: var(--nc-ja);
  font-size: 14px;
  line-height: 2.05;
  letter-spacing: 0.06em;
  color: var(--nc-txt-sub);
}
.nc-mb-40 { margin-bottom: 40px; }


/* ==========================================================================
   15. オープニングローダー
   ------------------------------------------------------------------------
   ロゴがふわりと現れ、じんわりズームしながら背景ごとフェードアウトする。
   ・時間・背景色・ズーム量は下の変数で調整できる
   ・JS無効でもCSSアニメーションだけで消えるようにしている（forwards）
   ・1セッションにつき初回のみ表示（head.php で html.nc-loaded を付与）
   ========================================================================== */
:root {
  --nc-loader-dur:   3.2s;                /* 表示開始〜完全に消えるまで */
  --nc-loader-bg:    var(--nc-white);     /* 背景色（緑にする場合は var(--nc-green)） */
  --nc-loader-scale: 1.18;                /* ズームの終点 */
}

.nc-loader {
  position: fixed;
  inset: 0;
  z-index: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--nc-loader-bg);
  animation: nc-loader-veil var(--nc-loader-dur) ease-in-out forwards;
}

.nc-loader__logo {
  width: auto;
  height: 108px;
  display: block;
  transform-origin: center center;
  animation: nc-loader-logo var(--nc-loader-dur) cubic-bezier(0.4, 0.08, 0.36, 1) forwards;
}

/* 背景を var(--nc-green) 等の暗色にする場合はロゴを白反転させる
.nc-loader__logo { filter: brightness(0) invert(1); } */

/* 2回目以降の表示ではローダーを出さない */
.nc-loaded .nc-loader { display: none; }

@keyframes nc-loader-logo {
  0%   { opacity: 0; transform: scale(0.94); }
  22%  { opacity: 1; }
  70%  { opacity: 1; }
  100% { opacity: 0; transform: scale(var(--nc-loader-scale)); }
}

@keyframes nc-loader-veil {
  0%, 66% { opacity: 1; visibility: visible; }
  100%    { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* 動きを抑える設定の環境では、ズームせず短くフェードするだけにする */
@media (prefers-reduced-motion: reduce) {
  .nc-loader { animation-duration: 0.8s; }
  .nc-loader__logo { animation: none; opacity: 1; }
}
