/**
 * テーマ共通スタイル
 *
 * WordPress CSS Coding Standards準拠
 * テーマ全体で使用する共通スタイルを定義
 */

main {
  overflow: visible;
  position: relative;
  width: 100%;
  height: auto;
  padding-top: var(--header-pc);
}

.background-image {
  overflow: hidden;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background-color: var(--color-black);
  /*
  background-image: url(../images/common/mobile_bg.png);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  */
}

header {
  overflow: hidden;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--header-pc);
  z-index: 11;
  background-color: transparent;
  background-image: url(../images/common/header_bg.png);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 1;
  box-shadow: 0 0 5.5px 5.5px color-mix(in srgb, var(--color-black) 4.5%, transparent);
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

header.active {
  opacity: 0;
}


header nav {
  overflow: hidden;
  position: absolute;
  top: 0;
  right: var(--header-pc);
  width: max-content;
  height: var(--header-pc);
  border-right: 1px solid var(--color-nav-border);
  box-sizing: border-box;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  flex-direction: column;
  padding-right: 27.5px;
  gap: 5.5px;
}

.header-logo img {
  overflow: hidden;
  position: absolute;
  top: calc(50% - var(--logo-pc) / 2);
  left: var(--gap-pc);
  width: auto;
  height: var(--logo-pc);
  margin-top: -2.75px;
}

ul.nav-sub {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  color: var(--color-white);
  font-size: var(--fs-base);
  font-weight: 400;
  gap: 1em 2em;
}

ul.nav-sub li {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  padding: 5.5px 0;
  border-bottom: 3px solid transparent;
  box-sizing: border-box;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

ul.nav-main {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  color: var(--color-white);
  font-size: var(--fs-md);
  font-weight: 500;
  gap: 1em 2em;
}

ul.nav-main li {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  padding: 5.5px 0;
  border-bottom: 3px solid transparent;
  box-sizing: border-box;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

ul.nav-main li:hover,
ul.nav-main li.active,
ul.nav-sub li:hover,
ul.nav-sub li.active {
  border-bottom: 3px solid var(--color-red);
}

section.keyvisual {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: calc(100dvh - var(--header-pc));
}

.slideshow-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: calc(100dvh - var(--header-pc));
}

/* 画像（背景画像含む）の読み込み完了後にフェードイン（common.js が is-loaded を付与）。
   トップのスライドショー（.slideshow-list）と各ページのヒーロー（section.hero）で共用。
   opacity のみで制御し、bg-pin の transform（固定背景）と干渉させない */
.fade-load {
  opacity: 0;
  transition: opacity 0.6s ease-out;
}

.fade-load.is-loaded {
  opacity: 1;
}

.slideshow-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: calc(100dvh - var(--header-pc));
}

.slideshow-item span {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* 背景固定ふう表示（common.js が transform でスクロールを打ち消す）。
   サイズは変えず、transform 最適化のみ。クリップは各セクションの overflow:hidden */
.bg-pin {
  will-change: transform;
}

.slogan-wrapper {
  overflow: hidden;
  position: absolute;
  top: calc(50% - 110px);
  left: 0;
  right: 0;
  margin: auto;
  width: 100%;
  max-width: var(--container);
  height: auto;
  background: linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--color-black) 50%, transparent) 30%, color-mix(in srgb, var(--color-black) 50%, transparent) 70%, transparent 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  padding: 24.75px var(--gap-pc) 27.5px var(--gap-pc);
}

.slogan {
  font-size: var(--fs-5xl);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: 0.05em;
  text-align: center;
  color: var(--color-white);
}

.lead-copy {
  font-size: var(--fs-lg);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: 0.05em;
  text-align: center;
  color: var(--color-white);
  margin-top: 22px;
}

h2 {
  font-size: var(--fs-4xl);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0.05em;
  text-align: center;
  color: var(--color-primary);
}

h2 sup {
  font-size: var(--fs-lg);
  line-height: 1;
  /* 行ボックスの押し広げ防止 */
  position: relative;
  top: -0.25em;
}

h3 {
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

p {
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

section#overview {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px var(--gap-pc);
  text-align: center;
  background-color: var(--color-alternate);
}

.overview-description {
  font-size: var(--fs-lg);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: 0.05em;
  text-align: center;
  color: var(--color-font);
  margin-top: 22px;
}

.overview-description p {
  font-size: var(--fs-lg);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: 0.05em;
  text-align: center;
  color: var(--color-font);
}

.overview-description small {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  display: inline-block;
  margin-top: 22px;
  font-size: var(--fs-sm);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

section#frp {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0;
  text-align: center;
  background-color: var(--color-white);
}

.frp-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

.frp-contents {
  overflow: hidden;
  position: relative;
  width: 50%;
  height: auto;
  padding: 0 22px 0 calc(50% - var(--container) / 2);
  text-align: left;
}

.frp-description {
  margin-top: 27.5px;
}

.frp-image {
  overflow: hidden;
  position: relative;
  width: 50%;
  height: auto;
  padding: 0 0 0 22px;
}

.frp-image img {
  width: 100%;
  height: auto;
}

button.button-default {
  overflow: hidden;
  position: relative;
  width: 100%;
  max-width: 220px;
  height: 55px;
  border: 2px solid var(--color-primary);
  border-radius: 27.5px;
  box-sizing: border-box;
  background-color: var(--color-white);
  color: var(--color-primary);
  font-size: var(--fs-base);
  font-weight: 600;
  line-height: 51px;
  letter-spacing: 0.2em;
  text-align: center;
  cursor: pointer;
  margin-top: 33px;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

button.button-default:hover {
  background-color: var(--color-primary);
  color: var(--color-white);
}

.container {
  overflow: hidden;
  position: relative;
  width: 100%;
  max-width: var(--container);
  height: auto;
  margin: 0 auto;
  padding: 0;
}

.wrapper {
  overflow: visible;
  position: relative;
  width: 100%;
  max-width: var(--wrapper);
  height: auto;
  margin: 0 auto;
}

section#news {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0;
  text-align: left;
}

/* 背景パララックスレイヤー。Rellax の transform で ±100px 動くため
   上下を 132px 拡張し、端が見切れないようにしている */
section#news .news-bg {
  position: absolute;
  top: -132px;
  right: 0;
  bottom: -132px;
  left: 0;
  z-index: 0;
  background-image: url(../images/home_bg.webp);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  pointer-events: none;
  will-change: transform;
}

section#news .container {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

section#news .news-wrapper {
  overflow: hidden;
  position: relative;
  width: 50%;
  height: auto;
  padding: 0 22px 0 0;
}

section#news .topics-wrapper {
  overflow: hidden;
  position: relative;
  width: 50%;
  height: auto;
  padding: 0 0 0 22px;
}

.title-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 22px;
}

button.button-text {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  color: var(--color-secondary);
  font-size: var(--fs-base);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.news-list {
  overflow: visible;
  position: relative;
  width: 100%;
  height: auto;
  border-top: 1px solid var(--color-gray);
  box-sizing: border-box;
}

.news-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 22px 0;
  border-bottom: 1px solid var(--color-gray);
  box-sizing: border-box;
}

.news-info {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 11px 16.5px;
}

.news-info time {
  font-size: var(--fs-base);
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.05em;
  color: var(--color-time);
}

.news-category {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 5.5px;
}

.news-category-item {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  font-size: var(--fs-sm);
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.05em;
  color: var(--color-primary);
  background-color: var(--color-white);
  padding: 4px 11px 5px 11px;
  border: solid 1px var(--color-primary);
  box-sizing: border-box;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.news-category-item span {
  font-size: var(--fs-sm);
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.05em;
  color: var(--color-primary);
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.news-category-item:hover {
  background-color: var(--color-primary);
  color: var(--color-white);
}

.news-category-item:hover span {
  color: var(--color-white);
}

.news-title-text-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 11px;
}

.news-title-text {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: 0.05em;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.news-title-text:hover {
  text-decoration: underline;
}

.topics-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  border-top: 1px solid var(--color-gray);
  box-sizing: border-box;
}

.topics-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 22px 0;
  border-bottom: 1px solid var(--color-gray);
  box-sizing: border-box;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 11px 22px;
}

.topics-image {
  overflow: hidden;
  position: relative;
  width: 154px;
  height: auto;
}

.topics-image img {
  width: 100%;
  height: auto;
  object-fit: cover;
  aspect-ratio: 4/3;
}

.topics-title-text-wrapper {
  overflow: hidden;
  position: relative;
  width: calc(100% - 176px);
  height: auto;
}

.topics-title-text {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-primary);
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.topics-title-text:hover {
  text-decoration: underline;
}

.topics-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 11px;
}

.topics-description p {
  font-size: var(--fs-base);
  font-weight: 400;
  line-height: 1.75;
}

.topics-description p:hover {
  text-decoration: underline;
}

.link-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 22px;
  margin-top: 33px;
}

.link-wrapper a {
  overflow: hidden;
  position: relative;
  width: calc(50% - 11px);
  height: 0;
  padding-top: 25%;
  display: block;
}

.link-item-bg {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.link-wrapper a:hover .link-item-bg {
  transform: scale(1.09);
  filter: brightness(0.82);
}

.link-item-text {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  color: var(--color-white);
  font-size: var(--fs-2xl);
  font-weight: 700;
  line-height: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}

.products-title-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  gap: 33px;
}

section#products {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0;
  background-color: var(--color-white);
}

.products-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 22px;
  margin-top: 22px;
}

.products-item {
  overflow: hidden;
  position: relative;
  width: calc(25% - 16.5px);
  height: auto;
}

.products-image {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 0;
  padding-top: 66.6666%;
}

.products-image span {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.products-item:hover .products-image span {
  transform: scale(1.05);
}

.products-title-text-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--color-primary);
  padding: 11px;
}

.products-title-text {
  font-size: var(--fs-lg);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
}

.banner-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 22px;
  margin-top: 33px;
}

.banner-item {
  overflow: hidden;
  position: relative;
  width: calc(50% - 11px);
  height: 264px;
  display: block;
}

.banner-item-contents {
  overflow: hidden;
  position: absolute;
  top: 33px;
  left: 22px;
  width: calc(100% - 44px);
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  flex-direction: column;
}

.banner-item span {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.banner-item:hover .banner-item-bg {
  transform: scale(1.05);
}

.banner-item-text {
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
}

.banner-item-description {
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-white);
  margin-top: 5.5px;
}

.banner-item a {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: block;
}

.banner-item:nth-child(2) .banner-item-text,
.banner-item:nth-child(2) .banner-item-description {
  color: var(--color-font);
}

footer {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 33px 0;
  background-image: url(../images/common/header_bg.png);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  color: var(--color-white);
}

.footer-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 22px;
  padding: 0 var(--gap-pc);
}

.footer-logo {
  overflow: hidden;
  position: relative;
  width: 100%;
  max-width: 440px;
  height: auto;
}

.footer-logo img {
  width: 100%;
  height: auto;
}

.footer-nav {
  overflow: hidden;
  position: relative;
  width: calc(100% - 440px);
  height: auto;
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
  flex-direction: column;
  gap: 22px;
}

ul.footer-nav-sub-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 22px;
}

ul.footer-nav-sub-list li {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  font-size: var(--fs-base);
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.05em;
}

ul.footer-nav-main-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
}

ul.footer-nav-main-list li {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  font-size: var(--fs-base);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.05em;
  padding: 5.5px 22px;
  border-right: 1px solid var(--color-white);
  box-sizing: border-box;
}

ul.footer-nav-main-list li:last-child {
  padding-right: 0;
  border-right: none;
}

button.button-footer {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: 44px;
  display: block;
  border: 1px solid var(--color-white);
  border-radius: 22px;
  box-sizing: border-box;
  background-color: var(--color-white);
  color: var(--color-primary);
  font-size: var(--fs-sm);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.05em;
  cursor: pointer;
  padding: 0 22px;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.footer-copyright {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  text-align: center;
  font-size: var(--fs-sm);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.05em;
  margin-top: 55px;
}

.mobile-panel {
  overflow: hidden;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url(../images/common/mobile_bg.png);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  z-index: -1;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-direction: column;
  transition: all 0.6s cubic-bezier(.77, 0, .18, 1);
  opacity: 0;
}

.mobile-panel.active {
  z-index: 12;
  opacity: 1;
}

body.nav-open {
  overflow: hidden;
}

.mobile-logo img {
  overflow: hidden;
  position: absolute;
  top: 22px;
  left: var(--gap-pc);
  width: auto;
  height: var(--logo-pc);
  margin-top: -2.75px;
}

.nav-mobile-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: calc(var(--header-pc) + 88px);
  padding: 0 var(--gap-pc);
  color: var(--color-white);
}

ul.nav-mobile {
  overflow: hidden;
  position: relative;
  width: 100%;
  max-width: var(--container);
  height: auto;
  margin: 0 auto;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  flex-wrap: wrap;
  gap: 55px 88px;
}

ul.nav-mobile li {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
}

.nav-mobile-main-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-xl);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
  padding-left: 33px;
  margin-bottom: 11px;
}

.nav-mobile-main-title::before {
  content: "";
  position: absolute;
  top: calc(50% - 1.5px);
  left: 0;
  width: 22px;
  height: 3px;
  background-color: var(--color-white);
}

.nav-mobile-sub {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding-left: 33px;
}

.nav-mobile-sub-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 5.5px;
}

.nav-mobile-sub-title {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
}

.nav-mobile-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 5.5px;
}

.nav-mobile-list-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
  margin-bottom: 5.5px;
  padding-left: 19.25px;
}

.nav-mobile-list-title::before {
  content: "・";
  position: absolute;
  top: 0;
  left: 0;
  width: 18px;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
}

section.hero {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 264px;
  display: flex;
  align-items: center;
  justify-content: center;
}

section.hero span {
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

section.hero .hero-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  text-align: center;
}

section.hero h1 {
  color: var(--color-white);
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0.05em;
  text-align: center;
}

.breadcrumbs {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  text-align: left;
  font-size: var(--fs-base);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.05em;
  background-color: var(--color-alternate);
  padding: 16.5px var(--gap-pc);
  box-sizing: border-box;
}

a.home {
  padding-left: 27.5px;
  background-image: url(../images/common/icon_home.svg);
  background-size: 22px 22px;
  background-position: left calc(50% - 1px);
  background-repeat: no-repeat;
}

section.frp,
section.about,
section.works,
section.publications,
section.faq {
  overflow: visible;
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0;
  background-color: var(--color-white);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

.sidebar {
  overflow: hidden;
  position: relative;
  width: 375px;
  height: auto;
  padding-right: 44px;
  position: sticky;
  top: calc(var(--header-pc) + 55px);
  left: 0;
}

.sidebar-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.sidebar-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  background-color: var(--color-primary);
  padding: 16.5px 0 16.5px var(--gap-pc);
  box-sizing: border-box;
}

.sidebar-title span {
  font-size: var(--fs-xl);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-white);
}

ul.sidebar-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  list-style: none;
}

ul.sidebar-list li {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 13.75px 0 13.75px var(--gap-pc);
  border-bottom: 1px solid var(--color-gray);
  box-sizing: border-box;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

ul.sidebar-list li:hover,
ul.sidebar-list li.active {
  background-color: var(--color-tertiary);
}

ul.sidebar-list li span {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.sidebar-product-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 13.75px 0 13.75px var(--gap-pc);
  border-bottom: 1px solid var(--color-gray);
  box-sizing: border-box;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.sidebar-product-title:hover,
.sidebar-product-title.active {
  background-color: var(--color-tertiary);
}

.sidebar-product-title::before {
  content: "";
  position: absolute;
  top: calc(50% - 8.25px);
  right: 16.5px;
  width: 16.5px;
  height: 16.5px;
  background-image: url(../images/common/icon_sidebar.svg);
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
  transform: rotate(0);
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.sidebar-product-title.active::before {
  transform: rotate(180deg);
}

.sidebar-product-title span {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

ul.sidebar-product-list {
  display: none;
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  list-style: none;
}

ul.sidebar-product-list li {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding: 8.25px 0 8.25px calc(var(--gap-pc) + 19px);
  box-sizing: border-box;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

ul.sidebar-product-list a:last-child li {
  border-bottom: 1px solid var(--color-gray);
}

ul.sidebar-product-list li:hover,
ul.sidebar-product-list li.active {
  background-color: var(--color-alternate);
}

ul.sidebar-product-list li span {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.contents {
  overflow: hidden;
  position: relative;
  width: calc(100% - 331px);
  height: auto;
  padding-right: 44px;
  padding-bottom: 55px;
  box-sizing: border-box;
}

.contents h2 {
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
  padding-bottom: 11px;
  border-bottom: 3px solid var(--color-primary);
  box-sizing: border-box;
  margin-bottom: 33px;
  padding-top: 55px;
}

.contents p {
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 1em;
}

/* ── About: 会長挨拶 ───────────────────────────────────────────── */
.section-lists {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-list p {
  margin-bottom: 0;
}

.sign {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  text-align: right;
}

.sign .position {
  font-size: var(--fs-lg);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.sign .name {
  font-size: var(--fs-2xl);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.member-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.member-wrapper:not(:last-child) {
  margin-bottom: 33px;
}

.member-type {
  overflow: hidden;
  position: relative;
  width: 187px;
  height: auto;
  float: left;
}

.member-type span {
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
}

.member-list {
  overflow: hidden;
  position: relative;
  width: calc(100% - 187px);
  height: auto;
  float: none;
  margin-left: 187px;
  column-count: 2;
}

.member-item {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  float: none;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
}

.member-item a:hover {
  text-decoration: underline;
}

table.history-table,
table.history-table tbody {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  border-collapse: collapse;
}

table.history-table tbody tr {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

table.history-table tbody tr th {
  overflow: hidden;
  position: relative;
  width: 187px;
  height: auto;
  padding: 13.75px 0;
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  border-bottom: 1px solid var(--color-primary);
  box-sizing: border-box;
}

table.history-table tbody tr td {
  overflow: hidden;
  position: relative;
  width: calc(100% - 187px);
  height: auto;
  padding: 13.75px 0 13.75px 33px;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.05em;
  border-bottom: 1px solid var(--color-gray);
  box-sizing: border-box;
}


/* ── Topics アーカイブ ─────────────────────────────────────────── */
section.topics-archive {
  position: relative;
  width: 100%;
  height: auto;
  background-color: var(--color-white);
  padding: 55px var(--gap-pc) 88px var(--gap-pc);
}

section.topics-archive h2 {
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
  padding-bottom: 11px;
  border-bottom: 3px solid var(--color-primary);
  box-sizing: border-box;
  margin-bottom: 33px;
}

.topics-latest {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 33px;
}

.topics-latest-image {
  overflow: hidden;
  position: relative;
  width: 331px;
  height: auto;
  float: left;
}

.topics-latest-image>img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--color-gray);
  box-sizing: border-box;
}

.topics-latest-pdf {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 11px 5.5px;
  margin-top: 11px;
}

.topics-latest-pdf:hover {
  text-decoration: underline;
}

.topics-latest-pdf span {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.topics-latest-pdf img {
  display: block;
  width: 22px;
  height: auto;
  margin-top: 4px;
}

.topics-latest-body {
  overflow: hidden;
  position: relative;
  width: calc(100% - 331px);
  height: auto;
  float: none;
  margin-left: 331px;
  padding-left: 44px;
}

.topics-latest-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.topics-latest-title h3 {
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 22px;
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 0 22px;
}

.topics-latest-title h3 small {

  font-size: var(--fs-xl);
}

.topics-latest-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 33px;
}

.topics-latest-contents {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.topics-latest-content {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  border-bottom: 1px solid var(--color-gray);
  padding: 11px 0;
}

.topics-latest-content:first-child {
  border-top: 1px solid var(--color-gray);
}

.topics-backnumber-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 55px;
}

.topics-backnumber-list-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 33px;
}

.topics-backnumber {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 44px;
}

.topics-backnumber-item {
  overflow: hidden;
  position: relative;
  width: calc(50% - 22px);
  height: auto;
}

.topics-backnumber-item-image {
  overflow: hidden;
  position: relative;
  width: 220px;
  height: auto;
  float: left;
}

.topics-backnumber-item-image>img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--color-gray);
  box-sizing: border-box;
}

.topics-backnumber-item-pdf {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 11px 5.5px;
  margin-top: 11px;
}

.topics-backnumber-item-pdf span {
  font-size: var(--fs-base);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.topics-backnumber-item-pdf img {
  display: block;
  width: 16.5px;
  height: auto;
  margin-top: 2px;
}

.topics-backnumber-item-body {
  overflow: hidden;
  position: relative;
  width: calc(100% - 220px);
  height: auto;
  float: none;
  margin-left: 220px;
}

.topics-backnumber-item-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding-left: 33px;
}

.topics-backnumber-item-title h4 {
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.topics-backnumber-item-published {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  padding-left: 33px;
}

.topics-backnumber-item-published span {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.topics-backnumber-item-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 11px;
  padding: 11px 0 0 33px;
  border-top: 1px solid var(--color-primary);
  box-sizing: border-box;
}

/* ── 実績: 見出し行（タイトル＋ボタン） ───────────────────────── */
section.works-archive {
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px var(--gap-pc) 88px var(--gap-pc);
  background-color: var(--color-white);
}

section.works-archive h2 {
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
  padding-bottom: 11px;
  border-bottom: 3px solid var(--color-primary);
  box-sizing: border-box;
  margin-bottom: 22px;
}

button.button-works {
  overflow: hidden;
  position: relative;
  width: max-content;
  min-width: 184px;
  height: 44px;
  display: block;
  border: 1px solid var(--color-primary);
  border-radius: 22px;
  box-sizing: border-box;
  background-color: var(--color-white);
  color: var(--color-primary);
  font-size: var(--fs-sm);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.05em;
  cursor: pointer;
  padding: 0 22px;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
  float: right;
  margin-bottom: 33px;
}

button.button-works:hover {
  background-color: var(--color-primary);
  color: var(--color-white);
}

.tbl-wrapper {
  position: relative;
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--color-gray) transparent;
  cursor: grab;
}

.tbl-wrapper.is-grabbing {
  cursor: grabbing;
}

.tbl-wrapper::-webkit-scrollbar {
  height: 8px;
}

.tbl-wrapper::-webkit-scrollbar-track {
  background: transparent;
}

.tbl-wrapper::-webkit-scrollbar-thumb {
  background: var(--color-gray);
  border-radius: 4px;
}

.tbl-wrapper::-webkit-scrollbar-thumb:hover {
  background: var(--color-primary);
}

table.works-tbl {
  width: 100%;
  min-width: 1200px;
  border-collapse: collapse;
}

/* 先頭列（No.）を固定し、横スクロール中も常時表示 */
table.works-tbl thead th:first-child,
table.works-tbl tbody td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  box-shadow: inset -1px 0 0 var(--color-time);
}

table.works-tbl tbody td:first-child {
  z-index: 1;
  background-color: var(--color-white);
}

table.works-tbl tbody tr:nth-child(even) td:first-child {
  background-color: var(--color-alternate);
}

table.works-tbl th {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  padding: 11px 13.75px;
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  text-align: center;
  color: var(--color-font);
  border: 1px solid var(--color-time);
  box-sizing: border-box;
  background-color: var(--color-table-head);
  font-size: var(--fs-base);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
}

table.works-tbl td {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  padding: 13.75px;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.05em;
  vertical-align: top;
  color: var(--color-font);
  border: 1px solid var(--color-time);
  box-sizing: border-box;
  background-color: var(--color-white);
  font-size: var(--fs-base);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.05em;
  vertical-align: top;
  color: var(--color-font);
  border: 1px solid var(--color-time);
  box-sizing: border-box;
  background-color: var(--color-white);
}

table.works-tbl tbody tr:nth-child(even) td {
  background-color: var(--color-alternate);
}

table.works-tbl thead tr th:nth-child(2),
table.works-tbl tbody tr td:nth-child(2) {
  width: 143px;
}

table.works-tbl thead tr th:nth-child(4),
table.works-tbl tbody tr td:nth-child(4) {
  width: 99px;
}

table.works-tbl thead tr th:nth-child(5),
table.works-tbl tbody tr td:nth-child(5) {
  overflow-wrap: anywhere;
  width: 220px;
}

table.works-tbl thead tr th:nth-child(6),
table.works-tbl tbody tr td:nth-child(6) {
  width: 143px;
}

table.works-tbl thead tr th:last-child,
table.works-tbl tbody tr td:last-child {
  overflow-wrap: anywhere;
  width: 121px;
}

/* ── 実績: 施工実績概要リスト（テーブル） ─────────────────────── */
.works-table-wrapper {
  width: 100%;
  overflow-x: auto;
}

.works-table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--color-gray);
}

.works-table__th {
  padding: 11px 13.75px;
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  text-align: left;
  color: var(--color-font);
  background-color: var(--color-table-head);
  border: 1px solid var(--color-white);
  white-space: nowrap;
}

.works-table td {
  padding: 13.75px;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.05em;
  vertical-align: top;
  color: var(--color-font);
  border-bottom: 1px solid var(--color-gray);
}

.works-table__row:nth-child(even) {
  background-color: var(--color-alternate);
}

.works-table__no,
.works-table__date {
  white-space: nowrap;
}

.works-table__name a {
  color: var(--color-primary);
  text-decoration: underline;
}

.works-pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8.25px;
  margin-top: 44px;
  font-size: var(--fs-md);
}

.works-pager .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 5.5px;
  color: var(--color-font);
  border: 1px solid var(--color-gray);
}

.works-pager .page-numbers.current {
  color: var(--color-white);
  background-color: var(--color-primary);
  border-color: var(--color-primary);
}

/* ── 実績: 近年の実績（カード） ───────────────────────────────── */
.recent-works-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 33px;
  display: flex;
  flex-direction: column;
  gap: 33px;
}

.recent-works-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 33px;
  transition: all 0.3s cubic-bezier(.77, 0, .18, 1);
}

.recent-works-item:hover {
  background-color: var(--color-tertiary);
}

.recent-works-item-wrapper {
  overflow: hidden;
  position: relative;
  width: calc(100% - 440px);
  height: auto;
}

.recent-works-item-header {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 22px;
}

.recent-works-item-no {
  overflow: hidden;
  position: relative;
  width: 88px;
  height: 33px;
  font-size: var(--fs-xl);
  font-weight: 700;
  color: var(--color-white);
  background-color: var(--color-primary);
  text-align: center;
  line-height: 31px;
}

.recent-works-item-construction {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.recent-works-item-location {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
}

.recent-works-item-body {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 16.5px;
  padding-left: 22px;
}

.recent-works-item-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 16.5px;
}

.recent-works-item-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 4.8em;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--color-font);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.recent-works-item-image {
  overflow: hidden;
  position: relative;
  width: 440px;
  height: auto;
}

.recent-works-item-image img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  object-position: center;
  aspect-ratio: 3/2;
}

/* ── 実績: 詳細（single） ─────────────────────────────────────── */
section.works-single {
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0 88px 0;
  background-color: var(--color-white);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

section.works-single h2 {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
  margin-bottom: 5.5px;
  padding-top: 0;
  padding-bottom: 0;
  border-bottom: none;
}

section.works-single h3 {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-xxl);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
  margin-bottom: 11px;
}

.works-hr {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 2px;
  background-color: var(--color-border);
  margin: 5.5px 0 33px 0;
}

.works-article-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 88px;
}

.works-hr+.works-article-description {
  margin-top: 0;
}

.works-article-section-images {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 33px;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 33px 0;
  flex-wrap: wrap;
}

.works-article-section-image {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.works-article-section-image img {
  display: block;
  width: 100%;
  height: auto;
  margin-bottom: 11px;
}

.works-article-section-image.half {
  width: 50%;
  padding-right: 2%;
  float: left;
}

.works-article-section-image.half:nth-child(even) {
  padding-left: 2%;
  float: right;
}

.works-article-section-heading {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
  padding: 11px 0 0 0;
}

/* ── 実績: サイドバー（近年の実績） ───────────────────────────── */
ul.sideber-list-works li {
  padding: 0;
}

.sidebar-item-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 22px;
  padding: 3.5px var(--gap-pc);
}

.sidebar-item-no {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 700;
}

.sidebar-item-construction {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  font-size: var(--fs-base);
  font-weight: 500;
}

.sidebar-item-location {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  font-size: var(--fs-base);
  font-weight: 500;
}

/* ── 出版物・報告書 ───────────────────────────────────────────── */
.publications-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 44px;
  padding-bottom: 33px;
  border-bottom: 1px solid var(--color-gray);
  box-sizing: border-box;
  margin-bottom: 33px;
}

.publications-item-image {
  overflow: hidden;
  position: relative;
  width: 220px;
  height: auto;
}

.publications-item-image img {
  display: block;
  width: 100%;
  height: auto;
}

.publications-item-body {
  overflow: hidden;
  position: relative;
  width: calc(100% - 264px);
  height: auto;
}

.publications-item-body.full {
  width: 100%;
}

.publications-item-body h4 {
  font-size: var(--fs-xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 16.5px;
}

.publications-item-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 16.5px;
}

.publications-item-description:not(:has(+ *)) {
  margin-bottom: 0;
}

.publications-item-description p {
  margin-bottom: 0;
}

.publications-item-description a {
  color: var(--color-secondary);
  text-decoration: underline;
  font-weight: 500;
}

.publications-item-pdf {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: 0.05em;
  text-decoration: underline;
  color: var(--color-secondary);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 5.5px;
  margin-bottom: 16.5px;
}

.publications-item-pdf img {
  overflow: hidden;
  position: relative;
  width: 22px;
  height: 22px;
  object-fit: contain;
  object-position: center;
  margin-top: 3px;
}

.publications-item-table-of-contents-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 220px;
  margin-top: 33px;
  box-sizing: content-box;
}

.publications-item-mask {
  overflow: hidden;
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 220px;
  background: linear-gradient(to bottom, transparent 0%, var(--color-white) 100%);
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.publications-item-table-of-contents-wrapper.is-open {
  height: auto;
  padding-bottom: 88px;
}

.publications-item-table-of-contents-wrapper.is-open .publications-item-mask {
  opacity: 0;
}

.publications-item-table-of-contents-wrapper.is-short {
  height: auto;
  padding-bottom: 0;
}

.publications-item-table-of-contents-wrapper.is-short .publications-item-mask,
.publications-item-table-of-contents-wrapper.is-short .publications-item-button {
  display: none;
}

.publications-item-table-of-contents {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.publications-item-table-of-contents h5 {
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--color-font);
  padding-top: 22px;
  border-top: 1px solid var(--color-gray);
  box-sizing: border-box;
  margin-top: 22px;
  margin-bottom: 11px;
}

.publications-item-table-of-contents h6 {
  font-size: var(--fs-md);
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.publications-item-table-of-contents ul {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.publications-item-table-of-contents ul li {
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--color-font);
  padding-left: 48px;
}

.publications-item-remarks {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 33px;
}

.publications-item-remarks p {
  margin-bottom: 0;
}

.publications-item-button {
  overflow: hidden;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 100%;
  max-width: 440px;
  height: 44px;
  border: 1px solid var(--color-primary);
  border-radius: 22px;
  box-sizing: border-box;
  display: block;
  text-align: center;
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-primary);
  background-color: var(--color-white);
}

.section-wrapper h3 {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  padding-bottom: 33px;
  border-bottom: 1px solid var(--color-gray);
  margin-bottom: 33px;
}

.references-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 88px;
}

.references-list h3 {
  border: none;
  margin-bottom: 0;
}

table.references-tbl {
  overflow: hidden;
  position: relative;
  width: 100%;
  min-width: 1200px;
  height: auto;
  border-collapse: collapse;
  border-spacing: 0;
}

table.references-tbl th {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  vertical-align: middle;
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  border: 1px solid var(--color-border);
  box-sizing: border-box;
  background-color: var(--color-alternate);
  padding: 11px;
}

table.references-tbl td {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
  vertical-align: middle;
  font-size: var(--fs-md);
  font-weight: 400;
  border: 1px solid var(--color-border);
  box-sizing: border-box;
  padding: 11px;
}

table.references-tbl th:nth-child(1),
table.references-tbl td:nth-child(1) {
  width: 55px;
  text-align: center;
}

table.references-tbl th:nth-child(2),
table.references-tbl td:nth-child(2) {
  width: 110px;
  max-width: 110px;
  text-align: center;
}

table.references-tbl th:nth-child(4),
table.references-tbl td:nth-child(4) {
  width: 121px;
  max-width: 121px;
}

table.references-tbl th:nth-child(6),
table.references-tbl td:nth-child(6) {
  width: 121px;
  max-width: 121px;
  text-align: center;
}

/* 先頭列（No.）を固定し、横スクロール中も常時表示 */
table.references-tbl thead th:first-child,
table.references-tbl tbody td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  background-color: var(--color-alternate);
  box-shadow: inset -1px 0 0 var(--color-border);
}

table.references-tbl tbody td:first-child {
  z-index: 1;
  background-color: var(--color-white);
}




/* ── 静的ページ（プライバシーポリシー / お問合せ）───────────────── */
section.page-static {
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0 88px 0;
  background-color: var(--color-white);
}

.page-body {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  min-height: calc(100vh - 870px);
}

.page-body h2 {
  font-size: var(--fs-3xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  text-align: left;
  color: var(--color-font);
  padding-bottom: 11px;
  border-bottom: 3px solid var(--color-primary);
  margin-bottom: 33px;
}

.page-body h2:not(:first-child) {
  margin-top: 55px;
}

.page-body h3 {
  font-size: var(--fs-xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 16.5px;
}

.page-body p {
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 1em;
}

.page-body ol,
.page-body ul {
  margin: 0 0 1em;
  padding-left: 1.5em;
}

.page-body ol>li {
  list-style: decimal;
}

.page-body ul>li {
  list-style: disc;
}

.page-body li {
  font-size: var(--fs-md);
  line-height: 1.9;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 0.5em;
}

.page-body a {
  color: var(--color-secondary);
  text-decoration: underline;
}

.page-static__action {
  margin-top: 44px;
  text-align: center;
}

.page-body h4 {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  padding-bottom: 11px;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 33px;
}

.privacy-policy-list {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 33px;
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.privacy-policy-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.privacy-policy-item__title {
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  margin-bottom: 5.5px;
}

.privacy-policy-item__description {
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
  padding-left: 22px;
}

.page-body--copyright {
  margin-top: 55px;
}

.page-body__action {
  margin-top: 33px;
  text-align: center;
}

/* お問合せフォーム（Contact Form 7・本文に配置）。入力欄の基礎は base.css */
.page-body--contact .wpcf7 {
  margin-top: 11px;
}

.page-body--contact .wpcf7-form p {
  margin: 0 0 22px;
}

.page-body--contact .wpcf7-form label {
  display: block;
  margin-bottom: 8.25px;
  font-size: var(--fs-base);
  font-weight: 600;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.page-body--contact .wpcf7-not-valid-tip {
  font-size: var(--fs-sm);
  color: var(--color-red);
}

table.contact-tbl {
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
}

table.contact-tbl th {
  overflow: hidden;
  position: relative;
  width: 187px;
  height: auto;
  vertical-align: top;
  font-size: var(--fs-base);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.required {
  color: var(--color-red);
}

.submit-wrapper {
  text-align: center;
}

/* ── FAQ（カテゴリ別Q&Aアコーディオン）─────────────────────────── */
section.faq h2 {
  padding-top: 0;
}

section.faq .section-wrapper h3 {
  padding-top: 55px;
  padding-bottom: 16.5px;
  margin-bottom: 0;
}

/* 最初の section-wrapper の h3 のみ余白を詰める。
   section-wrapper は繰り返し出力されるため、先行の section-wrapper を持つ
   2つ目以降(~)を既定値(55px)へ戻し、先頭だけ 33px を効かせる */
section.faq .section-wrapper h3:first-child {
  padding-top: 33px;
}

section.faq .section-wrapper~.section-wrapper h3:first-child {
  padding-top: 55px;
}


.faq-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 0;
}

.faq-description p:last-child {
  margin-bottom: 0;
}

details.faq-item {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  border-bottom: 1px solid var(--color-gray);
  padding: 16.5px 0;
  box-sizing: border-box;
}

details.faq-item:first-child {
  border-top: 1px solid var(--color-gray);
}

summary.faq-item__q {
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 11px;
  padding-left: 55px;
}

summary.faq-item__q::before {
  content: '';
  display: block;
  position: absolute;
  left: 0;
  top: 21px;
  width: 22px;
  height: 22px;
  background-image: url('../images/common/icon_plus.svg');
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

details.faq-item[open] summary.faq-item__q::before {
  background-image: url('../images/common/icon_minus.svg');
}

span.faq-item__badge--q {
  display: inline-block;
  width: 24px;
  height: 24px;
  background-image: url('../images/common/icon_q.svg');
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  top: 2px;
  overflow: hidden;
  position: relative;
}

span.faq-item__question {
  font-size: var(--fs-lg);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.faq-item__a {
  overflow: hidden;
  position: relative;
  width: calc(100% - 55px);
  height: auto;
  margin-top: 16.5px;
  margin-left: 55px;
  padding: 16.5px 0 0 0;
  border-top: 1px solid var(--color-gray);
  box-sizing: border-box;
}

span.faq-item__badge--a {
  display: block;
  width: 25px;
  height: 25px;
  background-image: url('../images/common/icon_a.svg');
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  top: 4px;
  overflow: hidden;
  position: relative;
  float: left;
}

span.faq-item__answer {
  overflow: hidden;
  position: relative;
  display: block;
  width: calc(100% - 35px);
  height: auto;
  margin-left: 35px;
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

span.faq-item__answer a {
  color: var(--color-secondary);
  text-decoration: underline;
}


/* ── 送信完了（thanks）─────────────────────────────────────────── */
.page-static--thanks {
  text-align: center;
}

.page-static--thanks .page-body h2 {
  text-align: center;
  padding-bottom: 0;
  border-bottom: none;
  margin-bottom: 22px;
}

/* ── ニュース（一覧 / 詳細）─────────────────────────────────────── */
section.news-archive {
  position: relative;
  width: 100%;
  height: auto;
  padding: 55px 0 88px 0;
  background-color: var(--color-white);
}

article.news-single {
  position: relative;
  width: 100%;
  height: auto;
  max-width: var(--article);
  height: auto;
  margin: 0 auto;
}

.news-pager {
  margin-top: 44px;
}

.news-empty {
  font-size: var(--fs-md);
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.news-single__head {
  padding-bottom: 22px;
  border-bottom: 1px solid var(--color-gray);
  margin-bottom: 33px;
}

.news-single__meta {
  margin-bottom: 16.5px;
}

.news-single__title {
  font-size: var(--fs-2xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
}

/* ── FRP ─────────────────────────────────────────────────────────── */

.section-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-wrapper:first-of-type h2 {
  padding-top: 0;
}

.section-wrapper h2 small {
  font-size: var(--fs-xxl);
}

.section-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 33px;
}

.section-description p:last-child {
  margin-bottom: 0;
}

.greeting-image {
  width: 100%;
  max-width: min(550px, 50%);
  height: auto;
  float: right;
  margin-left: 44px;
}

.section-images {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-image {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 33px;
}

.section-image img {
  display: block;
  width: 100%;
  height: auto;
}

.section-image-title {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-image-title h3 {
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
  text-align: left;
  margin-bottom: 11px;
  padding-bottom: 0;
  border-bottom: none;
}

.section-image-title:has(+ .section-image-subtitle) h3 {
  margin-bottom: 0;
}

.presence .section-image-title {
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 11px;
}

.section-image-subtitle {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-image-subtitle h4 {
  font-size: var(--fs-xl);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: 0.025em;
  color: var(--color-font);
  margin-bottom: 11px;
}

.section-icon {
  color: var(--color-gray);
}

.section-image-description {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 33px;
}

.section-image-description p:last-child {
  margin-bottom: 0;
}

.section-image.half {
  width: 49%;
  float: left;
  margin-right: 1%;
}

.section-image.half:nth-child(even) {
  float: right;
  margin-left: 1%;
  margin-right: 0;
}

.section-image.quarter {
  width: 23.5%;
  float: left;
  margin-right: 2%;
}

.section-image.quarter:nth-child(4n+4) {
  float: right;
  margin-right: 0;
}

.section-image-description:not(:has(+ *)) {
  margin-bottom: 0;
}

.section-image-captions {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.section-image-caption {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  font-size: var(--fs-base);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.contact-wrapper {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-top: 55px;
}

.contact-head {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 22px;
}

.contact-head h5 {
  font-size: var(--fs-xxl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.contact-body {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 0 33px;
  flex-wrap: wrap;
}

.contact-logo {
  overflow: hidden;
  position: relative;
  width: max-content;
  height: auto;
}

.contact-logo img {
  display: block;
  width: auto;
  max-width: 440px;
  height: auto;
  max-height: 110px;
}

.contact-info {
  overflow: hidden;
  position: relative;
  width: auto;
  height: auto;
}

.contact-name {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
  margin-bottom: 11px;
}

.contact-name h4 {
  font-size: var(--fs-xl);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.05em;
  color: var(--color-font);
}

.contact-address {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.contact-address span {
  display: inline-block;
  margin-right: 1em;
}

.contact-number {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.contact-number span {
  display: inline-block;
  margin-right: 1em;
}

.contact-url {
  overflow: hidden;
  position: relative;
  width: 100%;
  height: auto;
}

.contact-url:hover span {
  text-decoration: underline;
}

.contact-url span {
  display: inline-block;
  margin-right: 1em;
  color: var(--color-secondary);
  font-weight: 500;
}

span.gray {
  display: inline-block;
  color: var(--color-gray);
}

.slogan-br {
  display: none;
}

.pc {
  display: block;
}

.sp {
  display: none;
}


/* ==========================================================================
   ページ遷移（Swup）
   現在はフェードなしの即時差し替え（common.js の animationSelector: false）。
   フェードを付けたい場合は common.js の animationSelector 行を削除し、
   下記を有効化する（フェード時間は transition の値で調整）。
   ---------------------------------------------------------------------------
   #swup.transition-fade {
     transition: opacity 250ms ease;
     opacity: 1;
   }
   html.is-animating #swup.transition-fade {
     opacity: 0;
   }
   @media (prefers-reduced-motion: reduce) {
     #swup.transition-fade {
       transition: none;
     }
   }
   ========================================================================== */