/* ===========================================
fv
=========================================== */

.fv {
  --fv-side-space: clamp(40px, calc(33.3vw - 278px), 400px);
  --fv-content-width: clamp(540px, 42vw, 800px);
  --fv-image-width: clamp(500px, 45vw, 1000px);

  position: relative;
  min-height: 950px;
  overflow: hidden;
}

.fv_bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.fv_bg_img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}

.fv_inner {
  position: relative;
  z-index: 1;
  min-height: 950px;
  margin: 0 auto;
  padding: clamp(130px, 8vw, 210px) 0 80px var(--fv-side-space);
  max-width: 1920px;
}

.fv_content {
  position: relative;
  z-index: 2;
  width: var(--fv-content-width);
  max-width: calc(100vw - var(--fv-side-space) - 24px);
}

.fv_title {
  margin: 0;
}

.br_sp {
  display: none;
}

.fv_title_main {
  color: #3e3a39;
  font-size: clamp(30px, 2.5vw, var(--keilen-fv-text-lg));
  font-weight: 700;
  line-height: var(--keilen-fv-line-height-lg);
  letter-spacing: var(--keilen-fv-letter-spacing-lg);
}

.fv_title_accent {
  color: #f49000;
  font-style: normal;
}

.fv_subtitle {
  margin-top: clamp(20px, 2vw, 26px);
  color: #3e3a39;
  font-size: clamp(20px, 1.8vw, var(--keilen-fv-text-md));
  font-weight: 700;
  line-height: var(--keilen-fv-line-height-md);
  letter-spacing: var(--keilen-fv-letter-spacing-md);
}

.fv_text {
  display: flex;
  flex-direction: column;
  gap: clamp(24px, 1.45vw, 28px);
  margin-top: clamp(26px, 1.7vw, 32px);
}

.fv_text p {
  margin: 0;
  color: #3e3a39;
  font-size: clamp(16px, 0.94vw, var(--keilen-fv-text-sm));
  font-weight: 500;
  line-height: var(--keilen-fv-line-height-sm);
  letter-spacing: var(--keilen-fv-letter-spacing-sm);
}

.fv_image {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 1;
  width: var(--fv-image-width);
  height: auto;
  aspect-ratio: 745 / 815;
  overflow: hidden;
  pointer-events: none;
}

.fv_image_img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: right bottom;
}

/* ===========================================
fv responsive
BP: 900px
=========================================== */

@media screen and (max-width: 900px) {
  .fv {
    --fv-sp-side-space: 30px;

    min-height: unset;
  }

  .fv_bg {
    bottom: auto;
    height: 80%;
  }

  .fv_bg_img {
    object-position: left top;
  }

  .br_sp {
    display: inline;
  }

  .fv_inner {
    display: flex;
    flex-direction: column;
    min-height: unset;
    padding:
/* clamp(74px, 10vw, 130px) */ 130px calc(var(--fv-sp-side-space) * 0.8) 0
      clamp(var(--fv-sp-side-space), 7vw, 88px);
  }

  .fv_content {
    width: 100%;
    max-width: 100%;
  }

  .fv_title_main {
    font-size: clamp(var(--keilen-fv-text-lg-sp), calc(27.3px + 1.2vw), 40px);
    line-height: var(--keilen-fv-line-height-lg-sp);
    letter-spacing: var(--keilen-fv-letter-spacing-lg-sp);
  }

  .fv_subtitle {
    margin-top: clamp(28px, 4.2vw, 38px);
    font-size: clamp(var(--keilen-fv-text-md-sp), calc(14.94px + 0.784vw), 22px);
    line-height: var(--keilen-fv-line-height-md);
    letter-spacing: var(--keilen-fv-letter-spacing-md);
  }

  .fv_text {
    gap: clamp(38px, 4vw, 56px);
    margin-top: clamp(26px, 4vw, 36px);
  }

  .fv_text p {
    font-size: clamp(var(--keilen-fv-text-sm-sp), calc(12.47px + 0.392vw), 16px);
    font-weight: 700;
    line-height: clamp(35px, calc(31.94px + 0.784vw), 40px);
    letter-spacing: 0.09em;
  }

  .fv_image {
    position: relative;
    right: auto;
    bottom: auto;
    z-index: 1;

    width: min(calc(100% + var(--fv-sp-side-space)), clamp(390px, 90vw, 650px));
    max-width: none;
    height: auto;
    aspect-ratio: 345 / 430;

    margin-top: 0;
    margin-right: calc(var(--fv-sp-side-space) * -1);
    margin-left: auto;

    overflow: hidden;
  }

  .fv_image_img {
    object-fit: cover;
    object-position: right bottom;
  }
}


/* ===========================================
   company_material
   =========================================== */

.company_material {
  background-color: #F7F7F7;
  padding: 120px 0 150px;
}

.company_material_inner {
  --company-material-side-padding: clamp(32px, 5vw, 80px);

  width: 100%;
  max-width: calc(1200px + (var(--company-material-side-padding) * 2));
  margin: 0 auto;
  padding: 0 var(--company-material-side-padding);
}

.company_material_title {
  margin: 0 0 28px;
  color: #3E3A39;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.08em;
}

.company_material_frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border: 2px solid #3E3A39;
  border-radius: 12px;
  background-color: #222222;
}

.company_material_iframe {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

/* PDF未設定時の仮表示 */
.company_material_placeholder {
  position: absolute;
  inset: 0;
  overflow: hidden;
  color: #ffffff;
  background:
    linear-gradient(rgba(0, 0, 0, 0.48), rgba(0, 0, 0, 0.48)),
    linear-gradient(135deg, #2E2B28 0%, #605A52 48%, #2E2B28 100%);
}

.company_material_placeholder::before {
  content: "";
  position: absolute;
  inset: auto 0 0;
  z-index: 1;
  height: 44%;
  background-color: rgba(244, 144, 0, 0.9);
}

.company_material_placeholder_logo {
  position: absolute;
  top: 66px;
  left: 88px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  color: #ffffff;
}

.company_material_placeholder_logo_main {
  font-size: 46px;
  font-weight: 700;
  font-style: italic;
  line-height: 1;
  letter-spacing: 0.02em;
}

.company_material_placeholder_logo_sub {
  margin-top: 6px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.08em;
}

.company_material_placeholder_body {
  position: absolute;
  left: 90px;
  bottom: 76px;
  z-index: 2;
}

.company_material_placeholder_en {
  margin: 0;
  font-size: 56px;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: 0.04em;
}

.company_material_placeholder_ja {
  margin: 16px 0 0;
  font-size: 34px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.08em;
}

.company_material_placeholder_controls {
  position: absolute;
  left: 32px;
  bottom: 24px;
  z-index: 2;
  display: flex;
  gap: 2px;
}

.company_material_placeholder_control {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 36px;
  background-color: rgba(62, 58, 57, 0.72);
  color: #ffffff;
  font-size: 28px;
  font-weight: 400;
  line-height: 1;
}

/* ===========================================
   company_material responsive
   BP: 900px
   =========================================== */

@media screen and (max-width: 900px) {
  .company_material {
    padding: 100px 0 88px;
  }

  .company_material_inner {
    padding: 0 clamp(30px, 8vw, 72px);
  }

  .company_material_title {
    margin-bottom: 30px;
    font-size: 25px;
    letter-spacing: 0.06em;
    line-height: 1.45;
  }

  .company_material_frame {
    border-width: 1px;
    border-radius: 8px;
  }

  .company_material_placeholder_logo {
    top: 22px;
    left: 24px;
  }

  .company_material_placeholder_logo_main {
    font-size: 18px;
  }

  .company_material_placeholder_logo_sub {
    margin-top: 2px;
    font-size: 6px;
  }

  .company_material_placeholder_body {
    left: 24px;
    bottom: 40px;
  }

  .company_material_placeholder_en {
    font-size: 22px;
    line-height: 1.1;
  }

  .company_material_placeholder_ja {
    margin-top: 6px;
    font-size: 13px;
    line-height: 1.2;
  }

  .company_material_placeholder_controls {
    left: 18px;
    bottom: 16px;
  }

  .company_material_placeholder_control {
    width: 34px;
    height: 24px;
    font-size: 20px;
  }
  
}

/* swiper */

/* Swiperコンテナ */
.company_material_swiper {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.company_material_swiper .swiper-slide {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #222222;
}

.company_material_swiper .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* ◀▶ボタン（モックの placeholder_control 流用） */
.company_material_control {
  position: absolute;
  bottom: 24px;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 36px;
  background-color: rgba(62, 58, 57, 0.72);
  color: #ffffff;
  font-size: 28px;
  line-height: 1;
  border: 0;
  cursor: pointer;
  transition: opacity 0.2s;
}
.company_material_control--prev { left: 32px; }
.company_material_control--next { left: 82px; }

.company_material_control.swiper-button-disabled {
  opacity: 0.4;
  cursor: default;
}

/* レスポンシブ（既存BP 900px） */
@media screen and (max-width: 900px) {
  .company_material_control {
    width: 44px;
    height: 34px;
    font-size: 20px;
    bottom: 16px;
  }
  .company_material_control--prev { left: 18px; }
  .company_material_control--next { left: 54px; }
}



/* ===========================================
   business
   =========================================== */

.business {
  background-color: #F7F7F7;
  padding: 72px 0 200px;
}

.business_inner {
  --business-side-padding: clamp(32px, 5vw, 80px);

  width: 100%;
  max-width: calc(1200px + (var(--business-side-padding) * 2));
  margin: 0 auto;
  padding: 0 var(--business-side-padding);
}

.business_title {
  margin: 0 0 24px;
  color: #3E3A39;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.08em;
}

.business_card_list {
  display: flex;
  flex-direction: column;
  gap: 50px;
}

.business_card {
  width: 100%;
  padding:
    clamp(36px, 4.8vw, 58px)
    clamp(32px, 5.2vw, 80px)
    clamp(40px, 5.4vw, 64px);
  background-color: #ffffff;
  border-radius: 16px;
  box-shadow: 0 10px 24px rgba(62, 58, 57, 0.06);
}

.business_card_title {
  margin: 0;
  color: var(--keiken-color-primary);
  font-size: 25px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.06em;
}

.business_card_lead {
  margin: 14px 0 0;
  color: #3E3A39;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}

.business_item_list {
  display: flex;
  flex-direction: column;
  gap: 28px;
  margin-top: 28px;
}

.business_item {
  display: grid;
  grid-template-columns: 250px minmax(0, 1fr);
  column-gap: clamp(24px, 3.5vw, 46px);
  align-items: start;
}

.business_item_image_wrap {
  width: 100%;
  aspect-ratio: 250 / 150;
  overflow: hidden;
  border-radius: 4px;
  background-color: #F0F0F1;
}
.business_item_image {
  display: block;
  width: 100%;
  height: 100%;
}

.business_item_body {
  min-width: 0;
}

.business_item_title {
  margin: 0;
  color: #3E3A39;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.08em;
}

.business_item_text {
  margin: 4px 0 0;
  color: #3E3A39;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.7;
  letter-spacing: 0.06em;
}

.business_relation {
  width: 100%;
  margin-top: 14px;
  padding:
    clamp(14px, 1.4vw, 16px)
    clamp(18px, 2.4vw, 28px);
  background-color: #FFF7EF;
}

.business_relation_title {
  margin: 0;
  color: #3E3A39;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.03em;
}

.business_relation_text {
  margin: 4px 0 0;
  color: #9A9692;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.04em;
}

/* ===========================================
   business responsive
   BP: 900px
   =========================================== */

@media screen and (max-width: 900px) {
  .business {
    padding: 48px 0 200px;
  }

.business_inner {
  --business-side-padding: clamp(30px, 8vw, 72px);

  width: 100%;
  max-width: none;
  padding: 0 var(--business-side-padding);
}

  .business_title {
    margin-bottom: 30px;
    font-size: 25px;
    line-height: 1.5;
    letter-spacing: 0.06em;
  }

  .business_card_list {
    gap: 30px;
  }

.business_card {
  padding: 40px clamp(25px, 6.5vw, 52px) 40px;
  border-radius: 14px;
}

  .business_card_title {
    font-size: 20px;
    line-height: 1.6;
    letter-spacing: 0.04em;
  }

  .business_card_lead {
    margin-top: 20px;
    margin-bottom: 30px;
    font-size: 16px;
    line-height: 2.1;
    letter-spacing: 0.08em;
  }

  .business_item_list {
    gap: 30px;
    margin-top: 24px;
  }

  .business_item {
    display: block;
  }

.business_item_image_wrap {
  width: min(clamp(250px, 35vw, 300px), 100%);
  height: auto;
  aspect-ratio: 250 / 150;
  margin: 0 auto;
}

  .business_item_body {
    margin-top: 40px;
  }

  .business_item_title {
    font-size: 18px;
    line-height: 1.7;
    letter-spacing: 0.02em;
  }

  .business_item_text {
    margin-top: 20px;
    font-size: 16px;
    line-height: 1.9;
    letter-spacing: 0.02em;
  }

  .business_relation {
    margin-top: 18px;
    padding: 16px 18px;
  }

  .business_relation_title {
    font-size: 14px;
    line-height: 1.5;
    letter-spacing: 0.02em;
  }

  .business_relation_text {
    margin-top: 6px;
    font-size: 14px;
    line-height: 1.8;
    letter-spacing: 0.02em;
  }
}

/* ===========================================
   Breadcrumb
   =========================================== */
.fv_content .common_breadcrumb {
  width: 100%;
  margin: 0 0 45px 0;
  padding-top: 0;
  font-size: 14px;
  color: #3e3a39;
}
.fv_content .common_breadcrumb a {
  color: inherit;
  text-decoration: none;
}
.fv_content .common_breadcrumb a:hover {
  opacity: 0.7;
}
