/* ===== Theme base styles ===== */
html {
  font-family: 'Zen Old Mincho', serif;
  color: #1F2937;
}

body {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  background-color: #FFFFFF;
}

/* ===== Font settings ===== */
h1, h2, h3, h4, h5, h6 {
  font-family: 'Zen Old Mincho', sans-serif !important;
}
body, p, span, li, td, th, a, input, textarea, select, button, label {
  font-family: 'Zen Old Mincho', sans-serif !important;
}

/* ===== WordPress admin bar icon fix ===== */
#wpadminbar .ab-icon,
#wpadminbar .ab-icon::before,
#wpadminbar .ab-item::before {
  font-family: dashicons !important;
}

/* ===== Rich text (prose) styles for CMS content ===== */
.prose {
  color: #374151;
  line-height: 1.7;
}
.prose h1 {
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.3;
  margin-top: 1.5rem;
  margin-bottom: 0.75rem;
  color: #111827;
}
.prose h2 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #1A2B4C;
  margin-top: 2.5rem;
  margin-bottom: 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid #F8F9FA;
}
.prose h3 {
  font-size: 1.25rem;
  font-weight: 700;
  color: #1A2B4C;
  margin-top: 2rem;
  margin-bottom: 1rem;
}
.prose p {
  margin-bottom: 1.5rem;
  line-height: 1.8;
  color: #4B5563;
}
.prose ul, .prose ol {
  padding-left: 1.5rem;
  margin-bottom: 1.5rem;
  color: #4B5563;
}
.prose ul { list-style-type: disc; }
.prose ol { list-style-type: decimal; }
.prose li {
  margin-bottom: 0.5rem;
  line-height: 1.6;
}
.prose blockquote {
  border-left: 4px solid #d1d5db;
  padding-left: 1.25rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  margin: 0 0 1rem 0;
  color: #6b7280;
  font-style: italic;
}
.prose blockquote p { margin-bottom: 0; }
.prose code {
  background-color: #f3f4f6;
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  font-family: ui-monospace, monospace;
  font-size: 0.875em;
  color: #e11d48;
}
.prose pre {
  background-color: #1f2937;
  color: #f9fafb;
  padding: 1rem;
  border-radius: 0.5rem;
  overflow-x: auto;
  margin-bottom: 1rem;
}
.prose pre code {
  background-color: transparent;
  padding: 0;
  color: inherit;
}
.prose a { color: #3b82f6; text-decoration: underline; }
.prose a:hover { color: #2563eb; }
.prose img {
  max-width: 100%;
  height: auto;
  border-radius: 0.5rem;
  margin: 2rem 0;
}
.prose hr {
  border: none;
  border-top: 1px solid #e5e7eb;
  margin: 1.5rem 0;
}
.prose strong { font-weight: 600; color: #111827; }
.prose em { font-style: italic; }
.prose u { text-decoration: underline; }
.prose s { text-decoration: line-through; }

/* Tiptap text alignment support */
.prose [style*="text-align: center"],
.prose [style*="text-align:center"] {
  text-align: center !important;
}
.prose [style*="text-align: right"],
.prose [style*="text-align:right"] {
  text-align: right !important;
}
.prose [style*="text-align: justify"],
.prose [style*="text-align:justify"] {
  text-align: justify !important;
}

/* ===== Custom CSS edits (logo / footer / hero text) ===== */
#root > div.min-h-screen > header.fixed > div.max-w-7xl > div.flex > button.site-logo:nth-of-type(1) {
  background-image: url(https://img.dekirukun.ai/site-images/site_a4830768_20260420_072105_6d4b6358.webp) !important;
  background-size: cover !important;
  background-position: center !important;
}
#root > div.min-h-screen > footer.w-full > div.max-w-7xl > div.grid:nth-of-type(1) > div:nth-of-type(1) > div.flex {
  background-image: url(https://img.dekirukun.ai/site-images/site_a4830768_20260420_072341_a99a1905.png) !important;
  background-size: cover !important;
  background-position: center !important;
}

/* ===== Scrollbar hide utility ===== */
.scrollbar-hide::-webkit-scrollbar { display: none; }
.scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }

/* ===== Inner page header overrides =====
   元データはCases / About / News / Service の4ページ分が同一定義で4回重複していたため、
   セレクタが共通であることから1ブロックに統合しました。
   下層ページ(<main>に pt-[88px] が付与されたページ)では、ヘッダーが白背景に切り替わります。 */
#root:has(main.pt-\[88px\]) header.fixed {
  background-color: #FFFFFF !important;
  box-shadow: 0 1px 3px rgba(0,0,0,0.05) !important;
}
#root:has(main.pt-\[88px\]) header.fixed .site-logo {
  padding-top: 12px !important;
  padding-bottom: 12px !important;
}
#root:has(main.pt-\[88px\]) header.fixed .site-logo img {
  filter: none !important;
}
#root:has(main.pt-\[88px\]) header.fixed nav a {
  color: #1A2B4C !important;
}
#root:has(main.pt-\[88px\]) header.fixed nav a:hover {
  color: #D4AF37 !important;
}
/* CTAボタン（ご相談・お問い合わせ）の文字色を白に維持。
   元データの `nav a[href="/contact"]` セレクタは WordPress 出力URL（home_url('/contact/')）の
   `http://example.local/contact/` にマッチしないため、末尾一致 [href$="/contact/"] で対応。
   背景はTailwindの `bg-[#D4AF37]` がそのまま使われるため、ここでは色だけ上書きする。 */
#root:has(main.pt-\[88px\]) header.fixed nav a[href$="/contact/"] {
  color: #FFFFFF !important;
}



/* ===== WordPress 管理バー対応 =====
   ログイン中はWP管理バー(PC: 32px, SP: 46px) が画面上端に固定表示される。
   サイトヘッダーも `position: fixed; top: 0` のため、管理バーに隠れて
   <main>の `pt-[88px]` との間に余白が生まれる。管理バーの高さ分だけ
   ヘッダーを下にずらして位置を合わせる。 */
body.admin-bar header.fixed {
  top: 32px;
}
@media screen and (max-width: 782px) {
  body.admin-bar header.fixed {
    top: 46px;
  }
}

/* ===== front-page スクロール時のヘッダー =====
   front-page では初期状態は透明(ヒーロー画像にかぶせる)、
   一定量スクロールしたら .scrolled クラスがJSで付与され、
   ネイビー背景＋影に切り替わる。文字色とロゴは白のまま。
   下層ページの `#root:has(main.pt-\[88px\]) header.fixed` ルールの方が
   詳細度が高いため、下層ページのヘッダーはスクロールしても白背景を保つ。 */
header.fixed.scrolled {
  background-color: #1A2B4C !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
}
header.fixed.scrolled .site-logo {
  padding-top: 12px !important;
  padding-bottom: 12px !important;
}

/* ===== Header current navigation ===== */
.site-nav__link {
  position: relative;
}

.site-nav__link::after {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 18px;
  height: 2px;
  background-color: #D4AF37;
  opacity: 0;
  transform: scaleX(0);
  transform-origin: center;
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.site-nav__link.is-active,
.site-nav__link[aria-current="page"] {
  color: #D4AF37 !important;
}

.site-nav__link.is-active::after,
.site-nav__link[aria-current="page"]::after {
  opacity: 1;
  transform: scaleX(1);
}

.mobile-menu__link.is-active,
.mobile-menu__link[aria-current="page"] {
  color: #D4AF37;
}

/* ===== PCロゴ hover アニメーション ===== */
@media (min-width: 1024px) {
  header.fixed .site-logo img {
    transition:
      opacity 0.35s ease,
      filter 0.35s ease;
  }

  header.fixed .site-logo:hover img {
    opacity: 0.72;
    filter: brightness(0) invert(1) opacity(0.72);
  }

  #root:has(main.pt-\[88px\]) header.fixed .site-logo:hover img {
    opacity: 0.72;
    filter: none !important;
  }
}


/* アコーディオンメニュー */
[data-faq-toggle] {
  cursor: pointer;
}

[data-faq-content] {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-height 0.3s ease, opacity 0.2s ease;
}

[data-faq-item].is-open [data-faq-content] {
  opacity: 1;
}

[data-faq-icon] {
  transition: transform 0.3s ease;
}

[data-faq-item].is-open [data-faq-icon] {
  transform: rotate(180deg);
}
/* ===== Front page scroll indicator ===== */
.front-scroll-indicator {
  position: absolute;
  left: 50%;
  bottom: 32px;
  z-index: 3;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  color: #FFFFFF;
  opacity: 0.78;
  transform: translateX(-50%);
  pointer-events: none;
}

.front-scroll-indicator__text {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
}

.front-scroll-indicator__line {
  position: relative;
  display: block;
  width: 1px;
  height: 42px;
  background-color: rgba(255, 255, 255, 0.35);
  overflow: hidden;
}

.front-scroll-indicator__line::after {
  content: "";
  position: absolute;
  top: -16px;
  left: 0;
  width: 1px;
  height: 16px;
  background-color: #D4AF37;
  animation: scrollIndicatorLine 1.8s ease-in-out infinite;
}

@keyframes scrollIndicatorLine {
  0% {
    transform: translateY(0);
  }

  100% {
    transform: translateY(58px);
  }
}

@media (max-width: 640px) {
  .front-scroll-indicator {
    bottom: 22px;
  }

  .front-scroll-indicator__line {
    height: 34px;
  }
}

/* ===== Case content (実績・導入事例詳細用) ===== */
.case-content h3 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #1A2B4C;
  margin-top: 2.5rem;
  margin-bottom: 1.25rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid #F8F9FA;
}
.case-content h4 {
  font-size: 1.25rem;
  font-weight: 700;
  color: #1A2B4C;
  margin-top: 2rem;
  margin-bottom: 1rem;
  padding-left: 0.75rem;
  border-left: 4px solid #D4AF37;
}
.case-content p {
  margin-bottom: 1.5rem;
  line-height: 1.8;
  color: #4B5563;
}
.case-content ul {
  list-style-type: disc;
  padding-left: 1.5rem;
  margin-bottom: 1.5rem;
  color: #4B5563;
}
.case-content li {
  margin-bottom: 0.5rem;
  line-height: 1.6;
}
.case-content a.contact-link {
  color: #D4AF37;
  text-decoration: none;
  font-weight: bold;
  transition: all 0.3s ease;
}
.case-content a.contact-link:hover {
  text-decoration: underline;
  color: #b8952b;
}

/* ===== Archive pagination ===== */
.archive-pagination .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.archive-pagination .nav-links {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
}

.archive-pagination .page-numbers {
  min-width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 13px;
  background-color: transparent;
  border: 0;
  border-radius: 4px;
  color: #1A2B4C;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.archive-pagination a.page-numbers:hover,
.archive-pagination a.page-numbers:focus-visible {
  background-color: rgba(26, 43, 76, 0.06);
  color: #1A2B4C;
  outline: none;
  transform: translateY(-1px);
}

.archive-pagination .page-numbers.current {
  background-color: #1A2B4C;
  color: #FFFFFF;
  box-shadow: none;
}

.archive-pagination .page-numbers.dots {
  min-width: 24px;
  padding: 0 4px;
  background-color: transparent;
  color: #999999;
}

.archive-pagination .page-numbers.prev,
.archive-pagination .page-numbers.next {
  min-width: auto;
  gap: 8px;
  padding: 0 10px;
  background-color: transparent;
}

.archive-pagination a.page-numbers.prev:hover,
.archive-pagination a.page-numbers.prev:focus-visible,
.archive-pagination a.page-numbers.next:hover,
.archive-pagination a.page-numbers.next:focus-visible {
  background-color: transparent;
  color: #D4AF37;
  box-shadow: none;
}

.archive-pagination .page-numbers.prev::before,
.archive-pagination .page-numbers.next::after {
  content: "";
  width: 7px;
  height: 7px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
}

.archive-pagination .page-numbers.prev::before {
  transform: rotate(-135deg);
}

.archive-pagination .page-numbers.next::after {
  transform: rotate(45deg);
}

@media (max-width: 640px) {
  .archive-pagination .nav-links {
    gap: 6px;
  }

  .archive-pagination .page-numbers {
    min-width: 36px;
    height: 36px;
    padding: 0 11px;
    font-size: 13px;
  }

  .archive-pagination .page-numbers.prev,
  .archive-pagination .page-numbers.next {
    min-width: auto;
    padding: 0 13px;
  }
}

/* ===== Animations ===== */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideInUp {
  from { transform: translateY(30px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

.animate-fadeIn {
  animation: fadeIn 0.8s ease-out forwards;
}

.animate-slideInUp {
  animation: slideInUp 0.8s ease-out forwards;
}

.delay-100 { animation-delay: 100ms; }
.delay-200 { animation-delay: 200ms; }
.delay-300 { animation-delay: 300ms; }

/* ===== Background pattern (hero / CTA) ===== */
.bg-pattern {
  background-image: radial-gradient(circle at 2px 2px, rgba(255,255,255,0.05) 1px, transparent 0);
  background-size: 32px 32px;
}

/* ========================================
   Contact Form 7 カスタムスタイル
   ======================================== */

#contact-form-wrapper .wpcf7-form {
  font-size: 14px;
  color: #333333;
}

#contact-form-wrapper .wpcf7-form p {
  margin: 0 0 24px 0;
}

#contact-form-wrapper .wpcf7-form p:last-of-type {
  margin-bottom: 0;
}

/* ラベル */
#contact-form-wrapper .form-label {
  display: block;
  font-size: 14px;
  font-weight: 700;
  color: #1A2B4C;
  margin-bottom: 8px;
}

#contact-form-wrapper .form-required {
  display: inline-block;
  background-color: #D32F2F;
  color: #FFFFFF;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 3px;
  margin-left: 8px;
  letter-spacing: 0.05em;
  vertical-align: middle;
}

#contact-form-wrapper .form-optional {
  display: inline-block;
  background-color: #E5E7EB;
  color: #666666;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 3px;
  margin-left: 8px;
  letter-spacing: 0.05em;
  vertical-align: middle;
}

/* テキスト入力・テキストエリア */
#contact-form-wrapper input[type="text"],
#contact-form-wrapper input[type="email"],
#contact-form-wrapper input[type="tel"],
#contact-form-wrapper textarea {
  width: 100%;
  padding: 12px 16px;
  background-color: #F8F9FA;
  border: 1px solid #D1D5DB;
  border-radius: 6px;
  font-size: 14px;
  color: #333333;
  font-family: inherit;
  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
  box-sizing: border-box;
}

#contact-form-wrapper textarea {
  resize: vertical;
  min-height: 160px;
  line-height: 1.7;
}

#contact-form-wrapper input:focus,
#contact-form-wrapper textarea:focus {
  outline: none;
  border-color: #1A2B4C;
  background-color: #FFFFFF;
  box-shadow: 0 0 0 3px rgba(26, 43, 76, 0.08);
}

#contact-form-wrapper input::placeholder,
#contact-form-wrapper textarea::placeholder {
  color: #BBBBBB;
}

/* チェックボックス（お問い合わせ種別）の縦並び＋ボックス化 */
#contact-form-wrapper .wpcf7-checkbox,
#contact-form-wrapper .wpcf7-acceptance {
  display: block;
}

#contact-form-wrapper .wpcf7-list-item {
  display: block;
  margin: 0 0 10px 0;
  width: 100%;
}

#contact-form-wrapper .wpcf7-list-item:last-child {
  margin-bottom: 0;
}

#contact-form-wrapper .wpcf7-list-item label {
  display: flex;
  align-items: center;
  cursor: pointer;
  line-height: 1.6;
}

#contact-form-wrapper .wpcf7-list-item input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin: 1px 12px 0 0;
  accent-color: #1A2B4C;
  flex-shrink: 0;
  cursor: pointer;
}

#contact-form-wrapper .wpcf7-list-item-label {
  font-size: 14px;
  color: #333333;
  line-height: 1.8;
}

/* 同意チェックボックスエリア */
#contact-form-wrapper .agreement-area {
  margin-top: 36px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

#contact-form-wrapper .agreement-area p {
  margin: 0 0 10px 0;
}

#contact-form-wrapper .agreement-area p:last-child {
  margin-bottom: 0;
}

#contact-form-wrapper .agreement-area a {
  color: #D4AF37;
  font-weight: 600;
  text-decoration: underline;
}

#contact-form-wrapper .agreement-area a:hover {
  color: #b8952b;
}

/* 送信ボタンエリア */
#contact-form-wrapper .submit-area {
  text-align: center;
  margin-top: 40px;
  padding-top: 32px;
  border-top: 1px solid #E5E7EB;
}

#contact-form-wrapper .wpcf7-submit {
  background-color: #1A2B4C;
  color: #FFFFFF;
  padding: 16px 64px;
  border: none;
  border-radius: 4px;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  transition: background-color 0.3s, transform 0.2s, box-shadow 0.3s;
  min-width: 280px;
  letter-spacing: 0.05em;
  box-shadow: 0 2px 8px rgba(26, 43, 76, 0.2);
}

#contact-form-wrapper .wpcf7-submit:hover {
  background-color: #0F1F38;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(26, 43, 76, 0.3);
}

#contact-form-wrapper .wpcf7-submit:disabled {
  background-color: #999999;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

#contact-form-wrapper .submit-note {
  font-size: 12px;
  color: #999999;
  margin-top: 16px !important;
  text-align: center;
}

/* CF7 バリデーション・レスポンス */
#contact-form-wrapper .wpcf7-not-valid-tip {
  color: #D32F2F;
  font-size: 13px;
  margin-top: 6px;
  display: block;
}

#contact-form-wrapper .wpcf7-response-output {
  margin: 32px 0 0 0 !important;
  padding: 16px 20px !important;
  border-radius: 6px;
  font-size: 14px;
  text-align: center;
  border-width: 1px !important;
}

#contact-form-wrapper .wpcf7-mail-sent-ok {
  background-color: #E8F5E9;
  border-color: #4CAF50 !important;
  color: #2E7D32;
}

#contact-form-wrapper .wpcf7-validation-errors,
#contact-form-wrapper .wpcf7-mail-sent-ng,
#contact-form-wrapper .wpcf7-acceptance-missing {
  background-color: #FFEBEE;
  border-color: #D32F2F !important;
  color: #C62828;
}

#contact-form-wrapper .wpcf7-spinner {
  margin-left: 12px;
}

/* スマートフォン対応 */
@media (max-width: 640px) {
  #contact-form-wrapper {
    padding: 28px 20px;
  }
  #contact-form-wrapper .wpcf7-submit {
    width: 100%;
    min-width: 0;
    padding: 16px 24px;
  }
}

/* お問い合わせページ：規約確認モーダル */
body.is-legal-modal-open {
  overflow: hidden;
}

.contact-legal-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.24s ease, visibility 0.24s ease;
}

.contact-legal-modal[hidden] {
  display: none;
}

.contact-legal-modal.is-open {
  opacity: 1;
  visibility: visible;
}

.contact-legal-modal__overlay {
  position: absolute;
  inset: 0;
  background-color: rgba(15, 23, 42, 0.62);
}

.contact-legal-modal__dialog {
  position: relative;
  z-index: 1;
  width: min(900px, 100%);
  max-height: min(82vh, 760px);
  display: flex;
  flex-direction: column;
  background-color: #FFFFFF;
  border-radius: 8px;
  box-shadow: 0 24px 80px rgba(15, 23, 42, 0.28);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.24s ease, transform 0.24s ease;
}

.contact-legal-modal.is-open .contact-legal-modal__dialog {
  opacity: 1;
  transform: translateY(0);
}

.contact-legal-modal__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 28px 32px 20px;
  border-bottom: 1px solid #E5E7EB;
}

.contact-legal-modal__eyebrow {
  display: block;
  margin-bottom: 8px;
  color: #D4AF37;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.12em;
}

.contact-legal-modal__title {
  color: #1A2B4C;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.4;
}

.contact-legal-modal__close {
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #D1D5DB;
  border-radius: 9999px;
  background-color: #FFFFFF;
  color: #1A2B4C;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.contact-legal-modal__close:hover {
  background-color: #1A2B4C;
  border-color: #1A2B4C;
  color: #FFFFFF;
}

.contact-legal-modal__close:focus-visible,
.contact-legal-modal__dialog:focus-visible,
.contact-legal-modal__body:focus-visible,
.contact-legal-modal a:focus-visible,
#contact-form-wrapper .agreement-area a:focus-visible {
  outline: 3px solid rgba(212, 175, 55, 0.45);
  outline-offset: 3px;
}

.contact-legal-modal__body {
  overflow-y: auto;
  padding: 32px;
  -webkit-overflow-scrolling: touch;
}

.contact-legal-modal__content > :last-child {
  margin-bottom: 0;
}

@media (max-width: 640px) {
  .contact-legal-modal {
    padding: 16px;
    align-items: flex-end;
  }

  .contact-legal-modal__dialog {
    max-height: 88vh;
  }

  .contact-legal-modal__header {
    padding: 22px 20px 16px;
  }

  .contact-legal-modal__title {
    font-size: 20px;
  }

  .contact-legal-modal__close {
    width: 40px;
    height: 40px;
    font-size: 26px;
  }

  .contact-legal-modal__body {
    padding: 24px 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .contact-legal-modal,
  .contact-legal-modal__dialog {
    transition: none;
  }
}

/* ===== パンくず =====*/
.breadcrumbs a {
  color: #999999;
  text-decoration: none;
  transition: color 0.2s ease;
}
.breadcrumbs a:hover {
  color: #D4AF37;
}
.breadcrumbs > span {
  color: #999999;
}

/* ===== モバイルメニュー（ハンバーガー） =====
   - ボタン z-index: 110 (header z-100 より上で常にクリック可能)
   - メニュー本体 z-index: 95  (header の下、本文の上)
   - メニュー展開時はヘッダー背景をネイビーに固定して色ズレ防止 */

.mobile-menu {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 95;
  background-color: #1A2B4C;
  display: flex;
  flex-direction: column;
  padding: 96px 24px 32px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-12px);
  transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
}
.mobile-menu.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.mobile-menu__inner {
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
}

.mobile-menu__list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.mobile-menu__link {
  display: block;
  padding: 18px 8px;
  color: #FFFFFF;
  font-size: 16px;
  font-weight: 500;
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  transition: color 0.3s ease;
}
.mobile-menu__link:hover {
  color: #D4AF37;
}

.mobile-menu__cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 32px;
  padding: 16px 24px;
  background-color: #D4AF37;
  color: #FFFFFF;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  border-radius: 4px;
  transition: background-color 0.3s ease, transform 0.2s ease;
}
.mobile-menu__cta:hover {
  background-color: #C4A030;
  transform: translateY(-1px);
}

/* メニュー展開時のbodyスクロールロック */
body.is-menu-open {
  overflow: hidden;
}

/* ===== Mobile menu header fix ===== */

/* 下層ページ通常時：白ヘッダー上でハンバーガーをネイビーにする */
#root:has(main.pt-\[88px\]) header.fixed #js-menu-toggle {
  color: #1A2B4C !important;
}

/* メニュー展開時：下層ページでもヘッダーをネイビーにする */
body.is-menu-open #root:has(main.pt-\[88px\]) header.fixed {
  background-color: #1A2B4C !important;
  box-shadow: none !important;
}

/* メニュー展開時：ロゴを白に戻す */
body.is-menu-open #root:has(main.pt-\[88px\]) header.fixed .site-logo img {
  filter: brightness(0) invert(1) !important;
}

/* メニュー展開時：閉じるアイコンを白にする */
body.is-menu-open #root:has(main.pt-\[88px\]) header.fixed #js-menu-toggle {
  color: #FFFFFF !important;
}


/* WP管理バー対応 — メニューも管理バー分だけ下にずらす */
body.admin-bar .mobile-menu {
  top: 32px;
}
@media screen and (max-width: 782px) {
  body.admin-bar .mobile-menu {
    top: 46px;
  }
}

/* ===== Single Cases content ===== */
.case-single-content {
  color: #4B5563;
  font-size: 15px;
  line-height: 1.9;
}

.case-single-content > *:first-child {
  margin-top: 0;
}

.case-single-content > *:last-child {
  margin-bottom: 0;
}

.case-single-content p {
  margin-bottom: 1.6rem;
}

.case-single-content h2 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #1A2B4C;
  line-height: 1.5;
  margin: 2.8rem 0 1.2rem;
  padding-bottom: 0.7rem;
  border-bottom: 2px solid #F0F0F0;
}

.case-single-content h3 {
  font-size: 1.25rem;
  font-weight: 700;
  color: #1A2B4C;
  line-height: 1.5;
  margin: 2.3rem 0 1rem;
  padding-left: 0.85rem;
  border-left: 4px solid #D4AF37;
}

.case-single-content h4 {
  font-size: 1.1rem;
  font-weight: 700;
  color: #1A2B4C;
  margin: 2rem 0 0.8rem;
}

.case-single-content ul,
.case-single-content ol {
  margin: 0 0 1.6rem 0;
  padding-left: 1.5rem;
}

.case-single-content ul {
  list-style: disc;
}

.case-single-content ol {
  list-style: decimal;
}

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

.case-single-content a {
  color: #D4AF37;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.case-single-content a:hover {
  color: #b8952b;
}

.case-single-content blockquote {
  margin: 2rem 0;
  padding: 1.2rem 1.4rem;
  background-color: #F8F9FA;
  border-left: 4px solid #D4AF37;
  color: #555555;
}

.case-single-content blockquote p:last-child {
  margin-bottom: 0;
}

.case-single-content img {
  max-width: 100%;
  height: auto;
  border-radius: 4px;
}

.case-single-content figure {
  margin: 2rem 0;
}

.case-single-content figcaption,
.case-single-content .wp-caption-text {
  margin-top: 0.7rem;
  color: #888888;
  font-size: 13px;
  line-height: 1.6;
  text-align: center;
}

.case-single-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 2rem 0;
  font-size: 14px;
}

.case-single-content th,
.case-single-content td {
  border: 1px solid #E5E7EB;
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
}

.case-single-content th {
  background-color: #F8F9FA;
  color: #1A2B4C;
  font-weight: 700;
}

.case-single-content .wp-block-image,
.case-single-content .wp-block-gallery,
.case-single-content .wp-block-embed {
  margin: 2rem 0;
}

.case-single-content .aligncenter {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

.case-single-content .alignleft {
  float: left;
  margin: 0.4rem 1.5rem 1rem 0;
}

.case-single-content .alignright {
  float: right;
  margin: 0.4rem 0 1rem 1.5rem;
}

.case-page-links {
  margin-top: 2rem;
  color: #1A2B4C;
  font-weight: 600;
}

@media (max-width: 640px) {
  .case-single-content {
    font-size: 14px;
  }

  .case-single-content h2 {
    font-size: 1.3rem;
  }

  .case-single-content h3 {
    font-size: 1.15rem;
  }

  .case-single-content .alignleft,
  .case-single-content .alignright {
    float: none;
    display: block;
    margin: 2rem auto;
  }
}

/* ===== Page top button ===== */
.page-top-button {
  position: fixed;
  right: 32px;
  bottom: 32px;
  z-index: 50;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #1A2B4C;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 9999px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(8px);
  transition: opacity 0.25s ease, visibility 0.25s ease, transform 0.25s ease, background-color 0.25s ease;
}

.page-top-button.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

.page-top-button:hover {
  background-color: #D4AF37;
}

@media (max-width: 640px) {
  .page-top-button {
    right: 20px;
    bottom: 20px;
    width: 44px;
    height: 44px;
  }
}