@charset "UTF-8";
/* ===== Colors (Palette) ===== */
/* メイン（Teal系） */
/* サブ（クール寄りの調和色） */
/* アクセント（暖色で補色側） */
/* モノクローム */
/* ===== Colors (Semantic) ー 実装で使う名前 ===== */
/* テキスト/背景 */
/* ブランド/リンク・ボタン */
/* アクセント（CTA/注意喚起） */
/* 枠線/分割線 */
/* ステータス */
/* フォーカス（可視リング/アクセシビリティ） */
/* シャドウ */
/* radius */
/* グラデーション */
/* 1) ブランド軸（MV/大きめ帯向け） */
/* 2) ブランド淡色（背景ソフト帯） */
/* 3) クール深み（nav/フッターやカード枠） */
/* 4) アクセント暖色（CTA/タグ） */
/* ===== Font Stacks ===== */
/* ===== Font size ===== */
/* 固定(px) */
/* 流体(clamp) — 375px〜1200pxで気持ちよく伸縮 */
/* ===== Line height ===== */
/* ===== Font Weight ===== */
/* ===== Spacing Scale (clamp) ===== */
/* セクション間余白（そのまま採用） */
/* コンポーネント内/間余白（そのまま採用） */
/* Controls */
/* ===== Layout ===== */
/* ===== breakpoints ===== */
/* ===== 1) container ===== */
/* coで呼べるミックスイン */
/* 使い方:
.inner {
  // ベース（SP想定）：幅は100%で左右20px余白
  @include mixin.container(); // デフォルト値使用
  // PCで左右30pxに上書き（maxはそのままでOK）
  @include mixin.mq(md-up) { // 768px以上
    padding-inline: v.$pad-pc; // 30pxに上書き
  }
} */
/* ===== 2) ブレイクポイント ===== */
/* mq で呼べるミックスイン */
/* ===== 3) フォント切り替え ===== */
/* 使い方:
.text-body { @include font-role(14px, 16px, 1.6, 300); } // 本文
.text-h2   { @include font-role(16px, 20px, 1.6, 600); } // 中見出し
.text-note { @include font-role(12px, 14px, 1.6, 300); } // 注釈
*/
/* 1) アニメーション：少し上にはねて、最終的に大きめで着地 */
@-webkit-keyframes btn-pop-bounce {
  0% {
    -webkit-transform: scale(1) translateY(0);
    transform: scale(1) translateY(0);
  }
  40% {
    -webkit-transform: scale(1.07) translateY(-4px);
    transform: scale(1.07) translateY(-4px);
  }
  65% {
    -webkit-transform: scale(1.03) translateY(0);
    transform: scale(1.03) translateY(0);
  }
  85% {
    -webkit-transform: scale(1.06) translateY(-2px);
    transform: scale(1.06) translateY(-2px);
  }
  100% {
    -webkit-transform: scale(1.06) translateY(0);
    transform: scale(1.06) translateY(0);
  }
}
@keyframes btn-pop-bounce {
  0% {
    -webkit-transform: scale(1) translateY(0);
    transform: scale(1) translateY(0);
  }
  40% {
    -webkit-transform: scale(1.07) translateY(-4px);
    transform: scale(1.07) translateY(-4px);
  }
  65% {
    -webkit-transform: scale(1.03) translateY(0);
    transform: scale(1.03) translateY(0);
  }
  85% {
    -webkit-transform: scale(1.06) translateY(-2px);
    transform: scale(1.06) translateY(-2px);
  }
  100% {
    -webkit-transform: scale(1.06) translateY(0);
    transform: scale(1.06) translateY(0);
  }
}
.btn-s {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 10px;
  height: 40px;
  padding: 8px 24px;
  margin: 0;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  text-decoration: none;
  border-radius: 40px;
  border: 2px solid #009092;
  background: #ffffff;
  color: #009092;
  letter-spacing: 0.02em;
  -webkit-transition: background 0.25s ease, border-color 0.25s ease,
    color 0.25s ease;
  transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
  will-change: transform;
  cursor: pointer;
  /* キーボード操作時の見え方を崩さない（必要ならフォーカスでも軽く反応） */
  /* アクセシビリティ：動きを控えめに（ユーザー設定尊重） */
}
.btn-s:hover {
  background: #e6f7f8;
  border-color: #006566;
  color: #006566;
  /* ふわっと跳ねて最終的に1.06倍で止まる */
  -webkit-animation: btn-pop-bounce 1s ease-out forwards;
  animation: btn-pop-bounce 1s ease-out forwards;
}
.btn-s:focus-visible {
  outline: 3px solid rgba(0, 144, 146, 0.35);
  outline-offset: 2px;
}
.btn-s__icon {
  margin-top: 2px;
  font-size: 22px;
  line-height: 1;
}
.btn-s__text {
  display: inline-block;
}
.btn-s--orange {
  border-color: #ff8d3b;
  background: #ffffff;
  color: #ff8d3b;
}
.btn-s--orange:hover {
  background: #f7b500;
  border-color: #f7b500;
  color: #ffffff;
  -webkit-animation: btn-pop-bounce 1s ease-out forwards;
  animation: btn-pop-bounce 1s ease-out forwards;
}
.btn-s--orange:focus-visible {
  outline: 3px solid rgba(255, 141, 59, 0.35);
  outline-offset: 2px;
}
.btn-s--green {
  border-color: #009092;
  background: #ffffff;
  color: #009092;
}
.btn-s--green:hover {
  border-color: #00b3b5;
  background: #00b3b5;
  color: #ffffff;
  -webkit-animation: btn-pop-bounce 1s ease-out forwards;
  animation: btn-pop-bounce 1s ease-out forwards;
}
.btn-s--green:focus-visible {
  outline: 3px solid rgba(31, 157, 85, 0.35);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .btn-s,
  .btn-s:hover,
  .btn-s--orange:hover,
  .btn-s--green:hover {
    -webkit-animation: none;
    animation: none;
    -webkit-transform: none;
    transform: none;
    -webkit-transition: background 0.25s ease, border-color 0.25s ease,
      color 0.25s ease;
    transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
  }
}

.btn-m {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 10px;
  padding-block: 8px;
  padding-inline: 20px;
  height: 50px;
  width: 280px;
  background: #009092;
  color: #ffffff;
  font-size: clamp(16px, 2vw, 20px);
  font-weight: 700;
  border-radius: 12px;
  text-decoration: none;
  letter-spacing: 0.1em;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
  cursor: pointer;
}
@media screen and (min-width: 768px) {
  .btn-m {
    height: 60px;
    max-width: 300px;
  }
}
.btn-m:hover {
  background: #006566;
  color: #ffffff;
}
.btn-m:hover .btn-m__icon {
  -webkit-transform: translateX(3px);
  transform: translateX(3px);
}
.btn-m--orange {
  background: #ff8d3b;
}
.btn-m--orange:hover {
  background: #f7b500;
  color: #ffffff;
}
.btn-m__icon {
  font-size: 1.2em;
  -webkit-transition: -webkit-transform 0.3s ease;
  transition: -webkit-transform 0.3s ease;
  transition: transform 0.3s ease;
  transition: transform 0.3s ease, -webkit-transform 0.3s ease;
}
.btn-m__text {
  display: inline-block;
}

.btn-l {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 10px;
  padding-block: 8px;
  padding-inline: 30px;
  height: 50px;
  width: 300px;
  background: #009092;
  color: #ffffff;
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 700;
  border-radius: 12px;
  text-decoration: none;
  letter-spacing: 0.1em;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
  cursor: pointer;
}
@media screen and (min-width: 768px) {
  .btn-l {
    height: 65px;
    width: 380px;
  }
}
.btn-l:hover {
  background: #006566;
  color: #ffffff;
}
.btn-l:hover .btn-l__icon {
  -webkit-transform: translateX(3px);
  transform: translateX(3px);
}
.btn-l--orange {
  background: #ff8d3b;
}
.btn-l--orange:hover {
  background: #f7b500;
  color: #ffffff;
}
.btn-l__icon {
  margin-top: 3px;
  font-size: 1.2em;
  -webkit-transition: -webkit-transform 0.3s ease;
  transition: -webkit-transform 0.3s ease;
  transition: transform 0.3s ease;
  transition: transform 0.3s ease, -webkit-transform 0.3s ease;
}
.btn-l__text {
  display: inline-block;
}

.breadcrumb {
  font-size: 14px;
  color: #8f9aa3;
}

.breadcrumb__list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 8px;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding-block: 10px;
}

.breadcrumb__item a {
  text-decoration: none;
}
.breadcrumb__item a:hover {
  color: #006566;
}

.breadcrumb__sep {
  opacity: 0.5;
}

.cta-card {
  background: #009092;
  border: 2px solid #009092;
  color: #ffffff;
  border-radius: 20px;
  text-align: center;
  padding: 35px 20px;
  max-width: 800px;
  margin: 0 auto;
}
@media screen and (min-width: 768px) {
  .cta-card {
    padding-block: 30px;
  }
}
.cta-card--white {
  background: #ffffff;
  color: #444444;
}

.cta-card__title {
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 700;
  margin-bottom: 14px;
  color: #ffffff;
}
.cta-card__title--white {
  color: #444444;
}

.cta-card__btn {
  /* 中身は既存の .btn-l / .btn-m / .btn-s を使用 */
  margin-inline: auto;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex; /* 念のため */
}

.cta-card__hours {
  margin-top: 14px;
  margin-bottom: 10px;
}

.cta-card__note {
  font-size: 14px;
}

.cta-card__icon {
  font-size: 1.2em;
}

.cta-card__text {
  margin-bottom: 14px;
}

/* 汎用 Result レイアウト（404 / Thanks 兼用） */
/* news company contactのボタンも */
.result__inner {
  max-width: 860px;
}

.result__title,
.result__lead {
  margin-inline: auto; /* 中央寄せ */
  line-break: strict; /* 和文の禁則を強めに */
  text-align: center;
}

/* 対応ブラウザで見出しの折りを最適化 */
@supports (text-wrap: balance) {
  .result__title {
    text-wrap: balance;
  }
}
/* 段落は自然寄りに（対応ブラウザで） */
@supports (text-wrap: pretty) {
  .result__lead {
    text-wrap: pretty;
  }
}
.result__title {
  margin-bottom: 20px;
}

.result__lead {
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
}

.result__buttons {
  padding-top: clamp(50px, 6vw, 80px);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column; /* SP：縦積み */
  gap: 24px;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}
@media screen and (min-width: 768px) {
  .result__buttons {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    flex-direction: row; /* PC：横並び */
  }
}

.result__buttons .btn-s:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 2px;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
}

/* ===== Pricing Cards (reusable) ===== */
.pricing-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}
@media (min-width: 992px) {
  .pricing-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }
}

/* 2枚レイアウト：ULに .pricing-cards--2 を付けるだけでOK */
.pricing-cards--2 {
  --card-w: 400px; /* ← お好みで 320~400px 付近に調整 */
}
@media (min-width: 992px) {
  .pricing-cards--2 {
    grid-template-columns: repeat(2, var(--card-w));
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
  }
}

/* = Card = */
.pr-card {
  background: #ffffff;
  border: 1px solid #009092;
  overflow: hidden;
  display: grid;
  grid-template-rows: auto auto auto auto 1fr;
  padding-bottom: 18px;
}

.pr-card__head {
  background: #009092;
  color: #ffffff;
  padding: 14px;
  text-align: center;
}

/* オレンジ枠カード */
.pr-card--accent {
  border-color: #ff8d3b;
  -webkit-box-shadow: 0 6px 18px rgba(255, 141, 59, 0.2);
  box-shadow: 0 6px 18px rgba(255, 141, 59, 0.2);
}
.pr-card--accent .pr-card__head {
  background: #ff8d3b;
}

.pr-card__title {
  font-weight: 700;
  font-size: clamp(24px, 2.6vw, 32px);
}

.pr-card__price {
  padding: 10px 0;
  font-variant-numeric: tabular-nums;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: end;
  -ms-flex-align: end;
  align-items: flex-end;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.deadline__price {
  font-variant-numeric: tabular-nums;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: end;
  -ms-flex-align: end;
  align-items: flex-end;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.pr-card__yen {
  font-size: clamp(24px, 2.6vw, 32px);
  padding-bottom: 5px;
  padding-right: 2px;
}

.pr-card__amount {
  font-size: 36px;
  font-weight: 700;
  color: #006566;
  letter-spacing: 0.02em;
  padding: 0 5px;
  background: -webkit-gradient(
    linear,
    left top,
    left bottom,
    color-stop(60%, transparent),
    color-stop(60%, #ffd700),
    color-stop(85%, #ffd700),
    color-stop(85%, transparent)
  );
  background: linear-gradient(
    transparent 60%,
    #ffd700 60%,
    #ffd700 85%,
    transparent 85%
  );
}

.pr-card__price-group {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  padding-left: 2px;
}

.pr-card__tilde {
  font-size: clamp(24px, 2.6vw, 32px);
  color: #006566;
  line-height: 0.7;
  padding-left: 3px;
}

.pr-card__tax {
  font-size: 12px;
  color: #8f9aa3;
  line-height: 1;
  padding-bottom: 14px;
}

/* = Meta（納期・特急） = */
.pr-card__meta {
  padding: 0 45px;
}
@media (min-width: 1200px) {
  .pr-card__meta {
    padding: 0 85px;
  }
}

.meta {
  display: grid;
  grid-template-columns: 1fr;
  row-gap: 8px; /* 行間 */
  -webkit-column-gap: 0;
  -moz-column-gap: 0;
  column-gap: 0;
}

/* 601px～992px: 納期と特急を横並び2カラム */
@media (min-width: 601px) and (max-width: 992px) {
  .meta {
    grid-template-columns: repeat(2, auto); /* autoで内容に合わせた幅 */
    -webkit-column-gap: 30px;
    -moz-column-gap: 30px;
    column-gap: 30px; /* 2カラムのあいだ */
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center; /* グリッド全体を中央寄せ */
  }
}
.meta__row {
  display: grid;
  grid-template-columns: auto 1fr; /* ラベル + 値 */
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
  gap: 12px;
}

.chip {
  display: inline-block;
  padding: 2px 12px;
  border-radius: 20px;
  font-weight: 700;
  font-size: 16px;
  line-height: 1.6;
  white-space: nowrap;
}
.chip--yellow {
  background: #f3d36b;
  color: #333;
}
.chip--red {
  background: #c83349;
  color: #fff;
}

.meta__value {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column; /* 値＋注記を縦積み */
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start; /* 左揃え */
  gap: 0;
  text-align: left;
}

.meta__main {
  font-weight: 700;
  font-size: 24px; /* “3営業日／最短当日納品”は同じ字体 */
  line-height: 1.2;
  color: #006566;
  white-space: nowrap;
}

/* 注記（＋10,000円 税別） */
.meta__note {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  gap: 4px;
  -webkit-box-align: baseline;
  -ms-flex-align: baseline;
  align-items: baseline;
  font-size: clamp(12px, 1.5vw, 14px);
  color: #8f9aa3;
  white-space: nowrap;
  /* 価格数字だけ少しだけ強めたい場合（任意） */
  /* 価格の中で税別は既存クラスを流用 */
}
.meta__note .meta__amount {
  font-weight: 700;
  color: #006566;
}
.meta__note .pr-card__tax {
  padding-bottom: 0; /* 価格ブロックの14pxを無効化 */
}

/* = セクション見出し（中央・区切り線） = */
.pr-card__section-title {
  position: relative;
  margin: 12px 16px 8px;
  text-align: center;
  font-weight: 700;
  color: #006566;
  letter-spacing: 0.02em;
  /* 両側に細いライン */
}
.pr-card__section-title:before,
.pr-card__section-title:after {
  content: "";
  position: relative;
  top: -0.1em;
  display: inline-block;
  width: 10%;
  height: 1px;
  background: #a8efe6;
  margin: 0 10px;
  vertical-align: middle;
}

/* = Features = */
.pr-card__features {
  padding: 0 16px;
  display: grid;
  gap: 8px;
}
.pr-card__features li {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
  gap: 8px;
}
.pr-card__features li i {
  color: #1f9d55;
  font-size: clamp(16px, 2vw, 20px);
  padding-top: 7px;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}
.pr-card__features li.note {
  color: #8f9aa3;
  font-size: 12px;
}
.pr-card__features li.note i {
  opacity: 0.4;
}

/* 価格下の税別が行間広すぎる問題を局所調整 */
.pr-card__price-group {
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
}

.pr-card__deadline .pr-card__tax,
.meta .pr-card__tax {
  padding-bottom: 0;
}

/* ===== Reset (light) ===== */
*,
*::before,
*::after {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
}

/* 画像・メディア */
img,
svg,
video,
canvas,
picture {
  display: block;
  max-width: 100%;
  height: auto;
  overflow: clip; /* 大きいアセットのはみ出し防止 */
}

/* リンク（色や装飾は base で定義） */
a {
  color: inherit;
  text-decoration: none;
}

/* リスト */
ul,
ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* 余白リセット */
h1,
h2,
h3,
h4,
h5,
h6,
p,
figure {
  margin: 0;
}

/* フォーム（継承系のみ） */
input,
button,
select,
textarea {
  font: inherit;
  color: inherit;
  vertical-align: top;
}

/* fieldset リセット */
fieldset {
  border: 0;
  margin: 0;
  padding: 0;
}

/* ボタン差異軽減（最小） */
button {
  border: 0;
  background: none;
  padding: 0;
  cursor: pointer;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none; /* iOS/Safari の差異軽減 */
}

/* テーブル（LP想定） */
table {
  border-collapse: collapse;
  width: 100%;
}

/* ===== Base ===== */
body {
  font-family: "Noto Sans JP", system-ui, -apple-system,
    "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", "YuGothic", Meiryo,
    sans-serif;
  font-weight: 400;
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
  color: #444444;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  letter-spacing: 0.01em; /* Montserrat + JP の妥協点 */
}

/* 見出し（クラス化もOK） */
h1,
.h1 {
  font-size: clamp(40px, 6vw, 56px);
  font-weight: 700;
  line-height: 1.2;
}

h2,
.h2 {
  font-size: clamp(32px, 4vw, 40px);
  font-weight: 700;
  line-height: 1.2;
  color: #133b45;
}

h3,
.h3 {
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 700;
  line-height: 1.3;
}

h4,
.h4 {
  font-size: clamp(16px, 2vw, 20px);
  font-weight: 700;
  line-height: 1.35;
}

/* セクション帯（必要なら） */
/* 1) リンク（hover 可能デバイスのみホバー適用） */
a {
  color: #444444;
  text-underline-offset: 2px;
}
a:hover {
  color: #006566;
}

a:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 2px;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35); /* 透明リング etc. を v.* で統一 */
}

/* 2) フォーカスの既定調整（:focus-visible 前提） */
:focus {
  outline: none;
} /* 旧 UA outline を無効化 */
:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 2px;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  /* 背景色は付けない：塗り潰しは可読性を落としがち */
}

/* 3) 動きの少ない環境配慮 */
@media (prefers-reduced-motion: reduce) {
  * {
    -webkit-animation: none !important;
    animation: none !important;
    -webkit-transition: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
/* 4) フォーム/ボタンのサイズ一貫（トークンで管理） */
input[type="text"],
input[type="email"],
input[type="tel"],
select,
textarea {
  font: inherit;
  line-height: 1.4;
  height: clamp(40px, 4.5vw, 48px);
  padding-inline: clamp(12px, 2vw, 16px);
  border-radius: 8px;
  border: 1px solid #e6eaed; /* currentColorを具体的な色に変更 */
  width: 100%;
}

textarea {
  min-height: 140px;
  height: auto;
  padding-block: 10px;
}

button,
.button,
input[type="submit"] {
  font: inherit;
  font-weight: 700;
  height: clamp(40px, 4.5vw, 48px);
  padding-inline: clamp(12px, 2vw, 16px);
  border-radius: 8px;
  border: 1px solid transparent;
  cursor: pointer;
}

/* ===== SP版375ピクセル・PC版1512ピクセル確認 ===== */
/*----------------------------------------
  header
  ----------------------------------------*/
.header {
  position: fixed;
  inset-inline: 0;
  line-height: 1;
  -webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  background: #ffffff;
}

.header__inner {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  height: 64px;
}
@media (min-width: 992px) {
  .header__inner {
    height: 80px;
    /* resetでborder-boxを入れているのでpaddingを含めて100%で収まる */
    width: min(100%, 1260px);
    margin-inline: auto;
    padding-inline: 15px;
    padding-inline: 30px;
  }
}

.header__logo {
  -ms-flex-negative: 0;
  flex-shrink: 0;
  width: 160px;
  margin-left: 10px;
}
@media (min-width: 992px) {
  .header__logo {
    margin: 0;
  }
}
.header__logo a {
  display: block;
}
.header__logo img {
  display: block;
  width: 100%;
  height: auto;
}

.header__actions {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

.header__cta {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 4px;
  width: 64px;
  height: 64px;
  background: #ff8d3b;
  color: #ffffff;
  text-decoration: none;
  font-size: 11px;
  font-weight: 700;
  -webkit-transition: background 0.3s ease, -webkit-transform 0.2s ease;
  transition: background 0.3s ease, -webkit-transform 0.2s ease;
  transition: background 0.3s ease, transform 0.2s ease;
  transition: background 0.3s ease, transform 0.2s ease,
    -webkit-transform 0.2s ease;
}
.header__cta:hover {
  background: #f7b500;
  color: #ffffff;
  -webkit-transform: translateY(-2px);
  transform: translateY(-2px);
}
.header__cta-icon {
  font-size: 24px;
  line-height: 1;
}
.header__cta-text {
  display: block;
}

/*----------------------------------------
	main(top固定時にheaderの下に隙間を作る)
----------------------------------------*/
/* 高さは変数だけで管理（未ログイン時は adminbar=0） */
:root {
  --header-h: 64px;
  --adminbar-h: 0px;
}
@media (min-width: 992px) {
  :root {
    --header-h: 80px;
  }
}
body.admin-bar {
  --adminbar-h: 32px;
}
@media (max-width: 782px) {
  body.admin-bar {
    --adminbar-h: 46px;
  }
}

/* 固定ヘッダーを管理バー分だけ下げる */
.header {
  position: fixed;
  top: var(--adminbar-h);
  height: var(--header-h);
  left: 0;
  right: 0;
  z-index: 1000; /* 念のため前面に */
}

/* 本文は “ヘッダーの高さだけ” 押し下げる（adminbarは足さない）*/
main {
  padding-top: var(--header-h);
}

/* SP時は上部余白を少し調整 */
@media (max-width: 991px) {
  main {
    padding-top: calc(var(--header-h) - 2px); /* SP時は2px少なく */
  }
}

/* 念のため：最初のセクションの margin 相殺 */
main > section:first-child {
  margin-top: 0;
}

/*----------------------------------------
  hamburger icon
----------------------------------------*/
.header__icon {
  display: grid;
  place-content: center;
  width: 64px;
  height: 64px;
  border: 0;
  background: #ffffff;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
@media (min-width: 992px) {
  .header__icon {
    display: none;
  }
}

/* ハンバーガーアイコンの線 */
.header-icon__bar,
.header-icon__bar::before,
.header-icon__bar::after {
  content: "";
  display: block;
  inline-size: 36px;
  block-size: 3px;
  background: #009092;
  border-radius: 6px;
  -webkit-transition: opacity 0.2s ease, background-color 0.2s ease,
    -webkit-transform 0.2s ease;
  transition: opacity 0.2s ease, background-color 0.2s ease,
    -webkit-transform 0.2s ease;
  transition: transform 0.2s ease, opacity 0.2s ease, background-color 0.2s ease;
  transition: transform 0.2s ease, opacity 0.2s ease, background-color 0.2s ease,
    -webkit-transform 0.2s ease;
}

.header-icon__bar {
  position: relative;
}

/* 位置は translateY で寄せる（transition: transform .25s が効いて滑らかにアニメするため） */
.header-icon__bar::before {
  position: absolute;
  left: 0;
  -webkit-transform: translateY(-12px);
  transform: translateY(-12px);
}

.header-icon__bar::after {
  position: absolute;
  left: 0;
  -webkit-transform: translateY(12px);
  transform: translateY(12px);
}

/*-/*ハンバーガーを"×"アイコンに変形する指示 閉じる*/
.header__icon.is-open .header-icon__bar {
  background-color: transparent;
}

.header__icon.is-open .header-icon__bar::before {
  -webkit-transform: translateY(0) rotate(30deg);
  transform: translateY(0) rotate(30deg);
}

.header__icon.is-open .header-icon__bar::after {
  -webkit-transform: translateY(0) rotate(-30deg);
  transform: translateY(0) rotate(-30deg);
}

/* フォーカス見える化 */
.header__icon:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 2px;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
}

/* 動きを減らす設定に追従 */
@media (prefers-reduced-motion: reduce) {
  .header-icon__bar,
  .header-icon__bar::before,
  .header-icon__bar::after {
    -webkit-transition: none;
    transition: none;
  }
}
/*----------------------------------------
  gnav（独立ブロック）
----------------------------------------*/
/* ===== SP ===== */
.gnav {
  position: fixed;
  top: calc(
    var(--adminbar-h) + var(--header-h)
  ); /* 管理バー＋ヘッダーの分だけ下げる */
  right: 0;
  width: 100%;
  height: calc(
    100dvh - (var(--adminbar-h) + var(--header-h))
  ); /* その分だけ高さを縮める */
  z-index: 950; /* ヘッダー(1000)の一段下、コンテンツより前に出す */
  background: #e6f7f8;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; /*iOSで慣性スクロール有効化*/
  /* 初期は「少し右＋透明＋クリック無効」で待機 */
  -webkit-transform: translate3d(16px, 0, 0);
  transform: translate3d(16px, 0, 0);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  /* スムーズに遷移 */
  -webkit-transition: opacity 0.32s cubic-bezier(0.2, 0.7, 0.2, 1),
    visibility 0s linear 0.32s,
    -webkit-transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1);
  transition: opacity 0.32s cubic-bezier(0.2, 0.7, 0.2, 1),
    visibility 0s linear 0.32s,
    -webkit-transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1);
  transition: transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1),
    opacity 0.32s cubic-bezier(0.2, 0.7, 0.2, 1), visibility 0s linear 0.32s;
  transition: transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1),
    opacity 0.32s cubic-bezier(0.2, 0.7, 0.2, 1), visibility 0s linear 0.32s,
    -webkit-transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1);
  will-change: transform, opacity;
  contain: content; /* 描画分離でちょっとだけ軽量 */
}

/* JavaScriptがbodyに.is-drawer-openクラスを付与する */
body.is-drawer-open .gnav {
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  -webkit-transition-delay: 0s, 0s, 0s;
  transition-delay: 0s, 0s, 0s;
}

body.is-drawer-open {
  overflow: hidden; /* 背景スクロールを止める */
}

.gnav__list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 38px;
  margin: 38px 0 0 0;
}
.gnav__list a {
  font-size: 16px;
  font-weight: 700;
}

/* ===== PC ===== */
@media (min-width: 992px) {
  .gnav {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; /* PCでは常に表示 */
    position: static;
    width: auto;
    height: auto;
    -webkit-transform: none;
    transform: none;
    background: inherit;
    overflow: visible;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    -webkit-transition: none;
    transition: none;
  }
  .gnav__list {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    flex-direction: row;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    gap: 16px;
    margin: 0;
    padding: 8px 8px;
  }
}
/* ===== SP版375ピクセル・PC版1280ピクセル確認 ===== */
/*----------------------------------------
	hero
----------------------------------------*/
.hero {
  position: relative;
  background: linear-gradient(287deg, #e6f7f8 0%, #a8efe6 100%);
  background: url("../img/hero-top.jpg") no-repeat center/cover;
}
.hero::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.3);
  z-index: 1;
}

.hero__inner {
  position: relative;
  z-index: 2;
  text-align: center;
  padding-block: clamp(32px, 4vw, 48px);
}

/* 吹き出し（白いピル + 下中央しっぽ） */
.bubble {
  display: inline-block;
  position: relative;
  background: #009092;
  color: #ffffff;
  font-size: clamp(16px, 2.2vw, 20px);
  line-height: 1.6;
  letter-spacing: 0.03em;
  font-weight: 700;
  margin-bottom: clamp(24px, 3vw, 32px);
  padding: clamp(8px, 1vw, 12px) clamp(16px, 2vw, 24px);
  border-radius: 9999px;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06);
  /* 下中央の "しっぽ" */
}
.bubble::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -20px;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 24px solid transparent;
  border-right: 24px solid transparent;
  border-top: 20px solid #009092;
  z-index: 1;
}

.hero__title {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: clamp(8px, 1vw, 12px);
  margin-bottom: clamp(16px, 2vw, 24px);
  width: 100%;
}
.hero__title img {
  display: block;
  width: 200px;
  height: auto;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}
@media screen and (min-width: 768px) {
  .hero__title img {
    width: 250px;
  }
}

.hero__title-top {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 5px;
  font-size: clamp(32px, 4vw, 40px);
  line-height: 1;
}

.hero__title-bottom {
  font-size: clamp(32px, 4vw, 40px);
  line-height: 1.2;
  text-wrap: balance; /* 長い日本語見出しの折返し改善 */
  letter-spacing: 0.02em;
  line-height: 1.3;
}

.hero__stats,
.svcnav__list {
  max-width: min(100%, 500px);
  margin-inline: auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(8px, 1vw, 12px);
  margin-bottom: clamp(24px, 3vw, 32px);
}
@media screen and (min-width: 768px) {
  .hero__stats,
  .svcnav__list {
    gap: clamp(16px, 2vw, 24px);
    max-width: min(100%, 800px);
  }
}

/* カード本体：行の順序を明示して「Point → 文言 → 画像」 */
.hero__stat,
.svcnav__item {
  position: relative;
  display: grid;
  -ms-flex-line-pack: start;
  align-content: start;
  place-items: center;
  gap: clamp(8px, 1vw, 12px);
  padding: clamp(8px, 2.5vw, 16px);
  border-radius: 8px;
  background: #ffffff;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.06);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8),
    0 1px 2px rgba(0, 0, 0, 0.05), 0 10px 24px rgba(0, 0, 0, 0.06);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8),
    0 1px 2px rgba(0, 0, 0, 0.05), 0 10px 24px rgba(0, 0, 0, 0.06);
  row-gap: clamp(12px, 2.2vw, 18px);
  padding-block: clamp(10px, 2.2vw, 18px);
  padding-inline: clamp(8px, 2vw, 16px);
  /* アイコン（3行目・丸背景付き） */
}
.hero__stat .hero__icon,
.svcnav__item .hero__icon,
.hero__stat .svcnav__media,
.svcnav__item .svcnav__media {
  grid-row: 3;
  position: relative;
  width: clamp(70px, 7vw, 120px);
  height: clamp(70px, 7vw, 120px);
  display: grid;
  place-items: center;
  border-radius: 9999px;
  background: #009092;
}
.hero__stat .hero__icon i,
.svcnav__item .hero__icon i,
.hero__stat .svcnav__media i,
.svcnav__item .svcnav__media i {
  font-size: clamp(32px, 4vw, 40px);
  color: #ffffff;
  line-height: 1;
  -webkit-transform: translateY(-1px);
  transform: translateY(-1px);
}

/* Point ラベル：存在感は出しつつ控えめに */
.hero__stat-point,
.svcnav__point {
  color: #133b45;
  font-size: clamp(13px, 2vw, 16px);
  font-weight: 700;
  padding-bottom: 6px;
}
.hero__stat-point::after,
.svcnav__point::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  width: clamp(36px, 28%, 72px);
  height: 2px;
  background: currentColor;
  border-radius: 1px;
  color: #ff8d3b;
}

/* 見出しテキストは2行目（中央） */
.hero__stat-lead,
.svcnav__label {
  grid-row: 2;
  font-size: clamp(12px, 2.2vw, 20px);
  font-weight: 700;
  text-align: center;
  line-height: 1.35;
}

/* --- Point 見出し（1行目／下線つき） --- */
.hero__stat-point,
.svcnav__point {
  grid-row: 1;
  position: relative;
  display: inline-block;
  color: #133b45; /* お好みのブランド色に */
  font-weight: 700;
  font-size: clamp(14px, 2.2vw, 18px);
  line-height: 1;
  padding-bottom: 6px;
  margin-bottom: 4px;
  /* 下線 */
}
.hero__stat-point::after,
.svcnav__point::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  width: clamp(40px, 30%, 80px);
  height: 2px;
  background: currentColor;
  border-radius: 1px;
}

@media (hover: hover) {
  .hero__stat,
  .svcnav__item {
    -webkit-transition: -webkit-transform 0.18s ease,
      -webkit-box-shadow 0.18s ease;
    transition: -webkit-transform 0.18s ease, -webkit-box-shadow 0.18s ease;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
    transition: transform 0.18s ease, box-shadow 0.18s ease,
      -webkit-transform 0.18s ease, -webkit-box-shadow 0.18s ease;
  }
  .hero__stat:hover,
  .svcnav__item:hover {
    -webkit-transform: translateY(-2px);
    transform: translateY(-2px);
    -webkit-box-shadow: 0 8px 22px rgba(0, 0, 0, 0.1);
    box-shadow: 0 8px 22px rgba(0, 0, 0, 0.1);
  }
}
.hero__hours {
  margin-top: 8px;
}

.hero__note {
  font-size: 14px;
}

/* ===== SP版375ピクセル・PC版1280ピクセル確認 ===== */
/*----------------------------------------
	footer
----------------------------------------*/
.footer__inner {
  display: grid;
  gap: 24px;
  padding-block: 24px;
  /* PCでも1カラムにして余白/整列で見栄え調整 */
}
@media screen and (min-width: 768px) {
  .footer__inner {
    gap: 28px;
  }
}

/* ブランドブロックの整列と余白 */
.footer__brand {
  display: grid;
  justify-items: center; /* SPは中央寄せ */
  text-align: center;
  row-gap: 12px;
}
@media screen and (min-width: 768px) {
  .footer__brand {
    justify-items: start; /* PCは左寄せ */
    text-align: left;
    row-gap: 14px;
  }
}

/* ロゴ */
.footer__logo {
  width: 160px;
  display: block;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}
@media screen and (min-width: 768px) {
  .footer__logo {
    width: 200px;
    margin: 0;
  }
}
.footer__logo img {
  display: block;
  width: 100%;
  height: auto;
}

.footer__slogan {
  margin-top: 6px;
  font-size: 14px;
  color: #8f9aa3;
}

.footer__address {
  margin-top: 8px;
  font-style: normal;
}

.footer__link {
  text-underline-offset: 2px;
}
.footer__link:hover {
  color: #006566;
}

/* ボトムバー */
.footer__bottom {
  border-top: 1px solid #e6eaed;
  background: #ffffff;
}

.footer-bottom__inner {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  gap: 16px;
  padding-block: 16px;
}

.footer__copyright {
  color: #8f9aa3;
}

.footer__pagetop {
  /* ---- base ---- */
  --lift: 5px; /* 初期は押し下げて非表示 */
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 100;
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 2px solid #009092;
  background: #ffffff;
  color: #009092;
  font-weight: 700;
  cursor: pointer;
  /* アニメの土台（transformは常に1本だけ） */
  opacity: 0;
  visibility: hidden;
  -webkit-transform: translate3d(0, var(--lift), 0);
  transform: translate3d(0, var(--lift), 0);
  -webkit-transition: opacity 0.25s ease, background-color 0.3s ease,
    border-color 0.3s ease, color 0.3s ease,
    -webkit-transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    -webkit-box-shadow 0.2s ease;
  transition: opacity 0.25s ease, background-color 0.3s ease,
    border-color 0.3s ease, color 0.3s ease,
    -webkit-transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    -webkit-box-shadow 0.2s ease;
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease,
    background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease,
    box-shadow 0.2s ease;
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease,
    background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease,
    box-shadow 0.2s ease, -webkit-transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    -webkit-box-shadow 0.2s ease;
  will-change: transform; /* GPUヒント */
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden; /* チラつき抑制 */
  /* 表示時（JSで .is-visible を付与） */
  /* ホバー時は lift だけを更新（transformは据え置き） */
  /* キーボード操作のフォーカスも同じ動き＋見えるフォーカス */
  /* 低モーション配慮 */
}
.footer__pagetop.is-visible {
  --lift: 0px;
  opacity: 1;
  visibility: visible;
}
.footer__pagetop:hover {
  --lift: -4px; /* より明確な浮き上がり効果 */
  background: #e6f7f8;
  border-color: #006566;
  color: #006566;
  -webkit-box-shadow: 0 4px 12px rgba(0, 144, 146, 0.15);
  box-shadow: 0 4px 12px rgba(0, 144, 146, 0.15); /* 影を追加 */
}
.footer__pagetop:focus-visible {
  outline: 2px solid #009092;
  outline-offset: 2px;
  --lift: -2px;
}
@media (prefers-reduced-motion: reduce) {
  .footer__pagetop {
    -webkit-transition: none;
    transition: none;
    -webkit-transform: none;
    transform: none;
  }
}

/* =========================
   Global Form Base
   ========================= */
.form__group {
  display: grid;
  gap: 6px;
}
.form__label {
  font-weight: 700;
  color: #133b45;
}
.form__hint {
  color: #8f9aa3;
  font-size: 14px;
}
.form__badge {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  border-radius: 9999px;
  background: #f3d36b;
  color: #333;
  font-weight: 700;
  font-size: 12px;
  vertical-align: top; /* 上寄せ */
  -webkit-transform: translateY(1px);
  transform: translateY(1px); /* 1px下に移動 */
}
@media screen and (min-width: 768px) {
  .form__badge {
    -webkit-transform: translateY(3px);
    transform: translateY(3px); /* 3px下に移動 */
  }
}
.form__badge--opt {
  background: #e6f7f8;
  color: #133b45;
}
.form__control {
  width: 100%;
  height: clamp(44px, 5vw, 48px);
  padding-inline: clamp(12px, 2vw, 16px);
  border: 1px solid #e6eaed;
  border-radius: 8px;
  background: #ffffff;
  color: #444444;
  -webkit-transition: border-color 0.2s ease, background 0.2s ease,
    -webkit-box-shadow 0.2s ease;
  transition: border-color 0.2s ease, background 0.2s ease,
    -webkit-box-shadow 0.2s ease;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease,
    -webkit-box-shadow 0.2s ease;
}
.form__control:focus {
  outline: none;
  border-color: #009092;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
}
.form__control:disabled {
  background: color-mix(in srgb, #e6eaed 40%, #fff);
  color: #8f9aa3;
}
.form__fieldset {
  border: 0;
  padding: 0;
  margin: 0;
  display: grid;
  gap: clamp(16px, 2vw, 24px);
}
.form__legend {
  font-weight: 700;
  color: #133b45;
}
.form__actions {
  margin-top: clamp(8px, 1vw, 12px);
  text-align: center;
}
.form__consent {
  margin-top: clamp(8px, 1vw, 12px);
}

.select__control {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='10' viewBox='0 0 14 10'%3E%3Cpath fill='%238f9aa3' d='M7 10 0 0h14z'/%3E%3C/svg%3E"); /* v.$gray */
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px 8px;
  padding-right: 36px;
}

.textarea__control {
  height: auto;
  min-height: 160px;
  padding-block: 10px;
  resize: vertical;
}

/* 2カラム化に使えるユーティリティ */
.form-grid--2 {
  display: grid;
  gap: 12px;
  grid-template-columns: 1fr;
}
@media screen and (min-width: 768px) {
  .form-grid--2 {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* エラー/成功表示（任意でJSやバリデータから付与） */
.is-error .form__control {
  border-color: #c83349;
  -webkit-box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.12);
  box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.12);
}

.is-valid .form__control {
  border-color: #009092;
  -webkit-box-shadow: 0 0 0 2px rgba(0, 144, 146, 0.12);
  box-shadow: 0 0 0 2px rgba(0, 144, 146, 0.12);
}

/* ネイティブの色だけ借りる（軽量） */
input[type="checkbox"],
input[type="radio"] {
  accent-color: #009092;
}

/* 1行チェック（同意など） */
.checkline {
  display: grid;
  grid-template-columns: 20px 1fr;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
  gap: 8px;
}

.checkline__input {
  width: 18px;
  height: 18px;
  margin-top: 5px;
}
@media screen and (min-width: 768px) {
  .checkline__input {
    margin-top: 7px;
  }
}

.checkline__body {
  line-height: 1.6;
}

/* ===== SP版375ピクセル・PC版1280ピクセル確認 ===== */
/*----------------------------------------
	hero
----------------------------------------*/
.subhero {
  position: relative;
  color: #ffffff;
  min-height: 240px;
  display: grid;
  -webkit-box-align: end;
  -ms-flex-align: end;
  align-items: end; /* テキストを下寄せ */
  /* 下の半透明ぼかし帯 */
}
.subhero::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 90px;
  background: rgba(19, 59, 69, 0.55);
  backdrop-filter: blur(5px);
  z-index: 1; /* テキストのすぐ下に来るように */
}
@media screen and (min-width: 1024px) {
  .subhero {
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center; /* テキストを縦中央に */
  }
  .subhero::after {
    top: 0;
    width: 35%; /* 左帯の幅は調整可 */
    height: auto;
  }
}

.subhero__bg {
  position: absolute;
  inset: 0;
}
.subhero__bg img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
  -o-object-position: center;
  object-position: center;
  display: block;
}

.subhero__bg--services img,
.subhero__bg--company img,
.subhero__bg--contact img,
.subhero__bg--news img {
  -o-object-position: top right;
  object-position: top right;
}

.subhero__bg--404 {
  background: linear-gradient(287deg, #e6f7f8 0%, #a8efe6 100%);
}

.subhero__inner {
  position: relative;
  z-index: 2; /* ::afterの上にテキストを置く */
  padding-block: 15px;
}

.subhero__kicker {
  font-size: 14px;
  margin-bottom: 4px;
}

.subhero__title {
  color: #ffffff;
  font-size: clamp(24px, 2.6vw, 32px);
}

/* 404 専用の微調整があればここに。今は空でOK */
/* ===== SP版375ピクセル・PC版1440ピクセル確認 ===== */
/* =========================
   Services
   ========================= */
/* サービスセクション全体 */
.services__inner {
  text-align: center;
}

/* カード一覧 */
.services__cards {
  display: grid;
  grid-template-columns: 1fr; /* SP: 縦並び */
  gap: 50px;
}
@media screen and (min-width: 768px) {
  .services__cards {
    grid-template-columns: repeat(3, minmax(0, 1fr)); /* PC: 3列 */
    /* ← ここを start → stretch に変更 */
    -webkit-box-align: stretch;
    -ms-flex-align: stretch;
    align-items: stretch;
    /* 2段以上になる場合でも各段のカード高さを揃えたいなら任意で */
    grid-auto-rows: 1fr;
    gap: 40px;
  }
}

.service-card {
  /* 調整用トークン */
  --media-size: 120px; /* 画像の見た目サイズ */
  --overlap: 70px; /* 画像をパネルに食い込ませる量 */
  display: grid;
  grid-template-rows: auto 1fr; /* header / panel */
  gap: 10px;
  height: 100%; /* ← 行にストレッチされた高さをそのまま使う */
}

/* ヘッダー：同じセルに“重ねて”配置（stack） */
.service-card__header {
  display: grid;
  grid-template-areas: "stack"; /* 1セルに重ねる */
  height: var(--media-size); /* 数字と画像のトップをそろえる */
  margin-bottom: calc(var(--overlap) * -1); /* パネルへ食い込ませる */
}

/* 重ね対象は同じグリッド領域 */
.service-card__num,
.service-card__media {
  grid-area: stack; /* 同じセルに配置 */
}

/* 画像＝中央・上端 */
.service-card__media {
  justify-self: center;
  -ms-flex-item-align: start;
  align-self: start;
  z-index: 1;
}
.service-card__media img {
  display: block;
  width: var(--media-size);
  height: auto;
  -o-object-fit: contain;
  object-fit: contain;
}

.service-card__media--01 img {
  width: 110px;
}
@media screen and (min-width: 768px) {
  .service-card__media--01 img {
    width: 120px;
  }
}

.service-card__media--03 img {
  width: 150px;
}
@media screen and (min-width: 768px) {
  .service-card__media--03 img {
    width: 180px;
  }
}

/* 数字＝左から15px・上端 */
.service-card__num {
  justify-self: start;
  -ms-flex-item-align: start;
  align-self: start;
  margin-left: 15px;
  font-weight: 700;
  font-size: clamp(32px, 4vw, 40px);
  letter-spacing: 0.08em;
  line-height: 1;
  color: #133b45;
}

/* 下のパネル（画像の食い込み分だけ上パディングを足す） */
.service-card__panel {
  position: relative;
  width: 100%;
  text-align: center;
  border-radius: 12px;
  padding: calc(clamp(18px, 2.2vw, 20px) + var(--overlap))
    clamp(14px, 2vw, 20px) clamp(14px, 2.2vw, 20px);
  display: grid;
  grid-template-rows: auto 1fr auto; /* ← ココがキモ */
  row-gap: clamp(16px, 2vw, 24px);
}
.service-card__panel::before {
  content: "";
  position: absolute;
  inset: 0;
  background: #e6f7f8;
  border-radius: 12px;
  z-index: -1;
}

.service-card__title {
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 700;
  line-height: 1.2;
  margin-bottom: clamp(8px, 1vw, 12px);
  text-wrap: balance;
  /* 行1 */
  -ms-flex-item-align: start;
  align-self: start;
}

.service-card__desc {
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
  text-align: justify;
  /* 行2 */
  -ms-flex-item-align: start;
  align-self: start;
}

.service-card__cta {
  margin-inline: auto;
  margin-bottom: 10px;
}

/* =========================
   Pricing
   ========================= */
.pricing-summary {
  background: #e6f7f8;
}

/* =========================
   Pricing Summary Custom Info
   ========================= */
.pricing-summary__custom {
  margin-top: 50px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 30px;
  max-width: 800px;
  margin-inline: auto;
}
@media screen and (min-width: 768px) {
  .pricing-summary__custom {
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-top: 60px;
  }
}

.custom-info {
  background: #ffffff;
  border: 2px solid #009092;
}

.delivery-info {
  background: #ff8d3b;
  color: #ffffff;
}

/*----------------------------------------
	flow
----------------------------------------*/
.flow__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
}
@media screen and (min-width: 768px) {
  .flow__list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 40px;
    position: relative;
  }
}

.flow__item {
  position: relative;
  /* SP：下中央に下向き三角の“しっぽ” */
  /* PC：右側に横向きの“しっぽ”に切替え（行末では消す） */
}
.flow__item::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -20px;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
  border-top: 16px solid #009092; /* 下向き三角 */
  z-index: 1;
}
@media screen and (min-width: 768px) {
  .flow__item::after {
    left: auto;
    bottom: auto;
    right: -25px;
    top: 50%;
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
    border: none;
    border-top: 18px solid transparent;
    border-bottom: 18px solid transparent;
    border-left: 14px solid #009092; /* 右向き三角 */
  }
}

/* 行末は“しっぽ”も不要（はみ出し防止） */
.flow__item:last-child::after {
  content: none;
}

.flow-card {
  display: grid;
  grid-template-rows: auto auto auto 1fr;
  gap: 12px;
  height: 100%;
  padding: 18px 18px 20px;
  border: 1px solid #e6eaed;
  border-radius: 12px;
  background: #fff;
}
@media screen and (min-width: 768px) {
  .flow-card {
    padding: 20px 20px 24px;
  }
}

.flow-card__step {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
  -ms-flex-align: baseline;
  align-items: baseline;
  gap: 8px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #8f9aa3;
}

.flow-card__step-label {
  font-size: clamp(16px, 2.2vw, 20px);
}

.flow-card__num {
  font-size: clamp(24px, 2.6vw, 32px);
  color: #009092;
  font-variant-numeric: tabular-nums;
}

.flow-card__icon {
  margin-inline: auto;
  display: grid;
  place-items: center;
  position: relative;
  width: clamp(70px, 7vw, 120px);
  height: clamp(70px, 7vw, 120px);
  border-radius: 9999px;
  background: #009092;
}
.flow-card__icon i {
  font-size: clamp(32px, 4vw, 40px);
  color: #ffffff;
  line-height: 1;
  -webkit-transform: translateY(-1px);
  transform: translateY(-1px);
}

.flow-card__title {
  text-align: center;
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 700;
  margin-bottom: clamp(8px, 1vw, 12px);
}

.flow-card__desc {
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
  text-align: justify;
}

/*----------------------------------------
	QA
----------------------------------------*/
.qa {
  background: #e6f7f8;
}

.qa__boxes {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  gap: 40px;
  max-width: 800px;
  width: 100%;
  margin-inline: auto;
}

.qa-box {
  border-radius: 12px;
  border: 3px solid #444444;
  background: #ffffff;
}
.qa-box.is-open .qa-box__head::after {
  -webkit-transform: rotate(0deg);
  transform: rotate(0deg);
}
.qa-box.is-open .qa-box__body {
  display: block;
}

/* 見出しボタン全体をクリック可 */
.qa-box__q {
  padding-block: 26px;
  padding-left: 20px;
  padding-right: 60px;
  position: relative;
  display: block;
  width: 100%;
  min-height: -webkit-fit-content;
  min-height: -moz-fit-content;
  min-height: fit-content;
}
@media screen and (min-width: 768px) {
  .qa-box__q {
    padding-left: 24px;
    padding-right: 70px;
  }
}

/* 右端の矢印アイコン（Font Awesome） */
.qa-box__chevron {
  position: absolute;
  top: 50%;
  right: 16px;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  display: grid;
  place-items: center;
  pointer-events: none;
}
.qa-box__chevron i {
  font-size: 16px;
  color: #009092;
  -webkit-transition: color 0.2s ease, -webkit-transform 0.25s ease;
  transition: color 0.2s ease, -webkit-transform 0.25s ease;
  transition: transform 0.25s ease, color 0.2s ease;
  transition: transform 0.25s ease, color 0.2s ease,
    -webkit-transform 0.25s ease;
  line-height: 1;
}

/* 開いたときは上向きに */
.qa-box__q[aria-expanded="true"] .qa-box__chevron i {
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}

/* ホバー/フォーカスで色だけ少し濃く */
@media (hover: hover) {
  .qa-box__q:hover .qa-box__chevron i {
    color: #006566;
  }
}
/* フォーカス可視化（セレクタ修正） */
.qa-box__q:focus-visible {
  outline: 2px solid #a8efe6;
  outline-offset: 4px;
}

/* Q 丸アイコン */
.qa-box__q-icon {
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  width: 44px;
  height: 44px;
  border-radius: 22px;
  border: 3px solid #444444;
  background: #a8efe6;
  position: absolute;
  top: -26px;
  left: 12px;
  padding-top: 5px;
}
@media screen and (min-width: 768px) {
  .qa-box__q-icon {
    left: 17px;
  }
}

/* 質問テキスト */
.qa-box__q-text {
  display: block;
  text-align: left;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.4;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

/* 回答パネル */
.qa-box__body {
  padding-top: 8px;
  padding-bottom: 15px;
  padding-inline: 13px;
  display: none;
}
@media screen and (min-width: 768px) {
  .qa-box__body {
    padding-inline: 19px;
  }
}

.qa-box__a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
  gap: 16px;
}
@media screen and (min-width: 768px) {
  .qa-box__a {
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
}

.qa-box__a-icon {
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  width: 44px;
  height: 44px;
  border-radius: 22px;
  border: 3px solid #444444;
  background: #f3d36b;
  padding-left: 12px;
  padding-top: 5px;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}

.qa-box__a-text {
  display: block;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
  font-size: 16px;
  font-weight: 700;
}

/* フォーカス可視化 */
.qa-box__head:focus-visible {
  outline: 2px solid #a8efe6;
  outline-offset: 4px;
}

/*----------------------------------------
	news
----------------------------------------*/
.news__inner {
  text-align: center;
}

.news__card {
  background: #ffffff;
  border-radius: 8px;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06);
  border: 1px solid #e6eaed;
  padding: clamp(14px, 2.5vw, 22px);
  max-width: 800px;
  margin: 0 auto;
  text-align: left;
  margin-bottom: clamp(32px, 4vw, 48px);
}

.news__list {
  display: grid;
  gap: 0; /* 仕切り線で区切るのでgapは0 */
}

.news__item + .news__item {
  border-top: 1px solid #e6eaed;
}

.news__link {
  display: grid;
  grid-template-columns: 1fr auto; /* 左：本文、右：日付 */
  grid-template-rows: auto auto; /* メタ/タイトル＋抜粋 */
  gap: 6px 14px;
  padding: clamp(12px, 2vw, 16px) 6px;
  text-decoration: none;
  color: #444444;
}
@media (hover: hover) {
  .news__link {
    -webkit-transition: background 0.2s ease;
    transition: background 0.2s ease;
  }
  .news__link:hover {
    background: #e6f7f8;
  }
}

.news__link:focus-visible {
  background: #e6f7f8;
}

.news__meta {
  grid-column: 1/-1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  gap: 10px;
}

.news__badge {
  display: inline-block;
  padding: 4px 10px;
  border: 2px solid #009092;
  color: #009092;
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1;
}

.news__date {
  color: #8f9aa3;
  font-size: 12px;
  white-space: nowrap;
}

.news__title {
  grid-column: 1/-1;
  font-size: clamp(16px, 2vw, 18px);
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box; /* 2行省略 */
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.news__excerpt {
  grid-column: 1/-1;
  color: #8f9aa3;
  font-size: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box; /* 2行省略 */
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  margin-bottom: 4px;
}

.news__more-link {
  font-weight: 700;
}

/* ===== SP版375ピクセル・PC版1280ピクセル確認 ===== */
/*----------------------------------------
ご検討の皆様へ（アコーディオン
----------------------------------------*/
.aud-acc {
  display: grid;
  gap: 16px;
  max-width: 800px;
  margin-inline: auto;
}

.aud-acc__item {
  background: #ffffff;
  border: 1px solid #e6eaed;
  border-radius: 12px;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06);
  padding: 12px;
}

/* 見出しボタン：左=アイコン+ラベル / 右=トグル */
.aud-acc__head {
  display: grid;
  grid-template-columns: 1fr auto;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  width: 100%;
  background: transparent;
  border: 0;
  padding: 0 8px 8px;
  cursor: pointer;
  text-align: left;
}
.aud-acc__head:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 4px;
}

.aud-acc__left {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 10px;
  min-width: 0; /* ラベルのellipsis用 */
}

.aud-acc__icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #e6f7f8;
  border: 2px solid #009092;
  color: #009092;
}
.aud-acc__icon i {
  font-size: 16px;
  line-height: 1;
}

.aud-acc__label {
  font-weight: 700;
  color: #133b45;
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.4;
}

/* 右側の + / - アイコン（FA） */
.aud-acc__toggle {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border: 2px solid #009092;
  color: #009092;
  border-radius: 8px;
  -webkit-transition: background 0.2s ease, color 0.2s ease,
    border-color 0.2s ease;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.aud-acc__toggle i {
  font-size: 14px;
  line-height: 1;
}

.aud-acc__panel {
  padding: 10px 8px 2px;
  border-top: 1px solid #e6eaed;
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
  display: none; /* デフォルトは非表示 */
}

/* 開閉に応じたアイコン出し分け（JSは aria-expanded を更新） */
/* デフォルト状態：プラスアイコンのみ表示 */
.aud-acc__toggle .aud-acc__plus {
  display: inline-block !important;
}
.aud-acc__toggle .aud-acc__minus {
  display: none !important;
}

/* aria-expanded="true" の時のアイコン切り替え */
.aud-acc__head[aria-expanded="true"] .aud-acc__toggle .aud-acc__plus {
  display: none !important;
}
.aud-acc__head[aria-expanded="true"] .aud-acc__toggle .aud-acc__minus {
  display: inline-block !important;
}

/* 1個目オープン状態（互換）：.is-open が付与されていれば必ず開く */
.aud-acc__item.is-open .aud-acc__panel {
  display: block;
}

/* .is-open 状態でのアイコン切り替え（最高の詳細度で確実に適用） */
.aud-acc__item.is-open .aud-acc__toggle .aud-acc__plus {
  display: none !important;
}
.aud-acc__item.is-open .aud-acc__toggle .aud-acc__minus {
  display: inline-block !important;
}

@media (hover: hover) {
  .aud-acc__head:hover .aud-acc__toggle {
    background: #009092;
    color: #ffffff;
    border-color: #009092;
  }
}

/*----------------------------------------
サービス内ナビ
----------------------------------------*/
.svc-subnav {
  background: #e6f7f8;
}

/* --- Service Sub Nav を hero__stat に揃える --- */
/* リストの列数・幅感も hero__stats に合わせる */
.svcnav__list {
  /* グリッド・最大幅などを継承 */
}

/* 各アイテム（カード本体）も hero__stat を継承 */
/* クリックできることを視覚的に強調：カード全体をリンク化 */
.svcnav__link {
  position: relative;
  display: grid;
  grid-template-rows: auto auto auto auto;
  place-items: center;
  gap: clamp(8px, 1vw, 12px);
  width: 100%;
  height: 100%;
  text-decoration: none;
  color: inherit; /* テキスト色はカードと同調 */
  /* hover/active/focus の演出は hero__stat に準拠（box-shadow, translate） */
}
@media (hover: hover) {
  .svcnav__link:hover {
    /* 影・浮き上がりは継承元で効く */
    /* 右下の矢印も少し動かす */
  }
  .svcnav__link:hover .svcnav__arrow {
    -webkit-transform: translateY(2px);
    transform: translateY(2px);
    background: #009092;
    color: #fff;
    border-color: #009092;
  }
}
.svcnav__link:focus-visible {
  outline: 3px solid rgba(0, 144, 146, 0.34);
  outline-offset: 4px;
  border-radius: 8px; /* カードの角丸に合わせる */
}

/* 01（番号）：見た目と下線は hero__stat-point に完全寄せ */
.svcnav__point {
  /* 下線やサイズ、色は currentColor で一致 */
}

/* タイトル：hero__stat-lead と完全一致 */
.svcnav__label {
  max-width: 95%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* アイコン丸背景：hero__icon と同じ */
/* svcnav__arrow：下段・下向き矢印に変更 */
.svcnav__arrow {
  grid-row: 4; /* 4段目に配置 */
  position: static; /* 絶対配置解除 */
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 9999px;
  border: 2px solid #009092;
  color: #009092;
  background: #fff;
  -webkit-transition: background 0.18s ease, color 0.18s ease,
    border-color 0.18s ease, -webkit-transform 0.18s ease;
  transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease,
    -webkit-transform 0.18s ease;
  transition: transform 0.18s ease, background 0.18s ease, color 0.18s ease,
    border-color 0.18s ease;
  transition: transform 0.18s ease, background 0.18s ease, color 0.18s ease,
    border-color 0.18s ease, -webkit-transform 0.18s ease;
}
.svcnav__arrow i {
  font-size: 16px;
  line-height: 1;
  -webkit-transition: -webkit-transform 0.25s ease;
  transition: -webkit-transform 0.25s ease;
  transition: transform 0.25s ease;
  transition: transform 0.25s ease, -webkit-transform 0.25s ease;
  -webkit-transform: rotate(90deg);
  transform: rotate(90deg);
}

/*----------------------------------------
サービス内容・料金
----------------------------------------*/
/* ===== Service blocks (image + lead + cards) ===== */
.svc-block {
  /* カードは共通 .pricing-cards をそのまま置くだけ */
}
.svc-block__head {
  display: grid;
  gap: 18px;
}
@media screen and (min-width: 768px) {
  .svc-block__head {
    grid-template-columns: 1.2fr 1fr;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    gap: 26px;
  }
}
.svc-block__media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
}
.svc-block__kicker {
  color: #009092;
  font-weight: 700;
  letter-spacing: 0.08em;
  margin-bottom: 6px;
}
.svc-block__title {
  font-size: clamp(32px, 4vw, 40px);
  font-weight: 700;
  line-height: 1.2;
  margin-bottom: 10px;
}
.svc-block__lead {
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
}
.svc-block .pricing-cards {
  margin-top: clamp(18px, 3vw, 28px);
}

/* ==============
   共通
   ============== */
.company-intro__grid,
.company-message__grid {
  display: grid;
  gap: clamp(24px, 3vw, 32px);
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}
@media screen and (min-width: 768px) {
  .company-intro__grid,
  .company-message__grid {
    grid-template-columns: 1fr 1.1fr;
  }
}

.company-intro__text,
.company-message__text {
  font-size: clamp(16px, 2vw, 18px);
}

.company-intro__media img,
.company-message__media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06);
}

/* ==============
   Company Intro
   ============== */
.company-intro__kicker {
  color: #009092;
  font-weight: 700;
  letter-spacing: 0.06em;
  margin-bottom: 6px;
}

.company-intro__title {
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 700;
  line-height: 1.2;
  margin-bottom: 8px;
}

.company-intro__lead {
  font-size: clamp(16px, 2vw, 18px);
  margin-bottom: 8px;
}

/* ==============
   Message
   ============== */
.company-message {
  background: #e6f7f8;
}

/* ==============
   Facts (table)
   ============== */
.company-profile {
  max-width: 800px;
  margin-inline: auto;
  border-top: 1px solid #e6eaed;
}

.company-profile__item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px 18px;
  padding: 14px 0;
  border-bottom: 1px solid #e6eaed;
}
@media screen and (min-width: 768px) {
  .company-profile__item {
    grid-template-columns: 180px 1fr; /* PC: 左ラベル / 右テキスト */
  }
}

.company-profile__term {
  font-size: 14px;
  color: #8f9aa3;
  line-height: 1.6;
}
@media screen and (min-width: 768px) {
  .company-profile__term {
    font-weight: 700;
    color: #133b45;
  }
}

.company-profile__desc {
  line-height: 1.6;
  font-size: clamp(16px, 2vw, 18px);
}
.company-profile__desc a {
  color: inherit;
}

.company-profile__muted {
  color: #8f9aa3;
}

/* ==============
   Map
   ============== */
.map-embed {
  position: relative;
  aspect-ratio: 16/9;
  border-radius: 12px;
  overflow: hidden;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06);
  margin-top: clamp(8px, 2vw, 16px);
  max-width: 800px;
  margin-inline: auto;
}

.map-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.company-profile a:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 2px;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
}

/* サンクス専用の微調整があればここに。今は空でOK */
/* =========================
   Contact thanks Page
   ========================= */
/* 直通電話 */
.contact__hotline {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; /* ← inline-flexから変更 */
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center; /* ← 横方向の中央寄せ */
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; /* ← 縦方向の中央寄せ */
  gap: clamp(8px, 1vw, 12px);
  margin-top: clamp(12px, 2vw, 16px);
  padding: 12px 14px;
  border: 2px dashed #009092;
  border-radius: 8px;
  background: #e6f7f8;
  font-weight: 700;
  width: 100%;
  white-space: nowrap; /* ← これを追加！ */
  /* 小画面では詰みやすいので、SPは折返し許可 */
  white-space: nowrap;
}
.contact__hotline i {
  margin-top: 3px;
  color: #009092;
}
.contact__hotline:focus-visible {
  outline: none;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  border-radius: 8px;
}
@media (max-width: 374px) {
  .contact__hotline {
    white-space: normal;
  }
}

.contact__hotline-link {
  font-size: clamp(16px, 2.2vw, 20px);
  color: #006566;
  text-decoration: none;
}

/* 資料送付案内 */
.form__notice {
  display: grid;
  grid-template-columns: 28px 1fr;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
  gap: clamp(8px, 1vw, 12px);
  border-radius: 8px;
  padding: 12px 14px;
  margin-top: clamp(12px, 2vw, 16px);
  width: 100%;
}
.form__notice--accent {
  background: color-mix(in srgb, #f3d36b 30%, #fff);
  border: 1px solid #f3d36b;
}
.form__notice i {
  color: #c77d00;
  font-size: 18px;
  line-height: 1;
  margin-top: 7px;
}
.form__notice-title {
  font-weight: 700;
  margin-bottom: 2px;
  color: #133b45;
}
.form__notice-text {
  color: #444444;
  font-size: 14px;
}

/* =========================
   Contact Page
   ========================= */
.contact__container {
  max-width: 860px;
}

.contact__lead {
  text-align: center;
  margin-bottom: clamp(24px, 3vw, 32px);
}

.contact-form {
  display: grid;
  gap: clamp(24px, 3vw, 32px);
}

/* --- フルセット：常に1行表示＋1行幅を確保 --- */
/* 行全体を使って幅を稼ぐ（2カラムをまたぐ） */

/* 念のため本文も“1行死守”に寄せる */

/* 脚注 */
.form__footnotes {
  margin-top: 8px;
  display: grid;
  gap: 4px;
}
.form__footnotes li {
  font-size: 14px;
  color: #8f9aa3;
}

/* ===== Fieldset をカード化して「任意ブロック感」を出す ===== */
.form__fieldset--card {
  padding: clamp(14px, 2.4vw, 20px);
  border: 1px solid #e6eaed;
  border-radius: 8px;
  background: #ffffff;
  position: relative;
  margin-top: -8px;
  /* 中のブロック間も区切りを少し出す（任意） */
}

/* ========= Archive Filter ========= */
.archive-filter {
  margin-bottom: clamp(24px, 3vw, 32px);
  padding: 16px;
  background: #f8fafb;
  border-radius: 8px;
}

.archive-filter__categories {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 16px;
}

.archive-filter__label {
  font-size: 14px;
  font-weight: 700;
  color: #133b45;
  margin-right: 8px;
}

.archive-filter__item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  font-size: 14px;
  text-decoration: none;
  color: #133b45;
  background: #ffffff;
  border: 1px solid #e6eaed;
  border-radius: 20px;
  transition: all 0.2s ease;
}

.archive-filter__item:hover {
  background: #e6f7f8;
  border-color: #009092;
  color: #006566;
}

.archive-filter__item.is-active {
  background: #009092;
  border-color: #009092;
  color: #ffffff;
}

.archive-filter__count {
  font-size: 12px;
  opacity: 0.8;
}

/* ========= News Archive Layout ========= */
.news-archive__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(24px, 3vw, 32px);
}
@media screen and (min-width: 768px) {
  .news-archive__grid {
    grid-template-columns: 7fr 3fr; /* ＝ 70% / 30% 程度 */
    -webkit-box-align: start;
    -ms-flex-align: start;
    align-items: start;
  }
}

/* ===== Main list ===== */
.archive-news__list {
  display: grid;
  gap: clamp(16px, 2vw, 24px);
}

/* 行カード */
.archive-news__link {
  display: grid;
  grid-template-columns: clamp(88px, 20vw, 180px) 1fr;
  gap: clamp(16px, 2vw, 24px);
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
  padding: clamp(8px, 1vw, 12px); /* 追加 */
  border: 1px solid transparent; /* 追加：hoverで枠色だけ変える */
  border-radius: 12px; /* 追加：角丸 */
  color: #444444;
  text-decoration: none;
  -webkit-transition: background 0.2s ease, border-color 0.2s ease;
  transition: background 0.2s ease, border-color 0.2s ease; /* まとめる */
  min-height: 88px; /* SPでの最低タップ領域感（調整可） */
}

@media (hover: hover) {
  .archive-news__link:hover {
    background: #e6f7f8;
    border-color: #e6eaed;
  }
}
.archive-news__link:focus-visible {
  outline: 2px solid #009092;
  outline-offset: 2px;
}

/* サムネ */
.archive-news__thumb {
  aspect-ratio: 4/3;
  border-radius: 8px;
  overflow: hidden;
  background: #e6f7f8;
}
.archive-news__thumb img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
  display: block;
}

/* 本文 */
.archive-news__body {
  min-width: 0;
}

.archive-news__title {
  font-size: clamp(16px, 2vw, 20px);
  font-weight: 700;
  line-height: 1.2;
  margin-top: calc(clamp(8px, 1vw, 12px) / 2);
}

.archive-news__excerpt {
  color: #8f9aa3;
  font-size: clamp(16px, 2vw, 18px);
  margin-top: calc(clamp(8px, 1vw, 12px) / 2);
  /* 2行省略 */
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

/* ===== aside ===== */
.news__aside {
  position: static; /* 初期値を明示 */
  -ms-flex-item-align: start;
  align-self: start;
}
@media screen and (min-width: 768px) {
  .news__aside {
    position: sticky;
    top: 90px; /* ヘッダーの高さ + 余白 */
  }
}

.aside__title {
  font-size: clamp(16px, 2.2vw, 20px);
  font-weight: 700;
  color: #133b45;
  border-left: 4px solid #009092;
  padding-left: 10px;
  margin-bottom: 12px;
}

/* category list */
.cat-list {
  display: grid;
  gap: 0;
  border: 1px solid #e6eaed;
  border-radius: 8px;
  overflow: hidden;
}
.cat-list li + li {
  border-top: 1px solid #e6eaed;
}
.cat-list a {
  display: block;
  padding: 12px 12px;
  background: #ffffff;
}
@media (hover: hover) {
  .cat-list a {
    -webkit-transition: background 0.2s ease;
    transition: background 0.2s ease;
  }
  .cat-list a:hover {
    background: #e6f7f8;
  }
}

/* カテゴリー項目のアクティブ状態 */
.cat-list a.is-active {
  background: #009092;
  color: #ffffff;
}

.cat-list a.is-active:hover {
  background: #006566;
}

/* カテゴリー数表示 */
.cat-count {
  font-size: 12px;
  opacity: 0.8;
  margin-left: auto;
}

.cat-list a {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* サイドバーセクション間の余白 */
.aside__section {
  margin-bottom: 32px;
}

.aside__section:last-child {
  margin-bottom: 0;
}

/* アーカイブリスト */
.archive-list {
  border: 1px solid #e6eaed;
  border-radius: 8px;
  overflow: hidden;
}

.archive-list li {
  border-top: 1px solid #e6eaed;
}

.archive-list li:first-child {
  border-top: none;
}

.archive-list a {
  display: block;
  padding: 10px 12px;
  background: #ffffff;
  transition: background 0.2s ease;
  font-size: 14px;
}

.archive-list a:hover {
  background: #e6f7f8;
}

/* 最新記事リスト */
.recent-list {
  display: grid;
  gap: 16px;
}

.recent-item {
  border: 1px solid #e6eaed;
  border-radius: 8px;
  overflow: hidden;
}

.recent-link {
  display: block;
  padding: 12px;
  background: #ffffff;
  transition: background 0.2s ease;
  text-decoration: none;
}

.recent-link:hover {
  background: #f8fafb;
}

.recent-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.recent-date {
  font-size: 12px;
  color: #8f9aa3;
  font-weight: 400;
}

.recent-badge {
  font-size: 10px;
  padding: 2px 6px;
  border-radius: 12px;
  background: #e6eaed;
  color: #133b45;
  font-weight: 700;
}

.recent-badge--order {
  background: #ff8d3b;
  color: #ffffff;
}

.recent-badge--column {
  background: #009092;
  color: #ffffff;
}

.recent-badge--holiday {
  background: #6b73ff;
  color: #ffffff;
}

.recent-title {
  font-size: 14px;
  line-height: 1.4;
  color: #133b45;
  font-weight: 500;
}

/* ウィジェットエリア */
.aside__section--widgets .widget {
  margin-bottom: 24px;
  padding: 16px;
  background: #f8fafb;
  border-radius: 8px;
}

.aside__section--widgets .widget:last-child {
  margin-bottom: 0;
}

.aside__section--widgets .widget__title {
  font-size: 16px;
  font-weight: 700;
  color: #133b45;
  margin-bottom: 12px;
  border-left: 4px solid #009092;
  padding-left: 10px;
}

/* ===== Pagination ===== */
.pagination {
  margin-top: clamp(24px, 3vw, 32px);
  margin-inline: auto;
  text-align: center; /* ページネーションを中央寄せ */
}

.pagination__list {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  gap: 8px;
}

.pagination__item a {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid #e6eaed;
  border-radius: 6px;
  background: #ffffff;
  text-decoration: none;
  font-weight: 700;
  color: #444444;
}
@media (hover: hover) {
  .pagination__item a {
    -webkit-transition: background 0.2s ease, color 0.2s ease,
      border-color 0.2s ease;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  }
  .pagination__item a:hover {
    background: #e6f7f8;
    border-color: #006566;
    color: #006566;
  }
}

.pagination__item a:focus-visible {
  outline: 2px solid #009092;
  outline-offset: 2px;
}

.pagination__item.is-current a {
  background: #009092;
  border-color: #009092;
  color: #fff;
}

/* =========================
   News Single (post)
   ========================= */
.post__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(24px, 3vw, 32px);
}
@media screen and (min-width: 768px) {
  .post__grid {
    grid-template-columns: 7fr 3fr; /* ＝ 70% / 30% 程度 */
    -webkit-box-align: start;
    -ms-flex-align: start;
    align-items: start;
  }
}

/* ===== Main ===== */
.post__main {
  min-width: 0; /* for ellipsis / clamp */
}

.post__header {
  margin-bottom: clamp(8px, 1vw, 12px);
}

.post__meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  gap: clamp(8px, 1vw, 12px);
  margin-top: calc(clamp(8px, 1vw, 12px) / 2);
}

.post__thumb {
  margin: clamp(16px, 2vw, 24px) 0 clamp(8px, 1vw, 12px);
  border-radius: 12px;
  overflow: hidden;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06);
}
.post__thumb img {
  display: block;
  width: 100%;
  height: auto;
}

.post__lead {
  background: #e6f7f8;
  border-left: 4px solid #009092;
  padding: clamp(8px, 1vw, 12px) clamp(16px, 2vw, 24px);
  border-radius: 8px;
  margin-bottom: clamp(16px, 2vw, 24px);
}

.post__body {
  font-size: clamp(16px, 2vw, 18px);
  line-height: 1.6;
}
.post__body h2 {
  font-size: clamp(24px, 2.6vw, 32px);
  margin: clamp(16px, 2vw, 24px) 0 clamp(8px, 1vw, 12px);
  color: #133b45;
}
.post__body h3 {
  font-size: clamp(16px, 2.2vw, 20px);
  margin: clamp(8px, 1vw, 12px) 0 calc(clamp(8px, 1vw, 12px) / 2);
  font-weight: 700;
  color: #133b45;
}
.post__body p {
  margin: clamp(8px, 1vw, 12px) 0;
}
.post__body ul,
.post__body ol {
  margin: clamp(8px, 1vw, 12px) 0;
  padding-left: 1.2em;
}
.post__body li {
  margin: calc(clamp(8px, 1vw, 12px) / 2) 0;
}

.post__quote {
  margin: clamp(8px, 1vw, 12px) 0;
  padding: clamp(8px, 1vw, 12px) clamp(16px, 2vw, 24px);
  border-left: 4px solid #006566; /* 近似の既存色に寄せる */
  background: #e6f7f8;
  border: 1px solid #e6eaed;
  border-radius: 8px;
}

.post__pager {
  margin-top: clamp(16px, 2vw, 24px);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  gap: clamp(8px, 1vw, 12px);
}

/* =========================
   Policy Page
   ========================= */
.policy__inner {
  max-width: 860px;
}

.policy__title {
  margin-bottom: 20px;
}

.policy__block {
  margin-top: clamp(16px, 2vw, 24px);
}

.policy__list {
  margin-top: 8px;
  padding-left: 1.2em;
  list-style: disc;
}

.policy__link {
  text-decoration: underline;
  word-break: break-all;
  color: #009092;
}
@media (hover: hover) {
  .policy__link:hover {
    opacity: 0.8;
  }
}

/* ===== コンテナ ===== */
.u-container {
  /* resetでborder-boxを入れているのでpaddingを含めて100%で収まる */
  width: min(100%, 1260px);
  margin-inline: auto;
  padding-inline: 15px;
}
@media screen and (min-width: 768px) {
  .u-container {
    padding-inline: 30px;
  }
}

/* ===== セクション間余白 ===== */
/* 基本リズム：すべてのセクションに適用 */
.section {
  padding-block: clamp(50px, 6vw, 80px);
}

/* ヒーロー直下はゆったり */
.hero + section {
  padding-top: clamp(60px, 9vw, 120px);
}

/* 中間のリード帯は上の余白を削除 */
.lead {
  padding-top: 0;
}

.lead-green {
  background-color: #e6f7f8;
}

/* 見出し下の余白は共通化 */
.section__title {
  margin-bottom: clamp(24px, 3vw, 32px);
}

/* ===== セクションタイトル ===== */
/* ラッパー */
.section__title {
  display: grid;
  gap: clamp(6px, 1.4vw, 10px); /* 英字↔日本語の間隔 */
  justify-items: center; /* 既定は中央 */
  margin-bottom: clamp(24px, 3vw, 32px); /* 見出し下の余白を統一 */
  text-align: center;
}

/* 英字（eyebrow） */
.section__title-english {
  font-size: clamp(12px, 1.6vw, 14px);
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1;
  color: #009092;
  text-transform: none; /* 必要なら uppercase に */
  position: relative;
  padding-bottom: 6px;
  /* 下線（短めのラインで控えめに） */
}
.section__title-english::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  width: clamp(36px, 6vw, 64px);
  height: 2px;
  background: currentColor;
  border-radius: 1px;
  opacity: 0.55; /* さらに軽く */
}

/* 日本語（メイン） */
.section__title-japanese {
  font-size: clamp(32px, 4vw, 40px); /* 例: clamp(32px, 4vw, 40px) */
  line-height: 1.2;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-wrap: balance; /* 折返し最適化（対応ブラウザ） */
}

/* ===== スクリーンリーダー専用表示 ===== */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* ===== SP/PC表示切替ユーティリティ ===== */
@media screen and (min-width: 768px) {
  .only-sp {
    display: none !important;
  }
}

@media (min-width: 992px) {
  .only-md {
    display: none !important;
  }
}

.only-pc {
  display: none;
}
@media (min-width: 992px) {
  .only-pc {
    display: block;
  }
}

/* ===== 任意：フォーカスを強制的に付与したい時だけ使う ===== */
.u-focus:focus-visible {
  outline: 2px solid rgba(0, 144, 146, 0.5);
  outline-offset: 2px;
  -webkit-box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
  box-shadow: 0 0 0 3px rgba(0, 144, 146, 0.35);
}

.u-text-highlight {
  color: #009092;
  font-weight: 700;
  font-size: clamp(24px, 2.6vw, 32px);
}

/* 下層ページ共通 */
.page-header {
  background: #f7f7f7;
  padding: 40px 20px;
  text-align: center;
}

.page-header__title {
  font-size: 28px;
  font-weight: 700;
}

.page-header__lead {
  margin-top: 10px;
  font-size: 16px;
  color: #666;
}

/* ===== 記事本文スタイル（WordPress動的コンテンツ用） ===== */
.post__body {
  font-family: "Noto Sans JP", system-ui, -apple-system, sans-serif;
  color: #444444;
  line-height: 1.8;
  font-size: clamp(16px, 2vw, 18px);
}

/* 段落 */
.post__body p {
  margin: clamp(12px, 1.5vw, 16px) 0;
}

/* 見出し */
.post__body h2 {
  font-size: clamp(24px, 2.6vw, 32px);
  margin: clamp(24px, 3vw, 40px) 0 clamp(12px, 1.5vw, 16px);
  color: #133b45;
  font-weight: 700;
  border-left: 4px solid #009092;
  padding-left: clamp(12px, 1.5vw, 16px);
}

.post__body h3 {
  font-size: clamp(20px, 2.2vw, 24px);
  margin: clamp(20px, 2.5vw, 32px) 0 clamp(8px, 1vw, 12px);
  color: #133b45;
  font-weight: 700;
}

.post__body h4 {
  font-size: clamp(18px, 2vw, 20px);
  margin: clamp(16px, 2vw, 24px) 0 clamp(8px, 1vw, 12px);
  color: #133b45;
  font-weight: 600;
}

/* リスト */
.post__body ul,
.post__body ol {
  margin: clamp(12px, 1.5vw, 16px) 0;
  padding-left: 1.2em;
}

.post__body li {
  margin: clamp(4px, 0.5vw, 6px) 0;
}

/* 強調 */
.post__body strong {
  font-weight: 700;
  color: #133b45;
}

/* リンク */
.post__body a {
  color: #009092;
}

.post__body a:hover {
  color: #007b7c;
}

/* 画像 */
.post__body img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
  margin: clamp(12px, 1.5vw, 16px) 0;
}

.post__body figure {
  margin: clamp(16px, 2vw, 24px) 0;
  text-align: center;
}

.post__body figcaption {
  font-size: 0.9em;
  color: #8f9aa3;
  margin-top: 0.4em;
  text-align: center;
}

/* 引用 */
.post__body blockquote {
  margin: clamp(16px, 2vw, 24px) 0;
  padding: clamp(16px, 2vw, 24px);
  background: #e6f7f8;
  border-left: 4px solid #009092;
  border-radius: 8px;
  font-style: italic;
}

.post__body blockquote p {
  margin: 0;
}

/* テーブル */
.post__body table {
  width: 100%;
  border-collapse: collapse;
  margin: clamp(16px, 2vw, 24px) 0;
  font-size: clamp(14px, 1.5vw, 16px);
}

.post__body th,
.post__body td {
  border: 1px solid #e6eaed;
  padding: 0.8em 1em;
  text-align: left;
}

.post__body th {
  background: #e6f7f8;
  font-weight: 600;
  color: #133b45;
}

/* コード */
.post__body code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  background: #f4f6f8;
  border-radius: 4px;
  padding: 0.1em 0.3em;
  font-size: 0.9em;
}

.post__body pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  background: #f4f6f8;
  border-radius: 8px;
  padding: 1em;
  overflow: auto;
  margin: clamp(16px, 2vw, 24px) 0;
}

.post__body pre code {
  background: none;
  padding: 0;
}

/* 水平線 */
.post__body hr {
  border: none;
  border-top: 1px solid #e6eaed;
  margin: clamp(24px, 3vw, 40px) 0;
}

/* WordPress特有のクラス */
.post__body .wp-block-quote {
  margin: clamp(16px, 2vw, 24px) 0;
  padding: clamp(16px, 2vw, 24px);
  background: #e6f7f8;
  border-left: 4px solid #009092;
  border-radius: 8px;
}

.post__body .wp-block-image {
  margin: clamp(16px, 2vw, 24px) 0;
}

.post__body .wp-caption-text {
  font-size: 0.9em;
  color: #8f9aa3;
  margin-top: 0.4em;
  text-align: center;
}

/* ===== エントリータグ ===== */
.entry-tag-items {
  margin: clamp(24px, 3vw, 40px) 0;
  padding: clamp(16px, 2vw, 24px);
  background: #f8f9fa;
  border-radius: 8px;
}

.entry-tag-head {
  font-size: clamp(14px, 1.5vw, 16px);
  font-weight: 600;
  color: #133b45;
  margin-bottom: clamp(8px, 1vw, 12px);
}

.entry-tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.entry-tag-item {
  display: inline-block;
}

.entry-tag-item a {
  display: inline-block;
  padding: 4px 12px;
  background: #009092;
  color: white;
  text-decoration: none;
  border-radius: 16px;
  font-size: clamp(12px, 1.2vw, 14px);
  transition: background 0.3s ease;
}

.entry-tag-item a:hover {
  background: #007b7c;
}

/* ===== 関連記事 ===== */
.entry-related {
  margin: clamp(32px, 4vw, 48px) 0;
  padding: clamp(24px, 3vw, 32px);
  background: #f8f9fa;
  border-radius: 8px;
}

.related-title {
  font-size: clamp(18px, 2vw, 22px);
  font-weight: 700;
  color: #133b45;
  margin-bottom: clamp(16px, 2vw, 24px);
  text-align: center;
  border-bottom: 2px solid #009092;
  padding-bottom: clamp(8px, 1vw, 12px);
}

.related-items {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(16px, 2vw, 24px);
}

.related-item {
  display: block;
  background: white;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  text-decoration: none;
  color: inherit;
}

.related-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}

.related-item-img {
  aspect-ratio: 16/9;
  overflow: hidden;
}

.related-item-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}

.related-item:hover .related-item-img img {
  transform: scale(1.05);
}

.related-item-title {
  padding: clamp(12px, 1.5vw, 16px);
  font-size: clamp(14px, 1.5vw, 16px);
  font-weight: 600;
  line-height: 1.4;
  color: #133b45;
}

/* SP対応 */
@media (max-width: 640px) {
  .related-items {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 16px;
  }

  .entry-tag-list {
    gap: 6px;
  }

  .entry-tag-item a {
    padding: 3px 10px;
    font-size: 12px;
  }
}

/* ===== アーカイブページのタグ表示 ===== */
.archive-news__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

.archive-tag-item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  background: #e6f7f8;
  color: #009092;
  font-size: 12px;
  border-radius: 12px;
}

.archive-tag-item i {
  font-size: 10px;
}

.archive-tag-more {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  background: #8f9aa3;
  color: white;
  font-size: 12px;
  border-radius: 12px;
}

/* ===== 関連記事の画像なし対応 ===== */
.related-item-noimg {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f4f6f8;
  color: #8f9aa3;
  font-size: 48px;
}

/* ===== 検索ウィジェット ===== */
.archive-search-widget,
.news-search-widget {
  max-width: 600px;
  margin: 0 auto 32px;
}

.widget_search {
  background: #f8f9fa;
  border-radius: 12px;
  padding: 24px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.widget_search .widget-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 18px;
  font-weight: 600;
  color: #133b45;
  margin-bottom: 16px;
}

.widget_search .widget-title i {
  color: #009092;
}

.search-form {
  width: 100%;
}

.search-form-inner {
  display: flex;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.search-field {
  flex: 1;
  padding: 12px 16px;
  height: 46px;
  border: none;
  font-size: 16px;
  background: white;
  color: #333;
  outline: none;
}

.search-field::placeholder {
  color: #8f9aa3;
}

.search-field:focus {
  box-shadow: inset 0 0 0 2px #009092;
}

.search-submit {
  padding: 12px 16px;
  background: #009092;
  color: white;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
  min-width: 48px;
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.search-submit:hover {
  background: #007b7c;
}

.search-submit i {
  font-size: 16px;
}

/* SP対応 */
@media (max-width: 640px) {
  .archive-search-widget,
  .news-search-widget {
    margin: 0 0 24px;
  }

  .widget_search {
    padding: 16px;
  }

  .widget_search .widget-title {
    font-size: 16px;
    margin-bottom: 12px;
  }

  .search-field {
    padding: 10px 12px;
    font-size: 14px;
    height: 44px;
  }

  .search-submit {
    padding: 10px 12px;
    min-width: 44px;
    min-height: 44px;
  }
}

/* ===== 検索結果ページ ===== */
.search-page-widget {
  max-width: 600px;
  margin: 0 auto 32px;
}

.search-result-count {
  text-align: center;
  margin-bottom: 24px;
  font-size: 16px;
  color: #133b45;
}

.search-result-count strong {
  color: #009092;
}

/* 検索キーワードハイライト */
.archive-news__excerpt mark {
  background: #fff3cd;
  color: #856404;
  padding: 0 2px;
  border-radius: 2px;
}

/* 検索結果なしの場合 */
.search-no-results {
  text-align: center;
  padding: 48px 24px;
  background: #f8f9fa;
  border-radius: 12px;
  margin: 32px 0;
}

.no-results-icon {
  font-size: 64px;
  color: #8f9aa3;
  margin-bottom: 16px;
}

.no-results-title {
  font-size: 24px;
  font-weight: 600;
  color: #133b45;
  margin-bottom: 16px;
}

.no-results-message {
  font-size: 16px;
  color: #666;
  margin-bottom: 24px;
  line-height: 1.6;
}

.no-results-suggestions {
  text-align: left;
  max-width: 400px;
  margin: 0 auto;
  background: white;
  padding: 20px;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.no-results-suggestions h4 {
  font-size: 16px;
  font-weight: 600;
  color: #133b45;
  margin-bottom: 12px;
}

.no-results-suggestions ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.no-results-suggestions li {
  padding: 4px 0;
  padding-left: 20px;
  position: relative;
  color: #666;
  font-size: 14px;
}

.no-results-suggestions li:before {
  content: "•";
  color: #009092;
  position: absolute;
  left: 0;
}

/* アーカイブ形式での検索結果なし */
.archive-news__item--no-results {
  border: none !important;
  padding: 0 !important;
}

.archive-news__item--no-results .search-no-results {
  margin: 0;
}

@media (max-width: 640px) {
  .search-no-results {
    padding: 32px 16px;
    margin: 16px 0;
  }

  .no-results-icon {
    font-size: 48px;
  }

  .no-results-title {
    font-size: 20px;
  }

  .no-results-suggestions {
    padding: 16px;
  }
}

/* ===== 404エラーページ ===== */
.error-404-content {
  text-align: center;
  max-width: 600px;
  margin: 0 auto;
}

.error-404-icon {
  margin-bottom: 24px;
}

.error-404-message {
  font-size: 18px;
  line-height: 1.6;
  margin-bottom: 32px;
  color: #666;
}

.error-404-search {
  margin-bottom: 40px;
}

.error-404-search-title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 20px;
  font-weight: 600;
  color: #133b45;
  margin-bottom: 16px;
}

.error-404-search-title i {
  color: #009092;
}

.error-404-suggestions {
  margin-bottom: 40px;
}

.error-404-suggestions-title {
  font-size: 20px;
  font-weight: 600;
  color: #133b45;
  margin-bottom: 20px;
}

.error-404-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  max-width: 600px;
  margin: 0 auto;
}

.error-404-recent {
  text-align: left;
}

.error-404-recent-title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 20px;
  font-weight: 600;
  color: #133b45;
  margin-bottom: 20px;
}

.error-404-recent-title i {
  color: #009092;
}

/* 404ページ専用記事リストのスタイル調整 */
.error-404-post-list.archive-news__list {
  max-width: 800px;
  margin: 0 auto;
}

/* 404専用検索ウィジェット */
.error-404-search-widget .widget_search {
  background: white;
  border: 2px solid #e6eaed;
  margin: 0;
}

/* SP対応 */
@media (max-width: 640px) {
  .error-404-links {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .error-404-link {
    padding: 12px;
  }

  .error-404-recent-link {
    padding: 12px;
  }

  .error-404-recent-title {
    font-size: 14px;
  }
}

/* ===== Form Validation Styles ===== */
.form__control.error,
.checkline__input.error {
  border-color: #e74c3c !important;
  box-shadow: 0 0 0 2px rgba(231, 76, 60, 0.2) !important;
  background-color: rgba(231, 76, 60, 0.05);
}

.form__error {
  color: #e74c3c;
  font-size: 14px;
  margin-top: 8px;
  margin-bottom: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.form__error::before {
  content: "⚠";
  font-size: 16px;
  color: #e74c3c;
}

/* ===== Scroll Behavior Improvements ===== */
html {
  scroll-behavior: smooth;
  /* SP時: 64px + adminbar + 余白 */
  scroll-padding-top: calc(var(--header-h) + var(--adminbar-h) + 15px);
}

/* PC時は余白を増やす */
@media (min-width: 992px) {
  html {
    scroll-padding-top: calc(var(--header-h) + var(--adminbar-h) + 20px);
  }
}

/* スキップリンク（アクセシビリティ改善） */
.skip-link {
  position: absolute;
  top: -40px;
  left: 6px;
  z-index: 9999;
  padding: 8px 16px;
  background: #000;
  color: #fff;
  text-decoration: none;
  border-radius: 4px;
  transition: top 0.3s;
}

.skip-link:focus {
  top: 6px;
}

/* フォーカス改善 */
*:focus-visible {
  outline: 2px solid #007cba;
  outline-offset: 2px;
}

/* ===== Enhanced Animation Styles ===== */

/* 1. フェードインアニメーション */
.fade-in-element {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in-active {
  opacity: 1;
  transform: translateY(0);
}

/* 2. リップルエフェクト */
.btn-l,
.btn-m,
.btn-s {
  position: relative;
  overflow: hidden;
}

.ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  transform: scale(0);
  animation: ripple-effect 0.6s linear;
  pointer-events: none;
}

@keyframes ripple-effect {
  to {
    transform: scale(2);
    opacity: 0;
  }
}

/* 3. ボタンホバー効果強化 */
.btn-l,
.btn-m,
.btn-s {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.btn-l:hover,
.btn-m:hover,
.btn-s:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}

.btn-l:active,
.btn-m:active,
.btn-s:active {
  transform: translateY(0);
  transition-duration: 0.1s;
}

/* 4. カードホバー効果 */
.qa-box,
.cta-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.qa-box:hover,
.cta-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}

/* サービスカードはホバー効果なし・アニメーションなし */
.service-card {
  transition: none;
  opacity: 1 !important;
  transform: none !important;
}

.service-card:hover {
  transform: none;
  box-shadow: none;
}

/* サービスカードのフェードインアニメーション無効化 */
.service-card.fade-in-element {
  opacity: 1;
  transform: translateY(0);
}

/* 5. ローディングアニメーション（必要に応じて使用） */
.loading-spinner {
  display: inline-block;
  width: 20px;
  height: 20px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  border-top-color: #fff;
  animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* 6. スムーズなトランジション（グローバル改善） */
*,
*::before,
*::after {
  transition-property: opacity, transform, background-color, border-color, color,
    box-shadow;
  transition-duration: 0.2s;
  transition-timing-function: ease-out;
}

/* 7. フォーカス時のアニメーション */
.form__control:focus,
.checkline__input:focus {
  transform: scale(1.01);
  transition: all 0.2s ease;
}

/* 8. ページトップボタンの改善 */
.footer__pagetop {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.footer__pagetop:hover {
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}

/* 9. ヘッダーアニメーション */
.header {
  transition: all 0.3s ease;
}

/* 10. レスポンシブ対応（モーションを減らす設定に対応） */
@media (prefers-reduced-motion: reduce) {
  .fade-in-element,
  .btn-l,
  .btn-m,
  .btn-s,
  .service-card,
  .qa-box,
  .cta-card,
  .footer__pagetop,
  *,
  *::before,
  *::after {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }

  .fade-in-element {
    opacity: 1;
  }
}

/* Skip Link：通常は画面外。Tab でフォーカスされたら見える */
.skip-link{
  position: absolute;
  left: 16px;
  top: -48px;                /* ここで画面外に出す */
  padding: 8px 16px;
  background: transparent !important; /* ふだんは背景なし */
  color: #fff;
  z-index: 9999;
  transition: top .25s;
}

.skip-link:focus,
.skip-link:focus-visible{
  top: 16px;                 /* キーボード操作時だけ表示 */
  background: #000;          /* 見やすいように黒地に白文字 */
  outline: none;
}
