@charset "UTF-8";

:root {
  --color-white: #FFFFFF;
  --color-black: #3E3A39;
  --color-666666: #666666;
  --color-cdcdcd: #cdcdcd;
  --color-ebebeb: #ebebeb;
  --color-e1e1e2: #e1e1e2;
  --color-f3f3f3: #f3f3f3;
  --color-ececec: #ececec;
  --color-2b4cdb: #2b4cdb;
  --color-00B9EF: #00B9EF;
  --color-00AB5A: #00AB5A;
  --color-007320: #007320;
  --color-FDD000: #FDD000;
  --color-E8380D: #E8380D;
  --color-b89023: #b89023;
  --color-6b82e6: #6b82e6;
  --color-DDF3FA: #DDF3FA;
  --color-main: #E8380D;
  --color-main-light: #FFE6E2;
  --color-main-sub: #ef866c;
  --font10: 0.625rem;
  --font12: 0.75rem;
  --font13: 0.8125rem;
  --font14: 0.875rem;
  --font15: 0.9375rem;
  --font16: 1rem;
  --font17: 1.0625rem;
  --font18: 1.125rem;
  --font20: 1.25rem;
  --font21: 1.3125rem;
  --font24: 1.5rem;
  --font26: 1.625rem;
  --font28: 1.75rem;
  --font30: 1.875rem;
  --font32: 2rem;
  --font35: 2.1875rem;
  --font38: 2.375rem;
  --font40: 2.5rem;
  --font45: 2.8125rem;
  --font50: 50px;
  --font60: 60px;
  --font70: 70px;
  --font80: 80px;
  --font90: 90px;
  --font-weight-bold: 700;
  --font-weight-normal: normal;
  --main-width_1920: min(calc(100vw - 6vw), 1920px);
  --main-width_1750: min(calc(100vw - 6vw), 1750px);
  --main-width_1600: min(calc(100vw - 6vw), 1600px);
  --main-width_1500: min(calc(100vw - 6vw), 1500px);
  --main-width_1300: min(calc(100vw - 6vw), 1300px);
  --shape-triangle-top: polygon(50% 0, 100% 100%, 0 100%);
  --shadow: 0 0.3rem 2.5rem -2rem rgba(85, 96, 96, 0.3), 0 0.3rem 0.5rem rgba(84, 96, 96, 0.376);
  --shadow2: 0 0.2rem 2rem -1rem rgba(85, 96, 96, 0.4), 0 0.2rem 0.3rem rgba(84, 96, 96, 0.4);
  --list-border: 1px solid var(--color-cfcfcf);
  --number-width: clamp(136px, 33.8vw, 180px);
  --stretch: stretch;
}

/*企業情報
------------------------*/
/*--  会社概要 --*/
.company-table{
  border-top: 3px solid;
  border-bottom: 3px solid;
}
.company-table__header, .company-table__data{
  border-bottom: 1px solid;
  border-top: 1px solid;
  vertical-align: top;
  font-size: clamp(var(--font15), calc((0.0625rem * 15) + ((1vw - 4px) * (5 / 9))), var(--font20));
  line-height: 1.4;
  padding-block: clamp(1em, 2.4vw / 1.3, 1.5em);
  padding-inline: clamp(0.5em, 3.2vw / 1.3, 2em) clamp(0.2em, 2.4vw / 1.3, 1.5em);
}
.company-table__header{
  width: 6em;
  background: var(--color-f3f3f3);
  text-align: left;
  font-weight: var(--font-weight-normal);
  white-space: nowrap;
}
.table-inlink{
  display: flex;
  border-bottom: none;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.3em clamp(0.5em, 3.2vw / 1.3, 2em);
  >*{
    white-space: nowrap;
  }
}
.table-inlink1{
  border-top: none;
}
.inline-link{
  background: var(--color-main);
  color: var(--color-white);
  font-size: var(--font16);
  &:hover{
    background: var(--color-black);
  }
}
.business-list__item{
  position: relative;
  padding-left: 1.2em;
  margin-bottom: 0.5em;
  &::before{
    content: '';
    position: absolute;
    inset: .4em calc(100% - .6em) calc(100% - 1em) 0;
    background: var(--color-black);
  }
}
/*--  所在地 --*/
.office-card{
  --p-r: 1rem;
  display: grid;
  grid-template-columns: 40% 60%;
  p, dt, dd, h4{
    line-height: 1.6;
  }
}
.office-card__content{
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.office-card__title{
  font-size: clamp(var(--font18), calc((0.0625rem * 18) + ((1vw - 4px) * (46 / 9))), var(--font24));
  font-weight: var(--font-weight-normal);
  margin-bottom: 1em;
}
.office-card__address{
  padding-right: var(--p-r);
}
.contact-info__item{
  display: flex;
  gap: 1em;
}
.office-card__access{
  border-top: 1px solid;
  padding-block: 1.2rem;
  padding-right: var(--p-r);
}
.office-card__map{
  width: 100%;
  aspect-ratio: 3/2;
  border: 0;
}
/*-- 主な取引先 --*/
.clients-list{
  column-count: 3;
  column-gap: 1em;
  li{
    break-inside: avoid;
    page-break-inside: avoid;
  }
}
.list li{
  line-height: 2em;
}
/*-- 合弁会社 --*/
.joint-venture__name{
  margin-bottom: 1em;
}
.joint-venture__footer{
  display: flex;
  flex-wrap: wrap;
  gap: 1em 4%;
  margin-top: 2.5rem;
  img{
    width: clamp(180px, 34vw / 1.3, 340px);
  }
}
.joint-venture__link{
  background: var(--color-black);
  white-space: nowrap;
  color: var(--color-white);
  padding-inline: 1em 2.5em;
  &::after{
    right: 0.8em;
  }
  &:hover{
    opacity: .7;
  }
}
@media (width <=1000px){
  /*--  所在地 --*/
  .office-card{
    grid-template-columns: 1fr;
  }
  /*-- 主な取引先 --*/
  .clients-list{
    column-count: 2;
  }
}
@media (width <=600px){
  /*-- 主な取引先 --*/
  .clients-list{
    column-count: 1;
  }
}

/*事業内容
------------------------*/
.mission-section{
  position: relative;
}
.service-header{
  position: sticky;
  top: var(--header-top-h);
  display: flex;
  align-items: center;
  z-index: 1;
  padding-bottom: 1rem;
}
.service-title{
  width: 100%;
  font-size: clamp(var(--font32), calc((0.0625rem * 32) + ((1vw - 4px) * (20 / 10))), 52px);
  border-bottom: 2px solid var(--color-main);
  margin-right: 0.5em;
}
.service-article{
  width: min(100vw - 6vw, 650px);
  padding-block: clamp(50px, 10vw / 1.4, 100px) clamp(20px, 4vw / 1.4, 40px);
  margin-inline: auto;
  p,dt,dd{
    line-height: 1.8;
  }
  p{
    margin-bottom: 0.5em;
  }
  span{
    display: inline;
  }
  .notes__list{
    border-top: 1px solid var(--color-ececec);
    margin-top: 2em;
    padding-top: 1em;
  }
  .notes__item{
    display: flex;
    margin-bottom: .5em;
  }
  .open-in-new_b{
    padding-right: 1.1em;
    &::after{
      width: .7em;
      right: .1em;
      opacity: .7;
    }
  }
}
.service-article__title{
  font-size: clamp(var(--font28), calc((0.0625rem * 28) + ((1vw - 4px) * (12 / 10))), var(--font40));
  line-height: 1.5;
  letter-spacing: 0.02em;
  margin-bottom: 0.8em;
}
.service-article__content{
  text-align:justify;
}
.product-list{
  padding-block: 1.2em 2rem;
}
.product-item{
  gap: 1rem;
}
.product-item__description{
  border-left: 5px solid var(--color-ebebeb);
  padding-left: .5em;
  margin-bottom: .5em;
}
.service-image{
  margin-top: clamp(25px, 5vw, 50px);
}
/*沿革
------------------------*/
.history-section{
  --h2-h:clamp(50px, 10vw / 1.4, 100px);
  position: relative;
  display: grid;
  grid-template-rows: auto;
  grid-template-columns: repeat(2, 1fr);
  &::before{
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100vw;
    height: var(--h2-h);
    background: linear-gradient(90deg, var(--color-main) 0%, var(--color-main) 50%, var(--color-cdcdcd) 50%, var(--color-cdcdcd) 100%);
    z-index: -1;
  }
}
.history-section__inner{
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 5;
}
.history-title{
  display: grid;
  place-content: center;
  height: var(--h2-h);
  font-size: clamp(var(--font18), calc((0.0625rem * 18) + ((1vw - 4px) * (2 / 10))), var(--font20));
  &::first-letter{
    font-size: 130%;
  }
  .history__company &{
    color: var(--color-white);
  }
  .history__business &{
    background: var(--color-cdcdcd);
  }
}
.history-timeline{
  --h3-h:clamp(40px, 6vw / 1.4, 60px);
  --p: 1.5rem;
  position: relative;
  padding-top: calc(var(--h3-h) + var(--p));
  padding-inline: 1rem;
  .history__company &{
    border-right: 2px solid;
  }
}
.history-year{
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  height: var(--h3-h);
  font-weight: var(--font-weight-normal);
  font-size: var(--font40);
  font-size: clamp(var(--font28), calc((0.0625rem * 28) + ((1vw - 4px) * (12 / 10))), var(--font40));
}
.history-item{
  display: grid;
  gap: 0.2rem;
  margin-bottom: var(--p);
  .history__company &{
    /* direction: rtl; */
    grid-template-columns: 1fr 7rem;
    text-align: right;
    dt{ order: 2; }
    dd{ order: 1; }
  }
  .history__business &{
    grid-template-columns: 7rem 1fr;
  }
  dt, dd, a{
    font-size: 1rem;
  }
  a{
    color: var(--color-main);
    text-decoration: underline;
    &:hover{
      color: var(--color-main-sub);
      text-decoration: none;
    }
  }
}
.history-beyond{
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translate(-50%, 100%);
  display: grid;
  place-content: center;
  aspect-ratio: 1;
  background: var(--color-black);
  border-radius: 50%;
  white-space: nowrap;
  color: var(--color-white);
  font-weight: var(--font-weight-bold);
  padding: 1em;
}
.last-updated{
  text-align: right;
}
/*ギャラリー*/
.history-gallery__list{
  width: min(100%, 1920px);
  display: grid;
  grid-template-columns: 20% 27% 33% 14%;
  grid-template-rows: clamp(100px, 32vw / 1.92, 320px);
  gap: 2%;
  margin-inline: auto;
  img{
    height: 100%;
    object-fit: cover;
  }
}
@media (max-width: 1000px) {
  /*-- 沿革 --*/
  .history-section{
    grid-template-columns: 1fr;
    &::before{
      display: none;
    }
  }
  .history-timeline{
    padding-top: 0;
    padding-inline: 0;
  }
  .history__business .history-title{
    margin-top: clamp(2rem, 6.4vw, 4rem);
  }
  .history__company .history-timeline{
    border-right: 0;
  }
  .history-year{
    position: static;
    margin-bottom: 0.5em;
    &.visually-hidden {
      position: static !important;
      width: 100% !important;
      height: var(--h3-h) !important;
      white-space: normal !important;
      clip: auto !important;
      overflow: visible !important;
      margin: 0 0 0.5em !important;
    }
  }
  .history-item{
    .history__company &{
      grid-template-columns: 7rem 1fr;
      text-align: left;
      dt{ order: 1; }
      dd{ order: 2; }
    }
  }
}
/*代表メッセージ
------------------------*/
.company-profile{
  --president-h: clamp(80px, 12vw / 0.69, 120px);
  --profile-text-l: clamp(1.2rem, 3.2vw / 0.69, 2rem);
  width: min(100vw - 6vw , 690px);
  margin-inline: auto;
}
/*社長*/
.profile-president{
  position: relative;
}
.profile-catchphrase{
  width: min(37%, 255px);
  margin-bottom: clamp(1rem, 4vw / 0.69,2.5rem);
  padding-left: var(--profile-text-l);
}
.profile-text--ja{
  display: grid;
  align-content: center;
  gap: 0.2rem;
  width: 100vw;
  height: var(--president-h);
  background: var(--color-ececec);
  margin-right: calc(50% - 50vw);
  padding-left: var(--profile-text-l);
}
.profile-name-ja{
  font-size: clamp(var(--font18), calc((0.0625rem * 18) + ((1vw - 4px) * (3 / 2.9))), var(--font21));
}
.profile-text--en{
  position: absolute;
  bottom: calc(var(--president-h) + clamp(0.6rem, 24vw / 0.69, 1.5rem));
  right: 18%;
  transform: translateX(100%);
  >*{
    color: var(--color-ececec);
    line-height: 1;
  }
}
.profile-subtitle{
  font-size: clamp(var(--font16), calc((0.0625rem * 16) + ((1vw - 4px) * (21 / 15.2))), var(--font38));
  margin-bottom: 0.3em;
}
.profile-name-en{
  font-size: clamp(var(--font28), calc((0.0625rem * 28) + ((1vw - 4px) * (77 / 15.2))), 105px);
}
.profile-image{
  position: absolute;
  bottom: 0;
  left: clamp(125px, 27.5%, 190px);
  width: min(62%, 430px);
}
/*略歴*/
.profile-history{
  padding-top: 3rem;
  order: 1;
  dt, dd, p{
    font-size: clamp(var(--font14), calc((0.0625rem * 14) + ((1vw - 4px) * (2 / 2.9))), var(--font16));
  }
  dt{
    white-space: nowrap;
  }
}
.profile-designation{
  font-size: clamp(var(--font18), calc((0.0625rem * 18) + ((1vw - 4px) * (6 / 2.9))), var(--font24));
  margin-bottom: 0.7em;
}
.profile-history__list{
  border-bottom: 1px solid;
}
.profile-history__item{
  display: flex;
  gap: clamp(0.5rem, 1.6vw / 0.69, 1rem);
  padding-bottom: 0.8rem;
}
.profile-history__summary{
  width: min(100%, 470px);
  line-height: 1.6;
  padding-top: 0.8em;
}
/*代表メッセージ*/
.message-block{
  display: grid;
  grid-template-columns: 46% 1fr;
  gap: 1.5rem 4%;
  align-items: self-start;
  h3{
    border-left: 8px solid var(--color-main);
    font-size: clamp(var(--font30), calc((0.0625rem * 30) + ((1vw - 4px) * (15 / 9))), var(--font45));
    padding-left: 0.5em;
  }
}
.message-document p{
  line-height: 1.5;
  margin-bottom: 1em;
}
@media (width <=1000px){ 
  /*社長*/
  .profile-catchphrase{
    padding-top: clamp(1.5rem, 9.6vw, 6rem);
  }
  .profile-text--ja{
    width: var(--stretch);
    margin-right: 0;
  }
  .profile-text--en{
    right: 0;
    bottom: -3px;
    transform: translate(0, 100%);
    text-align: right;
    br{
      display: none;
    }
  }
  .profile-subtitle{
    margin-bottom: 0;
  }
  /*代表メッセージ*/
  .message-block{
    grid-template-columns: 1fr;
  }
}