@charset "UTF-8";
/* ==========================================================================
   1. Foundation
   ========================================================================== */
:root {
  /* color */
  --color-primary: #001e70;
  --color-primary-dark: #00144d;
  --color-primary-light: #e8edf7;
  --color-accent: #1f5fd1;
  --color-text: #222;
  --color-text-sub: #5a6170;
  --color-border: #d6dbe6;
  --color-bg: #fff;
  --color-bg-gray: #f4f6fa;
  --color-red: #d7262c;
  --color-white: #fff;
  /* series color（製品ラインナップ） */
  --series-airis: #d64541;
  --series-fits: #1a9fd0;
  --series-sci: #2e9b6a;
  --series-metal: #b39a00;
  --series-micro: #3c3f8f;
}

:root {
  /* font */
  --font-base: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
  --font-en: "Montserrat", var(--font-base);
  /* size */
  --container: 1200px;
  --gutter: 30px;
  --side-width: 250px;
  --header-height: 88px;
  --radius: 6px;
  --shadow: 0 4px 16px rgba(0, 30, 112, 0.08);
  --transition: 0.25s ease;
}

@media screen and (max-width: 767px) {
  :root {
    --gutter: 16px;
    --header-height: 60px;
  }
}
/* reset */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-height);
}

body,
h1, h2, h3, h4, h5, h6,
p, ul, ol, dl, dd, figure, blockquote {
  margin: 0;
}

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

img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

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

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* base */
body {
  font-family: var(--font-base);
  font-size: 16px;
  line-height: 1.9;
  letter-spacing: 0.04em;
  color: var(--color-text);
  background: var(--color-bg);
  font-feature-settings: "palt" 1;
}

@media screen and (max-width: 767px) {
  body {
    font-size: 15px;
  }
}
body.is-menu-open {
  overflow: hidden;
}

/* ==========================================================================
   2. Layout
   ========================================================================== */
.l-container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ---------- header ---------- */
.l-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--color-primary);
  color: var(--color-white);
}

.l-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: var(--header-height);
}

.l-header__logo {
  flex-shrink: 0;
  width: 240px;
  line-height: 1;
}

.l-header__logo img {
  display: block;
  width: 100%;
}

.l-header__logo a {
  display: block;
}

.l-header__toggle {
  display: none;
}

@media screen and (max-width: 1199px) {
  .l-header__logo {
    width: 200px;
  }
}
@media screen and (max-width: 767px) {
  .l-header__logo {
    width: 180px;
  }
}
/* ナビ項目が多いためハンバーガーは 1023px 以下で切替 */
@media screen and (max-width: 1023px) {
  .l-header__toggle {
    position: relative;
    display: block;
    width: 44px;
    height: 44px;
    margin-right: -8px;
  }
  .l-header__toggle span {
    position: absolute;
    left: 11px;
    width: 22px;
    height: 2px;
    background: var(--color-white);
    transition: transform var(--transition), opacity var(--transition);
  }
  .l-header__toggle span:nth-child(1) {
    top: 15px;
  }
  .l-header__toggle span:nth-child(2) {
    top: 21px;
  }
  .l-header__toggle span:nth-child(3) {
    top: 27px;
  }
  .is-menu-open .l-header__toggle span:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
  }
  .is-menu-open .l-header__toggle span:nth-child(2) {
    opacity: 0;
  }
  .is-menu-open .l-header__toggle span:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
  }
}
/* ---------- global nav ---------- */
.l-gnav__list {
  display: flex;
  align-items: center;
}

.l-gnav__item > a {
  display: block;
  padding: 8px 14px;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.08em;
  white-space: nowrap;
  transition: opacity var(--transition);
}

.l-gnav__item > a:hover {
  opacity: 0.7;
}

.l-gnav__item.is-current > a {
  box-shadow: inset 0 -2px 0 var(--color-white);
}

.l-gnav__item--contact {
  margin-left: 10px;
}

.l-gnav__item--contact > a {
  padding: 10px 20px;
  background: var(--color-white);
  color: var(--color-primary);
  border-radius: 999px;
}

@media screen and (max-width: 1199px) {
  .l-gnav__item > a {
    padding: 8px 9px;
    font-size: 14px;
    letter-spacing: 0.04em;
  }
}
@media screen and (max-width: 1023px) {
  .l-gnav {
    position: fixed;
    inset: var(--header-height) 0 0;
    overflow-y: auto;
    padding: 8px var(--gutter) 40px;
    background: var(--color-primary);
    visibility: hidden;
    opacity: 0;
    transition: opacity var(--transition), visibility var(--transition);
  }
  .is-menu-open .l-gnav {
    visibility: visible;
    opacity: 1;
  }
  .l-gnav__list {
    display: block;
  }
  .l-gnav__item {
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  }
  .l-gnav__item > a {
    padding: 16px 4px;
    font-size: 16px;
  }
  .l-gnav__item.is-current > a {
    box-shadow: none;
  }
  .l-gnav__item--contact {
    margin: 28px 0 0;
    border-bottom: 0;
  }
  .l-gnav__item--contact > a {
    text-align: center;
  }
}
/* ---------- content（サイド＋メイン） ---------- */
.l-content {
  display: grid;
  grid-template-columns: var(--side-width) minmax(0, 1fr);
  grid-template-areas: "side main";
  gap: 60px;
  padding-block: 56px 100px;
}

.l-main {
  grid-area: main;
}

.l-side {
  grid-area: side;
}

@media screen and (max-width: 1199px) {
  .l-content {
    gap: 40px;
    --side-width: 210px;
  }
}
@media screen and (max-width: 767px) {
  .l-content {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "main" "side";
    gap: 56px;
    padding-block: 32px 64px;
  }
}
/* ---------- side ---------- */
.l-side__inner {
  position: sticky;
  top: calc(var(--header-height) + 24px);
}

.l-side__bnr {
  display: block;
  margin-top: 28px;
  border-radius: var(--radius);
  overflow: hidden;
  transition: opacity var(--transition);
}

.l-side__bnr:hover {
  opacity: 0.8;
}

@media screen and (max-width: 767px) {
  .l-side__bnr {
    max-width: 360px;
    margin-inline: auto;
  }
}
/* ---------- footer ---------- */
.l-footer {
  background: var(--color-primary);
  color: var(--color-white);
}

.l-footer__pagetop {
  display: block;
  width: 100%;
  padding: 14px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  font-size: 14px;
  letter-spacing: 0.2em;
  text-align: center;
  transition: background var(--transition);
}

.l-footer__pagetop::after {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-left: 12px;
  border-top: 2px solid currentColor;
  border-left: 2px solid currentColor;
  transform: translateY(1px) rotate(45deg);
}

.l-footer__pagetop:hover {
  background: var(--color-primary-dark);
}

.l-footer__nav {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 24px;
  padding-block: 56px 48px;
  font-size: 14px;
  line-height: 1.6;
}

.l-footer__nav dt,
.l-footer__nav dd {
  margin-bottom: 12px;
}

.l-footer__nav dt {
  font-weight: 700;
}

.l-footer__nav dd {
  opacity: 0.85;
}

.l-footer__nav dd.is-indent {
  padding-left: 1em;
}

.l-footer__nav a:hover {
  text-decoration: underline;
}

.l-footer__bottom {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  padding-block: 0 32px;
}

.l-footer__logo {
  width: 260px;
}

.l-footer__logo img {
  display: block;
  width: 100%;
}

.l-footer__copy {
  font-family: var(--font-en);
  font-size: 12px;
  opacity: 0.8;
}

.l-footer__ext {
  white-space: nowrap;
}

.l-footer__ext::after {
  content: "";
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-left: 6px;
  border: 1.5px solid currentColor;
  border-radius: 1px;
  vertical-align: -1px;
}

@media screen and (max-width: 1199px) {
  .l-footer__nav {
    grid-template-columns: repeat(3, 1fr);
  }
}
.l-footer__sub li {
  margin-bottom: 12px;
  opacity: 0.85;
}

.l-footer__col > dl + .l-footer__sub {
  margin-top: 24px;
}

@media screen and (max-width: 767px) {
  /* SPは大カテゴリのみ縦並び */
  .l-footer__nav {
    grid-template-columns: 1fr;
    gap: 0;
    padding-block: 16px 24px;
    font-size: 15px;
  }
  .l-footer__nav dd {
    display: none;
  }
  .l-footer__nav dt {
    margin: 0;
  }
  .l-footer__nav dt a {
    position: relative;
    display: block;
    padding: 15px 28px 15px 4px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  }
  .l-footer__nav dt a::after {
    content: "";
    position: absolute;
    right: 8px;
    top: 50%;
    width: 7px;
    height: 7px;
    border-top: 1.5px solid currentColor;
    border-right: 1.5px solid currentColor;
    transform: translateY(-50%) rotate(45deg);
    opacity: 0.7;
  }
  .l-footer__nav a:hover {
    text-decoration: none;
  }
  .l-footer__col {
    display: contents;
  }
  .l-footer__col > dl + .l-footer__sub {
    margin-top: 0;
  }
  .l-footer__sub {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 20px;
    padding-top: 20px;
    font-size: 12px;
  }
  .l-footer__sub li {
    margin: 0;
  }
  .l-footer__bottom {
    flex-direction: column;
    align-items: flex-start;
  }
  .l-footer__logo {
    width: 220px;
  }
}
/* ==========================================================================
   3. Component
   ========================================================================== */
/* ---------- page title（下層ページタイトル） ---------- */
.c-page-title {
  position: relative;
  background: linear-gradient(120deg, var(--color-primary) 0%, #0a3a9e 100%);
  color: var(--color-white);
  overflow: hidden;
}

.c-page-title::after {
  content: "";
  position: absolute;
  right: -80px;
  top: -120px;
  width: 420px;
  height: 420px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 50%;
  box-shadow: 0 0 0 60px rgba(255, 255, 255, 0.03);
}

.c-page-title__inner {
  position: relative;
  z-index: 1;
  padding-block: 56px;
}

.c-page-title__en {
  display: block;
  margin-bottom: 8px;
  font-family: var(--font-en);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.16em;
  opacity: 0.75;
}

.c-page-title__ja {
  font-size: 34px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.1em;
}

@media screen and (max-width: 767px) {
  .c-page-title__inner {
    padding-block: 36px;
  }
  .c-page-title__en {
    font-size: 12px;
  }
  .c-page-title__ja {
    font-size: 24px;
  }
}
/* ---------- breadcrumb ---------- */
.c-breadcrumb {
  background: var(--color-bg-gray);
  font-size: 13px;
}

.c-breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  padding-block: 12px;
}

.c-breadcrumb__item {
  color: var(--color-text-sub);
}

.c-breadcrumb__item:not(:last-child)::after {
  content: "/";
  margin-inline: 10px;
  color: #a0a6b3;
}

.c-breadcrumb__item a {
  color: var(--color-primary);
}

.c-breadcrumb__item a:hover {
  text-decoration: underline;
}

/* ---------- local nav（サイドメニュー） ---------- */
.c-local-nav {
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  overflow: hidden;
  font-size: 14px;
  line-height: 1.5;
}

.c-local-nav__title {
  padding: 14px 18px;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 15px;
  font-weight: 700;
}

.c-local-nav__item + .c-local-nav__item {
  border-top: 1px solid var(--color-border);
}

.c-local-nav__item > a {
  position: relative;
  display: block;
  padding: 13px 32px 13px 18px;
  font-weight: 500;
  transition: background var(--transition), color var(--transition);
}

.c-local-nav__item > a::after {
  content: "";
  position: absolute;
  right: 16px;
  top: 50%;
  width: 6px;
  height: 6px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
  opacity: 0.5;
}

.c-local-nav__item > a:hover {
  background: var(--color-primary-light);
  color: var(--color-primary);
}

.c-local-nav__item.is-current > a {
  color: var(--color-primary);
  font-weight: 700;
  background: var(--color-primary-light);
  box-shadow: inset 4px 0 0 var(--color-primary);
}

.c-local-nav__item--group {
  background: var(--color-bg-gray);
}

.c-local-nav__item--group > a {
  font-weight: 700;
}

.c-local-nav__item--group.is-current > a {
  background: var(--color-primary);
  color: var(--color-white);
  box-shadow: none;
}

.c-local-nav__item--group.is-current > a::after {
  opacity: 0.8;
}

.c-local-nav__children {
  background: var(--color-white);
}

.c-local-nav__children > .c-local-nav__item {
  border-top: 1px solid var(--color-border);
}

.c-local-nav__children > .c-local-nav__item > a {
  padding-left: 26px;
}

/* ---------- heading ---------- */
.c-heading-lv2 {
  position: relative;
  margin-bottom: 32px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
  color: var(--color-primary);
  font-size: 26px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.06em;
}

.c-heading-lv2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 64px;
  height: 3px;
  background: var(--color-primary);
}

.c-heading-lv2__en {
  display: block;
  margin-bottom: 4px;
  font-family: var(--font-en);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  color: var(--color-accent);
}

.c-heading-lv3 {
  margin-bottom: 20px;
  padding-left: 14px;
  border-left: 4px solid var(--color-primary);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.5;
}

.c-heading-lv4 {
  margin-bottom: 16px;
  padding: 8px 16px;
  background: var(--color-primary-light);
  color: var(--color-primary);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.1em;
  border-radius: 4px;
}

@media screen and (max-width: 767px) {
  .c-heading-lv2 {
    margin-bottom: 24px;
    font-size: 21px;
  }
  .c-heading-lv3 {
    font-size: 18px;
  }
}
/* ---------- section ---------- */
.c-section + .c-section {
  margin-top: 88px;
}

.c-block + .c-block {
  margin-top: 56px;
}

@media screen and (max-width: 767px) {
  .c-section + .c-section {
    margin-top: 64px;
  }
  .c-block + .c-block {
    margin-top: 44px;
  }
}
/* ---------- text ---------- */
.c-text + .c-text {
  margin-top: 1em;
}

.c-text--lead {
  font-size: 17px;
  font-weight: 500;
}

.c-em {
  color: var(--color-red);
  font-weight: 700;
  font-style: normal;
}

.c-note {
  font-size: 13px;
  color: var(--color-text-sub);
}

/* ---------- figure（画像一枚もの） ---------- */
.c-figure {
  margin-top: 24px;
}

.c-figure img {
  display: block;
  width: 100%;
  border-radius: 4px;
}

/* 画像の罫線＋余白（白背景の画像と背景の境目を見せる） */
.l-main img {
  padding: 4px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
}

/* アイコン・バッジ類、カードいっぱいに入る写真は対象外 */
.l-main .c-icon-card img,
.l-main .c-service__item img,
.l-main .p-detection-ai__badge,
.l-main img[src$=".svg"],
.l-main .c-mv img,
.l-main .c-video img,
.l-main .c-link-card__img img,
.l-main .c-signature img {
  padding: 0;
  background: none;
  border: 0;
}

.c-figure__caption {
  margin-top: 8px;
  font-size: 13px;
  color: var(--color-text-sub);
}

/* ---------- check list ---------- */
.c-check-list {
  display: grid;
  gap: 10px;
}

.c-check-list__item {
  position: relative;
  padding-left: 32px;
  line-height: 1.7;
}

.c-check-list__item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 3px;
  width: 20px;
  height: 20px;
  background: var(--color-primary);
  border-radius: 50%;
}

.c-check-list__item::after {
  content: "";
  position: absolute;
  left: 7px;
  top: 7px;
  width: 6px;
  height: 10px;
  border-right: 2px solid var(--color-white);
  border-bottom: 2px solid var(--color-white);
  transform: rotate(45deg);
}

/* ---------- box ---------- */
.c-box {
  padding: 32px 36px;
  background: var(--color-bg-gray);
  border-radius: var(--radius);
}

.c-box__title {
  margin-bottom: 16px;
  color: var(--color-primary);
  font-size: 18px;
  font-weight: 700;
}
/* 見出しの前に色を示す丸（カラー検査／モノクロ検査） */
.c-box__title--color::before,
.c-box__title--mono::before {
  content: "";
  display: inline-block;
  width: 1.1em;
  height: 1.1em;
  margin-right: 8px;
  border-radius: 50%;
  vertical-align: -0.18em;
}
.c-box__title--color::before {
  background: linear-gradient(90deg, #e60033 0%, #f39800 18%, #fff100 36%, #22ac38 54%, #00a0e9 72%, #1d2088 88%, #920783 100%);
}
.c-box__title--mono::before {
  background: linear-gradient(90deg, #111 0%, #555 50%, #d6d6d6 100%);
}

.c-box--case {
  padding: 0;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  overflow: hidden;
}

.c-box--case > .c-box__title {
  margin: 0;
  padding: 12px 24px;
  background: var(--color-text-sub);
  color: var(--color-white);
  font-size: 16px;
}

.c-box__body {
  padding: 32px 36px;
}

@media screen and (max-width: 767px) {
  .c-box,
.c-box__body {
    padding: 24px 20px;
  }
  .c-box--case {
    padding: 0;
  }
}
/* ---------- table ---------- */
.c-table {
  width: 100%;
  border: 1px solid var(--color-border);
  font-size: 15px;
  line-height: 1.7;
}

.c-table th,
.c-table td {
  padding: 14px 20px;
  border: 1px solid var(--color-border);
  vertical-align: top;
  text-align: left;
}

.c-table thead th {
  background: var(--color-bg-gray);
  text-align: center;
  font-weight: 700;
}

.c-table .is-highlight {
  background: #fff7e8;
}

.c-table thead th.is-highlight {
  background: #e8890c;
  color: var(--color-white);
}

.c-table__list li + li {
  margin-top: 4px;
}

@media screen and (max-width: 767px) {
  .c-table {
    font-size: 14px;
  }
  .c-table th,
.c-table td {
    padding: 10px 12px;
  }
}
/* ---------- card（アイコン付きリンクカード） ---------- */
.c-icon-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.c-icon-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding: 32px 16px 24px;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: var(--radius);
  font-weight: 700;
  letter-spacing: 0.1em;
  transition: transform var(--transition), box-shadow var(--transition);
}

/* アイコンSVGは周囲に余白が多いため、大きく表示して余白分を負のマージンで詰める */
.c-icon-card img {
  width: 200px;
  margin-block: -40px -28px;
}

.c-icon-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 24px rgba(0, 30, 112, 0.25);
}

@media screen and (max-width: 767px) {
  .c-icon-cards {
    gap: 10px;
  }
  .c-icon-card {
    padding: 20px 8px 16px;
    font-size: 14px;
  }
  .c-icon-card img {
    width: 120px;
    margin-block: -24px -16px;
  }
}
/* ---------- product card（製品ラインナップ） ---------- */
.c-product-group + .c-product-group {
  margin-top: 40px;
}

.c-product-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.c-product-card {
  --series: var(--color-primary);
  position: relative;
  display: block;
  padding: 18px 48px 18px 22px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 4px solid var(--series);
  border-radius: 4px;
  transition: box-shadow var(--transition), transform var(--transition);
}

.c-product-card::after {
  content: "";
  position: absolute;
  right: 22px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-top: 2px solid var(--series);
  border-right: 2px solid var(--series);
  transform: translateY(-50%) rotate(45deg);
}

.c-product-card:hover {
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}

.c-product-card__type {
  display: block;
  font-size: 12px;
  color: var(--color-text-sub);
  line-height: 1.5;
}

.c-product-card__name {
  display: block;
  margin-top: 4px;
  font-family: var(--font-en);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--color-text);
}

.c-product-card__name small {
  margin-left: 6px;
  font-family: var(--font-base);
  font-size: 13px;
  font-weight: 500;
}

.c-product-card--airis {
  --series: var(--series-airis);
}

.c-product-card--fits {
  --series: var(--series-fits);
}

.c-product-card--sci {
  --series: var(--series-sci);
}

.c-product-card--metal {
  --series: var(--series-metal);
}

.c-product-card--micro {
  --series: var(--series-micro);
}

@media screen and (max-width: 767px) {
  .c-product-cards {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .c-product-card__name {
    font-size: 18px;
  }
}
/* ---------- page nav（同カテゴリ内ページ移動） ---------- */
.c-page-nav {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-top: 88px;
}

.c-page-nav__item a {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: 56px;
  padding: 8px 12px;
  border: 1px solid var(--color-primary);
  border-radius: 4px;
  color: var(--color-primary);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
  transition: background var(--transition), color var(--transition);
}

.c-page-nav__item a:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

.c-page-nav__item.is-current a {
  background: var(--color-primary);
  color: var(--color-white);
  pointer-events: none;
}

@media screen and (max-width: 767px) {
  .c-page-nav {
    grid-template-columns: repeat(2, 1fr);
    margin-top: 64px;
  }
  .c-page-nav__item a {
    font-size: 13px;
  }
}
/* ---------- contact CTA ---------- */
.c-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: 40px;
  padding: 36px 40px;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: var(--radius);
}

.c-cta__en {
  display: block;
  font-family: var(--font-en);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  opacity: 0.7;
}

.c-cta__title {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.1em;
}

.c-cta__text {
  margin-top: 4px;
  font-size: 14px;
  opacity: 0.85;
}

@media screen and (max-width: 767px) {
  .c-cta {
    flex-direction: column;
    align-items: stretch;
    padding: 28px 20px;
    text-align: center;
  }
  .c-cta__title {
    font-size: 19px;
  }
}
/* ---------- button ---------- */
.c-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 260px;
  padding: 16px 48px 16px 32px;
  background: var(--color-white);
  color: var(--color-primary);
  border: 1px solid var(--color-primary);
  border-radius: 999px;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.5;
  transition: background var(--transition), color var(--transition);
}

.c-btn::after {
  content: "";
  position: absolute;
  right: 24px;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

.c-btn:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

.c-btn--white {
  border-color: var(--color-white);
}

.c-btn--white:hover {
  background: transparent;
  color: var(--color-white);
}

@media screen and (max-width: 767px) {
  .c-btn {
    min-width: 0;
    width: 100%;
  }
}
/* ---------- floating contact（右端固定） ---------- */
.c-float-contact {
  position: fixed;
  right: 0;
  top: 50%;
  z-index: 90;
  transform: translateY(-50%);
}

.c-float-contact a {
  display: block;
  padding: 20px 12px;
  background: var(--color-accent);
  color: var(--color-white);
  border-radius: var(--radius) 0 0 var(--radius);
  box-shadow: var(--shadow);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.2em;
  writing-mode: vertical-rl;
  transition: padding var(--transition);
}

.c-float-contact a:hover {
  padding-right: 18px;
}

@media screen and (max-width: 767px) {
  .c-float-contact {
    display: none;
  }
}
/* ---------- main visual（ページ冒頭の写真＋コピー） ---------- */
.c-mv {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
}

.c-mv img {
  display: block;
  width: 100%;
}

.c-mv__copy {
  position: absolute;
  inset: auto 0 0;
  padding: 80px 36px 28px;
  background: linear-gradient(to top, rgba(0, 30, 112, 0.92) 0%, rgba(0, 30, 112, 0) 100%);
  color: var(--color-white);
  font-size: 26px;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.08em;
}

.c-mv + .c-text,
.c-mv + .c-box {
  margin-top: 32px;
}

@media screen and (max-width: 767px) {
  .c-mv__copy {
    position: static;
    padding: 18px 20px;
    background: var(--color-primary);
    font-size: 17px;
  }
}
/* ---------- local nav 第3階層 ---------- */
.c-local-nav__sub {
  padding: 2px 0 10px;
}

.c-local-nav__sub-label {
  display: block;
  padding: 8px 18px 2px 28px;
  font-size: 12px;
  font-weight: 700;
  color: var(--color-text-sub);
}

.c-local-nav__sub a {
  display: block;
  padding: 5px 18px 5px 28px;
  font-size: 13px;
  transition: color var(--transition);
}

.c-local-nav__sub a::before {
  content: "-";
  margin-right: 6px;
  color: #a0a6b3;
}

.c-local-nav__sub a:hover,
.c-local-nav__sub .is-current > a {
  color: var(--color-primary);
  font-weight: 700;
}

/* ---------- series color ---------- */
.u-series-airis {
  --series: var(--series-airis);
}

.u-series-fits {
  --series: var(--series-fits);
}

.u-series-sci {
  --series: var(--series-sci);
}

.u-series-metal {
  --series: var(--series-metal);
}

.u-series-micro {
  --series: var(--series-micro);
}

/* ---------- catch（強調コピー） ---------- */
.c-catch {
  color: var(--color-primary);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: 0.06em;
  text-align: center;
}

.c-catch--left {
  text-align: left;
}

@media screen and (max-width: 767px) {
  .c-catch {
    font-size: 18px;
    text-align: left;
  }
}
/* ---------- list（黒丸リスト） ---------- */
.c-list {
  display: grid;
  gap: 6px;
}

.c-list > li {
  position: relative;
  padding-left: 1.2em;
  line-height: 1.75;
}

.c-list > li::before {
  content: "";
  position: absolute;
  left: 0.1em;
  top: 0.72em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--series, var(--color-primary));
}

.c-list--col2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 32px;
}

.c-list--border > li {
  padding-block: 10px;
  padding-left: 1.4em;
  border-bottom: 1px solid var(--color-border);
}

.c-list--border > li::before {
  top: 1.3em;
}

.c-list--small {
  font-size: 14px;
}

@media screen and (max-width: 767px) {
  .c-list--col2 {
    grid-template-columns: 1fr;
  }
}
/* ---------- label（小見出しタグ） ---------- */
.c-label {
  display: inline-block;
  margin-bottom: 12px;
  padding: 3px 14px;
  background: var(--series, var(--color-primary));
  color: var(--color-white);
  border-radius: 3px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.6;
}

/* ---------- media（画像＋テキスト） ---------- */
.c-media {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
  gap: 32px;
  align-items: start;
}

.c-media--small {
  grid-template-columns: 240px minmax(0, 1fr);
}

.c-media--half {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.c-media--reverse > .c-media__img {
  order: 2;
}

.c-media--reverse.c-media--small {
  grid-template-columns: minmax(0, 1fr) 240px;
}

.c-media--reverse:not(.c-media--small):not(.c-media--half) {
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
}

.c-media__img img {
  display: block;
  width: 100%;
  border-radius: 4px;
}

/* 小さい画像＋テキストの並びは、画像枠を正方形で統一 */
.c-media--small .c-media__img > img {
  aspect-ratio: 1/1;
  object-fit: contain;
}

.c-media__img figcaption {
  margin-top: 6px;
  font-size: 13px;
  color: var(--color-text-sub);
}

.c-media__img > * + * {
  margin-top: 12px;
}

.c-media__title {
  margin-bottom: 12px;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.6;
}

.c-media__body > * + * {
  margin-top: 16px;
}

@media screen and (max-width: 767px) {
  .c-media,
.c-media--small,
.c-media--half {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .c-media--reverse > .c-media__img {
    order: 0;
  }
}
/* ---------- items（区切り線付きの縦並び） ---------- */
.c-items > * + * {
  margin-top: 40px;
  padding-top: 40px;
  border-top: 1px solid var(--color-border);
}

/* ---------- spec（仕様表） ---------- */
.c-spec {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  font-size: 14px;
  line-height: 1.6;
}

.c-spec__row {
  display: grid;
  grid-template-columns: 124px minmax(0, 1fr);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  overflow: hidden;
}

.c-spec__row dt {
  padding: 9px 12px;
  background: var(--color-primary-light);
  color: var(--color-primary);
  font-weight: 700;
}

.c-spec__row dd {
  padding: 9px 12px;
}

.c-spec--single {
  grid-template-columns: 1fr;
}

@media screen and (max-width: 1199px) {
  .c-spec {
    grid-template-columns: 1fr;
  }
}
/* ---------- video（動画枠：YouTube埋め込みに差し替え） ---------- */
.c-video {
  position: relative;
  aspect-ratio: 16/9;
  border-radius: 4px;
  overflow: hidden;
  background: #ccc;
}

.c-video img,
.c-video iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
}

/* ---------- gallery（画像グリッド） ---------- */
.c-gallery {
  --col: 3;
  display: grid;
  grid-template-columns: repeat(var(--col), minmax(0, 1fr));
  gap: 28px 20px;
}

.c-gallery--col2 {
  --col: 2;
}

/* 縦横比の異なる写真を 4:3 に揃える */
.c-gallery--cover > img,
.c-gallery--cover .c-gallery__item img {
  aspect-ratio: 4/3;
  object-fit: cover;
}

.c-gallery--col4 {
  --col: 4;
  gap: 16px 12px;
}

.c-gallery__item img {
  display: block;
  width: 100%;
  border-radius: 4px;
}

.c-gallery__caption {
  margin-top: 8px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.6;
}

.c-gallery--col4 .c-gallery__caption {
  text-align: center;
  font-size: 13px;
}

.c-gallery__text {
  margin-top: 6px;
  font-size: 14px;
  line-height: 1.8;
  color: var(--color-text-sub);
}

.c-gallery__item > .c-label + * {
  margin-top: 0;
}

@media screen and (max-width: 767px) {
  .c-gallery,
.c-gallery--col2 {
    --col: 1;
  }
  .c-gallery--col4 {
    --col: 2;
  }
  .c-gallery--sp2 {
    --col: 2;
    gap: 20px 12px;
  }
}
/* ---------- photo set（複数写真＋キャプション） ---------- */
.c-photo-set__imgs {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: 8px;
}

.c-photo-set__imgs img {
  display: block;
  width: 100%;
  border-radius: 4px;
}

.c-photo-set figcaption {
  margin-top: 8px;
  font-size: 14px;
  font-weight: 700;
}

.c-photo-set + .c-photo-set {
  margin-top: 32px;
}

/* ---------- card（枠付きブロック） ---------- */
.c-card {
  padding: 32px 36px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 4px solid var(--series, var(--color-primary));
  border-radius: var(--radius);
}

.c-card + .c-card {
  margin-top: 24px;
}

.c-card__title {
  margin-bottom: 20px;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.5;
}

.c-card__title span {
  margin-left: 6px;
  color: var(--series, var(--color-accent));
  font-family: var(--font-en);
  font-size: 0.85em;
}

.c-card > * + * {
  margin-top: 24px;
}

.c-card > .c-card__title + * {
  margin-top: 0;
}

@media screen and (max-width: 767px) {
  .c-card {
    padding: 24px 20px;
  }
  .c-card__title {
    font-size: 18px;
  }
}
/* ---------- step（工程フロー） ---------- */
.c-steps {
  display: grid;
  gap: 56px;
}

.c-step {
  position: relative;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
}

.c-step:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -42px;
  transform: translateX(-50%);
  border-style: solid;
  border-width: 16px 22px 0;
  border-color: var(--color-primary) transparent transparent;
  opacity: 0.35;
}

.c-step__head {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 16px 28px;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: var(--radius) var(--radius) 0 0;
}

.c-step__num {
  font-family: var(--font-en);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.12em;
  opacity: 0.75;
}

.c-step__title {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.c-step__body {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px;
  padding: 28px;
}

.c-step__body > .c-step__full {
  grid-column: 1/-1;
}

.c-step__body .c-text strong {
  color: var(--color-primary);
}

@media screen and (max-width: 767px) {
  .c-step__head {
    padding: 14px 20px;
  }
  .c-step__title {
    font-size: 17px;
  }
  .c-step__body {
    grid-template-columns: 1fr;
    gap: 20px;
    padding: 20px;
  }
}
/* ---------- point（ラベル＋箇条書き） ---------- */
.c-points {
  display: grid;
  gap: 16px;
}

.c-point__title {
  display: block;
  margin-bottom: 8px;
  padding: 6px 16px;
  background: var(--color-accent);
  color: var(--color-white);
  border-radius: 999px;
  font-size: 15px;
  font-weight: 700;
  text-align: center;
  line-height: 1.6;
}

.c-point .c-list {
  font-size: 14px;
}

/* ---------- service（保守サービス一覧） ---------- */
.c-service {
  padding: 40px 36px;
  background: var(--color-bg-gray);
  border-radius: var(--radius);
}

.c-service__title {
  color: var(--color-primary);
  font-size: 22px;
  font-weight: 700;
  text-align: center;
  line-height: 1.5;
}

.c-service__tel {
  margin-top: 8px;
  text-align: center;
  line-height: 1.5;
}

.c-service__tel a {
  font-family: var(--font-en);
  font-size: 30px;
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: 0.04em;
}

.c-service__tel small {
  display: block;
  font-size: 14px;
  color: var(--color-text-sub);
}

.c-service__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-top: 28px;
}

.c-service__item {
  padding: 22px 8px 16px;
  background: var(--color-white);
  border-radius: 4px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}

.c-service__item img {
  display: block;
  width: 96px;
  margin: 0 auto 12px;
}

.c-service__note {
  margin-top: 12px;
  font-size: 12px;
  color: var(--color-text-sub);
  text-align: right;
}

@media screen and (max-width: 767px) {
  .c-service {
    padding: 28px 16px;
  }
  .c-service__title {
    font-size: 18px;
  }
  .c-service__tel a {
    font-size: 26px;
  }
  .c-service__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* ---------- product hero（製品詳細の冒頭） ---------- */
.c-product-hero {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 40px;
  align-items: center;
}

/* 製品画像の枠は全製品で同じサイズ（4:5）。画像は枠内に収める */
.c-product-hero__img img {
  display: block;
  width: 100%;
  aspect-ratio: 4/5;
  object-fit: contain;
  border-radius: 4px;
}

.c-product-hero__type {
  display: inline-block;
  padding: 2px 12px;
  border: 1px solid var(--series, var(--color-primary));
  border-radius: 3px;
  color: var(--series, var(--color-primary));
  font-size: 13px;
  font-weight: 700;
}

.c-product-hero__name {
  margin-top: 12px;
  color: var(--series, var(--color-primary));
  font-family: var(--font-en);
  font-size: 40px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.02em;
}

.c-product-hero__name small {
  margin-left: 6px;
  font-family: var(--font-base);
  font-size: 20px;
}

.c-product-hero__catch {
  margin-top: 10px;
  font-size: 17px;
  font-weight: 700;
  line-height: 1.6;
}

.c-product-hero__text {
  margin-top: 16px;
}

/* タブレット以下は縦並び（本文の列が細くなりすぎるため） */
@media screen and (max-width: 1023px) {
  .c-product-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .c-product-hero__img {
    width: 240px;
    margin-inline: auto;
  }
}
@media screen and (max-width: 767px) {
  .c-product-hero__name {
    font-size: 30px;
  }
}
/* ---------- feature list（特徴） ---------- */
.c-feature-list {
  display: grid;
  gap: 28px;
}

.c-feature-list dt {
  position: relative;
  padding-left: 30px;
  color: var(--series, var(--color-primary));
  font-size: 17px;
  font-weight: 700;
  line-height: 1.6;
}

.c-feature-list dt::before {
  content: "";
  position: absolute;
  left: 0;
  top: 4px;
  width: 20px;
  height: 20px;
  background: var(--series, var(--color-primary));
  border-radius: 50%;
}

.c-feature-list dt::after {
  content: "";
  position: absolute;
  left: 7px;
  top: 8px;
  width: 6px;
  height: 10px;
  border-right: 2px solid var(--color-white);
  border-bottom: 2px solid var(--color-white);
  transform: rotate(45deg);
}

.c-feature-list dd {
  margin-top: 6px;
  padding-left: 30px;
}

.c-feature-list dd > * + * {
  margin-top: 16px;
}

.c-new {
  display: inline-block;
  margin-left: 8px;
  padding: 0 6px;
  background: #e8890c;
  color: var(--color-white);
  border-radius: 3px;
  font-family: var(--font-en);
  font-size: 11px;
  line-height: 18px;
  vertical-align: 2px;
}

/* ---------- model list（ラインナップ） ---------- */
.c-model-list {
  display: grid;
  gap: 12px;
  margin-top: 20px;
}

.c-model {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  overflow: hidden;
}

.c-model__name {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: var(--series, var(--color-primary));
  color: var(--color-white);
  font-family: var(--font-en);
  font-size: 19px;
  font-weight: 700;
  text-align: center;
}

.c-model__text {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 14px 24px;
  font-size: 15px;
  line-height: 1.8;
}

@media screen and (max-width: 767px) {
  .c-model {
    grid-template-columns: 1fr;
  }
  .c-model__name {
    padding: 10px;
    font-size: 17px;
  }
  .c-model__text {
    padding: 12px 16px;
  }
}
/* ---------- product card 現在ページ ---------- */
.c-product-card.is-current {
  background: var(--color-bg-gray);
  pointer-events: none;
}

.c-product-card.is-current::after {
  display: none;
}

/* ---------- definition（会社概要などの項目表） ---------- */
.c-def {
  border-top: 1px solid var(--color-border);
}

.c-def__row {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 24px;
  padding: 22px 8px;
  border-bottom: 1px solid var(--color-border);
}

.c-def__row > dt {
  color: var(--color-primary);
  font-weight: 700;
}

.c-def__row > dd > * + * {
  margin-top: 16px;
}

@media screen and (max-width: 767px) {
  .c-def__row {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 18px 4px;
  }
}
/* ---------- office / map ---------- */
.c-office + .c-office {
  margin-top: 32px;
}

.c-office__name {
  font-weight: 700;
}

.c-map {
  margin-top: 16px;
  aspect-ratio: 16/9;
  border-radius: 4px;
  overflow: hidden;
  background: var(--color-bg-gray);
}

.c-map iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ---------- timeline（沿革） ---------- */
.c-timeline__row {
  position: relative;
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 48px;
  padding-bottom: 32px;
}

.c-timeline__row::before {
  content: "";
  position: absolute;
  left: 112px;
  top: 14px;
  bottom: -14px;
  width: 1px;
  background: var(--color-border);
}

.c-timeline__row:last-child::before {
  display: none;
}

.c-timeline__row::after {
  content: "";
  position: absolute;
  left: 107px;
  top: 10px;
  width: 11px;
  height: 11px;
  border: 2px solid var(--color-primary);
  border-radius: 50%;
  background: var(--color-white);
}

.c-timeline__year {
  color: var(--color-primary);
  font-family: var(--font-en);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.4;
}

.c-timeline__row dd {
  padding-top: 2px;
}

.c-timeline__row dd li + li {
  margin-top: 6px;
}

@media screen and (max-width: 767px) {
  .c-timeline__row {
    grid-template-columns: 1fr;
    gap: 4px;
    padding-left: 28px;
  }
  .c-timeline__row::before {
    left: 5px;
  }
  .c-timeline__row::after {
    left: 0;
  }
  .c-timeline__year {
    font-size: 18px;
  }
}
/* ---------- link cards（関連ページへの画像リンク） ---------- */
.c-link-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 88px;
}

.c-link-card {
  display: block;
  overflow: hidden;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: var(--radius);
}

.c-link-card__img {
  overflow: hidden;
}

.c-link-card__img img {
  display: block;
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.c-link-card:hover .c-link-card__img img {
  transform: scale(1.05);
}

.c-link-card__label {
  position: relative;
  display: block;
  padding: 12px 40px 12px 18px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.c-link-card__label::after {
  content: "";
  position: absolute;
  right: 18px;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

@media screen and (max-width: 767px) {
  .c-link-cards {
    grid-template-columns: 1fr;
    gap: 12px;
    margin-top: 64px;
  }
  .c-link-card {
    display: grid;
    grid-template-columns: 40% 1fr;
    align-items: center;
  }
}
/* ---------- news list ---------- */
.c-news-list {
  border-top: 1px solid var(--color-border);
}

.c-news-list__item a {
  position: relative;
  display: grid;
  grid-template-columns: 140px minmax(0, 1fr);
  gap: 24px;
  padding: 22px 48px 22px 8px;
  border-bottom: 1px solid var(--color-border);
  transition: background var(--transition);
}

.c-news-list__item a::after {
  content: "";
  position: absolute;
  right: 20px;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 2px solid var(--color-primary);
  border-right: 2px solid var(--color-primary);
  transform: translateY(-50%) rotate(45deg);
}

.c-news-list__item a:hover {
  background: var(--color-bg-gray);
}

.c-news-list__date {
  color: var(--color-text-sub);
  font-family: var(--font-en);
  font-size: 14px;
  line-height: 1.9;
}

@media screen and (max-width: 767px) {
  .c-news-list__item a {
    grid-template-columns: 1fr;
    gap: 2px;
    padding: 16px 36px 16px 4px;
  }
  .c-news-list__item a::after {
    right: 8px;
  }
}
.c-pager {
  margin-top: 48px;
  text-align: center;
}

/* ---------- article（お知らせ詳細） ---------- */
.c-article__date {
  color: var(--color-text-sub);
  font-family: var(--font-en);
  font-size: 14px;
}

.c-article__title {
  margin-top: 6px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--color-border);
  font-size: 26px;
  font-weight: 700;
  line-height: 1.5;
}

.c-article__body {
  margin-top: 32px;
}

.c-article__body > * + * {
  margin-top: 1.4em;
}

/* WordPress の投稿本文（ブロックエディタの出力） */
.c-article__body h2 {
  margin-top: 2.2em;
  padding-left: 14px;
  border-left: 4px solid var(--color-primary);
  font-size: 20px;
  line-height: 1.5;
}

.c-article__body h3 {
  margin-top: 1.8em;
  color: var(--color-primary);
  font-size: 18px;
  line-height: 1.5;
}

.c-article__body h4 {
  margin-top: 1.6em;
  font-size: 16px;
}

.c-article__body ul,
.c-article__body ol {
  padding-left: 1.5em;
}

.c-article__body ul {
  list-style: disc;
}

.c-article__body ol {
  list-style: decimal;
}

.c-article__body li + li {
  margin-top: 0.3em;
}

.c-article__body a {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.c-article__body a:hover {
  text-decoration: none;
}

.c-article__body img {
  height: auto;
}

.c-article__body figure {
  margin-inline: 0;
}

.c-article__body figcaption {
  margin-top: 8px;
  font-size: 13px;
  color: var(--color-text-sub);
}

.c-article__body blockquote {
  margin-inline: 0;
  padding: 16px 20px;
  border-left: 4px solid var(--color-border);
  background: var(--color-bg-gray);
}

.c-article__body table {
  width: 100%;
  font-size: 15px;
}

.c-article__body th,
.c-article__body td {
  padding: 10px 14px;
  border: 1px solid var(--color-border);
}

.c-article__body th {
  background: var(--color-bg-gray);
}

.c-article__body .aligncenter {
  margin-inline: auto;
  text-align: center;
}

.c-article__body .alignleft {
  float: left;
  margin: 0 24px 16px 0;
}

.c-article__body .alignright {
  float: right;
  margin: 0 0 16px 24px;
}

.c-article__body::after {
  content: "";
  display: block;
  clear: both;
}

.c-article__body .wp-block-file a:not(.wp-block-file__button) {
  padding-left: 1.4em;
  background: no-repeat left center/1em;
}

@media screen and (max-width: 767px) {
  .c-article__body .alignleft,
.c-article__body .alignright {
    float: none;
    margin: 0;
  }
}
.c-article__nav {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-top: 56px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
  font-size: 14px;
}

.c-article__nav a {
  color: var(--color-primary);
}

.c-article__nav a:hover {
  text-decoration: underline;
}

@media screen and (max-width: 767px) {
  .c-article__title {
    font-size: 20px;
  }
}
/* ---------- choice（お問い合わせ種別） ---------- */
.c-choice {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 32px;
}

.c-choice a {
  position: relative;
  display: flex;
  align-items: center;
  height: 100%;
  min-height: 100px;
  padding: 20px 52px 20px 28px;
  border: 1px solid var(--color-primary);
  border-radius: var(--radius);
  color: var(--color-primary);
  font-weight: 700;
  line-height: 1.6;
  transition: background var(--transition), color var(--transition);
}

.c-choice a::after {
  content: "";
  position: absolute;
  right: 24px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

.c-choice a:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

@media screen and (max-width: 767px) {
  .c-choice {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .c-choice a {
    min-height: 72px;
  }
}
/* ---------- form ---------- */
.c-form__group + .c-form__group {
  margin-top: 48px;
}

.c-form__group-title {
  margin-bottom: 8px;
  color: var(--color-primary);
  font-size: 17px;
  font-weight: 700;
}

.c-form__row {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 24px;
  padding: 20px 0;
  border-bottom: 1px solid var(--color-border);
}

.c-form__label {
  display: block;
  padding-top: 10px;
  font-weight: 700;
  line-height: 1.6;
}

.c-form__req,
.c-form__any {
  display: inline-block;
  margin-left: 8px;
  padding: 0 8px;
  border-radius: 3px;
  font-size: 11px;
  line-height: 20px;
  vertical-align: 1px;
}

.c-text > .c-form__req:first-child {
  margin-left: 0;
}

.c-form__req {
  background: var(--color-red);
  color: var(--color-white);
}

.c-form__any {
  background: var(--color-border);
  color: var(--color-text-sub);
}

.c-form__input {
  width: 100%;
  padding: 11px 14px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: #fafbfd;
  font: inherit;
  color: inherit;
  line-height: 1.6;
}

.c-form__input:focus {
  outline: 2px solid var(--color-accent);
  outline-offset: -1px;
  background: var(--color-white);
}

textarea.c-form__input {
  min-height: 200px;
  resize: vertical;
}

.c-form__input--s {
  width: 96px;
}

.c-form__input--m {
  width: 160px;
}

.c-form__inline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.c-form__options {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 28px;
  padding-top: 10px;
}

.c-form__options--col {
  flex-direction: column;
}

.c-form__options label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}

.c-form__options input {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--color-primary);
}

.c-form__options + .c-form__input {
  margin-top: 10px;
}

.c-form__submit {
  margin-top: 48px;
  text-align: center;
}

.c-form__submit--confirm {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
}

.c-btn--back {
  padding: 16px 32px 16px 48px;
}

.c-btn--back::after {
  right: auto;
  left: 24px;
  transform: translateY(-50%) rotate(-135deg);
}

.c-btn:disabled {
  opacity: 0.5;
  cursor: wait;
}

/* エラー表示 */
.c-form__alert {
  margin-bottom: 32px;
  padding: 16px 20px;
  border: 1px solid var(--color-red);
  border-radius: 4px;
  background: #fdf1f1;
  color: var(--color-red);
  font-weight: 700;
}

.c-form__error {
  margin-top: 6px;
  color: var(--color-red);
  font-size: 14px;
  font-weight: 700;
}

.c-form__row.is-error .c-form__input {
  border-color: var(--color-red);
  background: #fdf6f6;
}

/* 確認画面 */
.c-form__confirm {
  margin: 0;
}

.c-form__confirm .c-form__label {
  padding-top: 0;
}

.c-form__value {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.c-form__empty {
  color: #a0a6b3;
}

.c-form__confirm > .c-form__row:first-child {
  border-top: 1px solid var(--color-border);
}

@media screen and (max-width: 767px) {
  .c-form__submit--confirm {
    flex-direction: column-reverse;
  }
}
@media screen and (max-width: 767px) {
  .c-form__row {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 16px 0;
  }
  .c-form__label {
    padding-top: 0;
  }
}
.c-btn--primary {
  background: var(--color-primary);
  color: var(--color-white);
}

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

button.c-btn {
  font-family: inherit;
  font-size: 16px;
}

/* ---------- sitemap ---------- */
.c-sitemap {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 48px 40px;
}

.c-sitemap__title {
  margin-bottom: 8px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--color-primary);
  font-size: 17px;
  font-weight: 700;
}

.c-sitemap__title a:hover,
.c-sitemap__list a:hover {
  color: var(--color-primary);
  text-decoration: underline;
}

.c-sitemap__list a {
  display: block;
  padding: 6px 0;
}

.c-sitemap__list ul {
  padding-left: 1.2em;
  font-size: 14px;
}

.c-sitemap__list .is-label {
  padding-top: 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--color-text-sub);
}

@media screen and (max-width: 767px) {
  .c-sitemap {
    grid-template-columns: 1fr;
    gap: 32px;
  }
}
/* ---------- prose（規約などの文章ページ） ---------- */
.c-prose > * + * {
  margin-top: 1em;
}

.c-prose > .c-heading-lv3 {
  margin-top: 2.4em;
}

.c-prose > .c-heading-lv4 {
  margin-top: 1.8em;
}

.c-prose__meta {
  font-size: 14px;
  color: var(--color-text-sub);
  text-align: right;
}

/* ---------- external link ---------- */
.c-link {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.c-link:hover {
  text-decoration: none;
}

.c-link--ext::after {
  content: "";
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-left: 6px;
  border: 1.5px solid currentColor;
  border-radius: 1px;
  vertical-align: -1px;
}

/* ---------- signature ---------- */
.c-signature {
  margin-top: 40px;
  text-align: right;
  line-height: 1.6;
}

.c-signature span {
  display: block;
  font-size: 14px;
  color: var(--color-text-sub);
}

.c-signature strong {
  font-size: 22px;
  letter-spacing: 0.2em;
}

.c-signature img {
  display: inline-block;
  width: 180px;
  margin-top: 8px;
}

/* ---------- 補助 ---------- */
.l-main > div + .c-section {
  margin-top: 88px;
}

@media screen and (max-width: 767px) {
  .l-main > div + .c-section {
    margin-top: 64px;
  }
}
.c-spec__row dt {
  white-space: nowrap;
}

.c-local-nav__title a {
  display: block;
}

.c-page-nav--col3 {
  grid-template-columns: repeat(3, 1fr);
}

.c-check-list__item strong {
  color: var(--color-primary);
}

.c-gallery > img,
.c-step__full img {
  display: block;
  width: 100%;
  border-radius: 4px;
}

.c-heading-lv3 small {
  display: inline-block;
  margin-left: 12px;
  color: var(--color-text-sub);
  font-size: 14px;
  font-weight: 500;
}

.c-box > * + * {
  margin-top: 12px;
}

.c-box .c-check-list,
.c-box .c-list {
  margin-top: 0;
}

.c-box__title + * {
  margin-top: 0;
}

.c-form__group > .c-form__row:first-child,
.c-form__group-title + .c-form__row {
  border-top: 1px solid var(--color-border);
}

.c-prose > .c-list {
  margin-top: 0.5em;
}

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

@media screen and (max-width: 767px) {
  .c-heading-lv3 small {
    display: block;
    margin: 4px 0 0;
  }
}
/* ==========================================================================
   4. Project
   ========================================================================== */
/* ---------- トップ ---------- */
/* MV（動画は全体を見せ、コピーとボタンは動画の下に配置） */
.p-top-mv__media {
  position: relative;
  background: var(--color-primary-dark);
}
.p-top-mv__video {
  display: block;
  width: 100%;
  height: auto;
}
.p-top-mv__body {
  background: var(--color-primary);
  color: var(--color-white);
}
.p-top-mv__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 24px 64px;
  align-items: center;
  padding-block: 64px;
}
.p-top-mv__en {
  font-family: var(--font-en);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.3em;
  opacity: 0.8;
}
.p-top-mv__title {
  margin-top: 12px;
  font-size: clamp(24px, 2.6vw, 36px);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.06em;
}
.p-top-mv__lead {
  opacity: 0.9;
}
.p-top-mv__btns {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 28px;
}
.p-top-mv__pause {
  position: absolute;
  left: var(--gutter);
  bottom: 24px;
  z-index: 2;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 50%;
  background: rgba(0, 20, 77, 0.4);
  transition: background var(--transition);
}
.p-top-mv__pause:hover {
  background: rgba(0, 20, 77, 0.7);
}
.p-top-mv__pause::before,
.p-top-mv__pause::after {
  content: "";
  position: absolute;
  top: 13px;
  width: 3px;
  height: 12px;
  background: var(--color-white);
}
.p-top-mv__pause::before { left: 15px; }
.p-top-mv__pause::after { left: 21px; }
.p-top-mv__pause.is-paused::before {
  left: 15px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 7px 0 7px 12px;
  border-color: transparent transparent transparent var(--color-white);
  background: none;
}
.p-top-mv__pause.is-paused::after {
  display: none;
}
@media screen and (max-width: 1199px) {
  .p-top-mv__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }
}
@media screen and (max-width: 767px) {
  .p-top-mv__inner {
    padding-block: 40px;
  }
  .p-top-mv__en {
    text-align: center;
  }
  .p-top-mv__title {
    font-size: 22px;
    text-align: center;
  }
  .p-top-mv__lead {
    font-size: 14px;
  }
  .p-top-mv__btns {
    flex-direction: column;
    gap: 12px;
  }
  .p-top-mv__pause {
    left: 12px;
    bottom: 12px;
    width: 36px;
    height: 36px;
  }
  .p-top-mv__pause::before,
  .p-top-mv__pause::after {
    top: 11px;
  }
  .p-top-mv__pause::before { left: 13px; }
  .p-top-mv__pause::after { left: 19px; }
  .p-top-mv__pause.is-paused::before { left: 13px; }
}

/* NEWS */
.p-top-news {
  border-bottom: 1px solid var(--color-border);
}

.p-top-news__inner {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr) auto;
  gap: 40px;
  align-items: center;
  padding-block: 40px;
}

.p-top-news__title {
  font-size: 14px;
  font-weight: 700;
  line-height: 1.5;
}

.p-top-news__title span {
  display: block;
  color: var(--color-primary);
  font-family: var(--font-en);
  font-size: 28px;
  letter-spacing: 0.08em;
}

.p-top-news .c-news-list__item a {
  padding-block: 14px;
}

/* 読み込み中・お知らせなし・読み込み失敗のメッセージ */
.c-news-list__message {
  padding: 14px 8px;
  border-bottom: 1px solid var(--color-border);
  color: var(--color-text-sub);
  font-size: 14px;
}

.p-top-news__more {
  position: relative;
  padding-right: 18px;
  color: var(--color-primary);
  font-size: 14px;
  font-weight: 700;
  white-space: nowrap;
}

.p-top-news__more::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

.p-top-news__more:hover {
  text-decoration: underline;
}

@media screen and (max-width: 767px) {
  .p-top-news__inner {
    grid-template-columns: 1fr;
    gap: 16px;
    padding-block: 32px;
  }
  .p-top-news__more {
    justify-self: end;
  }
}
/* MESSAGE */
.p-top-message {
  background: var(--color-primary-dark);
  color: var(--color-white);
}

.p-top-message__inner {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 64px;
  align-items: center;
  padding-block: 100px;
}

.p-top-message__img img {
  display: block;
  width: 100%;
  border-radius: var(--radius);
}

.p-top-message__en {
  color: #8fb0ff;
  font-family: var(--font-en);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.2em;
}

.p-top-message__title {
  margin-top: 16px;
  font-size: clamp(22px, 2.4vw, 30px);
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}

.p-top-message__text {
  margin-top: 28px;
  padding: 20px 24px;
  border-left: 3px solid var(--color-white);
  background: rgba(255, 255, 255, 0.06);
}

@media screen and (max-width: 767px) {
  .p-top-message__inner {
    grid-template-columns: 1fr;
    gap: 32px;
    padding-block: 64px;
  }
}
/* 共通セクション */
.p-top-section {
  padding-block: 100px;
}

.p-top-section--gray {
  background: var(--color-bg-gray);
}

.p-top-heading {
  margin-bottom: 48px;
  color: var(--color-primary);
  font-size: 28px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.1em;
  text-align: center;
}

.p-top-heading::after {
  content: "";
  display: block;
  width: 40px;
  height: 3px;
  margin: 16px auto 0;
  background: var(--color-primary);
}

.p-top-heading__en {
  display: block;
  margin-bottom: 4px;
  color: var(--color-accent);
  font-family: var(--font-en);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.2em;
}

.p-top-narrow {
  max-width: 900px;
  margin-inline: auto;
}

.p-top-section .c-cta {
  margin-top: 0;
}

@media screen and (max-width: 767px) {
  .p-top-section {
    padding-block: 64px;
  }
  .p-top-heading {
    margin-bottom: 32px;
    font-size: 22px;
  }
}
/* 目的から探す */
.p-top-purpose {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}
.p-top-purpose__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  padding: 36px 20px 32px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  text-align: center;
  transition: border-color var(--transition), box-shadow var(--transition), transform var(--transition);
}
.p-top-purpose__item img {
  width: 72px;
}
.p-top-purpose__label {
  margin-top: 20px;
  font-weight: 700;
  line-height: 1.6;
}
.p-top-purpose__item:hover {
  border-color: var(--color-primary);
  box-shadow: var(--shadow);
  transform: translateY(-4px);
}
@media screen and (max-width: 1199px) {
  .p-top-purpose {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media screen and (max-width: 767px) {
  .p-top-purpose {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .p-top-purpose__item {
    flex-direction: row;
    gap: 16px;
    padding: 18px 20px;
    text-align: left;
  }
  .p-top-purpose__item img {
    flex-shrink: 0;
    width: 56px;
  }
  .p-top-purpose__label {
    margin: 0;
  }
  .p-top-purpose__label br {
    display: none;
  }
}

/* ---------- できること / 欠陥を見つける ---------- */
.p-detection-intro {
  margin-top: 40px;
}

.p-detection-intro .c-box + .c-text {
  margin-top: 28px;
}

/* 分類希望の凡例 */
.p-detection-legend {
  display: grid;
  gap: 12px;
}

.p-detection-legend__item {
  display: flex;
  align-items: baseline;
  gap: 14px;
  line-height: 1.7;
}

.p-detection-legend__mark {
  flex-shrink: 0;
  width: 64px;
  padding: 2px 0;
  border: 2px solid currentColor;
  border-radius: 3px;
  font-size: 12px;
  font-weight: 700;
  text-align: center;
  line-height: 1.5;
}

.p-detection-legend__mark--blue {
  color: #1f6fc6;
}

.p-detection-legend__mark--green {
  color: #1fa04a;
}

.p-detection-legend__mark--pink {
  color: #c85fa8;
}

/* 特徴量テーブル */
.p-detection-feature {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 24px;
  margin-top: 24px;
}

.p-detection-feature__label {
  font-weight: 700;
}

.p-detection-feature .c-table th,
.p-detection-feature .c-table td {
  width: 50%;
}

@media screen and (max-width: 767px) {
  .p-detection-feature {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}
/* AI 分類 */
.p-detection-ai {
  display: flex;
  align-items: center;
  gap: 32px;
}

.p-detection-ai__badge {
  flex-shrink: 0;
  width: 120px;
}

@media screen and (max-width: 767px) {
  .p-detection-ai {
    gap: 16px;
  }
  .p-detection-ai__badge {
    width: 80px;
  }
}
/* ==========================================================================
   5. Utility
   ========================================================================== */
.u-mt-0 {
  margin-top: 0 !important;
}

.u-mt-16 {
  margin-top: 16px !important;
}

.u-mt-24 {
  margin-top: 24px !important;
}

.u-mt-40 {
  margin-top: 40px !important;
}

.u-center {
  text-align: center !important;
}

/* 文字の塊ごとに改行させる（例：サンプル検査／・受託検査） */
.u-ib {
  display: inline-block;
}

.u-sp-only {
  display: none !important;
}

@media screen and (max-width: 767px) {
  .u-pc-only {
    display: none !important;
  }
  .u-sp-only {
    display: revert !important;
  }
}
.u-visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ==========================================================================
   AYAHA ENGINEERING  style.css
   ※ このファイルは style.scss から自動生成されます。直接編集しないでください。
   構成（FLOCSS）
   1. Foundation  … 変数・リセット・ベース
   2. Layout      … l- ヘッダー / フッター / コンテンツ枠 / サイド
   3. Component   … c- 全ページ共通パーツ
   4. Project     … p- ページ固有
   5. Utility     … u-
   ブレイクポイント：SP 〜767px / TAB 768〜1199px / PC 1200px〜
   ========================================================================== */

/*# sourceMappingURL=style.css.map */