@charset "UTF-8";
/* =========================================
サービス共通CSS（header,footerなど各ページ共通構造）
========================================= */

/* header */
.header {
  width: 100%;
  background-color: var(--color-bg-white);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1000;
}

/* Main Header Area */
.header-main .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: var(--header-height-pc);
}

/* Header Left: Logo & Phone */
.header-left {
  display: flex;
  align-items: center;
  gap: 25px;
  /* ロゴと電話番号の間隔 */
}

/* Logo Area */
.header-logo {
  display: flex;
  align-items: center;
}

.header-logo a {
  display: flex;
  align-items: center;
  font-weight: 700;
  font-size: 24px;
  color: var(--color-main);
  letter-spacing: 0.05em;
}

.header-service-name {
  font-size: 14px;
  color: var(--color-bg-white);
  background: linear-gradient(90deg, var(--color-main-gradient-start), var(--color-main-gradient-end));
  padding: 4px 10px;
  border-radius: 4px;
  font-weight: 500;
  margin-left: 10px;
}

/* Phone Number Next to Logo */
.header-tel-box {
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-left: 1px solid var(--color-border);
  /* ロゴとの区切り線 */
  padding-left: 20px;
  line-height: 1.2;
}

.header-tel-label {
  font-size: 10px;
  color: var(--color-text-sub);
  font-weight: 500;
}

.header-tel-number {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-text-main);
  font-family: 'Roboto', sans-serif;
  display: flex;
  align-items: center;
  gap: 4px;
}

.header-tel-number .material-symbols-outlined {
  font-size: 18px;
  color: var(--color-main);
}

/* PC Navigation */
.header-nav>ul {
  display: flex;
  gap: 0;
  /* リンクのパディングで調整するため0 */
}

.header-nav>ul>li {
  position: relative;
  /* For Dropdown positioning */
}

/* Nav Links */
.header-nav a {
  font-weight: 500;
  font-size: 15px;
  color: var(--color-text-main);
  padding: 28px 15px;
  /* ヘッダーの高さに合わせてクリック領域拡大。項目増えたので少しpadding調整 */
  display: flex;
  align-items: center;
  gap: 4px;
  position: relative;
  white-space: nowrap;
}

.header-nav>ul>li:hover>a {
  color: var(--color-main);
  background-color: #f8f9fa;
  /* ホバー時の背景色を薄く追加 */
}

/* Contact Link Specifics */
.header-nav a.nav-contact {
  color: var(--color-main);
  /* 少し目立たせる */
  font-weight: 700;
}

.header-nav a.nav-contact .material-symbols-outlined {
  font-size: 20px;
  color: var(--color-main);
}

/* === Dropdown Menu (Megamenu) === */
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 260px;
  background-color: #fff;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
  border-radius: 0 0 8px 8px;
  padding: 10px 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: all 0.3s ease;
  z-index: 900;
  border-top: 2px solid var(--color-main);
}

/* お問い合わせ等は右端寄りなので右寄せにする場合があれば調整 */
.header-nav>ul>li:last-child .dropdown-menu {
  right: 0;
  left: auto;
}

.header-nav>ul>li:hover .dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.dropdown-menu li a {
  padding: 12px 20px;
  font-size: 14px;
  color: var(--color-text-main);
  display: block;
  border-bottom: 1px solid #f0f0f0;
  transition: background 0.2s;
}

.dropdown-menu li:last-child a {
  border-bottom: none;
}

/* 「一覧へ」などの特別リンク用スタイル */
.dropdown-menu li.view-all a {
  color: var(--color-main);
  font-weight: 700;
  background-color: #fcfcfc;
}

.dropdown-menu li.view-all a::before {
  content: 'arrow_forward';
  font-family: 'Material Symbols Outlined';
  font-size: 14px;
  vertical-align: middle;
  margin-right: 5px;
}

.dropdown-menu li a:hover {
  background-color: #f0f7fc;
  color: var(--color-main);
}

.dropdown-menu li a::after {
  display: none;
  /* 下線アニメーション無効化 */
}


/* Mobile Menu Button (Hamburger) */
.header-hamburger {
  width: 44px;
  height: 44px;
  position: relative;
  cursor: pointer;
  z-index: 1100;
  display: none;
  /* Default hidden */
  align-items: center;
  justify-content: center;
  margin-right: 15px;
  /* ロゴとの間隔 */
}

.header-hamburger span {
  display: block;
  width: 24px;
  height: 2px;
  background-color: var(--color-main);
  position: absolute;
  transition: 0.3s;
}

.header-hamburger span:nth-child(1) {
  top: 14px;
}

.header-hamburger span:nth-child(2) {
  top: 21px;
}

.header-hamburger span:nth-child(3) {
  top: 28px;
}

/* Mobile Menu Open State */
.header-hamburger.is-active span:nth-child(1) {
  top: 21px;
  transform: rotate(45deg);
}

.header-hamburger.is-active span:nth-child(2) {
  opacity: 0;
}

.header-hamburger.is-active span:nth-child(3) {
  top: 21px;
  transform: rotate(-45deg);
}

/* Mobile Navigation Overlay - スライド */
.sp-nav {
  position: fixed;
  top: 0;
  left: -100%;
  /* 左側に隠す */
  width: 85%;
  max-width: 320px;
  height: 100vh;
  background-color: var(--color-bg-white);
  z-index: 1050;
  transition: 0.4s ease;
  box-shadow: 5px 0 15px rgba(0, 0, 0, 0.1);
  overflow: visible;
  /* 閉じるボタンを枠外に出すため visible に */
  display: flex;
  flex-direction: column;
  padding-top: 0;
}

.sp-nav.is-active {
  left: 0;
  /* 表示 */
}

/* SP Nav Inner (Scrollable Content) */
.sp-nav-inner {
  height: 100%;
  overflow-y: auto;
  padding-top: 0;
  padding-bottom: 60px;
  /* 最下部の余白確保 */
  background-color: #fff;
}

/* SP Nav Close Button (Outside) */
.sp-nav-close-btn {
  position: absolute;
  top: 10px;
  right: -50px;
  /* 枠外右側 */
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #fff;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 4px;
  z-index: 1060;
}

.sp-nav-close-btn .material-symbols-outlined {
  font-size: 32px;
}

/* 修正: 親ulに対してflex指定を行うが、サブメニューには影響させないようセレクタを限定 */
ul.sp-nav-list {
  display: flex;
  flex-direction: column;
  width: 100%;
  margin-top: 0;
  padding-top: 0;
}

.sp-nav-list>li {
  border-bottom: 1px solid var(--color-border);
}

/* Accordion Style for SP */
.sp-accordion-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 20px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  color: var(--color-text-main);
  transition: background 0.2s;
}

.sp-accordion-toggle:hover {
  background-color: #f9f9f9;
}

.sp-accordion-toggle.is-open {
  color: var(--color-main);
  background-color: #f0f7fc;
  border-bottom: none;
}

.sp-accordion-icon {
  font-size: 24px;
  transition: transform 0.3s;
}

.sp-accordion-toggle.is-open .sp-accordion-icon {
  transform: rotate(180deg);
}

/* 修正ポイント: 詳細度を上げて初期状態を確実に非表示にする */
ul.sp-submenu {
  display: none;
  background-color: #f8f9fa;
  border-top: 1px solid var(--color-border);
  padding: 5px 0;
  flex-direction: column;
  /*念のため*/
}

/* JSで is-open が付与されたら表示 */
ul.sp-submenu.is-open {
  display: block;
}

.sp-submenu li {
  border-bottom: none;
}

.sp-submenu a {
  display: block;
  padding: 12px 20px 12px 30px;
  /* インデント */
  font-size: 14px;
  color: var(--color-text-main);
}

.sp-submenu a::before {
  content: '-';
  margin-right: 5px;
  color: #ccc;
}

.sp-submenu a:hover {
  color: var(--color-main);
  background-color: #eee;
}

/* カテゴリトップリンク用スタイル（追加） */
.sp-submenu a.category-top-link {
  font-weight: 700;
  color: var(--color-text-main);
  background-color: #fff;
  border-bottom: 1px solid #eee;
}

.sp-submenu a.category-top-link::before {
  content: none;
  /* ハイフンなし */
}

.sp-nav-link {
  display: block;
  padding: 15px 20px;
  /* 少し狭く調整 */
  font-size: 16px;
  font-weight: 700;
  color: var(--color-text-main);
}

.sp-nav-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1000;
  display: none;
}

.sp-nav-overlay.is-active {
  display: block;
}


@media screen and (max-width: 900px) {

  /* タブレット以下 */
  .header-main .container {
    height: var(--header-height-sp);
    justify-content: flex-start;
    /* 左寄せ */
  }

  .header-left {
    gap: 10px;
    /* ロゴ等はそのまま */
  }

  .header-nav {
    display: none;
  }

  .header-hamburger {
    display: flex;
  }

  .header-logo a {
    font-size: 18px;
  }

  .header-service-name {
    font-size: 11px;
    padding: 3px 8px;
  }

  .header-tel-box {
    display: none;
  }

  /* スマホ/タブレットでは電話番号非表示 */
}


.header-logo .logo-image {
  max-width: 180px;
  height: auto;
}

@media screen and (max-width:900px) {
  .header-logo .logo-image {
    max-width: 140px;
  }
}

@media screen and (min-width:901px) {
  .header-logo>a {
    flex-direction: column;
    gap: 5px;
  }

  .header-service-name {
    font-size: 10px;
    width: 100%;
    margin: 0;
    text-align: center;
    padding: 0 10px;
  }
}

/* footer */
.footer {
  background: linear-gradient(135deg, #001f42, var(--color-main));
  color: #fff;
  padding: 60px 0 20px;
  font-size: 14px;
}

/* Footer Grid Layout */
.footer-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  /* 4 Columns */
  gap: 40px;
  margin-bottom: 60px;
}

.footer-col-title {
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--color-sub);
  display: inline-block;
  min-width: 100px;
}
.footer-col-title.is-dummy{
  border-color:transparent;
}

.footer-sub-section {
  margin-bottom: 25px;
}

.footer-sub-title {
  font-size: 13px;
  color: var(--color-sub);
  font-weight: 700;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
}

.footer-list li {
  margin-bottom: 8px;
}

.footer-list a {
  color: #e0e0e0;
  font-size: 13px;
  display: block;
  padding-left: 10px;
  border-left: 1px solid rgba(255, 255, 255, 0.2);
  transition: all 0.3s;
}

.footer-list a:hover {
  color: #fff;
  border-left-color: var(--color-sub);
  background: rgba(255, 255, 255, 0.05);
}

/* Footer Bottom */
.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: 20px;
  text-align: center;
  color: #aaa;
  font-size: 12px;
}

/* Button in Footer */
.footer-btn-shop {
  display: block;
  margin-top: 20px;
  padding: 15px;
  border: 1px solid rgba(255, 255, 255, 0.3);
  text-align: center;
  border-radius: 4px;
  transition: 0.3s;
  background: rgba(0, 0, 0, 0.2);
  font-weight: 700;
}

.footer-btn-shop:hover {
  border-color: var(--color-sub);
  background: rgba(0, 162, 230, 0.1);
}

@media screen and (max-width: 900px) {
  .footer-grid {
    grid-template-columns: repeat(2, 1fr);
    /* 2 Columns on Tablet */
  }
}

@media screen and (max-width: 600px) {
  .footer-grid {
    grid-template-columns: 1fr;
    /* 1 Column on Mobile */
    gap: 30px;
    text-align: left;
    /* 左寄せに変更 */
  }

  .footer-col-title {
    display: inline-block;
    /* ブロック解除して左寄せ維持 */
    width: auto;
    text-align: left;
    min-width: 120px;
  }
  
  .footer-col-title.is-dummy{
    display:none;
  }

  .footer-sub-title {
    justify-content: flex-start;
    /* 左寄せ */
  }

  .footer-list a {
    padding-left: 10px;
    border-left: 1px solid rgba(255, 255, 255, 0.2);
  }
}

/* main-content */
/* .main-content {
  padding-top: calc(var(--header-height-pc) + 40px);
  min-height: 80vh;
}

@media screen and (max-width: 900px) {
  .main-content {
    padding-top: calc(var(--header-height-sp) + 20px);
  }
}
 */
.main-content {
  min-height: 100vh;
}