/* ==========================================================================
   ISO 30414 Horizontal Scroll Website
   Based on Figma Design - Dark Navy Theme
   ========================================================================== */

/* CSS Custom Properties - Matching Figma Design Exactly */
:root {
  /* Colors from Figma (exact values) */
  --c-iso-01: #182346;
  /* Main navy */
  --c-iso-02: #084492;
  /* Blue accent */
  --c-iso-03: #6b380a;
  /* Brown accent */
  --c-gold: #C2BE71;
  /* Gold/yellow accent */
  --c-white: #FFFFFF;
  --c-navy-dark: #041036;
  /* Darker navy for gradients */
  --c-gray: #313f50;
  /* Gray navy */
  --c-gray-light: #c0c1c6;
  --c-text: #262626;

  /* Legacy color mappings */
  --color-navy-dark: var(--c-iso-01);
  --color-navy: #11305F;
  --color-gold: var(--c-gold);
  --color-blue: var(--c-iso-02);
  --color-white: var(--c-white);
  --color-gray-light: #F5F5F5;
  --color-gray: #9F9F9F;
  --color-text: var(--c-text);

  /* Typography - Matching Figma fonts */
  --font-jp: 'noto-sans-cjk-jp', sans-serif;
  --font-jp-serif: 'dnp-shuei-nmincho-std', 'Noto Serif JP', serif;
  --font-en: 'League Spartan', sans-serif;
  --font-en-serif: 'Sorts Mill Goudy', serif;

  /* Spacing */
  --section-padding: 100px;
  --content-max-width: 1200px;

  /* Transitions */
  --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-fast: all 0.15s ease;
}

/* Reset & Base */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
  overflow-x: hidden;
}

body {
  font-family: var(--font-jp);
  font-weight: 400;
  line-height: 1.8;
  color: var(--color-text);
  background-color: var(--color-navy-dark);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body.menu-open {
  overflow: hidden;
}

/* ==========================================================================
   Adobe Fonts Loading - FOUT防止
   ========================================================================== */
.wf-loading body {
  opacity: 0;
}

.wf-active body,
.wf-inactive body {
  opacity: 1;
  transition: opacity 0.3s ease;
}

/* Remove default styles */
ul,
ol {
  list-style: none;
}

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

img {
  max-width: 100%;
  height: auto;
  display: block;
}

button {
  border: none;
  background: none;
  cursor: pointer;
  font-family: inherit;
}

/* ==========================================================================
   Header - Figma Design Match (1280x76px)
   ========================================================================== */
.header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 76px;
  background: transparent;
  z-index: 1000;
  display: flex;
  align-items: center;
  padding: 0 30px;
}

.header__logo {
  display: flex;
  align-items: baseline;
  gap: 4px;
  cursor: pointer;
  outline: none !important;
}

.header a,
.header button,
.header a:focus,
.header button:focus {
  outline: none !important;
  box-shadow: none !important;
}

.header__logo-iso {
  font-family: var(--font-en);
  font-size: 22px;
  font-weight: 600;
  color: var(--c-white);
  line-height: 1.3;
  font-feature-settings: "palt";
}

.header__logo-divider {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 16px;
  color: var(--c-white);
  line-height: 1.3;
  font-feature-settings: "palt";
}

.header__logo-text {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 16px;
  color: var(--c-white);
  line-height: 1.3;
  font-feature-settings: "palt";
}

.header__divider {
  width: 1px;
  height: 30px;
  background: rgba(255, 255, 255, 0.5);
  margin: 0 27px;
}

.header__nav {
  margin-left: 3px;
}

.header__nav-list {
  display: flex;
  align-items: center;
  gap: 15px;
}

.header__nav-list li a {
  font-family: var(--font-jp);
  font-size: 13px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.5;
  transition: var(--transition-fast);
  position: relative;
}

.header__nav-list li a::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--c-white);
  transition: width 0.3s ease;
}

.header__nav-list li a:hover::after {
  width: 100%;
}

.header__actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-10px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.header--scrolled .header__actions {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

.header__nav-link {
  font-family: var(--font-jp);
  font-size: 13px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.5;
  transition: var(--transition-fast);
  margin-right: 15px;
  position: relative;
}

.header__nav-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--c-white);
  transition: width 0.3s ease;
}

.header__nav-link:hover::after {
  width: 100%;
}

.header__cta {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 120px;
  height: 30px;
  padding: 0;
  font-family: var(--font-jp);
  font-size: 13px;
  font-weight: 400;
  color: var(--c-white);
  letter-spacing: 0.1em;
  transition: var(--transition-fast);
  white-space: nowrap;
  border: 1px solid transparent;
}

.header__cta--blue {
  background: var(--c-iso-02);
}

.header__cta--blue:hover {
  background: transparent;
  border-color: var(--c-white);
  color: var(--c-white);
}

.header__cta--brown {
  background: #A29D2C;
}

.header__cta--brown:hover {
  background: transparent;
  border-color: var(--c-white);
  color: var(--c-white);
}

.header__hamburger {
  display: none;
  width: 30px;
  height: 20px;
  flex-direction: column;
  justify-content: space-between;
}

.header__hamburger span {
  display: block;
  width: 100%;
  height: 2px;
  background: var(--c-white);
  transition: var(--transition-smooth);
}

/* ==========================================================================
   Progress Indicator
   ========================================================================== */
.progress-indicator {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: rgba(255, 255, 255, 0.1);
  z-index: 999;
}

.progress-indicator__bar {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--color-gold), var(--color-blue));
  transition: width 0.1s ease;
}

/* ==========================================================================
   Horizontal Scroll Container - GPU Optimized
   ========================================================================== */
.horizontal-scroll {
  position: relative;
  width: 100%;
  height: 100vh;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  /* GPU acceleration for smooth scrolling */
  will-change: scroll-position;
  transform: translateZ(0);
  backface-visibility: hidden;
  /* Hide scrollbar */
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.horizontal-scroll::-webkit-scrollbar {
  height: 0;
  display: none;
}

.horizontal-scroll__track {
  display: flex;
  height: 100%;
  /* GPU acceleration for smooth scrolling */
  transform: translateZ(0);
  backface-visibility: hidden;
}

/* ==========================================================================
   Section Base Styles
   ========================================================================== */
.section {
  flex-shrink: 0;
  width: 100vw;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  position: relative;
  display: flex;
  align-items: start;
  justify-content: center;
  scroll-snap-align: start;
  overflow: hidden;
}

.section__bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}

.section__bg--dark {
  background: #111831;
}

.section__bg--white {
  background: var(--color-white);
}

.section__bg--gradient {
  background: linear-gradient(135deg, var(--color-navy-dark) 0%, var(--color-navy) 100%);
}

.section__bg--gradient-light {
  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
}

.section__content {
  position: relative;
  z-index: 1;
  max-width: var(--content-max-width);
  padding: 0 var(--section-padding);
  width: 100%;
}

/* ==========================================================================
   Typography
   ========================================================================== */
.section__heading {
  margin-bottom: 40px;
}

.section__heading-sub {
  display: block;
  font-size: 18px;
  font-weight: 400;
  color: var(--color-white);
  margin-bottom: 16px;
  opacity: 0.9;
}

.section__heading-main {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: clamp(28px, 4vw, 48px);
  font-weight: 400;
  line-height: 1.24;
  color: var(--color-white);
}

.section__heading--dark .section__heading-main {
  color: var(--color-navy-dark);
}

.section__heading--white .section__heading-main {
  color: var(--color-white);
}

.section__lead {
  font-size: 24px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--color-text);
  max-width: 500px;
  margin-bottom: 79px;
  font-feature-settings: "palt";
  letter-spacing: 0.02em;
}

.section__text {
  font-size: 15px;
  line-height: 1.9;
  max-width: 700px;
}

.section__text--white {
  color: rgba(255, 255, 255, 0.9);
}

/* ==========================================================================
   Hero Section - Full viewport height (100vh)
   ========================================================================== */
.section--hero {
  width: 100vw;
  min-width: 1280px;
  height: 100vh;
  min-height: 700px;
  padding-top: 76px;
  box-sizing: border-box;
  position: relative;
  overflow: hidden;
}

.section--hero .section__bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--c-iso-01);
  z-index: 0;
}

.hero__bg-pattern {
  position: absolute;
  top: 0;
  right: 0;
  width: 50%;
  height: 100%;
  background: url('../img/fv_pattern.png') center/cover no-repeat;
}

.section--hero .section__content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  max-width: none;
  padding: 0 0 0 100px;
  margin-top: 142px;
  height: 100%;
}

.hero__title {
  margin-bottom: 70px;
}

.hero__title-line {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 70px;
  font-weight: 400;
  font-style: normal;
  color: var(--c-white);
  line-height: 1.15;
  white-space: nowrap;
  font-feature-settings: "palt";
}

.hero__info-row {
  display: flex;
  align-items: flex-start;
  gap: 0;
}

.hero__description {
  width: 411px;
  flex-shrink: 0;
}

.hero__description-border {
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  margin-bottom: 9px;
}

.hero__description-border-bottom {
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  margin-top: 9px;
}

.hero__description p {
  font-family: var(--font-jp);
  font-size: 16px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.5;
  text-align: justify;
  font-feature-settings: "palt";
}

.hero__badges {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 15px 18px;
  background: var(--c-white);
  flex-shrink: 0;
  margin-left: 20px;
  height: 100%;
}

.hero__badges img {
  height: 84px;
  width: auto;
}

.hero__cta-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 35px;
  margin-bottom: 147px;
}

.hero__cta-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 276px;
  height: 44px;
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 400;
  color: var(--c-white);
  letter-spacing: 0.1em;
  transition: var(--transition-fast);
  border: 1px solid transparent;
}

.hero__cta-btn--primary {
  background: var(--c-iso-02);
}

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

.hero__cta-btn--secondary {
  background: #A29D2C;
}

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

.hero__scroll-arrow {
  display: flex !important;
  align-items: center;
  justify-content: center;
  margin-left: 57px;
  background: rgba(24, 35, 70, 0.6);
  border-radius: 8px;
}

.hero__scroll-arrow img {
  display: block !important;
  width: 400px;
  height: auto;
}

/* Fixed Corporate Site Button */
.corporate-fixed-btn {
  position: fixed;
  bottom: 30px;
  left: 30px;
  z-index: 999;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 12px;
  letter-spacing: -0.05em;
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  border: 1px solid rgba(255, 255, 255, 0.5);
  backdrop-filter: blur(10px);
  transition: var(--transition-fast);
}

.corporate-fixed-btn:hover {
  background: #182346;
  border-color: var(--c-white);
}

.section__scroll-hint {
  position: absolute;
  bottom: 40px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  color: var(--color-white);
  opacity: 0.7;
  animation: bounce 2s infinite;
}

.section__scroll-hint span {
  font-size: 12px;
  letter-spacing: 0.1em;
}

.scroll-arrow {
  width: 1px;
  height: 40px;
  background: var(--color-white);
  position: relative;
}

.scroll-arrow::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 8px;
  height: 8px;
  border-right: 1px solid var(--color-white);
  border-bottom: 1px solid var(--color-white);
  transform: translateX(-50%) rotate(45deg);
}

@keyframes bounce {

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

  40% {
    transform: translateX(-50%) translateY(-10px);
  }

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

/* ==========================================================================
   Navigation Divider Sections - Figma Design Match
   ========================================================================== */
.section--nav-divider {
  width: 700px;
  min-width: 700px;
}

.nav-divider {
  text-align: left;
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding-left: 50px;
  margin-top: 93px;
}

.nav-divider__line {
  width: 463px;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  /* margin-bottom: 20px; */
}

.nav-divider__number {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 30px;
  font-weight: 400;
  color: #FFFFFF;
  margin-bottom: 30px;
  letter-spacing: 0.05em;
}

.nav-divider__title {
  font-family: var(--font-jp-serif);
  font-size: 60px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.3;
}

.nav-divider__title--large {
  font-size: 60px;
  line-height: 1.3;
}

/* Generic Sticky Navigation Wrapper Effect */
.nav-sticky-wrapper {
  /* This wrapper's width determines how long the nav section stays sticky. */
  /* Width = nav-divider width (700px) + visual gap (100px) based on user feedback */
  width: 800px;
  flex-shrink: 0;
  position: relative;
}

.nav-sticky-wrapper>.section--nav-divider {
  position: sticky;
  left: 0;
  z-index: 1;
  padding-right: 150px;
  box-sizing: border-box;
}

/* Sections that scroll OVER the sticky nav sections */
.nav-sticky-wrapper+.section--problem,
.nav-sticky-wrapper+.section--service-main,
.nav-sticky-wrapper+.section--cases,
.nav-sticky-wrapper+.section--professionals {
  margin-left: -100px;
  /* User-provided value that works visually */
  position: relative;
  z-index: 2;
}


/* ==========================================================================
   Problem Cards
   ========================================================================== */
.section--problem {
  width: 1527px;
  min-width: 1527px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
}

.section__bg--problem {
  background: #132D5D;
}

.section--problem .section__content {
  display: flex;
  gap: 103px;
  align-items: flex-start;
  padding-left: 119px;
  padding-right: 100px;
  max-width: none;
  margin-top: 142px;
  font-feature-settings: "palt";
}

.problem__left {
  flex-shrink: 0;
  width: 560px;
}

.problem__left .section__heading {
  margin-bottom: 48px;
}

.problem__right {
  margin-top: 8px;
  flex-shrink: 0;
}

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

.section__heading--white .section__heading-main {
  color: var(--c-white);
}

.problem__lead {
  margin-bottom: 73px;
  max-width: 700px;
}

.problem-cards {
  display: flex;
  flex-direction: column;
  gap: 23px;
  margin-top: 0;
}

.problem-cards__row {
  display: flex !important;
  flex-direction: row !important;
  gap: 50px;
  flex-wrap: nowrap !important;
  align-items: flex-start;
}



.problem-card {
  width: 303px;
  min-width: 303px;
  flex-shrink: 0;
  padding: 0;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
}

.problem-card__border {
  width: 60px;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  margin-bottom: 10px;
}

.problem-card__title {
  font-size: 20px;
  font-weight: 500;
  color: var(--color-white);
  margin-bottom: 0px;
}

.problem-card__text {
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--c-white);
  font-feature-settings: "palt";
}

/* ==========================================================================
   Service Background Image Section
   ========================================================================== */
.section--service-bg {
  width: 100vw;
  min-width: 100vw;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.service-bg__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* New standalone section for the service background */
.section--service-bg-image {
  width: 100vh;
  /* Adjusted to be more square-like */
  padding-top: 76px;
  box-sizing: border-box;
}

.section--service-bg-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ==========================================================================
   Service Main Section (Combined Solution + Certainties)
   ========================================================================== */
.section--service-main {
  width: 1814px;
  min-width: 1814px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
}

.section__bg--service {
  background: #182346;
}

.section--service-main .section__content {
  max-width: none;
  padding: 145px 80px 0 120px;
  font-feature-settings: "palt";
}

.service-main__layout {
  display: flex;
  gap: 98px;
  align-items: flex-start;
}

.service-main__left {
  flex-shrink: 0;
  width: 655px;
}

.service-main__heading {
  margin-bottom: 89px;
}

.service-main__heading-line {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.2;
}

.service-main__border {
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  margin-bottom: 11px;
}

.service-main__lead {
  font-family: var(--font-jp);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--c-white);
  margin-bottom: 16px;
  font-feature-settings: "palt";
}

.service-main__text {
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--c-white);
  font-feature-settings: "palt";
}

.service-main__right {
  flex: 1;
}

.service-main__certainties-label {
  font-family: var(--font-jp);
  font-size: 24px;
  font-weight: 500;
  color: var(--c-white);
  margin-bottom: 38px;
}

.service-main__certainties-grid {
  display: flex;
  gap: 0;
  margin-top: -5px;
}

.service-main__certainty-card {
  flex: 0 0 280px;
  background: transparent;
  padding: 0px 20px;
  border-left: 1px solid rgba(255, 255, 255, 0.5);
}

.service-main__certainty-card:last-child {
  padding-right: 0;
}

.service-main__certainty-number {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 30px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.9);
  margin-bottom: -1px;
  letter-spacing: 0.05em;
  margin-top: -15px;
}

.service-main__certainty-title {
  font-family: var(--font-jp);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  min-height: 80px;
  margin-bottom: 76px;
}

.service-main__certainty-border {
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.2);
  margin: 24px 0;
}

.service-main__certainty-text {
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--c-white);
  font-feature-settings: "palt";
}

/* ==========================================================================
   Why + Comparison Section (Combined with fixed background)
   ========================================================================== */
/* ==========================================================================
   Section 7 & 9 Combined: Why ITSUDATSU + Awards (Unified Fixed BG)
   ========================================================================== */
.section--why-awards {
  width: 3269px;
  /* 200vw + 140vw */
  min-width: 3269px;
  /* 2400px + 1800px */
  height: 100vh;
  padding-top: 0px;
  position: relative;
  background-color: #182346;
  overflow: visible;
  /* Required for position: sticky to work */
  /* transform: none; Ensure no transform context if inherited */
  display: flex;
  align-items: center;
  justify-content: flex-start;
  /* Changed from center to allow sticky flow */
}

.why-awards__bg {
  position: sticky;
  /* Changed from absolute */
  left: 0;
  top: 0;
  width: 100vw;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  pointer-events: none;
  flex-shrink: 0;
  margin-right: -100vw;
  /* Allow overlay to overlap */
}

.why-awards__track {
  position: relative;
  z-index: 1;
  display: flex;
  height: 100%;
  width: 100%;
  padding-left: 0;
  gap: 0;
  /* Align with sticky bg start */
}

.why-awards__area {
  height: 100%;
  align-items: flex-start;
  /* Changed from center */
  justify-content: center;
  position: relative;
  border: none;
  outline: none;
  margin: 0;
  flex-shrink: 0;
  box-sizing: border-box;
}

.why-awards__content {
  position: relative;
  width: 100%;
  max-width: var(--content-max-width);
}

/* Area 1: Why + Comparison (Overlay #313F50 0.5) */
.why-awards__area--why {
  width: calc(1777px + 0.5px);
  min-width: calc(1777px + 0.5px);
  background: rgba(49, 63, 80, 0.5);
}

.why-awards__area--why .why-awards__content {
  display: flex;
  align-items: flex-start;
  /* Changed from center */
  gap: 100px;
  max-width: none;
  padding: 0 100px 0 118px;
  margin-top: 221px;
  /* 145px + 76px header */
  font-feature-settings: "palt";
}

.why-comparison__heading {
  flex-shrink: 0;
  width: 431px;
}

.why-comparison__table {
  flex: 1;
  margin-top: -130px;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .why-comparison__table {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .why-comparison__table {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .why-comparison__table {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .why-comparison__table {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .why-comparison__table {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .why-comparison__table {
    transform: scale(0.6);
  }
}

/* New Comparison Table */
.comparison-new {
  background: transparent;
  border-radius: 0;
  overflow: hidden;
  width: 1005px;
  /* 167px + 419px + 419px */
}

.comparison-new__header {
  display: grid;
  grid-template-columns: 167px 419px 419px;
}

.comparison-new__header-label {
  padding: 20px 24px;
}

.comparison-new__header-other {
  padding: 19px 30px 20px 21px;
  font-family: var(--font-jp-serif);
  font-size: 20px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.9);

  /* 以下を修正 */
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  /* 追加 */
}

.comparison-new__header-itsudatsu {
  padding: 0px 30px 20px 33px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.comparison-new__logo {
  height: 30px;
  width: auto;
}



.comparison-new__row {
  display: grid;
  grid-template-columns: 167px 419px 419px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.5);
  height: 124px;
}

.comparison-new__row:last-child {
  border-bottom: none;
}

.comparison-new__label {
  padding: 33px 0px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.comparison-new__number {
  font-family: var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  color: var(--c-white);
  margin-bottom: 0px;
}

.comparison-new__category {
  font-family: var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.5;
}

.comparison-new__other,
.comparison-new__itsudatsu {
  padding: 12px 20px 12px 20px;
  border-left: 1px solid rgba(255, 255, 255, 0.5);
}

.comparison-new__itsudatsu {
  background: rgba(0, 0, 0, 0.19);
  border-left: none;
}

.comparison-new__other h4,
.comparison-new__itsudatsu h4 {
  font-family: var(--font-jp);
  font-size: 16px;
  font-weight: 500;
  color: var(--c-white);
  margin-bottom: 1px;
  line-height: 1.5;
}

.comparison-new__other p,
.comparison-new__itsudatsu p {
  font-size: 14px;
  line-height: 1.6;
  font-weight: 300;
  color: var(--c-white);
  font-feature-settings: "palt";
}

/* ==========================================================================
   Awards Section (Fixed background continues from why-comparison)
   ========================================================================== */
/* Area 2: Awards (Overlay #000000 0.5) */
.why-awards__area--awards {
  width: calc(1492px + 0.5px);
  min-width: calc(1492px + 0.5px);
  background: rgba(49, 63, 80, 0.8);
}

.why-awards__area--awards .why-awards__content {
  margin-left: 121px;
  margin-top: 160px;
  /* 84px + 76px header */
  font-feature-settings: "palt";
}


.awards__heading {
  font-family: var(--font-jp-serif);
  font-size: 32px;
  font-weight: 400;
  color: var(--color-white);
  line-height: 1.3;
  margin-bottom: 35px;
}

.awards__grid {
  display: grid;
  grid-template-columns: 1fr auto 1.5fr;
  gap: 20px;
  align-items: stretch;
  width: 1252px;
  max-width: none;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .awards__grid {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .awards__grid {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .awards__grid {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .awards__grid {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .awards__grid {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .awards__grid {
    transform: scale(0.6);
  }
}

.awards__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
}

.awards__arrow-img {
  width: auto;
  height: 16.5px;
}

.awards__card {
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 4px;
  padding: 30px 30px 40px 40px;
  display: flex;
  flex-direction: column;
}

.awards__card-title {
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 500;
  color: var(--color-white);
  margin-bottom: 14px;
  line-height: 1.3;
}

.awards__card-text {
  font-size: 14px;
  line-height: 1.6;
  color: var(--c-white);
  font-weight: 300;
  margin-bottom: 18px;
  font-feature-settings: "palt";
}

.awards__badges {
  display: flex;
  gap: 40px;
  flex-wrap: nowrap;
  margin-top: auto;
  justify-content: center;
}

.awards__badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.awards__badge-img {
  width: 118px;
  height: 118px;
  object-fit: contain;
  background: #fff;
  padding: 10px;
  margin-bottom: 12px;
}

.awards__badge-text {
  font-size: 14px;
  color: var(--c-white);
  font-weight: 300;
  line-height: 1.6;
  text-align: center;
}

.awards__badge-text span {
  display: block;
}

/* ==========================================================================
   Reason Background Image Section
   ========================================================================== */
.section--reason-bg {
  width: auto;
  min-width: auto;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #182346;
}

.reason-bg__img {
  height: 100%;
  width: auto;
  object-fit: contain;
}

/* ==========================================================================
   Analysis Section
   ========================================================================== */
.section--analysis {
  width: 140vw;
  min-width: 1800px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  background-color: #182346;
}

.analysis__layout {
  display: flex;
  align-items: start;
  gap: 80px;
  max-width: none;
  margin-top: 140px;
  padding-left: 119px;
  font-feature-settings: "palt";
}

.analysis__left {
  flex: 0 0 741px;
}

.analysis__title {
  font-family: var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.5;
  margin-bottom: 15px;
}

.analysis__subtitle {
  font-family: var(--font-jp-serif);
  font-size: 36px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.2;
  margin-bottom: 103px;
}

.analysis__divider {
  width: 100%;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  margin-bottom: 14px;
}

.analysis__text {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  font-feature-settings: "palt";
}

.analysis__right {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-left: 195px;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .analysis__right {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .analysis__right {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .analysis__right {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .analysis__right {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .analysis__right {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .analysis__right {
    transform: scale(0.6);
  }
}

/* Individualized Analysis Diagram */
.analysis__diagram-wrapper {
  position: relative;
  display: flex;
  align-items: flex-start;
  margin-top: -45px;
}

.analysis__iceberg-container {
  position: relative;
  flex-shrink: 0;
  width: 514px;
  /* 1x width */
  height: 620px;
  /* 1x height */
  animation: icebergFloat 6s ease-in-out infinite;
}

.analysis__img-iceberg {
  display: block;
  width: 514px;
  height: 620px;
}

.analysis__img-arrow {
  position: absolute;
  top: 0;
  right: 38px;
  width: 123px;
  height: 556px;
  z-index: 10;
  clip-path: inset(100% 0 0 0);
  transition: clip-path 1.5s cubic-bezier(0.4, 0, 0.2, 1);
  transition-delay: 1s;
  /* Start after Phase 1 */
}

.analysis__img-iso30414 {
  position: absolute;
  top: 64px;
  right: 104px;
  width: 604px;
  height: 102px;
  z-index: 20;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
  transition-delay: 0.2s;
}

.analysis__img-kaname {
  position: absolute;
  top: 293px;
  right: 106px;
  width: 604px;
  height: 102px;
  z-index: 20;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
  transition-delay: 0s;
}

.analysis__right-group {
  display: flex;
  flex-direction: column;
  margin-left: 10px;
}

.analysis__img-result {
  display: block;
  width: 334px;
  height: 201.5px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
  transition-delay: 1.7s;
  /* Complete synchronized with Arrow (1s delay + 1.5s duration) */
}

.analysis__img-cause {
  display: block;
  margin-top: 80px;
  width: 392px;
  height: 244px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
  transition-delay: 0.4s;
}

/* Animation Trigger State */
.analysis__diagram-wrapper.is-active .analysis__img-iso30414,
.analysis__diagram-wrapper.is-active .analysis__img-kaname,
.analysis__diagram-wrapper.is-active .analysis__img-cause,
.analysis__diagram-wrapper.is-active .analysis__img-result {
  opacity: 1;
  transform: translateY(0);
}

.analysis__diagram-wrapper.is-active .analysis__img-arrow {
  clip-path: inset(0 0 0 0);
}

@keyframes icebergFloat {

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

  50% {
    transform: translateY(-10px);
  }
}

/* ==========================================================================
   Section 11, 13, 14 Combined: Roadmap + Phase 2 + Partnership
   ========================================================================== */
.section--roadmap-combined {
  width: calc(2600px + 2233px + 649px);
  /* roadmap + phase2 + partnership */
  min-width: calc(2600px + 2233px + 649px);
  /* 6113px */
  height: 100vh;
  padding-top: 0px;
  box-sizing: border-box;
  position: relative;
  background-color: #182346;
  overflow: visible;
  /* For sticky */
  display: flex;
  align-items: center;
  justify-content: flex-start;
  /* Add gap to prevent overlap with next sticky nav */
}

.roadmap-combined__bg {
  position: sticky;
  left: 0;
  top: 0;
  width: 100vw;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  pointer-events: none;
  flex-shrink: 0;
  margin-right: -100vw;
}

.roadmap-combined__track {
  position: relative;
  z-index: 1;
  display: flex;
  height: 100%;
  width: 100%;
  padding-left: 0;
  gap: 0;
}

.roadmap-combined__area {
  height: 100%;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  position: relative;
  border: none;
  outline: none;
  margin: 0;
  flex-shrink: 0;
  box-sizing: border-box;
}

.roadmap-combined__content {
  position: relative;
  width: 100%;
  max-width: var(--content-max-width);
  margin-top: 85px;
  margin-left: 120px;
  font-feature-settings: "palt";
}

/* Area 1: Roadmap (Overlay #313F50 0.5) */
.roadmap-combined__area--roadmap {
  width: calc(2600px + 0.5px);
  min-width: calc(2600px + 0.5px);
  background: rgba(49, 63, 80, 0.5);
}

.roadmap-combined__area--roadmap .roadmap-combined__content {
  max-width: none;
  margin-top: 221px;
}

/* Area 2: Phase 2 (Overlay #000000 0.5) */
.roadmap-combined__area--phase2 {
  width: calc(2233px + 0.5px);
  min-width: calc(2233px + 0.5px);
  background: rgba(49, 63, 80, 0.7);
}

.roadmap-combined__area--phase2 .roadmap-combined__content {
  max-width: none;
  margin-top: 221px;
}

/* Area 3: Partnership (Overlay #313F50 0.5) */
.roadmap-combined__area--partnership {
  width: calc(649px + 0.5px);
  min-width: calc(649px + 0.5px);
  background: rgba(0, 0, 0, 0.5);
}

.roadmap__layout {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-start;
  gap: 50px;
  max-width: none;
}

.roadmap__title-area {
  flex: 0 0 656px;
  font-feature-settings: "palt";
}

.roadmap__title {
  font-family: var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.2;
}

.roadmap__phase-info {
  flex: 0 0 363px;
  font-feature-settings: "palt";
  margin-left: 50px;
}

.roadmap__phase-label {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  color: var(--c-white);
  margin-bottom: 5px;
  margin-top: 5px;
}

.roadmap__phase-title {
  font-family: var(--font-jp);
  font-size: 24px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  margin-bottom: 13px;
  padding-bottom: 45px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.5);
}

.roadmap__phase-subtitle {
  font-family: var(--font-jp);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  margin-bottom: 20px;
}

.roadmap__phase-text {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  font-feature-settings: "palt";
}

.roadmap__points-area {
  flex: 1;
  margin-left: 14px;
  font-feature-settings: "palt";
  margin-top: 2px;
}

.roadmap__points-header {
  font-family: var(--font-jp);
  font-size: 24px;
  font-weight: 500;
  color: var(--c-white);
  margin-bottom: 35px;
}

.roadmap__points-grid {
  display: flex;
  align-items: stretch;
  gap: 0;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .roadmap__points-grid {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .roadmap__points-grid {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .roadmap__points-grid {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .roadmap__points-grid {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .roadmap__points-grid {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .roadmap__points-grid {
    transform: scale(0.6);
  }
}

.roadmap__box {
  flex: 0 0 564px;
  width: 564px;
  height: 425px;
  border: 1px solid rgba(255, 255, 255, 0.5);
  padding: 30px 30px 30px 38px;
  box-sizing: border-box;
}

.roadmap__box-title {
  font-family: var(--font-jp);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-white);
  margin-bottom: 24px;
}

.roadmap__cross {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 20px;
  background: transparent;
}

.roadmap__cross img {
  max-width: 44px;
  height: auto;
}

.roadmap__point {
  margin-bottom: 28px;
}

.roadmap__point:last-child {
  margin-bottom: 0;
}

.roadmap__point-label {
  display: inline-block;
  font-family: var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  color: var(--c-white);
  letter-spacing: 0.1em;
  margin-bottom: 15px;
  padding-left: 40px;
  position: relative;
  font-feature-settings: "palt";
}

.roadmap__point-label::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 30px;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
}

.roadmap__point h6 {
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  margin-bottom: 8px;
}

.roadmap__point p {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  font-feature-settings: "palt";
}



.phase2__layout {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-start;
  gap: 40px;
  max-width: none;
}

.phase2__info {
  flex: 0 0 273px;
  font-feature-settings: "palt";
}

.phase2__label {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  color: var(--c-white);
  letter-spacing: 0.1em;
  margin-bottom: 9px;
  margin-top: 5px;
}

.phase2__title {
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 700;
  color: var(--c-white);
  line-height: 1.3;
  margin-bottom: 12px;
}

.phase2__note {
  font-family: var(--font-jp);
  font-size: 12px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  margin-bottom: 45px;
}

.phase2__subtitle {
  font-family: var(--font-jp);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  margin-bottom: 20px;
  padding-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, 0.5);
}

.phase2__text {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  font-feature-settings: "palt";
}

.phase2__step {
  flex: 0 0 400px;
  width: 400px;
  height: 492px;
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(255, 255, 255, 0.5);
  padding: 40px 40px 35px 40px;
  box-sizing: border-box;
  margin-top: 13px;
  transform-origin: top left;
  transition: transform 0.3s ease;
  margin-left: -13px;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .phase2__step {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .phase2__step {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .phase2__step {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .phase2__step {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .phase2__step {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .phase2__step {
    transform: scale(0.6);
  }
}

.phase2__step--option {
  flex: 0 0 400px;
  width: 400px;
  height: 492px;
}

.phase2__step--option .phase2__step-diagram {
  flex: 0 0 auto;
  margin-bottom: 23px;
}

.phase2__step--option .phase2__option-list {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.phase2__step-header {
  margin-bottom: 0;
}

.phase2__step-label {
  display: inline-block;
  font-family: var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  color: var(--c-white);
  letter-spacing: 0;
  margin-bottom: 10px;
  padding-left: 40px;
  position: relative;
  line-height: 1.3;
  text-align: justify;
}

.phase2__step-label::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 30px;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
}

.phase2__step-title {
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  letter-spacing: 0;
  margin-bottom: 20px;
  text-align: justify;
}

.phase2__step-text {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  letter-spacing: 0;
  margin-bottom: 25px;
  text-align: justify;
  font-feature-settings: "palt";
}

.phase2__step-diagram {
  flex: 1;
  display: flex;
  align-items: flex-end;
}

.phase2__step-diagram img {
  max-width: 100%;
  height: auto;
}

/* STEP 01 */
.phase2__step:nth-child(2) .phase2__step-diagram img {
  width: 260px;
  height: 271px;
  margin-left: 30px;
}

/* STEP 02 */
.phase2__step:nth-child(3) .phase2__step-diagram img {
  width: 228px;
  height: 267px;
  margin-left: 44px;
  margin-top: 10px;
}

/* STEP 03 - diagram container */
.phase2__step:nth-child(4) .phase2__step-diagram {
  flex: 0 0 auto;
  margin-top: 26px;
  align-items: flex-start;
}

/* STEP 03 - 1st image */
.phase2__step:nth-child(4) .phase2__step-diagram img:first-child {
  width: 142px;
  height: 129px;
}

/* STEP 03 - 2nd image */
.phase2__step:nth-child(4) .phase2__step-diagram img:last-child {
  width: 145px;
  height: 127px;
}

/* OPTION */
.phase2__step--option .phase2__step-diagram img {
  width: 298px;
  height: 68px;
  margin-left: 10px;
  margin-top: 10px;
}

.phase2__step-diagram--double {
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  gap: 32px;
}

.phase2__step-diagram--double img {
  width: calc(50% - 6px);
  max-width: none;
  height: auto;
}

.phase2__option-list {
  margin-top: 0;
  list-style: none;
}

.phase2__option-list li {
  font-family: var(--font-jp);
  font-size: 12px;
  font-weight: 300;
  color: var(--c-white);
  line-height: 1.6;
  letter-spacing: 0;
  text-align: justify;
  font-feature-settings: "palt";
}

/* ==========================================================================
   Phase Sections (Legacy)
   ========================================================================== */
.section--phase {
  width: 180vw;
  min-width: 2400px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
}

.phase {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 60px;
}

.phase__label {
  display: block;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-gold);
  margin-bottom: 8px;
  letter-spacing: 0.1em;
}

.phase__title {
  font-size: 24px;
  font-weight: 700;
  color: var(--color-navy-dark);
  line-height: 1.5;
  margin-bottom: 24px;
}

.phase__subtitle {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy-dark);
  margin-bottom: 12px;
}

.phase__description p {
  font-size: 14px;
  line-height: 1.8;
  color: var(--color-text);
  font-feature-settings: "palt";
}

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

.phase__point-group {
  background: var(--color-white);
  border-radius: 12px;
  padding: 32px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
}

.phase__point-category {
  font-size: 15px;
  font-weight: 700;
  color: var(--color-navy-dark);
  padding-bottom: 16px;
  border-bottom: 1px solid #eee;
  margin-bottom: 24px;
}

.phase__point {
  margin-bottom: 24px;
}

.phase__point:last-child {
  margin-bottom: 0;
}

.phase__point-label {
  display: inline-block;
  font-size: 11px;
  font-weight: 500;
  color: var(--color-gold);
  letter-spacing: 0.1em;
  margin-bottom: 8px;
  padding-left: 40px;
  position: relative;
}

.phase__point-label::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 30px;
  height: 1px;
  background: var(--color-gold);
}

.phase__point h5 {
  font-size: 13px;
  font-weight: 700;
  color: var(--color-navy-dark);
  margin-bottom: 8px;
}

.phase__point p {
  font-size: 12px;
  line-height: 1.7;
  color: var(--color-text);
  font-feature-settings: "palt";
}

/* Phase Steps */
.phase__steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}

.phase__step {
  background: var(--color-white);
  border-radius: 12px;
  padding: 24px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
}

.phase__step--option {
  background: var(--color-navy-dark);
}

.phase__step--option .phase__step-label,
.phase__step--option .phase__step-title,
.phase__step--option p {
  color: var(--color-white);
}

.phase__step-label {
  display: inline-block;
  font-size: 11px;
  font-weight: 500;
  color: var(--color-gold);
  letter-spacing: 0.1em;
  margin-bottom: 12px;
  padding-left: 40px;
  position: relative;
}

.phase__step-label::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 30px;
  height: 1px;
  background: var(--color-gold);
}

.phase__step-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-navy-dark);
  margin-bottom: 12px;
}

.phase__step p {
  font-size: 12px;
  line-height: 1.7;
  color: var(--color-text);
  font-feature-settings: "palt";
}



.partnership__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.roadmap-combined__area--partnership .roadmap-combined__content {
  margin-top: 159px;
}

.partnership__label {
  display: block;
  font-family: var(--font-jp-serif);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-white);
  margin-bottom: 3px;
}

.partnership__title {
  font-family: var(--font-jp-serif);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  margin-bottom: 46px;
}

.partnership__border {
  width: 409px;
  height: 1px;
  background: rgba(255, 255, 255, 0.5);
  margin-bottom: 14px;
}

.partnership__text {
  font-family: var(--font-jp);
  font-size: 14px;
  line-height: 2;
  color: rgba(255, 255, 255, 0.9);
  max-width: 560px;
  margin-bottom: 90px;
  line-height: 1.6;
  font-feature-settings: "palt";
}

.partnership__logos {
  display: flex;
  align-items: center;
  gap: -40px;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .partnership__logos {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .partnership__logos {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .partnership__logos {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .partnership__logos {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .partnership__logos {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .partnership__logos {
    transform: scale(0.6);
  }
}

.partnership__logo {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.partnership__logo--navy {
  background: #182346;
  z-index: 2;
}

.partnership__logo--white {
  background: #FFFFFF;
  z-index: 1;
}

.partnership__logo img {
  max-width: 70%;
  max-height: 50%;
  object-fit: contain;
}

/* ==========================================================================
   Case Studies Section
   ========================================================================== */
.section--cases {
  width: 2500px;
  min-width: 2600px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  background-color: #132D5D;
  justify-content: flex-start;
}

.section--cases .section__content {
  padding-left: 240px;
  padding-right: 100px;
  padding-top: 64px;
}

.cases__layout {
  display: flex;
  align-items: flex-start;
  gap: 60px;
}

.cases__left {
  flex: 0 0 310px;
  padding-top: 20px;
}

.cases__right {
  flex: 1;
  display: flex;
  flex-direction: column;
  margin-top: 30px;
  margin-left: 30px;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .cases__right {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .cases__right {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .cases__right {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .cases__right {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .cases__right {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .cases__right {
    transform: scale(0.6);
  }
}

.cases__title {
  font-family: var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.2;
  margin-bottom: 84px;
}

.cases__lead {
  font-family: var(--font-jp);
  font-size: 14px;
  line-height: 1.6;
  color: var(--c-white);
  max-width: 350px;
  font-feature-settings: "palt";
}

.cases__grid {
  display: flex;
  gap: 20px;
  margin-bottom: 40px;
}

.case-card {
  flex: 0 0 450px;
  width: 450px;
  height: 556px;
  border-radius: 0;
  padding: 42px 26px 42px 42px;
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}

.case-card__header {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 28px;
}

.case-card__industry {
  display: inline-block;
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-white);
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.5);
  padding: 1px 8px;
  border-radius: 0;
  line-height: 1.6;
  letter-spacing: 0;
  text-align: justify;
  flex-shrink: 0;
}

.case-card__company {
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 500;
  color: var(--c-white);
  margin: 0;
  padding: 0;
  line-height: 1.3;
  letter-spacing: 0;
  text-align: justify;
  flex: 1;
  white-space: nowrap;
}

.case-card__section {
  display: flex;
  gap: 30px;
  margin-bottom: 17px;
}

.case-card__section:last-child {
  margin-bottom: 0;
}

.case-card__label {
  flex-shrink: 0;
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 500;
  color: var(--c-white);
  line-height: 1.3;
  letter-spacing: 0;
  text-align: justify;
}

.case-card__section p {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  letter-spacing: 0;
  color: var(--c-white);
  text-align: justify;
  font-feature-settings: "palt";
}

.cases__more {
  display: inline-flex;
  align-items: center;
  gap: 24px;
  color: rgba(255, 255, 255, 0.7);
  font-family: var(--font-jp);
  font-size: 13px;
  font-weight: 400;
  transition: var(--transition-smooth);
  margin-left: auto;
}

.cases__more span:first-child {
  line-height: 1.6;
}

.cases__more:hover {
  color: var(--c-gold);
}

.cases__more-arrow {
  font-size: 20px;
  color: inherit;
}

/* ==========================================================================
   Professionals Section
   ========================================================================== */
.section--professionals {
  width: 2081px;
  min-width: 2081px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  background-color: #182346;
  justify-content: start;
  margin-left: 24px;
  font-feature-settings: "palt";
  overflow: visible;
}

.section--professionals .section__content {
  overflow: visible;
  padding-top: 64px;
}

.professionals__layout {
  display: flex;
  align-items: flex-start;
  gap: 80px;
  overflow: visible;
}

.professionals__left {
  flex: 0 0 461px;
  padding-top: 18px;
}

.professionals__heading {
  font-family: var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.2;
}

.professionals__right {
  flex: 1;
  overflow: visible;
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* 画面の高さが小さい時に縮小 */
@media (max-height: 800px) {
  .professionals__right {
    transform: scale(0.95);
  }
}

@media (max-height: 750px) {
  .professionals__right {
    transform: scale(0.9);
  }
}

@media (max-height: 700px) {
  .professionals__right {
    transform: scale(0.85);
  }
}

@media (max-height: 650px) {
  .professionals__right {
    transform: scale(0.8);
  }
}

@media (max-height: 600px) {
  .professionals__right {
    transform: scale(0.7);
  }
}

@media (max-height: 550px) {
  .professionals__right {
    transform: scale(0.6);
  }
}

.professionals__grid {
  display: flex;
  gap: 24px;
  margin-top: -35px;
}

.team-card {
  flex: 0 0 414px;
  width: 414px;
  height: 620px;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 0;
  overflow: visible;
  box-sizing: border-box;
  padding: 40px 40px 40px 40px;
  display: flex;
  flex-direction: column;
}

.team-card__image {
  width: 334px;
  height: 180px;
  background: #222222;
  overflow: hidden;
  margin-bottom: 33px;
  flex-shrink: 0;
  position: relative;
}

.team-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  filter: grayscale(100%);
}

.team-card__logo {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 50px !important;
  height: 50px !important;
  filter: none !important;
  object-fit: contain !important;
}

.team-card__name {
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 500;
  color: var(--c-white);
  padding: 0;
  margin-bottom: 14px;
  line-height: 1.3;
  letter-spacing: 0;
  text-align: justify;
}

.team-card__role {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 500;
  color: var(--c-white);
  padding: 0;
  margin-bottom: 1px;
  line-height: 1.3;
  letter-spacing: 0;
  text-align: justify;
}

.team-card__credential {
  font-family: var(--font-jp);
  font-size: 12px;
  font-weight: 300;
  color: var(--c-white);
  padding: 0;
  margin-bottom: 29px;
  min-height: auto;
  line-height: 1.6;
  letter-spacing: 0;
  text-align: justify;
}

.team-card__bio {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--c-white);
  padding: 0;
  margin-bottom: 0;
  letter-spacing: 0;
  text-align: justify;
  font-feature-settings: "palt";
}

.team-card__tags {
  padding: 0;
  margin: 0;
  margin-top: auto;
  display: flex;
  flex-wrap: nowrap;
  flex-shrink: 0;
}

.team-card__tags span {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: #C2BE71;
  background: transparent;
  padding: 0;
  line-height: 1.6;
  letter-spacing: 0;
  text-align: justify;
  white-space: nowrap;
}

/* ==========================================================================
   Last Background Section
   ========================================================================== */
.section--last-bg {
  width: auto;
  min-width: auto;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #182346;
}

.last-bg__img {
  height: 100%;
  width: auto;
  object-fit: contain;
}

/* ==========================================================================
   CTA Section
   ========================================================================== */
.section--cta {
  width: 100vw;
  min-width: 1280px;
  height: 100vh;
  padding-top: 76px;
  box-sizing: border-box;
  background-color: #182346;
}

.cta__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin-top: 144px;
  margin-left: 44px;
  font-feature-settings: "palt";
}

.cta__heading {
  font-family: var(--font-jp-serif);
  font-size: 60px;
  font-weight: 400;
  color: var(--c-white);
  line-height: 1.2;
  margin-bottom: 56px;
}

.cta__text {
  font-family: var(--font-jp);
  font-size: 16px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--c-white);
  margin-bottom: 60px;
  max-width: 640px;
  font-feature-settings: "palt";
}

.cta__buttons {
  display: flex;
  gap: 11px;
  margin-bottom: 10px;
}

.cta__button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 276px;
  height: 44px;
  padding: 0 12px;
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 400;
  letter-spacing: 0.05em;
  transition: var(--transition-fast);
  border: 1px solid transparent;
}

.cta__button--primary {
  background: #084492;
  color: var(--c-white);
}

.cta__button--primary:hover {
  background: transparent;
  border-color: var(--c-white);
  color: var(--c-white);
}

.cta__button--secondary {
  background: transparent;
  background: #A29D2C;
  color: var(--c-white);
}

.cta__button--secondary:hover {
  background: transparent;
  border-color: var(--c-white);
  color: var(--c-white);
}

.cta__note {
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  color: rgba(255, 255, 255);
  margin-bottom: 78px;
}

.cta__copyright {
  font-family: var(--font-en);
  font-size: 14px;
  font-weight: 300;
  color: rgba(255, 255, 255);
}

/* ==========================================================================
   Buttons - Figma Design Match
   ========================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 16px 32px;
  font-family: var(--font-jp);
  font-size: 18px;
  font-weight: 400;
  letter-spacing: 0.1em;
  transition: var(--transition-smooth);
  cursor: pointer;
}

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

.btn--primary:hover {
  background: var(--c-gold);
  color: var(--c-iso-01);
}

.btn--secondary {
  background: var(--c-iso-03);
  color: var(--c-white);
}

.btn--secondary:hover {
  background: var(--c-gold);
  color: var(--c-iso-01);
}

.btn--large {
  width: 276px;
  height: 60px;
  font-size: 18px;
}

/* ==========================================================================
   Mobile Navigation
   ========================================================================== */
.mobile-nav {
  display: none;
  position: fixed;
  top: 76px;
  left: 0;
  width: 100%;
  height: calc(100vh - 76px);
  background: var(--color-navy-dark);
  z-index: 999;
  padding: 40px;
  transform: translateX(-100%);
  transition: transform 0.3s ease;
}

.mobile-nav.is-active {
  transform: translateX(0);
}

.mobile-nav__list {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.mobile-nav__list a {
  font-size: 18px;
  font-weight: 500;
  color: var(--color-white);
  display: block;
  padding: 12px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.mobile-nav__cta {
  background: var(--color-gold);
  padding: 16px 24px !important;
  text-align: center;
  border-radius: 4px;
  border-bottom: none !important;
  margin-top: 24px;
}

/* ==========================================================================
   Responsive Design - Mobile First
   ========================================================================== */
@media screen and (max-width: 768px) {
  :root {
    --section-padding: 24px;
  }

  .header {
    padding: 0 20px;
    height: 60px;
  }

  .header__logo-iso {
    font-size: 16px;
  }

  .header__logo-divider,
  .header__logo-text {
    font-size: 12px;
  }

  .header__divider,
  .header__nav,
  .header__actions {
    display: none;
  }

  .header__hamburger {
    display: flex;
    margin-left: auto;
  }

  .header__hamburger.is-active span:nth-child(1) {
    transform: translateY(9px) rotate(45deg);
  }

  .header__hamburger.is-active span:nth-child(2) {
    opacity: 0;
  }

  .header__hamburger.is-active span:nth-child(3) {
    transform: translateY(-9px) rotate(-45deg);
  }

  /* Switch to vertical scroll on mobile */
  .horizontal-scroll {
    overflow-x: hidden;
    overflow-y: auto;
    scroll-snap-type: y mandatory;
  }

  .horizontal-scroll__track {
    flex-direction: column;
  }

  .section {
    width: 100% !important;
    min-width: 100% !important;
    height: auto;
    min-height: 100vh;
    scroll-snap-align: start;
    padding: 60px 0;
  }

  .section__content {
    padding: 0 20px;
  }

  /* Hero */
  .section--hero {
    min-width: 100%;
    min-height: auto;
    height: auto;
    padding: 40px 0 60px;
  }

  .section--hero .section__content {
    padding: 40px 20px;
    padding-bottom: 80px;
  }

  .hero__bg-pattern {
    width: 100%;
    opacity: 0.3;
  }

  .hero__title {
    margin-bottom: 30px;
  }

  .hero__title-line {
    font-size: 28px;
    white-space: normal;
  }

  .hero__info-row {
    flex-direction: column;
    gap: 30px;
  }

  .hero__description {
    width: 100%;
  }

  .hero__badges {
    flex-wrap: wrap;
    justify-content: center;
    margin-left: 0;
  }

  .hero__badges img {
    height: 60px;
  }

  .hero__cta-row {
    flex-direction: column;
    gap: 16px;
    margin-top: 30px;
  }

  .hero__cta-btn {
    width: 100%;
  }

  .hero__scroll-arrow {
    display: none;
  }

  .corporate-fixed-btn {
    bottom: 20px;
    left: 20px;
    right: 20px;
    text-align: center;
  }

  /* Nav Dividers */
  .section--nav-divider {
    min-height: auto;
    padding: 80px 0;
  }

  .nav-divider__number::before {
    width: 200px;
  }

  .nav-divider__title {
    font-size: 32px;
  }

  .nav-divider__title--large {
    font-size: 40px;
  }

  /* Problem Cards */
  .problem-cards {
    grid-template-columns: 1fr;
  }

  /* Service Main */
  .service-main__layout {
    flex-direction: column;
    gap: 40px;
  }

  .service-main__left {
    width: 100%;
  }

  .service-main__heading-line {
    font-size: 28px;
  }

  .service-main__certainties-grid {
    flex-direction: column;
  }

  .service-main__certainty-card {
    min-width: auto;
    border-left: none;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    padding: 30px 0;
  }

  .service-main__certainty-card:first-child {
    border-top: none;
    padding-top: 0;
  }

  /* Certainties */
  .certainties__grid {
    grid-template-columns: 1fr;
  }

  /* Why + Comparison */
  .section__bg--why-fixed {
    position: absolute;
    background-attachment: scroll;
  }

  .section--why-comparison .section__content {
    flex-direction: column;
    gap: 40px;
    padding: 0 20px;
  }

  .why-comparison__heading {
    width: 100%;
  }

  .comparison-new__header,
  .comparison-new__row {
    grid-template-columns: 1fr;
  }

  .comparison-new__header-label {
    display: none;
  }

  .comparison-new__label {
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }

  .comparison-new__other {
    border-right: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }

  /* Awards */
  .awards__heading {
    font-size: 20px;
  }

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

  /* Analysis */
  .analysis__diagram {
    flex-direction: column;
  }

  .analysis__arrow {
    transform: rotate(90deg);
  }

  /* Phase */
  .phase {
    grid-template-columns: 1fr;
    gap: 32px;
  }

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

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

  /* Partnership */
  .partnership__logos {
    flex-direction: column;
  }

  /* Cases */
  .cases__grid {
    grid-template-columns: 1fr;
  }

  .case-card {
    min-width: auto;
  }

  /* Professionals */
  .professionals__layout {
    flex-direction: column;
    gap: 40px;
  }

  .professionals__left {
    flex: none;
    width: 100%;
  }

  .professionals__grid {
    flex-direction: column;
  }

  .team-card {
    flex: none;
    width: 100%;
  }

  /* CTA */
  .cta__buttons {
    flex-direction: column;
  }

  .cta__buttons .btn {
    width: 100%;
  }

  .mobile-nav {
    display: block;
  }
}

/* Tablet */
@media screen and (min-width: 769px) and (max-width: 1024px) {
  .problem-cards {
    grid-template-columns: repeat(2, 1fr);
  }

  .service-main__layout {
    flex-direction: column;
    gap: 50px;
  }

  .service-main__left {
    width: 100%;
  }

  .service-main__certainties-grid {
    flex-wrap: wrap;
  }

  .service-main__certainty-card {
    flex: 1 1 calc(50% - 1px);
  }

  .certainties__grid {
    grid-template-columns: repeat(2, 1fr);
  }

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

  .phase__steps {
    grid-template-columns: repeat(2, 1fr);
  }

  .cases__grid {
    flex-wrap: wrap;
  }

  .professionals__grid {
    flex-wrap: wrap;
  }

  .team-card {
    flex: 0 0 calc(50% - 12px);
  }
}

/* ==========================================================================
   Animations
   ========================================================================== */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

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

.section.is-visible .section__content {
  animation: fadeIn 0.6s ease forwards;
}

/* Smooth scrolling for internal links */
html {
  scroll-behavior: smooth;
}

/* Focus styles for accessibility */
a:focus,
button:focus {
  outline: 2px solid var(--color-gold);
  outline-offset: 2px;
}

/* Skip link for accessibility */
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: var(--color-gold);
  color: var(--color-navy-dark);
  padding: 8px 16px;
  z-index: 10000;
  transition: top 0.3s;
}

.skip-link:focus {
  top: 0;
}

/* ==========================================================================
   Sticky Background Wrapper - Background image sticks, overlay slides over
   ========================================================================== */
.sticky-bg-wrapper {
  display: flex;
  flex-direction: row;
  height: 100vh;
  position: relative;
}

/* Background container - sticks to left when scrolled */
.sticky-bg-wrapper__bg {
  position: sticky;
  left: 0;
  top: 0;
  width: 820px;
  min-width: 820px;
  height: 100vh;
  flex-shrink: 0;
  z-index: 1;
  overflow: hidden;
}

.sticky-bg-wrapper__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Overlay section - slides over the sticky background */
.sticky-bg-wrapper__overlay {
  position: relative;
  z-index: 2;
  flex-shrink: 0;
}

/* Service Background Extended Wrapper */
.service-bg-extended-wrapper {
  width: calc(820px + 800px);
  min-width: calc(820px + 800px);
  height: 100vh;
  position: relative;
  flex-shrink: 0;
}

.service-bg-extended {
  position: sticky;
  left: 0;
  width: 820px;
  height: 100vh;
  z-index: 1;
  overflow: hidden;
}

.service-bg-extended__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Service Navigation overlaps background */
.nav-sticky-wrapper--service {
  margin-left: -800px;
  position: relative;
  z-index: 2;
}

/* Reason variant - analysis section overlay */
.sticky-bg-wrapper--reason {
  width: calc(820px + 2191px);
  /* bg (820px) + analysis (2191px) */
  min-width: calc(820px + 2191px);
}

.sticky-bg-wrapper--reason .sticky-bg-wrapper__overlay {
  width: 2191px;
  min-width: 2191px;
}

/* Last variant - CTA overlay */
.sticky-bg-wrapper--last {
  width: 960px;
  min-width: 960px;
}

.sticky-bg-wrapper--last .sticky-bg-wrapper__overlay {
  width: 890px;
  min-width: 890px;
}

/* Ensure overlay sections have proper backgrounds */
.sticky-bg-wrapper__overlay.section--nav-divider .section__bg--dark {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.sticky-bg-wrapper__overlay.section--analysis {
  background: #182346;
}

.sticky-bg-wrapper__overlay.section--cta {
  background: #182346;
  justify-content: start;
}



/* Note: Old standalone sections (.section--service-bg, .section--reason-bg, .section--last-bg)
   have been replaced with sticky-bg-wrapper structure in HTML */

/* Print styles */
@media print {
  .horizontal-scroll {
    overflow: visible;
  }

  .horizontal-scroll__track {
    flex-direction: column;
  }

  .section {
    width: 100% !important;
    min-width: 100% !important;
    height: auto;
    page-break-after: always;
  }

  .header,
  .progress-indicator,
  .mobile-nav {
    display: none;
  }
}

/* ==========================================================================
   Modal
   ========================================================================== */
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

.modal.is-active {
  opacity: 1;
  visibility: visible;
}

.modal__overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #182346;
  cursor: pointer;
}

.modal__container {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px;
  box-sizing: border-box;
  z-index: 1;
  transform: translateY(20px);
  transition: transform 0.3s ease;
}

.modal.is-active .modal__container {
  transform: translateY(0);
}

.modal__close {
  position: absolute;
  top: 40px;
  right: 40px;
  width: 40px;
  height: 40px;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 2;
}

.modal__close span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 30px;
  height: 2px;
  background: var(--c-white);
  transition: background 0.3s ease;
}

.modal__close span:first-child {
  transform: translate(-50%, -50%) rotate(45deg);
}

.modal__close span:last-child {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.modal__close:hover span {
  background: var(--c-gold);
}

.modal__content {
  max-width: 900px;
  max-height: calc(100vh - 160px);
  overflow-y: auto;
  color: var(--c-white);
}

.modal__title {
  font-family: var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  margin-bottom: 40px;
  color: var(--c-white);
}

.modal__text {
  font-family: var(--font-jp);
  font-size: 16px;
  font-weight: 300;
  line-height: 2;
  margin-bottom: 24px;
  color: rgba(255, 255, 255, 0.85);
}

.modal__text:last-child {
  margin-bottom: 0;
}

/* Modal responsive */
@media (max-width: 768px) {
  .modal__container {
    padding: 60px 20px;
  }

  .modal__close {
    top: 20px;
    right: 20px;
  }

  .modal__title {
    font-size: 28px;
    margin-bottom: 24px;
  }

  .modal__text {
    font-size: 14px;
  }
}

/* ==========================================================================
   ISO 30414 Modal - Full Page Scrollable
   ========================================================================== */

/* Full page modal */
.modal--fullpage {
  overflow-y: auto;
  overflow-x: hidden;
  align-items: flex-start;
  justify-content: flex-start;
}

.modal--fullpage::-webkit-scrollbar {
  display: none;
}

.modal--fullpage {
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.modal--fullpage .modal__overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.modal--fullpage .modal__close {
  position: fixed;
  top: 30px;
  right: 30px;
  z-index: 100;
}

/* ISO Modal Main Container */
.iso-modal {
  width: 100%;
  min-height: 100vh;
  background: linear-gradient(180deg, #182346 0%, #0a1428 100%);
  position: relative;
  z-index: 1;
}

.iso-modal,
.iso-modal *,
.iso-modal__mobile-header,
.iso-modal__mobile-header * {
  font-feature-settings: "palt";
  text-box: trim-both cap alphabetic;
}

.iso-modal__container {
  max-width: 1600px;
  margin: 0 auto;
  padding: 0 66px;
}

/* Hero Section */
.iso-modal__hero {
  padding: 200px 0 80px;
}

.iso-modal__title {
  font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
  font-size: 60px;
  font-weight: 400;
  line-height: 1.2;
  color: var(--c-white);
  margin-bottom: 80px;
  letter-spacing: 0;
  font-feature-settings: "palt";
}

.iso-modal__text {
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  text-align: justify;
  color: var(--c-white);
  margin-top: 0;
  margin-bottom: 36px;
  font-feature-settings: "palt";
}

.iso-modal__text:last-child {
  margin-bottom: 0;
}

/* Why Section */
.iso-modal__why {
  padding: 120px 0 200px;
}

.iso-modal__why-grid {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 121px;
  margin-bottom: 40px;
}

.iso-modal__section-title {
  font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  line-height: 1.2;
  color: var(--c-white);
  letter-spacing: 0;
  font-feature-settings: "palt";
  margin-bottom: 50px;
}

.iso-modal__subtitle {
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 32px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--c-white);
  letter-spacing: 0;
  text-align: justify;
  margin-bottom: 41px;
  font-feature-settings: "palt";
}

.iso-modal__text-sm {
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  text-align: justify;
  color: var(--c-white);
  font-feature-settings: "palt";
  margin-bottom: 80px;
}

/* Benefits Header */
.iso-modal__benefits-header {
  text-align: center;
  margin-bottom: 40px;
}

.iso-modal__benefits-title {
  font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
  font-size: 28px;
  font-weight: 400;
  line-height: 1.2;
  color: var(--c-white);
  margin-bottom: 30px;
  letter-spacing: 0;
  font-feature-settings: "palt";
}

.iso-modal__benefits-line {
  display: none;
}

.iso-modal__benefits-line::before {
  content: '';
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
  width: 200px;
  height: 1px;
  background: var(--c-gold);
}

.iso-modal__benefits-tick {
  width: 1px;
  height: 10px;
  background: var(--c-gold);
  position: relative;
}

.iso-modal__benefits-tick:nth-child(1) {
  margin-right: 99px;
}

.iso-modal__benefits-tick:nth-child(3) {
  margin-left: 99px;
}

/* Benefits Grid */
.iso-modal__benefits {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 28px;
  width: 100%;
}

.iso-modal__benefit {
  flex: 1;
  text-align: center;
  padding-top: 40px;
  position: relative;
}

.iso-modal__benefit::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: #C2BE71;
}

.iso-modal__benefit-divider {
  display: none;
}

.iso-modal__benefit-icon {
  width: 100%;
  height: 165px;
  margin: 0 auto 40px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.iso-modal__benefit-icon img {
  width: auto;
  height: 100%;
  object-fit: contain;
}

.iso-modal__benefit-num {
  display: block;
  font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.3;
  color: var(--c-white);
  letter-spacing: 0;
  text-align: center;
  margin-bottom: 20px;
  font-feature-settings: "palt";
}

.iso-modal__benefit-title {
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--c-white);
  letter-spacing: 0;
  text-align: center;
  margin-bottom: 30px;
  font-feature-settings: "palt";
}

.iso-modal__benefit-text {
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  letter-spacing: 0;
  color: var(--c-white);
  text-align: left;
  font-feature-settings: "palt";
}

/* Health Section */
.iso-modal__health {
  padding: 0px 0;
}

/* Areas Section */
.iso-modal__areas-section {
  padding: 60px 0;
  background: rgba(0, 0, 0, 0.15);
}

.iso-modal__areas-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

.iso-modal__area {
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.08);
  padding: 16px;
}

.iso-modal__area--empty {
  background: transparent;
  border: none;
}

.iso-modal__area-title {
  font-family: var(--font-jp);
  font-size: 12px;
  font-weight: 600;
  color: var(--c-gold);
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(194, 190, 113, 0.25);
}

.iso-modal__area-list {
  list-style: none;
}

.iso-modal__area-list li {
  font-family: var(--font-jp);
  font-size: 10px;
  font-weight: 300;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.7);
  padding: 3px 0;
  display: flex;
  align-items: flex-start;
  gap: 6px;
}

/* Markers */
.iso-modal__marker {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex-shrink: 0;
  margin-top: 2px;
}

.iso-modal__marker::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.5);
}

.iso-modal__marker--both::before {
  background: rgba(255, 255, 255, 0.5);
}

.iso-modal__marker--large::before {
  background: transparent;
}

/* Legend */
.iso-modal__legend {
  display: flex;
  justify-content: center;
  gap: 40px;
  margin-top: 30px;
  padding-top: 20px;
}

.iso-modal__legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-jp);
  font-size: 11px;
  color: rgba(255, 255, 255, 0.6);
}

/* Measure Section (ISO 30414 Image) */
.iso-modal__measure {
  padding: 0px 0;
}

.iso-modal__measure-scroll {
  width: 100%;
}

.iso-modal__measure-img {
  width: 100%;
  height: auto;
  display: block;
}

/* Arrow Divider */
.iso-modal__arrow {
  display: flex;
  justify-content: center;
  padding-top: 50px;
  padding-bottom: 50px;
  margin-left: 40px;
}

.iso-modal__arrow svg {
  width: 36px;
  height: auto;
}

/* Cycle Section */
.iso-modal__cycle {
  padding: 0px 0;
  text-align: center;
}

.iso-modal__cycle-title {
  font-family: var(--font-jp-serif);
  font-size: 32px;
  font-weight: 400;
  color: var(--c-white);
  margin-bottom: 30px;
}

.iso-modal__cycle-diagram {
  margin: 0 45px;
}

.iso-modal__cycle-img {
  width: 100%;
  height: auto;
}

/* CTA Section */
.iso-modal__cta {
  padding: 250px 0 110px;
  text-align: center;
}

.iso-modal__cta-title {
  font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
  font-size: 48px;
  font-weight: 400;
  line-height: 1.2;
  color: var(--c-white);
  margin-bottom: 80px;
  letter-spacing: 0;
  font-feature-settings: "palt";
}

.iso-modal__cta-text {
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 20px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  text-align: center;
  color: var(--c-white);
  margin-bottom: 40px;
  font-feature-settings: "palt";
}

.iso-modal__cta-buttons {
  display: flex;
  justify-content: center;
  gap: 16px;
}

.iso-modal__cta-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 450px;
  height: 44px;
  padding: 14px 28px;
  font-family: "noto-sans-cjk-jp", var(--font-jp);
  font-size: 18px;
  font-weight: 400;
  line-height: 1.5;
  /* letter-spacing: 0.1em; */
  text-align: center;
  border-radius: 2px;
  transition: var(--transition-smooth);
  border: 1px solid transparent;
  text-decoration: none;
}

.iso-modal__cta-btn--primary {
  background: var(--c-iso-02);
  color: var(--c-white);
}

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

.iso-modal__cta-btn--secondary {
  background: #A29D2C;
  color: var(--c-white);
}

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

/* Mobile Modal Header - Hidden on Desktop */
.iso-modal__mobile-header {
  display: none;
}

/* Utility Classes */
.sp-only {
  display: none;
}

/* ISO Modal Responsive */
@media (max-width: 1024px) {
  .iso-modal__container {
    padding: 0 30px;
  }

  .iso-modal__title {
    font-size: 32px;
  }

  .iso-modal__why-grid {
    grid-template-columns: 1fr;
    gap: 0px;
  }

  /* Why Section */
  .iso-modal__why {
    padding: 100px 0 160px;
  }

  .iso-modal__section-title {
    font-size: 28px;
  }

  .iso-modal__benefits {
    flex-direction: column;
    align-items: center;
    gap: 60px;
  }

  .iso-modal__benefit {
    max-width: 400px;
  }

  .iso-modal__benefit-divider {
    width: 100px;
    height: 1px;
  }

  .iso-modal__areas-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .sp-only {
    display: block;
  }

  .modal--fullpage .modal__close {
    display: none;
  }

  /* Mobile Modal Header */
  .iso-modal__mobile-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1001;
    background: var(--c-iso-01);
    padding: 15px 20px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }

  .iso-modal__mobile-header-text {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-weight: 400;
    color: var(--c-white);
    letter-spacing: 0.05em;
    font-size: 12px;
  }

  .iso-modal__mobile-header-title {
    font-size: 14px;
  }

  .iso-modal__mobile-header-sub {
    font-size: 12px;
  }

  .iso-modal__mobile-close {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .iso-modal__mobile-close svg {
    width: 50px;
    height: 25px;
  }

  .iso-modal__container {
    padding: 0 30px;
  }

  .iso-modal__hero {
    padding: 160px 0 60px;
  }

  .iso-modal__title {
    font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
    font-size: 40px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0;
    margin-bottom: 80px;
  }

  .iso-modal__text {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.6;
    letter-spacing: 0;
    text-align: justify;
  }

  .iso-modal__section-title {
    font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
    font-size: 30px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0;
    margin-bottom: 40px;
  }

  .iso-modal__why-grid {
    margin-bottom: 12px;
  }

  .iso-modal__subtitle {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-size: 20px;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 0;
    text-align: justify;
    margin-bottom: 29px;
  }

  .iso-modal__text-sm {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.6;
    letter-spacing: 0;
    text-align: justify;
    margin-bottom: 60px;
  }

  .iso-modal__benefits-title {
    font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
    font-size: 24px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0;
    text-align: center;
  }

  .iso-modal__benefits-line {
    display: none;
  }

  .iso-modal__benefits {
    padding: 0 0px;
  }

  .iso-modal__benefit-num {
    font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
    font-size: 16px;
    font-weight: 400;
    line-height: 1.3;
    letter-spacing: 0;
    text-align: center;
  }

  .iso-modal__benefit-title {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-size: 18px;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 0;
    text-align: center;
  }

  .iso-modal__benefit-text {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.6;
    letter-spacing: 0;
  }

  /* Measure Section for Mobile */
  .iso-modal__measure {
    padding-top: 0;
  }

  .iso-modal__measure .iso-modal__container {
    padding: 0;
  }

  .iso-modal__measure-scroll {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 16px;
    padding-left: 30px;
  }

  .iso-modal__measure-scroll::-webkit-scrollbar {
    height: 6px;
  }

  .iso-modal__measure-scroll::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    margin: 0 30px;
  }

  .iso-modal__measure-scroll::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.4);
    border-radius: 3px;
  }

  .iso-modal__measure-scroll::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.6);
  }

  .iso-modal__measure-img {
    width: 1148px;
    min-width: 1148px;
  }

  .iso-modal__arrow {
    padding-top: 50px;
    padding-bottom: 50px;
  }

  .iso-modal__cycle-diagram {
    margin: 0;
  }

  .iso-modal__areas-grid {
    grid-template-columns: 1fr;
  }

  .iso-modal__legend {
    flex-direction: column;
    gap: 12px;
    align-items: center;
  }

  .iso-modal__cycle-title {
    font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
    font-size: 24px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0;
    text-align: center;
  }

  .iso-modal__cta {
    padding: 160px 0;
  }

  .iso-modal__cta-title {
    font-family: "DNP ShueiNMinStd", var(--font-jp-serif);
    font-size: 30px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0;
    text-align: center;
    margin-bottom: 60px;
  }

  .iso-modal__cta-text {
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.6;
    letter-spacing: 0;
    text-align: justify;
    margin-bottom: 30px;
  }

  .iso-modal__cta-buttons {
    flex-direction: column;
    gap: 12px;
  }

  .iso-modal__cta-btn {
    width: 100%;
    height: 32px;
    font-family: "noto-sans-cjk-jp", var(--font-jp);
    font-weight: 400;
    line-height: 1.5;
    text-align: center;
  }

  .iso-modal__cta-btn--primary {
    font-size: 14px;
    letter-spacing: 0.1em;
  }

  .iso-modal__cta-btn--secondary {
    font-size: 12px;
    letter-spacing: 0;
  }
}

/* ==========================================================================
   Universal Fade-in Animation
   ========================================================================== */
.js-fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1.0s ease-out, transform 1.0s ease-out;
  will-change: opacity, transform;
}

.js-fade-in.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Initial Load Elements - Hidden by default until JS runs */
.header:not(.is-visible),
.corporate-fixed-btn:not(.is-visible),
.hero__title:not(.is-visible),
.hero__description:not(.is-visible),
.hero__description-border:not(.is-visible),
.hero__badges:not(.is-visible),
.hero__cta-row:not(.is-visible) {
  opacity: 0;
  transform: translateY(30px);
}

/* Enhanced transition for initial load elements */
.header.js-fade-in,
.corporate-fixed-btn.js-fade-in,
.hero__title.js-fade-in,
.hero__description.js-fade-in,
.hero__description-border.js-fade-in,
.hero__badges.js-fade-in,
.hero__cta-row.js-fade-in {
  transition: opacity 1.2s cubic-bezier(0.4, 0, 0.2, 1), 
              transform 1.2s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Modal Content Fade-in - All elements */
.modal.is-active .js-modal-fade {
  opacity: 0 !important;
  transform: translateY(30px) !important;
  transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), 
              transform 0.8s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

.modal.is-active .js-modal-fade.is-visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

/* Ensure modal content is hidden by default before JS runs */
.iso-modal__title:not(.is-visible),
.iso-modal__section-title:not(.is-visible),
.iso-modal__subtitle:not(.is-visible),
.iso-modal__text:not(.is-visible),
.iso-modal__text-sm:not(.is-visible),
.iso-modal__lead:not(.is-visible),
.iso-modal__benefit:not(.is-visible),
.iso-modal__cycle-title:not(.is-visible),
.iso-modal__cta-title:not(.is-visible),
.iso-modal__cta-btn:not(.is-visible),
.iso-modal__why-grid:not(.is-visible) {
  opacity: 0;
  transform: translateY(30px);
}