html {
  scroll-behavior: smooth;
}

.bg-tech-grid {
  background-size: 40px 40px;
  background-image:
    linear-gradient(to right, rgba(23, 91, 102, 0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(23, 91, 102, 0.05) 1px, transparent 1px);
}

.fade-in-section {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease-out, transform 0.8s ease-out;
  will-change: opacity, visibility;
}

.fade-in-section.is-visible {
  opacity: 1;
  transform: none;
}

#mobile-menu {
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.menu-open {
  overflow: hidden;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Noto Sans JP", sans-serif;
}

.bg-tech-grid {
  background-size: 40px 40px;
  background-image:
    linear-gradient(to right, rgba(23, 91, 102, 0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(23, 91, 102, 0.05) 1px, transparent 1px);
}

.fade-in-section {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1s cubic-bezier(0.165, 0.84, 0.44, 1), transform 1s cubic-bezier(0.165, 0.84, 0.44, 1);
  will-change: opacity, visibility, transform;
}

.fade-in-section.is-visible {
  opacity: 1;
  transform: none;
}

#mobile-menu {
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.menu-open {
  overflow: hidden;
}

/* ヘッダー補助 */
#site-header {
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

#site-header a {
  text-decoration: none;
}

/* フッター補助 */
footer a {
  text-decoration: none;
}

/* 画像のにじみ対策 */
img {
  max-width: 100%;
  height: auto;
}

/* 印刷 */
@media print {
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    color: #000000 !important;
    background-color: #FFFFFF !important;
    background-image: none !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }

  body,
  header,
  section,
  footer {
    background-color: #FFFFFF !important;
  }

  header,
  footer,
  .fade-in-section {
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    transition: none !important;
  }

  #mobile-menu,
  #menu-btn,
  .scroll-down-indicator {
    display: none !important;
  }

  a {
    color: #000000 !important;
    text-decoration: underline !important;
  }

  h1, h2, h3, h4, .text-vqp-accent {
    color: #000000 !important;
  }

  .border-vqp-accent,
  .border-gray-100,
  .border-gray-200 {
    border-color: #000000 !important;
  }
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Noto Sans JP", sans-serif;
}

.bg-tech-grid {
  background-size: 40px 40px;
  background-image:
    linear-gradient(to right, rgba(23, 91, 102, 0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(23, 91, 102, 0.05) 1px, transparent 1px);
}

.fade-in-section {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1s cubic-bezier(0.165, 0.84, 0.44, 1), transform 1s cubic-bezier(0.165, 0.84, 0.44, 1);
  will-change: opacity, visibility, transform;
}

.fade-in-section.is-visible {
  opacity: 1;
  transform: none;
}

#mobile-menu {
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.menu-open {
  overflow: hidden;
}

#site-header {
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

#site-header a,
footer a {
  text-decoration: none;
}

img {
  max-width: 100%;
  height: auto;
}

/* =========================
   SPで固定ヘッダー下に埋もれる対策
========================= */
@media (max-width: 1023px) {
  main.flex-grow.pt-20 {
    padding-top: calc(5rem + 12px) !important;
  }
}

/* =========================
   英語版：テキストのみ左揃え（レイアウトは中央のまま）
========================= */
html[lang^="en"] main h2,
html[lang^="en"] main h3,
html[lang^="en"] main h4,
html[lang^="en"] main p,
html[lang^="en"] main li {
  text-align: left !important;
}

html[lang^="en"] .text-justify {
  text-align: left !important;
}