@charset "utf-8";

/* =========================================
   1. ベース設定 & 変数
   ========================================= */
:root {
  --color-primary: #ffd600; /* ロゴの黄色 */
  --color-accent-pink: #e89db4;
  --color-accent-blue: #79c5f4;
  --color-accent-green: #9fd5a5;
  --color-text: #4a4a4a;
  --color-text-light: #7a7a7a;
  --bg-body: #fafafa;
  --bg-white: #ffffff;
  --font-base: 'M PLUS Rounded 1c', 'Kosugi Maru', sans-serif;
  --shadow-card: 0 10px 30px -5px rgba(0, 0, 0, 0.08);
  --shadow-float: 0 15px 35px -5px rgba(0, 0, 0, 0.12);
  --radius-card: 24px;

  /* 文字サイズ統一変数 */
  --fs-hero: clamp(24px, 5.5vw, 42px);
  --fs-heading: clamp(18px, 4vw, 24px);
  --fs-body: clamp(14px, 3.5vw, 16px);
  --fs-small: 11px;
}

/* =========================================
   2. 基本スタイル (Typography & Base)
   ========================================= */
body {
  overflow-x: hidden;
  background-color: var(--bg-body);
  background-image: radial-gradient(#f0f0f0 1px, transparent 1px);
  background-size: 20px 20px;
  font-family: var(--font-base) !important;
  color: var(--color-text);
  letter-spacing: 0.05em;
  padding-top: 0;
  padding-bottom: 0;

  /* ▼▼▼ 改行対策：標準設定に戻す ▼▼▼ */
  word-break: normal;
  overflow-wrap: break-word; /* 長すぎる単語は折り返す */
  text-align: left;          /* 自然な左揃え */
}

/* 改行禁止クラス（特定の単語を守る用） */
.no-break {
  white-space: nowrap;
  display: inline-block;
}

/* 文節ブロック（必要な場合に使用） */
.ib {
  display: inline-block;
}

body.nav-open {
  overflow: hidden !important;
  height: 100vh !important;
}

a {
  color: #2e98e5;
  text-decoration: none;
  transition: all 0.3s ease;
}
a:hover { opacity: 0.8; }

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

/* 文字サイズ適用 */
.palette-logo, .page-title {
  font-size: var(--fs-hero) !important;
  line-height: 1.3 !important;
  white-space: nowrap !important;
  margin-bottom: 3px;
}
h1, h2 { color: white; }
h3, h4 { color: black; }

h2, h3, .tc-contact-title, .job-h3, .footer-tel, .schedule-head, .accordion-button, .apply-section h2, .step span {
  font-size: var(--fs-heading) !important;
  line-height: 1.4 !important;
  /* 見出しなどは単語の塊を維持 */
  word-break: keep-all;
  overflow-wrap: anywhere;
}

body, p, li, dt, dd, th, td, address, .footer-links ul li, .sh-nav a, .form-control, .form-select, .btn03, .timeline-item, .accordion-body, .job-lead h3, .lead-strong, .apply-lead {
  font-size: var(--fs-body) !important;
  line-height: 1.8 !important;
}

small, .sub, .sub-catch, .sec-subtitle, .footer-mail, .copyright, .badge-required, .time-pill, .job-tag {
  font-size: var(--fs-small) !important;
  line-height: 1.4 !important;
  font-weight: normal !important;
}

/* 汎用クラス */
.inner {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 80px 20px;
  position: relative;
}
.sp-only { display: none; }
@media(max-width: 768px) { .sp-only { display: inline; } }

.bg-pale {
  background-color: #fffdf5;
  border-top: 1px dashed #e0e0e0;
  border-bottom: 1px dashed #e0e0e0;
}

/* 見出し */
.sec-header { text-align: center; }
.tc-contact-title {
  font-weight: 900;
  color: #444;
  letter-spacing: 0.1em;
  display: inline-block;
  position: relative;
  z-index: 1;
}
.tc-contact-title::after {
  content: '';
  position: absolute;
  left: 0; bottom: 5px;
  width: 100%; height: 8px;
  background: rgba(255, 236, 4, 0.6);
  z-index: -1;
  border-radius: 4px;
}
.sec-subtitle {
  display: block;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  color: var(--color-accent-blue);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  margin-top: 5px;
}
.lead-soft { color: var(--color-text-light); font-weight: 500; }

/* 中央揃えが必要な箇所 */
.text-center, .schedule-head, .job-h3, .footer-info, .apply-section {
  text-align: center !important;
}


/* =========================================
   3. ヘッダー & ナビゲーション
   ========================================= */
.sticky-header {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 70px;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(10px);
  box-shadow: 0 2px 10px rgba(0,0,0,0.05);
  z-index: 1000;
  display: flex; align-items: center;
  transition: transform 0.3s;
}
.sh-inner {
  width: 100%; max-width: 1200px;
  margin: 0 auto; padding: 0 20px;
  display: flex; justify-content: space-between; align-items: center;
  gap: 20px;
}
.sh-brand { display: flex; align-items: center; gap: 12px; }
.sh-brand img { height: 40px; width: auto; }
@media (max-width: 960px) { .sh-brand { max-width: 60%; } }

.site-title, .palette-logo {
  font-weight: 900;
  letter-spacing: 0.05em;
  white-space: nowrap;
  text-shadow: none !important;
}
.sh-brand .site-title span { display: inline-block; margin: 0 0.02em; }

/* ロゴ配色 */
.c1{ color: #e89db4; } .c2{ color: #9fd5a5; } .c3{ color: #f2cc6b; } .c4{ color: #e58e6d; }
.c5{ color: #79c5f4; } .c6{ color: #e89db4; } .c7{ color: #f2cc6b; } .c8{ color: #9fd5a5; }

/* PCナビ */
.sh-nav { display: flex; gap: 30px; flex-wrap: nowrap; }
.sh-nav a {
  color: #444; font-weight: 700; position: relative; white-space: nowrap;
  word-break: keep-all;
}
.sh-nav a::after {
  content: ''; position: absolute; bottom: -4px; left: 0;
  width: 0%; height: 2px;
  background: var(--color-accent-blue);
  transition: width 0.3s;
}
.sh-nav a:hover::after { width: 100%; }
@media (max-width: 1100px) { .sh-nav { gap: 15px; } }

/* ハンバーガーメニュー */
.openbtn {
  display: none; cursor: pointer; z-index: 9999;
}
@media (max-width: 960px) {
  .sh-nav { display: none; }
  .openbtn {
    display: block; position: fixed; top: 15px; right: 15px;
    width: 40px; height: 40px;
    background: url("../img/menu.png") no-repeat center/contain;
    border: none; background-color: transparent;
  }
}

/* スマホメニュー (g-nav) */
#g-nav {
  position: fixed; top: 0; left: 0;
  width: 100%; height: 100vh;
  z-index: 3000;
  background: #fff9c4;
  opacity: 0; visibility: hidden;
  transition: all 0.3s ease;
  display: flex; justify-content: center; align-items: center;
}
#g-nav.panelactive { opacity: 1; visibility: visible; }
.circle-bg { display: none; }

#g-nav-list { width: 100%; padding: 0; margin: 0 auto; }
#g-nav-list ul {
  padding: 0; margin: 0; list-style-type: none;
  width: 100%; text-align: center;
}
#g-nav-list ul li { padding: 0; margin: 0; width: 100%; text-align: center; }
#g-nav-list ul li a {
  display: block; width: auto; margin: 0; padding: 20px 0;
  text-align: center; text-decoration: none;
  color: #444; font-weight: 700; font-size: 1.2rem;
}


/* =========================================
   4. メインビジュアル (Hero)
   ========================================= */
#header {
  background-color: #FFFCF0;
  height: 100vh; min-height: 300px;
  position: relative; overflow: hidden;
}
.slider, .slider li { height: 100%; width: 100%; }
.slider li {
  background-size: cover; background-position: center;
  content-visibility: auto; contain-intrinsic-size: 100% 600px;
}
.slick-initialized .slick-slide { display: block; }
.slider-overlay {
  position: absolute; inset: 0;
  background: rgba(255, 255, 255, 0.15); z-index: 2;
}

.main-catch {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5; text-align: center;
  width: 100%; padding: 0 20px;
}
.page-title-wrap {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 15px;
  text-align: center; color: #fff;
  text-shadow: 0 3px 6px rgba(0,0,0,0.3);
}

.sub-catch {
  font-size: 14px !important; color: #666 !important;
  font-weight: 700; padding: 4px 15px;
  border-radius: 20px; margin: 0 !important;
  text-shadow: none !important;
  background: none; display: inline-block;
}

.description {
  font-size: clamp(14px, 3.5vw, 16px) !important;
  color: #555 !important; font-weight: 700 !important;
  background: transparent !important;
  text-shadow: none !important;
  line-height: 2 !important; margin: 0 !important; padding: 0 !important;
}

/* ロゴサイズ調整 */
body#top .palette-logo { font-size: clamp(32px, 8vw, 60px) !important; }
body:not(#top) .palette-logo { font-size: clamp(20px, 5vw, 32px) !important; }

/* 5領域・求人ページタイトル */
.page-title.domain-page-title-style {
  font-size: clamp(28px, 7vw, 48px) !important;
  font-weight: 900 !important;
  color: #4A4A4A !important;
  text-shadow: none !important;
  line-height: 1.3 !important;
  margin: 10px 0 !important;
}
.page-title.job-page-title-style {
  background-color: #f7931e !important; color: #4A4A4A !important;
  padding: 10px 30px; border-radius: 10px; display: inline-block;
  text-shadow: 0 2px 5px rgba(0, 0, 0, 0.4) !important;
  letter-spacing: 0.1em;
}

.scrolldown1 {
  position: absolute; bottom: 20px; left: 50%;
  z-index: 5; transform: translateX(-50%);
}


/* =========================================
   5. コンテンツエリア (Concept)
   ========================================= */
.section-concept {
  background: radial-gradient(circle at top left, #fff9c4 0%, transparent 20%),
              radial-gradient(circle at bottom right, #e1f5fe 0%, transparent 20%);
}

.concept-words li {
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  padding: 5px 0;
  font-weight: 700;
  font-size: 1.2rem;
  pointer-events: auto;
  opacity: 1 !important;
  visibility: visible !important;
}

/* --- Concept: スマホ (768px未満) --- */
@media screen and (max-width: 767.98px) {
  .concept-area { margin-bottom: 40px; text-align: center; }
  .concept-img {
    width: 80%; max-width: 300px;
    margin: 0 auto 50px;
    position: relative; top: auto; left: auto; transform: none;
  }
  .concept-img.zoomInTrigger {
    opacity: 1 !important; visibility: visible !important; transform: none !important;
  }
  .concept-words {
    list-style: none; padding: 0; margin: 0 auto;
    display: flex; flex-wrap: wrap; justify-content: center;
    gap: 15px 20px; max-width: 90%;
    position: relative; height: auto; pointer-events: auto;
  }
  .concept-words li {
    position: relative; width: auto; font-size: 1.0rem; text-align: center;
    top: auto !important; right: auto !important; left: auto !important; transform: none !important;
  }
  .concept-btn {
    position: relative; bottom: auto; left: auto; margin-top: 80px;
  }
}

/* --- Concept: PC (768px以上) --- */
@media screen and (min-width: 768px) {
  .concept-area {
    position: relative; width: 100%; max-width: 1000px;
    height: 600px; margin: 0 auto 60px;
  }
  .concept-img {
    position: absolute; top: 45%; left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1; width: 320px; height: auto; margin-bottom: 20px;
  }
  .concept-img.zoomInTrigger {
    opacity: 1 !important; visibility: visible !important; transform: translate(-50%, -50%) !important;
  }
  .concept-words {
    list-style: none; padding: 0; margin: 0;
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    z-index: 2; pointer-events: none;
  }
  .concept-words li {
    position: absolute; width: 300px; padding: 0;
    transform: none !important;
  }

  /* 4隅配置（中心から離す設定） */
  .concept-words li:nth-child(1), .concept-words li:nth-child(2) {
    right: 65%; left: auto; text-align: right;
  }
  .concept-words li:nth-child(3), .concept-words li:nth-child(4) {
    left: 65%; right: auto; text-align: left;
  }
  /* 上下位置 */
  .concept-words li:nth-child(1), .concept-words li:nth-child(3) { top: 20%; }
  .concept-words li:nth-child(2), .concept-words li:nth-child(4) { top: 80%; }

  .concept-btn {
    position: absolute; bottom: 0; left: 0; width: 100%;
    text-align: center; z-index: 10; margin-top: 15px;
  }
}

.concept-img img { width: 100%; height: auto; border-radius: 50%; border: 10px solid #fff; box-shadow: var(--shadow-float); }


/* =========================================
   6. コンポーネント (Button, Schedule, Card)
   ========================================= */
/* 丸いボタン */
.btn03 {
  display: inline-block;
  background: var(--color-accent-green);
  color: #fff !important;
  padding: 0.8em 2.5em;
  border-radius: 20px;
  font-weight: 700;
  text-decoration: none; text-align: center; line-height: 1.3;
  transition: all 0.2s; margin-top: 20px;
  box-shadow: 0 5px 0 -2px rgba(0, 0, 0, 0.2);
}
.btn03 span { background: transparent; color: inherit; display: block; }
.btn03:hover {
  transform: translateY(2px);
  box-shadow: 0 3px 0 -1px rgba(0, 0, 0, 0.2);
  color: #fff !important; opacity: 0.9;
}
.btn03:active { transform: translateY(5px); box-shadow: none; }

/* スケジュール */
.schedule-card {
  background: #fff; border-radius: var(--radius-card);
  box-shadow: var(--shadow-card); overflow: hidden; height: 100%;
  border: 1px solid #f0f0f0;
}
.schedule-head { padding: 20px; text-align: center; font-weight: 800; color: #fff; }
.schedule--weekday .schedule-head { background: #ffab91; }
.schedule--holiday .schedule-head { background: #81d4fa; }

/* ▼▼▼ 修正：余白を極限まで減らす設定（約2px） ▼▼▼ */
.schedule-body {
  padding: 30px 2px; /* 左右の余白を極小に */
}

/* タイムライン本体（余白なし） */
.timeline { 
  position: relative; 
  padding: 0; 
  margin-left: 0; /* 左の余白を削除 */
}

/* 縦線の位置調整 */
.timeline::before {
  content: ""; position: absolute; top: 10px; bottom: 10px; 
  left: 3.8rem; /* ← 線を左に寄せる */
  width: 2px; background: #f0f0f0; z-index: 0;
}

.timeline-item {
  position: relative; display: flex; align-items: flex-start;
  gap: 1.5rem; margin-bottom: 1.5rem; z-index: 1;
}

/* 時刻表示（幅を狭くする） */
.time-pill, .time-pill-none {
  min-width: 3.0rem; /* ← 幅を狭く */
  text-align: right; 
  font-weight: 700;
  padding: 0.2rem 0; 
  margin-right: 10px; /* 線との距離 */
  color: var(--color-text); font-family: 'Lato', sans-serif;
}
.time-pill-none { color: #aaa; }

.timeline-item p { margin: 0; padding-top: 0.2rem; font-weight: 500; }

/* 丸い点の位置調整 */
.timeline-item::after {
  content: ''; position: absolute; 
  left: 3.8rem; /* ← 線と同じ位置に */
  top: 0.8rem;
  transform: translate(-50%, 0);
  width: 10px; height: 10px; background: #fff;
  border: 2px solid #ccc; border-radius: 50%; z-index: 2;
}
.schedule--weekday .timeline-item::after { border-color: #ffab91; }
.schedule--holiday .timeline-item::after { border-color: #81d4fa; }

/* 流れ (Flow) */
.flow-box {
  background: #fff; border-radius: 16px; padding: 2rem;
  margin-bottom: 2rem;
  box-shadow: 0 5px 15px rgba(0,0,0,0.03);
  border-left: 5px solid var(--color-accent-green);
  transition: transform 0.3s;
}
.flow-box:hover { transform: translateX(5px); }
.flow-box h3 {
  font-weight: 700; color: #444; margin-bottom: 1rem;
  display: flex; align-items: center; gap: 15px;
}
.step span {
  display: inline-flex; justify-content: center; align-items: center;
  width: 36px; height: 36px;
  background: var(--color-accent-green); color: #fff;
  border-radius: 50%; font-family: 'Lato', sans-serif;
}
.flow-content p { margin: 0; color: #666; }

/* 施設概要 (Facility) */
.facility-card {
  background: #fff; padding: 2rem;
  border-radius: var(--radius-card); box-shadow: var(--shadow-card);
}
.facility-table { width: 100%; border-collapse: separate; border-spacing: 0 10px; }
.facility-table th, .facility-table td { padding: 15px; vertical-align: top; }
.facility-table th {
  background: #fcfcfc; font-weight: 700; color: #444;
  white-space: nowrap; border-radius: 8px 0 0 8px; width: 30%;
}
.facility-table td {
  border-bottom: 1px solid #f0f0f0; border-radius: 0 8px 8px 0;
}
@media (max-width: 600px) {
  .facility-table th, .facility-table td { display: block; width: 100%; border-radius: 8px; }
  .facility-table th { margin-bottom: 5px; background: #f0f0f0; }
  .facility-table td { margin-bottom: 20px; border: none; padding-left: 10px; }
}
.map-outer {
  border-radius: var(--radius-card); overflow: hidden; box-shadow: var(--shadow-card);
}

/* フォーム (Contact / Apply) */
#contact { color: #fff; padding-bottom: 120px; }
.tc-contact-panel {
  background: rgba(255, 255, 255, 0.95);
  border-radius: var(--radius-card);
  padding: clamp(30px, 5vw, 60px);
  box-shadow: 0 20px 50px rgba(0,0,0,0.2); color: #333;
}
.tc-form-label {
  font-weight: 700; color: #333; margin-bottom: 8px; display: block;
}
.tc-badge-required {
  background: #ff6b6b; color: #fff; padding: 2px 6px;
  border-radius: 4px; vertical-align: text-top; margin-left: 5px;
}
.form-control, .form-select {
  border: 2px solid #eee; border-radius: 8px; padding: 12px 15px;
  background: #fcfcfc; transition: all 0.3s;
}
.form-control:focus, .form-select:focus {
  border-color: #764ba2; box-shadow: 0 0 0 4px rgba(118, 75, 162, 0.1); background: #fff;
}
.tc-submit {
  background: orange; border: none; color: #fff; font-weight: 700;
  padding: 15px 60px; border-radius: 50px;
  box-shadow: 0 10px 20px rgba(118, 75, 162, 0.3);
  transition: transform 0.3s, box-shadow 0.3s;
}
.tc-submit:hover {
  transform: translateY(-2px);
  box-shadow: 0 15px 30px rgba(118, 75, 162, 0.4);
  background-color: darkorange;
}

/* Apply Section */
.apply-section {
  background-color: #f7931e; color: #fff; padding: 60px 0;
  text-align: center; scroll-margin-top: 100px;
}
@media (max-width: 768px) { .apply-section { scroll-margin-top: 70px; } }
.apply-section h2 { font-weight: 900; margin-bottom: 1.5rem; text-shadow: 0 2px 4px rgba(0,0,0,0.1); }
.apply-lead { margin-bottom: 3rem; }
.custom-form {
  max-width: 800px; margin: 0 auto;
  background: rgba(255, 255, 255, 0.95);
  padding: 40px; border-radius: 20px;
  box-shadow: 0 10px 25px rgba(0,0,0,0.1);
  color: #333; text-align: left;
}
.custom-form label { font-weight: 700; margin-bottom: 8px; color: #f7931e; }
.custom-form .form-control:focus {
  border-color: #f7931e; box-shadow: 0 0 0 0.2rem rgba(247, 147, 30, 0.25);
}

/* =========================================
   7. 求人ページ (Job Info)
   ========================================= */
.job-wrap {
  background: var(--bg-white); border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: clamp(1.5rem, 4vw, 3rem); margin-bottom: 3rem;
}
.job-lead h3 {
  font-size: 1.25rem; line-height: 2; color: #b25a6a;
  border-bottom: 2px dashed #ffd8e1; padding-bottom: 1rem; margin-bottom: 1.5rem;
}
.lead-strong {
  font-weight: 700; font-size: 1.05rem; margin-bottom: 1rem; display: block; color: #444;
}
.jp-dot-list { list-style: none; padding: 0; }
.jp-dot-list li {
  position: relative; padding-left: 1.5em; margin-bottom: 1em; line-height: 1.9;
}
.jp-dot-list li::before {
  content: "●"; color: var(--color-accent-green);
  position: absolute; left: 0; top: 0.2em; font-size: 0.8em;
}
.job-h3 {
  font-size: 1.4rem; font-weight: 700; color: #444; text-align: center;
  margin: 5rem 0 1.5rem; position: relative;
  display: inline-block; left: 50%; transform: translateX(-50%);
}
.job-h3::after {
  content: ''; display: block; width: 60px; height: 4px;
  background: #f2cc6b; margin: 8px auto 0; border-radius: 2px;
}
.job-table {
  width: 100%; border-collapse: separate; border-spacing: 0;
  border: 1px solid #eee; border-radius: 12px; overflow: hidden;
}
.job-table th, .job-table td {
  padding: 1.2rem; vertical-align: top; border-bottom: 1px solid #eee;
}
.job-table th {
  background: #fafafa; color: #555; font-weight: 700;
  width: 25%; min-width: 160px; border-right: 1px solid #eee;
}
.job-table tr:last-child th, .job-table tr:last-child td { border-bottom: none; }
@media (max-width: 768px) {
  .job-table th, .job-table td { display: block; width: 100%; border-right: none; }
  .job-table th { background: #f0f8ff; padding: 0.8rem 1.2rem; }
}
.job-tag {
  display: inline-block; padding: 4px 12px; border-radius: 99px;
  font-size: 0.8rem; font-weight: 700; margin-right: 6px; margin-bottom: 6px;
  background: #f0f0f0; color: #555;
}
.job-tag:nth-of-type(3n+1) { background: #e3f2fd; color: #1565c0; }
.job-tag:nth-of-type(3n+2) { background: #fff3e0; color: #e65100; }
.job-tag:nth-of-type(3n+3) { background: #e8f5e9; color: #2e7d32; }
.job-map-td iframe {
  width: 100%; height: 300px; border: 0; border-radius: 12px; margin: 10px 0;
}
.job-map-td-link a {
  display: inline-block; color: #2e98e5; text-decoration: underline; font-weight: 700;
}
.schedule-row {
  display: flex; align-items: flex-start; margin-bottom: 0.5rem; line-height: 1.5;
}
.schedule-time {
  flex: 0 0 auto; width: 4.5em; white-space: nowrap; font-weight: bold; color: #555;
}
@media (max-width: 576px) {
  .schedule-box { padding: 1rem !important; }
  .schedule-time { width: 4em; }
}

/* =========================================
   8. 5領域ページ (Accordions)
   ========================================= */
.accordion-button { font-weight: 700; padding: 1.2rem; }
.accordion-body { background: var(--bg-white); color: #555; padding: 1.5rem; }

.bg-orange .accordion-button { background-color: #fff3e0; color: #e65100; }
.bg-orange .accordion-button:not(.collapsed) { background-color: #ffe0b2; color: #e65100; box-shadow: none; }
.bg-green .accordion-button { background-color: #e8f5e9; color: #2e7d32; }
.bg-green .accordion-button:not(.collapsed) { background-color: #c8e6c9; color: #2e7d32; box-shadow: none; }
.bg-blue .accordion-button { background-color: #e3f2fd; color: #1565c0; }
.bg-blue .accordion-button:not(.collapsed) { background-color: #bbdefb; color: #1565c0; box-shadow: none; }
.bg-pink .accordion-button { background-color: #fce4ec; color: #ad1457; }
.bg-pink .accordion-button:not(.collapsed) { background-color: #f8bbd0; color: #ad1457; box-shadow: none; }
.bg-purple .accordion-button { background-color: #f3e5f5; color: #6a1b9a; }
.bg-purple .accordion-button:not(.collapsed) { background-color: #e1bee7; color: #6a1b9a; box-shadow: none; }

.promise-card {
  background: var(--bg-white); border-radius: 20px; padding: 2rem;
  height: 100%; box-shadow: var(--shadow-card); border: 2px solid #f0f0f0;
}
.promise-num {
  display: inline-block; background: var(--color-primary);
  color: #444; font-weight: 800; padding: 2px 12px;
  border-radius: 20px; margin-bottom: 10px;
}

/* =========================================
   9. フッター & 固定ボタン
   ========================================= */
#footer {
  background-color: #f7931e !important;
  color: #fff !important;
  text-align: center !important;
  padding: 40px 0 110px 0 !important; /* 下部固定バー用の余白込み */
  margin-top: 0 !important;
  border-top: none !important;
  width: 100% !important;
  position: relative !important;
}
.footer-inner {
  display: flex !important; flex-direction: column !important;
  align-items: center !important; justify-content: center !important;
  width: 100% !important; max-width: 1200px !important;
  margin: 0 auto !important; gap: 20px !important;
}
.footer-info {
  width: 100% !important; margin: 0 !important; padding: 0 !important;
  text-align: center !important; float: none !important;
}
.footer-logo {
  font-weight: 900 !important; color: #fff !important;
  margin: 0 auto 15px !important; display: inline-block !important;
  text-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;
  text-decoration: none !important;
}
.footer-logo .sub {
  display: block !important; font-size: 11px !important;
  color: rgba(255,255,255,0.9) !important; font-weight: normal !important;
}
#footer address {
  font-style: normal !important; text-align: center !important;
  margin-bottom: 20px !important; display: block !important; color: #fff !important;
}
.footer-contact {
  display: flex !important; flex-direction: column !important;
  align-items: center !important; margin-top: 10px !important;
}
.footer-tel {
  font-family: 'Lato', sans-serif !important; font-size: 1.5rem !important;
  font-weight: 700 !important; color: #fff !important;
  text-decoration: none !important; display: block !important; margin-bottom: 5px !important;
}
.footer-mail { color: #fff !important; margin: 0 !important; }

.footer-links { width: 100% !important; margin: 20px auto 0 !important; float: none !important; }
.footer-links ul {
  display: flex !important; justify-content: center !important;
  flex-wrap: wrap !important; padding: 0 !important; margin: 0 !important; list-style: none !important;
}
.footer-links ul li {
  border-left: 1px solid rgba(255, 255, 255, 0.5) !important;
  border-right: none !important; padding: 0 12px !important;
  margin-bottom: 8px !important; line-height: 1.2 !important; white-space: nowrap !important;
}
.footer-links ul li:first-child { border-left: none !important; }
.footer-links a {
  color: #fff !important; font-weight: 500 !important;
  text-decoration: none !important; font-size: 14px !important;
}
.copyright {
  background: transparent !important; text-align: center !important;
  padding: 20px !important; margin-top: 30px !important;
  color: rgba(255,255,255,0.8) !important;
  border-top: 1px solid rgba(255,255,255,0.3) !important;
  width: 100% !important; font-size: 11px !important;
}

/* 下部固定ボタン (Header Utility) */
.header-utility {
  position: fixed !important; bottom: 0 !important; left: 0 !important;
  width: 100% !important; height: 70px !important;
  z-index: 9999 !important; background: #fff !important;
  box-shadow: 0 -5px 20px rgba(0,0,0,0.1) !important;
  display: flex !important; justify-content: space-between !important;
  align-items: center !important; padding: 0 !important; margin: 0 !important; list-style: none !important;
}
.header-utility li {
  width: 50% !important; height: 100% !important;
  margin: 0 !important; padding: 0 !important; border: none !important; display: block !important;
}
.header-utility a {
  display: flex !important; justify-content: center !important; align-items: center !important;
  width: 100% !important; height: 100% !important;
  font-weight: 700 !important; font-size: 1.1rem !important;
  color: #fff !important; text-decoration: none !important; line-height: 1.2 !important;
}
.header-utility li:first-child a, .header-utility .btn-contact { background-color: #9fd5a5 !important; }
.header-utility li:last-child a, .header-utility .btn-tel { background-color: #f2cc6b !important; }
.header-utility i { margin-right: 8px !important; }

/* =========================================
   10. アニメーション & ローディング
   ========================================= */
.fadeInTrigger, .fadeUpTrigger, .zoomInTrigger { opacity: 1; }

#splash {
  position: fixed; top: 0; left: 0; z-index: 9999;
  width: 100%; height: 100%; background: #fff;
  display: flex; justify-content: center; align-items: center; text-align: center;
  opacity: 1; visibility: visible;
  transition: opacity 0.5s ease-out, visibility 0.5s ease-out;
}
#splash-logo {
  font-family: var(--font-base); font-weight: 700; color: #555; letter-spacing: 0.05em;
}
.icon-01 { width: 80px; height: auto; margin-bottom: 15px; }

/* =========================================
   11. TOPへ戻るボタン (修正統合版)
   ========================================= */
#page-top {
  position: fixed; right: 10px; bottom: 80px; z-index: 9998;
  opacity: 0; transform: translateY(100px);
}

/* リンク本体・青背景削除・サイズ調整 */
#page-top a,
#page-top a:link, #page-top a:visited, #page-top a:hover, #page-top a:active, #page-top a:focus {
  display: flex; justify-content: center; align-items: center;
  background: #9fd5a5 !important; /* 緑色背景 */
  border-radius: 50%;
  
  /* サイズ（60px） */
  width: 60px !important;
  height: 60px !important;
  
  color: #fff; text-decoration: none;
  box-shadow: 0 0 10px rgba(0,0,0,0.1) !important;
  transition: all 0.3s;
  
  /* ★ここを追加：透過率を50%にする */
  opacity: 0.5 !important;
  
  /* ハイライト・フォーカス無効化 */
  -webkit-tap-highlight-color: transparent !important;
  outline: none !important; border: none !important;
}

/* 画像調整 */
#page-top a img {
  width: 30px !important; height: auto;
  pointer-events: none; user-select: none;
  -webkit-user-select: none;
}