/*
===============================================
Front Page CSS for FujiwaraOffice Website
株式会社ふじわらOffice トップページ専用CSS
===============================================
*/

/* ===============================================
   キービジュアル / Hero Section
   =============================================== */

.hero-section {
  position: relative;
  height: 75vh;
  min-height: 400px;
  max-height: 782px;
  overflow: visible; /* スクロールボタンをはみ出して表示するため */
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--spacing-3xl);
  padding: 0 var(--padding-container);
}

.hero-scroll {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: -30px;
  z-index: var(--z-fixed); /* ヒーローより上のレイヤー */
  display: flex;
  align-items: center;
  flex-direction: column;
}

/* スクロールインジケータ本体（中央の1pxライン 高さ50px） */
.scroll-indicator {
  position: relative;
  width: 1px;              /* 指定: width 1px */
  height: 50px;            /* 指定: 高さ50px */
  background-color: var(--color-gray-dark); /* 未通過: グレー */
  cursor: pointer;
}

/* 通過後: 黒（上から下へ伸びる） */
.scroll-indicator::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 1px;
  height: 0%;
  background-color: var(--color-black);
  animation: lineFillDown 2.5s linear infinite;
}

/* 6pxのサークル（上から下へ移動） */
.scroll-indicator::after {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 0;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background-color: var(--color-accent);
  animation: dotDown 2.5s linear infinite;
}

/* ラベル "Scroll"（英字フォント指定） */
.hero-scroll::after {
  content: 'Scroll';
  display: block;
  margin-top: 8px;
  font-family: var(--font-english);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-xs);
  color: var(--color-black);
  line-height: 1;
}

@keyframes dotDown {
  0% { top: 0; }
  95% { top: calc(100% - 6px); }
  100% { top: 0; }
}

@keyframes lineFillDown {
  0% { height: 0%; }
  95% { height: 100%; }
  100% { height: 0%; }
}

.hero-slideshow {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  overflow: hidden; /* スライドショーははみ出さない */
  border-radius: 0 0 20px 20px;
}

.hero-slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 1s ease-in-out;
}
.hero-slide h1 { display: inline; }

.hero-slide.active {
  opacity: 1;
}

.hero-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}


/* ===============================================
   Hero Intro (7s pre-roll)
   =============================================== */
.hero-intro{
  position:absolute; inset:0;
  z-index:2; pointer-events:none;
  display:block; opacity:1;
  border-radius:0 0 20px 20px;
  overflow:hidden;
}
.hero-intro__bg{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover;
  opacity:0;
}
.hero-intro__marks, .hero-intro__pins{ position:absolute; inset:0; }
.hero-intro__dot, .hero-intro__pin{
  position:absolute;
  left:var(--x); top:var(--y);
  /* 楕円とピンの重なり基準を上から30%に */
  transform:translate(-50%, 110%);
  opacity:0;
  will-change: transform, opacity;
}
.hero-intro__dot{ width:36px; height:auto; }
.hero-intro__pin{ width:64px; height:auto; }
.hero-intro.is-hidden{ opacity:0; visibility:hidden; }
@media (min-width: 768px){
  .hero-intro__dot{ width:44px; }
  .hero-intro__pin{ width:72px; }
}

/* ===============================================
   ニュースセクション / News Section
   =============================================== */

.news-section {
  margin-bottom: var(--spacing-xl);
}

.news-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  flex-wrap: nowrap; /* 強制的に横並び */
  white-space: nowrap; /* テキストの改行を防ぐ */
  margin-bottom: var(--spacing-sm);
}

.news-header .news-title {
  font-family: var(--font-english);
  font-weight: 600;
  font-size: var(--font-size-base);
  color: var(--color-primary);
  flex-shrink: 0; /* 縮小を防ぐ */
  display: inline-block; /* 確実にインライン要素として表示 */
}

.news-header .news-date {
  font-family: var(--font-japanese);
  font-weight: 600;
  font-size: var(--font-size-xs);
  color: var(--color-gray-medium);
  position: relative;
  flex-shrink: 0; /* 縮小を防ぐ */
  display: inline-block; /* 確実にインライン要素として表示 */
}

.news-header .news-date::before {
  content: '';
  position: absolute;
  left: calc(-1 * var(--spacing-sm) - 0.5px);
  top: 50%;
  transform: translateY(-50%);
  width: 1px;
  height: 1em;
  background-color: var(--color-gray-subtle);
}

.news-content {
  background-color: var(--color-background);
  padding: 1em;
  border-radius: 20px;
  font-size: var(--font-size-sm);
  line-height: 1.6;
}

/* ニュースカルーセル */
.news-slider {
  overflow: hidden;
  position: relative;
  width: 100%;
}

.news-item {
  width: 100%;
  flex-shrink: 0;
  display: none; /* デフォルトで非表示 */
}

.news-item.active {
  display: block; /* アクティブアイテムのみ表示 */
}

/* ニュースコントロール */
.news-controls {
  display: flex;
  justify-content: flex-end;
  margin-top: var(--spacing-lg);
}

.news-dots {
  display: flex;
  gap: 8px;
}

.news-dot {
  width: 8px;
  height: 8px;
  background-color: var(--color-gray-light);
  border-radius: 50%;
  cursor: pointer;
  transition: all var(--transition-normal);
  border: 1px solid transparent;
}

.news-dot.active {
  background-color: var(--color-gray-subtle);
  border: 1px solid var(--color-primary);
}


/* ===============================================
   イントロダクション / Introduction Section
   =============================================== */

.intro-section {
  margin-bottom: var(--spacing-2xl);
}

.intro-section .section-title {
  padding-left: 1rem;
  font-family: var(--font-japanese);
  font-weight: 700;
  font-size: var(--font-size-xs);
}
.intro-section .section-subtitle {
  padding-left: 1rem;
  position: relative;
  font-family: var(--font-english);
  font-weight: 600;
  font-size: var(--font-size-2xl);
  color: var(--color-primary);
  text-align: left;
  letter-spacing: 0;
}
.intro-section .section-subtitle::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--color-accent);
}
.intro-tagline {
  width: 240px;
  margin: 0 auto;
  margin-bottom: var(--spacing-2xl);
}
.intro-statement p {
  margin-bottom: var(--spacing-2xl);
  word-break: keep-all;
  overflow-wrap: anywhere;
  line-break: strict;
  line-height: 2.5;
}


/* ===============================================
   サービス紹介 / Services Section
   =============================================== */

   .services-section {
    margin-bottom: var(--spacing-2xl);
  }
  .services-section .section-title {
    padding-left: 1rem;
    font-family: var(--font-japanese);
    font-weight: 700;
    font-size: var(--font-size-xs);
  }
  .services-section .section-subtitle {
    padding-left: 1rem;
    position: relative;
    font-family: var(--font-english);
    font-weight: 600;
    font-size: var(--font-size-2xl);
    color: var(--color-primary);
    text-align: left;
    letter-spacing: 0;
  }
  .services-section .section-subtitle::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--color-accent);
  }
  
  .service-card {
    background-color: var(--color-background);
    border: 1px solid var(--color-gray-subtle);
    padding: var(--spacing-md) var(--spacing-md) var(--spacing-2xl);
    border-radius: 20px;
    font-size: var(--font-size-md);
    margin-bottom: var(--spacing-lg);
  }
  .service-card .service-title {
    font-family: var(--font-japanese);
    font-weight: 700;
    font-size: var(--font-size-2xl);
    text-align: center;
    margin: var(--spacing-xl) 0 var(--spacing-md);
  }
  
  .service-card .service-icon-image {
    width: 56px;
    height: 56px;
    object-fit: contain;
    margin: 0 auto var(--spacing-lg);
  }
  
  .service-card .service-image img {
    border-radius: 20px;
    margin-bottom: var(--spacing-2xl);
  }
  
  
  
  /* ===============================================
     会社概要 / Company Profile Section
     =============================================== */
  
  .company-section {
    margin-bottom: var(--spacing-xl);
  }
  .company-section .company-content {
    background-color: var(--color-primary);
    border-radius: 20px;
    padding: var(--spacing-xl);
    color: var(--color-white);
  }
  .company-section .section-title {
    text-align: center;
    font-family: var(--font-japanese);
    font-weight: 700;
    font-size: var(--font-size-xs);
    margin-bottom: var(--spacing-2xl);
    color: var(--color-white);
  }
  .company-section .section-subtitle {
    text-align: center;
    font-family: var(--font-english);
    font-weight: 600;
    font-size: var(--font-size-2xl);
    letter-spacing: 0;
    color: var(--color-white);
    padding-left: 0;
  }
  .company-section .section-subtitle::before {
    display: none;
  }
  .company-section .company-tagline {
    margin-bottom: var(--spacing-2xl);
  }
  .company-section .company-image {
    width: 90%;
    margin: 0 auto;
    margin-bottom: var(--spacing-xl);
  }
  
  
  
  
  /* ===============================================
     アニメーション / Animations
     =============================================== */
  
  @keyframes fadeInUp {
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }
  
  @keyframes fadeIn {
    to {
      opacity: 1;
    }
  }
  
  @keyframes scrollBounce {
    0%, 20%, 50%, 80%, 100% {
      transform: translateX(-50%) translateY(0);
    }
    40% {
      transform: translateX(-50%) translateY(-10px);
    }
    60% {
      transform: translateX(-50%) translateY(-5px);
    }
  }
  
  /* ===============================================
     スクロールアニメーション / Scroll Animations
     =============================================== */
  
  .fade-in-on-scroll {
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s ease;
  }
  
  .fade-in-on-scroll.visible {
    opacity: 1;
    transform: translateY(0);
  }