/* ================================================================
   sub-v2.css — 下層ページを新デザイン（トップの top-v2.css）のトーンに合わせる上書き（2026-10-09）
   style.css のあとに読む。style.css は変えていない（このファイルを外せば元の見た目に戻る）。
   ナビ・相談の帯・フッターの見た目は top-v2.css と同じ値。デザインが固まったら1つにまとめる。
   ================================================================ */

:root {
  --dark: #141D39;
  --light: #fff;
  --mid: #F3F6FB;
  --text-dark: #141D39;
  --text-sub: #3B4566;
  --text-light: #56607F;
  --accent: #F04B20;
  --font-head: "Zen Old Mincho", "Yu Mincho", serif;
  --font-body: "Zen Old Mincho", "Yu Mincho", serif;
  --font-en: "Zen Old Mincho", "Yu Mincho", serif;
  --navy: #141D39;
  --ink: #141D39;
  --ink-sub: #3B4566;
  --cobalt: #0B3AA8;
  --surface: #F3F6FB;
  --line: #D5DDEB;
  --gutter: 48px;
  --inner: 1184px;
}

/* ========== 和紙のテクスチャをやめる ========== */

body,
.section--mid,
.section--dark,
.case-section-overlay,
.story-section-overlay,
.after-submit,
.tel-box,
.placeholder-box,
.blog-card { background-image: none; }

body { background-color: var(--white); color: var(--ink); -webkit-font-smoothing: antialiased; font-weight: 500; }
h1, h2, h3, h4, p, th, td, li { word-break: auto-phrase; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

.page-transition-curtain { background-color: var(--white); }
.scroll-progress { background: var(--accent); }

/* ========== Navigation（top-v2.css と同じ見た目） ========== */

.nav {
  padding: 14px var(--gutter);
  background-color: transparent;
  background-image: none;
  color: var(--ink);
  border-bottom: 1px solid transparent;
  transition: transform .3s var(--ease), border-color .3s, background-color .3s;
}
.nav.is-scrolled { background-color: rgba(255, 255, 255, .96); border-bottom-color: var(--line); }
.nav a, .nav-toggle { color: var(--ink); }
.nav-logo-img { margin: 0; }
.nav-links a,
.nav-dropdown-trigger { color: var(--ink); transition: color .2s; }
.nav-links a:hover,
.nav-dropdown-trigger:hover { opacity: 1; color: var(--accent); }
.nav-links a.is-active,
.nav-dropdown-trigger.is-active { border-bottom: 2px solid var(--accent); }
.nav .nav-cta {
  padding: 10px 24px;
  border: 0;
  border-radius: 999px;
  background: var(--accent);
  color: var(--white);
  font-size: 0.875rem;
  letter-spacing: .06em;
}
.nav .nav-cta:hover { background: #D63E15; color: var(--white); }
.nav-dropdown-menu {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(20, 29, 57, .12);
}
.nav-dropdown-menu a { color: var(--ink) !important; }
.nav-dropdown-menu a:hover { color: var(--accent) !important; }

@media (max-width: 1024px) {
  .nav { padding: 10px 20px; }
  .nav-links { background: var(--white); height: 100dvh; gap: 28px; }
  .nav-links a { color: var(--ink) !important; }
  .nav-links.is-open ~ .nav-cta { bottom: 10%; font-size: 1rem; color: var(--white) !important; }
}

/* ========== 下層ページの見出し部（旧：紺の帯＋薄い線画 → 白地＋波形＋立体の絵） ========== */

.fv {
  min-height: 0;
  align-items: flex-start;
  text-align: left;
  padding: 168px max(var(--gutter), calc((100vw - var(--inner)) / 2)) 96px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0) calc(100% - 100px), #fff 100%),
    url('images/v2/flow-wave-sub.webp') right top / auto 135% no-repeat,
    var(--white);
  color: var(--ink);
  overflow: hidden !important;
}
.fv--sub { min-height: 0; padding-top: 168px; padding-bottom: 96px; }
.fv > *:not(.fv-bg) { position: relative; z-index: 1; max-width: 640px; }
.fv .heading-l,
.fv--sub .heading-l {
  color: var(--ink);
  font-weight: 900;
  font-size: clamp(1.875rem, 3.8vw, 3.125rem);
  line-height: 1.4;
  letter-spacing: .02em;
  text-align: left;
}
.fv .text,
.fv--sub .text { color: var(--ink-sub); text-align: left; }
.fv--sub .fv-sub-lead { margin-top: 12px; }
.fv-catch { text-align: left; font-weight: 900; letter-spacing: .02em; text-indent: 0; }
.fv-company { color: var(--accent); font-weight: 700; text-indent: 0; margin-bottom: 20px; }
.fv-sub { text-indent: 0; }
@keyframes fv-fade { from { opacity: 0; } to { opacity: 1; } }

/* 立体の絵は右側に置く。地が白の画像なので multiply で波形になじませる */
.fv-bg {
  top: 84px;
  bottom: 16px;
  left: auto;
  right: max(24px, calc((100vw - var(--inner)) / 2));
  width: min(38%, 440px);
  opacity: 1;
  justify-content: flex-end;
}
.fv-bg img,
.fv--sub .fv-bg img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  transform: none;
  mix-blend-mode: multiply;
}

/* ========== 節・文字 ========== */

.section--mid { background-color: var(--surface); }
.section--dark { background-color: var(--cobalt); }
.heading-l { font-weight: 900; letter-spacing: .02em; }
.heading-m, .heading-s { font-weight: 700; letter-spacing: .02em; }
.section-label { color: var(--accent); font-weight: 700; }
.link-more { border-bottom: 1.5px solid var(--accent); padding-bottom: 2px; text-decoration: none; font-weight: 700; }
.link-more:hover { color: var(--accent); opacity: 1; }
.text-accent { color: var(--accent); }

/* ========== 箱：角丸の箱をやめ、細い線と角の立った面にする ========== */

.service-card,
.overview-card,
.case-card,
.culture-card,
.member-card,
.feature-card,
.wall-card,
.process-step,
.approach-item,
.values-row,
.blog-card,
.after-submit,
.tel-box,
.ceo-message-pullquote,
.company-map,
.section-img {
  border-radius: 0;
  box-shadow: none;
}
.overview-card,
.case-card,
.culture-card,
.feature-card,
.wall-card,
.blog-card {
  background-color: var(--white);
  border: 0;
  border-top: 1px solid var(--navy);
}
.overview-card:hover,
.blog-card:hover { box-shadow: none; transform: none; }
.service-badge { border-radius: 999px; }
.news-tag { border-radius: 999px; }

/* ========== 事例の帯（service.html・custom-ai/）：暗い帯＋薄い線画 → 淡い青の面＋白いカード ========== */

.case-section { background: var(--surface); color: var(--ink); }
.case-section-bg,
.case-section-overlay { display: none; }
.case-section .heading-l,
.case-section .heading-m,
.case-section .text { color: var(--ink); }
.case-card-dark {
  background: var(--white);
  border: 0;
  border-top: 1px solid var(--navy);
  border-radius: 0;
  color: var(--ink);
  box-shadow: none;
}
.case-card-dark:hover { transform: none; box-shadow: none; }
/* 絵は class 付きと style 直書きの2通りある。両方を同じ見え方にする */
.case-card-dark > img[style] { position: static !important; opacity: 1 !important; width: 100% !important; mix-blend-mode: multiply; }
.case-card-dark .case-card-illust,
.case-card-dark > img[style] { opacity: 1; mix-blend-mode: multiply; }
.case-hero-label { color: var(--ink-sub); }
.case-hero-title { color: var(--ink); font-weight: 700; }
.case-hero-flow { color: var(--ink-sub); }
.case-section .link-more { color: var(--ink); }

/* ========== フォーム・ボタン ========== */

.form-input, .form-textarea, select.form-input {
  border: 1px solid var(--line);
  border-radius: 4px;
  background-color: var(--white);
}
.form-input:focus, .form-textarea:focus { border-color: var(--cobalt); outline: none; }
.form-submit,
.thanks-btn,
.btn {
  border-radius: 999px;
  background: var(--accent);
  border-color: var(--accent);
  color: var(--white);
}
.form-submit:hover,
.thanks-btn:hover { background: #D63E15; border-color: #D63E15; color: var(--white); }
/* .btn は style.css では下線だけの文字リンク（余白なし）。丸いボタンにしたので、ボタンとしての大きさを与える */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 56px;
  padding: 12px 48px;
  border: 0;
  font-size: 1rem;
  line-height: 1.5;
  letter-spacing: .08em;
  transition: background .25s ease;
}
.btn:hover { opacity: 1; background: #D63E15; color: var(--white); }
.thanks-btn--outline { background: transparent; border: 1.5px solid var(--navy); color: var(--ink); }
.thanks-btn--outline:hover { background: var(--navy); border-color: var(--navy); color: var(--white); }
.ceo-message-invite { background: var(--cobalt); border-radius: 0; }
.process-step::before { background: var(--accent); }

/* ========== 相談の帯（top-v2.css と同じ見た目） ========== */

.cta-footer-wrap { min-height: 0; }
.cta-section {
  flex: none;
  padding: 96px var(--gutter);
  background: var(--cobalt) url('images/v2/ribbon-band.webp') left center / cover no-repeat;
  color: var(--white);
}
.cta-bg { display: none; }
.cta-heading {
  font-weight: 900;
  font-size: clamp(1.5rem, 3.2vw, 2.5rem);
  line-height: 1.5;
  letter-spacing: 0;
  text-shadow: 0 2px 16px rgba(2, 30, 110, .45);
}
.cta-text { font-size: 1rem; color: var(--white); margin-bottom: 32px; }
.cta-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 56px;
  padding: 12px 48px;
  border: 0;
  border-radius: 999px;
  background: var(--accent);
  color: var(--white);
  font-size: 1rem;
  letter-spacing: .08em;
}
.cta-button:hover { background: #D63E15; color: var(--white); }
.cta-section--soft { background: var(--surface); }

/* ========== Footer（top-v2.css と同じ見た目） ========== */

.footer {
  /* 波形はフッター全体の背景に敷き、薄い白をかぶせて、その上に文字を載せる。
     （以前は文字の下に空きを作って波形だけを見せていたが、別の帯が付いているように見えた） */
  background:
    linear-gradient(180deg, #fff 0, rgba(255, 255, 255, .8) 96px, rgba(255, 255, 255, .64) 100%),
    url('images/v2/flow-wave-bottom.webp') center bottom / cover no-repeat,
    var(--white);
  color: var(--ink);
  padding: 64px var(--gutter) 32px;
}
.footer-top { max-width: var(--inner); margin: 0 auto; gap: 48px; }
.footer-info { gap: 0; }
.footer-company { color: var(--ink); letter-spacing: .08em; margin-bottom: 16px; font-size: 1rem; }
.footer-logo-img { width: auto; height: 40px; border-radius: 0; }
.footer-address, .footer-tel, .footer-hours { font-size: 0.875rem; line-height: 1.9; color: var(--ink-sub); font-family: var(--font-body); letter-spacing: 0; }
.footer-sns { gap: 8px; margin: 16px 0 0 -12px; }
.footer-sns a { width: auto; min-width: 44px; height: 44px; padding: 0 12px; color: var(--ink); }
.footer-sns a:hover { color: var(--accent); }
.footer-sns svg { width: 20px; height: 20px; }
.footer-sns a.footer-sns-note { padding: 0 12px; background: none; border-radius: 0; }
.footer-sns a.footer-sns-note img { width: 56px; height: auto; filter: brightness(0); }
.footer-links { display: grid; grid-template-columns: repeat(2, auto); gap: 14px 56px; align-content: start; justify-content: end; }
.footer-links a,
.footer-group-trigger { font-size: 0.875rem; font-weight: 500; letter-spacing: .06em; color: var(--ink); }
.footer-links a:hover,
.footer-group-trigger:hover { color: var(--accent); }
.footer-links-group::after { content: none; }
.footer-sub-links {
  position: static;
  transform: none;
  margin: 10px 0 0;
  padding: 0 0 0 12px;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  white-space: normal;
}
.footer-sub-links li + li { margin-top: 8px; }
.footer-links-group:hover .footer-sub-links { display: none; }
.footer-links-group.is-open .footer-sub-links { display: block; }
.footer-bottom {
  max-width: var(--inner);
  margin: 48px auto 0;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}
.footer-copy, .footer-legal a { font-size: 0.8125rem; color: var(--ink-sub); }
.footer-legal { gap: 8px 24px; flex-wrap: wrap; }
.footer-legal a:hover { color: var(--accent); }

/* ========== style.css の multiply（和紙用）を切る。切らないと白の重ねや帯の色が濁る ========== */

body, .nav, .fv, .section--mid, .section--dark, .cta-section, .footer { background-blend-mode: normal; }

/* ========== 図A（local-ai.html）：top-v2.css と同じ立体の絵＋流れる矢印 ========== */

.flow-figure { max-width: none; }
.flow-lead { margin-top: 16px; }
.flow-figure {
  margin-top: 48px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px;
}
.flow-panel {
  padding: 24px 32px 36px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--white);
  text-align: center;
}
/* 立体の絵の上に、データの向きを示す矢印（点線が流れる）を重ねる */
.flow-art { position: relative; max-width: 380px; margin: 0 auto; }
/* 絵の地はわずかに灰色がかった白。multiply でカードの白になじませる */
.flow-art img { width: 100%; aspect-ratio: 1; object-fit: contain; mix-blend-mode: multiply; }
.flow-art svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  fill: none;
  stroke-linecap: round;
  overflow: visible;
}
.flow-art svg marker path { fill: var(--accent); stroke: none; }
/* 矢印は、ファーストビューの絵にある朱色の光の輪と同じ見え方にする：
   細い光の線（track）の上を、明るい粒（accent）が流れる。全体にぼかした光を付ける */
.flow-art svg { filter: drop-shadow(0 0 2.5px rgba(255, 112, 64, .7)) drop-shadow(0 0 7px rgba(255, 140, 90, .35)); }
.flow-art svg .flow-track { stroke: #FF9A73; stroke-width: .55; opacity: .7; }
.flow-art svg marker path { fill: #FF6B3D; }
.flow-art svg .flow-accent {
  stroke: #FF6B3D;
  stroke-width: 1;
  stroke-dasharray: 1.4 3.4;
  animation: flow-dash 1.4s linear infinite;
}
@keyframes flow-dash { to { stroke-dashoffset: -9.6; } }
.flow-name {
  margin-top: 8px;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 1.375rem;
}
.flow-caption { font-size: 0.9375rem; color: var(--ink-sub); }

/* style.css の旧い図A用の指定を打ち消す */
.flow-art svg { max-width: none; margin: 0; stroke: none; }
.flow-panel + .flow-panel { border-left: 1px solid var(--line); }

/* ========== 使い分けの目安（local-ai.html）：top-v2.css にあった表と同じ見た目 ========== */

.fit-table {
  margin-top: 40px;
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  table-layout: fixed;
}
.fit-table th {
  padding: 18px 24px;
  background: var(--surface);
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 1.125rem;
  text-align: left;
}
.fit-table { background: var(--white); }
.fit-table td {
  padding: 18px 24px;
  border-top: 1px solid var(--line);
  font-size: 1rem;
  color: var(--ink-sub);
  vertical-align: top;
}
.fit-table th + th,
.fit-table td + td { border-left: 1px solid var(--line); }
.fit-note { margin-top: 28px; }
.fit-bridge {
  margin-top: 12px;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: clamp(1.125rem, 1.8vw, 1.375rem);
  line-height: 1.7;
}

/* ========== 個別の部品 ========== */

/* 事例のカード（service.html・custom-ai/）：絵は文字の上に置く（重ねない） */
.case-card-dark { padding: 0 0 28px; backdrop-filter: none; }
.case-card-dark > *:not(img):not(.case-card-link) { padding-left: 28px; padding-right: 28px; }
/* 絵は class 付きと style 直書きの2通りある。両方を同じ見え方にする */
.case-card-dark > img[style] { position: static !important; opacity: 1 !important; width: 100% !important; mix-blend-mode: multiply; }
.case-card-dark .case-card-illust,
.case-card-dark > img[style] {
  position: static;
  display: block;
  width: 100%;
  max-width: none;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  margin: 0 0 20px;
  border-bottom: 1px solid var(--line);
}

/* 導入事例（case.html）：絵は右上にはっきり見せ、文字と重ねない */
.case-card { padding-right: 330px; }
.case-card > img[style] {
  top: 28px !important;
  bottom: auto !important;
  right: 28px !important;
  width: 270px !important;
  opacity: 1 !important;
  mix-blend-mode: multiply;
}

/* 私たちについて：3つの価値観の円 */
.tri-node-inner { background: rgba(255, 255, 255, .92); border: 1px solid var(--line); }
/* 会社概要：代表メッセージの引用 */
/* 左の朱色の縦線は付けない（2026-10-11 宮川の指示） */
.ceo-message-pullquote { background: var(--surface); backdrop-filter: none; -webkit-backdrop-filter: none; border-left: 0; }

/* ========== 狭い画面 ========== */

@media (max-width: 1024px) {
  :root { --gutter: 32px; }
  .footer-links { justify-content: start; }
}

@media (max-width: 768px) {
  :root { --gutter: 20px; }
  /* 見出し部：文字の後ろは白のまま。絵は文字の下に置く */
  .fv,
  .fv--sub {
    padding: 112px var(--gutter) 40px;
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0) calc(100% - 80px), #fff 100%),
      linear-gradient(180deg, #fff 0, #fff 55%, rgba(255, 255, 255, 0) 80%),
      url('images/v2/flow-wave-sub.webp') right bottom / auto 70% no-repeat,
      var(--white);
  }
  .fv-bg { position: relative; order: 9; top: auto; bottom: auto; right: auto; width: 78%; max-width: 320px; height: auto; margin: 16px auto 0; }
  .fv-bg img, .fv--sub .fv-bg img { height: auto; }
  .cta-section { padding: 72px var(--gutter); background-position: 62% center; }
  .footer { padding: 64px var(--gutter) 32px; background-position: center, left bottom, center; }
  .footer-top { flex-direction: column; }
  .flow-figure { grid-template-columns: 1fr; gap: 20px; }
  .flow-panel { padding: 16px 20px 28px; }
  .flow-art { max-width: 280px; }
  .case-card { padding-right: 32px; }
  .case-card > img[style] { position: static !important; display: block; width: 100% !important; max-width: 280px; margin: 0 auto 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .flow-art svg .flow-accent { animation: none; }
}

/* ========== ナビ9項目への対応（2026-10-09 項目を3つ足したため） ==========
   PC幅では社名が折れて項目に重なった。社名は折らず、項目の間隔と字を少し詰める。
   1025〜1200px は社名の文字を隠してロゴだけにする。スマホのメニューは縦に収まらない高さでは中でスクロールさせる */
.nav-logo { white-space: nowrap; }
/* 2026-10-10 ナビを5項目にまとめた（トップを外す／会社まわりを「会社情報」に）。間隔と字を元に戻す */
.nav-links { gap: 28px; }
.nav-links a, .nav-dropdown-trigger { font-size: 0.875rem; letter-spacing: .06em; }
@media (min-width: 1025px) and (max-width: 1120px) {
  .nav-logo { font-size: 0; }
  .nav-links { gap: 22px; }
}
@media (max-width: 1024px) {
  .nav-links { gap: 22px; justify-content: flex-start; padding: 88px 0 140px; overflow-y: auto; }
  .nav-links a { font-size: 1.0625rem; }
  /* お問い合わせは画面の下に固定。白い縁を付けて、下を流れる項目と重なって見えないようにする */
  .nav-links.is-open ~ .nav-cta { bottom: 20px !important; box-shadow: 0 0 0 18px #fff, 0 -28px 24px 18px #fff; }
}

/* ボタン・入力欄はブラウザ既定の書体になるので、ページの書体（明朝）を引き継がせる */
button, input, select, textarea, .nav-toggle, .nav-toggle span { font-family: inherit; }

/* 「トップ」はスマホのメニューにだけ出す（PC幅ではロゴが兼ねる） */
@media (min-width: 1025px) { .nav-sp-only { display: none; } }

/* ========== 2026-10-11 見出し部の絵を大きくする ==========
   絵が小さく、文字とのあいだが空いて寂しく見えた。絵のあるページは見出し部を高くし、
   絵を幅の半分近くまで広げる。文字は残りの幅に収め、縦は中央に置く。スマホ幅は変えない */
@media (min-width: 769px) {
  .fv:has(.fv-bg) {
    min-height: 540px !important;
    padding-top: 132px;
    padding-bottom: 104px;
    justify-content: center;
  }
  .fv:has(.fv-bg) > *:not(.fv-bg) { max-width: 44%; }
  .fv-bg {
    top: 72px;
    bottom: 8px;
    right: max(64px, calc((100vw - var(--inner)) / 2 + 24px));
    width: min(48%, 640px);
  }
  /* 絵の後ろだけ波形を白く弱める（青い絵が青い波形に埋もれないように。トップと同じ考え方） */
  .fv:has(.fv-bg) {
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0) calc(100% - 100px), #fff 100%),
      radial-gradient(ellipse 30% 50% at 70% 54%, rgba(255, 255, 255, .9) 0, rgba(255, 255, 255, .66) 55%, rgba(255, 255, 255, 0) 100%),
      url('images/v2/flow-wave-sub.webp') right top / auto 135% no-repeat,
      var(--white);
  }
}
/* 見出しの下の一文は、HTML 側に中央寄せの指定が残っていて2行目がずれていた。左にそろえる */
.fv > .text, .fv > .heading-m, .fv > .heading-l { text-align: left !important; }

/* ========== 2026-10-10 簡易業務診断（check.html）・よくある質問（local-ai.html） ========== */

/* 箱にしない。質問を細い線で区切った行で並べ、右に答えを置く */
.check-lead { margin-top: 16px; max-width: 640px; }
.check { margin-top: 0; }
.check-list { list-style: none; border-top: 1px solid var(--navy); }
.check-item { border-bottom: 1px solid var(--line); }
.check-item fieldset {
  border: 0;
  min-width: 0;
  padding: 24px 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 40px;
  align-items: center;
}
/* legend は grid の子にならないので、float で枠の外の扱いを外してから並べる */
.check-item legend {
  float: left;
  width: 100%;
  padding: 0;
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  column-gap: 0;
}
.check-number {
  grid-row: 1 / 3;
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: .12em;
  color: var(--accent);
  line-height: 1.75;
}
.check-q { font-family: var(--font-head); font-weight: 700; font-size: clamp(1.0625rem, 1.6vw, 1.25rem); line-height: 1.6; }
.check-note { grid-column: 2; margin-top: 4px; font-size: 0.875rem; color: var(--ink-sub); line-height: 1.7; }
.check-choices { display: flex; flex-wrap: wrap; gap: 8px 32px; }
.check-choices label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
}
.check-choices input { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; }
.check-result { padding: 40px 0 0 56px; }
.check-result[hidden] { display: none; }
.check-result-label { font-size: 0.8125rem; font-weight: 700; letter-spacing: .16em; color: var(--accent); }
.check-result-title {
  margin: 8px 0 12px;
  font-family: var(--font-head);
  font-weight: 900;
  font-size: clamp(1.375rem, 2.6vw, 2.125rem);
  line-height: 1.5;
}
.check-result-points { margin-top: 12px; list-style: none; }
.check-result-points li { position: relative; padding-left: 20px; font-weight: 700; }
.check-result-points li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .85em;
  width: 8px;
  height: 1.5px;
  background: var(--accent);
}
.check-result-foot { margin-top: 16px; }
.check-result .link-more { margin-top: 20px; }

/* ========== よくある質問 ========== */

.faq { border-top: 1px solid var(--navy); }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item summary {
  position: relative;
  list-style: none;
  cursor: pointer;
  padding: 22px 48px 22px 8px;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 1.125rem;
  line-height: 1.6;
  transition: color .2s;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:hover { color: var(--cobalt); }
/* 開閉の印：横線＋縦線。開いたら縦線を消す */
.faq-item summary::before,
.faq-item summary::after {
  content: "";
  position: absolute;
  right: 12px;
  top: 50%;
  width: 14px;
  height: 1.5px;
  background: var(--accent);
  transition: transform .3s ease;
}
.faq-item summary::after { transform: rotate(90deg); }
.faq-item[open] summary::after { transform: rotate(0); }
.faq-item .text { padding: 0 48px 24px 8px; }

.faq { margin-top: 40px; background: transparent; }
.faq-item .text { margin: 0; }
@media (max-width: 768px) {
  .check-item fieldset { grid-template-columns: 1fr; gap: 14px; }
  .check-item legend { grid-template-columns: 36px minmax(0, 1fr); }
  .check-choices { padding-left: 36px; gap: 8px 28px; }
  .check-result { padding: 28px 0 0; }
  .faq-item summary { padding: 18px 36px 18px 0; }
}

/* ========== 2026-10-12 残っていた角丸の箱をやめる（図の枠・使い分けの表・ナビを開いたメニュー） ========== */
.nav-dropdown-menu { border-radius: 0; box-shadow: 0 8px 24px rgba(20, 29, 57, .08); }
.flow-panel { border: 0; border-top: 1px solid var(--navy); border-radius: 0; }
.flow-panel + .flow-panel { border-left: 0; }
.fit-table { border: 0; border-top: 1px solid var(--navy); border-bottom: 1px solid var(--line); border-radius: 0; }

/* ========== 2026-10-13 お問い合わせフォーム：簡易業務診断の回答の控え ========== */
/* 箱にしない。上に濃紺の線、下に細い線。問いと答えを2列で並べる */
.check-carry { padding: 20px 0 16px; border-top: 1px solid var(--navy); border-bottom: 1px solid var(--line); }
.check-carry[hidden] { display: none; }
.check-carry-list { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 0; margin: 8px 0 16px; font-size: 0.875rem; line-height: 1.7; }
.check-carry-list dt { color: var(--ink-sub); }
.check-carry-list dd { margin: 0; padding-left: 24px; font-weight: 700; text-align: right; }
.check-carry-list dt:last-of-type, .check-carry-list dd:last-of-type { padding-top: 8px; border-top: 1px solid var(--line); }
.check-carry-send { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-size: 0.9375rem; cursor: pointer; }
.check-carry-send input { width: 18px; height: 18px; accent-color: var(--accent); }
@media (max-width: 768px) {
  .check-carry-list { grid-template-columns: 1fr; gap: 2px 0; }
  .check-carry-list dd { text-align: left; margin-bottom: 8px; padding-left: 0; }
  .check-carry-list dd:last-of-type { padding-top: 0; border-top: 0; }
}

/* ================================================================
   2026-10-19 流動スケール（top-v2.css の同じ名前の節と同じ値）
   - 画面幅 360〜1920px のあいだで、文字・余白・中身の幅を連続して伸び縮みさせる。幅1440 ではほぼそれまでの値
   - 節の中身の幅を、見出し部・ナビ・フッターと同じ1本（--inner）にそろえる。
     それまでは style.css の 840px（中央寄せ）と見出し部の 1184px が混ざり、節ごとに左端の位置が変わっていた
   - 文章だけの段落は、1行が長くなりすぎないよう 42字前後で止める
   上の指定は消さずに、ここで上書きしている。戻すときはこの節を消せばよい
   ================================================================ */
:root {
  --gutter: clamp(20px, 9.85px + 2.82vw, 64px);
  --inner: clamp(1184px, 416px + 53.33vw, 1600px);
  --fs-small: clamp(14px, 13.54px + .128vw, 16px);
  --fs-body: clamp(15px, 14.31px + .192vw, 18px);
  --fs-lead: clamp(16px, 14.15px + .513vw, 24px);
  --fs-h3: clamp(20px, 17.23px + .769vw, 32px);
  --fs-h2: clamp(26px, 19.54px + 1.795vw, 54px);
  --sp-s: clamp(12px, 7.38px + 1.282vw, 32px);
  --sp-m: clamp(20px, 12.62px + 2.051vw, 52px);
  --sp-l: clamp(32px, 20px + 3.333vw, 84px);
  --sp-section: clamp(64px, 47.38px + 4.615vw, 136px);
}

.nav { padding-inline: max(var(--gutter), (100% - var(--inner)) / 2); }
.nav-links a, .nav-dropdown-trigger, .nav .nav-cta { font-size: clamp(0.875rem, 0.8462rem + .128vw, 1rem); }
.nav-logo { font-size: clamp(0.9375rem, 0.9087rem + .128vw, 1.0625rem); }

/* 見出し部：1行の最長は「プライバシーポリシー」の10字。幅320 でも収まる最小値にする */
.fv .heading-l, .fv--sub .heading-l { font-size: clamp(1.625rem, 1.1344rem + 2.179vw, 3.75rem); text-wrap-style: balance; }
.fv .text, .fv--sub .text { font-size: var(--fs-lead); }
@media (max-width: 768px) {
  /* HTML に直接書かれた min-height: 40vh を外す。縦長の画面で見出し部が間延びしていた */
  .fv--sub[style*="min-height"] { min-height: 0 !important; }
}

.section { padding: var(--sp-section) var(--gutter); }
.section-inner, .section-inner--wide { max-width: var(--inner); }
/* 幅を止めるのは本文の段落だけ（見出しや注記は止めない） */
.section-inner > .text, .section-inner > .heading-m + .text { max-width: 42em; }
.text-center.text, .text-center > .text { margin-inline: auto; }
/* 中央寄せの中に置かれた段落・見出しは、箱ごと真ん中に置く（送信完了・登録完了などの中央寄せのページ） */
.thanks-content > :is(p, .text, .heading-m, .heading-l) { margin-inline: auto !important; }
:is(p, .text)[style*="text-align: center"],
:is(p, .text)[style*="text-align:center"] { margin-inline: auto; }
/* ただし見出し部の文は、HTML に中央寄せが残っていても左にそろえる（真ん中に寄ると右の絵に重なる） */
.fv > *:not(.fv-bg) { margin-inline: 0 !important; }

/* フォーム（お問い合わせ・メルマガ登録）：入力欄が中身の幅いっぱい（最大1600px）まで伸びないよう、
   中身の幅の 0.618（黄金比）で止める。左端はほかの節と同じ。フォームの前後の注記も同じ幅にそろえ、左寄せにする */
#contact-form, #newsletter-form,
.section-inner:has(> #contact-form, > #newsletter-form) > p { max-width: min(100%, calc(var(--inner) * .618)); }
.section-inner:has(> #contact-form, > #newsletter-form) > p { margin-inline: 0; text-align: left !important; }

/* 規約・表示のページ（プライバシーポリシー・古物営業法に基づく表示）：長い文章なので、1行を 46字前後で止める。左端はほかの節と同じ */
.privacy-block { max-width: calc(var(--fs-body) * 46); }

/* 見出し部に絵がないページの見出しは、幅で止めない（「古物営業法に基づく表示」が広い画面で折れていた） */
.fv:not(:has(.fv-bg)) > .heading-l { max-width: none !important; }

/* 事例のカードが1枚だけのとき（service.html・custom-ai/）：2列の左だけに置かれて右が空いていた。
   横いっぱいに広げ、絵と文を 1 : 1.618 で横に並べる */
@media (min-width: 769px) {
  .case-grid > .case-card-dark:only-child {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.618fr);
    column-gap: var(--sp-l);
    align-content: center;
    padding: var(--sp-m) var(--sp-m) var(--sp-m) 0;
  }
  .case-grid > .case-card-dark:only-child > img { grid-column: 1; grid-row: 1 / span 8; margin: 0; border-bottom: 0; align-self: center; }
  .case-grid > .case-card-dark:only-child > *:not(img) { grid-column: 2; padding-inline: 0; }
}

/* 1920px より広い画面：文字の大きさの基準（1rem）を画面幅に比例して大きくする。
   style.css・このファイルの文字の大きさは rem で書いてあるので（2026-10-19 に px から置き換えた）、
   部品ごとに指定しなくても、すべての文字が 1920 のときと同じ割合で大きくなる。1920 以下は 1rem = 16px のまま */
@media (min-width: 1921px) {
  html { font-size: min(.8333vw, 32px); }
}
/* 中央寄せの節（HTML に text-align: center が直接書かれたもの）では、幅を止めた段落も真ん中に置く。
   置かないと、段落の箱が左に寄ったまま中の文字だけ中央寄せになり、文字が真ん中からずれる（募集要項など） */
.section-inner[style*="text-align: center"] > .text,
.section-inner[style*="text-align:center"] > .text,
.section-inner[style*="text-align: center"] > p,
.section-inner[style*="text-align:center"] > p { margin-inline: auto; }
.fv .text, .fv--sub .text { margin-inline: 0; }
/* 古い指定で、節ごとに別の幅（720・880・1040px）で中央に置かれていたものを、同じ1本の幅にそろえる */
.section-inner[style*="max-width"] { max-width: var(--inner) !important; }
.case-section-inner { max-width: var(--inner); }
.company-layout { max-width: none; margin: 0; }
/* 事例のカード（service.html・custom-ai/）：1列になる幅で絵が横幅いっぱいに大きくなりすぎないよう、高さに上限を付ける */
.case-card-dark .case-card-illust,
.case-card-dark > img[style] { max-height: clamp(180px, 120px + 16vw, 320px); object-fit: contain; }
.info-table th { width: clamp(120px, 80px + 12vw, 300px); }
.info-table th, .info-table td { font-size: var(--fs-small); padding-block: clamp(14px, 12px + .5vw, 22px); }
.heading-l { font-size: var(--fs-h2); text-wrap-style: balance; }
.heading-m { font-size: var(--fs-h3); text-wrap-style: balance; }
.text { font-size: var(--fs-body); }
.text-small, .section-label, .link-more { font-size: var(--fs-small); }

.cta-section { padding: var(--sp-section) var(--gutter); }
.cta-heading { font-size: clamp(1.5rem, 1.1825rem + 1.41vw, 2.875rem); text-wrap-style: balance; }
.cta-text { font-size: var(--fs-body); }
.cta-button, .btn { font-size: var(--fs-body); min-height: clamp(52px, 48px + 1vw, 64px); }

.footer { padding: var(--sp-l) var(--gutter) var(--sp-s); }
.footer-address, .footer-tel, .footer-hours, .footer-links a, .footer-group-trigger { font-size: clamp(0.8125rem, 0.7837rem + .128vw, 0.9375rem); }

/* 私たちについて：価値観の節の背景の絵。絵の白い地が淡い青の面の上で四角く浮いて見えた（横長の画面ほど目立つ）。multiply でなじませる */
.values-section-bg { mix-blend-mode: multiply; }
/* 私たちについて：3つの価値観の円。円の幅と間隔を画面幅に合わせて縮め、幅1024 で右の円が切れないようにする */
.values-tri { column-gap: clamp(40px, 27vw - 120px, 320px); max-width: none; }
.tri-node-inner { width: clamp(300px, 26vw + 124px, 460px); height: auto; aspect-ratio: 390 / 265; }
.tri-title { font-size: clamp(1.25rem, 0.9906rem + 1.15vw, 2.125rem); }
.tri-sub { font-size: var(--fs-small); }

/* 1920px より広い画面：top-v2.css の同じ節と同じ考え方（1920 の見た目を画面幅に比例して大きくする。上限は幅3840） */
@media (min-width: 1921px) {
  :root {
    --gutter: min(3.333vw, 128px);
    --inner: min(75vw, 2880px);
    --fs-small: min(.833vw, 32px);
    --fs-body: min(.9375vw, 36px);
    --fs-lead: min(1.25vw, 48px);
    --fs-h3: min(1.667vw, 64px);
    --fs-h2: min(2.8125vw, 108px);
    --sp-s: min(1.667vw, 64px);
    --sp-m: min(2.708vw, 104px);
    --sp-l: min(4.375vw, 168px);
    --sp-section: min(7.083vw, 272px);
  }
  .nav { padding-block: min(.729vw, 28px); }
  .nav-links { gap: min(1.458vw, 56px); }
  .nav-links a, .nav-dropdown-trigger, .nav .nav-cta { font-size: var(--fs-small); }
  .nav .nav-cta { padding: min(.521vw, 20px) min(1.25vw, 48px); }
  .nav-logo { font-size: min(.885vw, 2.125rem); }
  .nav-logo-img, .footer-logo-img { height: min(2.083vw, 80px); }
  .fv .heading-l, .fv--sub .heading-l { font-size: min(3.125vw, 7.5rem); }
  .fv:has(.fv-bg) { min-height: min(28.125vw, 1080px) !important; padding-top: min(6.875vw, 264px); padding-bottom: min(5.417vw, 208px); }
  .fv--sub { padding-top: min(8.75vw, 336px); padding-bottom: min(5vw, 192px); }
  .fv-bg { top: min(3.75vw, 144px); width: min(48%, 33.33vw); }
  /* 見出し部の文字の幅（それまで 640px で止めていた）も画面幅に比例させる。止めたままだと見出しだけ大きくなって折れる */
  .fv:not(:has(.fv-bg)) > * { max-width: 33.33vw; }
  .cta-heading { font-size: min(2.396vw, 5.75rem); }
  .cta-button, .btn { min-height: min(3.333vw, 128px); padding-inline: min(2.5vw, 96px); }
  .footer-address, .footer-tel, .footer-hours, .footer-links a, .footer-group-trigger { font-size: min(.781vw, 1.875rem); }
  .footer-company { font-size: min(.833vw, 2rem); }
  .footer-links { gap: min(.729vw, 28px) min(2.917vw, 112px); }
  .footer-copy, .footer-legal a { font-size: min(.677vw, 1.625rem); }
  .section-label { margin-bottom: var(--sp-m); }
  .values-tri { column-gap: min(16.67vw, 640px); }
  .tri-node-inner { width: min(23.96vw, 920px); }
  .tri-title { font-size: min(1.771vw, 4.25rem); }
  .info-table th { width: min(15.625vw, 600px); }
  .info-table th, .info-table td { padding-block: min(1.146vw, 44px); }
  .case-card-dark .case-card-illust, .case-card-dark > img[style] { max-height: min(16.67vw, 640px); }
}

/* 会社概要：代表メッセージ。肩書きと名前が折れない指定のせいで、幅320 で列ごと押し広げていた */
.ceo-message { grid-template-columns: clamp(180px, 120px + 10vw, 300px) minmax(0, 1fr); gap: var(--sp-l); }
.ceo-message-pullquote, .ceo-message-invite { font-size: clamp(1.125rem, 1.0388rem + .385vw, 1.5rem); }
@media (max-width: 768px) {
  .ceo-message { grid-template-columns: minmax(0, 1fr); gap: var(--sp-m); }
  .ceo-message-name { white-space: normal; }
}
@media (min-width: 1921px) {
  .ceo-message { grid-template-columns: min(15.625vw, 600px) minmax(0, 1fr); }
  .ceo-message-photo .member-photo { width: min(8.33vw, 320px); height: min(8.33vw, 320px); }
  .ceo-message-name { font-size: var(--fs-small); }
  .ceo-message-pullquote, .ceo-message-invite { font-size: min(1.25vw, 3rem); }
}

/* ================================================================
   2026-10-21 利用者試験（100人×2回）で出た見た目・動きの修正
   ================================================================ */
/* 背の低いスマホ（iPhone SE など）では、メニューの全項目がお問い合わせボタンの上に収まるよう間隔を詰める */
@media (max-width: 1024px) and (max-height: 740px) {
  .nav-links { gap: 10px; padding: 64px 0 96px; }
  .nav-links a { font-size: 1rem; }
}
/* ☰の下の「メニュー」が小さく、背景の波に重なって読めなかった */
.nav-toggle-label { font-size: 0.75rem; font-weight: 700; }
@media (max-width: 1024px) {
  .nav-toggle { background: rgba(255, 255, 255, .88); }
}
/* 私たちについて「なぜやるのか」：絵を中央基準で1.35倍にしていたため、広い画面で左の本文の行末（「データを」など）に重なっていた。
   拡大を控えめにし、右へ伸ばす */
@media (min-width: 769px) {
  .sec2-illust-wrap { transform: scale(1.2) translateY(-12%); transform-origin: 15% 50%; }
}
/* 会社概要：見出し（所在地など）を行の上端にそろえる。住所の下に写真・地図が続く行で、見出しだけ数百px下に出ていた */
.info-table th { vertical-align: top; }
/* 2560px 以上などの広い画面：本文の1行が長くなりすぎた。読みやすい長さ（全角およそ46字）で止める */
@media (min-width: 1441px) {
  .section-inner > p.text, .flow-lead > p.text, .faq-item .text { max-width: 46em; }
  /* お問い合わせ・メルマガ：フォームの列を中身の幅の中央に置く（左に寄って右が大きく空いていた） */
  #contact-form, #newsletter-form,
  .section-inner:has(> #contact-form, > #newsletter-form) > p { margin-inline: auto; }
  /* 簡易業務診断：答えを質問のすぐ右に置く（質問から画面の端まで離れていた） */
  .check-item fieldset { grid-template-columns: minmax(0, 40em) auto; justify-content: start; gap: 64px; }
}
/* 私たちについて：代表のカードは名前・肩書きが中央なのに、経歴とひとことだけ左寄せで横いっぱいだった。中央にそろえ、行の長さを抑える */
.member-card--ceo .member-career,
.member-card--ceo .member-quote { text-align: center; max-width: 40em; margin-inline: auto; }
/* フッター「サービス ▾」：開くと列の幅が中の項目に合わせて広がり、並び全体が横にずれていた。
   閉じているあいだも幅だけは取っておく（見えない・高さ0・押せない） */
.footer-links-group:not(.is-open) .footer-sub-links { display: block; visibility: hidden; height: 0; margin-top: 0; overflow: hidden; }
/* ページの終わりに置く「次に読む」リンクの並び（行き止まりをなくすため 2026-10-21 に追加） */
.next-links { display: flex; flex-wrap: wrap; gap: 16px 40px; margin-top: 32px; }
.member-ceo-link { display: inline-block; margin-top: 20px; }
.case-service-link { display: inline-block; margin-top: 24px; position: relative; z-index: 1; }
/* 事例・代表メッセージへ直接飛んだとき、固定ヘッダーの下に隠れないように */
[id^="case-0"], #message, #culture { scroll-margin-top: 96px; }
/* ブログ：記事カードに投稿日を出す */
.blog-date { display: block; margin-bottom: 8px; font-size: var(--fs-small, .8125rem); letter-spacing: .06em; color: var(--ink-sub); }
/* 本文中のリンク（下線で示す） */
.text-link { color: inherit; text-decoration: underline; text-underline-offset: .2em; }
.text-link:hover { color: var(--accent); }
/* 段落の最後の行に1〜3文字だけ落ちるのを防ぐ（対応ブラウザのみ。iPhone の Safari は手で止める .nowrap を併用） */
p, li, dd, td, th, blockquote { text-wrap-style: pretty; }
.nowrap { white-space: nowrap; }
/* よくある質問の問い・表のマスなど短い文は、行の長さをそろえて最後の行が短く残らないようにする */
.faq-q, .fit-table td, .fit-table th, .blog-title { text-wrap-style: balance; }

/* メニュー「サービス」の各項目に添える短い説明（PCのドロップダウンだけ。スマホの全画面メニューは長くなるので出さない） */
/* 項目名は太く、説明は小さく細く薄くして、ぱっと見で見分けられるようにする */
.nav-dropdown-menu:has(.nav-desc) { padding: 4px 18px; }
.nav-dropdown-menu a:has(.nav-desc) { display: block; font-size: .9375em; font-weight: 700; letter-spacing: .03em; line-height: 1.5; }
.nav-dropdown-menu li:has(.nav-desc) { padding-block: 9px; }
.nav-dropdown-menu li:has(.nav-desc) + li { margin-top: 0; border-top: 1px solid var(--line); }
/* 説明は項目名の 3/4（4:3 の比） */
.nav-desc { display: block; margin-top: 3px; font-size: .75em; font-weight: 400; letter-spacing: .04em; line-height: 1.5; color: #9AA1B4; }
.nav-dropdown-menu a:hover .nav-desc { color: #9AA1B4; }
@media (max-width: 1024px) {
  .nav-desc { display: none; }
}

/* 見出し部の文字のかたまり（絵のある下層ページ）。中の文字は左そろえ */
.fv-text .heading-l, .fv-text .heading-m, .fv-text .text { text-align: left !important; }
.fv-text .text { margin-top: 12px; }

/* ========== 2026-10-23 絵のある下層ページ：文字と絵を黄金比で組む（会社情報の3ページから始め、同じ日にほかの8ページにも広げた） ==========
   見出しが短いページでは、左端の文字と右端の絵のあいだが大きく空いていた。
   中身の幅を画面の 61.8%（最小 960px）に絞り、見出し部と本文を同じ左の線から始める。
   見出し部はその幅を 文字の列 : 絵の列 = 1 : 1.618 に分け、絵は右の列の中央に置く。高さとスマホ幅は変えない */
@media (min-width: 769px) {
  body:has(.fv--compact) .fv--compact,
  body:has(.fv--compact) .section { --inner: min(clamp(1184px, 416px + 53.33vw, 1600px), max(960px, 61.8vw)); }
  .fv--compact:has(.fv-bg) {
    display: grid;
    grid-template-columns: minmax(auto, 1fr) minmax(0, 1.618fr);
    grid-template-rows: 1fr auto auto 1fr;
    justify-content: start;
    column-gap: clamp(48px, 5vw, 96px);
    padding-top: 96px;
    padding-bottom: 40px;
  }
  /* 文字のかたまり（見出し＋説明）は本文と同じ左の線から。縦は絵の真ん中（上下の 1fr で挟む） */
  .fv--compact:has(.fv-bg) > .fv-text { grid-column: 1; grid-row: 2 / 4; max-width: none; justify-self: start; }
  /* 見出しは1行のまま（文字の列は見出しの幅より狭くならない）。説明の文は列の幅で折り返す */
  .fv--compact .fv-text .heading-l { white-space: nowrap; }
  /* 説明の文の列は最低 416px（16px の字で26字）をとる。細い列で数文字ずつ折れないように。全ページ同じ幅にするため rem で決める */
  .fv--compact .fv-text { min-width: min(26rem, 34vw); }
  .fv--compact .fv-bg {
    grid-column: 2;
    grid-row: 1 / 5;
    position: relative;
    inset: auto;
    justify-self: center;
    width: 100%;
    max-width: 680px;
    height: 460px;
  }
}
@media (min-width: 1920px) {
  body:has(.fv--compact) .fv--compact,
  body:has(.fv--compact) .section { --inner: 61.8vw; }
  .fv--compact:has(.fv-bg) { padding-top: min(5vw, 192px); padding-bottom: min(2.083vw, 80px); }
  .fv--compact .fv-bg { max-width: 35.417vw; height: min(23.958vw, 920px); }
  .fv--compact .fv-text { min-width: 27vw; }
}
