@charset "UTF-8";

/* ==============================================
   CSS Variables
   ============================================== */
:root {
  --color-primary: #004831;
  --color-secondary: #C4D700;
  --color-black: #000000;
  --color-white: #FFFFFF;
  --color-bg-light: #F5F6F3;
  --color-bg-gray: #F2F2F2;
  --color-bg-cream: #FCFAEF;
  --color-border: #DDDDDD;
  --color-text: #000000;
  --font-base: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", "游ゴシック Medium", YuGothic, "游ゴシック体", "Meiryo", "メイリオ", "Noto Sans JP", sans-serif;
}

/* ==============================================
   Reset / Base
   ============================================== */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-base);
  color: var(--color-text);
  -webkit-text-size-adjust: 100%;
  line-height: 1.6;
}

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

a {
  text-decoration: none;
  color: inherit;
}

ul, ol {
  list-style: none;
}

/* Header Wrapper */
.nh-l-header-wrap {
  position: sticky;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 100;
}

/* Utility */
.nh-u-sp-only {
  display: none;
}

/* ==============================================
   Group Header
   ============================================== */
.nh-l-groupHeader {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  border-bottom: 5px solid var(--color-secondary);
  background: var(--color-primary);
}

.nh-l-groupHeader__inner {
  display: flex;
  height: 59px;
  padding: 0 20px;
  justify-content: space-between;
  align-items: center;
  align-self: stretch;
}

.nh-l-groupHeader__logo img,
.nh-l-groupHeader__link img {
  display: block;
}

/* ==============================================
   InfoLounge Nav Bar
   ============================================== */
.nh-l-hdnav--top {
  display: flex;
  height: 40px;
  padding: 12px 20px;
  justify-content: flex-end;
  align-items: center;
  gap: 14px;
  background: var(--color-white);
  position: relative;
}

.nh-l-hdnav--top::after {
  content: "";
  position: absolute;
  bottom: -0.19px;
  left: 50%;
  transform: translateX(-50%);
  width: calc(100% - 40px);
  height: 1px;
  background: var(--color-border);
}

.nh-l-hdnav__link {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--color-black);
  text-align: right;
  font-size: 14px;
  font-style: normal;
  font-weight: 500;
  line-height: 14px;
  letter-spacing: 0.32px;
}

.nh-l-hdnav__arrow {
  width: 20px;
  height: 20px;
  aspect-ratio: 1/1;
}

.nh-l-hdnav__external {
  width: 16px;
  height: 16px;
  aspect-ratio: 1/1;
}

/* ==============================================
   Main Header
   ============================================== */
.nh-l-header {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  background: var(--color-white);
  box-shadow: 0 2px 18px 0 rgba(0, 0, 0, 0.08);
  position: relative;
  z-index: 10;
}

.nh-l-header__inner {
  display: flex;
  padding: 0 20px 0 30px;
  justify-content: space-between;
  align-items: center;
  align-self: stretch;
}

.nh-l-header__logo {
  display: flex;
  width: 240px;
  height: 24px;
  flex-direction: column;
  align-items: flex-start;
  aspect-ratio: 10/1;
}

.nh-l-header__logo a {
  display: flex;
}

.nh-l-header__nav {
  display: flex;
  align-items: center;
  gap: 16px;
}

.nh-l-header__globalnav {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}

.nh-l-header__globalnav li {
  display: flex;
  padding: 30px 0;
  flex-direction: column;
  align-items: center;
}

.nh-l-header__globalnav li a {
  color: var(--color-black);
  text-align: center;
  font-size: 15px;
  font-style: normal;
  font-weight: 400;
  line-height: 180%;
  letter-spacing: 0.5px;
  letter-spacing: 0.03em;
  white-space: nowrap;
}

.nh-l-header__btn {
  display: flex;
  align-items: center;
  gap: 6px;
}

.nh-l-header__menu {
  display: none;
}

.nh-l-header__menu-panel {
  display: none;
}

/* ==============================================
   Buttons
   ============================================== */
.nh-c-btn {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  font-family: var(--font-base);
  font-weight: 400;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: opacity 0.3s;
}

.nh-c-btn:hover {
  opacity: 0.8;
}

.nh-c-btn--primary {
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: 20px;
  padding: 16px;
  width: 326px;
  font-size: 18px;
  line-height: 1.6;
}

.nh-c-btn--primary span {
  width: 100%;
  text-align: center;
}

.nh-c-btn--primary img {
  width: 24px;
  height: 24px;
}

.nh-c-btn--lg {
  padding: 24px 60px;
  width: auto;
  border-radius: 26px;
}

.nh-c-btn--primary-sm {
  display: flex;
  height: 36px;
  padding: 5px 16px;
  justify-content: center;
  align-items: center;
  gap: 8px;
  border-radius: 12px;
  background: var(--color-primary);
  color: var(--color-white);
  text-align: center;
  font-size: 15px;
  font-style: normal;
  font-weight: 400;
  line-height: 180%;
  letter-spacing: 0.5px;
}

.nh-c-btn--primary-sm img {
  width: 18px;
  height: 20px;
  aspect-ratio: 9/10;
  filter: brightness(0) invert(1);
}

.nh-c-btn--outline-sm {
  display: flex;
  height: 36px;
  padding: 6px 16px;
  justify-content: center;
  align-items: center;
  gap: 8px;
  border-radius: 12px;
  border: 2px solid var(--color-primary);
  background: var(--color-white);
  color: var(--color-primary);
  text-align: center;
  font-size: 15px;
  font-style: normal;
  font-weight: 400;
  line-height: 180%;
  letter-spacing: 0.5px;
}

.nh-c-btn--outline-sm img {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  aspect-ratio: 1/1;
}

.nh-c-btn--footer {
  display: flex;
  width: 260px;
  padding: 14px 20px;
  justify-content: center;
  align-items: center;
  gap: 8px;
  border-radius: 16px;
}

.nh-c-btn--footer span {
  text-align: center;
  font-size: 15px;
  font-style: normal;
  font-weight: 400;
  line-height: 180%;
  letter-spacing: 0.5px;
}

.nh-c-btn--footer-primary {
  background: var(--color-primary);
  color: var(--color-white);
  border: 1px solid var(--color-white);
}

.nh-c-btn--footer-primary img {
  filter: brightness(0) invert(1);
}

.nh-c-btn--footer-outline {
  background: var(--color-white);
  color: var(--color-primary);
  border: 2px solid var(--color-primary);
}

/* ==============================================
   Footer
   ============================================== */
.nh-l-footer {
  background: var(--color-primary);
  border-top: 5px solid var(--color-secondary);
}

.nh-l-footer__inner {
  margin: 0 auto;
  padding: 80px 40px 40px;
}

.nh-l-footer__main-wrap {
  display: flex;
  gap: 0;
}

.nh-l-footer__nav-group {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 33px;
  padding-right: 40px;
}


.nh-l-footer__h3 a {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--color-white);
  font-size: 26px;
  font-style: normal;
  font-weight: 400;
  line-height: 150%;
  letter-spacing: 0.52px;
}

.nh-l-footer__h3 img {
  width: 24px;
  height: 24px;
  border-radius: 8px;
}

.nh-l-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 21px;
}

.nh-l-footer__nav li a {
  color: var(--color-white);
  font-size: 16px;
  font-style: normal;
  font-weight: 400;
  line-height: 200%;
  letter-spacing: 0.8px;
}

.nh-l-footer__nav li:not(:last-child)::after {
  content: "｜";
  color: var(--color-secondary);
  font-size: 16px;
  line-height: 2;
  margin-left: 10px;
}

.nh-l-footer__btn {
  border-left: 1px solid var(--color-white);
  padding: 0 40px;
  display: flex;
  align-items: center;
}

.nh-l-footer__btn__list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.nh-l-footer__sub {
  display: flex;
  justify-content: left;
  align-items: flex-start;
  flex-wrap: wrap;
  flex-direction: column;
  margin: 0 auto;
  padding: 40px;
  gap: 21px;
  border-top: 1px solid var(--color-white);
}

.nh-l-footer__logo img {
  display: block;
}

.nh-l-footer__sub-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  align-items: center;
}

.nh-l-footer__sub-nav li a {
  color: var(--color-white);
  font-size: 13px;
  font-style: normal;
  font-weight: 400;
  line-height: 180%;
  letter-spacing: 0.78px;
}

.nh-l-footer__sub-nav li:not(:last-child)::after {
  content: "｜";
  color: var(--color-white);
  font-size: 16px;
  line-height: 2;
  padding: 0 4px;
}

.nh-l-footer__copy {
  display: block;
  text-align: right;
  padding: 0 40px 40px;
  font-size: 10px;
  font-weight: 400;
  line-height: 1.5;
  color: var(--color-white);
  opacity: 0.7;
}

/* ==============================================
   Tablet (951px - 1380px)
   ============================================== */
@media (min-width: 951px) and (max-width: 1380px) {
  .nh-l-header__inner {
    flex-direction: column;
    padding-top: 30px;
    align-items: flex-start;
    height: 141px;
  }
}

/* ==============================================
   Tablet Small (951px - 1140px)
   ============================================== */
@media (min-width: 951px) and (max-width: 1140px) {
  .nh-l-header__globalnav {
    gap: 6px;
  }

  .nh-l-header__globalnav li a {
    font-size: 12px;
  }

  .nh-c-btn--primary-sm,
  .nh-c-btn--header,
  .nh-c-btn--outline-sm {
    height: 30px;
  }
}

/* ==============================================
   SP (max-width: 950px)
   ============================================== */
@media (max-width: 950px) {
  /* Utility */
  .nh-u-sp-only {
    display: block;
  }

  .nh-u-pc-only {
    display: none;
  }

  /* Group Header */
  .nh-l-groupHeader {
    border-bottom-width: 1.282051282051282vw;
  }

  .nh-l-groupHeader__inner {
    display: flex;
    height: 13.076923076923078vw;
    padding: 0 2.564102564102564vw;
    justify-content: space-between;
    align-items: center;
    align-self: stretch;
  }

  .nh-l-groupHeader__logo img {
    width: 25.64102564102564vw;
    height: auto;
  }

  .nh-l-groupHeader__link img {
    width: 16.923076923076923vw;
    height: auto;
  }

  /* InfoLounge Nav */
  .nh-l-hdnav.nh-l-hdnav--top {
    display: flex;
    width: 100%;
    height: 7.179487179487179vw;
    padding: 0 5.128205128205128vw;
    justify-content: flex-end;
    align-items: center;
    gap: 3.5897435897435894vw;
    background: var(--color-white);
  }

  .nh-l-hdnav__link {
    display: flex;
    height: 4.102564102564102vw;
    align-items: center;
    gap: 2.051282051282051vw;
    padding: 0;
  }

  .nh-l-hdnav__arrow {
    width: 4.102564102564102vw;
    height: 4.102564102564102vw;
    aspect-ratio: 1/1;
  }

  .nh-l-hdnav__external {
    width: 3.076923076923077vw;
    height: 3.076923076923077vw;
    aspect-ratio: 1/1;
  }

  .nh-l-hdnav__text {
    color: #000;
    text-align: right;
    font-size: 3.3333333333333335vw;
    font-style: normal;
    font-weight: 400;
    line-height: 180%;
    letter-spacing: 0.78px;
  }

  /* Main Header */
  .nh-l-header {
    display: flex;
    height: 15.384615384615385vw;
    padding: 5.128205128205128vw;
    align-items: center;
    align-self: stretch;
  }

  .nh-l-header__inner {
    padding: 0 5.128205128205128vw;
  }

  .nh-l-header__logo {
    width: 51.28205128205128vw;
    height: 5.128205128205128vw;
  }

  .nh-l-header__logo img {
    width: 51.28205128205128vw;
  }

  .nh-l-header__nav {
    display: none;
  }

  .nh-l-header__menu {
    display: flex;
    width: 17.94871794871795vw;
    height: 15.384615384615385vw;
    padding: 3.8461538461538463vw 0 2px 0;
    flex-direction: column;
    align-items: center;
    position: absolute;
    right: 0;
    z-index: 100;
  }

  .nh-l-header__menu p {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding-top: 2px;
  }

  .nh-l-header__menu__icon {
    display: block;
    width: 6.666666666666667vw;
    height: 4.102564102564102vw;
    position: relative;
  }

  .nh-l-header__menu__icon span {
    display: block;
    position: absolute;
    left: 0;
    width: 6.666666666666667vw;
    height: 2px;
    background: var(--color-primary);
    transition: all 0.3s;
  }

  .nh-l-header__menu__icon span:nth-child(1) { top: 0; }
  .nh-l-header__menu__icon span:nth-child(2) { top: 1.7948717948717947vw; }
  .nh-l-header__menu__icon span:nth-child(3) { top: 3.5897435897435894vw; }

  .nh-l-header__menu__label {
    font-size: 2.564102564102564vw;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--color-primary);
  }

  /* メニューパネル */
  .nh-l-header__menu-panel {
    display: block;
    position: absolute;
    top: 15vw;
    left: 0;
    width: 100%;
    height: 0;
    overflow: scroll;
    background: #FBFBF9;
    z-index: 99;
    transition: height 0.3s ease-out;
    box-shadow: inset 0 2px 18px 0 rgba(0, 0, 0, 0.08);
  }

  .nh-is-menu-open .nh-l-header__menu-panel {
    height: calc(100vh - 43vw);
  }

  .nh-l-header__menu-nav {
    padding: 6.153846153846154vw;
  }

  .nh-l-header__menu-list {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 2.051282051282051vw;
  }

  .nh-l-header__menu-list li {
    width: 100%;
    text-align: center;
  }

  .nh-l-header__menu-list li::after {
    content: "";
    display: block;
    width: 100%;
    height: 1px;
    background: var(--color-border);
    margin-top: 2.051282051282051vw;
  }

  .nh-l-header__menu-list li:last-child::after {
    display: none;
  }

  .nh-l-header__menu-list li a {
    display: block;
    padding: 4.102564102564102vw 0;
    font-size: 4.102564102564102vw;
    font-weight: 400;
    color: #000;
    line-height: 200%;
    letter-spacing: 0.05em;
    text-align: center;
  }

  .nh-l-header__menu-btn {
    display: flex;
    gap: 1.5384615384615385vw;
    margin-top: 4.102564102564102vw;
  }

  .nh-l-header__menu-btn li {
    flex: 1;
    display: flex;
  }

  .nh-c-btn--menu {
    display: flex;
    width: 100%;
    height: 100%;
    padding: 2.051282051282051vw 4.102564102564102vw;
    justify-content: center;
    align-items: center;
    gap: 2.051282051282051vw;
    border-radius: 3.076923076923077vw;
    font-size: 3.8461538461538463vw;
    font-weight: 400;
    line-height: 180%;
    letter-spacing: 0.03em;
  }

  .nh-c-btn--menu.nh-c-btn--primary-sm {
    background: var(--color-primary);
    color: var(--color-white);
  }

  .nh-c-btn--menu.nh-c-btn--outline-sm {
    background: var(--color-white);
    color: var(--color-primary);
    border: 2px solid var(--color-primary);
  }

  .nh-c-btn--menu img {
    width: 4.615384615384616vw;
    height: 5.128205128205128vw;
  }

  .nh-c-btn--menu.nh-c-btn--outline-sm img {
    width: 5.128205128205128vw;
    height: 5.128205128205128vw;
  }

  /* ハンバーガー X アニメーション */
  .nh-is-menu-open .nh-l-header__menu__icon span:nth-child(1) {
    top: 1.7948717948717947vw;
    transform: rotate(45deg);
  }

  .nh-is-menu-open .nh-l-header__menu__icon span:nth-child(2) {
    opacity: 0;
  }

  .nh-is-menu-open .nh-l-header__menu__icon span:nth-child(3) {
    top: 1.7948717948717947vw;
    transform: rotate(-45deg);
  }

  /* Buttons */
  .nh-c-btn--primary {
    width: 100%;
    max-width: 83.58974358974359vw;
    padding: 4.102564102564102vw;
    border-radius: 5.128205128205128vw;
    background: #01442E;
    color: #FFF;
    text-align: center;
    font-size: 4.615384615384616vw;
    font-style: normal;
    font-weight: 400;
    line-height: 160%;
    letter-spacing: 0.9px;
    margin-top: 6.153846153846154vw;
  }

  .nh-c-btn--primary img {
    width: 6.153846153846154vw;
    height: 6.153846153846154vw;
    flex-shrink: 0;
  }

  .nh-c-btn--lg {
    width: 100%;
    padding: 4.615384615384616vw 7.6923076923076925vw;
    font-size: 4.102564102564102vw;
    border-radius: 5.641025641025641vw;
    margin-top: 0;
  }

  /* Footer */
  .nh-l-footer {
    display: flex;
    padding: 9.230769230769232vw 3.076923076923077vw;
    flex-direction: column;
    align-items: flex-start;
    align-self: stretch;
  }

  .nh-l-footer__inner {
    padding: 0;
  }

  .nh-l-footer__main-wrap {
    flex-direction: column;
    gap: 10.76923076923077vw;
    padding: 0 4.102564102564102vw;
  }

  .nh-l-footer__nav-group {
    gap: 10.256410256410255vw;
    padding: 0;
  }

  .nh-l-footer__h3 a {
    color: #FFF;
    font-size: 6.153846153846154vw;
    font-style: normal;
    font-weight: 400;
    line-height: 160%;
    letter-spacing: 1.2px;
    justify-content: space-between;
  }

  .nh-l-footer__h3 img {
    width: 6.153846153846154vw;
    height: 6.153846153846154vw;
  }

  .nh-l-footer__nav {
    margin-top: 3.076923076923077vw;
    gap: 2.051282051282051vw;
  }

  .nh-l-footer__nav li a {
    color: #FFF;
    font-size: 4.102564102564102vw;
    font-style: normal;
    font-weight: 400;
    line-height: 200%;
    letter-spacing: 0.8px;
  }

  .nh-l-footer__nav li:not(:last-child)::after {
    font-size: 3.3333333333333335vw;
    margin-left: 2.051282051282051vw;
  }

  .nh-l-footer__btn {
    border: none;
    padding: 0 0 5.128205128205128vw 0;
  }

  .nh-l-footer__btn__list {
    flex-direction: column;
    gap: 4.102564102564102vw;
    width: 100%;
  }

  .nh-l-footer__btn__list li {
    flex: 1;
  }

  .nh-c-btn--footer {
    display: flex;
    width: 100%;
    padding: 3.5897435897435894vw 5.128205128205128vw;
    justify-content: center;
    align-items: center;
    gap: 2.051282051282051vw;
    align-self: stretch;
  }

  .nh-c-btn--footer span {
    text-align: center;
    font-size: 3.8461538461538463vw;
    font-style: normal;
    font-weight: 400;
    line-height: 180%;
    letter-spacing: 0.5px;
  }

  .nh-c-btn--footer-primary img {
    width: 4.615384615384616vw;
    height: 5.128205128205128vw;
    aspect-ratio: 9/10;
  }

  .nh-c-btn--footer-outline img {
    width: 5.128205128205128vw;
    height: 5.128205128205128vw;
    aspect-ratio: 1/1;
  }

  .nh-l-footer__sub {
    flex-direction: column;
    gap: 4.102564102564102vw;
    padding: 10.256410256410255vw 0;
    align-items: flex-start;
  }

  .nh-l-footer__logo-wrap {
    display: flex;
    justify-content: center;
    width: 100%;
  }

  .nh-l-footer__logo-wrap img {
    width: 71.28205128205128vw;
    height: 5.641025641025641vw;
  }

  .nh-l-footer__sub-nav {
    display: block;
    width: 100%;
  }

  .nh-l-footer__sub-nav li {
    padding: 3.8461538461538463vw 0;
    text-align: center;
  }

  .nh-l-footer__sub-nav li a {
    color: #FFF;
    text-align: center;
    font-size: 3.3333333333333335vw;
    font-style: normal;
    font-weight: 400;
    line-height: 180%;
    letter-spacing: 0.78px;
  }

  .nh-l-footer__sub-nav li:not(:last-child)::after {
    display: none;
  }

  .nh-l-footer__copy {
    font-size: 2.307692307692308vw;
    padding: 3.076923076923077vw 5.128205128205128vw;
  }
}
