/* =========================================================
 * Base & Fonts
 * =======================================================*/
html,
body {
  margin: 0;
  padding: 0;
  height: 100%;
  font-family: "Warming", sans-serif;
}
html {
  scroll-behavior: smooth;
}
body {
  overflow-x: hidden;
}

/* Noteworthy（手書きっぽい英字） */
@font-face {
  font-family: "Noteworthy";
  src: url("./fonts/Noteworthy.ttc") format("truetype");
  font-style: normal;
  font-display: swap;
}

/* Warming Regular 400 */
@font-face {
  font-family: "Warming";
  src: url("./fonts/warming-font-family-2023-11-27-05-11-16-utc/Warming%20WOFF/Warming-Regular.woff2")
      format("woff2"),
    url("./fonts/warming-font-family-2023-11-27-05-11-16-utc/Warming%20WOFF/Warming-Regular.woff")
      format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Warming Bold 700 */
@font-face {
  font-family: "Warming";
  src: url("./fonts/warming-font-family-2023-11-27-05-11-16-utc/Warming%20WOFF/Warming-Bold.woff2")
      format("woff2"),
    url("./fonts/warming-font-family-2023-11-27-05-11-16-utc/Warming%20WOFF/Warming-Bold.woff")
      format("woff");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Warming ExtraBold 800 */
@font-face {
  font-family: "Warming";
  src: url("./fonts/warming-font-family-2023-11-27-05-11-16-utc/Warming%20WOFF/Warming-ExtraBold.woff2")
      format("woff2"),
    url("./fonts/warming-font-family-2023-11-27-05-11-16-utc/Warming%20WOFF/Warming-ExtraBold.woff")
      format("woff");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}

/* Didot（細いセリフ体） */
@font-face {
  font-family: "Didot";
  src: url("./fonts/Didot.ttc") format("truetype");
  font-style: normal;
  font-display: swap;
}

/* KozGoPr6N（小塚ゴシック） */
@font-face {
  font-family: "KozGoPr6N";
  src: url("./fonts/KozGoPr6N-Regular.otf") format("opentype");
  font-style: normal;
  font-display: swap;
}

/* STIXTwoText（英字用セリフ） */
@font-face {
  font-family: "STIXTwoText";
  src: url("./fonts/STIXTwoText.ttf") format("truetype");
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "STIXTwoText";
  src: url("./fonts/STIXTwoText-italic.ttf") format("truetype");
  font-style: italic;
  font-display: swap;
}

/* クラス指定用 */
.noteworthy {
  font-family: "Noteworthy", sans-serif;
}
.didot-text {
  font-family: "Didot", "STIXTwoText", serif;
}
.kozgo-text {
  font-family: "Galvji";
}

/* Galvji：まずMacローカルを掴む → 無ければファイル */
@font-face {
  font-family: "GalvjiWeb";
  src: local("Galvji"), local("Galvji Regular"),
    url("./fonts/Galvji.ttc") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "GalvjiWeb";
  src: local("Galvji Bold"), local("Galvji"),
    url("./fonts/Galvji.ttc") format("truetype");
  font-weight: 700; /* ← 900じゃなく700 */
  font-style: normal;
  font-display: swap;
}

* {
  box-sizing: border-box;
}

:root {
  --magnet-radius: 180px;
  --magnet-strength: 28;
  --spring: 0.12;
  --damping: 0.85;
  --max-offset: 32px;
  --rotate-factor: 0.15;
}

@font-face {
  font-family: "NeueHaasDisplay";
  src: url("./fonts/NeueHaasGroteskDisplayPro-75Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* =========================================================
    * Layout
    * =======================================================*/
body {
  background: #fff;
  color: #000;
}
/* 置き換え */
html {
  scroll-behavior: auto;
} /* ← ブラウザのスムースは切る（競合防止） */

.container {
  height: auto; /* ← 100vhを外す */
  overflow: visible; /* ← scrollを外す */
  scroll-snap-type: none; /* ← 必要なら proximity に戻すが、まずは none で確認 */
}

section {
  height: 100vh;
  scroll-snap-align: start;
  transform-style: preserve-3d;
}

/* =========================================================
    * Hero
    * =======================================================*/
.hero {
  position: relative;
  height: 100vh;
  overflow: hidden;
}

.hero-bg-base {
  position: absolute;
  inset: 0;
  background: url("./images/vinyl.jpg") center center / cover no-repeat;
  z-index: -2;
}

.hero-bg {
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -1;
  pointer-events: none;
}

.hero-text {
  position: relative;
  z-index: 1;
  color: #000;
  font-family: "Warming", sans-serif;
  line-height: 1;
  font-size: clamp(8rem, 12vw, 14rem);
  text-transform: uppercase;
  text-align: left;
  user-select: none;
  font-kerning: none;
  font-feature-settings: "kern" 0;
}

.hero-text .line {
  position: relative;
  overflow: visible;
  white-space: nowrap;
}
.hero-text .char {
  display: inline-block;
  position: relative;
  top: 0;
  left: 0;
  will-change: top, left, transform;
  transition: transform 0s;
  pointer-events: none;
}
.hero-text {
  --fs-base: clamp(24px, 7vw, 96px); /* ← 少し小さく */
  --gap-line: 0.06em;
  --gap-word: 0.35em;
  --track: -0.01em;

  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--gap-line);
  margin: 0;
  padding: 6vh 0 0 6vw;
  line-height: 0.92;
  letter-spacing: var(--track);
  color: #0a0a0a;
}

.hero-text .line {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--gap-word);
  width: fit-content; /* ← 中身の幅にする */
  max-width: min(92vw, 1280px); /* ← 必要なら上限だけ残す */
}

.hero-text .word {
  display: inline-flex;
  align-items: baseline;
  gap: 0.02em;
  font-size: var(--fs-base);
  font-weight: 700; /* 基本の太さ */
}

/* WIPING だけ極太 */
.hero-text .wiping {
  font-weight: 900;
  font-size: calc(var(--fs-base) * 1);
}

/* ® */
.hero-text .R {
  font-family: "Poppins", system-ui, -apple-system, "Hiragino Kaku Gothic ProN",
    "Yu Gothic", Meiryo, sans-serif !important;
  font-weight: 10;
  position: relative;
  top: -0.5em;
  left: -0.7em;
  font-size: calc(var(--fs-base) * 0.6);
}

/* CREATION */
.hero-text .creation {
  font-size: calc(var(--fs-base) * 0.88);
}

/* DESTRUCTION AND */
.hero-text .destruction {
  font-size: calc(var(--fs-base) * 0.86);
}
.hero-text .and {
  font-size: calc(var(--fs-base) * 0.86);
}

/* FUSION REVOLVING */
.hero-text .fusion {
  font-size: calc(var(--fs-base) * 0.86);
}
.hero-text .revolving {
  font-size: calc(var(--fs-base) * 0.86);
}

/* AN AXIS */
.hero-text .an {
  font-size: calc(var(--fs-base) * 0.86);
}
.hero-text .axis {
  font-size: calc(var(--fs-base) * 0.86);
}

/* 文字はインライン */
.hero-text .char {
  display: inline-block;
}

/* レスポンシブ */
@media (max-width: 1200px) {
  .hero-text {
    --fs-base: clamp(22px, 8vw, 84px);
  }
}
@media (max-width: 900px) {
  .hero-text {
    padding-left: 5vw;
    --fs-base: clamp(20px, 9vw, 72px);
  }
}
@media (max-width: 600px) {
  .hero-text {
    padding-left: 4vw;
    --fs-base: clamp(18px, 11vw, 60px);
  }
  .hero-text .ltd {
    top: -0.4em;
    font-size: calc(var(--fs-base) * 0.42);
  }
}

/* 旧marginのリセット */
.wiping,
.creation,
.destruction,
.and,
.fusion,
.revolving,
.an,
.axis {
  margin: 0 !important;
}

.hero-text {
  --fs-base: clamp(24px, 9vw, 98px);
  --gap-line: 0em;
  --gap-word: 0.2em;
  --track: -0em;

  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--gap-line);

  margin: 0;
  padding: 20vh 0 0 6vw; /* ← 6vh → 12vh に変更して下げた */
  padding-top: 20vh; /* ← 20vh → 10vh */
  line-height: 0.92;
  letter-spacing: var(--track);
  color: #0a0a0a;
}

/* Motion-reduce */
@media (prefers-reduced-motion: reduce) {
  :root {
    --magnet-strength: 10;
    --damping: 0.9;
    --max-offset: 12px;
  }
}

.text-bilingual {
  perspective: 800px;
} /* 3D感の下地（任意） */
.text-bilingual .word {
  display: inline-block;
  will-change: transform, opacity, filter;
  transform-origin: left bottom;
}

/* 英語だけ表示、日本語は非表示 */
.text-bilingual .char.en {
  display: inline;
}
.text-bilingual .char.ja {
  display: none;
}

/* 日本語だけフォントサイズを変える */
.text-bilingual .char.ja {
  font-size: 0.7em; /* 例：英語より10%大きく */
}

/* JSで制御するので、ここでは display は固定しない */
.text-bilingual .char.en,
.text-bilingual .char.ja {
  display: inline; /* or inline-block; 好きな方でOK */
}

/* hover時に一時的に出す */

/* =========================================================
    * Stones
    * =======================================================*/
#stones {
  position: relative;
  height: 100vh;
  overflow: hidden;
  z-index: 0;
}

#stones .video-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover; /* これは維持してOK */
  transform: none !important; /* 念のため */
  z-index: -1;
}

.section-video-stones {
  position: relative;
  width: 100%;
  overflow: hidden;
}
.section-video-stones .video-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
  z-index: 0;
  transform-origin: top center;
}
.section-video-stones .stone-wrap {
  position: absolute;
  will-change: transform;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .section-video-stones .stone,
  .section-video-stones .stone-wrap {
    transition: none !important;
  }
}

/* */

.concet-bg-base {
  position: absolute;
  inset: 0;
  background: url("./images/concept.png") center center / cover no-repeat;
  z-index: -2;
}

/* conceptセクションの本文を中央配置（縦横中央） */
.section-concept {
  position: relative;
  width: 100%;
  height: 120vh; /* ← 100vh に戻すと中央化しやすい */
  background: #fff;
  overflow: hidden;
}

/* concept 日本語内の「WIPING」だけ“変更前の英字フォント”へ戻す */
.section-concept .text-bilingual .char.ja .latin {
  font-family: "neue-haas-grotesk-display", sans-serif;
  font-weight: 700;
  font-style: normal;
  letter-spacing: 0.02em; /* 必要なければ消してOK */
  font-size: 1.1em;
}
.section-concept .text-bilingual .char.en .latin {
  font-family: "neue-haas-grotesk-display", sans-serif;
  font-weight: 700;
  font-style: normal;
  letter-spacing: 0.02em; /* 必要なければ消してOK */
  font-size: 1.1em;
}

/* Concept 英語の文字間を強制的に広げる */
.section-concept .text-bilingual .char.en {
  letter-spacing: 0.02em !important;
}

/* =========================================
    黒文字の視認性を上げるための微調整
    （文字色は変えない）
    ========================================= */

/* concept / gray 共通 */
.section-concept .text-content,
.gray-section .gray-text {
  position: relative;
}

.section-concept .text-content {
  position: absolute;

  /* ★ これで完全中央揃え ★ */

  width: 100%; /* 好きに調整可能 */
  max-width: 1400px;

  font-size: 50px;
  color: #353535;

  font-family: "neue-haas-grotesk-display", sans-serif;
  font-weight: 700;
  font-style: normal;

  white-space: normal;
  word-break: keep-all;
  position: absolute;
  top: 70%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-kerning: none;
  font-feature-settings: "kern" 0;
}

.text-bilingual .line {
  width: 100%;
  display: grid;
  justify-items: flex-start; /* center → flex-start */
  text-align: left; /* center → left */
  align-items: left;
  margin: 0.2 0;
}

/* ★ concept セクション専用：行を中央揃え */
.section-concept .text-bilingual .line {
  justify-items: left;
  text-align: left;
}

/* 英語と日本語を同じ場所に重ねて中央寄せ */
.text-bilingual .line .char.en,
.text-bilingual .line .char.ja {
  grid-area: 1 / 1;
}

/* 英語：消えるときにぼかし */
.text-bilingual .line .char.en {
  opacity: 1;
  filter: blur(0px);
  transition: opacity 0.3s ease, filter 0.3s ease;
}
.text-bilingual .line.active .char.en {
  opacity: 0;
  filter: blur(6px);
}

/* 単語を個別にトランスフォームするための土台 */
.text-bilingual .word {
  display: inline-block;
  will-change: transform, opacity, filter;
  transform-origin: left bottom;
}

/* 立体感のための遠近（親要素に付与） */
.text-bilingual {
  perspective: 800px; /* きついなら 600→800→1200 と調整 */
}

.section-dark {
  position: relative;
  /* height は一旦外す or auto にする */
  background: #000;
  text-align: center;
}

.section-dark .video-bg {
  display: block;
  max-width: 100%;
  max-height: 120vh;
  width: auto;
  height: auto;
  object-fit: contain; /* ここがポイント */
  margin: 0 auto;
}

/* clients 内の gray-section だけは 100vh を解除 */
/* 灰色セクション全体 */
.gray-section {
  height: auto;
  min-height: 20vh; /* ★ 40vh を解除 → 下余白が詰まる */
  padding: 80px 8%; /* ★ 80px → 40px に。上も下も同じ量に揃う */
  position: relative;
  top: 0;
}

.gray-bg-base {
  position: absolute;
  inset: 0;
  background: url("./images/graybg5.jpg") center center / cover no-repeat;
  z-index: 0;

  -webkit-mask-image: linear-gradient(#fff 0 0), linear-gradient(#000 0 0);
  mask-image: linear-gradient(#fff 0 0), linear-gradient(#000 0 0);

  /* ここを全体的に 1.4 倍くらいに */
  -webkit-mask-size: 100% 100%, var(--hole-w, 260px) var(--hole-h, 400px);
  mask-size: 100% 100%, var(--hole-w, 260px) var(--hole-h, 400px);

  -webkit-mask-position: 0 0, var(--hole-x, 340px) var(--hole-y, 70px);
  mask-position: 0 0, var(--hole-x, 340px) var(--hole-y, 70px);

  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-repeat: no-repeat, no-repeat;

  -webkit-mask-composite: xor;
  mask-composite: exclude;

  --hole-w: 300px; /* 窓の幅（元 184px） */
  --hole-h: 440px; /* 窓の高さ（元 289px） */
  --hole-x: 180px;
  --hole-y: 88px;
  pointer-events: none;
}

/* =========================================================
 * Gray window image hover: shrink (keep behind the cutout)
 * =======================================================*/

.gray-image {
  perspective: 900px; /* ★ 親に付ける */
  transform-style: preserve-3d;
  overflow: hidden;
}

.gray-image img {
  position: relative;
  width: 420px;
  height: auto;
  display: block;
  z-index: -2; /* 窓の奥を維持 */
  top: -28px;
  left: 8px;

  transform-origin: center center;
  transform: translateZ(0) scale(1);
  transition: transform 0.6s cubic-bezier(0.19, 1, 0.22, 1);
  will-change: transform;
}

.gray-image:hover img {
  transform: translateZ(-100px) scale(0.97); /* ★ 奥へ＋縮小（1より小さい） */
}

/* 画像とテキストの間隔を少し広げる */
.gray-inner {
  display: flex;
  flex-direction: row;
  margin-top: 0; /* -20px のせいで縦のバランスが崩れていた */
  max-width: 2000px;
  align-items: flex-start; /* center → 上寄せ */
  gap: clamp(40px, 10vw, 120px);
  margin-top: 10px; /* ← 全体を少しだけさらに上へ */
}

.gray-text {
  flex: 1;

  color: #000000;
  z-index: 1;
}
/* 行見出しのサイズアップ */
.gray-text .line {
  font-size: 46px; /* 元 24px */
  letter-spacing: 0.02em !important;
  line-height: 1;
}

/* 本文テキストを少し大きく */
.gray-text p {
  font-size: 0.8rem; /* 元 0.9rem */
  line-height: 1.7;
  margin: 0;
  padding: 18px 0 18px;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-kerning: none;
  font-feature-settings: "kern" 0;
}

.hr {
  border: 0.8px solid rgb(0, 0, 0);
  width: "100%";
}

.clients-marquee .hr {
  position: absolute;
  left: 0;
  display: block;
  width: 100%;
  height: 1px;
  border: 0 !important;
  background: rgba(255, 255, 255, 0.45);
  opacity: 1;
  transform: scaleX(0);
  transform-origin: 100% 50%;
  margin: 0;
  z-index: 3;
  pointer-events: none;
}

.clients-section {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
}

.clients-inner {
  justify-content: space-between;
  align-items: flex-start; /* ← 上寄せ配置 */
  gap: 10px;
  max-width: 1200px;
  width: 100%;
  margin: 0 auto;
  height: 100%;
  z-index: 1;
}

.clients-text {
  flex: 1;

  margin-top: 0px; /* ← 上から少しだけ下げて位置調整 */
  text-align: center;
  flex: 0 0 55%; /* 横幅調整（例） */
  margin-left: -120px; /* ← 左にずらす量を調整 */
  position: relative;
  z-index: 1;
}

.clients-text ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.clients-text li {
  font-size: 2.3rem;
  line-height: 0.99;
  letter-spacing: -0.8px;
  white-space: nowrap; /* ← ここで改行を禁止 */
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;
  letter-spacing: 0.01px;
  font-kerning: none;
  font-feature-settings: "kern" 0;
}

.clients-section .clients-beams {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: url("./images/cbackground.png") center center / cover no-repeat;
  overflow: hidden;
}

/* WebGL canvas (beams) */
#clients-beams {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  pointer-events: none;
  mix-blend-mode: screen;
  opacity: 0.95;
}

/* Gem Bridge を“中間レイヤー”に固定（背景の上、テキストの下） */
.clients-section .gem-bridge {
  position: absolute; /* ★ セクション内いっぱいに敷く */
  inset: 0;
  height: 100%; /* 100vh → 親にフィット */
  z-index: 0;
}

/* ===== Clients：シンプル・リッチ出現（ワイプ＋浮上） ===== */
.clients-text h2 {
  position: relative;
  display: inline-block;
  --u: 0; /* アンダーライン伸長率（0→1） */
}

.clients-text h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -6px;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform-origin: 0% 50%;
  transform: scaleX(var(--u));
  opacity: 0.7;
}

/* テキストのマスク土台（JSで各liの中に自動で仕込みます） */
.reveal-clip {
  display: inline-block;
  will-change: clip-path, transform, opacity;
  clip-path: inset(0 100% 0 0); /* 初期は全て隠す（右100%） */
}

.reveal-text {
  display: inline-block;
}

/* 既存の“複雑なクライアント演出”のリセット（もし残っていても無力化） */
.clients-text li .reveal-wrap,
.clients-text li .reveal-line {
  all: unset !important;
}

/* モーション弱めたいユーザー配慮 */
@media (prefers-reduced-motion: reduce) {
  .clients-text h2::after {
    transform: scaleX(1) !important;
  }
  .reveal-clip {
    clip-path: inset(0 0 0 0) !important;
  }
}

/* ====== Clients：旧ワイプ演出の無効化（このブロック優先） ====== */
.clients-text li .reveal-wrap,
.clients-text li .reveal-line {
  all: unset !important; /* 旧CSSを強制リセット */
}

/* ====== Clients：3Dアセンブル（左寄せ・フォント継承） ====== */
.clients-text li {
  position: relative;
}

.fx-assemble {
  position: relative;
  display: inline-block;
  line-height: 1.1;
  perspective: 800px;
  transform-style: preserve-3d;
  vertical-align: top;
  font: inherit; /* ← フォント・サイズは現状を継承 */
}

.fx-assemble__layer {
  position: absolute;
  inset: 0;
  display: inline-block;
  opacity: 0;
  pointer-events: none;
  mix-blend-mode: screen; /* 重なりで発光っぽく。強ければ normal に */
  transform-origin: 50% 50%;
  will-change: transform, opacity, clip-path;
  font: inherit;
}

/* ベース（念のため） */
.clients-list li {
  position: relative;
}

/* それぞれ個別調整 */
.logo_1 {
  transform: translateY(-5px);
}
.logo_2 {
  transform: translateX(-10px);
}
.logo_3 {
  transform: translate(-8px, 12px);
}
.logo_4 {
  transform: translateY(-16px);
}
.logo_5 {
  transform: translateX(-12px);
}
.logo_6 {
  transform: translateY(10px);
}
.logo_7 {
  transform: translateX(10px);
}
.logo_8 {
  transform: translateY(48px);
}

/* 3D：奥（Zマイナス）から合体→再び散開（左寄せ版） */
@keyframes fxAssembleFlyLine {
  0% {
    opacity: 0;
    transform: rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(var(--rz))
      translateZ(var(--zStart));
  }
  18% {
    opacity: 1;
  }
  40% {
    opacity: 1;
    transform: rotateX(0) rotateY(0) rotateZ(0) translateZ(0);
  }
  60% {
    opacity: 1;
    transform: rotateX(0) rotateY(0) rotateZ(0) translateZ(0);
  }
  82% {
    opacity: 0.85;
    transform: rotateX(calc(var(--rx) * -1)) rotateY(calc(var(--ry) * -1))
      rotateZ(calc(var(--rz) * -1)) translateZ(var(--zEnd));
  }
  100% {
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fx-assemble__layer {
    animation: none !important;
    opacity: 1 !important;
    clip-path: none !important;
    mix-blend-mode: normal !important;
  }
}

/* businesscardセクション */

.business-card {
  position: relative;
  height: 140vh;
  display: flex;
  justify-content: center; /* 横中央 */
  align-items: flex-end; /* 下寄せ */
  overflow: hidden;
  padding-top: 20px;
  padding-bottom: 120px;
}

.bg-wrap {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  z-index: -1;
}

.bg-left,
.bg-right {
  flex: 1;
  background-size: cover;
  background-position: center;
}

.bg-left {
  flex: 0 0 30%; /* 左は40% */
  background-image: url("./images/business_l.png");
  z-index: 3;
}

.bg-right {
  flex: none;
  width: 55%;
  position: absolute; /* ← 絶対配置にする */
  right: 0; /* 右端に配置 */
  top: -14vh; /* ← ここで上にずらす */
  bottom: 0;
  background: url("./images/end2.png") no-repeat center top;
  background-size: cover;
  z-index: 2;
}

.bg-left,
.bg-right {
  background-size: cover;
  transform: scale(1.4); /* 少し拡大して余白対策 */
}

.card-content {
  background: #fff;
  padding: 10px 10px; /* 内側の余白を少し大きめに */
  height: 100vh;
  width: 30%; /* 画面幅の30%を占有 */
  max-width: 640px; /* 最大960pxまで広がる */
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25);
  text-align: center;
  position: relative;
  z-index: 1;
  margin-right: 40%; /* 右に10%寄せる */
  transform: translateY(8vh);
}

hr {
  border: none; /* 既定の枠線を消す */
  height: 4px; /* 太さ */
  background-color: black; /* 色 */
  width: 90%; /* 長さ */
  margin: 20px auto; /* 位置（中央寄せ） */
}

.logo {
  font-size: 5rem;
  letter-spacing: 0.1px;
  margin-bottom: 10px;
  margin: 20px 0 10px; /* ← 上だけ 0 にする（重要） */
  font-family: "neue-haas-grotesk-display", sans-serif;
  font-kerning: none;
  font-feature-settings: "kern" 0;
}

.logo .reg {
  font-size: 2rem;
  vertical-align: super;
  display: inline-block; /* ★ 回転しやすくする */
  transform: translateY(-0.35em); /* ← 少し上げる */
}

.address {
  font-size: 0.85rem;
  line-height: 1.2;
  margin: 15px 0;
}

/* 住所（2行）：行間を詰める */
.addr-group {
  display: block;
  line-height: 1.15; /* ← 住所だけ行間キュッと */
  margin-bottom: 4px; /* ← 電話との距離 */
  font-family: "Galvji", system-ui, sans-serif;
}

/* 電話番号：単独で1行扱い */
.tel-group {
  display: block;
  margin-top: 2px;
  margin-bottom: 6px; /* ← URL との距離を広めに */
  font-family: "Galvji", system-ui, sans-serif;
}

/* URL：一番下に余白を広く取る */
.url-group {
  display: block;
  margin-top: 2px;
  font-size: 1.2em;
}

/* リンク色整え */
.address a {
  text-decoration: none;
  color: #000;
}

.icon img {
  width: 4rem;
}
.slogan {
  font-size: 1.1rem;
  margin: 4px 0;
}
.detail {
  margin-top: auto;
  margin-bottom: auto;
  transform: translateY(40px);
  display: flex;
  align-items: flex-start;
  justify-content: flex-start; /* 左寄せにする（center をやめる） */
  margin-left: 0; /* 左右マージンは一旦0に */
  margin-right: 0;
  padding-left: 0;
  gap: 0;
  width: 100%; /* ★ これを追加 */
}

.bc24 {
  display: flex; /* ← inline-flex じゃなくす */
  justify-content: center;
  align-items: center;
  margin-top: 50px;
  font-size: 4.8rem;
  font-weight: bold;
  color: white;
  background-color: black;
  font-family: "Didot", serif;
  line-height: 1;
  padding-left: 18px;
  padding-right: 18px;
  padding-top: 14px;
  padding-bottom: 6px;
  font-family: "STIXTwoText", serif;
  transform: rotate(270deg);
  flex: 0 0 auto; /* 親flexに引き伸ばされないようにする */
  margin-right: 0;
  flex: 0 0 auto;
  margin-left: -30px;
}

.links {
  list-style: none;
  padding: 0;
  margin: -20px;
  width: 220px; /* ← 好きな数値に */
  flex: none;
  min-width: unset;
  margin-left: -55px; /* ★ ここで BC,24 にぐっと寄せる */
}

.links li {
  font-size: 0.6rem;
  text-align: left;
}

.contactus {
  border-top: 0.1px solid black;
  padding-top: 20px;
  padding-bottom: 20px;
  padding-left: 4px;
}
.add {
  border-top: 0.1px solid black;
  border-bottom: 0.1px solid black;
  padding-top: 20px;
  padding-bottom: 20px;
  padding-left: 4px;
}

.join {
  padding-top: 20px;
  padding-left: 4px;
}

.no {
  padding-bottom: 20px;
  border-bottom: 0.1px solid rgb(0, 0, 0);
  font-family: "Galvji", system-ui, sans-serif;
  padding-left: 4px;
}

/* li.privacy-policy を1行としてきれいに中央揃え */
.links li.privacy-policy {
  border-bottom: 0.1px solid black; /* 線はこちらにまとめる */
  list-style: none;

  display: flex;
  align-items: center; /* ← 縦中央揃え（高さは padding で作る） */
  justify-content: flex-end; /* ← 右寄せ */

  padding: 4px 0; /* ← 上下余白（margin ではなく padding） */
  margin: 0; /* ← 外側余白は消す */

  font-size: 8px;
  text-align: right;
  font-family: "Galvji", system-ui, sans-serif;
  padding-right: 4px;
}

/* 名刺下部のバーコード */
.barcode {
  margin-top: 24px;
  display: flex;
  justify-content: center; /* 中央寄せ */
  margin-top: 100px;
}

.barcode img {
  width: 65%; /* カード幅の 6〜7割くらいにする */
  max-width: 230px; /* 大きくなり過ぎないように上限 */
  height: auto;
  display: block;
}

.links li {
  min-height: 16px; /* 他のliと同じ高さに合わせる */
}
/* =========================================================
   * Business Card Links Hover
   * =======================================================*/

.business-card .links li {
  position: relative;
  cursor: pointer; /* クリックできる感じ */
  overflow: hidden;
  user-select: none;
  transition: color 0.55s ease;
}

/* 背景がスライドインするレイヤー */
.business-card .links li::before {
  content: "";
  position: absolute;
  inset: 0;
  background: #000;
  transform: translateX(-105%);
  transition: transform 1.45s cubic-bezier(0.19, 1, 0.22, 1);
  z-index: -1;
}

/* ホバー時：文字色を白にして背景を中にスライド */
.business-card .links li:hover {
  color: #fff;
}

.business-card .links li:hover::before {
  transform: translateX(0);
}

/* クリック中はちょっとだけ押し込まれた感じに */
.business-card .links li:active {
  color: #f5f5f5;
}

/* ========== Gem Bridge (lite) ========== */
.gem-bridge {
  position: relative;
  height: 100vh; /* 120vh → 100vh に縮小 */
  overflow: hidden;
  isolation: isolate;
  background: radial-gradient(
    60% 40% at 50% 30%,
    #0d0f14 0%,
    #090a0d 55%,
    #06070a 100%
  );
}

.gem-bridge::after {
  /* 下方向の黒グラデ（控えめ） */
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.25) 50%,
    rgba(0, 0, 0, 0.55) 85%,
    rgba(0, 0, 0, 0.75) 100%
  );
  pointer-events: none;
  z-index: 0;
}

/* #gem-canvas (removed) */
#gem-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  z-index: 1;
  filter: saturate(108%) contrast(104%);
}

/* --- Gem ripples (cursor-like ripple inside Three.js section) --- */
.gem-bridge {
  /* ripple anchor (指定した場所) : % or px */
  --gem-ripple-x: 50%;
  --gem-ripple-y: 50%;
}

.gem-ripples {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  overflow: visible;
}

.gem-ripple {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: var(--size, 18px);
  height: var(--size, 18px);
  border-radius: 999px;

  border: 1px solid hsla(var(--ripple-h), var(--ripple-s), 55%, 0.55);
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(0.8px);

  box-shadow: 0 0 14px rgba(249, 249, 249, 0.22),
    0 0 6px rgba(255, 255, 255, 0.15);

  transform: translate(-50%, -50%) scale(0.15);
  opacity: 0.95;
  mix-blend-mode: screen;
  will-change: transform, opacity, filter;
}

.gem-hint {
  position: absolute;
  left: 50%;
  bottom: 3vmin;
  transform: translateX(-50%);
  font-size: 12px;
  letter-spacing: 0.08em;
  color: rgba(85, 74, 74, 0.55);
  mix-blend-mode: screen;
  pointer-events: none;
  user-select: none;
  z-index: 2;
}

/* =========================================================
   * Rejouice Curtain Transition（上下の幕トランジション）
   * =======================================================*/

/* 幕トランジション対象セクションの共通 */
.has-curtain {
  position: relative;
  overflow: hidden; /* 幕がはみ出さないように */
}

/* 上下の幕レイヤー */
.curtain-layer {
  position: absolute;
  left: 0;
  width: 100%;
  height: 52%; /* 上下で少し重なるくらい */
  background: #050608; /* Rejouice風の濃い黒 */
  z-index: 40;
  pointer-events: none;
  transform: scaleY(1);
}

/* 上の幕 */
.curtain-top {
  top: 0;
  transform-origin: top center;
}

/* 下の幕 */
.curtain-bottom {
  bottom: 0;
  transform-origin: bottom center;
}

/* 幕が開いているときの軽い立体感（お好みで） */
.has-curtain {
  will-change: transform, filter, opacity;
}

/* ==============================================
   * Hero → Stones トランジション用の光エフェクト
   * ==============================================*/
.hero,
#stones {
  will-change: opacity, transform, filter;
}

.hero-stones-flash {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 60; /* ヒーロー・ストーンより前、カーソルよりは下で調整してもOK */

  opacity: 0;
  transform: scale(1);

  /* ふわっとした光のにじみ（お好みで色を変えてもOK） */
  background: radial-gradient(
      circle at 50% 35%,
      rgba(255, 255, 255, 0.24),
      rgba(255, 255, 255, 0) 60%
    ),
    radial-gradient(
      circle at 12% 80%,
      rgba(160, 210, 255, 0.18),
      rgba(0, 0, 0, 0) 55%
    ),
    radial-gradient(
      circle at 88% 20%,
      rgba(255, 223, 200, 0.22),
      rgba(0, 0, 0, 0) 55%
    );
  mix-blend-mode: screen; /* 背景の上で光っぽく見える */
}
/* ============================================================
    Custom Cursor（全ページで常時表示）
    ============================================================ */

/* Ripple の色（JSで時間変化させるならこれを使う） */
:root {
  --ripple-h: 210; /* hue */
  --ripple-s: 70%;
  --ripple-l: 52%;
  --ripple-alpha: 0.85; /* 全体の濃さ */
}

#cursor {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  opacity: 0;
  transition: opacity 0.12s ease;
  background: transparent;
  border: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  transform: none;
  width: auto;
  height: auto;
  border-radius: 0;
}

@media (pointer: fine) {
  body.cursor-custom-on #cursor {
    opacity: 1;
  } /* ★反発中だけ表示 */
  body.cursor-custom-on,
  body.cursor-custom-on * {
    cursor: none !important;
  } /* ★反発中はOSカーソル消す */
}

/* =========================
      常時表示：ガラスリング
      ※「これ1個だけ」にする（重複定義しない）
      ========================= */
#cursor .cursor-ring {
  width: 30px;
  height: 30px;
  border-radius: 999px;

  border: 0px solid;
  border-color: hsla(var(--ripple-h), var(--ripple-s), 35%, 0.55);
  mix-blend-mode: screen;

  background: rgba(33, 11, 11, 0.4);
  backdrop-filter: blur(0.8px);

  box-shadow: none;

  transition: opacity 0.18s ease, /* ← これを追加 */ transform 0.22s ease,
    /* ← これを追加 */ width 0.25s ease, height 0.25s ease,
    border-radius 0.25s ease, background 0.25s ease, border-color 0.25s ease,
    box-shadow 0.25s ease, backdrop-filter 0.25s ease;
}

/* 英語を切るためのマスク領域 */
.text-bilingual .en-wrapper {
  display: inline-block;
  position: relative;
  clip-path: inset(0 0 0 0);
  transition: clip-path 0.4s ease;
}

/* 日本語は最初非表示 */
.text-bilingual .ja-wrapper {
  opacity: 0;
  transform: translateX(-40px);
  transition: all 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.slice-wrap {
  display: inline-block;
  position: relative;
  line-height: 1em;
}

.slice {
  position: absolute;
  top: 0;
  left: 0;
  transform-origin: center;
  display: inline-block;
  pointer-events: none;
}

.char {
  display: inline-block;
  position: relative;
  white-space: pre;
  will-change: transform;
}

.text-bilingual .char.en {
  display: inline;
  visibility: visible;
}
.text-bilingual .char.ja {
  display: none;
  visibility: hidden;
}

/* ============================
  * Bilingual EN/JA 切り替え用マスク
  * ============================ */

/* 行（charブロック）をマスク枠にする */
.section-concept .text-bilingual .line .char,
.gray-section .text-bilingual .line .char {
  display: inline-block;
  overflow: hidden; /* ここが超重要：下から出る「マスク」になる */
}

/* SplitType で生成される .word をインラインブロック化 */
.section-concept .text-bilingual .line .char .word,
.gray-section .text-bilingual .line .char .word {
  display: inline-block;
  will-change: transform;
}

/* 行ごとにマスク（左右スライド用） */
.section-concept .text-bilingual .line,
.gray-section .text-bilingual .line {
  overflow: hidden; /* ← ここがマスク */
}

/* 行の中の英語＆日本語 */
.section-concept .text-bilingual .line .char,
.gray-section .text-bilingual .line .char {
  display: inline-block; /* スライドさせるのでインラインブロックに */
  white-space: nowrap; /* 行途中で
   
   折り返させない */
}
/* ============================
  * concept / gray の EN / JA 行間を揃える
  * ============================ */

/* 行の枠自体（マスク＋一定の高さ） */
.section-concept .text-bilingual .line,
.gray-section .text-bilingual .line {
  overflow: hidden; /* 横スライドのマスク */
}

.section-concept .text-bilingual,
.gray-section .text-bilingual {
  letter-spacing: -0.02em; /* ← 超重要 */
}

.section-concept .text-bilingual .word,
.gray-section .text-bilingual .word {
  margin-right: 0.01em; /* ← 詰める */
}

html,
body {
  height: 100%;
}

body {
  margin: 0;
  overflow-x: hidden;
}

/* 表示枠は固定 */
#smooth-wrapper {
  position: fixed;
  inset: 0;
  overflow: hidden;
}

/* 中身は transform で動く */
#smooth-content {
  will-change: transform;
}

.gray-bottom-line {
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif !important;
  font-weight: 400 !important;
}

#gem-ripple-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 2; /* ← gem-canvas より上 */
  mix-blend-mode: screen;
}

/* Clients セクションでは装飾リングを消す */
.clients-section svg,
.clients-section canvas.orbit,
.clients-section .orbit,
.clients-section .guide-ring {
  display: none !important;
}

#kaleido-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

/* #gem-canvas (removed) */
#gem-canvas {
  position: relative;
  z-index: 2;
}

/* 「、」「,」専用 STIXTwoText */
@font-face {
  font-family: "STIXComma";
  src: url("./fonts/STIXTwoText.ttf") format("truetype");
  unicode-range: U+3001, /* 日本語の読点「、」 */ U+002C; /* 英語カンマ「,」 */
  font-display: swap;
}

.section-concept .text-bilingual,
.gray-section .text-bilingual {
  font-family: "neue-haas-grotesk-display", sans-serif;
  font-weight: 700;
  font-style: normal;
  font-size: 46px;
  line-height: 1.8;
  letter-spacing: 5px;
}

/* =========================================================
    Clients レイヤー整理（ここが重要）
    ======================================================= */

    .clients-section {
      width: 100vw;
      max-width: none;
      margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
    }

/* Canvasはセクション全体を覆う */
#clients-beams,
#clients-bloom {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/* beams（下） */
#clients-beams {
  z-index: 1;
  mix-blend-mode: screen;
}

/* bloom（中） */
#clients-bloom {
  z-index: 2;
  display: block;
  mix-blend-mode: screen;
  opacity: 0.55; /* 白飛びするなら 0.35〜0.65 で調整 */
}

/* テキスト＆画像（上） */
.clients-section .clients-inner,
.clients-section .clients-image {
  position: relative;
  z-index: 3;
}

/* ↓ここから下は “見た目” の調整（レイヤーはもう触らない） */

.clients-inner {
  height: 100%;
  width: 100%;
  max-width: 1000px;
  margin: 0 auto;
}

.clients-text {
  width: 100%;
  text-align: center;
  margin: 0;
  padding: 0;
  position: relative;
  top: 0;
}

/* =========================
    Clients overlays (clean)
    - セクションは「見た目100vh」
    - 伸ばすのは ScrollTrigger の end でやる
 ========================= */

 .clients-section {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
}

/* テキスト・画像は前面 */
.clients-section .clients-inner {
  position: relative;
  z-index: 3;
}

/* beams/bloom は背景（テキストより下） */
#clients-beams {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  pointer-events: none;
  mix-blend-mode: screen;
  opacity: 1;
}

#clients-bloom {
  position: absolute;
  inset: 0;
  z-index: 2;
  width: 100%;
  height: 100%;
  display: block;
  pointer-events: none;
  mix-blend-mode: screen;
  opacity: 0.9;
}

/* Clients セクションでは装飾リングを消す（必要なら） */
.clients-section svg,
.clients-section canvas.orbit,
.clients-section .orbit,
.clients-section .guide-ring {
  display: none !important;
}

/* =========================================================
    Clients FINAL LAYOUT（最終優先・ここだけ見ればOK）
    目的：
    - 前面：文字 + 画像
    - 背景：ビーム（clients-beams / clients-bloom）
    - 既存の重複定義に勝つため、末尾で上書き
    ======================================================= */

.clients-section {
  color: #fff;
}

/* ===== Clients: endroll (no pin) ===== */
.clients-section {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
}

#clients-bg {
  position: fixed; /* 背景は画面に固定 */
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

#clients-beams,
#clients-bloom {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.clients-flow {
  position: relative;
  z-index: 3;
  width: min(1100px, 80vw);
  margin: 0 auto;

  /* ★ここが肝：上を減らす＝もっと上から始まる / 下を増やす＝長くなる */
  padding: 0vh 0 6vh;
}

.clients-title {
  margin: 0 0 100px;
  text-align: center;
  font-size: 40px;
}

.clients-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 12px;
}

/* ===== Fixed background layer (must be OUTSIDE smooth-content) ===== */

/* =========================================================
    Clients PIN + ENDROLL (FINAL OVERRIDE)
    - 画面固定（pin）中はここだけが見える
    - 中身はJSで translateY して下→上に流す
    ========================================================= */

.clients-section {
  position: relative;
  min-height: auto;
  padding-top: 8vh;

  overflow: visible;
  color: #fff;
  padding-bottom: 8vh;
}

.clients-pin {
  position: relative;
  z-index: 3;
  height: auto;
  width: 100%;
  overflow: visible;
  display: grid;
  place-items: start center;
}

/* Clients中だけ背景を表示（JSでopacity切替） */
#clients-bg-layer {
  opacity: 0;
  transition: opacity 0.4s ease;
  overflow: hidden; /* 背景だけ切る */
}

.clients-pin {
  position: relative;
  z-index: 3;
  height: auto;
  width: 100%;
  overflow: visible;
  display: grid;
  place-items: start center;
}

.clients-flow {
  width: min(1100px, 92vw);
  will-change: transform;
}

/* 旧CSS（.clients-text の top/margin-left/z-index など）を完全に打ち消す */
.clients-text {
  position: relative;
  top: 0;
  left: 0;
  margin: 0;
  margin-left: 0;
  text-align: center;
  flex: initial;
  z-index: 3;
}

.clients-list li {
  opacity: 1;
}

.clients-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 12px;
}

.clients-image {
  /* 余白が大きいと 100vh 内で画像が切れやすいので控えめに */
  margin-top: 80vh;
  display: flex;
  justify-content: center;
  position: relative;
  left: 0;
  top: 0;
  height: auto;
  align-items: flex-end;
  z-index: 3;
}

.clients-image img {
  width: min(560px, 38vw);
  height: auto;
  display: block;
}
.clients-list li img {
  width: 220px; /* ← ロゴの大きさ */
  height: auto;
  display: block;
  margin: 0 auto; /* 中央寄せ */
}

/* ロゴ1件分の行 */
.clients-list li {
  display: flex;
  justify-content: center;
  align-items: center;

  height: 300px; /* ★ 全ロゴ共通の行の高さ */
  margin-bottom: 3px; /* ★ 行間（ここで上下間隔を制御） */
}
.clients-list .logo_3 img {
  margin-top: -40px;
}
.clients-list .logo_4 img {
  margin-bottom: 82px;
  margin-top: 100px;
}

.clients-list .logo_5 img {
  margin-top: 30px;
}

.clients-list .logo_6 img {
  margin-top: -60px;
}

.clients-list .logo_7 img {
  margin-top: -30px;
}

.clients-list .logo_8 img {
  margin-top: -40px;
}

.clients-list .logo_13 img {
  margin-top: 60px;
}

.clients-list .logo_14 img {
  margin-top: 70px;
}
.clients-list .logo_15 img {
  margin-top: 60px;
}
.clients-list .logo_16 img {
  margin-top: 60px;
}

/* =========================
    Clients title play (addon)
    ========================= */
.clients-title .char {
  display: inline-block;
  will-change: transform, filter, opacity;
  transform: translateZ(0); /* 文字のにじみ対策 */
}

/* 目立ちすぎない“熱”だけ（ビームと馴染ませる） */
.clients-title {
  text-shadow: 0 0 12px rgba(255, 120, 80, 0.18);
}

@media (prefers-reduced-motion: reduce) {
  .clients-title .char {
    transition: none !important;
    transform: none !important;
  }
}

/* =========================================================
 * Contact Page
 * =======================================================*/
body.contact-page {
  background: #fff;
  color: #000;
  overflow-x: hidden;
}

.contact-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 42% 58%;
  gap: 0;
}

.contact-left {
  position: relative;
  padding: clamp(28px, 4vw, 64px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.contact-back {
  position: absolute;
  top: 22px;
  left: clamp(18px, 3vw, 36px);
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 12px;
  color: #000;
  text-decoration: none;
  opacity: 0.8;
}
.contact-back:hover {
  opacity: 1;
  text-decoration: underline;
}

.contact-title {
  font-family: "Warming", sans-serif;
  letter-spacing: -0.02em;
  line-height: 0.92;
  margin: 0 0 18px 0;
  font-size: clamp(52px, 6.5vw, 92px);
  text-transform: uppercase;
}

.contact-sub {
  margin: 0 0 26px 0;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 400;
  font-size: 14px;
  line-height: 1.7;
  opacity: 0.85;
}

.contact-meta {
  margin-top: 18px;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 12px;
  opacity: 0.85;
}

.contact-right {
  padding: clamp(28px, 4vw, 64px);
  display: flex;
  align-items: center;
}

.contact-form {
  width: min(820px, 100%);
}

.contact-grid {
  display: grid;
  gap: 18px;
  margin-bottom: 18px;
}

.contact-grid.two {
  grid-template-columns: 1fr 1fr;
}

.field input,
.field textarea {
  width: 100%;
  border: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.35);
  padding: 14px 0;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 14px;
  outline: none;
  background: transparent;
}

.field textarea {
  resize: vertical;
  min-height: 140px;
}

.field input::placeholder,
.field textarea::placeholder {
  color: rgba(0, 0, 0, 0.55);
}

.field input:focus,
.field textarea:focus {
  border-bottom-color: rgba(0, 0, 0, 0.9);
}

.contact-submit {
  margin-top: 8px;
  width: 100%;
  padding: 14px 0;
  border: 1px solid rgba(0, 0, 0, 0.35);
  background: transparent;
  color: #000;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.contact-submit:hover {
  background: #000;
  color: #fff;
  border-color: #000;
}

.contact-note {
  margin-top: 10px;
  font-size: 11px;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  opacity: 0.65;
}

/* Responsive */
@media (max-width: 980px) {
  .contact-shell {
    grid-template-columns: 1fr;
  }
  .contact-right {
    padding-top: 0;
  }
  .contact-grid.two {
    grid-template-columns: 1fr;
  }
}

body.contact-page,
body.contact-page * {
  cursor: auto !important;
}

/* =========================================================
   Add Page (Location / Address)
   Contact Us と同じ左右2カラム構成
========================================================= */

/* ページ判別 */
body.add-page {
  background: #fff;
  color: #000;
}

/* フェード（Contactと同系） */
#add-fade {
  position: fixed;
  inset: 0;
  background: #fff;
  pointer-events: none;
  z-index: 9999;
  transition: opacity 0.8s ease;
}
body.is-loaded #add-fade {
  opacity: 0;
}

/* 全体レイアウト（Contact流用） */
.add-page .contact-shell {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 100vh;
}

/* -------------------------
   左：住所テキスト
------------------------- */
.add-page .contact-left {
  padding: clamp(40px, 6vw, 96px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.add-page .contact-title {
  font-family: "Poppins", sans-serif;
  font-size: clamp(32px, 4.5vw, 56px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: 0.02em;
  margin-bottom: 16px;
}

.add-page .add-lead {
  font-size: 14px;
  letter-spacing: 0.08em;
  margin-bottom: 32px;
  opacity: 0.7;
}

.add-address {
  margin-bottom: 32px;
}

.add-address .add-line {
  font-size: 15px;
  line-height: 1.8;
  letter-spacing: 0.04em;
}

.add-address .add-link {
  display: inline-block;
  margin-top: 20px;
  font-size: 13px;
  letter-spacing: 0.12em;
  text-decoration: none;
  color: #000;
  position: relative;
}

.add-address .add-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 1px;
  background: #000;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.4s ease;
}

.add-address .add-link:hover::after {
  transform: scaleX(1);
}

/* -------------------------
   右：マップ画像
------------------------- */
.add-page .contact-right {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(24px, 4vw, 64px);
}

.map-card {
  position: relative;
  width: 100%;
  max-width: 520px;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: #eaeaea;
}

/* マップ画像 */
.map-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* 少しデザイン寄せ */
  filter: grayscale(100%) contrast(1.05);
  transition: transform 1.2s ease, filter 0.8s ease;
}

.map-card:hover img {
  transform: scale(1.03);
  filter: grayscale(0%);
}

/* マップ下キャプション */
.map-caption {
  position: absolute;
  left: 16px;
  bottom: 14px;
  display: flex;
  gap: 12px;
  align-items: baseline;
  font-size: 11px;
  letter-spacing: 0.14em;
  color: #000;
  background: rgba(255, 255, 255, 0.85);
  padding: 6px 10px;
}

.map-caption__label {
  font-weight: 600;
}

.map-caption__text {
  opacity: 0.7;
}

/* -------------------------
   レスポンシブ
------------------------- */
@media (max-width: 900px) {
  .add-page .contact-shell {
    grid-template-columns: 1fr;
  }

  .add-page .contact-right {
    order: 2;
    padding-top: 80px;
  }
}

/* =========================================================
 * Page Transition (fade)
 * =======================================================*/
#page-fade {
  position: fixed;
  inset: 0;
  background: #fff; /* ← 背景が白の前提。黒にしたいなら #000 */
  opacity: 1; /* 初期は覆っておく */
  pointer-events: none;
  z-index: 999999;
  transition: opacity 380ms ease;
}

/* 読み込み後：見えるようにする（フェードイン） */
html.is-ready #page-fade {
  opacity: 0;
}

/* 遷移直前：覆う（フェードアウト） */
html.is-leaving #page-fade {
  opacity: 1;
}

/* ===============================
   Contact page white fade
================================ */

#contact-fade {
  position: fixed;
  inset: 0;
  background: #fff;
  z-index: 9999;
  pointer-events: none;

  opacity: 1;
  transition: opacity 0.8s ease;
}

body.contact-page.is-loaded #contact-fade {
  opacity: 0;
}

/* =========================================================
   Privacy Policy — 2 column layout (like Contact)
   ======================================================= */

/* white fade */
#privacy-fade {
  position: fixed;
  inset: 0;
  background: #fff;
  z-index: 9999;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.85s cubic-bezier(0.2, 0.7, 0.2, 1);
}
body.privacy-page.is-loaded #privacy-fade {
  opacity: 0;
}

body.privacy-page {
  background: #fff;
  color: #0a0a0a;
}

/* 2-column shell */
.privacy-shell.privacy-two {
  width: min(1200px, 92vw);
  margin: 0 auto;
  padding: clamp(48px, 5vw, 80px) 0 120px;

  display: grid;
  grid-template-columns: 0.7fr 1.6fr;

  gap: clamp(28px, 5vw, 72px);
  align-items: start;
}

/* left */
.privacy-left {
  position: sticky;
  top: 28px;

  /* Contactのleftと同じ余白設計にする */
  padding: clamp(28px, 4vw, 64px);

  /* absolute配置の基準になる */
  box-sizing: border-box;
}

.privacy-back {
  position: absolute;
  top: 22px;
  left: clamp(18px, 3vw, 36px);
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 12px;
  color: #000;
  text-decoration: none;
  opacity: 0.8;
}

.privacy-back:hover {
  opacity: 1;
  text-decoration: underline;
  transform: none; /* 既存の translateX を無効化してContactと一致 */
}

.privacy-title {
  margin: 18px 0 10px;
  line-height: 1.02;
  font-size: clamp(40px, 4.6vw, 64px);
  letter-spacing: -0.03em;

  font-family: "Warming", sans-serif;
  font-weight: 800;
  text-transform: uppercase;
}

.privacy-sub {
  margin: 0;
  max-width: 34ch;

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 14px;
  line-height: 2.05;
  opacity: 0.82;
}

.privacy-meta {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(10, 10, 10, 0.12);
}
.privacy-mail {
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.02em;
  opacity: 0.86;
}

/* right */
.privacy-right {
  padding-top: 6px;
}

.privacy-body {
  display: grid;
  gap: 0;
}

.privacy-block {
  padding: 22px 0;
  border-bottom: 1px solid rgba(10, 10, 10, 0.1);
}

.privacy-block h2 {
  margin: 0 0 10px;
  font-size: 15px;
  letter-spacing: 0.02em;

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 800;
  color: rgba(10, 10, 10, 0.92);
}

.privacy-block p {
  margin: 0;
  max-width: 82ch;

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;

  font-size: 14px;
  line-height: 2.05;
  letter-spacing: 0.01em;
  color: rgba(10, 10, 10, 0.86);
}

.privacy-block p + p {
  margin-top: 10px;
}

.privacy-block ul {
  margin: 12px 0 0;
  padding-left: 1.2em;
  max-width: 86ch;
}
.privacy-block li {
  margin: 0;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;

  font-size: 14px;
  line-height: 2.05;
  letter-spacing: 0.01em;
  color: rgba(10, 10, 10, 0.86);
}
.privacy-block li + li {
  margin-top: 6px;
}

.privacy-contact a {
  color: rgba(10, 10, 10, 0.92);
  text-decoration: none;
  border-bottom: 1px solid rgba(10, 10, 10, 0.35);
  padding-bottom: 1px;
}
.privacy-contact a:hover {
  border-bottom-color: rgba(10, 10, 10, 0.65);
}

/* mobile: 1 column */
@media (max-width: 860px) {
  .privacy-shell.privacy-two {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .privacy-left {
    position: relative;
    top: auto;
  }
  .privacy-sub {
    max-width: 70ch;
  }
}

/* カーソルが乗ったら少し左へ */
.contact-back,
.privacy-back,
.cr-back {
  transition: opacity 0.25s ease, transform 0.25s ease;
  transform: translateX(0);
}

.contact-back:hover,
.privacy-back:hover,
.cr-back:hover {
  transform: translateX(-6px);
}

.contact-back,
.privacy-back,
.cr-back {
  transition: opacity 0.25s ease, transform 0.25s ease;
  transition-delay: 0s;
}

.contact-back:hover,
.privacy-back:hover,
.cr-back:hover {
  transform: translateX(-6px);
  opacity: 1;
}

/* =========================================================
   Corporate Responsibility — 2 column (like Contact/Privacy)
   ======================================================= */

body.responsibility-page {
  background: #fff;
  color: #0a0a0a;
  overflow-x: hidden;
}

/* 2-column shell */
.cr-shell.cr-two {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 34% 66%; /* ← 左を狭める */
  gap: 0;
}

/* left */
.cr-left {
  position: relative;
  padding: clamp(28px, 4vw, 64px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.cr-back {
  position: absolute;
  top: 22px;
  left: clamp(18px, 3vw, 36px);

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 12px;
  color: #000;
  text-decoration: none;
  opacity: 0.8;
}

.cr-title {
  margin: 0 0 18px 0;
  font-family: "Warming", sans-serif;
  letter-spacing: -0.02em;
  line-height: 0.96;
  font-size: clamp(36px, 4.2vw, 68px);
  text-transform: uppercase;
}

.cr-sub {
  margin: 0 0 26px 0;
  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 14px;
  line-height: 2.05;
  opacity: 0.82;
}

.cr-meta {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid rgba(10, 10, 10, 0.12);

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-size: 12px;
  opacity: 0.85;

  display: grid;
  gap: 6px;
}

.cr-mail {
  font-weight: 700;
}

.cr-updated {
  opacity: 0.75;
}

/* right */
.cr-right {
  padding: clamp(28px, 4vw, 64px);
  display: flex;
  align-items: center;
}

.cr-body {
  width: min(860px, 100%);
}

.cr-block {
  padding: 22px 0;
  border-bottom: 1px solid rgba(10, 10, 10, 0.1);
}

.cr-block h2 {
  margin: 0 0 10px;
  font-size: 15px;
  letter-spacing: 0.02em;

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 800;
  color: rgba(10, 10, 10, 0.92);
}

.cr-block p {
  margin: 0;
  max-width: 82ch;

  font-family: "GalvjiWeb", system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 14px;
  line-height: 2.05;
  letter-spacing: 0.01em;
  color: rgba(10, 10, 10, 0.86);
}

.cr-links {
  margin-top: 12px;
  display: inline-flex;
  gap: 12px;
}

/* aの下線無し＆色も整える（このページ内だけ） */
body.responsibility-page a {
  color: rgba(10, 10, 10, 0.92);
  text-decoration: none;
  border-bottom: 1px solid rgba(10, 10, 10, 0.28);
  padding-bottom: 1px;
  transition: border-color 0.2s ease, opacity 0.2s ease;
}
body.responsibility-page a:hover {
  border-bottom-color: rgba(10, 10, 10, 0.6);
  opacity: 1;
}

/* mobile */
@media (max-width: 980px) {
  .cr-shell.cr-two {
    grid-template-columns: 1fr;
  }
  .cr-right {
    padding-top: 0;
    align-items: flex-start;
  }
}

/* =========================================================
   CR Back (only) — smooth + slight left on hover
   ======================================================= */
body.responsibility-page .cr-back {
  display: inline-block; /* transform を確実に効かせる */
  opacity: 0.8;
  text-decoration: none !important;
  transform: translateX(0);
  will-change: transform;

  transition: opacity 0.25s ease, transform 0.55s cubic-bezier(0.19, 1, 0.22, 1);
}

body.responsibility-page .cr-back:hover {
  opacity: 1;
  transform: translateX(-4px);
  text-decoration: underline !important;
}

/* =========================================================
   Back links — NO underline (Contact / Privacy / CR)
   ======================================================= */

.contact-back,
.privacy-back,
.cr-back {
  display: inline-block; /* transform確実 */
  opacity: 0.8;

  text-decoration: none !important;
  border-bottom: none !important;

  transform: translateX(0);
  will-change: transform;

  transition: opacity 0.25s ease, transform 0.55s cubic-bezier(0.19, 1, 0.22, 1);
}

.contact-back:hover,
.privacy-back:hover,
.cr-back:hover {
  opacity: 1;
  transform: translateX(-4px); /* ふわっと左へ */
  text-decoration: none !important;
  border-bottom: none !important;
}

/* =========================================================
   Back links — FORCE no underline (even on hover)
   ======================================================= */

.contact-back,
.privacy-back,
.cr-back,
.contact-back:hover,
.privacy-back:hover,
.cr-back:hover {
  text-decoration: none !important;
  border-bottom: none !important;
}

/* CR Back: underline完全なし + ふわっと左 */
body.responsibility-page .cr-back,
body.responsibility-page .cr-back:hover {
  border-bottom: none !important;
  text-decoration: none !important;
}

body.responsibility-page .cr-back {
  display: inline-block;
  opacity: 0.8;
  transform: translateX(0);
  will-change: transform;
  transition: opacity 0.25s ease, transform 0.55s cubic-bezier(0.19, 1, 0.22, 1);
}
body.responsibility-page .cr-back:hover {
  opacity: 1;
  transform: translateX(-4px);
}

/* デフォルト */
.clients-list li img {
  height: 380px;
  width: auto;
}

/* 小さく見えるロゴ */
.clients-list li.logo_4 img {
  height: 88px;
}

/* 大きく見えるロゴ */
.clients-list li.logo_5 img {
  height: 60px;
}

.clients-list li.logo_6 img {
  height: 130px;
}

.clients-list li.logo_7 img {
  height: 120px;
}

.clients-list li.logo_8 img {
  height: 70px;
}

/* ====================================
   Clients ロゴ 3列レイアウト
   ==================================== */

.clients-text ul {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: -40px -30px;
}
.clients-list li {
  height: 100px;
}

.clients-list .logo_13 img {
  height: 180px;
  width: auto;
}

.clients-list .logo_15 img {
  height: 60px;
  width: auto;
}
.clients-list .logo_14 img,
.clients-list .logo_16 img {
  height: 70px;
  width: auto;
}
/* =========================================================
 * JA punctuation spacing (、。)
 * =======================================================*/
.text-bilingual .char.ja .ja-comma,
.text-bilingual .char.ja .ja-period {
  display: inline-block;
}

/* 読点「、」の右側だけ詰める */
.text-bilingual .char.ja .ja-comma {
  margin-right: -0.52em; /* 強ければ -0.25em */
}

/* 句点「。」も気になるなら少しだけ */
.text-bilingual .char.ja .ja-period {
  margin-right: -0.2em; /* いらなければ消してOK */
}

/* 日本語文中の英語だけ少し大きく */
.text-bilingual .char.ja .latin {
  font-size: 1.08em;
  letter-spacing: 0.02em;
}

.regmark {
  display: inline-block;
  transform: translateY(-0.15em);
}

/* =========================================================
   Beam gaps between sections
   ========================================================= */
.beam-gap {
  position: relative;
  z-index: 1; /* セクションと同じ階層でOK */
  height: 80vh; /* 見える量（調整） */
  background: transparent; /* ★ここ透明だから後ろのビームが見える */
  pointer-events: none;
}

/* =========================
   Global Beam Background
   ========================= */
#clients-bg-layer {
  position: fixed;
  inset: 0;
  z-index: 0; /* いちばん後ろ */
  pointer-events: none;
  opacity: 1 !important; /* ★ 常時表示に固定 */
  transition: none !important;
  overflow: hidden;
}

/* canvas は layer 内で全面 */
#clients-beams,
#clients-bloom {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

/* ===============================
   FORCE GLOBAL BEAM BACKGROUND
   =============================== */
#clients-bg-layer {
  position: fixed !important;
  inset: 0 !important;
  z-index: -1 !important; /* ★ すべての下 */
  opacity: 1 !important;
  visibility: visible !important;
  display: block !important;
  pointer-events: none !important;
  transform: none !important;
}

#clients-bg-layer canvas {
  display: block !important;
  opacity: 1 !important;
  visibility: visible !important;
}

/* =========================
   Stones：中央スクエア動画
   ========================= */

#stones {
  position: relative;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* ピン要素は中央固定 */
#stones .stones-pin {
  position: relative;
  width: 90vw; /* ← 画面幅の80%（左右20%余白） */
  max-width: 90vh; /* ← 縦に大きくなりすぎない保険 */
  aspect-ratio: 1 / 1; /* ← 正方形 */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 動画の器 */
#stones .stones-canvas {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

/* 動画本体 */
#stones .stones-canvas .video-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover; /* 正方形にトリミング */
}

/* =========================
   Gray section (PDF like)
   ========================= */

.gray-section {
  position: relative;
  height: auto;
  min-height: 100vh;
  padding: 120px 8vw;
  background: #f3f1ee; /* 近いトーン */
  overflow: hidden;
}

.gray-bg-base {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0; /* 背景画像使うなら 0→1 に */
}

/* 全体の中央寄せ */
.gray-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 4vw 0 2vw; /* ← 左を少し狭く */
}

/* テキストは中央で、行は左寄せ（PDFに近い） */
.gray-text {
  max-width: 2000px;
  margin: 0 auto;
  color: #000;
}

.gray-text .line {
  display: block;
  overflow: hidden; /* 既存の言語スライド用マスクを活かす */
}

/* 下の小さめテキスト */
.gray-bottom-line {
  font-size: 13px;
  line-height: 1.6;
  margin: 0;
  padding: 16px 0 16px;
}

/* バー：main.js が scaleX するので “線っぽい見た目”だけ用意 */
.gray-text .hr {
  height: 1px;
  background: #000;
  transform-origin: 0% 50%;
  width: 100%;
}

/* 2枚並びはそのまま */
.gray-media {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 5vw, 72px);
  align-items: start;
  place-items: center; /* imgを完全センター */
  margin-top: 80px;
}

/* 画像をカラム幅いっぱいにする（ズレ感が消える） */
.gray-media-item img {
  width: 100%;
  height: 500px;
  object-fit: cover;
  display: block;
}

/* 縦長・余白なし・サイズ完全一致 */
.gray-media-item img {
  height: 500px; /* ← 縦長の核 */
  object-fit: cover; /* ← 余白ゼロ */
  display: block;
}

/* スマホは縦積み */
@media (max-width: 820px) {
  .gray-section {
    padding: 90px 6vw;
  }
  .gray-media {
    grid-template-columns: 1fr;
  }
}

/* === EN/JA を同じ場所に重ねてレイアウト変動を消す === */
.section-concept.text-bilingual .line,
.gray-section .text-bilingual .line {
  position: relative;
  display: block;
  /* 行の高さを固定（EN/JAどっちでも同じ） */
}

/* EN/JA を同じ座標に重ねる */
.section-concept .text-bilingual .line .char,
.gray-section .text-bilingual .line .char {
  position: absolute;
  left: 0;
  top: 0;
  display: inline-block;
  white-space: nowrap;
}

/* “高さが変わる原因”を潰す：jaだけ別line-heightを持たせない */
.text-bilingual .char.ja,
.gray-section .text-bilingual .char.ja {
  line-height: inherit;
}

/* =========================================================
   FIX: conceptは “gridで重ねる” 方式に戻す（ズレ防止）
   ======================================================= */

/* conceptのlineはgrid重ねを維持 */
.section-concept .text-bilingual .line {
  display: grid;
  justify-items: left;
  text-align: left;
  position: relative;
  /* 行の高さを固定（崩れ防止） */
  min-height: 0.1em;
  line-height: 1;
  overflow: hidden;
}

/* concept内は absolute を禁止して、grid-area で重ねる */
.section-concept .text-bilingual .line .char {
  position: relative !important; /* ★ここでabsoluteを打ち消す */
  grid-area: 1 / 1;
  white-space: nowrap;
  line-height: inherit !important;
}

/* =========================================================
   Grayは absolute重ね（レイアウト変動をゼロにする）
   ======================================================= */

.section-concept.gray-section .text-bilingual .line {
  position: relative;
  display: block;
  min-height: 1.25em; /* ここも必要なら調整 */
  line-height: 0.1;
  overflow: hidden;
}

.section-concept .text-bilingual .char.ja {
  transform: translateY(0.55em);
}

/* =========================================================
   concept 日本語：最終的な見た目制御（ここが正）
   ======================================================= */

.section-concept .text-bilingual .char.ja {
  font-size: 0.98em;
}

/* 行と行の間で調整する */
.section-concept .text-bilingual .char.ja {
  margin-bottom: -1em;
}
/* =====================================
   bilingual 完全安定版（最終形）
   display絶対禁止 / absolute禁止
   ===================================== */

/* gridで同じセルに重ねる（既存活用） */
.text-bilingual .line .char.en,
.text-bilingual .line .char.ja {
  grid-area: 1 / 1;
  display: inline;
  white-space: normal;
  transition: opacity 0.35s ease;
}

/* 初期：英語表示 */
.text-bilingual .char.en {
  opacity: 1;
  visibility: visible;
}

.text-bilingual .char.ja {
  opacity: 0;
  visibility: hidden;
}

/* 切替 */
.text-bilingual .line.active .char.en {
  opacity: 0;
  visibility: hidden;
}

.text-bilingual .line.active .char.ja {
  opacity: 1;
  visibility: visible;
}

/* concept セクションの ® を小さく */
.section-concept .R {
  font-size: 0.55em;
  vertical-align: super;
  margin-left: 0.05em;
}

/* 日本語 WIPING® の ® を上に */
.section-concept .char.ja .R {
  font-size: 0.55em;
  position: relative;
  top: -0.35em;
  margin-left: 0.04em;
}

/* ================================
   FIX: Gray 英文が切れる問題
   ================================ */

/* Grayは折り返し許可＆マスク解除 */
.gray-section .gray-text .line {
  overflow: visible !important; /* ← hidden を潰す */
}

/* Grayは absolute/nowrap をやめて、gridで重ねる */
.gray-section .text-bilingual .line {
  display: grid !important;
}

.gray-section .text-bilingual .line .char {
  position: relative !important; /* ← absolute を潰す */
  grid-area: 1 / 1;
  white-space: normal !important; /* ← nowrap を潰す（折り返しOK） */
  display: block;
}

/* Addページ：右カラムを画面いっぱいに */
.contact-right {
  height: 100vh;
  display: flex;
  align-items: center;
}

/* カードも高さを持たせる */
.map-card {
  height: 90vh;
}

/* 画像を高さ基準で拡大 */
.map-card img {
  height: 100%;
  width: auto;
  object-fit: contain;
}

body.add-page .map-card {
  height: 92vh;
}

body.add-page .map-card img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* ← 余白が出ない。はみ出した分はトリミング */
}

body.add-page .map-card {
  margin-right: 140px; /* ← 数字を増減して微調整 */
}

/* Clients：ロゴが一瞬出るのを防ぐ（JSが来るまで常に隠す） */
.clients-section .clients-text {
  opacity: 0;
}
/* 3D title canvas */
#clients-3d-title {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0; /* beamsの上・テキストの下 */
}

.clients-title-video {
  text-align: center;
  margin-bottom: 120px;
}

.clients-title-movie {
  width: 500px;
  max-width: 100vw;
  height: auto;
  display: block;
  margin: 0 auto 100px;
}

#cursor {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  opacity: 0;
  transition: opacity 0.12s ease;
  background: transparent;
  border: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  transform: none;
  width: auto;
  height: auto;
  border-radius: 0;
}

/* =============================
   日本語をヒラギノ角ゴ W7に固定
============================= */

.section-concept .char.ja {
  font-family: "Hiragino Kaku Gothic ProN W10" !important;
  font-weight: 900 !important;
  letter-spacing: 0.01em !important;
}

.section-concept .gray.ja {
  font-family: "source-han-sans-japanese", sans-serif;
  font-weight: 900;
}

.gray-section .text-bilingual .char.ja {
  font-family: "Hiragino Kaku Gothic ProN W10" !important;
  font-weight: 900 !important;
  letter-spacing: 0.01em !important;
}


/* =========================================
   FIX: g/p/y が切れる問題（Concept）
   マスクは wrapper に持たせて、文字側は切らない
========================================= */

/* 1) 文字の入れ物側（全体）は絶対に切らない */
.section-concept .text-content,
.section-concept .text-bilingual {
  overflow: visible !important;
}

/* 2) 行（line）は “切り役” にしない（ここで切るとgが死ぬ） */
.section-concept .text-bilingual .line {
  overflow: visible !important;
  height: auto !important;
  min-height: unset !important;
}

/* 3) 文字（char）は絶対に切らない */
.section-concept .text-bilingual .char {
  overflow: visible !important;
  height: auto !important;
  min-height: unset !important;
}

/* 4) それでもブラウザの描画ボックスで欠ける時の保険
      見た目の行間を増やさずに下だけ逃がす */
.section-concept .text-bilingual .line {
  padding-bottom: 0.22em !important;
  margin-bottom: -0.22em !important;
}

/* =========================================
   FIX: g/p/y が切れる問題（Gray Section）
   Concept と同じ処理を適用
========================================= */

/* 1) 文字の入れ物側（全体）は絶対に切らない */
.gray-section .gray-text,
.gray-section .text-bilingual {
  overflow: visible !important;
}

/* 2) 行（line）は切らない */
.gray-section .text-bilingual .line {
  overflow: visible !important;
  height: auto !important;
  min-height: unset !important;
}

/* 3) 文字（char）は絶対に切らない */
.gray-section .text-bilingual .char {
  overflow: visible !important;
  height: auto !important;
  min-height: unset !important;
}

/* 4) 下だけ逃がす（見た目の行間は変えない） */
.gray-section .text-bilingual .line {
  padding-bottom: 0.22em !important;
  margin-bottom: -0.22em !important;
}

/* ========================================
   Time Mono Color (White ⇄ Gray ⇄ Black)
======================================== */

:root {
  --mono-lightness: 100%;
}

/* HERO */
.hero-text .char {
  color: hsl(0 0% var(--mono-lightness));
}

/* CONCEPT */
.section-concept .text-bilingual,
.section-concept .text-bilingual *,
.section-concept .text-content,
.section-concept .text-content * {
  color: hsl(0 0% var(--mono-lightness));
}

/* =========================
CONTENT SECTION
========================= */

.content-section {
  position: relative;
  height: auto !important;
  min-height: auto !important;
  padding: 400px 8vw 260px;
}

.content-section,
.gray-section,
.business-card {
  height: auto !important;
}

.content-grid {
  width: 100%;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 120px 120px;
}

.content-item {
  width: 100%;
}

.content-thumb {
  width: 100%;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  position: relative;
}

.content-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform-origin: center center;
  will-change: transform;
}

.content-meta {
  width: 100%;
  margin: 20px 0 0;
  padding-top: 0;
}

.content-name {
  display: block;
  font-size: 14px;
  letter-spacing: 2px;
  color: #fff;
  text-align: left;
}

body {
  position: relative;
}

/* =========================
CONTACT SECTION
========================= */

.contact-section {
  height: auto !important;
  min-height: 120vh;
  margin-top: 15vh;
  padding-top: 160px;
  padding-bottom: 320px;
  padding-left: 8vw;
  padding-right: 8vw;
  position: relative;
}

.contact-inner {
  width: min(1200px, 100%);
  margin: 0 auto;
}

.contact-title {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.18em;
  font-size: 140px;
  letter-spacing: 2px;
  margin: 0 0 80px 0;
  line-height: 0.95;
  color: #fff;
  overflow: visible;
  isolation: isolate;
  margin-left: -14px;
}

/* 画面左の外から伸びる白バー */
.contact-title-bar {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%) scaleX(0);
  transform-origin: left center;
  width: 0;
  height: 0.78em;
  background: #fff;
  z-index: 0;
  pointer-events: none;
}

/* WHAT'S */
.contact-title-fill {
  --fill-progress: 0%;
  position: relative;
  display: inline-block;
  padding: 0.06em 0.14em 0.02em 0.14em;
  font-family: "neue-haas-grotesk-display", sans-serif;
  font-weight: 600;
  font-style: normal;
  color: #fff;
  overflow: hidden;
  z-index: 1;
}

/* バーに合わせて見える黒文字 */
.contact-title-fill::after {
  content: attr(data-text);
  position: absolute;
  top: 0.06em;
  left: 0.14em;
  color: #000;
  white-space: nowrap;
  clip-path: inset(-1px calc(100% - var(--fill-progress) + 1px) -1px -1px);
  z-index: 2;
  pointer-events: none;
}

/* NEXT ? */
.contact-title-next {
  position: relative;
  display: inline-block;
  font-family: "neue-haas-grotesk-display", sans-serif;
  font-weight: 600;
  font-style: normal;
  color: #fff;
  z-index: 1;
}

.contact-text {
  font-size: 23px;
  line-height: 2;
  color: #fff;
  margin-top: 160px;
  margin-bottom: 60px;
  max-width: 820px;
}
.contact-button {
  position: relative;
  display: inline-block;
  padding: 14px 28px;
  border: 1px solid #fff;
  border-radius: 30px;
  font-size: 14px;
  letter-spacing: 1px;
  text-decoration: none;
  overflow: hidden;
  color: #fff;
  background: transparent;
}

/* 左から入る白 */
.contact-button::before {
  content: "";
  position: absolute;
  inset: 0;
  background: #fff;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.35s ease;
  z-index: 0;
}

/* 文字本体 */
.btn-fill {
  position: relative;
  display: inline-block;
  color: #fff;
  z-index: 1;
}

.btn-fill::before {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  color: #000;
  width: 0%;
  overflow: hidden;
  white-space: nowrap;
}

.contact-button:hover .btn-fill::before {
  width: 100%;
  transition-delay: 0.18s;
}

/* hover */
.contact-button:hover::before {
  transform: scaleX(1);
}

/* 矢印 */

/* ボタン（今のままでOK） */

.contact-button {
  position: relative;
  display: inline-block;
  padding: 14px 28px;
  border: 1px solid #fff;
  border-radius: 30px;
  font-size: 14px;
  letter-spacing: 1px;
  text-decoration: none;
  overflow: hidden;
  color: #fff;
}

.apo {
  font-family: "neue-haas-grotesk-display", sans-serif;
}

.contact-cta {
  position: relative;
  display: inline-block;
}

body.contact-page .contact-title,
body.add-page .contact-title {
  display: block;
  font-family: "Warming", sans-serif;
  font-size: clamp(52px, 6.5vw, 92px);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 0.92;
  color: #000;
  margin: 0 0 18px 0;
  overflow: visible;
  isolation: auto;
}

/* テキスト上で出るグレー丸 */
.cursor-gray {
  opacity: 1 !important;
}

.cursor-gray .cursor-ring {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 2px solid #aaa;
  background: rgba(160, 160, 160, 0.15);
}

.links li.no::before {
  background: #fdfdfd;
}

body::after {
  content: "© 2026 WIPING";
  position: absolute;
  bottom: 24px;
  left: 24px;
  font-size: 11px;
  letter-spacing: 3px;
  color: #aaa;
  pointer-events: none;
}

#read-cursor {
  position: fixed;
  left: 0;
  top: 0;
  width: 70px;
  height: 70px;
  border-radius: 50%;
  border: 0px solid;
  pointer-events: none;
  z-index: 10000;
  opacity: 0;

  background: rgba(33, 11, 11, 0.4);

  transition: opacity 0.18s ease, /* ← これを追加 */ transform 0.22s ease,
    /* ← これを追加 */ width 0.25s ease, height 0.25s ease,
    border-radius 0.25s ease, background 0.25s ease, border-color 0.25s ease,
    box-shadow 0.25s ease, backdrop-filter 0.25s ease;

  mix-blend-mode: normal;
  border-color: hsla(var(--ripple-h), var(--ripple-s), 35%, 0.55);
}

#read-cursor.is-active {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.contact-arrow img {
  width: 36px; /* サイズ調整 */
  height: auto;
  display: block;
}

.contact-arrow {
  position: absolute;
  left: 10px;
  bottom: 16px;
  width: 30px;
  height: 42px;
  opacity: 0;
  transform: translate(-40px, 40px);
  pointer-events: none;
  top: 30px;
}

.contact-arrow img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* 戻り復元中は白幕を閉じたままにする */
html.is-restoring #page-fade {
  opacity: 1;
}

/* contactページで戻る時も白幕を閉じる */
body.contact-page.is-leaving #contact-fade {
  opacity: 1;
}



.contact-title-bar {
  transform-origin: left center;
}

/* ====================================
   Clients text marquee
   ==================================== */

   .clients-text {
    opacity: 1 !important;
    position: relative;
    margin: 0 !important;
    text-align: left !important;
    z-index: 3;
  }
  
  .clients-marquee {
    position: relative;
    width: 100vw;
    margin-left: calc(50% - 50vw);
    padding: 24px 0;
    overflow: hidden;
    border: none;
  }
  
  /* グレーと同じ .hr を clients 用に使う */
  .clients-marquee .hr {
    position: absolute;
    left: 0;
    width: 100%;
    height: 1px;
    background: rgba(255, 255, 255, 0.28);
    transform: scaleX(0);
    transform-origin: 100% 50%; /* 右→左 */
    margin: 0;
    z-index: 3;
  }
  
  .clients-hr-top {
    top: 0;
  }
  
  .clients-hr-bottom {
    bottom: 0;
  }
  
  /* 左右フェード */
  .marquee-mask {
    position: absolute;
    top: 0;
    width: 120px;
    height: 100%;
    pointer-events: none;
    z-index: 2;
    transform: scaleX(0);
  }
  
  .marquee-mask.left {
    left: 0;
    background: linear-gradient(to right, #000 0%, rgba(0, 0, 0, 0) 100%);
    transform-origin: left center;
  }
  
  .marquee-mask.right {
    right: 0;
    background: linear-gradient(to left, #000 0%, rgba(0, 0, 0, 0) 100%);
    transform-origin: right center;
  }
  
  .clients-marquee-track {
    display: flex;
    align-items: center;
    width: max-content;
    gap: 70px;
    animation: clientsMarqueeMove 45s linear infinite;
    will-change: transform;
  }
  
  .clients-marquee-track span {
    flex: 0 0 auto;
    display: inline-block;
    white-space: nowrap;
    font-family: "neue-haas-grotesk-display", sans-serif;
    font-size: 90px;
    font-weight: 400;
    line-height: 1;
    letter-spacing: 0.02em;
    color: rgba(255, 255, 255, 0.82);
    text-transform: none;
  }
  
  @keyframes clientsMarqueeMove {
    from {
      transform: translateX(0);
    }
    to {
      transform: translateX(-50%);
    }
  }
  
  /* 旧ロゴグリッド無効化 */
  .clients-list,
  .clients-list li,
  .clients-list li img,
  [class^="logo_"] img,
  [class*=" logo_"] img {
    all: unset;
  }
  
  /* tablet */
  @media (min-width: 768px) and (max-width: 1024px) {
    .clients-marquee {
      padding: 12px 0;
    }
  
    .marquee-mask {
      width: 72px;
    }
  
    .clients-marquee-track {
      gap: 24px;
      animation-duration: 46s;
    }
  
    .clients-marquee-track span {
      font-size: 54px;
      letter-spacing: 0.06em;
    }
  }
  
  /* mobile */
  @media (max-width: 767px) {
    .clients-marquee {
      padding: 12px 0;
    }
  
    .marquee-mask {
      width: 56px;
    }
  
    .clients-marquee-track {
      gap: 20px;
      animation-duration: 42s;
    }
  
    .clients-marquee-track span {
      font-size: 34px;
      letter-spacing: 0.06em;
    }
  }

















/* =========================================
   Windows laptop / small desktop
========================================= */
@media (min-width: 1025px) and (max-width: 1440px) {
  section {
    min-height: 100vh;
  }

  .hero,
  .hero.section-front,
  #chap1 {
    min-height: 100vh;
  }

  .hero-text {
    padding-top: 16vh;
    padding-left: 5vw;
    --fs-base: clamp(28px, 4.6vw, 72px);
    --gap-word: 0.12em;
    --gap-line: 0.02em;
    line-height: 0.9;
  }

  .content-grid {
    width: min(1280px, calc(100% - 10vw));
  }

  .clients-flow {
    width: min(1100px, 92vw);
  }

  .business-card {
    padding: 80px 32px;
  }

  .card-content {
    width: min(560px, 42vw);
    margin-right: 22%;
  }
}

/* =========================================
   Large desktop1366
========================================= */
@media (min-width: 1441px) {
  .hero-text {
    padding-top: 17vh;
    padding-left: 5vw;
  }
}

/* =========================================
   Tablet768
========================================= */

.beam-gap {
  height: 20vh !important;
}


@media (min-width: 768px) and (max-width: 1024px) {
  html,
  body {
    overflow-x: hidden;
  }

  section {
    height: auto;
    min-height: 100svh;
  }

  .hero,
  .hero.section-front,
  #chap1 {
    min-height: 100svh;
  }

  .hero-text {
    padding: 25vh 0 0 4vw;
    --fs-base: clamp(56px, 9.5vw, 110px);
    --gap-word: 0.12em;
    --gap-line: 0.02em;
    --track: -0.01em;
    line-height: 0.9;
  }
  .hero-text .line {
    gap: 0.1em;
    max-width: 92vw;
    white-space: nowrap;
  }

  .hero-text .R,
  .hero-text .word.R {
    top: -0.3em;
    left: -0.14em;
    font-size: calc(var(--fs-base) * 0.62);
    line-height: 1;
  }

  /* =========================
   CONCEPT
========================= */

.section-concept {
  height: auto;

  padding: 60px 0;
  min-height: 65vh; 
}

  .section-concept .text-content {
    width: min(95vw, 920px);
    font-size: clamp(28px, 3.4vw, 38px);
    top:  75%;
  }

  .section-concept .text-bilingual .char.ja,
.gray-section .text-bilingual .char.ja {
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em !important;
}


  /* =========================
   GRAY
========================= */
  .gray-section {
    padding: 64px 24px;
    min-height: auto;
   margin-top: 120px;
  }

  .gray-text .line,
  .section-concept .text-bilingual,
  .gray-section .text-bilingual {
    font-size: clamp(24px, 3vw, 34px);
    line-height: 1.5;
    letter-spacing: 0.02em;
  }

  .gray-media {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px !important;
    margin-top: 32px !important;
    align-items: start !important;
  }
  
  .gray-media-item {
    width: 100% !important;
  }
  
  .gray-media-item img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 3 / 4 !important;
    object-fit: cover !important;
    display: block !important;
  }

  .section-concept .text-bilingual .char.ja,
.gray-section .text-bilingual .char.ja {
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em !important;
}

    /* =========================
     CONTENT GRID
  ========================= */
  .content-section {
    padding: 200px 0px;
  }

  .content-grid {
    width: min(1200px, calc(100% - 8vw));
    gap: 20px;
  }



    /* =========================
   CLIENTS
========================= */
.clients-section {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
}



  .clients-flow {
    width: min(900px, 92vw);
  }

  .clients-list li {
    margin-bottom: 0;
    height: 120px;  
  }

  
.clients-section {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
}

#clients-3d-title {
  display: none !important;
}

.clients-pin {
  place-items: start center !important;
}



.clients-title-movie {
  width: 100% !important;
  max-width:300px !important;
  margin: 0 auto 20px !important;
  display: block !important;
}

.clients-text {
  opacity: 1 !important;
  margin: 0 !important;
}






  /* =========================
     CONTACT SECTION (index)
  ========================= */

  .contact-section {
    margin-top: 0 !important;
    padding: 64px 20px 100px !important;
    min-height: auto !important;
    padding-bottom: 260px !important;
  }

  .contact-inner {
    width: 100% !important;
  }


  .contact-title {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    gap: 0.12em !important;
    white-space: nowrap !important;
    font-size: clamp(56px, 13.5vw, 84px) !important;
    line-height: 0.92 !important;
    margin: 0 0 28px 0 !important;
    letter-spacing: 0 !important;
    margin-left: 0 !important;
  }
  
  .contact-title-fill,
  .contact-title-next {
    display: inline-block !important;
    white-space: nowrap !important;
    line-height: 1 !important;
    flex: 0 0 auto !important;
  }
  
  .contact-title-next {
    margin-top: 0 !important;
  }

  .contact-title-bar {
    height: 4.5rem !important;

  }

  


 

  .contact-text {
    font-size: 14px !important;
    line-height: 1.9 !important;
    margin-top: 50px !important;
    margin-bottom: 26px !important;
    max-width: 100% !important;
  }

  .contact-cta {
    display: inline-flex !important;
    align-items: center !important;
    gap: 10px !important;
  }

  .contact-button {
    padding: 18px 40px !important;   /* ←これが一番効く */
    font-size: 16px !important;
    transform: translateX(40px);
  }

  .contact-arrow {
    width: 20px !important;
    height: 28px !important;
    left: -11px !important;
    top: auto !important;
    bottom: -9px !important;  
    transform: translateX(40px);
  }
  

  .contact-title {
    display: flex !important;
    align-items: center !important;
    position: relative !important;
    line-height: 1 !important;
  }
  
  .contact-title-fill,
  .contact-title-next {
    display: inline-flex !important;
    align-items: center !important;
    line-height: 1 !important;
  }

  .contact-title-fill {
    transform: translateY(0.04em) !important;
  }


/* =========================
   BUSINESS CARD
========================= */
.business-card {
  background: #fff !important;
  padding: 20px 0 0 !important;
  min-height: auto !important;
  height: auto !important;
  display: block !important;
  overflow: visible !important;
  
}



.card-content {
  background: #fff !important;
  width: min(100%, 320px) !important;
  max-width: 320px !important;
  height: auto !important;
  margin: 0 auto !important;
  padding: 18px 16px 16px !important;
  text-align: center !important;
  transform: none !important;
  box-shadow: none !important;
  transform: translateX(-70px) !important;
  
}

.business-card hr {
  border: none !important;
  height: 3px !important;
  background-color: #000 !important;
  width: 92% !important;
  margin: 18px auto 16px !important;
}

.logo {
  font-size: 3.6rem !important;
  line-height: 0.95 !important;
  margin: 10px 0 10px !important;
  letter-spacing: 0 !important;
}

.logo .reg {
  font-size: 1rem !important;
  vertical-align: super !important;
  display: inline-block !important;
  transform: translateY(-0.32em) !important;
}

.address {
  font-size: 0.72rem !important;
  line-height: 1.18 !important;
  margin: 12px 0 !important;
}

.addr-group {
  line-height: 1.12 !important;
  margin-bottom: 4px !important;
}

.tel-group {
  margin-top: 2px !important;
  margin-bottom: 6px !important;
}

.url-group {
  margin-top: 2px !important;
  font-size: 1.18em !important;
}

.icon img {
  width: 2.6rem !important;
}

.slogan {
  font-size: 0.78rem !important;
  margin: 6px 0 0 !important;
}

.detail {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
  transform: translateY(0) !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
  margin-left: -52px !important;
  margin-right: 0 !important;
  gap: 0 !important;
  width: 100% !important;
}

.bc24 {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  margin-top: 60px !important;
  margin-left: -10px !important;
  margin-right: 0 !important;
  flex: 0 0 auto !important;
  font-size: 4.15rem !important;
  font-weight: bold !important;
  color: #fff !important;
  background-color: #000 !important;
  font-family: "STIXTwoText", serif !important;
  line-height: 1 !important;
  padding-left: 13px !important;
  padding-right: 13px !important;
  padding-top: 12px !important;
  padding-bottom: 6px !important;
  transform: rotate(270deg) !important;
  transform-origin: center center !important;
}

.links {
  list-style: none !important;
  padding: 0 !important;
  margin: 4px 0 0 -34px !important;
  width: 178px !important;
  flex: none !important;
  min-width: unset !important;
}

.links li {
  min-height: 14px !important;
  font-size: 0.56rem !important;
  text-align: left !important;
  line-height: 1.2 !important;
}

.contactus {
  border-top: 0.1px solid #000 !important;
  padding-top: 14px !important;
  padding-bottom: 14px !important;
  padding-left: 4px !important;
}

.add {
  border-top: 0.1px solid #000 !important;
  border-bottom: 0.1px solid #000 !important;
  padding-top: 14px !important;
  padding-bottom: 14px !important;
  padding-left: 4px !important;
}

.join {
  padding-top: 14px !important;
  padding-left: 4px !important;
}

.no {
  padding-bottom: 14px !important;
 
  padding-left: 4px !important;
  font-family: "Galvji", system-ui, sans-serif !important;
}

.links li.top-link {

  padding-top: 4px !important;
  padding-bottom: 4px !important;
  padding-right: 4px !important;
  text-align: right !important;
}

.links li.cr-link {
  border-top: 0.1px solid #000 !important;
  padding-top: 4px !important;
  padding-bottom: 4px !important;
  padding-right: 4px !important;
  text-align: right !important;
}

.links li.privacy-policy {

 
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  padding: 4px 4px 4px 0 !important;
  margin: 0 !important;
  font-size: 7.6px !important;
  text-align: right !important;
  font-family: "Galvji", system-ui, sans-serif !important;
}

.barcode {
  margin-top: 26px !important;
  display: flex !important;
  justify-content: center !important;
}

.barcode img {
  width: 74% !important;
  max-width: 210px !important;
  height: auto !important;
  display: block !important;
}


body::after {
  content: "© 2026 WIPING";
  position: absolute;
  bottom: 4px;
  left: 60px;
  font-size: 5px;
  letter-spacing: 2px;
  color: #999;
  pointer-events: none;
}



  .business-card {
    overflow: hidden !important;
  }
  .bg-wrap {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
  }
  
  .bg-left,
  .bg-right {
    position: absolute !important;
    top: 0 !important;
    bottom: 0 !important;
    transform: none !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
  }
  
  .bg-left {
    left: 0 !important;
    width: 35% !important;              /* 34%より少し広げる */
    background-position: left center !important;
  }
  
  .bg-right {
    left: 34.5% !important;             /* 少しだけ重ねる */
    right: 0 !important;
    width: auto !important;
    background-position: center center !important;
  }
  .card-content {
    position: relative !important;
    z-index: 2 !important;
  }

  .contact-shell,
  .cr-shell.cr-two,
  .privacy-shell.privacy-two,
  .add-page .contact-shell {
    grid-template-columns: 1fr;
  }
}





/* =========================================
   MOBILE FINAL OVERRIDE
   390基準で全体を先に安定化
========================================= */
@media (max-width: 767px) {
  html,
  body {
    overflow-x: hidden;
  }

  body::after {
    left: 14px;
    bottom: 14px;
    font-size: 9px;
    letter-spacing: 2px;
  }

  section {
    height: auto !important;
    min-height: auto !important;
  }

  .beam-gap {
    height: 28vh !important;
  }

  /* =========================
     HERO
  ========================= */
  .hero,
  .hero.section-front,
  #chap1 {
    height: 100svh !important;
    min-height: 100svh !important;
  }

  .hero-text {
    padding: 25vh 0 0 4.5vw !important;
    --fs-base: clamp(40px, 11vw, 54px) !important;
    --gap-word: 0.08em !important;
    --gap-line: 0.02em !important;
    --track: -0.015em !important;
    line-height: 0.9 !important;
  }

  .hero-text .line {
    gap: 0.08em !important;
    max-width: 92vw !important;
    white-space: nowrap !important;
  }

  .hero-text .R,
  .hero-text .word.R {
    top: -0.28em;
    left: -0.18em;
    font-size: calc(var(--fs-base) * 0.62);
    line-height: 1;
  }

  /* =========================
     STONES
  ========================= */
  #stones {
    height: 88svh !important;
  }

  #stones .stones-pin {
    width: 92vw !important;
    max-width: none !important;
  }
/* =========================
   CONCEPT
========================= */


.section-concept {
  height: auto;

  padding: 200px 0;
  min-height: 65vh; 
}


.section-concept .content-wrap {
  width: 100% !important;
}

.section-concept .text-bilingual {
  width: 100% !important;
  font-size: clamp(10px, 3.6vw, 14px) !important;
  letter-spacing: 0 !important;
}

.section-concept .text-bilingual .char.ja,
.gray-section .text-bilingual .char.ja {
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em !important;
}




/* =========================
   GRAY
========================= */
.gray-section {
  padding: 56px 20px 64px !important;
  min-height: auto !important;
}

.gray-wrap {
  padding: 0 !important;
}

.gray-text {
  max-width: 100% !important;
}

.gray-text .line,
.gray-section .text-bilingual {
  font-size: clamp(10px, 3.6vw, 14px) !important;
  letter-spacing: 0.01em !important;
}

.gray-bottom-line,
.gray-text p {
  font-size: 8px !important;
  padding: 12px 0 !important;
}

/* ここを2枚横並びに */
.gray-media {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 12px !important;
  margin-top: 32px !important;
  align-items: start !important;
}

.gray-media-item {
  width: 100% !important;
}

.gray-media-item img {
  width: 100% !important;
  height: auto !important;
  aspect-ratio: 3 / 4 !important;
  object-fit: cover !important;
  display: block !important;
}



.gray-text .hr {
  height: 1px !important;
  transform: scaleY(0.2) !important;
}
.section-concept .text-bilingual .char.ja,
.gray-section .text-bilingual .char.ja {
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em !important;
}
  /* =========================
     CONTENT GRID
  ========================= */
  .content-section {
    padding: 40px 20px 50px !important;
    padding-top: 160px !important;
  }




  .content-thumb {
    aspect-ratio: 1 / 1.24 !important;
  }

  .content-meta {
    margin-top: 10px !important;
  }

  .content-name {
    font-size: 10px !important;
    letter-spacing: 0.4px !important;
    line-height: 1.25 !important;
  }

  .content-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
    margin-top: 32px !important;
  }
  
  .content-item {
    width: 100% !important;
  }
  
  /* 画像 */
  .content-item img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: auto !important; 
    object-fit: cover !important;
    display: block !important;
  }
  
  /* =========================
   CLIENTS
========================= */
.clients-section {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw); /* 中央配置を崩さず全幅にする */
}

#clients-3d-title {
  display: none !important;
}

.clients-pin {
  place-items: start center !important;
}

.clients-flow {
  width: min(92vw, 360px) !important;
  margin: 0 auto !important;
}

.clients-title-movie {
  width: 100% !important;
  max-width: 180px !important;
  margin: 0 auto 20px !important;
  display: block !important;
}

.clients-text {
  opacity: 1 !important;
  margin: 0 !important;
}

.clients-list {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 18px 12px !important;
  align-items: center !important;
}
/* ===== Clients mobile: 個別微調整 ===== */

/* ベース */
.clients-list li {
  aspect-ratio: 1 / 1 !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
}

.clients-list li img {
  width: auto !important;
  height: auto !important;
  max-width: 70% !important;
  max-height: 70% !important;
  object-fit: contain !important;
  display: block !important;
  margin: 0 !important;
  transform: translate(0, 0) scale(1) !important;
}

/* 1段目 */
.clients-list .logo_1 img {
  transform: translate(10px, 10px) scale(2.20) !important;
}

.clients-list .logo_2 img {
  transform: translate(10px, 8px) scale(2.20) !important;
}

.clients-list .logo_3 img {
  transform: translate(-8px, -8px) scale(2.20) !important;
}

/* 2段目 */
.clients-list .logo_4 img {
  transform: translate(10px, 10px) scale(0.82) !important;
}

.clients-list .logo_5 img {
  transform: translate(10px, 0px) scale(1.10) !important;
}

.clients-list .logo_6 img {
  transform: translate(-10px, -20px) scale(1.00) !important;
}

/* 3段目 */
.clients-list .logo_7 img {
  transform: translate(5px, -18px) scale(1.08) !important;
}

.clients-list .logo_8 img {
  transform: translate(4px, -50px) scale(0.98) !important;
}

.clients-list .logo_13 img {
  transform: translate(-10px, -2px) scale(1.06) !important;
}

/* 4段目 */
.clients-list .logo_14 img {
  transform: translate(10px, -4px) scale(1.12) !important;
}

.clients-list .logo_15 img {
  transform: translate(2px, -10px) scale(0.96) !important;
}

.clients-list .logo_16 img {
  transform: translate(-5px, -10px) scale(1.02) !important;
}
  /* =========================
     CONTACT SECTION (index)
  ========================= */
  .contact-section {
    margin-top: 0 !important;
    padding: 64px 20px 84px !important;
    min-height: auto !important;
    padding-bottom: 260px !important;
  }

  .contact-inner {
    width: 100% !important;
  }


  .contact-title {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    gap: 0.12em !important;
    white-space: nowrap !important;
    font-size: clamp(40px, 10.5vw, 54px) !important;
    line-height: 0.92 !important;
    margin: 0 0 28px 0 !important;
    letter-spacing: 0 !important;
    margin-left: 0 !important;
  }
  
  .contact-title-fill,
  .contact-title-next {
    display: inline-block !important;
    white-space: nowrap !important;
    line-height: 1 !important;
    flex: 0 0 auto !important;
  }
  
  .contact-title-next {
    margin-top: 0 !important;
  }

  .contact-title-bar {
    height: 2.8rem !important;

  }

  


 

  .contact-text {
    font-size: 9px !important;
    line-height: 1.9 !important;
    margin-top: 36px !important;
    margin-bottom: 26px !important;
    max-width: 100% !important;
  }

  .contact-cta {
    display: inline-flex !important;
    align-items: center !important;
    gap: 10px !important;
  }

  .contact-button {
    padding: 12px 22px !important;
    font-size: 12px !important;
    transform: translateX(20px);
  }

  .contact-arrow {
    width: 15px !important;
    height: 23px !important;
    left: -16px !important;
    top: auto !important;
    bottom: -9px !important;  
    transform: translateX(20px);
  }
  

  .contact-title {
    display: flex !important;
    align-items: center !important;
    position: relative !important;
    line-height: 1 !important;
  }
  
  .contact-title-fill,
  .contact-title-next {
    display: inline-flex !important;
    align-items: center !important;
    line-height: 1 !important;
  }

  .contact-title-fill {
    transform: translateY(0.04em) !important;
  }
/* =========================
   BUSINESS CARD
========================= */
.business-card {
  background: #fff !important;
  padding: 28px 0 10px !important;
  min-height: auto !important;
  height: auto !important;
}


.card-content {
  width: min(100%, 336px) !important;
  max-width: 336px !important;
  height: auto !important;
  margin: 0 auto !important;
  transform: none !important;
  padding: 24px 18px 22px !important;
  box-shadow: none !important;
}

.logo {
  font-size: 2.5rem !important;
  margin: 6px 0 12px !important;
  line-height: 0.95 !important;
}

.logo .reg {
  font-size: 1rem !important;
  transform: translateY(-0.42em) !important;
}

.address {
  font-size: 0.76rem !important;
  line-height: 1.32 !important;
  margin: 12px 0 !important;
}

.icon img {
  width: 2.7rem !important;
}

.slogan {
  font-size: 0.82rem !important;
  margin: 6px 0 !important;
}

.card-content hr {
  width: 92% !important;
  height: 3px !important;
  margin: 18px auto 18px !important;
}

/* =========================
   BUSINESS CARD
========================= */
.business-card {
  background: #fff !important;
  padding: 20px 0 0 !important;
  min-height: auto !important;
  height: auto !important;
  display: block !important;
  overflow: visible !important;
  
}



.card-content {
  background: #fff !important;
  width: min(100%, 320px) !important;
  max-width: 320px !important;
  height: auto !important;
  margin: 0 auto !important;
  padding: 18px 16px 16px !important;
  text-align: center !important;
  transform: none !important;
  box-shadow: none !important;
  transform: translateX(-14px) !important;
  
}

.business-card hr {
  border: none !important;
  height: 3px !important;
  background-color: #000 !important;
  width: 92% !important;
  margin: 18px auto 16px !important;
}

.logo {
  font-size: 3.6rem !important;
  line-height: 0.95 !important;
  margin: 10px 0 10px !important;
  letter-spacing: 0 !important;
}

.logo .reg {
  font-size: 1rem !important;
  vertical-align: super !important;
  display: inline-block !important;
  transform: translateY(-0.32em) !important;
}

.address {
  font-size: 0.72rem !important;
  line-height: 1.18 !important;
  margin: 12px 0 !important;
}

.addr-group {
  line-height: 1.12 !important;
  margin-bottom: 4px !important;
}

.tel-group {
  margin-top: 2px !important;
  margin-bottom: 6px !important;
}

.url-group {
  margin-top: 2px !important;
  font-size: 1.18em !important;
}

.icon img {
  width: 2.6rem !important;
}

.slogan {
  font-size: 0.78rem !important;
  margin: 6px 0 0 !important;
}

.detail {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
  transform: translateY(0) !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
  margin-left: -52px !important;
  margin-right: 0 !important;
  gap: 0 !important;
  width: 100% !important;
}

.bc24 {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  margin-top: 62px !important;
  margin-left:2px !important;
  margin-right: 0 !important;
  flex: 0 0 auto !important;
  font-size: 4.15rem !important;
  font-weight: bold !important;
  color: #fff !important;
  background-color: #000 !important;
  font-family: "STIXTwoText", serif !important;
  line-height: 1 !important;
  padding-left: 13px !important;
  padding-right: 13px !important;
  padding-top: 12px !important;
  padding-bottom: 6px !important;
  transform: rotate(270deg) !important;
  transform-origin: center center !important;
}

.links {
  list-style: none !important;
  padding: 0 !important;
  margin: 4px 0 0 -55px !important;
  width: 178px !important;
  flex: none !important;
  min-width: unset !important;
}

.links li {
  min-height: 14px !important;
  font-size: 0.56rem !important;
  text-align: left !important;
  line-height: 1.2 !important;
}

.contactus {
  border-top: 0.1px solid #000 !important;
  padding-top: 14px !important;
  padding-bottom: 14px !important;
  padding-left: 4px !important;
}

.add {
  border-top: 0.1px solid #000 !important;
  border-bottom: 0.1px solid #000 !important;
  padding-top: 14px !important;
  padding-bottom: 14px !important;
  padding-left: 4px !important;
}

.join {
  padding-top: 14px !important;
  padding-left: 4px !important;
}

.no {
  padding-bottom: 14px !important;
 
  padding-left: 4px !important;
  font-family: "Galvji", system-ui, sans-serif !important;
}

.links li.top-link {

  padding-top: 4px !important;
  padding-bottom: 4px !important;
  padding-right: 4px !important;
  text-align: right !important;
}

.links li.cr-link {
  border-top: 0.1px solid #000 !important;
  padding-top: 4px !important;
  padding-bottom: 4px !important;
  padding-right: 4px !important;
  text-align: right !important;
}

.links li.privacy-policy {

 
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  padding: 4px 4px 4px 0 !important;
  margin: 0 !important;
  font-size: 7.6px !important;
  text-align: right !important;
  font-family: "Galvji", system-ui, sans-serif !important;
}

.barcode {
  margin-top: 26px !important;
  display: flex !important;
  justify-content: center !important;
}

.barcode img {
  width: 74% !important;
  max-width: 210px !important;
  height: auto !important;
  display: block !important;
}


body::after {
  content: "© 2026 WIPING";
  position: absolute;
  bottom: 4px;
  left: 60px;
  font-size: 5px;
  letter-spacing: 2px;
  color: #999;
  pointer-events: none;
}



  .business-card {
    overflow: hidden !important;
  }

  .bg-wrap {
    inset: 0 !important;
  }

  .bg-left {
    width: 34% !important;
    top: 0 !important;
    bottom: 0 !important;
    left: 0 !important;
    transform: none !important;
    background-position: center center !important;
    background-size: cover !important;
  }

  .bg-right {
    left: 34% !important;
    right: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: auto !important;
    height: auto !important;
    transform: none !important;
    background-position: center center !important;
    background-size: cover !important;
  }

  .card-content {
    position: relative !important;
    z-index: 2 !important;
  }
}
  /* =========================
     SUB PAGES
  ========================= */


/* backボタン本体 */
.cr-back,
.contact-back,
.privacy-back {
  position: fixed !important;
  top: 20px !important;
  left: 20px !important;
  z-index: 9999 !important;

  display: inline-block !important;
  padding: 8px 12px !important;

  font-size: 12px !important;
  letter-spacing: 1px !important;
  text-decoration: none !important;
  border-bottom: none !important;

  background: rgba(255, 255, 255, 0.88) !important;
  backdrop-filter: blur(6px) !important;
  -webkit-backdrop-filter: blur(6px) !important;
  border-radius: 4px !important;
}

/* hover */
.cr-back:hover,
.contact-back:hover,
.privacy-back:hover {
  transform: translateX(-4px) !important;
  text-decoration: none !important;
  border-bottom: none !important;
}

/* 左カラムの先頭に十分な逃げを作る */
.contact-left,
.cr-left,
.privacy-left {
  padding-top: 84px !important;
}

/* Addページも同様に上余白を確保 */
.add-page .contact-left {
  padding-top: 84px !important;
}

/* タイトル上の余白を少し整理 */
body.add-page .contact-title,
body.contact-page .contact-title,
.privacy-title,
.cr-title {
  margin-top: 0 !important;
}
/* =========================================
   ADD PAGE / SUB PAGE FIX
   tablet + mobile
========================================= */

/* 既存のbodyコピーライトはサブページでは消す */
body.contact-page::after,
body.add-page::after,
body.privacy-page::after,
body.responsibility-page::after {
  content: none !important;
}

/* main を基準にする */
.contact-shell,
.privacy-shell,
.cr-shell {
  position: relative !important;
}

/* =========================
   TABLET
========================= */
@media (min-width: 768px) and (max-width: 1024px) {
  /* Addページ：縦並び */
  .add-page .contact-shell {
    grid-template-columns: 1fr !important;
  }

  .add-page .contact-left {
    order: 1 !important;
    padding-top: 96px !important;
  }

  .back-btn {
    margin-bottom: 12px !important;
  }

  .contact-title {
    margin-top: 0 !important;
  }


  .add-page .contact-right {
    order: 2 !important;
    margin-top: -100px;
    width: 100vw !important;
    margin-left: calc(50% - 50vw) !important;
  }

  .add-page .map-card {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    height: auto !important;
    aspect-ratio: auto !important;
  }

  .add-page .map-card img {
    width: 100% !important;
    height: auto !important;
    display: block !important;
    object-fit: cover !important;
  }

  /* コピーライト */
  .contact-shell::after,
  .privacy-shell::after,
  .cr-shell::after {
    content: "© 2026 WIPING";
    position: absolute;
    left: 16px;
    bottom: 14px;
    font-size: 9px;
    letter-spacing: 1.6px;
    color: #999;
    pointer-events: none;
    z-index: 5;
  }

  .contact-shell,
  .privacy-shell,
  .cr-shell {
    padding-bottom: 36px !important;
  }
/* 左カラムを中央寄せやめる */
.add-page .contact-left {
  justify-content: flex-start !important;
  padding-top: 72px !important;
}

/* backボタン */
.add-page .cr-back {
  top: 20px !important;
  left: 20px !important;
}

/* タイトル上の余白を消す */
.add-page .contact-title {
  margin-top: 0 !important;
}

/* マップを少し上へ */
.add-page .contact-right {
  margin-top: -340px !important;
}
.responsibility-page .cr-left {
  justify-content: flex-start !important;
  padding-top: 72px !important;
}

.responsibility-page .cr-title {
  margin-top: 0 !important;
}

/* Privacy */
.privacy-page .privacy-left {
  position: relative !important;
  top: auto !important;
  justify-content: flex-start !important;
  padding-top: 72px !important;
}

.privacy-page .privacy-title {
  margin-top: 0 !important;
}

/* Contact */
.contact-page .contact-left {
  justify-content: flex-start !important;
  padding-top: 72px !important;
}

.contact-page .contact-title {
  margin-top: 0 !important;
}

/* Add */
.add-page .contact-left {
  justify-content: flex-start !important;
  padding-top: 72px !important;
}

.add-page .contact-title {
  margin-top: 0 !important;
}

.add-page .contact-right,
.contact-page .contact-right,
.responsibility-page .cr-right,
.privacy-page .privacy-right {
  height: auto !important;
  min-height: 0 !important;
  margin-top: -660px !important; /* 上の隙間を詰める用。強ければ -60px */
  padding-bottom: 0 !important;
  align-items: flex-start !important;
}

/* Addページのマップカードの固定高を解除 */
.add-page .map-card,
.map-card {
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: auto !important;
}

.add-page .map-card img,
.map-card img {
  width: 100% !important;
  height: auto !important;
  display: block !important;
  object-fit: cover !important;
}
}

/* =========================
   MOBILE
========================= */
@media (max-width: 767px) {
  .add-page .contact-shell {
    grid-template-columns: 1fr !important;
  }

  .add-page .contact-left {
    order: 1 !important;
    padding-top: 84px !important;
  }

  .add-page .contact-right {
    order: 2 !important;
    padding-top: 12px !important;
    width: 100vw !important;
    margin-left: calc(50% - 50vw) !important;
  }

  .add-page .map-card {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    height: auto !important;
    aspect-ratio: auto !important;
  }

  .add-page .map-card img {
    width: 100% !important;
    height: auto !important;
    display: block !important;
    object-fit: cover !important;
  }

  .contact-shell::after,
  .privacy-shell::after,
  .cr-shell::after {
    content: "© 2026 WIPING";
    position: absolute;
    left: 14px;
    bottom: 10px;
    font-size: 8px;
    letter-spacing: 1.4px;
    color: #999;
    pointer-events: none;
    z-index: 5;
  }

  .contact-shell,
  .privacy-shell,
  .cr-shell {
    padding-bottom: 28px !important;
  }
}

/* =========================================
   Add page fix : 768px〜900px
   マップをタイトルの下に戻す
========================================= */
@media (min-width: 768px) and (max-width: 900px) {
  .add-page .contact-shell {
    grid-template-columns: 1fr !important;
  }

  .add-page .contact-left {
    order: 1 !important;
    padding-top: 96px !important;
  }

  .add-page .contact-right {
    order: 2 !important;
    padding-top: 24px !important;
    width: 100vw !important;
    margin-left: calc(50% - 50vw) !important;
  }

  .add-page .map-card {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    height: auto !important;
    aspect-ratio: auto !important;
  }

  .add-page .map-card img {
    width: 100% !important;
    height: auto !important;
    display: block !important;
    object-fit: cover !important;
  }
}









/* ========================================
   Boot overlay
======================================== */
#boot-overlay {
  position: fixed;
  inset: 0;
  background: #fff;
  z-index: 1000001;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  visibility: visible;
  transition:
    opacity 0.8s ease,
    visibility 0.8s ease;
  pointer-events: auto;
}

#boot-overlay.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}


/* boot中は見た目のチラつきを抑える */
html.is-booting,
html.is-booting body {
  overflow: hidden;
}

html.is-booting #smooth-content {
  visibility: visible;
  opacity: 1;
}

html.is-booting #boot-overlay {
  visibility: visible;
  opacity: 1;
}

html.boot-ready #smooth-content {
  visibility: visible;
}

/* ========================================
   Boot overlay
======================================== */
#boot-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.9);
  z-index: 1000001;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  visibility: visible;
  transition:
    opacity 1.05s ease,
    visibility 1.05s ease;
  pointer-events: auto;
}

#boot-overlay.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.boot-dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 60px;
}
.boot-dot {
  position: relative;
  width: 20px;
  height: 20px;
  border-radius: 999px;

  overflow: hidden;
  isolation: isolate;
  transform: scale(1);
  will-change: transform, opacity, background-color;
}

.boot-dot-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0%;
  overflow: hidden;
  border-radius: 999px;
  pointer-events: none;
  will-change: width;
}

/* ここが本体
   白い面 + 右側だけ長いグラデーション尾 */
.boot-dot-fill::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: calc(100% + 24px);
  border-radius: 999px;

  background: linear-gradient(
    90deg,
    #ffffff 0%,
    #ffffff 52%,
    rgba(255, 255, 255, 0.98) 58%,
    rgba(255, 255, 255, 0.94) 64%,
    rgba(255, 255, 255, 0.88) 70%,
    rgba(255, 255, 255, 0.78) 76%,
    rgba(255, 255, 255, 0.66) 82%,
    rgba(255, 255, 255, 0.52) 87%,
    rgba(255, 255, 255, 0.38) 91%,
    rgba(255, 255, 255, 0.24) 95%,
    rgba(255, 255, 255, 0.12) 98%,
    rgba(255, 255, 255, 0.0) 100%
  );
}

.boot-dot-sheen {
  display: none;
}

.boot-dot.is-painted {
  background: #ffffff;
}

html.is-booting,
html.is-booting body {
  overflow: hidden;
}

html.is-booting #smooth-content {
  visibility: visible;
  opacity: 1;
}

html.is-booting #boot-overlay {
  visibility: visible;
  opacity: 1;
}

html.boot-ready #smooth-content {
  visibility: visible;
}


