@charset "utf-8";
/* =========================================================
   有限会社オーラット
   1920px 基準の vw 設計（1vw = 19.2px）／SP は 375px 基準（1vw = 3.75px）
   ========================================================= */

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body, h1, h2, h3, h4, p, ul, ol, li, figure, dl, dd, dt {
  margin: 0; padding: 0;
}
ul, ol { list-style: none; }
img { border: 0; vertical-align: bottom; max-width: 100%; }
a { text-decoration: none; color: inherit; }

/* ---------- tokens ---------- */
:root {
  --red: #b5121b;   /* ロゴ ORAT_logo_03 の赤と一致 */
  --red-dark: #8c0d14;
  --ink: #2a2a2a;
  --gray: #707070;
  --pale: #f8f8f8;
  --line: #ddd;
  --white: #ffffff;
  --ease: cubic-bezier(0.215, 0.61, 0.355, 1);
  --header-h: 3.4375vw;  /* 66px */
}

body {
  font-family: YakuHanJP, "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;
  color: var(--ink);
  background: var(--white);
  line-height: 2;
  font-weight: 500;
  overflow-x: hidden;
}
body.is-locked { overflow: hidden; }

/* =========================================================
   header
   ========================================================= */
.header {
  position: fixed; top: 0; left: 0; z-index: 100;
  width: 100%; height: var(--header-h);
  background: var(--white);
  display: flex; align-items: center;
}
.hd-logo { margin-left: 1.5625vw; line-height: 0; }
.hd-logo img { width: 8.8542vw; height: auto; }  /* 170px */

/* ---------- hamburger ---------- */
#nav_toggle {
  position: fixed; top: 0; right: 0; z-index: 120;
  width: var(--header-h); height: var(--header-h);
  background: var(--red);
  cursor: pointer; border: 0; padding: 0;
}
#nav_toggle div {
  position: relative;
  width: 1.4583vw; height: 1.0417vw;   /* 28 x 20 */
  margin: 0 auto;
}
#nav_toggle span {
  display: block; position: absolute; left: 0;
  width: 100%; height: 2px;
  background: var(--white);
  transition: all 0.3s var(--ease);
}
#nav_toggle span:nth-child(1) { top: 0; }
#nav_toggle span:nth-child(2) { top: 50%; margin-top: -1px; }
#nav_toggle span:nth-child(3) { bottom: 0; }
#nav_toggle.open span:nth-child(1) { top: 50%; margin-top: -1px; transform: rotate(45deg); }
#nav_toggle.open span:nth-child(2) { opacity: 0; }
#nav_toggle.open span:nth-child(3) { bottom: 50%; margin-bottom: -1px; transform: rotate(-45deg); }

/* =========================================================
   global menu
   ========================================================= */
.gmenu-wrap {
  position: fixed; inset: 0; z-index: 110;
  background: var(--ink);
  opacity: 0; visibility: hidden;
  transition: all 0.4s var(--ease);
  overflow-y: auto;
}
.gmenu-wrap.open { opacity: 1; visibility: visible; }
.gmenu {
  min-height: 100%;
  display: flex; align-items: center;
  padding: 6vw 0 6vw 12.5vw;
}
.gmenu nav ul > li { margin-bottom: 1.8vw; }
.gmenu nav ul > li > a { display: inline-block; transition: opacity 0.3s var(--ease); }
.gmenu nav ul > li > a:hover { opacity: 0.55; }
.gmenu .en {
  display: block;
  font-family: "Oswald", sans-serif;
  font-size: 2.0833vw;             /* 40px */
  font-weight: 400; line-height: 1.1em; letter-spacing: 0.06em;
  color: var(--white);
}
.gmenu .ja {
  display: block;
  font-size: 0.7292vw;             /* 14px */
  line-height: 1.6em; letter-spacing: 0.08em;
  color: #bbbbbb;
}
.gmenu nav > ul > li > ul { margin: 0.6vw 0 0 1.5vw; }
.gmenu nav > ul > li > ul li { margin-bottom: 0.3vw; }
.gmenu nav > ul > li > ul a {
  font-size: 0.8333vw;             /* 16px */
  color: #bbbbbb; letter-spacing: 0.06em;
  transition: color 0.3s var(--ease);
}
.gmenu nav > ul > li > ul a::before {
  content: ""; display: inline-block;
  width: 0.9vw; height: 1px; background: var(--red);
  vertical-align: middle; margin-right: 0.5vw;
}
.gmenu nav > ul > li > ul a:hover { color: var(--white); }
.gmenu .gm-privacy { margin-top: 2vw; }
.gmenu .gm-privacy a {
  font-size: 0.7292vw; color: #bbbbbb; letter-spacing: 0.06em;
  border-bottom: 1px solid #555; padding-bottom: 0.2vw;
}
.gmenu .gm-privacy a:hover { color: var(--white); }

/* =========================================================
   共通パーツ
   ========================================================= */
.read-more { position: relative; }
.read-more a {
  position: relative; overflow: hidden;
  width: 15.3646vw; height: 3.6458vw;   /* 295 x 70 */
  background: var(--ink); color: var(--white);
  font-family: "Oswald", sans-serif;
  font-size: 1.0417vw;                  /* 20px */
  font-weight: 400; letter-spacing: 0.03em; line-height: 1em;
  display: flex; align-items: center;
  padding-left: 1.5625vw;
  transition: background 0.3s var(--ease);
}
.read-more a::after {
  content: ""; position: absolute; right: 0; top: 50%;
  width: 27.76%; height: 1px; background: var(--white);
  transition: width 0.3s var(--ease);
}
.read-more a:hover { background: #000; }
.read-more a:hover::after { width: 7.5%; }
.read-more.is-red a { background: var(--red); }
.read-more.is-red a:hover { background: var(--red-dark); }

/* スクロール連動フェード */
.fadein {
  opacity: 0; transform: translateY(2.6vw);
  transition: opacity 1s var(--ease), transform 1s var(--ease);
}
.fadein.is-show { opacity: 1; transform: translateY(0); }
.fi_d01 { transition-delay: 0.15s; }
.fi_d02 { transition-delay: 0.35s; }
/* 赤帯は弧の形を持つため、transform で拡大すると弧が歪む。不透明度で出す */
.fadein_bg { opacity: 0; transition: opacity 1.1s var(--ease); }
.fadein_bg.is-show { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .fadein, .fadein_bg { opacity: 1; transform: none; transition: none; }
}

/* =========================================================
   hero
   ========================================================= */
.top__main { position: relative; width: 100%; height: 100vh; overflow: hidden; }
.top-swiper, .swiper-wrapper, .swiper-slide { width: 100%; height: 100%; }
.top-swiper { position: relative; }
.swiper-wrapper { position: relative; }
.swiper-slide {
  position: absolute; inset: 0;
  opacity: 0; transition: opacity 1.6s var(--ease);
}
.swiper-slide.is-active { opacity: 1; }
.swiper-slide img { width: 100%; height: 100%; object-fit: cover; }
.top__main::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.15) 55%, rgba(0,0,0,0.35) 100%);
  z-index: 1; pointer-events: none;
}
.main-cp {
  position: absolute; z-index: 2;
  left: 6.25vw; bottom: 9vw;
  color: var(--white);
  font-size: 3.3333vw;                 /* 64px */
  font-weight: 700; line-height: 1.55em; letter-spacing: 0.06em;
  text-shadow: 0 0.1vw 1.2vw rgba(0,0,0,0.5);
}
.main-cp .sm { display: block; font-size: 1.0417vw; font-weight: 500; letter-spacing: 0.2em; margin-bottom: 1vw; font-family: "Oswald", sans-serif; }
.main-cp .sm::after {
  content: ""; display: inline-block; vertical-align: middle;
  width: 3.5vw; height: 1px; background: var(--red); margin-left: 1vw;
}
.scroll-cue {
  position: absolute; z-index: 2; right: 6.25vw; bottom: 0;
  font-family: "Oswald", sans-serif; font-size: 0.625vw; letter-spacing: 0.2em;
  color: var(--white); writing-mode: vertical-rl;
  padding-bottom: 5vw;
}
.scroll-cue::after {
  content: ""; position: absolute; bottom: 0; left: 50%;
  width: 1px; height: 4.5vw; background: rgba(255,255,255,0.4);
  overflow: hidden;
}
.scroll-cue::before {
  content: ""; position: absolute; bottom: 0; left: 50%; z-index: 1;
  width: 1px; height: 4.5vw; background: var(--red);
  transform-origin: top; animation: cue 2.4s var(--ease) infinite;
}
@keyframes cue {
  0%   { transform: scaleY(0); transform-origin: top; }
  45%  { transform: scaleY(1); transform-origin: top; }
  55%  { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

/* =========================================================
   ステートメント
   ========================================================= */
.top__cct { padding: 8.3333vw 0; background: var(--white); }
.top__cct_wrap {
  text-align: center;
  font-size: 1.0417vw;               /* 20px */
  line-height: 2.6em; letter-spacing: 0.08em;
}
.top__cct_wrap .lead {
  display: block;
  font-size: 1.8229vw;               /* 35px */
  font-weight: 700; letter-spacing: 0.06em;
  margin-bottom: 2.6vw; color: var(--ink);
}
.top__cct_wrap .lead::after {
  content: ""; display: block; margin: 1.4vw auto 0;
  width: 3.125vw; height: 2px; background: var(--red);
}

/* =========================================================
   NEWS
   ========================================================= */
.top__nws { padding: 5.2083vw 0 6.25vw; background: var(--pale); }
.top__nws_wrap { width: 62.5vw; margin: 0 auto; }
.top__nws_wrap h2 {
  font-family: "Oswald", sans-serif;
  font-size: 2.6042vw;               /* 50px */
  font-weight: 400; letter-spacing: 0.08em; line-height: 1em;
  margin-bottom: 2.6vw;
}
.top__nws_wrap h2 span { position: relative; padding-left: 1.5vw; }
.top__nws_wrap h2 span::before {
  content: ""; position: absolute; left: 0; top: 50%;
  width: 0.4vw; height: 0.4vw; background: var(--red); border-radius: 50%;
  transform: translateY(-50%);
}
.nws-li {
  display: flex; align-items: baseline; gap: 2.0833vw;
  padding: 1.3021vw 0; border-bottom: 1px solid var(--line);
  transition: opacity 0.3s var(--ease);
}
.nws-ctt_in .nws-li:first-child { border-top: 1px solid var(--line); }
.nws-li:hover { opacity: 0.6; }
.nws-li .dt {
  font-family: "Oswald", sans-serif;
  font-size: 0.9375vw;               /* 18px */
  color: var(--gray); letter-spacing: 0.06em; flex: none; line-height: 1.6;
}
.nws-li p { font-size: 0.9375vw; line-height: 1.7; }
.nws-li .new {
  display: inline-block; vertical-align: 0.1em;
  background: var(--red); color: var(--white);
  font-family: "Oswald", sans-serif; font-size: 0.5729vw;
  line-height: 1; padding: 0.32vw 0.5vw; margin-right: 0.8vw;
  letter-spacing: 0.08em;
}
.top__nws_wrap .read-more { margin-left: auto; margin-top: 2.6vw; width: 15.3646vw; }

/* =========================================================
   #01〜#04 セクション（エディトリアル構図）
   赤帯は使わず、番号は薄いアウトラインの見出し。写真は長方形＋赤のL字。
   本文は白地に黒、強調語だけ赤。左右交互（#02/#04 は反転）。
   ========================================================= */
.pctt {
  position: relative; z-index: 0;
  background: var(--white);
  padding-top: 5vw;
  margin-bottom: 9vw;
}
/* 旧・赤いウェッジは廃止（HTML の .bg01 は残しつつ非表示） */
.pctt .bg01 { display: none; }

.pctt-wrap {
  position: relative; z-index: 1;
  margin-left: 18.75%; width: 81.25%;
  display: grid; grid-template-columns: 36.6vw 1fr;
  gap: 3.5vw; align-items: center;
}
/* 偶数セクションは画像を左・テキストを右に */
.pctt02 .pctt-wrap, .pctt04 .pctt-wrap {
  margin-left: 0; margin-right: 18.75%;
  grid-template-columns: 1fr 36.6vw;
}
.pctt02 .pctt-txt, .pctt04 .pctt-txt { order: 2; }
.pctt02 .pctt-img, .pctt04 .pctt-img { order: 1; }

.pctt-txt { position: relative; z-index: 1; padding-top: 7vw; }

.pctt-ttl {
  position: relative;
  font-size: 1.8229vw;               /* 35px */
  color: var(--red); font-weight: 500;
  letter-spacing: 0.031em; line-height: 1em;
}
.pctt-ttl::after {
  content: ""; display: block; position: absolute; left: 0; bottom: -0.95vw;
  width: 7.5521vw; height: 0.2604vw;  /* 145 x 5 */
  background: var(--red);
}
/* キャッチコピーは白地に黒。強調語 .lg は“大きさ”ではなく“赤”で立てる */
.pctt-sttl {
  font-size: 2.9vw;
  font-weight: 700; line-height: 1.5em; letter-spacing: 0.02em;
  margin-top: 2.3vw;
}
.pctt-sttl .lg { color: var(--red); }
.pctt-p {
  color: var(--ink);
  font-size: 1.0417vw;               /* 20px */
  font-weight: 500; line-height: 2em; letter-spacing: 0.05em;
  margin: 1.5625vw 0 1.8vw;
}
/* 番号：薄いアウトラインの見出しキッカー。テキスト側の端に揃える */
.pctt-no {
  position: absolute; z-index: 0; top: 2.4vw; left: 18.75%;
  font-family: "Oswald", sans-serif;
  font-size: 9vw; line-height: 0.8; letter-spacing: 0.06em;
  color: transparent; -webkit-text-stroke: 1.5px rgba(0,0,0,0.07);
  pointer-events: none; white-space: nowrap;
}
.pctt02 .pctt-no, .pctt04 .pctt-no { left: auto; right: 18.75%; text-align: right; }

/* 画像：長方形フレーム＋テキスト側の角に赤いL字。円形の .photo は使わない */
.pctt-img { position: relative; padding: 1.2vw 0 0 1.2vw; }
.pctt02 .pctt-img, .pctt04 .pctt-img { padding: 1.2vw 1.2vw 0 0; }
.pctt-img::before {
  content: ""; position: absolute; z-index: 3; top: 0; left: 0;
  width: 38%; height: 34%;
  border-top: 3px solid var(--red); border-left: 3px solid var(--red);
}
.pctt02 .pctt-img::before, .pctt04 .pctt-img::before {
  left: auto; right: 0;
  border-left: 0; border-right: 3px solid var(--red);
}
.pctt-img .item {
  position: relative; z-index: 2; width: 100%; margin: 0;
}
.pctt-img .item img {
  width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover;
  border-radius: 0; display: block;
  box-shadow: 0 1vw 3vw rgba(0,0,0,0.14);
}
.pctt-img .photo { display: none; }

/* =========================================================
   footer
   ========================================================= */
.ft-contact_wrap { position: relative; overflow: hidden; }
.bg-ft {
  position: absolute; inset: 0;
  background: url("/assets/img/contact-bg.jpg") center/cover no-repeat;
}
.bg-ft::after { content: ""; position: absolute; inset: 0; background: rgba(20,20,20,0.72); }
.ft-contact {
  position: relative; z-index: 1;
  padding: 6.25vw 0; text-align: center; color: var(--white);
}
.ft-contact h2 {
  font-family: "Oswald", sans-serif;
  font-size: 3.6458vw;               /* 70px */
  font-weight: 400; letter-spacing: 0.1em; line-height: 1em;
}
.ft-contact .ctt-box p {
  font-size: 1.0417vw; line-height: 2em; letter-spacing: 0.06em;
  margin: 1.5625vw 0 2.0833vw;
}
.ft-contact .contact-us { display: flex; justify-content: center; }
.ft-contact .contact-us a {
  position: relative; overflow: hidden;
  width: 18.2292vw; height: 4.1667vw;
  background: var(--red); color: var(--white);
  font-family: "Oswald", sans-serif; font-size: 1.0417vw; letter-spacing: 0.06em;
  display: flex; align-items: center; padding-left: 1.8vw;
  transition: background 0.3s var(--ease);
}
.ft-contact .contact-us a::after {
  content: ""; position: absolute; right: 0; top: 50%;
  width: 27.76%; height: 1px; background: var(--white);
  transition: width 0.3s var(--ease);
}
.ft-contact .contact-us a:hover { background: var(--red-dark); }
.ft-contact .contact-us a:hover::after { width: 7.5%; }

footer { background: var(--ink); color: var(--white); }
.ft__wrap { position: relative; padding: 5.2083vw 6.25vw 2.6042vw; }
.page-top { position: absolute; right: 6.25vw; top: -1.8vw; }
.page-top a {
  display: flex; align-items: center; justify-content: center;
  width: 3.6458vw; height: 3.6458vw; background: var(--red);
  font-family: "Oswald", sans-serif; font-size: 0.625vw; letter-spacing: 0.1em;
  color: var(--white); transition: background 0.3s var(--ease);
}
.page-top a:hover { background: var(--red-dark); }
.page-top a::before {
  content: ""; display: block; position: absolute; top: 0.9vw; left: 50%;
  width: 0.5vw; height: 0.5vw; margin-left: -0.25vw;
  border-top: 1px solid #fff; border-right: 1px solid #fff;
  transform: rotate(-45deg);
}
.page-top a span { margin-top: 1.1vw; }

.ft-main-link { display: flex; gap: 3.6458vw; flex-wrap: wrap; }
.ft-main-link a { display: block; transition: opacity 0.3s var(--ease); }
.ft-main-link a:hover { opacity: 0.6; }
.ft-main-link .no {
  display: block; font-family: "Oswald", sans-serif;
  font-size: 0.625vw; color: var(--red); letter-spacing: 0.1em; line-height: 1.4;
}
.ft-main-link .en {
  display: block; font-family: "Oswald", sans-serif;
  font-size: 1.25vw; letter-spacing: 0.06em; line-height: 1.4;
}
.ft-main-link .jp { display: block; font-size: 0.6771vw; color: #bbbbbb; letter-spacing: 0.06em; }

.ft-sub {
  display: flex; flex-wrap: wrap; gap: 1.5625vw;
  margin-top: 3.6458vw; padding-top: 2.0833vw;
  border-top: 1px solid #444;
}
.ft-sub a { font-size: 0.7292vw; color: #bbbbbb; letter-spacing: 0.06em; transition: color 0.3s var(--ease); }
.ft-sub a:hover { color: var(--white); }
.ft-info { display: flex; align-items: flex-end; justify-content: space-between; gap: 2vw; margin-top: 2.6042vw; }
.ft-info .ft-logo img { width: 10.4167vw; height: auto; }
.ft-info address {
  font-style: normal; font-size: 0.7292vw; color: #bbbbbb;
  line-height: 2em; letter-spacing: 0.06em; margin-top: 1vw;
}
.ft-info address a { color: #bbbbbb; }
.copyright {
  font-family: "Oswald", sans-serif; font-size: 0.625vw;
  color: #888; letter-spacing: 0.08em; text-align: right;
}

/* =========================================================
   下層ページ
   ========================================================= */
.page-head {
  position: relative; height: 29.1667vw; min-height: 320px;
  display: flex; align-items: center;
  background: url("/assets/img/page-head.jpg") center/cover no-repeat;
}
.page-head::after { content: ""; position: absolute; inset: 0; background: rgba(20,20,20,0.6); }
.page-head_in { position: relative; z-index: 1; padding-left: 6.25vw; color: var(--white); }
.page-head h1 {
  font-family: "Oswald", sans-serif;
  font-size: 3.6458vw; font-weight: 400; letter-spacing: 0.08em; line-height: 1em;
}
.page-head .ja {
  display: block; font-size: 0.9375vw; letter-spacing: 0.1em; margin-top: 0.8vw; color: #ddd;
}
.breadcrumb {
  width: 81.25vw; margin: 1.5625vw auto 0;
  font-size: 0.6771vw; color: var(--gray); letter-spacing: 0.04em;
}
.breadcrumb a { color: var(--gray); }
.breadcrumb a:hover { color: var(--red); }
.breadcrumb span { margin: 0 0.5vw; }

.page-body { width: 62.5vw; margin: 0 auto; padding: 5.2083vw 0 6.25vw; }
.page-body.is-wide { width: 81.25vw; }
.sec-ttl {
  position: relative; font-size: 1.8229vw; color: var(--red);
  font-weight: 500; letter-spacing: 0.031em; line-height: 1em;
  margin-bottom: 2.6vw;
}
.sec-ttl::after {
  content: ""; display: block; position: absolute; left: 0; bottom: -0.95vw;
  width: 7.5521vw; height: 0.2604vw; background: var(--red);
}
.sec-sttl { font-size: 2.2917vw; font-weight: 700; line-height: 1.6em; letter-spacing: 0.04em; margin-bottom: 1.5625vw; }
.page-body p { font-size: 1.0417vw; line-height: 2em; letter-spacing: 0.05em; }
.page-body p + p { margin-top: 1.5625vw; }
.mt-l { margin-top: 5.2083vw; }

/* 会社概要テーブル */
.tbl-company { width: 100%; border-collapse: collapse; }
.tbl-company th, .tbl-company td {
  font-size: 0.9375vw; line-height: 2em; letter-spacing: 0.05em;
  padding: 1.3021vw 1vw; border-bottom: 1px solid var(--line);
  text-align: left; vertical-align: top;
}
.tbl-company th { width: 26%; font-weight: 700; color: var(--ink); background: var(--pale); }
.tbl-company td a { color: var(--red); text-decoration: underline; }

/* 事業カード */
.biz-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2.6042vw; }
.biz-card { background: var(--pale); padding: 2.6042vw; }
.biz-card .no {
  font-family: "Oswald", sans-serif; font-size: 0.9375vw;
  color: var(--red); letter-spacing: 0.1em; line-height: 1;
}
.biz-card h3 { font-size: 1.25vw; font-weight: 700; margin: 0.8vw 0 0.8vw; letter-spacing: 0.04em; }
.biz-card h3::after { content: ""; display: block; width: 2.6vw; height: 2px; background: var(--red); margin-top: 0.8vw; }
.biz-card p { font-size: 0.8854vw; line-height: 2em; }

/* お問い合わせフォーム ※現在フォームは撤去中（.source/form-backup/ 参照）。復活時に使うため残置 */
.form-row { margin-bottom: 2.0833vw; }
.form-row label { display: block; font-size: 0.9375vw; font-weight: 700; margin-bottom: 0.6vw; letter-spacing: 0.05em; }
.form-row .req {
  display: inline-block; background: var(--red); color: #fff;
  font-size: 0.5729vw; line-height: 1; padding: 0.3vw 0.5vw; margin-left: 0.6vw;
  vertical-align: 0.15em; letter-spacing: 0.06em;
}
.form-row .opt {
  display: inline-block; background: var(--gray); color: #fff;
  font-size: 0.5729vw; line-height: 1; padding: 0.3vw 0.5vw; margin-left: 0.6vw;
  vertical-align: 0.15em; letter-spacing: 0.06em;
}
.form-row input, .form-row textarea, .form-row select {
  width: 100%; font-family: inherit; font-size: 0.9375vw; color: var(--ink);
  padding: 0.9vw 1vw; border: 1px solid var(--line); background: var(--white);
  border-radius: 0; -webkit-appearance: none; appearance: none;
  transition: border-color 0.3s var(--ease);
}
.form-row select {
  background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%);
  background-position: calc(100% - 1.2vw) center, calc(100% - 0.85vw) center;
  background-size: 0.35vw 0.35vw, 0.35vw 0.35vw;
  background-repeat: no-repeat;
}
.form-row textarea { min-height: 10.4167vw; resize: vertical; }
.form-row input:focus, .form-row textarea:focus, .form-row select:focus { outline: none; border-color: var(--red); }
.form-note { font-size: 0.7292vw; color: var(--gray); line-height: 1.9; }
.form-privacy {
  background: var(--pale); padding: 1.5625vw; margin: 2.6042vw 0;
  font-size: 0.7813vw; line-height: 2em;
}
.form-submit { display: flex; justify-content: center; margin-top: 2.6042vw; }
.form-submit button {
  position: relative; overflow: hidden; cursor: pointer; border: 0;
  width: 18.2292vw; height: 4.1667vw;
  background: var(--red); color: var(--white);
  font-family: "Oswald", sans-serif; font-size: 1.0417vw; letter-spacing: 0.06em;
  display: flex; align-items: center; padding-left: 1.8vw;
  transition: background 0.3s var(--ease);
}
.form-submit button::after {
  content: ""; position: absolute; right: 0; top: 50%;
  width: 27.76%; height: 1px; background: var(--white);
  transition: width 0.3s var(--ease);
}
.form-submit button:hover { background: var(--red-dark); }
.form-submit button:hover::after { width: 7.5%; }
.form-result { text-align: center; font-size: 0.9375vw; margin-top: 1.5625vw; line-height: 1.9; }
.form-result.ok { color: var(--red); font-weight: 700; }
.form-result.err { color: #b00; }

/* 連絡先ボックス */
.contact-direct { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2.6042vw; margin-top: 2.6042vw; }
.contact-direct div { border: 1px solid var(--line); padding: 2.0833vw; text-align: center; }
.contact-direct dt { font-family: "Oswald", sans-serif; font-size: 0.7292vw; color: var(--red); letter-spacing: 0.1em; }
.contact-direct dd { font-size: 1.5625vw; font-weight: 700; font-family: "Oswald", sans-serif; letter-spacing: 0.04em; margin-top: 0.6vw; line-height: 1.4; }
.contact-direct dd.sm { font-size: 0.9375vw; font-family: inherit; font-weight: 500; }

/* NEWS 一覧ページ */
.news-list .nws-li { padding: 1.5625vw 0; }

/* プライバシーポリシー */
.policy h2 { font-size: 1.25vw; font-weight: 700; margin: 3.125vw 0 1vw; letter-spacing: 0.04em; }
.policy h2:first-child { margin-top: 0; }
.policy h2::before { content: ""; display: inline-block; width: 0.9vw; height: 2px; background: var(--red); vertical-align: middle; margin-right: 0.7vw; }
.policy p { font-size: 0.9375vw; }
.policy ul { margin: 1vw 0 0 1.2vw; }
.policy ul li { font-size: 0.9375vw; line-height: 2em; position: relative; padding-left: 1vw; }
.policy ul li::before { content: ""; position: absolute; left: 0; top: 0.95em; width: 0.3vw; height: 1px; background: var(--red); }

/* =========================================================
   タブレット
   ========================================================= */
@media screen and (max-width: 1024px) and (min-width: 769px) {
  .pctt { padding-top: 6vw; padding-bottom: 0; margin-bottom: 12vw; }
  .pctt-wrap, .pctt02 .pctt-wrap, .pctt04 .pctt-wrap {
    margin: 0 auto; width: 84%; grid-template-columns: 1fr; gap: 5vw;
  }
  .pctt02 .pctt-txt, .pctt04 .pctt-txt, .pctt02 .pctt-img, .pctt04 .pctt-img { order: 0; }
  .pctt-txt { padding-top: 9vw; }
  /* 縦積みでは番号・L字ともに左で統一 */
  .pctt-no, .pctt02 .pctt-no, .pctt04 .pctt-no {
    font-size: 13vw; left: 8%; right: auto; top: 2vw; text-align: left;
  }
  .pctt-ttl { font-size: 2.8vw; }
  .pctt-sttl { font-size: 4.6vw; }
  .pctt-p { font-size: 1.9vw; }
  .pctt-img, .pctt02 .pctt-img, .pctt04 .pctt-img { padding: 1.6vw 0 0 1.6vw; }
  .pctt-img::before, .pctt02 .pctt-img::before, .pctt04 .pctt-img::before {
    left: 0; right: auto; width: 30%; height: 30%;
    border-left: 3px solid var(--red); border-right: 0;
  }
  .pctt-img .item { width: 100%; margin: 0; }
  .pctt-img .item img { aspect-ratio: 16 / 10; }
  .biz-grid, .contact-direct { grid-template-columns: 1fr; }
}

/* =========================================================
   SP（375px 基準：1vw = 3.75px）
   ========================================================= */
@media screen and (max-width: 768px) {
  :root { --header-h: 16vw; }
  body { line-height: 1.9; }

  .hd-logo { margin-left: 4vw; }
  .hd-logo img { width: 42.6666vw; }
  #nav_toggle div { width: 6.4vw; height: 4.8vw; }

  .gmenu { padding: 24vw 8vw 16vw; align-items: flex-start; }
  .gmenu nav { width: 100%; }
  .gmenu nav ul > li { margin-bottom: 6.4vw; }
  .gmenu .en { font-size: 7.4666vw; }      /* 28px */
  .gmenu .ja { font-size: 3.2vw; }         /* 12px */
  .gmenu nav > ul > li > ul { margin: 2.4vw 0 0 4vw; }
  .gmenu nav > ul > li > ul li { margin-bottom: 1.6vw; }
  .gmenu nav > ul > li > ul a { font-size: 3.7333vw; }
  .gmenu nav > ul > li > ul a::before { width: 4vw; margin-right: 2vw; }
  .gmenu .gm-privacy { margin-top: 8vw; }
  .gmenu .gm-privacy a { font-size: 3.2vw; }

  .read-more a { width: 56vw; height: 10.6667vw; font-size: 4vw; padding-left: 5.3333vw; }

  /* hero */
  .main-cp { left: 8vw; right: 8vw; bottom: 22vw; font-size: 8vw; line-height: 1.6em; }
  .main-cp .sm { font-size: 3.2vw; margin-bottom: 4vw; }
  .main-cp .sm::after { width: 10vw; margin-left: 3vw; }
  .scroll-cue { right: 6vw; font-size: 2.4vw; padding-bottom: 16vw; }
  .scroll-cue::before, .scroll-cue::after { height: 14vw; }

  /* statement */
  .top__cct { padding: 16vw 8vw; }
  .top__cct_wrap { font-size: 3.7333vw; line-height: 2.2em; letter-spacing: 0.04em; }
  .top__cct_wrap .lead { font-size: 5.8666vw; line-height: 1.7em; margin-bottom: 6.4vw; }
  .top__cct_wrap .lead::after { width: 12vw; margin-top: 4vw; }

  /* news */
  .top__nws { padding: 16vw 0; }
  .top__nws_wrap { width: 84vw; }
  .top__nws_wrap h2 { font-size: 9.6vw; margin-bottom: 6.4vw; }
  .top__nws_wrap h2 span { padding-left: 4vw; }
  .top__nws_wrap h2 span::before { width: 1.6vw; height: 1.6vw; }
  .nws-li { flex-direction: column; align-items: flex-start; gap: 1.6vw; padding: 4.8vw 0; }
  .nws-li .dt { font-size: 3.4666vw; }
  .nws-li p { font-size: 3.7333vw; }
  .nws-li .new { font-size: 2.6666vw; padding: 1vw 1.6vw; margin-right: 2.4vw; }
  .top__nws_wrap .read-more { margin: 8vw auto 0; width: 56vw; }

  /* sections（エディトリアル・縦積み） */
  .pctt {
    padding-top: 12vw; padding-bottom: 0;
    margin-bottom: 20vw;
  }
  .pctt-wrap, .pctt02 .pctt-wrap, .pctt04 .pctt-wrap {
    margin: 0 auto; width: 84vw; grid-template-columns: 1fr; gap: 8vw;
  }
  .pctt02 .pctt-txt, .pctt04 .pctt-txt, .pctt02 .pctt-img, .pctt04 .pctt-img { order: 0; }
  .pctt-txt { padding-top: 15vw; }
  /* 番号は左で統一（縦積み・薄いアウトライン） */
  .pctt-no, .pctt02 .pctt-no, .pctt04 .pctt-no {
    font-size: 12vw; line-height: 0.8; letter-spacing: 0.02em;
    left: 6vw; right: auto; top: 4vw; bottom: auto; text-align: left;
  }
  .pctt-ttl { font-size: 4.2666vw; }
  .pctt-ttl::after { width: 19.2vw; height: 0.8vw; bottom: -2.666vw; }
  .pctt-sttl { font-size: 6.9333vw; line-height: 1.55em; margin-top: 6.4vw; }
  .pctt-p { font-size: 4vw; line-height: 1.9em; letter-spacing: 0.03em; margin: 5.3333vw 0 7.4666vw; }
  .pctt-img, .pctt02 .pctt-img, .pctt04 .pctt-img { padding: 2.6666vw 0 0 2.6666vw; }
  .pctt-img::before, .pctt02 .pctt-img::before, .pctt04 .pctt-img::before {
    left: 0; right: auto; width: 34%; height: 30%;
    border-left: 3px solid var(--red); border-right: 0;
  }
  .pctt-img .item, .pctt02 .pctt-img .item, .pctt04 .pctt-img .item {
    width: 100%; margin: 0;
  }
  .pctt-img .item img { aspect-ratio: 4 / 3; }

  /* footer */
  .ft-contact { padding: 16vw 8vw; }
  .ft-contact h2 { font-size: 12.8vw; }
  .ft-contact .ctt-box p { font-size: 3.7333vw; margin: 4.8vw 0 8vw; }
  .ft-contact .contact-us a { width: 64vw; height: 14.9333vw; font-size: 4vw; padding-left: 6.4vw; }
  .ft__wrap { padding: 16vw 8vw 8vw; }
  .page-top { right: 8vw; top: -6.9333vw; }
  .page-top a { width: 13.8666vw; height: 13.8666vw; font-size: 2.4vw; }
  .page-top a::before { top: 3.6vw; width: 2vw; height: 2vw; margin-left: -1vw; }
  .page-top a span { margin-top: 4.2vw; }
  .ft-main-link { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6.4vw 4vw; }
  .ft-main-link .no { font-size: 2.6666vw; }
  .ft-main-link .en { font-size: 4.8vw; }
  .ft-main-link .jp { font-size: 3.0vw; }
  .ft-sub { gap: 3.2vw 5.3333vw; margin-top: 10.6666vw; padding-top: 6.4vw; }
  .ft-sub a { font-size: 3.2vw; }
  .ft-info { display: block; margin-top: 8vw; }
  .ft-info .ft-logo img { width: 40vw; }
  .ft-info address { font-size: 3.2vw; margin-top: 4vw; }
  .copyright { font-size: 2.6666vw; text-align: left; margin-top: 8vw; }

  /* 下層 */
  .page-head { height: 66.6666vw; min-height: 0; }
  .page-head_in { padding-left: 8vw; padding-right: 8vw; }
  .page-head h1 { font-size: 10.6666vw; }
  .page-head .ja { font-size: 3.4666vw; margin-top: 2.4vw; }
  .breadcrumb { width: 84vw; margin-top: 4.8vw; font-size: 2.9333vw; line-height: 1.8; }
  .breadcrumb span { margin: 0 1.6vw; }
  .page-body, .page-body.is-wide { width: 84vw; padding: 16vw 0; }
  .sec-ttl { font-size: 4.2666vw; margin-bottom: 8vw; }
  .sec-ttl::after { width: 19.2vw; height: 0.8vw; bottom: -2.666vw; }
  .sec-sttl { font-size: 6.4vw; line-height: 1.7em; margin-bottom: 5.3333vw; }
  .page-body p { font-size: 4vw; line-height: 1.9em; }
  .page-body p + p { margin-top: 5.3333vw; }
  .mt-l { margin-top: 16vw; }

  .tbl-company th, .tbl-company td { display: block; width: 100%; font-size: 3.7333vw; padding: 3.2vw 4vw; }
  .tbl-company th { border-bottom: 0; }
  .tbl-company td { padding-top: 2.4vw; }

  .biz-grid, .contact-direct { grid-template-columns: 1fr; gap: 6.4vw; }
  .biz-card { padding: 8vw 6.4vw; }
  .biz-card .no { font-size: 3.4666vw; }
  .biz-card h3 { font-size: 4.8vw; margin: 2.4vw 0; }
  .biz-card h3::after { width: 10vw; margin-top: 3.2vw; }
  .biz-card p { font-size: 3.7333vw; }

  .form-row { margin-bottom: 6.4vw; }
  .form-row label { font-size: 3.7333vw; margin-bottom: 2.4vw; }
  .form-row .req, .form-row .opt { font-size: 2.6666vw; padding: 1vw 1.6vw; margin-left: 2vw; }
  .form-row input, .form-row textarea, .form-row select { font-size: 4vw; padding: 3.2vw 3.2vw; }
  .form-row select { background-position: calc(100% - 5vw) center, calc(100% - 3.6vw) center; background-size: 1.4vw 1.4vw, 1.4vw 1.4vw; }
  .form-row textarea { min-height: 40vw; }
  .form-note { font-size: 3.2vw; }
  .form-privacy { padding: 5.3333vw; margin: 8vw 0; font-size: 3.4666vw; }
  .form-submit button { width: 64vw; height: 14.9333vw; font-size: 4vw; padding-left: 6.4vw; }
  .form-result { font-size: 3.7333vw; }
  .contact-direct div { padding: 6.4vw; }
  .contact-direct dt { font-size: 3.2vw; }
  .contact-direct dd { font-size: 6.4vw; }
  .contact-direct dd.sm { font-size: 3.7333vw; }

  .policy h2 { font-size: 4.8vw; margin: 10.6666vw 0 3.2vw; }
  .policy h2::before { width: 4vw; margin-right: 2.4vw; }
  .policy p, .policy ul li { font-size: 3.7333vw; }
  .policy ul li { padding-left: 4vw; }
  .policy ul li::before { width: 2.4vw; }
}
