/* ==========================================================================
   Base / Reset
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  scroll-padding-top: 104px;
  overscroll-behavior-y: none;
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  margin: 0;
  padding-top: 84px;
  font-family: var(--font-body);
  font-weight: var(--fw-regular);
  font-size: var(--fs-text-regular);
  line-height: var(--lh-body);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; text-underline-offset: 4px; }

/* ---- テキストリンクのホバー／タップ演出 ---- */
a:not(.btn, .btn-link, .nav-link, .nav-logo, .nav-links__line,
  .footer-logo, .footer-social__line, .to-top, .article-item__inner) {
  transition: var(--transition-hover);
  -webkit-tap-highlight-color: transparent;
}
@media (hover: hover) {
  a:not(.btn, .btn-link, .nav-link, .nav-logo, .nav-links__line,
    .footer-logo, .footer-social__line, .to-top, .article-item__inner):hover {
    opacity: var(--opacity-hover);
  }
}
a:not(.btn, .btn-link, .nav-link, .nav-logo, .nav-links__line,
  .footer-logo, .footer-social__line, .to-top, .article-item__inner):active {
  opacity: var(--opacity-hover);
}
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font-family: inherit; cursor: pointer; }
h1, h2, h3, h4, h5, h6, p { margin: 0; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); letter-spacing: clamp(.5px, .25px + .07vw, 1.1px); }
.brand-name { letter-spacing: 0; }
.method-label { font-weight: 600; }
.num-emphasis { font-size: 1.2em; }

h1 { font-size: var(--fs-heading-1); font-weight: var(--fw-heading); line-height: var(--lh-heading); }
h2 { font-size: var(--fs-heading-2); font-weight: var(--fw-heading); line-height: var(--lh-heading); }
h3 { font-size: var(--fs-heading-3); font-weight: var(--fw-heading); line-height: var(--lh-heading); }
h4 { font-size: var(--fs-heading-4); font-weight: var(--fw-heading); line-height: 1.3; }
h5 { font-size: var(--fs-heading-5); font-weight: var(--fw-heading); line-height: 1.4; }
h6 { font-size: var(--fs-heading-6); font-weight: var(--fw-heading); line-height: 1.4; }

.container {
  width: 100%;
  max-width: var(--container-large);
  margin-inline: auto;
}

.section {
  width: 100%;
  padding-inline: var(--page-padding);
  padding-block: var(--section-padding-large);
  background: var(--color-bg);
}
.section--bordered-top { border-top: var(--divider-width) solid var(--color-border); }
.section--no-top-padding { padding-top: 0; }

.visually-hidden {
  position: absolute; width: 1px; height: 1px; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* ---- ※などの記号付き注釈のぶら下げインデント ---- */
.hanging-indent {
  padding-left: 1em;
  text-indent: -1em;
}

/* ---- スマホ幅のみの改行 ---- */
.br-sp { display: none; }
@media (max-width: 640px) {
  .br-sp { display: inline; }
}

/* ---- PC幅のみの改行 ---- */
.br-pc { display: none; }
@media (min-width: 992px) {
  .br-pc { display: inline; }
}

/* ---- 語中での改行を禁止 ---- */
.nowrap { white-space: nowrap; }

/* ---- Skip link ---- */
.skip-link {
  position: absolute; left: 0; top: -48px; background: var(--color-neutral-darkest);
  color: var(--color-white); padding: 12px 20px; z-index: 100; transition: top .2s ease;
}
.skip-link:focus { top: 0; }
