@charset "UTF-8";

/* Global Settings */
html {
  scroll-behavior: smooth;
  font-feature-settings: "palt";
  overscroll-behavior-y: none; /* iOSでのバウンススクロール（オーバースクロール）を無効化 */
  /* overflow-x: hidden; */
  /* width: 100%; */
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overscroll-behavior-y: none; /* iOSでのバウンススクロール（オーバースクロール）を無効化 */
  /* overflow-x: hidden; */
  position: relative;
}

/* Typography Adjustments */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-feature-settings: "palt";
}

/* Floating Animation for SVG Blobs */
@keyframes float-1 {
  0%,
  100% {
    transform: translateY(0) rotate(0deg);
  }
  50% {
    transform: translateY(-20px) rotate(5deg);
  }
}

@keyframes float-2 {
  0%,
  100% {
    transform: translateY(0) rotate(0deg);
  }
  50% {
    transform: translateY(20px) rotate(-5deg);
  }
}

@keyframes float-3 {
  0%,
  100% {
    transform: translateY(0) rotate(0deg);
  }
  50% {
    transform: translateY(-15px) rotate(-3deg);
  }
}

.animate-float-1 {
  animation: float-1 10s ease-in-out infinite;
}
.animate-float-2 {
  animation: float-2 12s ease-in-out infinite;
}
.animate-float-3 {
  animation: float-3 14s ease-in-out infinite;
}

@keyframes blob {
  0% {
    transform: translate(0px, 0px) scale(1);
  }
  33% {
    transform: translate(30px, -50px) scale(1.1);
  }
  66% {
    transform: translate(-20px, 20px) scale(0.9);
  }
  100% {
    transform: translate(0px, 0px) scale(1);
  }
}

.animate-blob {
  animation: blob 7s infinite;
}

.animation-delay-2000 {
  animation-delay: 2s;
}

.animation-delay-4000 {
  animation-delay: 4s;
}

/* Mask Image Gradient for Hero Image to blend with background */
.mask-image-gradient {
  -webkit-mask-image: linear-gradient(to bottom, black 80%, transparent 100%);
  mask-image: linear-gradient(to bottom, black 80%, transparent 100%);
}

/* Blob Position Classes - Using only top/left for smooth transitions */
.blob-pos-1 {
  top: -5%;
  left: -5%;
  transform: rotate(0deg);
}
@media (min-width: 1024px) {
  .blob-pos-1 {
    top: -10%;
    left: -5%;
  }
}

.blob-pos-2 {
  top: 30%;
  left: 85%; /* Previously right-aligned */
  transform: rotate(80deg);
}
@media (min-width: 1024px) {
  .blob-pos-2 {
    top: 40%;
    left: 85%;
  }
}

.blob-pos-3 {
  top: 85%; /* Previously bottom-aligned */
  left: 5%;
  transform: rotate(-60deg);
}
@media (min-width: 1024px) {
  .blob-pos-3 {
    top: 80%;
    left: 10%;
  }
}

/* Transition for smooth movement */
.blob-transition {
  transition:
    top 2.5s cubic-bezier(0.25, 1, 0.5, 1),
    left 2.5s cubic-bezier(0.25, 1, 0.5, 1),
    transform 2.5s cubic-bezier(0.25, 1, 0.5, 1);
  will-change: top, left, transform;
}
::-webkit-scrollbar {
  width: 8px;
}

::-webkit-scrollbar-track {
  background: #f1f1f1;
}

::-webkit-scrollbar-thumb {
  background: #ccc;
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: #999;
}

/* Utility Class for Vertical Text if needed (not currently used but good for Japanese design) */
.writing-vertical {
  writing-mode: vertical-rl;
  text-orientation: upright;
}

/* Text Selection Color */
::selection {
  background-color: #111;
  color: #fff;
}

/* Image Hover Effects - Zoom */
.hover-zoom-img {
  transition: transform 0.7s ease;
}

.group:hover .hover-zoom-img {
  transform: scale(1.05);
}

/* Link Underline Animation */
.link-underline {
  position: relative;
  text-decoration: none;
}

.link-underline::after {
  content: "";
  position: absolute;
  width: 100%;
  transform: scaleX(0);
  height: 1px;
  bottom: 0;
  left: 0;
  background-color: currentColor;
  transform-origin: bottom right;
  transition: transform 0.25s ease-out;
}

.link-underline:hover::after {
  transform: scaleX(1);
  transform-origin: bottom left;
}

/* Fade In Animation on Scroll (handled by JS, but base CSS here) */
.fade-up {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity 0.8s ease-out,
    transform 0.8s ease-out;
}

.fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Page Title Section Height Control */
.page-title-section {
  padding-top: 112px; /* Approx 70% of original pt-40 (160px) */
  padding-bottom: 40px; /* Approx 50% of original pb-20 (80px) */
  position: relative;
  z-index: 10;
}

/* =========================================
   Infinite Carousel Styles
   ========================================= */

/* Track Layout */
.carousel-track {
  display: flex;
  gap: 24px; /* Space between slides */
  /* Transition applied to transform property - Mimicking the float animation easing */
  transition: transform 2s cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform;
  /* Allow slides to exceed container width */
  width: max-content;
  padding: 0;
  margin: 0;
}

/* Disable transition for instant jumps */
.carousel-track.no-transition,
.carousel-track.no-transition .c-slide,
.carousel-track.no-transition .c-slide-inner img {
  transition: none;
}

/* Floating Animation for Slide Inner Content - REMOVED */
/*
@keyframes floating-slide {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-15px); }
}
*/

/* Individual Slide Styling */
.c-slide {
  /* Responsive Width: Mobile 90vw */
  width: 90vw;
  max-width: 1200px;

  /* Prevent shrinking in flex container */
  flex-shrink: 0;

  /* Height matches container */
  height: 100%;

  /* Transitions for Visual States (Scale, Opacity, Blur) */
  transition:
    opacity 2s cubic-bezier(0.4, 0, 0.2, 1),
    transform 2s cubic-bezier(0.4, 0, 0.2, 1),
    filter 2s cubic-bezier(0.4, 0, 0.2, 1);

  /* Center Content */
  display: flex;
  justify-content: center;
  align-items: center;

  /* Default State (Inactive) */
  opacity: 0.5;
  /* Base transform */
  transform: scale(0.8) translateZ(-100px);
  filter: blur(2px);

  /* Hardware Acceleration */
  backface-visibility: hidden;
  transform-style: preserve-3d;
}

.c-slide-inner {
  /* animation: floating-slide 8s ease-in-out infinite; */
  /* will-change: transform; */
}

@media (min-width: 1024px) {
  .c-slide {
    width: 75vw;
  }
}

/* 3D Transforms based on relative position */
/* Active Slide (Center) */
.c-slide[data-rel-position="0"] {
  opacity: 1;
  transform: scale(1) translateZ(0) rotateY(0deg);
  filter: blur(0);
  z-index: 10;
}

/* Left Side Slides */
.c-slide[data-rel-position="-1"],
.c-slide[data-rel-position="-2"],
.c-slide[data-rel-position="-3"],
.c-slide[data-rel-position="-4"] {
  opacity: 0.6;
  /* Rotate to face inward (right side comes forward) */
  transform: scale(0.8) translateZ(-100px) rotateY(15deg);
  filter: blur(1px);
  z-index: 5;
}

/* Right Side Slides */
.c-slide[data-rel-position="1"],
.c-slide[data-rel-position="2"],
.c-slide[data-rel-position="3"],
.c-slide[data-rel-position="4"] {
  opacity: 0.6;
  /* Rotate to face inward (left side comes forward) */
  transform: scale(0.8) translateZ(-100px) rotateY(-15deg);
  filter: blur(1px);
  z-index: 5;
}

/* Fallback for Active Slide State */
.c-slide.active {
  opacity: 1;
  transform: scale(1) translateZ(0) rotateY(0deg);
  filter: blur(0);
  z-index: 10;
}

/* =========================================
   Pagination Styles
   ========================================= */

.pagination-dot-container {
  width: 40px;
  height: 6px;
  border: 1px solid #111; /* Black border */
  border-radius: 999px;
  overflow: hidden;
  cursor: pointer;
  background-color: transparent;
  position: relative;
  padding: 0; /* Remove flex styling */
  display: block; /* Ensure block formatting context */
}

/* The inner progress bar */
.pagination-dot {
  width: 0%;
  height: 100%;
  background-color: #111; /* Black fill */
  border-radius: 999px; /* Match container border-radius */
  position: absolute;
  top: 0;
  left: 0;
  transition: none; /* Controlled by animation */
}

/* Active State Animation */
@keyframes progressFill {
  from {
    width: 0%;
  }
  to {
    width: 100%;
  }
}

.pagination-dot-container.active .pagination-dot {
  /* 5s duration to match the auto-play interval */
  animation: progressFill 5s ease-in-out forwards;
}

/* Hover effect just darkens the border slightly */
.pagination-dot-container:hover {
  border-color: #9ca3af; /* gray-400 */
}

/* =========================================
   CMS Content Styles
   ========================================= */

.post-content h2 {
  font-size: 1.8rem;
  font-weight: 700;
  color: #111;
  border-left: 4px solid #1bbebf; /* service-cyan */
  padding-left: 1rem;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  margin-top: 3rem;
  margin-bottom: 1.5rem;
}

@media (max-width: 768px) {
  .post-content h2 {
    font-size: 1.5rem;
    margin-top: 2rem;
    margin-bottom: 1rem;
  }
}

.post-content h3 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #111;
  border-bottom: 1px solid #e5e7eb;
  padding-bottom: 0.5rem;
  margin-top: 2.5rem;
  margin-bottom: 1.25rem;
}

@media (max-width: 768px) {
  .post-content h3 {
    font-size: 1.25rem;
  }
}

.post-content h4 {
  font-size: 1.25rem;
  font-weight: 700;
  color: #111;
  margin-top: 2rem;
  margin-bottom: 1rem;
}

.post-content h5 {
  font-size: 1.125rem;
  font-weight: 700;
  color: #111;
  margin-top: 1.5rem;
  margin-bottom: 0.75rem;
}

.post-content p {
  font-size: 0.95rem;
  line-height: 2; /* leading-loose */
  color: #374151; /* gray-700 */
  margin-bottom: 1.5rem;
}

.post-content ul {
  list-style-type: disc;
  padding-left: 1.5rem;
  margin-bottom: 1.5rem;
  color: #374151;
}

.post-content ol {
  list-style-type: decimal;
  padding-left: 1.5rem;
  margin-bottom: 1.5rem;
  color: #374151;
}

.post-content li {
  margin-bottom: 0.5rem;
  line-height: 1.8;
}

.post-content img {
  max-width: 100%;
  height: auto;
  border-radius: 0.75rem; /* rounded-xl */
  margin-top: 2rem;
  margin-bottom: 2rem;
  box-shadow:
    0 4px 6px -1px rgba(0, 0, 0, 0.1),
    0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

.post-content a {
  color: #1bbebf;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.post-content a:hover {
  text-decoration: none;
}

/* 目次（TOC）のスタイル */
.post-content .toc {
  background-color: #f9fafb; /* gray-50 */
  border: 1px solid #e5e7eb; /* gray-200 */
  border-radius: 0.75rem;
  padding: 2rem;
  margin-bottom: 3rem;
}

.post-content .toc-title {
  text-align: center;
  font-weight: 700;
  font-size: 1.125rem;
  letter-spacing: 0.15em;
  color: #111;
  margin-bottom: 1.5rem;
}

.post-content .toc ul {
  list-style-type: none;
  padding-left: 0;
  margin-bottom: 0;
}

.post-content .toc li {
  margin-bottom: 0.75rem;
}

.post-content .toc a {
  color: #4b5563; /* gray-600 */
  text-decoration: none;
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}

.post-content .toc a:hover {
  color: #1bbebf;
}

.post-content table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 2rem;
  font-size: 0.95rem;
}

.post-content th,
.post-content td {
  border: 1px solid #e5e7eb;
  padding: 1rem;
}

.post-content th {
  background-color: #f3f4f6; /* gray-100 */
  font-weight: 700;
  text-align: left;
  color: #111;
}

/* ポイントボックス */
.post-content .point-box {
  background-color: #eff6ff; /* blue-50 */
  border: 2px solid rgba(27, 190, 191, 0.3);
  border-radius: 0.75rem;
  padding: 2rem;
  margin-bottom: 2rem;
  position: relative;
  overflow: hidden;
}

.post-content .point-box-icon {
  position: absolute;
  top: 0;
  right: 0;
  padding: 1rem;
  opacity: 0.1;
  color: #1bbebf;
  font-size: 3.75rem;
  pointer-events: none;
}

.post-content .point-box-title {
  font-weight: 700;
  color: #1bbebf;
  font-size: 1.125rem;
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.post-content .point-box ul {
  list-style-type: none;
  padding-left: 0;
  margin-bottom: 0;
}

.post-content .point-box li {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  color: #374151;
}

.post-content .point-box li::before {
  content: "●";
  color: #1bbebf;
  margin-top: 0.1em;
}

/* 定義リスト */
.post-content dl {
  margin-bottom: 2rem;
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  padding: 1.5rem;
  background-color: #f9fafb;
}

.post-content dl > div {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem;
  padding: 0.5rem 0;
}

@media (min-width: 768px) {
  .post-content dl > div {
    grid-template-columns: 1fr 3fr;
    gap: 1rem;
  }
}

.post-content dt {
  font-weight: 700;
  color: #4b5563;
}

.schedule-block {
  margin-bottom: 20px;
}

/* =========================================
   Contact Form 7: お問い合わせ・資料請求（元HTMLの構造をCF7フォーム本文で再現）
   - レイアウトは Tailwind クラスで指定済み。以下は CF7 出力の崩れ防止のみ。
   ========================================= */
.contact-form-wrapper .wpcf7,
.document-request-form-wrapper .wpcf7,
.contact-form-wrapper .wpcf7-form,
.document-request-form-wrapper .wpcf7-form {
  width: 100%;
  max-width: 100%;
}

.contact-form-wrapper .wpcf7-form-control-wrap,
.document-request-form-wrapper .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}

.contact-form-wrapper .wpcf7-form input[type="text"],
.contact-form-wrapper .wpcf7-form input[type="email"],
.contact-form-wrapper .wpcf7-form input[type="tel"],
.contact-form-wrapper .wpcf7-form select,
.contact-form-wrapper .wpcf7-form textarea,
.document-request-form-wrapper .wpcf7-form input[type="text"],
.document-request-form-wrapper .wpcf7-form input[type="email"],
.document-request-form-wrapper .wpcf7-form input[type="tel"],
.document-request-form-wrapper .wpcf7-form select,
.document-request-form-wrapper .wpcf7-form textarea {
  width: 100% !important;
  max-width: 100%;
  box-sizing: border-box;
  background-color: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
  font-size: 1rem;
}

.contact-form-wrapper .wpcf7-form input:focus,
.contact-form-wrapper .wpcf7-form select:focus,
.contact-form-wrapper .wpcf7-form textarea:focus {
  outline: none;
  border-color: #1bbebf;
  box-shadow: 0 0 0 1px #1bbebf;
}

.document-request-form-wrapper .wpcf7-form input:focus,
.document-request-form-wrapper .wpcf7-form select:focus,
.document-request-form-wrapper .wpcf7-form textarea:focus {
  outline: none;
  border-color: #086daf;
  box-shadow: 0 0 0 1px #086daf;
}

.contact-form-wrapper .wpcf7-form select,
.document-request-form-wrapper .wpcf7-form select {
  appearance: none;
  cursor: pointer;
  padding-right: 2.5rem;
}

.contact-form-wrapper .wpcf7-form textarea,
.document-request-form-wrapper .wpcf7-form textarea {
  resize: vertical;
  min-height: 6rem;
}

/* ラジオ・チェックボックス（class を付けないタグ用） */
.contact-form-wrapper .wpcf7-form .wpcf7-list-item-label,
.document-request-form-wrapper .wpcf7-form .wpcf7-list-item-label {
  margin-left: 0.5rem;
}

.contact-form-wrapper .wpcf7-form .wpcf7-list-item,
.document-request-form-wrapper .wpcf7-form .wpcf7-list-item {
  display: inline-flex;
  align-items: center;
}

/* 送信ボタン（class を付けないタグ用） */
.contact-form-wrapper .wpcf7-form .wpcf7-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  max-width: 20rem;
  margin: 0 auto;
  padding: 1rem 2.5rem;
  font-size: 1rem;
  font-weight: 700;
  color: #fff;
  background-color: #111111;
  border: none;
  border-radius: 9999px;
  cursor: pointer;
  box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
  transition: background-color 0.2s;
}

.contact-form-wrapper .wpcf7-form .wpcf7-submit:hover {
  background-color: #374151;
}

.document-request-form-wrapper .wpcf7-form .wpcf7-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  max-width: 20rem;
  margin: 0 auto;
  padding: 1rem 2.5rem;
  font-size: 1rem;
  font-weight: 700;
  color: #fff;
  background-color: #086daf;
  border: none;
  border-radius: 9999px;
  cursor: pointer;
  box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
  transition: opacity 0.2s;
}

.document-request-form-wrapper .wpcf7-form .wpcf7-submit:hover {
  opacity: 0.9;
}

@media (min-width: 768px) {
  .contact-form-wrapper .wpcf7-form .wpcf7-submit,
  .document-request-form-wrapper .wpcf7-form .wpcf7-submit {
    width: auto;
  }
}

/* 同意チェックボックス（class を付けないタグ用） */
.contact-form-wrapper .wpcf7-form .wpcf7-acceptance,
.document-request-form-wrapper .wpcf7-form .wpcf7-acceptance {
  width: 1.25rem;
  height: 1.25rem;
  accent-color: #1bbebf;
}

.document-request-form-wrapper .wpcf7-form .wpcf7-acceptance {
  accent-color: #086daf;
}

.contact-form-wrapper .wpcf7-form-control-wrap,
.document-request-form-wrapper .wpcf7-form-control-wrap {
  width: auto;
}

.contact-form-wrapper .wpcf7-form .wpcf7-submit,
.document-request-form-wrapper .wpcf7-form .wpcf7-submit {
  width: 225px;
}

@media screen and (max-width: 767px) {
  .contact-form-wrapper .wpcf7-form .wpcf7-submit,
  .document-request-form-wrapper .wpcf7-form .wpcf7-submit {
    width: 100%;
  }
}

.top-carousel {
  padding-top: 7rem;
}

@media screen and (max-width: 480px) {
  .top-carousel {
    padding-top: 3rem;
  }
}


@media screen and (max-width: 480px) {
  .toppage-hero h3, .toppage-hero p {
    text-align: left;
  }
}