@charset "UTF-8";
/* ==========================================================================
   TOSA KURO-USHI - multilingual site (common)
   design canvas: 1500px / content width: 1000px
   ※ フォントサイズはデザインの px を 16px = 1rem として rem 換算
   ========================================================================== */

:root {
  --c-black: #000;
  --c-text: #000;
  --c-white: #fff;
  --c-red: #9a011a;
  --c-beige: #af8e6e;
  --c-dark: #121212;
  --c-gray: #ededed;

  --content-w: 1000px;
  --gutter: 30px;
  --header-h: 85px;

  --ff-sans: "Noto Sans JP", "Helvetica Neue", Arial, sans-serif;
  --ff-serif: "Noto Serif JP", "Times New Roman", serif;
}

/* 言語別フォント（差し替えプログラム側で <html lang> を切り替える想定） */
html[lang^="zh-Hans"],
html[lang="zh-CN"] {
  --ff-sans: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --ff-serif: "Noto Serif SC", "Songti SC", serif;
}
html[lang^="zh-Hant"],
html[lang="zh-TW"] {
  --ff-sans: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
  --ff-serif: "Noto Serif TC", "Songti TC", serif;
}

/* --------------------------------------------------------------- base --- */
html,
body {
  font-family: var(--ff-sans);
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--c-text);
  background: var(--c-white);
}
body {
  overflow-x: hidden;
}
body.is-nav-open {
  overflow: hidden;
}
/* リンクは常に親の文字色を継承する（ヘッダー = 白 / フッター = 黒）。
   Bootstrap の a { color: var(--bs-link-color) } に勝つため擬似クラスまで明示し、
   個別に色を持つパーツ（.to-eat / .btn-more）はクラス側で :visited まで指定して上書きする。 */
a,
a:visited,
a:hover,
a:focus {
  color: inherit;
  text-decoration: none;
  transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease;
}
a:hover {
  opacity: 0.7;
  text-decoration: none;
}
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
h1,
h2,
h3,
h4 {
  margin: 0;
  font-weight: 700;
  line-height: 1.4;
}
p {
  margin: 0;
}
figure {
  margin: 0;
}
img {
  max-width: 100%;
  height: auto;
}
/* SP 用画像への差し替えは <picture> で行う。レイアウトは <img> のまま扱う */
picture {
  display: contents;
}
::selection {
  background-color: var(--c-red);
  color: #fff;
}
.grecaptcha-badge {visibility:hidden;}
.serif {
  font-family: var(--ff-serif);
  font-weight: 400;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* コンテンツ幅（デザイン 250px〜1250px = 1000px） */
.l-container {
  width: 100%;
  max-width: calc(var(--content-w) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ------------------------------------------------------------- header --- */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 1000;
  height: var(--header-h);
  background: var(--c-black);
  color: var(--c-white);
}
/* 全ページ共通。ヒーローに重なる半透明（デザイン: 黒 35.7%）。スクロールしても変化させない */
.site-header.is-transparent {
  background: rgba(0, 0, 0, 0.357);
}
.header-inner {
  display: flex;
  align-items: center;
  height: 100%;
}
/* ロゴ（デザイン: 白地 233 × 85、ロゴ 143.5 × 62.9 / left 43.5） */
.header-brand {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 233px;
  height: var(--header-h);
  background: var(--c-white);
}
.header-brand img {
  width: 143.5px;
  height: auto;
}
.header-brand .logo-light {
  display: none;
}
.header-nav {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 30px;
}
.gnav-privacy {
  display: none;
}
.gnav,
.gnav ul {
  display: flex;
  align-items: center;
  gap: 20px;
}
.gnav a {
  position: relative;
  display: inline-block;
  font-size: 0.9375rem; /* 15px */
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}
/* ホバー時は赤い下線（デザイン: baseline + 6.6px / 幅は文字幅） */
.gnav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -6px;
  height: 1px;
  background: var(--c-red);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.gnav a:hover {
  opacity: 1;
}
.gnav a:hover::after {
  opacity: 1;
}
.header-sns img,
.lang-btn img {
  width: 31px;
  height: 31px;
  display: block;
}

/* 言語切替（デザイン: instagram との間隔 22px / 右余白 82px） */
.lang {
  position: relative;
  flex: none;
  margin-left: 22px;
  margin-right: 82px;
}
.lang-btn {
  display: block;
  padding: 0;
  border: 0;
  background: none;
  line-height: 0;
  cursor: pointer;
}
.lang-btn .ico-off-dark,
.lang-btn .ico-on {
  display: none;
}
.lang:hover .lang-btn .ico-on,
.lang:focus-within .lang-btn .ico-on {
  display: block;
}
.lang:hover .lang-btn .ico-off,
.lang:hover .lang-btn .ico-off-dark,
.lang:focus-within .lang-btn .ico-off,
.lang:focus-within .lang-btn .ico-off-dark {
  display: none;
}

/* ドロップダウン（デザイン: 138 × 121 / 白地 + 赤枠、globe の中心に合わせる） */
.lang-list {
  position: absolute;
  top: 100%;
  left: 50%;
  width: 138px;
  margin-top: 27px; /* globe 下端 → リスト上端 */
  transform: translateX(-50%);
  background: var(--c-white);
  border: 1px solid var(--c-red);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
/* 吹き出しの三角（デザイン: 22 × 21） */
.lang-list::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  margin-left: -11px;
  margin-bottom: -3px;
  border-left: 11px solid transparent;
  border-right: 11px solid transparent;
  border-bottom: 21px solid var(--c-red);
}
/* globe とリストの間もホバー領域に含め、移動中に閉じないようにする */
.lang-list::after {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 0;
  right: 0;
  height: 27px;
}
/* 開くのはマウスホバーのみ（キーボード操作時は focus でも開く） */
.lang:hover .lang-list,
.lang:focus-within .lang-list {
  opacity: 1;
  visibility: visible;
}
.lang-list-head {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 30px;
  background: var(--c-red);
  color: var(--c-white);
  font-size: 0.9375rem; /* 15px */
  font-weight: 400;
  line-height: 1;
}
.lang-list a {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 30px;
  border-top: 1px solid var(--c-red);
  color: var(--c-red);
  font-size: 0.9375rem;
  line-height: 1;
  white-space: nowrap;
}
.lang-list a:hover {
  background: var(--c-red);
  color: var(--c-white);
  opacity: 1;
}
.lang-list li.is-current a {
  font-weight: 700;
}

/* ハンバーガー */
.nav-toggle {
  display: none;
  flex: none;
  width: 56px;
  height: 56px;
  margin-left: auto;
  margin-right: 12px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}
.nav-toggle span {
  display: block;
  width: 26px;
  height: 2px;
  margin: 6px auto;
  background: var(--c-white);
  transition: transform 0.3s ease, opacity 0.3s ease;
}
body.is-nav-open .nav-toggle span:nth-child(1) {
  transform: translateY(8px) rotate(45deg);
}
body.is-nav-open .nav-toggle span:nth-child(2) {
  opacity: 0;
}
body.is-nav-open .nav-toggle span:nth-child(3) {
  transform: translateY(-8px) rotate(-45deg);
}

/* --------------------------------------------------------------- main --- */
.site-main {
  padding-top: var(--header-h);
}
.site-main.has-overlay-header {
  padding-top: 0; /* ヒーローにヘッダーを重ねるページ */
}

/* 共通ボタン（デザイン: 171 × 46 / font-size 14px） */
.btn-more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 171px;
  min-height: 46px;
  padding: 0.5rem 1.5rem;
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  background: var(--c-white);
  border-radius: 999px;
}
/* 訪問済みでも文字色は変えない */
.btn-more,
.btn-more:visited,
.btn-more:hover,
.btn-more:focus,
.btn-more:active {
  color: var(--c-black);
}
.btn-more:hover {
  opacity: 0.75;
}
/* 白ボタンのホバーは反転（背景 #9A011A / 文字 白）。ベージュボタンは対象外 */
.btn-more:not(.btn-more--beige):hover,
.btn-more:not(.btn-more--beige):focus {
  background: var(--c-red);
  color: var(--c-white);
  opacity: 1;
}
.btn-more--beige {
  background: var(--c-beige);
}
.btn-more--beige,
.btn-more--beige:visited,
.btn-more--beige:hover,
.btn-more--beige:focus,
.btn-more--beige:active {
  color: var(--c-white);
}

/* 共通セクション見出し（デザイン: 40px serif） */
.sec-title {
  font-family: var(--ff-serif);
  font-weight: 400;
  font-size: 2.5rem;
  line-height: 1.5;
}
.sec-lead {
  font-size: 1rem;
  line-height: 1.75;
}

/* ------------------------------------------------------------- footer --- */
.site-footer {
  background: var(--c-white);
  color: var(--c-black);
}
.footer-inner {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 40px;
  max-width: 896px; /* デザイン: 302–1198 */
  margin-inline: auto;
  padding: 53px 0 0;
}
.footer-logo {
  flex: none;
}
.footer-logo img {
  width: 255px;
  max-width: none;
  height: auto;
}
.footer-right {
  display: flex;
  align-items: center;
  gap: 30px;
  padding-top: 44px;
}
.footer-nav {
  display: flex;
  align-items: center;
  gap: 22px;
}
.footer-nav a {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}
/* ホバー時は文字色を赤に */
.footer-nav a:hover,
.footer-nav a:focus {
  color: var(--c-red);
  opacity: 1;
}
.footer-sns {
  flex: none;
}
.footer-sns img {
  width: 31px;
  height: 31px;
  display: block;
}
.footer-privacy {
  padding: 45px 0 20px;
  text-align: center;
}
.footer-privacy a {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.2;
  border-bottom: 1px solid currentColor;
  padding-bottom: 4px;
}
.footer-copyright {
  height: 86px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--c-dark);
  color: var(--c-white);
  font-size: 0.8125rem; /* 13px */
  line-height: 1.4;
}

/* ------------------------------------------------------- page top btn --- */
.pagetop {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 900;
  width: 69px;
  height: 69px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.pagetop.is-visible {
  opacity: 1;
  visibility: visible;
}
.pagetop img {
  width: 100%;
  height: 100%;
  display: block;
}

/* --------------------------------------------------------- responsive --- */
@media (max-width: 1199.98px) {
  .header-nav {
    gap: 24px;
    padding-right: 30px;
  }
  .gnav {
    gap: 24px;
  }
  .gnav a {
    font-size: 0.8125rem;
  }
  .footer-inner {
    gap: 24px;
  }
  .footer-nav {
    gap: 22px;
  }
  .footer-nav a {
    font-size: 0.8125rem;
  }
}

@media (max-width: 991.98px) {
  :root {
    --header-h: 64px;
    --gutter: 20px;
  }
  .header-brand {
    width: 160px;
  }
  .header-brand img {
    width: 108px;
  }
  .nav-toggle {
    display: block;
  }
  .header-nav {
    position: fixed;
    inset: var(--header-h) 0 0 0;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0;
    padding: 30px var(--gutter) 60px;
    background: var(--c-black);
    overflow-y: auto;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
  }
  body.is-nav-open .header-nav {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }
  .site-header.is-transparent .header-nav {
    background: var(--c-black);
  }
  .gnav,
  .gnav ul {
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    width: 100%;
  }
  .gnav li {
    width: 100%;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  }
  .gnav a {
    display: block;
    padding: 18px 0;
    font-size: 0.9375rem;
    white-space: normal;
  }
  .header-sns {
    margin-top: 28px;
  }
  /* 地球アイコンはナビバー右側、その外にハンバーガー */
  .lang {
    margin-left: auto;
    margin-right: 16px;
  }
  .nav-toggle {
    margin-left: 0;
  }
  .gnav a::after {
    display: none;
  }

  .footer-inner {
    flex-direction: column;
    align-items: center;
    padding-top: 40px;
  }
  .footer-logo img {
    width: 200px;
  }
  .footer-right {
    flex-direction: column;
    gap: 20px;
    padding-top: 0;
  }
  .footer-nav {
    flex-direction: column;
    gap: 14px;
    text-align: center;
  }
  .footer-privacy {
    padding: 30px 0;
  }
  .footer-copyright {
    height: 64px;
    font-size: 0.75rem;
    text-align: center;
    padding-inline: var(--gutter);
  }
  .pagetop {
    right: 14px;
    bottom: 14px;
    width: 52px;
    height: 52px;
  }
  .sec-title {
    font-size: 1.75rem;
  }
}

/* ------------------------------------------------------------- SP --- */
/* SP デザイン（375px）に合わせる。スライスも 375 / 319px 幅で作られている */
@media (max-width: 767.98px) {
  :root {
    --header-h: 70px;
    --gutter: 28px; /* コンテンツ幅 375 - 28 * 2 = 319px */
  }
  .sec-title {
    font-size: 1.375rem; /* 22px */
  }

  .site-header,
  .site-header.is-transparent {
    background: rgba(255, 255, 255, 0.9);
    color: var(--c-black);
  }
  .header-brand {
    width: auto;
    height: auto;
    background: none;
    padding-left: 15px;
  }
  .header-brand img {
    width: 137.7px;
  }
  .lang {
    margin-left: auto;
    margin-right: 15px;
  }
  .lang-btn .ico-off {
    display: none;
  }
  .lang-btn .ico-off-dark {
    display: block;
  }
  .nav-toggle {
    width: 42px;
    height: 28px;
    margin-left: 0;
    margin-right: 22px;
  }
  .nav-toggle span {
    width: 42px;
    height: 2px;
    margin: 0 0 11px;
    background: var(--c-black);
  }
  .nav-toggle span:nth-child(3) {
    margin-bottom: 0;
  }
  .nav-toggle-close {
    display: none;
    width: 42px;
    height: auto;
  }

  body.is-nav-open .site-header,
  body.is-nav-open .site-header.is-transparent {
    background: var(--c-black);
    color: var(--c-white);
  }
  body.is-nav-open .header-brand {
    padding-left: 25px;
  }
  body.is-nav-open .header-brand .logo-dark {
    display: none;
  }
  body.is-nav-open .header-brand .logo-light {
    display: block;
    width: 118.5px;
  }
  body.is-nav-open .lang {
    display: none;
  }
  body.is-nav-open .nav-toggle {
    margin-left: auto;
  }
  body.is-nav-open .nav-toggle span {
    display: none;
  }
  body.is-nav-open .nav-toggle-close {
    display: block;
  }

  .header-nav {
    inset: var(--header-h) 0 auto 0;
    height: auto;
    align-items: center;
    padding: 115px 0 133px;
    overflow: visible;
  }
  .gnav,
  .gnav ul {
    align-items: center;
  }
  .gnav li {
    border-bottom: 0;
    text-align: center;
  }
  .gnav a {
    padding: 0;
    font-size: 1.125rem;
    line-height: 64px;
  }
  .gnav-privacy {
    display: block;
  }
  .gnav-privacy a {
    font-size: 1rem;
  }
  .header-sns {
    margin-top: 63px;
  }
}

@media (max-width: 575.98px) {
  .btn-more {
    min-width: 150px;
    min-height: 42px;
  }
}
