/* ==========================================================================
   GLOBAL RICH OEM LP - style.css
   Figma design (mobile / 393px canvas) を忠実に再現するベーススタイル
   レスポンシブ(Tablet/PC)は別途メディアクエリで追加予定
   ========================================================================== */

/* ---------- CSS Variables ---------- */
:root {
  /* Color */
  --c-primary: #3f8bc3;
  --c-primary-dark: #062f66;
  --c-primary-dark-hover: #0b4c9e;
  --c-blue-mid: #5e9bc7;
  --c-blue-tag: #408cc4;
  --c-blue-pale: #c8ddee;
  --c-blue-pale-2: #bcd1e0;
  --c-blue-bg: #f7fafc;
  --c-blue-bg-2: #f6fbff;
  --c-blue-bg-3: #d9e2eb;
  --c-blue-bg-4: #e4eef7;
  --c-gray-dark: #76747f;
  --c-gray: #b2b2b2;
  --c-gray-step: #ececec;
  --c-gray-footer: #abadb0;
  --c-text: #000000;
  --c-text-soft: #3b3a40;
  --c-white: #ffffff;
  --c-yellow: #fdff7d;
  --c-orange: #fb8805;

  /* Font */
  --font-jp: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  --font-accent: "Zen Antique Soft", var(--font-jp);
  --font-serif: "IBM Plex Serif", serif;

  /* Radius */
  --radius-s: 0.4375rem;  /* 7px  : flow step */
  --radius-m: 0.625rem;   /* 10px : input, button */
  --radius-l: 1.0625rem;  /* 17px : reasons card */

  /* Shadow */
  --shadow-card: 0.125rem 0.125rem 0.125rem 0 rgba(0, 0, 0, 0.15);

  /* Layout */
  --container-px: 1.5625rem; /* 25px 左右余白（カード基準） */
  --page-px: 1rem;           /* 16px 左右余白（全幅コンテンツ基準） */

  /* Motion */
  --transition-base: 0.3s ease;
}

/* ---------- Reset / Base ---------- */
*, *::before, *::after {
  box-sizing: border-box;
}

html {
  font-size: 100%;
  background: #e9ebee; /* 幅が広い画面でモバイル幅コンテンツの余白に見える背景色 */
}

body {
  margin: 0 auto;
  max-width: 24.5625rem; /* 393px : Figmaのモバイル基準幅。Tablet/PC対応は④で実装予定 */
  background: var(--c-white);
  box-shadow: 0 0 2.5rem rgba(0, 0, 0, 0.08);
  color: var(--c-text);
  font-family: var(--font-jp);
  font-weight: 400;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

ul, ol {
  list-style: none;
  margin: 0;
  padding: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
  cursor: pointer;
}

input, textarea {
  font: inherit;
  color: inherit;
}

.h1, h2, h3, p {
  margin: 0;
}

.top-h1 {
  font-size: 0.1rem;
}

/* ---------- Skip link ---------- */
.skip-link {
  position: absolute;
  top: 0;
  left: 0;
  transform: translateY(-100%);
  background: var(--c-primary-dark);
  color: var(--c-white);
  padding: 0.75rem 1.25rem;
  font-size: 0.875rem;
  z-index: 1000;
  transition: transform var(--transition-base);
}

.skip-link:focus {
  transform: translateY(0);
}

/* ==========================================================================
   ヘッダー
   ========================================================================== */
.header {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  height: 4.0625rem; /* 65px */
  background: var(--c-white);
}

.header__logo {
  display: flex;
  align-items: center;
  padding-left: 1rem;
  flex-shrink: 0; /* サイズ調整は画像自体(clampで縮小)に任せ、コンテナはそれに追従させる */
}

.header__logo-image {
  /* 393px以上はFigma通り37px。393px未満はビューポート幅に比例して縮小し、
     「無料で相談する」ボタンと重ならないようにする(幅はaspect比を保ったまま自動追従) */
  height: clamp(1.625rem, calc(37px * 100vw / 393px), 2.3125rem); /* 26px〜37px */
  width: auto;
}

.header__cta {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0; /* Figma通りの138pxを常に維持し、ボタンの文字が潰れないようにする */
  width: 8.625rem; /* 138px */
  background: var(--c-primary-dark);
  color: var(--c-white);
  font-size: 1rem; /* 16px */
  font-weight: 700;
  text-align: center;
  line-height: 1.3;
  transition: background-color var(--transition-base);
}

.header__cta:hover {
  background-color: var(--c-primary-dark-hover);
}

/* ==========================================================================
   ファーストビュー (Hero)
   ========================================================================== */
.hero {
  position: relative;
  min-height: 46.375rem; /* 742px */
  padding: 1.0625rem var(--container-px) 0;
  overflow: hidden;
}

/* Figma上の実寸(コンテナ393x731 / 拡大率249.77%・135.72% / オフセット-96.82%・-15.76%)を
   そのまま再現するため、backgroundではなく画像要素として配置 */
.hero__bg {
  position: absolute;
  z-index: 0;
  top: -1.9375rem; /* -31px */
  left: 0;
  width: 100%;
  height: 45.6875rem; /* 731px */
  overflow: hidden;
}

.hero__bg img {
  position: absolute;
  max-width: none;
  width: 249.77%;
  height: 135.72%;
  left: -96.82%;
  top: -15.76%;
}

.hero__title {
  position: relative;
  z-index: 2;
  font-weight: 700;
  line-height: 1;
}

.hero__title-line {
  display: flex;
  align-items: center;
  background: var(--c-white);
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  margin-bottom: 0.5rem;
  white-space: nowrap;
}

.hero__title-line:nth-child(1) {
  /* 393px以上はFigma通りの固定幅(201px)。393px未満はビューポート幅に比例して縮小し、
     画面からはみ出さないようにする(文字サイズも同じ比率で縮小するので中身は常に収まる) */
  width: clamp(8.75rem, calc(201px * 100vw / 393px), 12.5625rem); /* 140px〜201px */
  padding-left: clamp(0.3125rem, calc(8px * 100vw / 393px), 0.5rem);
}

.hero__title-line:nth-child(2) {
  width: clamp(14.6875rem, calc(336px * 100vw / 393px), 21rem); /* 235px〜336px */
  padding-left: clamp(0.15625rem, calc(4px * 100vw / 393px), 0.25rem);
}

.hero__title-accent {
  color: var(--c-primary);
  font-size: clamp(1.3125rem, calc(30px * 100vw / 393px), 1.875rem); /* 21px〜30px */
  line-height: 0.8333; /* 30px時に25pxになる比率。font-sizeに追従するので単位なし */
}

.hero__title-accent--lg {
  font-size: clamp(1.75rem, calc(40px * 100vw / 393px), 2.5rem); /* 28px〜40px */
}

.hero__title-particle {
  color: var(--c-gray-dark);
  font-size: clamp(0.875rem, calc(20px * 100vw / 393px), 1.25rem); /* 14px〜20px */
}

.hero__tagline {
  position: relative;
  z-index: 2;
  margin-top: 0.75rem;
  font-weight: 700;
  font-size: 0.875rem; /* 14px */
  line-height: 1.5625rem; /* 25px : Figma上のハイライト帯の高さに合わせる */
  color: var(--c-white);
}

.hero__tagline-line {
  display: block;
  width: fit-content;
  background: var(--c-primary);
  padding: 0 0.5rem;
  margin-bottom: 0.375rem; /* 6px : 帯と帯の間隔 */
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

.hero__dots {
  position: absolute;
  z-index: 2;
  top: 2.79rem; /* 44.63px (109.63 - 65) */
  /* 393px以上はFigma通り252px固定(「実績」の真上)。393px未満は見出しの文字サイズが
     比例縮小して「実績」の位置が左へ動くため、丸の位置も同じ比率で追従させる */
  left: clamp(11.25rem, calc(252px * 100vw / 393px), 15.75rem); /* 180px〜252px */
  display: flex;
  gap: 2.2875rem; /* 276.82 - 232.82 - 7.357 = 36.6px 間隔 */
}

.hero__dots img {
  width: 0.46rem; /* 7.357px */
  height: 0.46rem;
}

.hero__medal {
  position: absolute;
  z-index: 3;
  top: 7.25rem;    /* 116px */
  right: 1.5rem;
  width: 9.4rem;   /* 150.35px */
}

.hero__medal-image {
  width: 100%;
}

.hero__medal-text {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-family: var(--font-accent);
  color: var(--c-text-soft);
}

.hero__medal-line {
  display: block;
  font-size: 0.75rem; /* 12px */
  line-height: 1.0625rem;
}

.hero__medal-line:first-child {
  font-size: 1rem; /* 16px */
  line-height: 1.375rem;
}

.hero__medal-accent {
  font-size: 1.5rem; /* 24px */
}

.hero__photo {
  position: absolute;
  z-index: 1;
  top: 14.3125rem; /* 229px */
  right: 0.375rem; /* 6px (393 - 166 - 221) */
  width: 13.8125rem; /* 221px */
  height: 18.75rem;  /* 300px */
  object-fit: cover;
  object-position: top center;
}

.hero::after {
  /* 写真下部の白フェード。ステータス行〜CTAボタンの背後を確実に白くする */
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 25rem; /* 400px */
  bottom: 0;
  background: linear-gradient(to top, var(--c-white) 60%, rgba(255, 255, 255, 0));
  z-index: 1;
  pointer-events: none;
}

.hero__stats {
  position: absolute;
  z-index: 4;
  top: 31.375rem; /* 502px (567 - 65) */
  /* 393px以上はFigma通りの固定値(8px/10px/5px)。393px未満はビューポート幅に比例して縮小し、
     4項目が必ず収まるようにする(393px到達で自動的に上限値へクランプされる) */
  left: clamp(0.25rem, calc(8px * 100vw / 393px), 0.5rem);   /* 8px上限 */
  right: clamp(0.3125rem, calc(10px * 100vw / 393px), 0.625rem); /* 10px上限 */
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: clamp(0.1875rem, calc(5px * 100vw / 393px), 0.3125rem); /* 5px上限 */
}

.hero__stats-item {
  /* flex-basis=90px(Figma実寸)。空きが足りない時だけ4項目均等に縮小し、
     393px以上では空きが常に90px分あるため実質flex:0 0 90pxと同じ見た目になる */
  container-type: inline-size; /* 子要素(span)のcqwをこの円自身の幅基準にする */
  flex: 0 1 5.625rem; /* 90px */
  max-width: 5.625rem; /* 393px以上でのサイズ上限(Figma通り) */
  aspect-ratio: 1 / 1; /* 幅が縮んでも真円を維持(高さも追従) */
  border-radius: 50%;
  background: var(--c-white);
  border: 1px solid var(--c-primary);
  box-shadow: var(--shadow-card);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: var(--c-primary);
  font-weight: 700;
  padding: 0.25rem;
}

.hero__stats-item--wide {
  flex-direction: column;
  gap: 0.125rem;
}

/* 文字サイズはcqwで円自身の幅に比例させる(要素自身ではなくcontainer-typeを
   持つ親からの相対値にする必要があるため、子のspanに指定する) */
.hero__stats-label {
  font-size: 0.8125rem; /* 13px : コンテナクエリ非対応ブラウザ向けフォールバック */
  font-size: 16.25cqw; /* 円のpadding+border分を差し引いたコンテンツ幅(80px)基準で393px時=13px相当になる比率 */
  line-height: 1.5385; /* 13px時に20pxになる比率(単位なしなのでfont-sizeに追従) */
}

.hero__stats-sub {
  font-size: 0.5625rem; /* 9px フォールバック */
  font-size: 11.25cqw; /* 393px時=9px相当 */
  line-height: 1.2222;
}

.hero__stats-main {
  font-size: 0.875rem; /* 14px フォールバック */
  font-size: 17.5cqw; /* 393px時=14px相当 */
  line-height: 1.2143;
}

.hero__cta {
  position: absolute;
  z-index: 4;
  top: 39rem; /* 624px (689 - 65) */
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 17.125rem;  /* 274px */
  height: 5.375rem;  /* 86px */
  background: var(--c-primary-dark);
  color: var(--c-white);
  font-size: 1.5rem; /* 24px */
  font-weight: 700;
  border-radius: 3.125rem; /* 50px */
  transition: background-color var(--transition-base);
}

.hero__cta:hover {
  background-color: var(--c-primary-dark-hover);
}

.hero__cta-icon {
  width: 1.875rem; /* 30px */
  height: 1.875rem;
}

/* ==========================================================================
   こんなお悩みありませんか？？ (Concerns)
   ========================================================================== */
.concerns {
  position: relative;
  background: var(--c-gray-dark);
  padding: 2rem var(--container-px) 1.75rem;
  overflow: hidden;
}

.concerns__heading {
  color: var(--c-white);
  font-size: 1.5rem; /* 24px */
  font-weight: 700;
  text-align: center;
}

.concerns__list {
  position: relative;
  z-index: 1;
  margin-top: 1.25rem;
  max-width: clamp(9rem, calc(100vw - 9.6875rem), 16.375rem); /* 393px未満は写真と重ならない幅に縮小 */
}

.concerns__item {
  color: var(--c-white);
  font-size: 1rem; /* 16px */
  font-weight: 700;
  line-height: 1.875rem; /* 30px */
}

.concerns__item::before {
  content: "✓ ";
}

.concerns__photo {
  position: absolute;
  right: 0.3125rem; /* 5px */
  bottom: 0;
  width: 7.0625rem; /* 113px */
  height: 12.375rem; /* 198px */
  object-fit: cover;
  object-position: top center;
  border-radius: var(--radius-s);
}

/* ==========================================================================
   当社が選ばれる理由です (Reasons)
   ========================================================================== */
.reasons {
  position: relative;
  background: var(--c-blue-bg);
  padding: 0 var(--container-px) 3rem;
}

.reasons::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 10rem; /* 160px : 帯の水平部分 */
  background: var(--c-primary);
  z-index: 0;
}

.reasons::after {
  content: "";
  position: absolute;
  top: 10rem; /* 160px */
  left: 0;
  right: 0;
  height: 5rem; /* 80px : 帯の三角部分 */
  background: var(--c-primary);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  z-index: 0;
}

.reasons__eyebrow {
  position: relative;
  z-index: 1;
  padding-top: 2.5rem;
  text-align: center;
  color: var(--c-white);
  font-weight: 700;
  font-size: 1.5rem; /* 24px */
}

.reasons__heading {
  position: relative;
  z-index: 1;
  text-align: center;
  color: var(--c-white);
  font-weight: 700;
  margin-top: 0.5rem;
}

.reasons__heading-lg { font-size: 2.0625rem; } /* 33px */
.reasons__heading-md { font-size: 1.625rem; }  /* 26px */
.reasons__heading-sm { font-size: 1.25rem; }   /* 20px */

.reasons__list {
  position: relative;
  z-index: 1;
  margin-top: 8.9375rem; /* 143px : 帯の三角形とカードの間隔を確保 */
  display: flex;
  flex-direction: column;
  gap: 2.4375rem; /* カード間の間隔 */
}

.reasons__card {
  position: relative;
  background: var(--c-white);
  border: 2px solid var(--c-blue-pale);
  border-radius: var(--radius-l);
  padding: 6.375rem 1.5rem 1.75rem;
  text-align: center;
}

.reasons__card-icon {
  position: absolute;
  top: 1.3125rem; /* 21px : カード内側(帯に被らない) */
  left: 50%;
  transform: translateX(-50%);
  width: 3.75rem; /* 60px */
  height: 3.75rem;
  display: block;
}

.reasons__card-icon-base {
  width: 100%;
  height: 100%;
}

.reasons__card-icon-glyph {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: auto;
  height: auto;
  max-width: 55%;
  max-height: 55%;
}

.reasons__card-label {
  color: var(--c-primary);
  font-weight: 700;
  font-size: 1.5625rem; /* 25px */
  line-height: 2.0625rem; /* 33px */
}

.reasons__card-title {
  margin-top: 0.75rem;
  font-weight: 600;
  font-size: 0.9375rem; /* 15px */
  color: var(--c-text);
}

.reasons__card-text {
  margin-top: 0.9375rem;
  font-size: 0.75rem; /* 12px */
  line-height: 1.25rem; /* 20px */
  letter-spacing: -0.015em;
  text-align: left;
  color: var(--c-text);
}

.reasons__card-text strong {
  font-weight: 700;
}

/* ==========================================================================
   3つのプラン (Plans)
   ========================================================================== */
.plans {
  background: var(--c-blue-bg);
  padding-bottom: 3rem;
}

.plans__banner {
  position: relative;
  background: var(--c-blue-bg-4);
  padding: 2rem var(--container-px) 1.5rem;
  overflow: hidden;
}

.plans__banner-photo {
  position: absolute;
  top: 0;
  right: 0;
  width: 9.5rem;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.plans__eyebrow {
  position: relative;
  z-index: 1;
  color: var(--c-primary);
  font-weight: 500;
  font-size: 1.125rem; /* 18px */
}

.plans__number {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: baseline;
  gap: 0.25rem;
  margin-top: 0.5rem;
  color: var(--c-primary);
  font-weight: 700;
}

.plans__number-figure {
  font-size: 6rem; /* 96px */
  line-height: 1;
}

.plans__number-unit {
  font-size: 1.625rem; /* 26px */
  color: var(--c-text);
}

.plans__heading {
  position: relative;
  z-index: 1;
  margin-top: -0.5rem;
  color: var(--c-text);
  font-weight: 700;
  font-size: 1.875rem; /* 30px */
}

.plans__lead {
  position: relative;
  z-index: 1;
  margin-top: 0.75rem;
  /* 393px以上はFigma通り164px固定。393px未満はビューポート幅に比例して縮小し、
     右側の写真と重ならないようにする */
  max-width: clamp(7rem, calc(164px * 100vw / 393px), 10.25rem); /* 112px〜164px */
  font-size: 0.5625rem; /* 9px */
  line-height: 0.75rem;
  color: var(--c-text);
}

.plans__list {
  margin-top: 5.8125rem; /* 93px : バナーとカード頂点(アーチ)の間隔を確保 */
  padding: 0 var(--container-px);
  display: flex;
  flex-direction: column;
  gap: 5rem; /* 80px : 次カードのアーチ(55px)が前カードと重ならない間隔 */
}

.plans__card {
  position: relative;
  z-index: 0; /* ::beforeのz-index:-1をこの要素内に閉じ込める */
  background: var(--c-white);
  border: 2px solid var(--c-blue-pale);
  border-radius: var(--radius-l);
  padding: 1.5625rem 1.25rem 1.5rem;
  text-align: center;
}

.plans__card::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: -3.4375rem; /* -55px */
  left: 50%;
  transform: translateX(-50%);
  width: 7.5625rem; /* 121px */
  height: 7.5625rem;
  border-radius: 50%;
  background: var(--c-white);
  border: 2px solid var(--c-blue-pale);
  clip-path: inset(0 0 4.125rem 0); /* 円の上部(55px分)だけを見せる */
}

.plans__card-number {
  position: absolute;
  top: -3rem; /* -48px : アーチ内に収める */
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 4.375rem; /* 70px */
  line-height: 1;
  color: var(--c-white);
  -webkit-text-stroke: 2px var(--c-blue-pale);
}

.plans__card-tag {
  color: var(--c-blue-tag);
  font-weight: 700;
  font-size: 0.75rem; /* 12px */
}

.plans__card-title {
  display: block;
  margin-top: 0.625rem;
  background: var(--c-primary);
  color: var(--c-white);
  font-weight: 700;
  font-size: 1.125rem; /* 18px */
  padding: 0.5rem 1.25rem;
  border-radius: 1.8125rem; /* pill */
  /* 393px未満はカード幅が狭まり1行に収まらない場合があるため折り返しを許可。
     393px以上はFigma通り1行(下のmin-widthメディアクエリでnowrapに戻す) */
  white-space: normal;
}

.plans__card-text {
  margin-top: 1.25rem;
  /* 393px以上はFigma通り195px固定。393px未満はカード内側の幅
     (カード幅 - 左右パディング/ボーダー = 100vw - 94px)に比例して縮小し、
     右側の写真と重ならないようにする */
  max-width: clamp(9rem, calc(195px * (100vw - 94px) / 299px), 12.1875rem); /* 144px〜195px */
  text-align: left;
  font-size: 0.75rem; /* 12px */
  line-height: 1.25rem;
}

.plans__card-text strong {
  font-weight: 700;
}

.plans__card-photo {
  position: absolute;
  top: 7.5625rem; /* 121px : card-textの開始位置に合わせる */
  right: clamp(0.875rem, calc(20px * (100vw - 94px) / 299px), 1.25rem);
  width: clamp(4.6875rem, calc(102px * (100vw - 94px) / 299px), 6.375rem); /* 75px〜102px */
  object-fit: cover;
  border-radius: var(--radius-m);
}

.plans__list > .plans__card:nth-child(1) .plans__card-photo {
  height: clamp(9rem, calc(195px * (100vw - 94px) / 299px), 12.1875rem); /* 144px〜195px */
}

.plans__list > .plans__card:nth-child(2) .plans__card-photo {
  height: clamp(11.375rem, calc(248px * (100vw - 94px) / 299px), 15.5rem); /* 182px〜248px */
  /* カード2・3はタイトルが長く、393px未満ではタイトルが2行に折り返るため、
     本文の開始位置もその分下がる。写真もそれに合わせて下げる(393px以上は元の位置に戻す) */
  top: 9.375rem; /* 150px */
}

.plans__list > .plans__card:nth-child(3) .plans__card-photo {
  height: clamp(6.9375rem, calc(152px * (100vw - 94px) / 299px), 9.5rem); /* 111px〜152px */
  top: 9.375rem; /* 150px */
}

.plans__card-examples {
  margin-top: 0.75rem;
  max-width: clamp(9rem, calc(195px * (100vw - 94px) / 299px), 12.1875rem); /* 右側の写真を避ける */
  text-align: left;
}

.plans__card-examples-heading {
  font-size: 0.625rem; /* 10px */
}

.plans__card-examples-list {
  margin-top: 0.25rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 0.5rem;
  font-size: 0.625rem; /* 10px */
  line-height: 0.9375rem;
}

.plans__card-examples-list li::before {
  content: "・";
}

.plans__card-note {
  margin-top: 0.5rem;
  max-width: clamp(9rem, calc(195px * (100vw - 94px) / 299px), 12.1875rem); /* 右側の写真を避ける */
  text-align: left;
  font-size: 0.625rem; /* 10px */
  line-height: 0.9375rem;
}

/* 392px以下は横並び(本文+右側の写真)だと文字数の多いカードで重なりやすいため、
   本文の下に写真を配置する縦並びレイアウトに切り替える */
@media (max-width: 24.5rem) {
  .plans__card-text,
  .plans__card-examples,
  .plans__card-note {
    max-width: none;
  }

  .plans__card-photo {
    position: static;
    display: block;
    margin: 1rem auto 0;
    top: auto;
    right: auto;
    width: 60%;
  }

  .plans__list > .plans__card:nth-child(1) .plans__card-photo,
  .plans__list > .plans__card:nth-child(2) .plans__card-photo,
  .plans__list > .plans__card:nth-child(3) .plans__card-photo {
    height: auto; /* 横並び用の固定高さを解除し、画像本来の比率で表示する */
    aspect-ratio: auto;
  }
}

/* 393px以上はFigma通りカードタイトルを1行に固定。
   ただしカード2・3はタイトルが長く、393px以上/PCの幅でも1行に収まらず
   はみ出すため、1行固定は実際に収まるカード1のみに適用する */
@media (min-width: 24.5625rem) {
  .plans__list > .plans__card:nth-child(1) .plans__card-title {
    white-space: nowrap;
  }

  .concerns__list {
    max-width: 16.375rem; /* 262px : Figma基準に固定 */
  }
}

/* ==========================================================================
   対応製品 (Products)
   ========================================================================== */
.products {
  background: var(--c-white);
}

.products__banner {
  position: relative;
  height: 8.375rem; /* 134px */
  background-image: url("../images/section-banner-photo.jpg");
  background-size: cover;
  background-position: center;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding: 0 var(--container-px);
}

.products__banner::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.3);
}

.products__banner-avatar {
  position: relative;
  z-index: 1;
  width: auto;
  height: 6.25rem; /* 100px */
  object-fit: contain;
}

.products__heading {
  position: relative;
  z-index: 1;
  color: var(--c-white);
  font-weight: 700;
  font-size: 2.25rem; /* 36px */
  text-shadow: 0 0 0.25rem rgba(0, 0, 0, 0.5);
}

.products__list {
  padding: 2rem var(--container-px);
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}

.products__category {
  display: flex;
  gap: 1rem;
}

.products__category-photo {
  flex: 0 0 7.375rem; /* 118px */
  width: 7.375rem;
  height: 8.9375rem; /* 143px */
  object-fit: cover;
  border-radius: var(--radius-s);
}

.products__category-body {
  flex: 1 1 auto;
}

.products__category-name {
  color: var(--c-gray-dark);
  font-weight: 500;
  font-size: 1.25rem; /* 20px */
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--c-blue-mid);
}

.products__category-items {
  margin-top: 0.625rem;
  display: flex;
  flex-direction: column;
  gap: 0.4375rem;
  font-size: 0.75rem; /* 12px */
  line-height: 1.25rem;
}

.products__category-items li {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}

.products__category-items li::before {
  content: "■";
  color: var(--c-blue-mid);
  font-size: 0.625rem;
}

/* ==========================================================================
   当社OEMの特徴 (Features)
   ========================================================================== */
.features {
  position: relative;
  background:
    linear-gradient(rgba(247, 250, 252, 0.5), rgba(247, 250, 252, 0.5)),
    url("../images/features-bg-pattern.jpg");
  background-size: auto, 300px;
  background-repeat: repeat, repeat;
}

.features__banner {
  position: relative;
  height: 8.375rem; /* 134px */
  background-image: url("../images/section-banner-photo.jpg");
  background-size: cover;
  background-position: center;
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding: 0 var(--container-px);
}

.features__banner::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.3);
}

.features__banner-avatar {
  position: relative;
  z-index: 1;
  width: auto;
  height: 6.25rem; /* 100px */
  object-fit: contain;
}

.features__heading {
  position: relative;
  z-index: 1;
  color: var(--c-white);
  font-weight: 700;
  font-size: 2rem; /* 32px */
}

.features__list {
  padding: 2.5rem var(--container-px);
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}

.features__item {
  display: flex;
  align-items: stretch;
  gap: 0;
  background: var(--c-white);
  border-radius: var(--radius-s);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}

/* features__item--reverse は HTML 側で img/body の順序を入れ替えて表現しているため、
   flex-direction の反転は不要（見出しクラスは意味付けのために付与） */

.features__item-body {
  flex: 1 1 50%;
  padding: 1rem;
}

.features__item-number {
  color: var(--c-gray);
  font-weight: 700;
  font-size: 2.25rem; /* 36px */
  line-height: 1;
}

.features__item-title {
  margin-top: 0.25rem;
  font-weight: 700;
  font-size: 0.875rem; /* 14px */
  color: var(--c-text);
}

.features__item-text {
  margin-top: 0.375rem;
  font-size: 0.625rem; /* 10px */
  line-height: 0.9375rem;
}

.features__item-photo {
  flex: 1 1 50%;
  width: 50%;
  height: auto;
  min-height: 9.9375rem; /* 159px */
  object-fit: cover;
}

/* ==========================================================================
   OEM開始までの流れ (Flow)
   ========================================================================== */
.flow {
  background: var(--c-white);
}

.flow__heading {
  background: var(--c-primary);
  clip-path: polygon(0 0, 100% 0, 100% 56.8%, 50% 100%, 0 56.8%);
  color: var(--c-white);
  font-weight: 700;
  font-size: 1.75rem; /* 28px */
  text-align: center;
  padding: 2rem var(--container-px) 6rem;
}

.flow__list {
  padding: 2.3125rem 3.5rem 3rem; /* 37px : 山型の先端〜最初のステップ */
  display: flex;
  flex-direction: column;
}

.flow__item {
  background: var(--c-gray-step);
  color: var(--c-gray-dark);
  font-weight: 500;
  font-size: 1.25rem; /* 20px */
  text-align: center;
  border-radius: var(--radius-s);
  padding: 0.8125rem 1rem;
}

.flow__item:not(:last-child) {
  margin-bottom: 2.5rem;
  position: relative;
}

.flow__item:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -2.5rem;
  width: 2px;
  height: 2.5rem;
  background: var(--c-gray-footer);
  transform: translateX(-50%);
}

/* ==========================================================================
   物流・保管訴求 (Logistics)
   ========================================================================== */
.logistics {
  background: var(--c-white);
}

.logistics__banner {
  position: relative;
  min-height: 10.8125rem; /* 173px */
  background-image: url("../images/warehouse-photo.jpg");
  background-size: cover;
  background-position: center;
  display: grid;
  grid-template-columns: 1fr auto;
  column-gap: 1rem;
  row-gap: 0.75rem;
  align-items: center;
  padding: 1.5rem var(--container-px);
}

.logistics__banner-photo {
  grid-column: 2;
  grid-row: 1 / 3;
  justify-self: end;
  align-self: end;
  margin-bottom: -1.5rem; /* バナーのpadding-bottom分下に伸ばし、下端に揃える */
  width: 6.9375rem; /* 111px */
  height: 8.625rem; /* 138px */
  object-fit: cover;
  object-position: top center;
  border-radius: var(--radius-s);
}

.logistics__badge {
  grid-column: 1;
  grid-row: 1;
  justify-self: start;
  white-space: nowrap;
  background: var(--c-yellow);
  color: var(--c-text);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  padding: 0.5rem 1.25rem;
  border-radius: var(--radius-m);
}

.logistics__heading {
  grid-column: 1;
  grid-row: 2;
  justify-self: start;
  color: var(--c-white);
  font-weight: 700;
  font-size: 0.9375rem; /* 15px */
  line-height: 1.9375rem; /* 31px */
  background: rgba(47, 36, 30, 0.7);
  display: inline-block;
  padding: 0.5rem 1rem;
  border-radius: var(--radius-s);
}

.logistics__icons {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 1.5rem var(--container-px) 0;
}

.logistics__icon {
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}

.logistics__icon img {
  width: 4.1875rem; /* 67px */
  height: 4.1875rem;
  box-sizing: border-box;
  padding: 0.75rem;
  border: 2px solid var(--c-gray-dark);
  border-radius: 0.75rem;
  object-fit: contain;
}

.logistics__icon span {
  background: var(--c-gray-dark);
  color: var(--c-white);
  font-weight: 700;
  font-size: 0.75rem; /* 12px */
  padding: 0.125rem 0.625rem;
  border-radius: var(--radius-s);
  white-space: nowrap;
}

.logistics__content {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding: 1.5rem var(--container-px) 2.5rem;
}

.logistics__text {
  font-size: 0.75rem; /* 12px */
  line-height: 1.25rem;
  text-align: center;
  max-width: 10.5rem;
}

.logistics__photo {
  width: 13.125rem; /* 210px */
  height: 10.125rem; /* 162px */
  object-fit: contain;
}

/* ==========================================================================
   よくある質問 (FAQ)
   ========================================================================== */
.faq {
  position: relative;
  background: var(--c-blue-bg-2);
  padding: 2.5rem var(--container-px) 3rem;
  overflow: hidden;
}

.faq__eyebrow {
  position: absolute;
  top: 0.5rem;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-serif);
  font-size: 6rem; /* 96px */
  color: var(--c-blue-pale-2);
  z-index: 0;
}

.faq__heading {
  position: relative;
  z-index: 1;
  text-align: center;
  color: var(--c-primary);
  font-weight: 700;
  font-size: 1.75rem; /* 28px */
  margin-top: 4.5rem;
}

.faq__list {
  position: relative;
  z-index: 1;
  margin: 2rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.8125rem;
}

.faq__item {
  border-radius: var(--radius-s);
  overflow: hidden;
}

.faq__question,
.faq__answer {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0;
  padding: 0.75rem 1rem;
  font-size: 0.8125rem; /* 13px */
  font-weight: 500;
}

.faq__question {
  background: var(--c-blue-bg-3);
  color: var(--c-gray-dark);
}

.faq__answer {
  background: var(--c-white);
  color: var(--c-gray-dark);
}

.faq__mark {
  flex: 0 0 2.875rem; /* 46px */
  align-self: stretch;
  margin: -0.75rem 0 -0.75rem -1rem; /* 行の左端・上下端まで塗りを広げる */
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--c-white);
  font-weight: 500;
  font-size: 1.5rem; /* 24px */
}

.faq__question .faq__mark {
  background: var(--c-blue-mid);
}

.faq__answer .faq__mark {
  background: var(--c-blue-pale-2);
  color: var(--c-blue-mid);
}

/* ==========================================================================
   商品化アイデア募集CTA (Idea CTA)
   ========================================================================== */
.idea-cta {
  background: var(--c-white);
  padding: 2.5rem var(--container-px) 0;
  text-align: center;
}

.idea-cta__heading {
  display: inline-block;
  color: var(--c-primary);
  font-weight: 700;
  font-size: 1.5rem; /* 24px */
  border: 1px solid var(--c-blue-pale);
  border-radius: 1.5rem;
  padding: 0.5rem 1.5rem;
}

.idea-cta__text {
  margin-top: 1.25rem;
  font-weight: 500;
  font-size: 1rem; /* 16px */
  line-height: 1.5rem;
  color: var(--c-gray-dark);
}

.idea-cta__photo {
  margin: 1.5rem auto 0;
  width: 13.25rem; /* 212px */
  height: 16.125rem; /* 258px : 手の少し下で切れる高さ */
  object-fit: cover;
  object-position: top center;
  border-radius: var(--radius-m);
}

/* ==========================================================================
   お問い合わせ (Contact)
   ========================================================================== */
.contact {
  background: var(--c-gray-step);
  padding: 2rem 0 0;
}

.contact__eyebrow {
  text-align: center;
  font-family: var(--font-serif);
  font-size: 2.5rem; /* 40px */
  color: var(--c-gray);
  border-bottom: 1px solid var(--c-gray);
  padding: 0 var(--container-px) 0.5rem;
  margin: 0 var(--container-px);
}

.contact__heading {
  margin-top: 0.5rem;
  text-align: center;
  font-weight: 700;
  font-size: 1.625rem; /* 26px */
}

.contact__lead {
  margin-top: 0.75rem;
  text-align: center;
  font-size: 0.6875rem; /* 11px */
  line-height: 1.0625rem;
  padding: 0 var(--container-px);
}

.contact__form {
  margin-top: 1.5rem;
  background: var(--c-white);
  padding: 1.5rem var(--container-px) 2.5rem;
}

.contact__required-note {
  text-align: center;
  font-size: 0.875rem; /* 14px */
}

.contact__required-mark {
  color: var(--c-orange);
}

.contact__field {
  margin-top: 1.5625rem;
}

.contact__label {
  display: block;
  font-size: 0.875rem; /* 14px */
}

.contact__input,
.contact__textarea {
  display: block;
  width: 100%;
  margin-top: 0.75rem;
  background: var(--c-white);
  border: 1px solid var(--c-gray);
  border-radius: var(--radius-m);
  padding: 0.75rem 1rem;
  font-size: 1rem;
  transition: border-color var(--transition-base);
}

.contact__input:focus,
.contact__textarea:focus {
  outline: none;
  border-color: var(--c-primary);
}

.contact__textarea {
  min-height: 9.875rem; /* 158px */
  resize: vertical;
}

.contact__submit {
  display: block;
  width: 12.125rem; /* 194px */
  margin: 2.5rem auto 0;
  background: var(--c-primary-dark);
  color: var(--c-white);
  font-weight: 700;
  font-size: 1.5rem; /* 24px */
  padding: 0.9rem 0;
  border-radius: 4.375rem; /* 70px */
  border: none;
  text-align: center;
  transition: background-color var(--transition-base);
}

.contact__submit:hover {
  background-color: var(--c-primary-dark-hover);
}

.contact__privacy {
  margin-top: 2.5rem;
  padding: 0 var(--container-px) 2rem;
  font-size: 0.5rem; /* 8px */
  line-height: 0.8125rem;
}

.contact__privacy a {
  text-decoration: underline;
}

/* ==========================================================================
   プライバシーポリシー (Policy)
   ========================================================================== */
.policy {
  padding: 2.5rem var(--container-px) 3.5rem;
}

.policy__title {
  text-align: center;
  color: var(--c-primary);
  font-weight: 700;
  font-size: 1.375rem; /* 22px */
}

.policy__lead {
  margin-top: 1.5rem;
  font-size: 0.875rem; /* 14px */
  line-height: 1.8;
  color: var(--c-text-soft);
}

.policy__list {
  margin-top: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.policy__heading {
  color: var(--c-primary);
  font-weight: 700;
  font-size: 1rem; /* 16px */
}

.policy__text {
  margin-top: 0.5rem;
  font-size: 0.875rem; /* 14px */
  line-height: 1.8;
  color: var(--c-text-soft);
}

.policy__bullets {
  margin-top: 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.policy__bullets li {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.8;
  color: var(--c-text-soft);
}

.policy__bullets li::before {
  content: "■";
  color: var(--c-blue-mid);
  font-size: 0.625rem;
}

.policy__company {
  margin-top: 2.5rem;
  padding: 1.5rem;
  background: var(--c-blue-bg);
  border-radius: var(--radius-m);
}

.policy__company-name {
  font-weight: 700;
  font-size: 0.9375rem; /* 15px */
  color: var(--c-text);
}

.policy__company-line {
  margin-top: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--c-text-soft);
}

.policy__company-line a {
  color: var(--c-primary);
  text-decoration: underline;
}

/* ==========================================================================
   フッター
   ========================================================================== */
.footer {
  background: var(--c-gray-footer);
  padding: 1.375rem 0;
  text-align: center;
}

.footer__copyright {
  color: var(--c-white);
  font-weight: 300;
  font-size: 1rem; /* 16px */
}

/* ==========================================================================
   PCレイアウト (Figma "Desktop 1440" フレーム基準 / node-id 85:70)
   min-width: 1024px 以上をPCとして扱う。Tabletは暫定的にモバイル基準を継続。
   ========================================================================== */
@media (min-width: 64rem) {
  body {
    max-width: 90rem; /* 1440px */
  }

  /* ---------- ヘッダー ---------- */
  .header__cta {
    width: 14.625rem; /* 234px */
  }

  /* ---------- ファーストビュー ---------- */
  /* Figma上はヘッダー(65px)とヒーロー背景(844px)が同じ原点(y=0)から重なって
     配置されているため、実装(ヘッダーを通常フローで先に積む構造)に合わせて
     全ての子要素のtop値からヘッダー分の65pxを差し引いている。
     ヒーロー自体の高さも 844px→779px(=844-65) に補正。 */
  .hero {
    height: 48.6875rem; /* 779px (844 - 65) */
    min-height: 0;
    padding: 0;
  }

  .hero::after {
    content: none;
  }

  /* PC版は別画像・別トリミング(コンテナ1440x844がヘッダーと同一原点のため
     -65px補正した上で実寸の拡大率を再現) */
  .hero__bg {
    top: -4.0625rem; /* -65px */
    height: 52.75rem; /* 844px */
  }

  .hero__bg img {
    width: 104.44%;
    height: 180.09%;
    left: 0.16%;
    top: -25.83%;
  }

  .hero__title {
    position: absolute;
    top: 3.75rem; /* 60px (125 - 65) */
    left: 16.625rem; /* 266px */
    width: 31.6875rem; /* 507px */
  }

  .hero__title-accent {
    font-size: 2.5rem; /* 40px */
    line-height: 2.9375rem;
  }

  .hero__title-accent--lg {
    font-size: 2.8125rem; /* 45px */
  }

  .hero__title-particle {
    font-size: 1.875rem; /* 30px */
  }

  .hero__title-line:nth-child(1) {
    width: 16.3125rem; /* 261px */
  }

  .hero__title-line:nth-child(2) {
    width: 26.4375rem; /* 423px */
  }

  .hero__dots {
    top: 5.29rem; /* 84.64px (149.64 - 65) */
    left: 35.25rem; /* 564px : 「実績」の各文字の真上に来るよう調整 */
    gap: 2.1875rem; /* 588 - 548 - 11.367 = 28.6px */
  }

  .hero__dots img {
    width: 0.7104rem; /* 11.367px */
    height: 0.7104rem;
  }

  .hero__tagline {
    position: absolute;
    top: 11.795rem; /* 188.72px (253.72 - 65) */
    left: 16.625rem; /* 266px */
    font-size: 1.25rem; /* 20px */
    line-height: 2.4375rem; /* 39px */
  }

  .hero__tagline-line {
    margin-bottom: 0.5625rem; /* 9px */
  }

  .hero__medal {
    top: 6.125rem; /* 98px (163 - 65) */
    left: 55.1875rem; /* 883px */
    width: 13.556rem; /* 216.9px */
  }

  .hero__medal-line {
    font-size: 1rem; /* 16px */
    line-height: 1.3125rem;
  }

  .hero__medal-line:first-child {
    font-size: 1.25rem; /* 20px */
    line-height: 1.5rem;
  }

  .hero__medal-accent {
    font-size: 1.875rem; /* 30px */
  }

  .hero__photo {
    top: 21.125rem; /* 338px (403 - 65) */
    left: 52.25rem; /* 836px */
    right: auto;
    width: 19.5rem; /* 312px */
    height: 27.5625rem; /* 441px : hero-main-photo-2.png(裾まで不透明)を使用 */
  }

  .hero__stats {
    top: 21.3125rem; /* 341px (406 - 65) */
    left: 15.875rem; /* 254px */
    right: auto;
    gap: 0.3125rem; /* 5px */
  }

  .hero__stats-item {
    /* PCは常に十分な余白があり縮小が不要なため、shrink-to-fit(right:auto)時の
       意図しない極小化を避けて元の固定サイズに戻す */
    flex: 0 0 auto;
    width: 5.625rem; /* 90px */
    height: 5.625rem;
  }

  .hero__cta {
    top: 30.5rem; /* 488px (553 - 65) */
    left: 15.875rem; /* 254px */
    transform: none;
  }

  /* ---------- こんなお悩みありませんか ---------- */
  .concerns {
    display: grid;
    grid-template-columns: 25.625rem auto; /* 410px : チェックリスト幅 */
    justify-content: center;
    align-items: start;
    column-gap: 1.125rem; /* 18px */
    row-gap: 2.6875rem; /* 43px : 見出し下端〜リスト上端 */
    padding: 2.9375rem var(--container-px) 3.3125rem; /* 47px / 53px */
  }

  .concerns__heading {
    grid-column: 1 / -1;
  }

  .concerns__list {
    grid-column: 1;
    margin-top: 0;
    max-width: none;
  }

  .concerns__photo {
    grid-column: 2;
    align-self: end;
    margin-bottom: -3.3125rem; /* -53px : セクションのpadding-bottom分下に伸ばし、次のセクションと隙間なく揃える */
    position: static;
    width: 8.125rem; /* 130px */
    height: 14.25rem; /* 228px */
  }

  /* ---------- 当社が選ばれる理由です ---------- */
  .reasons {
    padding-bottom: 5rem;
  }

  .reasons::after {
    clip-path: polygon(36.5% 0, 63.5% 0, 50% 100%);
  }

  .reasons__list {
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    gap: 1.1875rem; /* 19px */
    max-width: 84.5625rem; /* 1353px */
    margin: 8.625rem auto 0; /* 138px : 帯の三角形とカードの間隔を確保 */
  }

  .reasons__card {
    width: 15.625rem; /* 250px */
    flex: 0 0 auto;
  }

  .reasons__card-label {
    font-size: 1.25rem; /* 20px */
    line-height: 1.6875rem;
  }

  /* ---------- 3つのプラン ---------- */
  .plans__banner {
    display: grid;
    grid-template-columns: auto 8.875rem; /* 142px : 写真幅 */
    justify-content: center;
    align-items: start;
    column-gap: 1.8125rem; /* 29px */
    padding: 3.125rem var(--container-px) 3.75rem;
  }

  .plans__banner-photo {
    grid-column: 2;
    grid-row: 1 / 5;
    align-self: end;
    margin-bottom: -3.75rem; /* -60px : バナーのpadding-bottom分下に伸ばし、下端に揃える */
    position: static;
    width: 8.875rem;
    height: 13.375rem; /* 214px */
    mask-image: none;
  }

  .plans__eyebrow {
    grid-column: 1;
    grid-row: 1;
  }

  .plans__number {
    grid-column: 1;
    grid-row: 2;
  }

  .plans__heading {
    grid-column: 1;
    grid-row: 3;
  }

  .plans__lead {
    grid-column: 1;
    grid-row: 4;
    max-width: none;
  }

  .plans__list {
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    gap: 1.875rem; /* 30px */
    max-width: 71.4375rem; /* 1143px */
    margin: 3.75rem auto 0;
  }

  .plans__card {
    width: 21.4375rem; /* 343px */
    flex: 0 0 auto;
    background: transparent;
    border: none;
    border-radius: 0;
    background-repeat: no-repeat;
    background-size: 100% 100%;
    padding-top: 5.5rem; /* 88px : 数字(高さ70px)の下に余白を確保してタグと重ならないようにする */
  }

  .plans__card::before {
    /* PCはSVG背景画像(枠線・アーチ形状を含む)を使うため、モバイル用の疑似要素は非表示 */
    display: none;
  }

  .plans__card-number {
    /* PCはアーチがカード自身の背景画像内(box上端から)に描かれているため、
       モバイル用の負のtop(枠の外に飛び出す値)ではなくbox上端を基準にする */
    top: 0;
  }

  .plans__card-photo {
    /* padding-top変更でcard-textの開始位置が下がったため、写真もそれに合わせる */
    top: 11.375rem; /* 182px : カード1(タイトル1行)基準 */
  }

  .plans__list > .plans__card:nth-child(2) .plans__card-photo,
  .plans__list > .plans__card:nth-child(3) .plans__card-photo {
    /* カード2・3はタイトルが2行になる分、本文の開始位置も下がるため写真もそれに合わせる */
    top: 13.1875rem; /* 211px */
  }

  /* Figma上のカード形状(番号バッジが花びら状に上部と一体化したUnion図形)を
     カードごとの背景画像として再現 */
  .plans__list > .plans__card:nth-child(1) {
    background-image: url("../images/plan-card-frame-pc-a.svg");
  }

  .plans__list > .plans__card:nth-child(2) {
    background-image: url("../images/plan-card-frame-pc-b.svg");
  }

  .plans__list > .plans__card:nth-child(3) {
    background-image: url("../images/plan-card-frame-pc-c.svg");
  }

  .plans__list > .plans__card:nth-child(1) .plans__card-title {
    white-space: nowrap;
  }

  /* ---------- 対応製品 ---------- */
  .products__list {
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    gap: 3.75rem; /* 60px */
    max-width: 71.25rem;
    margin: 0 auto;
    padding: 2.5rem var(--container-px);
  }

  .products__category {
    flex-direction: column;
    width: 15.5rem;
  }

  .products__category-photo {
    flex: 0 0 auto;
  }

  /* ---------- 当社OEMの特徴 ---------- */
  .features__list {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: 2.375rem; /* 38px */
    max-width: 64.75rem; /* 1036px : カード3列(320px)+間隔(38px)ぶん */
    margin: 0 auto;
    padding: 2.5rem 0;
  }

  /* PCはカード内幅320pxのうち左右半分ずつ「テキスト左・写真右」で統一
     (モバイルのみ左右交互パターン。PCはFigma上すべて写真右) */
  .features__item {
    width: 20rem; /* 320px */
    flex-direction: row;
  }

  .features__item--reverse {
    width: 20rem; /* 320px */
    flex-direction: row-reverse;
  }

  .features__item-photo {
    min-height: 0;
    height: auto;
  }

  /* ---------- OEM開始までの流れ ---------- */
  /* Figmaでは青い山型の背景は見出し帯のみで、ステップ一覧のエリアは白背景 */
  .flow {
    background: var(--c-white);
    clip-path: none;
    padding-bottom: 0;
  }

  .flow__heading {
    background: var(--c-primary);
    clip-path: polygon(0 0, 100% 0, 100% 58%, 50% 100%, 0 58%);
    padding: 2rem var(--container-px) 5.9375rem; /* 32px / 95px */
  }

  .flow__list {
    padding-top: 3.8125rem; /* 61px : 山型の先端〜最初のステップ */
    display: grid;
    grid-template-columns: 17.5625rem 17.5625rem; /* 281px */
    grid-template-rows: repeat(5, auto);
    grid-auto-flow: column;
    justify-content: center;
    column-gap: 4.0625rem; /* 65px */
    row-gap: 2.5rem;
    padding: 0 var(--container-px) 3.75rem;
  }

  .flow__item:not(:last-child) {
    margin-bottom: 0;
  }

  .flow__item:nth-child(-n+4)::after,
  .flow__item:nth-child(n+6):nth-child(-n+9)::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: -2.5rem;
    width: 2px;
    height: 2.5rem;
    background: var(--c-gray-footer);
    transform: translateX(-50%);
  }

  /* ---------- 物流・保管訴求 ---------- */
  .logistics__banner {
    grid-template-columns: auto auto;
    justify-content: center;
    column-gap: 0.75rem; /* 12px */
    padding: 1.5rem 3.75rem;
  }

  .logistics__icons {
    max-width: 45rem;
    margin: 0 auto;
    padding-top: 2rem;
  }

  .logistics__content {
    max-width: 60rem;
    margin: 0 auto;
    gap: 3rem;
  }

  /* ---------- よくある質問 ---------- */
  .faq {
    padding-top: 5rem;
  }

  .faq__list {
    display: grid;
    grid-template-columns: 19.5rem 19.5rem; /* 312px */
    grid-auto-flow: column;
    grid-template-rows: repeat(2, auto);
    justify-content: center;
    column-gap: 3.375rem; /* 54px */
    row-gap: 0.8125rem;
    max-width: 65rem;
    margin: 2.5rem auto 0;
  }

  /* ---------- こんな商品を作りたい ---------- */
  .idea-cta {
    padding-top: 3.75rem;
    padding-bottom: 0;
  }

  /* ---------- プライバシーポリシー ---------- */
  .policy {
    max-width: 50rem;
    margin: 0 auto;
    padding-top: 4rem;
    padding-bottom: 5rem;
  }

  .policy__title {
    font-size: 1.75rem; /* 28px */
  }

  /* ---------- お問い合わせ ---------- */
  .contact__form {
    display: grid;
    grid-template-columns: 21.4375rem 21.4375rem; /* 343px */
    justify-content: center;
    column-gap: 6.25rem; /* 100px */
    width: 100%;
    margin: 1.5rem auto 0;
    padding: 1.5rem 0 2.5rem;
  }

  .contact__required-note {
    grid-column: 1 / -1;
  }

  .contact__form .contact__field:nth-of-type(1) { grid-column: 1; grid-row: 2; }
  .contact__form .contact__field:nth-of-type(2) { grid-column: 1; grid-row: 3; }
  .contact__form .contact__field:nth-of-type(3) { grid-column: 1; grid-row: 4; }
  .contact__form .contact__field:nth-of-type(4) { grid-column: 2; grid-row: 2; }
  .contact__form .contact__field:nth-of-type(5) { grid-column: 2; grid-row: 3; }
  .contact__form .contact__field:nth-of-type(6) { grid-column: 2; grid-row: 4; }
  .contact__form .contact__field:nth-of-type(7) {
    grid-column: 1 / -1;
    grid-row: 5;
  }

  .contact__submit {
    grid-column: 1 / -1;
    grid-row: 6;
    justify-self: center;
  }

  .contact__privacy {
    max-width: 41.125rem;
    margin: 2.5rem auto 0;
    padding: 0 var(--container-px) 2rem;
  }
}
