@charset "UTF-8";
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body,p {
  margin: 0;
  padding: 0;
  font-family: 'Noto Sans JP', sans-serif;
  /*font-family: "Zen Kaku Gothic New",'Noto Sans JP','Yu Gothic','Hiragino Kaku Gothic ProN','Meiryo',sans-serif;*/
  font-size: 16px;
  color: #000;
  line-height: 1.8;
}
h2,h3,h4 {
  line-height: 1.5;
}
a {
  text-decoration: none;
  color: inherit;
}
img {
  max-width: 100%;
}
.container {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
}
.pc-none { display: none; }
.sp-none { display: block; }
@media screen and (max-width:768px){
  .pc-none { display: block; }
  .sp-none { display: none; }
}

/* --- ヘッダー --- */
.header {
  background: transparent;
  padding: 0px 0px 0px;
  position: fixed;
  top: 0px;
  z-index: 99;
  width: 100%;
}
.header.scrolled {
  background-color: rgba(255,255,255,0.8);
  backdrop-filter: blur(3px);
  transition: background-color 0.3s ease;
}
.header .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0px;
}
.header_logo h1 {
  margin:0px;
}
.header_logo h1 a {
  font-size: 14px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 16px;
}
.header_logo h1 img {
  max-width:220px;
}
.header_button {
  position: absolute;
  right: 0;
}
.header_button a {
  position: relative;
  display: block;
  font-size: 16px;
  color: #fff;
  background: #000;
  padding: 14px 0px;
  border-radius: 30px 0px 0px 30px;
  width: 220px;
  overflow: hidden;
  transition: color 0.5s ease;
  isolation:isolate;
}
.header_button a:hover {
  color:#000;
}
.header_button a::before {
  position: absolute;
  top: 0;
  left: 0;
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: #fff;
  z-index:-1;
  transform: scaleX(0);
  transform-origin: right;
  transition: all 0.5s ease;
  transition-property: transform;
}
.header_button a:hover::before {
  transform: scaleX(1);
  transform-origin: left;
}
.marquee_button{
  display:block;
  overflow:hidden;
  white-space:nowrap;
}
.marquee_track{
  display:inline-flex;
  width:max-content;
  will-change: transform;
  animation: marquee 8s linear infinite;
}
.marquee_item{
  flex:0 0 auto;
  padding-right:1.5ch;
}
@keyframes marquee{
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.fab-menu {
  display: none;
}

/* --- ヒーローセクション（分割背景＋傾き）--- */
.hero {
  position: relative;
  padding: 80px 0 0px;
  background: #D9D9D9;
  overflow: hidden;
  height: 1500px;
}
.hero_container,
.hero_container02 {
  width: 100%;
  max-width: 1300px;
  margin: 0 auto;
  z-index: 5;
}
.hearo_menu {
  position: absolute;
  top: 15%;
  z-index: 10;
}
.hearo_menu .nav ul {
  display: flex;
  flex-direction: column;
  list-style: none;
  gap: 10px;
  font-size: 18px;
  font-weight: 500;
  margin: 0px;
}
.hearo_menu .nav ul li a {
  padding: 2px 5px;
  transition: .3s;
}
.hearo_menu .nav ul li a:hover {
  background: #000;
  color: #fff;
}
.hero_text {
  transform: rotate(-6deg);
  max-width: 700px;
  position: absolute;
  top: 8%;
  left: 38%;
  z-index: 10;
}
.hero_text .lead {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 72px;
  font-weight: bold;
  margin-top: 0px;
  margin-bottom: 40px;
}
.typing span{
  display: none;
}
.typing:after {
  content: "|";
  animation: typingCursor .8s ease infinite;
}
@keyframes typingCursor {
  from　{
    opacity:0;
  }
  to{
    opacity:1
  }
}
.typing.done::after {
  content: "";
  animation: none;
  opacity: 0;
}
.hero_text .sub {
  font-size: 18px;
  line-height: 1.8;
  margin-bottom: 30px;
}
.hero_scroll{
  --w: 1440px;
  --gap: 60px; 
  --dur: 10s;
  position: absolute;
  top: 31%;
  transform: rotate(-6deg);
  z-index: 2;
  text-align: center;
  overflow: hidden;
}
@media screen and (min-width:2280px) {
  .hero_scroll{
    top: 33%;
  }
}
.hero_scroll .marquee_hero{
  display: block;
  overflow: hidden;
  white-space: nowrap;
}
.hero_scroll .marquee_track{
  display: inline-flex;
  width: max-content;
  gap: 0 var(--gap);
  will-change: transform;
  animation: heroMarquee var(--dur) linear infinite;
}
.hero_scroll_image{
  flex: 0 0 auto;
  width: var(--w);
}
.hero_scroll_image img{
  display: block;
  width: 100%;
  height: auto;
}
@keyframes heroMarquee{
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.hero_supplement {
  position: absolute;
  top: 52%;
  left: 46%;
  max-width: 530px;
}
.hero_supplement h3 {
  font-size: 40px;
  font-weight: 600;
  margin: 0px 0px 30px;
}
.hero_supplement p {
  font-size: 18px;
  margin-bottom: 30px;
}
.hero_supplement ol {
  font-size: 24px;
  padding-left: 0em;
  display: flex;
  flex-direction: column;
  gap: 5px;
  list-style: none;
}
.hero_supplement ol li {
  display: flex;
  align-items: center;
  gap:20px;
  line-height:1.5;
}
.hero_supplement ol li span {
  font-size: 40px;
  font-weight: 700;
  color:#000;
}
.hero_supplement ol li a {
  text-decoration: none;
  font-weight: 700;
  position: relative;
}
.hero_supplement ol li a::after {
  position: absolute;
  left: 0;
  content: '';
  width: 100%;
  height: 2px;
  background: #000000;
  bottom: -3px;               /*アンダーラインがaタグの下端から現れる*/
  transform: scale(0, 1);     /*アンダーラインの縮尺比率。ホバー前はx方向に0*/
  transform-origin: left top; /*変形（アンダーラインの伸長）の原点がaタグ（各メニュー）の左端*/
  transition: transform 0.3s; /*変形の時間*/
}
.hero_supplement ol li a:hover::after {
  transform: scale(1, 1);
}
.hero_line_vertical {
  position: absolute;
  top: 0;
  left: 30%;
  height:100%;
  z-index: 0;
}
.hero_line_beside {
  position: absolute;
  top: 32%;
  left:0;
  width: 100%;
  z-index: 0;
  transform: rotate(-6deg);
}
@media screen and (max-width: 768px) {
  .hero .container {
      display: flex;
      flex-direction: column;
      gap: 32px;
  }
  .hero_text,
  .hero_supplement {
      text-align: left;
  }
  .hero_mainvisuals img {
      max-width: 220px;
  }
  .hero_text .lead {
      font-size: 24px;
  }
}

/* --- 足跡（ステップ） --- */
.footsteps {
  max-width: 500px;
}
.footstep {
  position: absolute;
  opacity: 0;
  transform: translateY(-40px) rotate(calc(var(--rot,0deg) - 6deg)) scale(.98);
  transform-origin: var(--ox,50%) var(--oy,85%);  /* かかと寄りで軸を取る */
  will-change: transform, opacity, filter;
}
.step-1{
  max-width: 250px;
  left: 18%;
  top: 52%;
  --rot: 0deg;        /* 最終的な向き */
  --delay: 0s;          /* 開始遅延（時間差） */
  --ox: 56%; --oy: 86%; /* かかと位置（軸） */
}
.step-2 {
  max-width: 265px;
  left: 8%;
  top: 65%;
  --rot: 0deg;
  --delay: .14s;
  --ox: 44%; --oy: 86%;
}
.step-3 {
  max-width:300px;
  left: 22%;
  top: 75%;
  --rot: 0deg;
  --delay: .28s;
  --ox: 56%; --oy: 86%;
}
.footstep.is-in{
  opacity: 1;
  transform: translateY(0) rotate(var(--rot, 0deg));
  animation: stepIn .6s ease forwards; /* forwardsで最終状態を保持 */
}
@keyframes stepIn{
  0%{
      opacity: 0;
      transform: translateY(-40px) rotate(calc(var(--rot) - 6deg)) scale(.98);
      filter: drop-shadow(0 2px 0 rgba(0,0,0,0)); /* 着地前は影なし */
  }
  70%{ /* 着地（ぐっと沈む＆少し進行方向に回転） */
      opacity: 1;
      transform: translateY(0) rotate(calc(var(--rot) + 2deg)) scale(1.02);
      filter: drop-shadow(0 6px 8px rgba(0,0,0,.15));
  }
  85%{ /* 反動で少し戻る（バウンド感） */
      transform: translateY(0) rotate(calc(var(--rot) - 1deg)) scale(.995);
      filter: drop-shadow(0 4px 6px rgba(0,0,0,.12));
  }
  100%{ /* 安定 */
      transform: translateY(0) rotate(var(--rot)) scale(1);
      filter: drop-shadow(0 3px 4px rgba(0,0,0,.10));
  }
}
@media (prefers-reduced-motion: reduce){
  .footstep{ animation: none; opacity: 1; transform: none; filter: none; }
}

/* --- セクション共通 --- */
.section_beginning {
  position: relative;
  max-width:1800px;
  width:100%;
  height: 420px;
  margin: 0 auto;
  margin-bottom: 70px;
  overflow: hidden;
}
.section_text {
  position: absolute;
  top:20%;
  left:20%;
  transform: rotate(-6deg);
}
.section_text h1,
.section_text h2 {
  font-size: 54px;
  font-weight: bold;
  margin: 0px 0px 20px;
}
.section_text p {
  font-size: 18px;
}
.section_title {
  font-size: 54px;
  font-weight: bold;
  margin: 0px 0px 20px;
}
.section_sub_text {
  font-size: 18px;
  line-height: 1.8;
}
.section_line_vertical {
  top: 0;
  left: 14%;
  position: absolute;
  z-index: 0;
}
.section_line_beside {
  width:100%;
  top: 70%;
  position: absolute;
  transform: rotate(-6deg);
}
/*
.section_line_text {
  top:54%;
  left:21%;
  position: absolute;
  transform: rotate(0.3deg);
}*/
.section_line_text_base{
  position:absolute;
  top:64%;
  left:17%;
  transform: rotate(-6deg);
  z-index:2;
  pointer-events:none;          /* 装飾なのでクリック無効（任意） */
}
@media screen and (min-width:2280px) {
  .section_line_text_base{
    top:56%;
  }
}
.section_line_text_view{
  width: 120vw;          /* 斜めでも画面外まで届くよう少し広めに */
  max-width: none;
  overflow: hidden;
}
.section_line_text_track{
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  gap: 15px;                         /* 文字列間の間隔。不要なら 0 に */
  will-change: transform;
  animation: line-marquee var(--duration, 30s) linear infinite;
}
.section_line_text_img{
  height: 46px;                      /* デザインに合わせて */
  flex: 0 0 auto;
  display: block;
}
@keyframes line-marquee{
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.section_inner_line {
  position: relative;
  margin: 0px 0px 50px;
  text-align: center;
}
.section_inner_line_beside {
  width:100%;
  max-width:1800px;
  margin:0 auto;
  transform: rotate(-6deg);
}
.button {
  color: #fff;
  border:1px solid #fff;
  padding: 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  outline: none;
  background: transparent;
  max-width: 550px;
  position: relative;
  transition: color 0.5s ease;
}
.button .arrow {
  position: relative;
}
.button:hover {
  color: #000;
}
.button:hover::before {
  transform: scaleX(1);
  transform-origin: left;
}
.button::before {
  position: absolute;
  top: 0;
  left: 0;
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: #fff;
  transform: scaleX(0);
  transform-origin: right;
  transition: all 0.5s ease;
  transition-property: transform;
}
.button .text {
  position: relative;
}
.footstep_gray img{
  position: absolute;
  opacity: 0;
  transform: translateY(-24px) rotate(var(--rot, 0deg)) scale(.98);
  transform-origin: 50% 86%;
  will-change: transform, opacity, filter;
}
.service_section .footstep_gray .footstep_gray01 { top: 26%; right: 0; }
.service_section .footstep_gray .footstep_gray02 { top: 19%; right: 0%; }
.service_section .footstep_gray .footstep_gray03 { top: 16%; right: 9%; }
.service_section .footstep_gray.footstep_gray_revert .footstep_gray01 { top: 48%; left: -3%; --rot:195deg; }
.service_section .footstep_gray.footstep_gray_revert .footstep_gray02 { top: 53%; left: -4%; --rot:195deg; }
.service_section .footstep_gray.footstep_gray_revert .footstep_gray03 { top: 53%; left:  3%; --rot:180deg; }
.works_section .footstep_gray.footstep_gray_revert .footstep_gray01 { top: 27%; left: 5%; --rot:195deg; }
.works_section .footstep_gray.footstep_gray_revert .footstep_gray02 { top: 33%; left: 4%; --rot:195deg; }
.works_section .footstep_gray.footstep_gray_revert .footstep_gray03 { top: 35%; left: 11%; --rot:180deg; }
.footstep_gray.in img{ animation: stepInGray .6s var(--delay, 0s) cubic-bezier(.22,.9,.24,1) forwards; }
.footstep_gray img:nth-child(1){ --delay: 0s;   }
.footstep_gray img:nth-child(2){ --delay: .14s; }
.footstep_gray img:nth-child(3){ --delay: .28s; }
@keyframes stepInGray{
  0%{
    opacity: 0;
    transform: translateY(-24px) rotate(var(--rot,0deg)) scale(.98);
    filter: none;
  }
  70%{
    opacity: var(--finalOpacity, .2);
    transform: translateY(0) rotate(calc(var(--rot,0deg) + 2deg)) scale(1.02);
    filter: drop-shadow(0 4px 6px rgba(0,0,0,.10));
  }
  85%{
    transform: translateY(0) rotate(calc(var(--rot,0deg) - 1deg)) scale(.995);
    filter: drop-shadow(0 3px 5px rgba(0,0,0,.08));
  }
  100%{
    opacity: var(--finalOpacity, .2);
    transform: translateY(0) rotate(var(--rot,0deg)) scale(1);
    filter: drop-shadow(0 2px 3px rgba(0,0,0,.06));
  }
}
@media (prefers-reduced-motion: reduce){
  .footstep_gray img{ animation: none !important; opacity: var(--finalOpacity, .2) !important; transform: rotate(var(--rot,0deg)) !important; }
}


/* --- サービス --- */
.service_section {
  background: #000;
  color: #fff;
  padding: 80px 0;
  position: relative;
  overflow: hidden;
}
.service_section .container {
  max-width: 1080px;
  padding: 10px;
}
.service_list {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  gap: 70px;
  align-items: center;
  margin-bottom: 80px;
}
.service_list_text {
  width:65%
}
.service_list_image {
  width:35%;
}
.service_list_image img {
  max-width: 280px;
  margin:auto;
}
.num {
  font-size: 70px;
  color: #fff;
  font-weight: 700;
  margin: 0px;
  font-weight: 700;
}
.service_title {
  font-size: 28px;
  font-weight: bold;
  margin: 12px 0 8px;
}
.service_text {
  font-size: 16px;
  color: #ddd;
}
.buttonArea {
  display: flex;
  justify-content: center;
}
.buttonArea .button {
  width:550px;
}

/* --- 特徴/強み --- */
.features_section {
  background: #f6f6f6;
  padding: 0px 0 40px;
  overflow: hidden;
}
.feature_content {
  max-width: 1280px;
  margin:0 auto;
  padding: 0px;
}
.feature_list_image {
  width: 50%;
}
.feature_list_text {
  width: 50%;
}
.feature_list {
  display: flex;
  gap: 40px;
  align-items: center;
  margin-bottom: 60px;
}
.feature_list_text h3 {
  font-size: 28px;
  margin-top:0px;
  margin-bottom: 20px;
}
.feature_list_text p {
  font-size: 16px;
}

/* --- 制作実績 --- */
.works_section {
  position: relative;
  padding: 100px 0;
  background: #000;
  color: #fff;
}
.works_section .section_beginning {
  margin-bottom: 0px;
  position: relative;
  height: auto;
  overflow: visible;
}
.works_section .section_sub_text {
  color:#fff;
  margin-bottom: 30px;
}
.works_section .works_box {
  display: flex;
  gap: 50px;
  max-width: 1300px;
  padding: 0px 10px;
}
.works_box_text {
  width: 40%;
}
.works_box_contents {
  width: 60%;
  display: flex;
  flex-wrap: wrap;
  gap: 30px;
}
.works_list {
  width: calc(50% - 30px);
}
.works_section .section_text {
  margin-bottom: 40px;
  color: #fff;
}
.works_supplement {
  color: #fff;
  margin-top: 20px;
}
.works_list h3 {
  font-size: 18px;
  margin: 10px 0;
}
.works_tag {
  padding-left: 0px;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  list-style: none;
}
.works_tag li {
  color: #fff;
  padding: 0px;
  font-size: 12px;
  border-radius: 2px;
}
.works_link a {
  color: #fff;
  font-size: 13px;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 20px;
  transition: .3s;
}
.works_link a:hover {
  gap:30px;
}
.works_link a img {
  margin-bottom: 0px;
}

/* --- メンバー紹介 --- */
.member_section {
  background: #f5f5f5;
  padding: 0px 0px 80px;
}
.member_section .section_beginning {
  height: 450px;
  margin-bottom: 20px;
}
.member_section .section_line_beside {
  top: 74%;
  width:100%;
}
.member_content {
  max-width: 1080px;
  padding: 0px 0px;
  margin: auto;
}
.member_list_text {
  width: 55%;
}
.memberlist_image {
  width: 45%;
}
.member_list_text h3 {
  font-size: 28px;
  font-weight: 500;
  margin: 0px;
}
.member_list {
  display: flex;
  gap: 30px;
  align-items: center;
  margin-bottom: 60px;
}
.role {
  padding-left: 0px;
  display: flex;
  flex-wrap: wrap;
  gap: 5px 10px;
  list-style: none;
  margin: 20px 0px;
}
.role li {
  font-size: 12px;
  color: #000;
}

/* --- 会社案内 --- */
.company_section {
  background: #000;
  color: #fff;
  padding: 80px 0 100px;
}
.company_section .section_title {
  text-align: center;
  margin-bottom: 40px;
}
.company_content {
  display: flex;
  gap: 40px;
  align-items: center;
  max-width:1300px;
  padding: 0px 0px;
}
.company_content_map {
  width: 60%;
}
.company_content_text {
  width: 40%;
}
.company_title {
  font-weight:bold;
}
.company_content_text img {
  margin-bottom: 20px;
}
.company_content_text p {
  color: #fff;
  margin-bottom: 20px;
}
.company_content_text p.company_button img {
  margin-bottom: 0px;
}
.company_button a {
  display: flex;
  align-items: center;
  gap: 20px;
  transition: .3s;
}
.company_button a:hover {
  gap:30px;
  opacity: 0.8;
}

/* --- FAQ --- */
.faq_section {
  background: #E0E4E5;
  padding: 0px 0px 100px;
}
.faq_container {
  max-width: 1080px;
  padding: 0px 0px;
  margin: auto;
}
.faq_title_container .section_beginning {
  margin-bottom: 40px;
}
.faq_tabs {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 30px 0 40px;
  gap: 15px;
}
.faq_tabs li {
  padding: 0.2em 0.4em;
  background: #000;
  color: #fff;
  cursor: pointer;
  transition: .3s;
}
.faq_tabs li:hover {
  transform: rotate(-8deg);
}
.faq_tabs li.active {
  transform: rotate(-8deg);
}
.faq_contents .faq_content {
  display: none;
}
.faq_contents .faq_content.active {
  display: block;
}
.faq_list {
  padding: 0 0 10px;
}
.faq_question {
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 15px;
  position: relative;
  border-bottom: 1px solid #000;
  padding: 10px 60px 10px 0px;
  margin: 5px 0px 0px;
}
.faq_question::before {
  content: "";
  display: inline-block;
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  right: 15px;
  width: 20px;
  height: 1px;
  background: #000;
}
.faq_question::after {
  content: "";
  display: inline-block;
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  right: 25px;
  width: 1px;
  height: 20px;
  background: #000;
  -webkit-transition: 0.3s;
  transition: 0.3s;
}
.faq_question.open::after { 
  transform: translateY(-50%) rotate(90deg);
}
.faq_answer {
  display: none;
  font-size: 16px;
  margin-top: 20px;
  margin-bottom: 10px;
  transition: 0.3s;
}
.faq_answer.anim-in {
  animation: faqIn 0.35s ease both;
}
.faq_answer.anim-out {
  animation: faqOut 0.28s ease both;
}
@keyframes faqIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0);    }
}
@keyframes faqOut {
  from { opacity: 1; transform: translateY(0);    }
  to   { opacity: 0; transform: translateY(-6px); }
}

/* モーション軽減環境 */
@media (prefers-reduced-motion: reduce){
  .faq_answer.anim-in,
  .faq_answer.anim-out { animation: none; }
}

/* --- お問い合わせ --- */
.contact_section {
  background: #E0E4E5;
  text-align: center;
  padding: 80px 0;
}
.contact_title {
  overflow: hidden;
  width: 100%;
  white-space: nowrap;
  font-size: 50px;
  font-weight: bold;
}
.contact_title .marquee_contact {
  overflow: hidden;
}
.contact_title .marquee_track{
  display: flex;
  gap:40px;
  will-change: transform;
  animation: contactMarquee linear infinite;
  animation-duration: var(--duration, 20s);
}
.contact_title .marquee_group{
  display: inline-flex;
  align-items: baseline;
  gap: 1.5ch;
}
.contact_title a{
  position: relative;
  display: inline-block;
  color: #000;
  text-decoration: none;
}
.contact_title a span{ margin-left: 15px; }

.contact_title a::after{
  position: absolute;
  left: 0;
  content: '';
  width: 100%;
  height: 5px;
  background: #000;
  bottom: -3px;
  transform: scale(0, 1);
  transform-origin: left top;
  transition: transform .3s;
}
.contact_title a:hover::after{ transform: scale(1, 1); }

@keyframes contactMarquee{
  from { transform: translateX(0); }
  to   { transform: translateX(calc(-1 * var(--loop, 1000px))); }
}
@media (prefers-reduced-motion: reduce){
  .marquee_track{ animation:none; }
}

/* --- フッター --- */
.footer {
  background: #E0E4E5;
  padding: 40px 0;
  text-align: center;
}
.footer_logo {
  font-size: 14px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 16px;
}
.footer_logo img {
  max-width:220px;
}
.footer_container {
  max-width: 1340px;
  padding: 0px 50px;
  margin: auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.footer_copyrights p {
  font-size: 12px;
  margin: 0px 0px;
}
