:root {
  --navy: #004098;
  /* メインカラー：濃紺 */
  --vermilion: #E60012;
  /* アクセントカラー：朱色 */
  --ink: #002D6B;
  /* 旧ink: 濃紺の深め */
  --ash: #5A6B8A;
  /* 旧ash: 紺寄りのグレー */
  --warm-white: #FFFFFF;
  /* 純白ベース */
  --cream: #F2F5FA;
  /* 非常に淡いブルー */
  --gold: #A68B52;
  --gold-light: #C4AC78;
  --sage: #7a8c7e;
  --rust: #E60012;
  /* 旧rust: 朱色に置換 */
  --border: rgba(0, 64, 152, 0.15);
  --font-serif: 'Shippori Mincho', 'Noto Serif JP', serif;
  --font-display: 'DM Serif Display', 'Cormorant Garamond', serif;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-serif);
  background: var(--warm-white);
  color: var(--ink);
  overflow-x: hidden;
  line-height: 1.8;
}

/* ========== ヘッダー固定ナビ ========== */
.site-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 40px;
  background: rgba(255, 255, 255, 0.65);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(184, 151, 90, 0.2);
  transition: all 0.4s ease;
}

.nav-logo {
  font-family: var(--font-display);
  font-size: 1.1rem;
  color: var(--gold-light);
  letter-spacing: 0.15em;
  text-decoration: none;
  display: flex;
}

.nav-logo span {
  font-family: var(--font-serif);
  font-size: 0.7rem;
  color: #b0a898;
  display: block;
  letter-spacing: 0.2em;
  margin-top: 2px;
}

.nav-links {
  display: flex;
  gap: 30px;
  align-items: center;
}

.nav-links a {
  color: #c8bfaf;
  font-size: 0.78rem;
  letter-spacing: 0.15em;
  text-decoration: none;
  transition: color 0.3s;
}

.nav-links a:hover {
  color: var(--gold-light);
}

.nav-cta {
  background: var(--gold);
  color: #fff;
  padding: 10px 22px;
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  text-decoration: none;
  transition: background 0.3s;
  border: 1px solid var(--gold);
}

.nav-cta:hover {
  background: transparent;
  color: var(--gold);
}

/* ========== フローティングCTA ========== */
.floating-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 99;
  background: var(--ink);
  display: flex;
  border-top: 2px solid var(--gold);
}

.floating-bar a {
  flex: 1;
  text-align: center;
  padding: 14px 10px;
  color: #fff;
  text-decoration: none;
  font-size: 0.82rem;
  letter-spacing: 0.1em;
  border-right: 1px solid #3a3530;
  transition: background 0.3s;
}

.floating-bar a:last-child {
  border-right: none;
}

.floating-bar a:hover {
  background: #2a2520;
}

.floating-bar a.primary {
  background: var(--gold);
}

.floating-bar a.primary:hover {
  background: var(--gold-light);
}

.floating-bar a small {
  display: block;
  font-size: 0.68rem;
  color: #9a9080;
  margin-top: 2px;
}

.floating-bar a.primary small {
  color: rgba(255, 255, 255, 0.8);
}

/* ========== ヒーローセクション ========== */
.hero {
  min-height: 100vh;
  position: relative;
  display: flex;
  align-items: center;
  background: var(--navy);
  overflow: hidden;
}

.hero-bg {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(160deg, rgba(0, 64, 152, 0.4) 0%, rgba(0, 64, 152, 0.1) 60%, rgba(0, 64, 152, 0.4) 100%),
    url('images/mv.png') center/cover no-repeat;
  animation: heroZoom 20s ease-in-out infinite alternate;
}

@keyframes heroZoom {
  from {
    transform: scale(1);
  }

  to {
    transform: scale(1.05);
  }
}

.hero-ornament {
  position: absolute;
  top: 120px;
  right: 60px;
  width: 200px;
  height: 200px;
  border: 1px solid var(--border);
  transform: rotate(45deg);
  opacity: 0.4;
}

.hero-ornament::before {
  content: '';
  position: absolute;
  inset: 20px;
  border: 1px solid var(--border);
}

.hero-content {
  position: relative;
  z-index: 2;
  padding: 50px 80px 0 120px;
  max-width: 900px;
  animation: heroFadeUp 1.2s ease-out forwards;
  opacity: 0;
  transform: translateY(30px);
}

@keyframes heroFadeUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero-eyebrow {
  font-size: 1rem;
  letter-spacing: 0.35em;
  color: var(--gold-light);
  text-transform: uppercase;
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 16px;
}

.hero-eyebrow::before {
  content: '';
  display: block;
  width: 40px;
  height: 1px;
  background: var(--gold);
}

.hero-badge {
  display: inline-block;
  border: 1px solid var(--gold);
  padding: 6px 16px;
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  color: var(--gold-light);
  margin-bottom: 24px;
}

.hero h1 {
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 5vw, 4rem);
  color: #fff;
  line-height: 1.25;
  font-weight: 300;
  margin-bottom: 10px;
  letter-spacing: 0.03em;
}

.hero h1 em {
  font-style: italic;
  color: var(--gold-light);
}

.hero-sub {
  font-size: 1.2rem;
  color: rgba(255, 255, 255, 0.75);
  font-weight: 300;
  margin-bottom: 40px;
  letter-spacing: 0.12em;
  line-height: 2;
}

.hero-stats {
  display: flex;
  gap: 50px;
  margin-bottom: 50px;
  padding-top: 30px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.hero-stat-num {
  font-family: var(--font-display);
  font-size: 2.8rem;
  color: var(--gold-light);
  line-height: 1;
  letter-spacing: -0.02em;
}

.hero-stat-unit {
  font-size: 1rem;
  color: var(--gold-light);
}

.hero-stat-label {
  font-size: 0.72rem;
  color: #9a9080;
  letter-spacing: 0.15em;
  margin-top: 6px;
}

.hero-cta-group {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: var(--gold);
  color: #fff;
  padding: 18px 36px;
  text-decoration: none;
  font-size: 0.9rem;
  letter-spacing: 0.12em;
  transition: all 0.3s ease;
  border: 2px solid var(--gold);
}

.btn-primary:hover {
  background: transparent;
  color: var(--gold-light);
}

.btn-primary svg {
  width: 16px;
  height: 16px;
}

.btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  border: 1px solid rgba(255, 255, 255, 0.4);
  color: rgba(255, 255, 255, 0.8);
  padding: 18px 30px;
  text-decoration: none;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  transition: all 0.3s ease;
}

.btn-ghost:hover {
  border-color: var(--gold-light);
  color: var(--gold-light);
}

/* ========== ヒーローバッジ（朱色） ========== */
.hero-badge-special {
  position: absolute;
  top: 50%;
  right: 80px;
  transform: translateY(-50%);
  background: var(--vermilion);
  color: #fff;
  padding: 30px;
  border-radius: 12px;
  box-shadow: 0 15px 35px rgba(230, 0, 18, 0.3);
  z-index: 10;
  text-align: center;
  line-height: 1.2;
  animation: badgeFloat 3s ease-in-out infinite;
}

@keyframes badgeFloat {

  0%,
  100% {
    transform: translateY(-50%) translateX(0);
  }

  50% {
    transform: translateY(-55%) translateX(-5px);
  }
}

.hero-badge-special .row-top {
  font-size: 1.4rem;
  font-weight: 700;
  margin-bottom: 5px;
}

.hero-badge-special .row-mid {
  font-size: 3rem;
  font-weight: 900;
  letter-spacing: -0.02em;
}

.hero-badge-special .row-mid span {
  font-size: 1.2rem;
}

.hero-badge-special .row-bottom {
  font-size: 1.2rem;
  font-weight: 700;
  margin-top: 5px;
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  padding-top: 5px;
}

/* ========== エレベーターメニュー ========== */
.elevator-nav {
  position: fixed;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.elevator-link {
  background: var(--navy);
  color: #fff;
  text-decoration: none;
  width: 60px;
  height: 120px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  writing-mode: vertical-rl;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  transition: all 0.3s;
  border-left: 2px solid transparent;
}

.elevator-link:hover {
  background: #fff;
  color: var(--navy);
  border-left: 2px solid var(--navy);
}

.elevator-link.cta {
  background: var(--vermilion);
  height: 180px;
  font-weight: 700;
}

.elevator-link.cta:hover {
  background: #fff;
  color: var(--vermilion);
  border-left: 2px solid var(--vermilion);
}


/* ========== セクション共通 ========== */
section {
  padding: 100px 0;
}

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 50px;
}

.container-wide {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 50px;
}

.section-header {
  text-align: center;
  margin-bottom: 70px;
}

.section-eyebrow {
  font-size: 1.4rem;
  letter-spacing: 0.4em;
  color: var(--gold);
  text-transform: uppercase;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-bottom: 18px;
}

.section-eyebrow::before,
.section-eyebrow::after {
  content: '';
  display: block;
  width: 30px;
  height: 1px;
  background: var(--gold);
}

.section-title {
  font-family: var(--font-serif);
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  font-weight: 500;
  color: var(--ink);
  line-height: 1.5;
  letter-spacing: 0.05em;
}

.section-title em {
  font-style: normal;
  color: var(--gold);
}

.section-lead {
  margin-top: 18px;
  font-size: 0.92rem;
  color: var(--ash);
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
  line-height: 2;
  letter-spacing: 0.05em;
}

/* ========== 創業70年帯 ========== */
.anniversary-band {
  background: var(--navy);
  padding: 60px 0;
  position: relative;
  overflow: hidden;
}

.anniversary-band::before {
  content: '70';
  position: absolute;
  right: -20px;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--font-display);
  font-size: 18rem;
  color: rgba(184, 151, 90, 0.05);
  line-height: 1;
  pointer-events: none;
}

.anniversary-inner {
  display: grid;
  grid-template-columns: 1fr 2px 1fr;
  gap: 60px;
  align-items: center;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 50px;
}

.anniversary-divider {
  background: var(--border);
}

.anniv-left {
  text-align: right;
}

.anniv-year {
  font-family: var(--font-display);
  font-size: 5rem;
  color: var(--gold);
  line-height: 1;
  letter-spacing: -0.03em;
}

.anniv-label {
  font-size: 0.75rem;
  letter-spacing: 0.3em;
  color: #b0a898;
  margin-top: 8px;
}

.anniv-right p {
  font-size: 0.9rem;
  color: #c8bfaf;
  line-height: 2.2;
  letter-spacing: 0.06em;
}

.anniv-right strong {
  color: var(--gold-light);
  font-weight: 400;
}

/* ========== お悩みセクション ========== */
.concerns {
  background: var(--cream);
}

.concerns-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2px;
  margin-top: 50px;
}

.concern-card {
  background: #fff;
  padding: 40px 32px;
  position: relative;
  overflow: hidden;
  transition: transform 0.3s ease;
}

.concern-card:hover {
  transform: translateY(-4px);
}

.concern-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 3px;
  height: 0;
  background: var(--gold);
  transition: height 0.4s ease;
}

.concern-card:hover::before {
  height: 100%;
}

.concern-icon {
  font-size: 2rem;
  margin-bottom: 20px;
  display: block;
}

.concern-card h3 {
  font-size: 1.05rem;
  font-weight: 500;
  margin-bottom: 14px;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--ink);
}

.concern-card p {
  font-size: 0.82rem;
  color: #6a6258;
  line-height: 2;
  letter-spacing: 0.03em;
}

/* ========== 選ばれる理由 ========== */
.reasons {
  background: var(--warm-white);
}

.reasons-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 3px;
}

.reason-item {
  background: #fff;
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 0;
  overflow: hidden;
  transition: box-shadow 0.3s ease;
}

.reason-item:hover {
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.08);
}

.reason-num-col {
  background: var(--ink);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 30px 0;
}

.reason-num {
  font-family: var(--font-display);
  font-size: 2.2rem;
  color: var(--gold);
  line-height: 1;
}

.reason-num-col small {
  font-size: 0.55rem;
  color: #8a8070;
  letter-spacing: 0.2em;
  margin-top: 4px;
  text-transform: uppercase;
}

.reason-body {
  padding: 32px 30px;
}

.reason-body h3 {
  font-size: 1.08rem;
  font-weight: 500;
  margin-bottom: 12px;
  letter-spacing: 0.05em;
  color: var(--ink);
  line-height: 1.5;
}

.reason-body h3 em {
  font-style: normal;
  color: var(--gold);
  font-size: 0.85em;
  display: block;
  font-family: 0.7rem;
  letter-spacing: 0.15em;
  margin-bottom: 4px;
}

.reason-body p {
  font-size: 0.83rem;
  color: #6a6258;
  line-height: 2;
}

/* ========== 制震技術セクション ========== */
.earthquake {
  background: var(--ink);
  position: relative;
  overflow: hidden;
}

.earthquake::before {
  content: 'RESISTANT';
  position: absolute;
  bottom: -30px;
  left: -20px;
  font-family: var(--font-display);
  font-size: 10rem;
  color: rgba(255, 255, 255, 0.03);
  letter-spacing: -0.05em;
  pointer-events: none;
  white-space: nowrap;
}

.earthquake .section-title {
  color: #fff;
}

.earthquake .section-lead {
  color: #b0a898;
}

.earthquake-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 70px;
  align-items: center;
  margin-top: 60px;
}

.earthquake-img {
  position: relative;
}

.earthquake-img-bg {
  width: 100%;
  aspect-ratio: 4/3;
  background:
    linear-gradient(135deg, rgba(184, 151, 90, 0.15) 0%, rgba(26, 23, 20, 0.6) 100%),
    url('https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800&q=80') center/cover;
  position: relative;
}

.earthquake-img-badge {
  position: absolute;
  bottom: -20px;
  right: -20px;
  background: var(--gold);
  padding: 24px 28px;
  text-align: center;
}

.earthquake-img-badge .num {
  font-family: var(--font-display);
  font-size: 2.8rem;
  color: #fff;
  line-height: 1;
}

.earthquake-img-badge .lbl {
  font-size: 0.68rem;
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 0.15em;
  margin-top: 4px;
}

.earthquake-features {
  display: flex;
  flex-direction: column;
  gap: 30px;
}

.eq-feature {
  padding-left: 24px;
  border-left: 2px solid var(--gold);
}

.eq-feature h4 {
  font-size: 1rem;
  color: #fff;
  font-weight: 500;
  margin-bottom: 8px;
  letter-spacing: 0.05em;
}

.eq-feature p {
  font-size: 0.82rem;
  color: #9a9080;
  line-height: 1.9;
}

.eq-feature .highlight {
  color: var(--gold-light);
  font-weight: 500;
}

/* ========== 高性能・断熱セクション ========== */
.performance {
  background: var(--cream);
}

.perf-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
  margin-top: 60px;
}

.perf-card {
  background: #fff;
  padding: 40px 28px;
  text-align: center;
  position: relative;
  overflow: hidden;
  transition: all 0.3s ease;
}

.perf-card:hover {
  background: var(--ink);
}

.perf-card:hover h3,
.perf-card:hover p {
  color: #fff;
}

.perf-card:hover .perf-icon-circle {
  background: var(--gold);
  border-color: var(--gold);
}

.perf-icon-circle {
  width: 64px;
  height: 64px;
  border: 1px solid var(--gold);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 24px;
  font-size: 1.6rem;
  transition: all 0.3s ease;
}

.perf-card h3 {
  font-size: 1rem;
  font-weight: 500;
  margin-bottom: 14px;
  letter-spacing: 0.06em;
  color: var(--ink);
  line-height: 1.5;
  transition: color 0.3s ease;
}

.perf-card p {
  font-size: 0.8rem;
  color: #7a7268;
  line-height: 1.9;
  transition: color 0.3s ease;
}

.perf-main {
  display: none;
}

.perf-main-img {
  background:
    url('https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=800&q=80') center/cover;
  min-height: 400px;
}

.perf-main-body {
  padding: 60px 50px;
}

.perf-main-body h3 {
  font-size: 1.5rem;
  font-weight: 500;
  margin-bottom: 20px;
  line-height: 1.6;
  color: var(--ink);
}

.perf-main-body p {
  font-size: 0.85rem;
  color: #6a6258;
  line-height: 2.2;
  margin-bottom: 16px;
}

.perf-list {
  list-style: none;
  margin-top: 24px;
}

.perf-list li {
  font-size: 0.85rem;
  padding: 10px 0;
  border-bottom: 1px solid #f0ebe3;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  color: var(--ash);
}

.perf-list li::before {
  content: '◆';
  color: var(--gold);
  font-size: 0.6rem;
  margin-top: 5px;
  flex-shrink: 0;
}

/* ========== 直営施工・マイスター ========== */
.craftsmanship {
  background: var(--warm-white);
  position: relative;
  overflow: hidden;
}

.craft-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: center;
}

.craft-text h2 {
  font-family: var(--font-serif);
  font-size: clamp(1.5rem, 2.5vw, 2.1rem);
  font-weight: 500;
  line-height: 1.7;
  margin-bottom: 28px;
  letter-spacing: 0.05em;
}

.craft-text p {
  font-size: 0.87rem;
  color: #6a6258;
  line-height: 2.3;
  margin-bottom: 16px;
}

.craft-visual {
  position: relative;
}

.craft-img-main {
  width: 100%;
  aspect-ratio: 3/4;
  background:
    linear-gradient(180deg, transparent 50%, rgba(26, 23, 20, 0.7) 100%),
    url('https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=700&q=80') center/cover;
  position: relative;
}

.craft-img-overlay {
  position: absolute;
  bottom: 30px;
  left: 30px;
  right: 30px;
  background: rgba(26, 23, 20, 0.85);
  padding: 20px 24px;
  border-left: 3px solid var(--gold);
}

.craft-img-overlay p {
  font-size: 0.82rem;
  color: #c8bfaf;
  line-height: 1.8;
}

.craft-tag {
  display: inline-block;
  background: var(--gold);
  color: #fff;
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  padding: 4px 12px;
  margin-bottom: 10px;
}

.craft-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 36px;
}

.craft-metric {
  padding: 20px;
  border: 1px solid var(--border);
  text-align: center;
  background: #fffdf8;
}

.craft-metric .big {
  font-family: var(--font-display);
  font-size: 2.4rem;
  color: var(--gold);
  line-height: 1;
}

.craft-metric small {
  font-size: 0.65rem;
  letter-spacing: 0.15em;
  color: #9a9080;
  display: block;
  margin-top: 6px;
}

/* ========== 流れ ========== */
.flow {
  background: var(--ink);
}

.flow .section-title {
  color: #fff;
}

.flow .section-lead {
  color: #b0a898;
}

.flow-steps {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  margin-top: 60px;
  position: relative;
}

.flow-steps::before {
  content: '';
  position: absolute;
  top: 42px;
  left: 10%;
  right: 10%;
  height: 1px;
  background: var(--border);
  z-index: 0;
}

.flow-step {
  text-align: center;
  padding: 0 20px;
  position: relative;
  z-index: 1;
}

.flow-step-num {
  width: 56px;
  height: 56px;
  border: 1px solid var(--gold);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 20px;
  background: var(--ink);
}

.flow-step-num span {
  font-family: var(--font-display);
  font-size: 1.3rem;
  color: var(--gold);
}

.flow-step h4 {
  font-size: 0.9rem;
  color: #fff;
  font-weight: 500;
  margin-bottom: 10px;
  letter-spacing: 0.05em;
}

.flow-step p {
  font-size: 0.75rem;
  color: #8a8070;
  line-height: 1.8;
}

/* ========== FAQ ========== */
.faq {
  background: var(--cream);
}

.faq-list {
  max-width: 800px;
  margin: 0 auto;
}

.faq-item {
  background: #fff;
  margin-bottom: 3px;
  overflow: hidden;
}

.faq-q {
  padding: 24px 30px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 16px;
  transition: background 0.3s ease;
  user-select: none;
}

.faq-q:hover {
  background: #f8f5f0;
}

.faq-q-mark {
  width: 32px;
  height: 32px;
  background: var(--ink);
  color: var(--gold);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 1.1rem;
  flex-shrink: 0;
}

.faq-q span {
  font-size: 0.9rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  flex: 1;
}

.faq-arrow {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  transition: transform 0.3s ease;
  color: var(--gold);
}

.faq-item.open .faq-arrow {
  transform: rotate(180deg);
}

.faq-a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease;
}

.faq-item.open .faq-a {
  max-height: 300px;
}

.faq-a-inner {
  padding: 20px 30px 24px 78px;
  font-size: 0.83rem;
  color: #6a6258;
  line-height: 2.1;
  border-top: 1px solid #f0ebe3;
}

/* ========== 無料相談CTA ========== */
.cta-section {
  background: var(--ink);
  position: relative;
  overflow: hidden;
  text-align: center;
  padding: 120px 50px;
}

.cta-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    url('https://images.unsplash.com/photo-1570129477492-45c003edd2be?w=1800&q=80') center/cover;
  opacity: 0.12;
}

.cta-section::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 15%;
  right: 15%;
  border-left: 1px solid var(--border);
  border-right: 1px solid var(--border);
}

.cta-inner {
  position: relative;
  z-index: 1;
}

.cta-inner .section-eyebrow {
  justify-content: center;
  color: var(--gold-light);
}

.cta-inner .section-eyebrow::before,
.cta-inner .section-eyebrow::after {
  background: var(--gold-light);
}

.cta-inner h2 {
  font-family: var(--font-serif);
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  color: #fff;
  font-weight: 400;
  line-height: 1.7;
  margin-bottom: 20px;
  letter-spacing: 0.08em;
}

.cta-inner p {
  font-size: 0.9rem;
  color: #b0a898;
  line-height: 2;
  margin-bottom: 50px;
}

.cta-buttons {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

.btn-cta-white {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: #fff;
  color: var(--ink);
  padding: 20px 42px;
  text-decoration: none;
  font-size: 0.9rem;
  letter-spacing: 0.1em;
  font-family: var(--font-serif);
  font-weight: 500;
  transition: all 0.3s ease;
  border: 2px solid #fff;
}

.btn-cta-white:hover {
  background: transparent;
  color: #fff;
}

.btn-cta-gold {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: transparent;
  color: var(--gold-light);
  padding: 20px 42px;
  text-decoration: none;
  font-size: 0.9rem;
  letter-spacing: 0.1em;
  font-family: var(--font-serif);
  border: 1px solid var(--gold);
  transition: all 0.3s ease;
}

.btn-cta-gold:hover {
  background: var(--gold);
  color: #fff;
}

.cta-note {
  margin-top: 30px;
  font-size: 0.73rem;
  color: #7a7268;
  letter-spacing: 0.1em;
}

/* ========== フッター ==========
footer {
  background: #0e0c0a;
  padding: 60px 50px 100px;
  color: #7a7268;
}

.footer-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 60px;
  align-items: start;
}

.footer-brand .logo-text {
  font-family: var(--font-display);
  font-size: 1.4rem;
  color: var(--gold-light);
  letter-spacing: 0.1em;
  margin-bottom: 6px;
}

.footer-brand .logo-sub {
  font-size: 0.68rem;
  letter-spacing: 0.2em;
  color: #5a5550;
  margin-bottom: 20px;
}

.footer-brand p {
  font-size: 0.75rem;
  line-height: 2;
  color: #6a6258;
}

.footer-col h4 {
  font-size: 0.72rem;
  letter-spacing: 0.25em;
  color: var(--gold);
  text-transform: uppercase;
  margin-bottom: 16px;
}

.footer-col ul {
  list-style: none;
}

.footer-col ul li {
  margin-bottom: 8px;
}

.footer-col ul li a {
  font-size: 0.78rem;
  color: #6a6258;
  text-decoration: none;
  transition: color 0.3s;
  letter-spacing: 0.05em;
}

.footer-col ul li a:hover {
  color: var(--gold-light);
}

.footer-bottom {
  max-width: 1200px;
  margin: 40px auto 0;
  padding-top: 30px;
  border-top: 1px solid #1e1c1a;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.footer-bottom p {
  font-size: 0.7rem;
  color: #4a4540;
  letter-spacing: 0.1em;
}
 */
/* ========== スクロールアニメーション ========== */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-delay-1 {
  transition-delay: 0.1s;
}

.reveal-delay-2 {
  transition-delay: 0.2s;
}

.reveal-delay-3 {
  transition-delay: 0.3s;
}

.reveal-delay-4 {
  transition-delay: 0.4s;
}

.notice {
  list-style: '※';
  color: #fff;
  margin: 0 auto;
  font-size: 85%;
  width: 100%;
  margin: 0 auto;
  text-align: left;
}

/* ========== レスポンシブ ========== */
@media (max-width: 1024px) {
  .hero-content {
    padding: 0 50px 100px;
  }

  .anniversary-inner {
    grid-template-columns: 1fr;
    text-align: center;
  }

  .anniversary-divider {
    display: none;
  }

  .anniv-left {
    text-align: center;
  }

  .earthquake-layout,
  .craft-layout,
  .perf-main {
    grid-template-columns: 1fr;
  }

  .perf-main-img {
    min-height: 300px;
  }

  .flow-steps {
    grid-template-columns: 1fr;
  }

  .flow-steps::before {
    display: none;
  }

  .footer-inner {
    grid-template-columns: 1fr 1fr;
  }


  .concerns-grid,
  .perf-grid {
    grid-template-columns: 1fr;
  }

  .reasons-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .site-nav {
    padding: 14px 20px;
  }

  .nav-links {
    display: none;
  }

  section {
    padding: 70px 0;
  }

  .container,
  .container-wide {
    padding: 0 24px;
  }

  .hero-content {
    padding: 0 24px 90px;
  }

  .hero-stats {
    gap: 24px;
    flex-wrap: wrap;
  }

  .craft-metrics {
    grid-template-columns: 1fr 1fr;
  }

  .footer-inner {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .footer-bottom {
    flex-direction: column;
    gap: 10px;
    text-align: center;
  }

  .cta-buttons {
    flex-direction: column;
    align-items: center;
  }

  .notice {
    list-style: '※';
    color: #fff;
    margin: 0 auto;
    font-size: 85%;
    width: 94%;
    margin: 0 auto;
    text-align: left;
  }
}

/************************************ 
form 
************************************/

/************************************

base

************************************/


.free__area {
  line-height: 1.6;
  margin-bottom: 50px;
}

.free__area p {
  margin-bottom: 30px;
  line-height: 1.6;
}

.content_path {
  font-size: 95%;
  margin-bottom: 50px;
  background: #fafafa;
}

.content_path ul {
  max-width: 1080px;
  margin: auto;
  display: flex;
}

.content_path ul li {
  list-style: none;
  padding: 0.3em 0;
}

.content_path ul li a {
  text-decoration: none;
  color: #000;
}

.content_path ul li:not(:first-child):before {
  content: "／";
  margin: 0 10px;
  color: #aaa;
}

.content_path ul li:not(:first-child) {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#contact {
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
}

.form__title {
  width: 96%;
  max-width: 1080px;
  font-weight: 700;
  font-size: .18rem;
  line-height: 1.4;
  margin: auto;
}

.form__title_en {
  width: 96%;
  max-width: 1080px;
  margin: auto;
  font-size: 280%;
  font-weight: 100;
  font-family: 'Barlow', sans-serif;
  line-height: 1.2em;
  text-transform: uppercase;
}

.form__title_en_70 {
  width: 96%;
  max-width: 1080px;
  margin: auto;
  font-size: 280%;
  font-weight: 100;
  font-family: 'Barlow', sans-serif;
  line-height: 1.2em;
  /*text-transform: uppercase;*/
}

.form__text {
  width: 96%;
  max-width: 1080px;
  margin: 0 auto 30px;
}

.form__text .image {
  background: #f5f5f5;
  margin-bottom: 20px;
}

.form__text h2 {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 30px;
  line-height: 1.6;
}

.form__text h4 {
  font-size: 110%;
  font-weight: bold;
  margin-bottom: 10px;
  line-height: 1.5em;
  color: #004098;
}

.form__text .image.h-collection {
  background: url(/form/images/h-collection/h-collection_bg.webp)no-repeat center;
  background-size: cover;
  height: 500px;
  align-items: center;
  display: flex;
}

.form__text .image.h-collection dl {
  width: 300px;
  margin: auto;
  box-sizing: border-box;
}

.form__text .image.h-collection dl dd {}

.form__text .image.h-collection dl dd img {
  width: 100%;
  box-shadow: 10px 10px 30px #aaa;
  transform: rotate(0deg);
}

.form__text .summer {
  padding: 20px;
  border: 1px solid #c01f1f;
  width: 98%;
  margin: 30px auto;
}

.form__text .summer h6 {
  color: #c01f1f;
  margin-bottom: 1em;
  font-weight: bold;
}

.form__text p {
  margin-bottom: 10px;
}

.catalog_h_img {
  margin-bottom: 30px;
}

.form__group {
  margin-bottom: 50px;
}

.input__group {
  display: flex;
  justify-content: space-between;
  padding: 30px 0;
  border-bottom: 1px #CCC solid;
}

.input__group:last-child {
  border-bottom: none;
}

.border_none {
  border-bottom: none;
}

.input__title {
  width: 28%;
  font-weight: 700;
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 50px 0 0;
  line-height: 1.6;
}

.input__title span {
  display: inline-block;
}

.required:before {
  background: #d8401a;
  color: #FFF;
  content: "必須";
  font-size: 9px !important;
  font-weight: 700;
  position: absolute;
  right: 0;
  text-align: center;
  padding: 2px 6px;
  border-radius: 2px;
}

.any:before {
  border: 1px solid #CCC;
  background: #FFF;
  color: #666;
  content: "任意";
  font-size: 9px !important;
  font-weight: 700;
  position: absolute;
  right: 0;
  text-align: center;
  padding: 2px 6px;
  border-radius: 2px;
}

.input__area {
  width: 70%;
}

.checkbox__list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 10px;
  margin-bottom: 10px;
}

.checkbox__list-tandem {
  display: block;
  flex-wrap: wrap;
  gap: 10px 10px;
  margin-bottom: 10px;
}

.others__checkbox-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 10px;
  margin-bottom: 10px;
  vertical-align: middle;
}

.others__text {
  width: 70%;
}

.others__item {
  display: table-cell;
}

.input-link {
  margin: 20px 0;
}

.radio__list {
  display: block;
  width: 100%;
  flex-wrap: wrap;
  gap: 10px 10px;
  margin-bottom: 10px;
}

.radio__item-grpup {
  margin-top: 10px;
}

.radio__item-grpup-side {
  display: flex;
}

.radio__item-text {
  margin-top: 5px;
  margin-left: 30px;
  max-width: 470px;
}

.radio__item-grpup-side .radio__item-text {
  max-width: 100px;
  margin-left: 0px;
}

.form__area a,
.form__text a {
  text-decoration: unset;
  color: #094098;
  border-bottom: 1px dotted #094098;
  padding-bottom: 0.2em;
}

.form__area a:hover,
.form__text a:hover {
  opacity: .8;
}


@media screen and (max-width: 767px) {
  .input__group {
    display: block;
    padding: 30px 16px;
  }

  .input__title {
    width: 100%;
    margin-bottom: 30px;
  }

  .input__area {
    width: 100%;
  }
}

.date__area {
  margin-bottom: 30px;
}

.input__name {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.input__date {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 20px;
}

.input__subtitle {
  font-size: 12px !important;
  font-weight: 700;
  margin-bottom: 10px;
}

.input__moving {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.address__area {
  margin-bottom: 30px;
}

.zip-text {
  width: 140px;
}

.name-text {
  width: 240px;
}

.city-text {
  width: 240px;
}

.pref-text {
  width: 500px;
}

.mail-text {
  width: 500px;
}

.tel-text {
  width: 500px;
}

.area-text {
  width: 140px;
  display: inline-block;
  margin-right: 10px;
}

.connection-text {
  display: inline-block;
  margin-left: 10px;
  margin-right: 10px;
}

.connection-year {
  width: 80px;
}

.date-calendar {
  width: 200px;
}

.input__name-text {
  width: 100%;
}

.reform_any_text {
  width: 140px;
  display: inline-block;
  margin-right: 10px;
}

.reform_any_full_text {
  width: 500px;
  display: inline-block;
  margin-right: 10px;
}

.input__area-supplement {
  margin-top: 10px;
  font-size: 0.9rem;
  color: #666;
  line-height: 1.6;
}

.input__area-supplement strong {
  color: #000;
}

.form__area input[type="text"],
.form__area input[type="email"],
.form__area input[type="tel"] {
  width: 100%;
  box-sizing: border-box;
  line-height: 2.2;
  background: #EFEFEF;
  border: 1px solid #CCC;
  border-radius: 0;
  box-shadow: none;
  padding: 5px;
  margin-left: -0.25%;
  font-size: 14px;
}

.form__area input[type="date"] {
  font-size: 16px;
  width: 100%;
  box-sizing: border-box;
  line-height: 2;
  background: #EFEFEF;
  border: 1px solid #CCC;
  border-radius: 0;
  box-shadow: none;
  padding: 5px;
  margin-left: -0.25%;
  position: relative;
}

@media screen and (max-width: 767px) {
  .form__area input[type="date"] {
    width: 95%;
  }
}

.form__area input[type="date"]::-webkit-date-and-time-value {
  text-align: left !important;
}

.form__area input[type="date"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
}

.form__area input[type="date"]::-webkit-clear-button {
  -webkit-appearance: none;
}

.form__area input[type=date]::-webkit-calendar-picker-indicator {
  position: absolute;
  width: 100%;
  height: 100%;
}

.form__area input[type=date]::-webkit-calendar-picker-indicator {
  opacity: 0;
}

.form__area select {
  -webkit-appearance: none;
  appearance: none;
  border-radius: 0px;
  color: #000;
  padding: 14px 30px 14px 8px;
  background: #EFEFEF;
  border: 1px solid #CCC;
  background-image: url(../images/select-arrow.svg);
  background-position: calc(100% - 0.5em) 50%;
  background-repeat: no-repeat;
  background-size: 14px 14px;
}

.form__area textarea {
  width: 100%;
  background: #EFEFEF;
  border: 1px solid #CCC;
  padding: 5px;
  line-height: 1.6;
  font-weight: 400;
  font-size: 14px;
}

input[type=checkbox] {
  display: none;
}

.checkbox__item {
  box-sizing: border-box;
  cursor: pointer;
  display: inline-block;
  padding: 5px 10px 5px 30px;
  position: relative;
  width: auto;
  line-height: 1.6;
}

.tandem .checkbox__item {
  width: 100%;
}

.checkbox__item::before {
  background: #EFEFEF;
  border: 1px solid #CCC;
  content: '';
  display: block;
  height: 16px;
  left: 5px;
  margin-top: -8px;
  position: absolute;
  top: 16px;
  width: 16px;
}

input[type=checkbox]:checked+.checkbox__item::before {
  background: #0070BD;
  border: #0070BD 1px solid;
}

.checkbox__item::after {
  opacity: 0;
  border-right: 2px solid #FFF;
  border-bottom: 2px solid #FFF;
  content: '';
  display: block;
  height: 9px;
  left: 10px;
  margin-top: -7px;
  opacity: 0;
  position: absolute;
  top: 16px;
  transform: rotate(45deg);
  width: 5px;

}

input[type=checkbox]:checked+.checkbox__item::after {
  opacity: 1;
}

.error__msg-top {
  margin: 20px 0;
  color: #d8401a;
}

.error__msg {
  margin-top: 20px;
  color: #d8401a;
}

.error__msg::before {
  font-family: "Font Awesome 5 Free";
  font-weight: 600;
  font-size: .16rem;
  content: "\f06a";
  margin: 0 5px 0 0;
}

::placeholder {
  color: #999;
}

input[type=checkbox] {
  -moz-transform: scale(1.6);
  -webkit-transform: scale(1.6);
  transform: scale(1.6);
}


/* ラジオボタン01 */
input[type=radio] {
  display: none;
}

.radio__item {
  box-sizing: border-box;
  cursor: pointer;
  display: inline-block;
  padding: 5px 30px;
  position: relative;
  width: auto;
  line-height: 1.6;
}

.radio__item::before {
  background: #EFEFEF;
  border: 1px solid #CCCCCC;
  border-radius: 50%;
  content: '';
  display: block;
  height: 16px;
  left: 5px;
  margin-top: -8px;
  position: absolute;
  top: 16px;
  width: 16px;
}

.radio__item::after {
  background: #0070BD;
  border-radius: 50%;
  content: '';
  display: block;
  height: 10px;
  left: 9px;
  margin-top: -5px;
  opacity: 0;
  position: absolute;
  top: 17px;
  width: 10px;
}

input[type=radio]:checked+.radio__item::before {
  border-color: #666;
}

input[type=radio]:checked+.radio__item::after {
  opacity: 1;
}

.m_consultation-select {
  width: 100%;
}

@media screen and (max-width: 767px) {
  .form__title {}

  .form__area select {
    width: 100%;
  }

  .zip-text,
  .pref-text,
  .mail-text,
  .tel-text,
  .date-calendar,
  .time-select,
  .reform_any_full_text {
    width: 100%;
  }

  .name-text {
    width: 48%;
  }

  .checkbox__item {
    width: 100%;
  }

  .date-text {
    width: 500px;
  }

  .connection-label {
    display: block;
    margin-bottom: 10px;
  }

  .connection-text {
    margin-left: 0;
    width: 85%;
  }

  .select-moving {
    width: 75%;
  }
}

#Main {
  *padding: 0 10px;
  margin-bottom: 30px;
}

.form__area {
  *padding: 10px;
}

.form__subtitle {
  font-weight: 700;
  font-size: 1.6rem;
  margin-bottom: 30px;
  line-height: 1.6;
  border-bottom: 1px solid #004098;
  padding: 0.5em 0 0.5em 10px;
  border-left: 4px solid #004098;
}

#Contents {
  max-width: 1080px;
  margin: 0 auto;
}

.step__bar {
  display: flex;
  flex-wrap: wrap;
  margin-bottom: 30px;
}

.step__bar .step__item {
  position: relative;
  width: 33%;
  text-align: center;
  position: relative;
  align-items: center;
  justify-content: center;
  padding: 13px 0;
  line-height: 1.5;
  background: #F5F5F5;
  color: #999999;
}

.step__bar .step__item:not(:last-child)::before,
.step__bar .step__item:not(:last-child)::after {
  position: absolute;
  z-index: 2;
  top: 0;
  bottom: 0;
  left: 100%;
  content: '';
  border: 37px solid transparent;
  border-left: 20px solid #F5F5F5;
  margin: auto;
}

.step__bar .step__item:not(:last-child)::before {
  margin-left: 1px;
  border-left-color: #FFF;
}

@media screen and (max-width: 767px) {
  .form__text {
    padding: 0 10px;
    font-size: 12px;
  }

  .step__bar .step__item {
    font-size: 12px;
    line-height: 1.4;
    padding: 10px 0;
  }

  .step__bar .step__item:not(:last-child)::before,
  .step__bar .step__item:not(:last-child)::after {
    border-width: 25px;
    border-left-width: 12px;
  }
}

/* active */
.step__bar .step__item.active {
  z-index: 1;
  background: #004098;
  color: #FFF;
}

.step__bar .step__item.active:not(:last-child)::after {
  border-left-color: #004098;
}

.step__bar .step__item.active:not(:last-child)::before {
  border-left: none;
}

#Footer {
  text-align: center;
  margin-bottom: 30px;
}

.copyright {
  font-size: .12rem;
}

a[target="_blank"]:after {
  font-family: "Font Awesome 5 Free";
  font-weight: 600;
  font-size: 1rem;
  content: "\f35d";
  margin: 0 0 0 10px;
}

.form__btn {
  margin: 60px 0;
  text-align: center;
}

.check__link-btn {
  background: #820000;
  color: #FFF;
  padding: 30px;
  width: 600px;
  /*font-size: 1.2rem;*/
  font-weight: 700;
  border-radius: 8px;
  transition: .3s;
}

.send__link-btn {
  background: #004098;
  color: #FFF;
  padding: 30px;
  width: 600px;
  /*font-size: 1.2rem;*/
  font-weight: 700;
  border-radius: 8px;
  transition: .3s;
}

@media (hover: hover) and (pointer: fine) {
  .check__link-btn:hover {
    opacity: .8;
    transition: .3s;
  }
}

@media screen and (max-width: 767px) {
  .form__btn {
    padding: 0 30px;
  }

  /*.check__link-btn  {
    width:100%;
  }*/
}

.check__group {
  display: flex;
  justify-content: space-between;
  padding: 20px 0;
  border-bottom: 1px #CCC solid;
}

.check__title {
  width: 28%;
  font-weight: 700;
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 0 0 0;
  line-height: 1.6;
}

.check__area {
  width: 70%;
  line-height: 1.6;
}

.check__list {
  margin: 0 0 0 20px;
}

.check__item {
  list-style-type: disc;
  margin-bottom: 20px;
  line-height: 1.6;
}

.send__btn-list {
  text-align: center;
  margin: 60px auto;
}

.send__btn-item {
  width: 48%;
}

/*.send__link-btn  {
  background:#820000;
  color:#FFF;
  padding:30px;
  width:600px;
  font-size: 1rem;
  font-weight: 700;
  border-radius: 8px;
  transition: .3s;
}*/
#contact {
  width: 100%;
  max-width: 1000px;
  margin: 0 auto;
  padding-bottom: 0;
}

@media (hover: hover) and (pointer: fine) {
  .send__link-btn:hover {
    opacity: .8;
    transition: .3s;
  }
}

@media screen and (max-width: 767px) {
  .check__group {
    display: block;
  }

  .check__title {
    width: 100%;
    margin-bottom: 30px;
  }

  .check__area {
    width: 100%;
  }

  .send__link-btn {
    width: 100%;
  }
}

.thanks__area {
  margin: 50px 0;
  padding: 0 10px;
}

.thanks__title {
  text-align: center;
  color: #004098;
  font-size: .20rem;
  font-weight: 700;
  margin-bottom: 50px;
  line-height: 1.6;
}

.thanks__text {
  text-align: center;
  line-height: 1.6;
  margin-bottom: 50px;
}

.toplink__btn {
  margin: 0 auto 0 auto;
  width: 400px;
  color: #FFF;
  text-align: center;
}

.toplink__btn a {
  background: #FFF;
  border: 2px solid #000;
  padding: 0.2rem 0;
  display: block;
  font-size: .20rem;
  font-weight: 700;
  border-radius: 0px;
  transition: .3s;
  color: #000;
  text-decoration: none;
}

@media (hover: hover) and (pointer: fine) {
  .toplink__btn a:hover {
    opacity: .8;
    transition: .3s;
    background: #000;
    color: #FFF;
  }
}

@media screen and (max-width: 767px) {
  .toplink__btn {
    width: 100%;
  }
}


.document__choice-title {
  font-size: .16rem;
  font-weight: 700;
  *border-bottom: 1px dotted #999999;
  margin-bottom: 20px;
  position: relative;
  padding-left: 30px;
}

.document__choice-title:before {
  position: absolute;
  *bottom: 13px;
  left: 0;
  top: 50%;
  width: 20px;
  height: 1px;
  content: '';
  background: #004098;
}

.document__choice-group {
  margin-bottom: 30px;
}

.document__choice-list {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

.document__choice-item {
  width: 32.7%;
  border: 1px #CCC solid;
  margin-bottom: 14px;
}

.document__check-item {
  width: 100%;
  padding: 10px;
  display: block;
  position: relative;
}

.document__choice-list::after {
  content: "";
  display: block;
  width: 32.7%;
}

.document__check-box {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

.document__name {
  position: relative;
  font-size: .14rem;
  width: 100%;
  font-weight: bold;
  border-bottom: 1px dotted #999999;
  padding-bottom: 10px;
  margin-bottom: 10px;
  line-height: 1.6;
  color: #004098
}

.document__name::before {
  content: "";
  width: 20px;
  height: 20px;
  background: #EFEFEF;
  border: 1px solid #CCC;
  display: inline-block;
  vertical-align: top;
  margin-right: 0.5em;
}

input[type=checkbox]:checked+.document__check-box .document__name::before {}

.document__check-box .document__name::after {
  content: "";
  border-bottom: 3px solid #000;
  border-right: 3px solid #000;
  display: block;
  position: absolute;
  top: 0;
  left: 6px;
  width: 7px;
  height: 14px;
  transform: rotate(40deg);
  opacity: 0;
}

input[type=checkbox]:checked+.document__check-box .document__name::after {
  opacity: 1;
}

.document__choice-item .checked {
  background: #d9e7f8;
}

.document__thum {
  width: 100px;
  position: relative;
  overflow: hidden;
  padding: 10px;
  background: #f7f7f7;
  display: flex;
  align-items: center;
  box-sizing: border-box;
}

.document__text {
  width: calc(100% - 120px);
  font-size: .13rem;
  line-height: 1.7;
}

@media screen and (max-width: 1080px) {
  .document__choice-item {
    width: 49.5%;
  }
}

@media screen and (max-width: 767px) {
  .document__choice-item {
    width: 100%;
  }
}

.img__introduction {
  text-align: center;
  margin-bottom: 30px;
}

.check__box div {
  margin-bottom: 20px;
}

.form__supplement-list {
  margin-bottom: 30px;
}

.form__supplement-list li {
  line-height: 1.6;
  margin-bottom: 20px;
}

@media screen and (max-width: 767px) {
  .form__supplement-list li {
    font-size: 14px;
  }
}

.online__free-area {
  margin-bottom: 50px;
}

.online_contents {
  margin-bottom: 80px;
}

.online__free-area h2 {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 30px;
  line-height: 1.6;
}

.online_comtents_title {
  margin: 0 0 30px 0;
  color: #004098;
  display: inline-block;
  border-bottom: 2px solid #004098;
}

.online__free-area p {
  line-height: 1.6;
}

.img__online {
  text-align: center;
  margin-bottom: 30px;
}

.online_flow {
  border-bottom: 1px dotted #000;
  margin-bottom: 30px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.online_flow_step {
  padding-left: 10px;
  width: 10%;
  font-family: 'Jost', sans-serif;
}

.online_flow_step span {
  font-size: 22px;
  padding-left: 5px;
}

.online_flow_text {
  width: 90%;
}

.online_flow_text h3 {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 10px;
  line-height: 1.6;
}

@media screen and (max-width: 767px) {
  .online_flow_step {
    width: 24%;
  }

  .online_flow_text {
    width: 76%;
  }
}

.online_considerations {
  padding: 20px;
  border: 5px solid #eee;
}

.online_considerations h4 {
  text-align: center;
  margin-bottom: 10px;
  font-weight: bold;
  font-size: 14px;
}

.online_considerations p {
  font-size: 14px;
  margin: 0;
}

.online_step4_text {
  margin-bottom: 10px !important;
}

.area_dl {
  display: flex;
  flex-wrap: wrap;
  display: -webkit-box;
  display: -ms-flexbox;
  margin-bottom: 50px;
  width: 100%;
}

.area_dl a[target="_blank"]:after {
  content: "";
}

.area_dl li {
  height: 70px;
  margin: 0px 0px;
}

.area_dl li img {
  height: 100%;
}

.area_dl li span {
  display: block;
  text-align: center;
  padding: 8px 0;
  font-size: 13px;
}

.img__introduction {
  text-align: center;
  margin-bottom: 30px;
}

.online_faq {
  border: 2px solid #eee;
  margin: 0 0 30px 0;
}

.online_faq dt {
  background: #f9f9f9;
  border-bottom: 2px solid #eee;
  padding: 20px 20px 20px 60px;
  box-sizing: border-box;
  position: relative;
}

.online_faq dt::before {
  content: "Q";
  font-size: 170%;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 10px;
  margin: auto;
  font-weight: 100;
  font-family: 'Barlow', sans-serif;
  border: 1px solid #004098;
  border-radius: 200px;
  height: 30px;
  width: 30px;
  text-align: center;
  background: #fff;
  line-height: 1.2em;
  color: #004098;
}

.online_faq dd {
  background: #fff;
  padding: 20px 20px 20px 60px;
  box-sizing: border-box;
  position: relative;
}

.online_faq dd::before {
  content: "A";
  color: #c52c60;
  font-size: 170%;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 10px;
  margin: auto;
  font-weight: 100;
  font-family: 'Barlow', sans-serif;
  height: 30px;
  width: 30px;
  border: 1px solid #c52c60;
  border-radius: 200px;
  text-align: center;
  line-height: 1.2em;
}

.online_faq h3 {
  font-size: 18px;
  font-weight: bold;
}

.online_faq p {
  margin-bottom: 0 !important;
}

.online_form_title {
  border-top: 1px solid #CCC;
  border-bottom: 1px solid #CCC;
  margin-bottom: 50px;
}

.online_form_title h2 {
  font-size: 22px;
  text-align: center;
  font-weight: bold;
  padding: 20px 0;
}

@media screen and (max-width: 767px) {
  .content_path ul {
    width: unset;
    max-width: unset;
    margin: unset;
    overflow-x: scroll;
    word-break: keep-all;
    white-space: nowrap;
    display: flex;
    padding: 0 20px;
  }

  .content_path ul::-webkit-scrollbar {
    display: none;
  }

  .content_path ul li:not(:first-child) {
    /* width: 13em; */
    white-space: unset;
    overflow: unset;
    text-overflow: unset;
  }

  .form__supplement-list li {
    font-size: 14px;
  }

  .area_dl {
    display: block;
  }

  .area_dl li {
    height: auto;
    margin-bottom: 20px;
  }

  .area_dl li img {
    height: 60px;
  }

  .area_dl li span {
    text-align: left;
    margin-left: 10px;
  }

  .online_form_title h2 {
    font-size: 14px;
  }
}

.input_full {
  max-width: 500px;
}

/************************************

pr_contents

************************************/

.pr_contents {
  max-width: 800px;
  margin: 0 auto 60px auto;
}

.pr_item {
  margin-bottom: 30px;
}

.pr_box {
  margin-top: 50px;
  text-align: center;
}

.pr_box_title img {
  max-width: 300px;
  margin-bottom: 50px;
}

.pr_box_text {
  margin-bottom: 50px;
}

.pr_sns_list {
  max-width: 640px;
  margin: 0 auto 50px;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

.pr_sns_item {
  width: 48%;
}

.pr_contents a::after {
  content: '';
}

@media (any-hover: hover) {
  .pr_contents a:hover {
    opacity: .8;
  }
}

@media screen and (max-width: 767px) {
  #Contents {
    padding: 0 14px;
  }

  .pr_box_title img {
    width: 70%;
    margin-bottom: 50px;
  }

  .pr_sns_list {
    display: block;
    text-align: center;
  }

  .pr_sns_item {
    width: 80%;
    margin: 0 auto;
  }

  .pr_sns_item:first-child {
    margin-bottom: 50px;
  }
}

.announcement {
  margin: 30px 0 50px 0;
  border: 1px solid #000;
  padding: 10px;
  box-sizing: border-box;
  border-radius: 5px;
}

.announcement p {
  font-size: 90%;
  line-height: 1.8em;
}

.announcement a {
  font-weight: bold;
  text-decoration: none;
  font-size: 110%;
}


@media screen and (max-width: 767px) {
  .pc {
    display: none;
  }

  .sp {
    display: inline;
  }

  select[name="occupation"],
  select[name="age"],
  select[name="pref"] {
    /* 読みやすさの最低ラインである14pxを確保 */
    font-size: 16px !important;
    height: 42px !important;
    /* 38pxから4px戻して「詰まってる感」を解消 */
    padding: 0 12px !important;
  }
}

/* ========== 来場予約プレゼントバナー ========== */
#reserve-popup {
  position: fixed;
  right: 0;
  top: 75%;
  transform: translateY(-50%) translateX(120%);
  z-index: 9000;
  width: 280px;
  background: #fff;
  border: 2px solid #A68B52;
  border-right: none;
  box-shadow: -4px 0 20px rgba(166, 139, 82, 0.25);
  border-radius: 12px 0 0 12px;
  overflow: hidden;
  /* 初期状態：右にはみ出している */
  opacity: 0;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.7s ease;
}

/* 表示状態 */
#reserve-popup.popup-show {
  transform: translateY(-50%) translateX(0);
  opacity: 1;
}

/* バナー上部のゴールドライン */
#reserve-popup::before {
  content: '';
  display: block;
  height: 4px;
  background: linear-gradient(90deg, #A68B52, #E2C97E, #A68B52);
}

/* 閉じるボタン */
#reserve-popup-close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 22px;
  height: 22px;
  background: rgba(0, 64, 152, 0.07);
  border: 1px solid rgba(0, 64, 152, 0.25);
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s;
  flex-shrink: 0;
}

#reserve-popup-close::before,
#reserve-popup-close::after {
  content: '';
  position: absolute;
  width: 10px;
  height: 1px;
  background: #004098;
}

#reserve-popup-close::before {
  transform: rotate(45deg);
}

#reserve-popup-close::after {
  transform: rotate(-45deg);
}

#reserve-popup-close:hover {
  background: rgba(0, 64, 152, 0.12);
}

/* バナー本体 */
.reserve-popup-inner {
  padding: 16px 14px 18px;
  text-align: center;
}

/* 来場予約ラベル */
.reserve-popup-label {
  display: inline-block;
  font-size: 0.6rem;
  letter-spacing: 0.18em;
  color: #A68B52;
  border: 1px solid #A68B52;
  padding: 3px 9px;
  margin-bottom: 8px;
  text-transform: uppercase;
}

/* メインテキスト */
.reserve-popup-main {
  font-family: var(--font-serif);
  font-size: 0.82rem;
  font-weight: 500;
  color: orange;
  line-height: 1.65;
  letter-spacing: 0.04em;
  margin-bottom: 8px;
}

.reserve-popup-main strong {
  display: block;
  font-size: 1.05rem;
  color: orange;
  line-height: 1.3;
  margin-bottom: 4px;
}
.large{font-size:30px;}
/* お食事券強調バッジ */
.reserve-popup-gift {
  background: orange;
  border: 1px solid rgba(0, 64, 152, 0.2);
  border-radius: 6px;
  padding: 7px 8px;
  margin: 8px 0 10px;
}

.reserve-popup-gift .gift-amount {
  font-family: var(--font-display);
  font-size: 1.25rem;
  color: #fff;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.02em;
}

.reserve-popup-gift .gift-label {
  font-size: 0.65rem;
  color: #fff;
  letter-spacing: 0.08em;
  margin-top: 3px;
}

/* 期限 */
.reserve-popup-period {
  font-size: 0.7rem;
  color: #666;
  letter-spacing: 0.05em;
  margin-bottom: 12px;
  line-height: 1.6;
}

/* CTAボタン */
.reserve-popup-btn {
  display: block;
  background: linear-gradient(90deg, #A68B52, #E2C97E, #A68B52);
  color: #fff;
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 10px 8px;
  border-radius: 4px;
  transition: background 0.25s, transform 0.2s;
  box-shadow: 0 4px 12px rgba(0, 64, 152, 0.3);
}

.reserve-popup-btn:hover {
  background: linear-gradient(90deg, #E2C97E, #A68B52, #E2C97E);
  transform: translateY(-1px);
}

.reserve-popup-btn::after {
  content: ' →';
}

/* ========== SP（スマホ）：画面下部 縦並び ========== */
@media screen and (max-width: 767px) {
  #reserve-popup {
    /* PC用の右端フロートをリセット */
    right: auto;
    top: auto;
    transform: translateY(120%);
    /* 下から入る */
    bottom: 68px;
    /* sticky CTAの上 */
    left: 50%;
    translate: -50% 0;
    width: 80%;
    border-radius: 12px;
    border: 2px solid #A68B52;
    border-right: 2px solid #A68B52;
    box-shadow: 0 4px 20px rgba(166, 139, 82, 0.25), 0 8px 30px rgba(0, 0, 0, 0.12);
  }

  #reserve-popup.popup-show {
    transform: translateY(0);
    opacity: 1;
  }

  #reserve-popup::before {
    height: 4px;
  }

  /* 縦並びに戻す（PCと同じ） */
  .reserve-popup-inner {
    display: block;
    padding: 16px 14px 16px;
    text-align: center;
  }

  .reserve-popup-label {
    display: inline-block;
  }

  .reserve-popup-main {
    font-size: 0.8rem;
    margin-bottom: 8px;
  }

  .reserve-popup-main strong {
    font-size: 1rem;
    margin-bottom: 4px;
  }

  .reserve-popup-gift {
    display: block;
    padding: 7px 8px;
    margin: 8px 0 10px;
    border-radius: 6px;
  }

  .reserve-popup-gift .gift-amount {
    font-size: 1.2rem;
  }

  .reserve-popup-gift .gift-label {
    font-size: 0.8rem;
    margin-top: 3px;
    color: #fff;
  }

  .reserve-popup-period {
    display: block;
    margin-bottom: 12px;
  }

  .reserve-popup-btn {
    display: block;
    font-size: 0.9rem;
    padding: 10px 8px;
    white-space: normal;
    margin-bottom: 4px;
  }

  #reserve-popup-close {
    top: 8px;
    right: 8px;
    transform: none;
  }
}