@charset "UTF-8";

/* ============================================
 *  共通設定
 * ============================================ */
:root {
  /* Colors */
  --c-text: #002a45;
  --c-text-muted: #002a4599;
  --c-text-white: #ffffff;
  --c-spacer: #002a4526;
  --c-border: #002a450d;
  --c-outline: #002a451a;
  --c-bg: #ffffff;
  --c-bg-section: #f8f9fa;
  --c-bg-fb: #ffffff;
  --c-accent: #1e8cd0;
  --c-accent-border: #1679b7;
  --c-ib: #1e6eb8;
  --c-ib-border: #316fa8;
  --c-ib-biz: #159e73;
  --c-ib-biz-border: #1f8c72;

  --c-emphasis: #e7461e;

  /* Spacing */
  --s-0-5: 4px;
  --s-1: 8px;
  --s-1-5: 12px;
  --s-2: 16px;
  --s-2-5: 20px;
  --s-3: 24px;
  --s-3-5: 28px;
  --s-4: 32px;
  --s-4-5: 36px;
  --s-5: 40px;
  --s-5-5: 44px;
  --s-6: 48px;
  --s-6-5: 52px;
  --s-7: 56px;
  --s-8: 64px;
  --s-9: 72px;
  --s-9-5: 76px;
  --s-10: 80px;

  /* Font Size */
  --fs-2xs: 12px;
  --fs-xs: 14px;
  --fs-s: 16px;
  --fs-base: 18px;
  --fs-m: 20px;
  --fs-l: 24px;
  --fs-xl: 26px;
  --fs-2xl: 36px;

  /* Font Weight */
  --fw-r: 400;
  --fw-m: 500;
  --fw-sb: 600;

  /* Radius */
  --r-s: 4px;
  --r-m: 8px;
  --r-l: 16px;
  --r-full: 9999px;

  /* Transition */
  --dur: 0.3s;
  --ease: cubic-bezier(0.4, 0, 0.2, 1);

  /* Layout */
  --page-pad-wide: 40px;
  --page-pad: 48px;
  --max-w-wide: 1440px;
  --max-w: 1080px;
  --header-h: 148px;

  /* Icons */
  --icon-chevron-down-r: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M337.5 433C328.1 442.4 312.9 442.4 303.6 433L143.5 273C134.1 263.6 134.1 248.4 143.5 239.1C152.9 229.8 168.1 229.7 177.4 239.1L320.4 382.1L463.4 239.1C472.8 229.7 488 229.7 497.3 239.1C506.6 248.5 506.7 263.7 497.3 273L337.3 433z'/%3E%3C/svg%3E");
  --icon-chevron-right-r: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M473.5 303C482.9 312.4 482.9 327.6 473.5 336.9L273.5 536.9C264.1 546.3 248.9 546.3 239.6 536.9C230.3 527.5 230.2 512.3 239.6 503L422.6 320L239.6 137C230.2 127.6 230.2 112.4 239.6 103.1C249 93.8 264.2 93.7 273.5 103.1L473.5 303.1z'/%3E%3C/svg%3E");
  --icon-chevron-right-l: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M427.3 308.7C433.5 314.9 433.5 325.1 427.3 331.3L267.3 491.3C261.1 497.5 250.9 497.5 244.7 491.3C238.5 485.1 238.5 474.9 244.7 468.7L393.4 320L244.7 171.3C238.5 165.1 238.5 154.9 244.7 148.7C250.9 142.5 261.1 142.5 267.3 148.7L427.3 308.7z'/%3E%3C/svg%3E");
  --icon-scroll-top: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M303.5 207C312.9 197.6 328.1 197.6 337.4 207L497.4 367C506.8 376.4 506.8 391.6 497.4 400.9C488 410.2 472.8 410.3 463.5 400.9L320.5 257.9L177.5 400.9C168.1 410.3 152.9 410.3 143.6 400.9C134.3 391.5 134.2 376.3 143.6 367L303.6 207z'/%3E%3C/svg%3E");
  --icon-caret-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M441.3 299.8C451.5 312.4 450.8 330.9 439.1 342.6L311.1 470.6C301.9 479.8 288.2 482.5 276.2 477.5C264.2 472.5 256.5 460.9 256.5 448L256.5 192C256.5 179.1 264.3 167.4 276.3 162.4C288.3 157.4 302 160.2 311.2 169.3L439.2 297.3L441.4 299.7z'/%3E%3C/svg%3E");

  --icon-circle-chevron-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M64 320C64 461.4 178.6 576 320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320zM305 441C295.6 450.4 280.4 450.4 271.1 441C261.8 431.6 261.7 416.4 271.1 407.1L358.1 320.1L271.1 233.1C261.7 223.7 261.7 208.5 271.1 199.2C280.5 189.9 295.7 189.8 305 199.2L409 303C418.4 312.4 418.4 327.6 409 336.9L305 441z'/%3E%3C/svg%3E");

  --icon-biz: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M192 96C174.3 96 160 110.3 160 128L160 512C160 529.7 174.3 544 192 544L256 544L256 464C256 437.5 277.5 416 304 416L336 416C362.5 416 384 437.5 384 464L384 544L448 544C465.7 544 480 529.7 480 512L480 128C480 110.3 465.7 96 448 96L192 96zM288 544L352 544L352 464C352 455.2 344.8 448 336 448L304 448C295.2 448 288 455.2 288 464L288 544zM256 576L192 576C156.7 576 128 547.3 128 512L128 128C128 92.7 156.7 64 192 64L448 64C483.3 64 512 92.7 512 128L512 512C512 547.3 483.3 576 448 576L256 576zM352 192C352 183.2 359.2 176 368 176L384 176C392.8 176 400 183.2 400 192L400 208C400 216.8 392.8 224 384 224L368 224C359.2 224 352 216.8 352 208L352 192zM368 288L384 288C392.8 288 400 295.2 400 304L400 320C400 328.8 392.8 336 384 336L368 336C359.2 336 352 328.8 352 320L352 304C352 295.2 359.2 288 368 288zM240 192C240 183.2 247.2 176 256 176L272 176C280.8 176 288 183.2 288 192L288 208C288 216.8 280.8 224 272 224L256 224C247.2 224 240 216.8 240 208L240 192zM256 288L272 288C280.8 288 288 295.2 288 304L288 320C288 328.8 280.8 336 272 336L256 336C247.2 336 240 328.8 240 320L240 304C240 295.2 247.2 288 256 288z'/%3E%3C/svg%3E");
  --icon-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath d='M224 192C224 139 267 96 320 96C373 96 416 139 416 192C416 245 373 288 320 288C267 288 224 245 224 192zM448 192C448 121.3 390.7 64 320 64C249.3 64 192 121.3 192 192C192 262.7 249.3 320 320 320C390.7 320 448 262.7 448 192zM128 544C128 464.5 192.5 400 272 400L368 400C447.5 400 512 464.5 512 544L512 560C512 568.8 519.2 576 528 576C536.8 576 544 568.8 544 560L544 544C544 446.8 465.2 368 368 368L272 368C174.8 368 96 446.8 96 544L96 560C96 568.8 103.2 576 112 576C120.8 576 128 568.8 128 560L128 544z'/%3E%3C/svg%3E");
}

@media (max-width: 1249px) {
  :root {
    --fs-2xs: 12px;
    --fs-s: 14px;
    --fs-base: 16px;
    --fs-m: 18px;
    --fs-l: 18px;
    --fs-xl: 20px;
    --fs-2xl: 31px;
    --header-h: 152px;
  }
}

@media (max-width: 799px) {
  :root {
    --page-pad-wide: 16px;
    --page-pad: 24px;
    --header-h: 70px;
  }
}

/* ============================================
 *  リセット・ベース
 * ============================================ */
button,
input,
select {
  all: unset;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Inter", "Noto Sans JP", sans-serif;
  font-feature-settings: "palt";
  font-weight: var(--fw-r);
  letter-spacing: 0.07em;
  line-height: 1.5;
  color: var(--c-text);
}

*:focus-visible {
  outline: 3px solid #0bf !important;
  outline-offset: 3px !important;
}

.news-page select:focus-visible {
  outline: none !important;
}

a {
  text-decoration: none;
}

html {
  overflow-x: hidden;
}

body {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  background-color: var(--c-bg);
  font-size: var(--fs-base);
  overflow-x: clip;
}

html:has(body.is-menu-open),
body.is-menu-open {
  overflow: hidden;
  overscroll-behavior: none;
}

main {
  margin-top: var(--header-h);
}

h1,
div:has(h1) > p,
h2,
h3,
h4 {
  line-height: 1.3;
}

.wrap-unit,
.inherit {
  text-decoration: inherit;
  color: inherit;
  font-weight: inherit;
  line-height: inherit;
}

.wrap-unit {
  display: inline-block;
}

.contents .disable {
  pointer-events: none;
  cursor: not-allowed;
  display: none;
}

/* ============================================
 *  リサイズ時のアニメーションの停止
 * ============================================ */
body.is-resizing *,
body.is-resizing *::before,
body.is-resizing *::after {
  transition: none !important;
}

/* ============================================
 *  レイアウト
 * ============================================ */
.inner-wide {
  width: 100%;
  max-width: calc(var(--max-w-wide) + var(--page-pad-wide) * 2);
  margin-inline: auto;
  padding-inline: var(--page-pad-wide);
}

.inner {
  width: 100%;
  max-width: calc(var(--max-w) + var(--page-pad) * 2);
  margin-inline: auto;
  padding-inline: var(--page-pad);
}

/* ============================================
 *  クリッカブル要素
 * ============================================ */
.btn,
.btns a {
  position: relative;
  padding: calc(var(--s-2) - 1px) var(--s-7) calc(var(--s-2) - 1px) var(--s-3);
  line-height: 1.3;
}

.btn.center {
  margin-inline: auto;
}

.btn.text-color,
.btns.text-color a {
  color: var(--c-accent);
}

.btn > span,
.btns a > span,
.wrapper.apply .btn > span > span {
  display: inline-block;
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
}

.btn,
.btns a,
.btns button,
.btn-static,
.btns-static a,
.btns-static button,
.splide__slide > a > img {
  --c-btn-border: color-mix(in srgb, var(--c-text) 8%, transparent);

  display: inline-flex;
  align-items: center;
  background-color: var(--c-bg-fb);
  border-radius: var(--r-m);
  background-clip: padding-box;
  border: 1px solid var(--c-btn-border);
  box-shadow: 0 2px 0 0 var(--c-btn-border);
}

.btn,
.btns a,
.btns button,
.btn.solid,
.contents .btns a.solid,
.btn-hover,
.btns-hover a,
.btns-hover button,
.splide__slide > a {
  cursor: pointer;
  transition: opacity var(--dur) var(--ease);
  font-weight: var(--fw-m);
}

.btn:hover,
.btns a:hover,
.btns button:hover,
.btn.solid:hover,
.btns a.solid:hover,
.btn-hover:hover,
.btns-hover a:hover,
.btns-hover button:hover,
.splide__slide > a:hover {
  opacity: 0.7 !important;
}

.texts-link a:hover {
  text-decoration: underline;
}

.breadcrumb a,
.contents p > a,
.contents .note > span > a,
.contents .flex-text > span > a,
.contents strong > a,
.contents .list > li a {
  color: var(--c-accent);
  text-decoration: underline;
  transition: opacity var(--dur) var(--ease);
}

.contents strong > a {
  font-weight: inherit;
}

.contact > div:last-of-type > div:first-of-type > a,
.contact > div:last-of-type > a,
.card-list > div > div:first-of-type > a {
  transition: opacity var(--dur) var(--ease);
}

.breadcrumb a:hover,
.contents p > a:hover,
.contents .note > span > a:hover,
.contents .flex-text > span > a:hover,
.contact > div:last-of-type > div:first-of-type > a:hover,
.contact > div:last-of-type > a:hover,
.card-list > div > div:first-of-type > a:hover,
.contents strong > a:hover,
.contents .list > li a:hover {
  opacity: 0.7;
}

.btn::after,
.btns a::after {
  width: calc(var(--s-2-5) + 2px);
  aspect-ratio: 1;
  -webkit-mask-image: var(--icon-chevron-right-r);
  mask-image: var(--icon-chevron-right-r);
  position: absolute;
  top: 50%;
  right: var(--s-3);
  transform: translateY(-50%);
  background-color: color-mix(in srgb, var(--c-text) 40%, transparent);
}

.btn.solid,
.btns a.solid,
.btns-static.solid a,
.btns-static.solid button {
  --c-btn-border: var(--c-accent-border);

  background-color: color-mix(in srgb, var(--c-accent) 90%, transparent);
  background-clip: unset;
  color: var(--c-text-white);
}

.btn.outline,
.btns a.outline {
  --c-btn-border: var(--c-accent);
  color: var(--c-accent);
}

.btn {
  width: fit-content;
}

.btn:not(.solid):hover,
.btns:not(.page-index) a:not(.solid):hover,
.btn-static.btn-hover:not(.solid):hover {
  opacity: 1 !important;
  background-color: #f4f9fd;
}

@media (max-width: 1249px) {
  .btn,
  .btns a {
    padding-left: var(--s-2-5);
    padding-block: var(--s-1-5);
  }

  .btn::after,
  .btns a::after {
    right: var(--s-2);
    width: var(--s-2-5);
  }
}

/* ── スマホ版ヘッダーテキストメニューボタン化（btns-static ＋ butons-hover） ── */
@media (max-width: 799px) {
  .header-util > ul > li > a {
    --c-btn-border: color-mix(in srgb, var(--c-text) 6%, transparent);

    display: inline-flex;
    align-items: center;
    background-color: var(--c-bg-fb);
    border-radius: var(--r-m);
    background-clip: padding-box;
    border: 1px solid var(--c-btn-border);
    box-shadow: 0 2px 0 0 var(--c-btn-border);
    cursor: pointer;
    transition: opacity var(--dur) var(--ease);
  }

  .header-util > ul > li > a:hover {
    opacity: 0.7 !important;
  }
}

/* ============================================
 *  アイコン
 * ============================================ */
.icon-before::before,
.icons-before a::before,
.icons-before button::before,
.contents div:has(> select)::after,
.btn::after,
.btns a::after,
.column-list a::after,
.page-index > ul > li > a::after,
.external::after,
.scroll-top-btn::before,
.breadcrumb ol > li + li::before,
ul.check > li::before,
.wrapper.apply .btn::before,
.wrapper.apply .btns a::before {
  aspect-ratio: 1;
  content: "";
  display: block;
  flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

.gnav__sub > ul > li > a::after,
.contents .page-index > ul > li > a::after {
  right: var(--s-1-5);
  width: var(--s-3);
  -webkit-mask-image: var(--icon-circle-chevron-right);
  mask-image: var(--icon-circle-chevron-right);
}

/* ============================================
 *  ヘッダー
 * ============================================ */
header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 200;
  width: 100%;
  background-color: var(--c-bg-fb);
  transition: transform var(--dur) var(--ease);
}

header.is-hidden {
  transform: translateY(-100%);
  pointer-events: none;
}

header.is-hidden .gnav nav > ul > li:hover > .gnav__sub {
  visibility: hidden;
  pointer-events: none;
  transition-delay: 0s;
}

/* ── 固定メニュー ── */

header > .fixed {
  padding-block: var(--s-1-5);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

header > .fixed > .logo > a {
  display: block;
  width: 288px;
}

header > .fixed > .logo > a > img {
  padding-top: calc(var(--s-1) - 1px);
  display: block;
  width: 100%;
}

header > .fixed > .header-btns {
  display: flex;
  gap: calc(var(--s-2) - 2px);
}

header > .fixed > .header-btns > a,
header > .fixed > .header-btns > button {
  align-items: center;
  padding: var(--s-1) var(--s-2-5) var(--s-1) var(--s-2);
  border-radius: var(--r-m);
}

header > .fixed > .header-btns > a {
  display: flex;
  gap: var(--s-1);
  line-height: 1.2;
  font-size: 0;
}

header > .fixed > .header-btns > a:nth-of-type(1) {
  --c-btn-border: var(--c-ib-border);
  background-color: color-mix(in srgb, var(--c-ib) 90%, transparent);
}

header > .fixed > .header-btns > a:nth-of-type(2) {
  --c-btn-border: var(--c-ib-biz-border);
  background-color: color-mix(in srgb, var(--c-ib-biz) 90%, transparent);
}

header > .fixed > .header-btns > a::before {
  width: var(--s-3-5);
  -webkit-mask-image: var(--icon-user);
  mask-image: var(--icon-user);
}

header > .fixed > .header-btns > a:nth-of-type(2)::before {
  -webkit-mask-image: var(--icon-biz);
  mask-image: var(--icon-biz);
}

header > .fixed > .header-btns > a > span > br {
  display: none;
}

header > .fixed > .header-btns > a span {
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}

header > .fixed > .header-btns > a > span > span {
  color: inherit;
  font-size: var(--fs-s);
}

header > .fixed > .header-btns > button {
  display: none;
  align-items: center;
  cursor: pointer;
}

/* ── ヘッダーユーティリティ ── */
.header-util {
  position: absolute;
  top: var(--s-2);
  left: 50%;
  transform: translateX(-50%);
  pointer-events: none;
  padding-block: var(--s-2);
  padding-right: 584px;
  display: flex;
  justify-content: flex-end;
  gap: var(--s-2);
  font-size: var(--fs-s);
}

.header-util > ul {
  pointer-events: auto;
  display: flex;
  gap: calc(var(--s-5) - 2px);
  list-style: none;
}

.header-util > ul > li {
  position: relative;
}

.header-util > ul > li + li::before {
  position: absolute;
  top: var(--s-0-5);
  bottom: var(--s-0-5);
  left: -20px;
  display: block;
  width: 1px;
  content: "";
  background-color: color-mix(in srgb, var(--c-text) 20%, transparent);
  transform: translateX(-50%);
}

@media (max-width: 799px) {
  .header-util {
    font-size: var(--fs-base);
  }
}

/* ── グローバルナビ ── */
.gnav {
  position: relative;
  background-color: color-mix(in srgb, #328fc9 3%, transparent);
  outline: 1px solid color-mix(in srgb, var(--c-text) 8%, transparent);
}

.gnav > .inner-wide {
  display: flex;
  align-items: center;
  gap: 4%;
}

.gnav nav {
  position: static;
  width: 100%;
}

.gnav nav > ul {
  display: flex;
  list-style: none;
}

.gnav nav > ul > li {
  position: static;
  width: 100%;
}

.gnav__link {
  position: relative;
  padding-block: var(--s-2);
  display: flex;
  justify-content: center;
  text-decoration: none;
  font-weight: var(--fw-m);
  transition: background-color var(--dur) var(--ease);
}

.gnav__link > img {
  width: 36px;
}

.gnav nav > ul > li + li > .gnav__link::before,
.gnav nav > ul > li:first-of-type > .gnav__link::before,
.gnav nav > ul > li:last-of-type > .gnav__link::after {
  position: absolute;
  top: var(--s-1-5);
  bottom: var(--s-1-5);
  left: 0;
  display: block;
  width: 1px;
  content: "";
  background-color: color-mix(in srgb, var(--c-text) 20%, transparent);
  transform: translateX(-50%);
  transition: opacity var(--dur) var(--ease);
}

.gnav nav > ul > li:last-of-type > .gnav__link::after {
  left: unset;
  right: 0;
}

.gnav nav > ul > li:hover > .gnav__link {
  background-color: color-mix(in srgb, var(--c-accent) 10%, transparent);
}

.gnav nav > ul > li:hover > .gnav__link::before,
.gnav nav > ul > li:hover > .gnav__link::after,
.gnav nav > ul > li:hover + li > .gnav__link::before {
  opacity: 0;
}

/* ── サブナビ ── */
.gnav__sub,
.page-index > ul {
  width: 100%;
}

.page-index > ul {
  background-color: #e3f0f8;
}

.gnav__sub {
  position: absolute;
  top: 100%;
  left: 0;
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0s var(--ease) var(--dur);
}

.gnav nav > ul > li:hover > .gnav__sub,
.gnav nav > ul > li:focus-within > .gnav__sub {
  visibility: visible;
  pointer-events: auto;
  transition-delay: 0s;
}

.gnav__sub > ul,
.page-index > ul {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(200px, 100%), 1fr));
  gap: var(--s-2);
  padding-block: var(--s-3);
  list-style: none;
}

.gnav__sub::before {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  content: "";
  background-color: #e3f0f800;
  opacity: 0;
  transition:
    opacity 0s var(--ease) var(--dur),
    background-color var(--dur) var(--ease);
}

header:has(.gnav nav > ul > li:hover) .gnav__sub::before,
header:has(.gnav nav > ul > li:focus-within) .gnav__sub::before {
  background-color: #e3f0f8;
}

.gnav nav > ul > li:hover > .gnav__sub::before,
.gnav nav > ul > li:focus-within > .gnav__sub::before {
  opacity: 1;
  transition-delay: 0s;
}

header:has(.gnav nav > ul > li:hover) .gnav nav > ul > li:not(:hover) > .gnav__sub::before,
header:has(.gnav nav > ul > li:focus-within) .gnav nav > ul > li:not(:focus-within) > .gnav__sub::before {
  transition:
    opacity var(--dur) var(--ease),
    background-color var(--dur) var(--ease);
}

.gnav__sub > ul {
  position: relative;
  z-index: 1;
  opacity: 0;
  transition: opacity var(--dur) var(--ease);
}

.gnav nav > ul > li:hover > .gnav__sub > ul,
.gnav nav > ul > li:focus-within > .gnav__sub > ul {
  opacity: 1;
}

.gnav__sub > ul > li > a,
.contents .page-index > ul > li > a {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 4em;
  padding: var(--s-1) var(--s-2);
  background-color: var(--c-bg-fb);
  text-align: center;
}

.gnav__sub > ul > li > a > span,
.contents .page-index > ul > li > a > span {
  height: calc(1em * 1.3 * 2);
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  line-height: 1.3;
}

.gnav__sub > ul > li > a > img,
.contents .page-index > ul > li > a > img {
  width: var(--s-9);
}

/* ── メニュー（PC） ── */
header > .menu {
  display: flex;
  flex-direction: column;
}

/* ── オーバーレイ ── */
.menu-overlay {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.2);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity var(--dur) var(--ease),
    visibility var(--dur) var(--ease);
}

header:has(.gnav nav > ul > li:hover) > .menu-overlay,
header:has(.gnav nav > ul > li:focus-within) > .menu-overlay {
  opacity: 1;
  visibility: visible;
}

header.is-hidden > .menu-overlay {
  opacity: 0;
  visibility: hidden;
}

.menu-overlay.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

@media (max-width: 1399px) {
  header > .fixed > .header-btns > a > span > br {
    display: block;
  }

  .header-util {
    padding-right: 420px;
  }
}

@media (max-width: 1249px) {
  header > .fixed > .logo > a {
    width: 248px;
  }

  header > .fixed > .header-btns {
    padding-block: 38px 4px;
    gap: calc(var(--s-1) + 2px);
  }

  header > .fixed > .header-btns > a::before {
    display: none;
  }

  header > .fixed > .header-btns > a > span > br {
    display: none;
  }

  .header-util {
    padding: 0 var(--page-pad-wide) 0 0;
  }

  .gnav > .inner-wide {
    gap: 2%;
  }
}

@media (max-width: 799px) {
  header {
    background-color: unset;
  }

  header > .fixed {
    position: relative;
    z-index: 1;
    outline: 1px solid color-mix(in srgb, var(--c-text) 8%, transparent);
    background-color: var(--c-bg-fb);
  }

  header > .fixed > .logo > a {
    width: 176px;
  }

  header > .fixed > .logo > a > img {
    padding-top: var(--s-0-5);
  }

  header > .fixed > .header-btns {
    padding: unset;
  }

  header > .fixed > .header-btns > a {
    padding-inline: var(--s-1-5);
    font-size: var(--fs-2xs);
  }

  header > .fixed > .header-btns > a:nth-of-type(2) {
    display: none;
  }

  header > .fixed > .header-btns > a > span > br {
    display: block;
  }

  header > .fixed > .header-btns > a > span > span {
    font-size: var(--fs-2xs);
  }

  header > .fixed > .header-btns > button {
    display: flex;
    padding: var(--s-1) var(--s-1-5);
  }

  header > .fixed > .header-btns > button > span {
    position: relative;
    display: inline-block;
    width: 20px;
    height: 16px;
  }

  header > .fixed > .header-btns > button > span > span {
    position: absolute;
    left: 0;
    display: inline-block;
    width: 100%;
    height: 2px;
    background-color: var(--c-text-white);
    border-radius: 2px;
    transition:
      transform var(--dur) var(--ease),
      opacity var(--dur) var(--ease);
  }

  header > .fixed > .header-btns > button > span > span:nth-of-type(1) {
    top: 0;
  }

  header > .fixed > .header-btns > button > span > span:nth-of-type(2) {
    top: 7px;
  }

  header > .fixed > .header-btns > button > span > span:nth-of-type(3) {
    bottom: 0;
  }

  header > .fixed > .header-btns > button.is-active > span > span:nth-of-type(1) {
    transform: translateY(7px) rotate(45deg);
  }

  header > .fixed > .header-btns > button.is-active > span > span:nth-of-type(2) {
    opacity: 0;
  }

  header > .fixed > .header-btns > button.is-active > span > span:nth-of-type(3) {
    transform: translateY(-7px) rotate(-45deg);
  }

  .menu-overlay {
    position: fixed;
    top: var(--header-h);
    bottom: 0;
    height: auto;
  }

  header > .menu {
    position: fixed;
    top: var(--header-h);
    left: 0;
    right: 0;
    gap: var(--s-4);
    max-height: calc(100dvh - var(--header-h));
    padding: var(--s-2) 0 var(--s-4) 0;
    background-color: #ecf3f9;
    box-shadow: 0 8px 24px color-mix(in srgb, var(--c-text) 10%, transparent);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    transform: translateY(-8px);
    transition:
      opacity var(--dur) var(--ease),
      transform var(--dur) var(--ease),
      visibility var(--dur) var(--ease);
  }

  header > .menu.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
    outline: 1px solid color-mix(in srgb, var(--c-text) 8%, transparent);
  }

  .gnav nav > ul > li + li > .gnav__link::before,
  .gnav nav > ul > li:first-of-type > .gnav__link::before,
  .gnav nav > ul > li:last-of-type > .gnav__link:not(.accordion)::after {
    display: none;
  }

  .gnav nav > ul > li:hover > .gnav__link {
    background-color: transparent;
  }

  .gnav > .inner-wide,
  .header-util {
    padding-inline: var(--page-pad-wide);
  }

  .gnav {
    order: -1;
    background-color: transparent;
    border-top: none;
    outline: unset;
  }

  .gnav > .inner-wide {
    flex-direction: column;
    gap: var(--s-4);
    padding-inline: var(--page-pad);
  }

  .gnav > .inner-wide > nav {
    overflow: hidden;
    padding: 0;
  }

  .gnav nav > ul {
    flex-direction: column;
  }

  .gnav nav > ul > li {
    border-bottom: 1px solid var(--c-spacer);
  }

  .gnav nav > ul > li:hover > .gnav__link::after {
    opacity: 1;
  }

  /* ── ナビリンク（SP） ── */
  .gnav__link {
    justify-content: unset;
    gap: 6px;
    padding: calc(var(--s-2) + 2px) 0;
    transition: none;
    border-radius: 0;
    font-size: var(--fs-l);
  }

  .gnav__link.accordion {
    position: relative;
    cursor: pointer;
  }

  .gnav nav > ul > li > .gnav__link.accordion::after {
    all: unset;
    position: absolute;
    right: 0;
    display: block;
    width: var(--s-3-5);
    aspect-ratio: 1;
    content: "";
    background-color: var(--c-accent);
    -webkit-mask-image: var(--icon-chevron-down-r);
    mask-image: var(--icon-chevron-down-r);
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    transition: transform var(--dur) var(--ease);
  }

  .gnav nav > ul > li > .gnav__link.is-open::after {
    transform: rotate(180deg);
  }

  .gnav__link > img {
    width: 30px;
  }

  .gnav__sub {
    position: static;
    width: auto;
    display: grid;
    grid-template-rows: 0fr;
    border-top: none;
    visibility: visible;
    pointer-events: auto;
    transition: grid-template-rows var(--dur) var(--ease);
  }

  .gnav__sub::before {
    content: none;
  }

  .gnav__link.is-open + .gnav__sub {
    grid-template-rows: 1fr;
  }

  .gnav__sub > ul {
    overflow: hidden;
    padding-inline: unset;
    padding-block: 0;
    opacity: 1;
    transition: padding-bottom var(--dur) var(--ease);
  }

  .contents .page-index > ul {
    padding: var(--s-2);
  }

  .gnav__link.is-open + .gnav__sub > ul {
    padding-bottom: var(--s-3);
  }

  .gnav__sub > ul > li > a,
  .contents .page-index > ul > li > a {
    padding: var(--s-1-5) var(--s-1-5) var(--s-0-5) !important;
    height: 100%;
  }

  .gnav__sub > ul > li > a {
    gap: 2px;
    font-size: 16px;
  }

  .gnav__sub > ul,
  .page-index > ul,
  .header-util > ul {
    grid-template-columns: repeat(auto-fill, minmax(min(160px, 100%), 1fr));
    gap: var(--s-2);
  }

  .gnav__sub > ul > li > a > img,
  .contents .page-index > ul > li > a > img {
    width: var(--s-6-5);
  }

  .header-util {
    position: static;
    transform: unset;
    padding: 0 var(--page-pad);
    justify-content: unset;
  }

  .header-util > ul {
    width: 100%;
    display: grid;
  }

  .header-util > ul > li + li::before {
    display: none;
  }

  .header-util > ul > li > a {
    width: 100%;
    padding: var(--s-1);
    display: flex;
    justify-content: center;
    font-weight: var(--fw-m);
  }

  .header-util > ul > li > a:hover {
    text-decoration: none;
  }
}

/* ============================================
 *  バッジ
 * ============================================ */

.pdf::after,
.news-page > .inner > ul.column-list > li[data-tab="important"] > :is(a, div) > p:first-of-type::after,
.news-page > .inner > ul.column-list > li[data-tab="news"] > :is(a, div) > p:first-of-type::after {
  color: var(--c-emphasis);
  display: inline-block;
  font-weight: var(--fw-m);
  line-height: 1.2;
  padding: 1px var(--s-1);
  border-radius: 2px;
}

.pdf::after {
  content: "PDF";
  border: 1px solid currentColor;
  transform: scale(0.7);
}

.btn.pdf::after,
.btn .pdf::after {
  margin-left: var(--s-0-5);
}

.btn.solid .pdf::after {
  color: inherit;
}

/* ============================================
 *  ファイルサイズ表示
 * ============================================ */

.file-size {
  color: color-mix(in srgb, var(--c-text) 60%, transparent);
}

.file-size::before {
  content: " ";
}

/* ============================================
 *  コンテンツ枠
 * ============================================ */

.wrapper,
.news .column-list,
.contents > section > .inner > .column-list,
.ib-news,
.contact {
  border: 1px solid color-mix(in srgb, var(--c-text) 5%, transparent);
  border-radius: var(--r-l);
  background-color: var(--c-bg-section);
}

.news .column-list,
.contents.stripe > section:nth-child(even) > .inner > .column-list,
.wrapper .wrapper,
.contents.stripe > section:nth-child(even) .wrapper,
.contents.stripe > section:nth-child(even) .ib-news,
.contents.stripe > section:nth-child(even):not(.bottom-menu) .contact {
  outline: 1px solid var(--c-outline);
  border: unset;
  background-color: var(--c-bg-fb);
}

.contents.stripe > section:nth-child(even),
.contents.stripe > section:nth-child(even) .wrapper .wrapper {
  outline: unset;
  border: 1px solid var(--c-border);
  background-color: #f8f9fa;
}

.contents.stripe > section:nth-child(even).bottom-menu {
  border: unset;
  background-color: unset;
}

.contents.stripe > section:nth-child(even).bottom-menu,
.contents:not(.stripe) > section.bottom-menu {
  border-top: 1px solid color-mix(in srgb, var(--c-text) 10%, transparent);
}

footer {
  border-top: 1px solid color-mix(in srgb, var(--c-text) 5%, transparent);
}

/* ============================================
 *  お知らせの内容切替
 * ============================================ */

.news [role="tablist"],
.news-page [role="tablist"] {
  outline: var(--s-0-5) solid color-mix(in srgb, var(--c-text) 8%, transparent);
  border-radius: var(--r-m);
  background-color: color-mix(in srgb, var(--c-text) 8%, transparent);
  display: flex;
}

.news [role="tab"],
.news-page [role="tab"] {
  width: 216px;
  padding: var(--s-1) var(--s-2-5);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: calc(var(--s-1) - 2px);
  color: var(--c-text-muted);
  font-weight: var(--fw-m);
  white-space: nowrap;
  cursor: pointer;
  transition: color var(--dur) var(--ease);
}

.news [role="tab"]:hover,
.news-page [role="tab"]:hover {
  border-color: var(--c-accent-border);
  color: var(--c-accent);
}

.news [role="tab"]:first-of-type,
.news-page [role="tab"]:first-of-type {
  border-radius: var(--r-m) 0 0 var(--r-m);
}

.news [role="tab"]:last-of-type,
.news-page [role="tab"]:last-of-type {
  border-radius: 0 var(--r-m) var(--r-m) 0;
}

.news [role="tab"][aria-selected="true"],
.news-page [role="tab"][aria-selected="true"] {
  border-color: var(--c-accent-border);
  background-color: color-mix(in srgb, var(--c-accent) 80%, transparent);
  color: var(--c-text-white);
}

.news [role="tab"]#tab-important:hover,
.news-page [role="tab"][data-tab="important"]:hover {
  color: var(--c-emphasis);
}

.news [role="tab"][aria-selected="true"]#tab-important,
.news-page [role="tab"][aria-selected="true"][data-tab="important"] {
  background-color: color-mix(in srgb, var(--c-emphasis) 80%, transparent);
  color: var(--c-text-white);
}

@media (max-width: 1249px) {
  .news [role="tab"],
  .news-page [role="tab"] {
    width: 148px;
    padding-block: calc(var(--s-1) - 2px);
  }
}

@media (max-width: 599px) {
  .news [role="tablist"],
  .news [role="tab"],
  .news-page [role="tablist"],
  .news-page [role="tab"] {
    width: 100%;
  }

  .news [role="tab"] {
    padding-inline: var(--s-0-5);
  }
}

/* ============================================
 *  お知らせ欄
 * ============================================ */

.column-list {
  display: flex;
  flex-direction: column;
  list-style: none;
}

.column-list > li {
  width: 100%;
}

.column-list > li + li {
  border-top: 1px solid var(--c-spacer);
}

.column-list > li > :is(a, div) {
  position: relative;
  display: flex;
  gap: var(--s-4);
  padding: var(--s-2-5) var(--s-5) var(--s-2-5) var(--s-3);
}

.column-list > li > a::after {
  width: 28px;
  -webkit-mask-image: var(--icon-chevron-right-l);
  mask-image: var(--icon-chevron-right-l);
  position: absolute;
  top: 50%;
  right: var(--s-2-5);
  transform: translateY(-50%);
  background-color: var(--c-accent);
}

.column-list > li > :is(a, div) > p:first-of-type:not(:last-of-type) {
  color: var(--c-accent);
  font-weight: var(--fw-m);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
  flex-shrink: 0;
}

.column-list > li > a:hover > p:nth-of-type(2),
.column-list > li > a:hover > p:only-of-type {
  text-decoration: underline;
}

@media (max-width: 1249px) {
  .column-list > li > :is(a, div) {
    padding: var(--s-2-5) 68px var(--s-2-5) var(--s-2-5);
  }
}

@media (max-width: 599px) {
  .column-list > li > :is(a, div) {
    flex-direction: column;
    gap: var(--s-1);
  }

  .column-list > li > :is(a, div) > p:first-of-type:not(:last-of-type) {
    line-height: 1;
  }
}

/* ============================================
 *  トップへ戻るボタン
 * ============================================ */
.sticky-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0px;
  pointer-events: none;
  display: flex;
  flex-direction: column-reverse;
  align-items: flex-end;
}

.scroll-top-btn {
  position: sticky;
  right: 0;
  bottom: var(--s-3);
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--s-8);
  aspect-ratio: 1;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  cursor: pointer;
  transition: opacity var(--dur);
}

.scroll-top-btn::before {
  width: var(--s-5);
  background-color: var(--c-text);
  -webkit-mask-image: var(--icon-scroll-top);
  mask-image: var(--icon-scroll-top);
}

.scroll-top-btn.is-visible {
  opacity: 1;
  pointer-events: auto;
}

@media (max-width: 1249px) {
  .scroll-top-btn {
    width: var(--s-6);
  }

  .scroll-top-btn::before {
    width: var(--s-4);
  }
}

@media (max-width: 799px) {
  .sticky-container {
    bottom: 40px;
  }
}

@media print {
  .scroll-top-btn {
    position: static !important;
  }
}

/* ============================================
 *  フッター
 * ============================================ */

footer > .inner-wide {
  display: flex;
  justify-content: space-between;
  gap: var(--s-4);
}

footer > .inner-wide > div:nth-of-type(1) > p {
  line-height: 1.3;
}

footer {
  background-color: #f8f9fa;
  padding-top: 112px;
}

footer li {
  list-style: none;
}

footer > .inner-wide > div:nth-of-type(1) {
  display: flex;
  flex-direction: column;
  gap: calc(var(--s-4) + 1px);
}

footer > .inner-wide > div:nth-of-type(1) > a {
  width: 352px;
  display: block;
}

footer > .inner-wide > div:nth-of-type(1) > a > img {
  width: 100%;
  display: block;
}

footer > .inner-wide > div:nth-of-type(1) > div {
  display: flex;
  flex-direction: column;
  gap: var(--s-1-5);
}

footer > .inner-wide > div:nth-of-type(1) > div > p {
  font-size: var(--fs-s);
}

footer > .inner-wide > div:nth-of-type(2) {
  margin-right: var(--s-5);
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  gap: 92px;
}

footer > .inner-wide > div:nth-of-type(2) > div > h2 {
  line-height: 1.5;
  font-size: var(--fs-2xl);
  font-weight: var(--fw-sb);
  letter-spacing: 0;
}

footer > .inner-wide > div:nth-of-type(2) > div > p {
  line-height: 1.3;
  color: var(--c-accent);
  font-weight: var(--fw-m);
}

footer > .inner-wide > div:nth-of-type(2) > div > ul {
  margin-top: var(--s-2-5);
  display: flex;
  flex-direction: column;
  gap: calc(var(--s-2) - 2px);
}

footer > .inner-wide > div:nth-of-type(2) > div > ul > li > a {
  line-height: 1.8;
  text-decoration: underline dashed currentColor 1px;
  text-underline-offset: 0.4em;
  transition: color var(--dur) var(--ease);
}

footer > .inner-wide > div:nth-of-type(2) > div > ul > li > a:hover {
  color: var(--c-accent);
}

footer > .copyright {
  color: var(--c-text-muted);
  background-color: color-mix(in srgb, var(--c-text) 6%, transparent);
  padding: var(--s-2-5) 0;
  text-align: center;
  font-size: var(--fs-2xs);
  margin-top: 160px;
}

footer > .copyright > br {
  display: none;
}

@media (max-width: 1399px) {
  footer > .inner-wide > div:nth-of-type(2) {
    gap: var(--s-5);
  }
}

@media (max-width: 1249px) {
  footer {
    padding-top: var(--s-10);
  }

  footer > .inner-wide > div:nth-of-type(1) > a {
    padding-right: var(--s-2-5);
    width: 283px;
  }

  footer > .inner-wide > div:nth-of-type(1) > div {
    gap: var(--s-0-5);
  }

  footer > .inner-wide > div:nth-of-type(2) {
    margin-right: 0;
    gap: var(--s-4);
  }

  footer > .copyright {
    margin-top: var(--s-10);
    font-size: 10px;
  }
}

@media (max-width: 799px) {
  footer {
    padding-top: var(--s-8);
  }

  footer > .inner-wide {
    padding-inline: var(--page-pad);
    flex-direction: column-reverse;
    gap: 0;
  }

  footer > .inner-wide > div:nth-of-type(1) {
    padding-top: var(--s-8);
    border-top: 1px solid var(--c-spacer);
    gap: var(--s-1-5);
  }

  footer > .inner-wide > div:nth-of-type(1),
  footer > .inner-wide > div:nth-of-type(1) > div {
    align-items: center;
  }

  footer > .inner-wide > div:nth-of-type(2) {
    padding-bottom: var(--s-9-5);
    display: flex;
    flex-direction: column;
    gap: var(--s-7);
  }

  footer > .inner-wide > div:nth-of-type(2) > div > ul {
    margin-top: var(--s-2);
    flex-wrap: wrap;
    flex-direction: row;
    gap: calc(var(--s-1-5) + 2px) calc(var(--s-2) + 2px);
  }

  footer > .copyright {
    margin-top: var(--s-8);
    padding: var(--s-2) var(--page-pad);
    text-align: left;
  }

  footer > .copyright > br {
    display: block;
  }
}
