.site-logo {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

:root {
  --bg: #f7fbf8;
  --white: #ffffff;
  --ink: #20333a;
  --muted: rgba(32, 51, 58, 0.72);

  --line: rgba(255, 255, 255, 0.22);
  --glass: rgba(255, 255, 255, 0.12);
  --shadow: 0 12px 34px rgba(22, 46, 52, 0.14);

  --snow-accent: #8ebfd1;
  --mountain-accent: #9ab89b;

  --header-pad-x: clamp(16px, 2.6vw, 34px);
  --header-pad-y: clamp(14px, 2vw, 22px);

  --logo-w: clamp(86px, 12vw, 150px);
  --menu-btn-w: 74px;
  --menu-btn-h: 74px;

  --title-size: clamp(34px, 6vw, 92px);
  --sub-size: clamp(11px, 1.3vw, 18px);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  min-height: 100%;
}

html.is-menu-open,
html.is-menu-open body {
  overflow: hidden;
}

body {
  background: var(--bg);
  color: var(--ink);
  font-family: 'Noto Sans JP', sans-serif;
  overflow-x: hidden;
}

.pc-br,
.sp-br {
  display: none;
}

@media (min-width: 768px) {
  .pc-br {
    display: inline;
  }
}

@media (max-width: 767.98px) {
  .sp-br {
    display: inline;
  }
}

/* =========================================================
   site loader
========================================================= */
html.is-loading,
body.is-loading {
  overflow: auto;
}

.page-loader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  background: #fff;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition:
    opacity 0.55s ease,
    visibility 0.55s ease;
}

.page-loader.is-hide {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.page-loader__spinner {
  width: 36px;
  height: 36px;
  border: 2px solid rgba(20, 40, 60, 0.16);
  border-top-color: rgba(20, 40, 60, 0.72);
  border-radius: 50%;
  animation: pageLoaderSpin 0.8s linear infinite;
}

@keyframes pageLoaderSpin {
  to {
    transform: rotate(360deg);
  }
}

/* =========================================================
  Header
========================================================= */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 1200;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: var(--header-pad-y) var(--header-pad-x);
  pointer-events: none;
}

.site-logo,
.menu-toggle {
  pointer-events: auto;
}

.site-logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--logo-w);
  text-decoration: none;
}

.site-logo img {
  display: block;
  width: 100%;
  height: auto;
}

/* =========================================================
  Hamburger Button
========================================================= */
.menu-toggle {
  position: relative;
  width: 88px;
  height: 78px;
  border: none;
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  transition: transform 0.28s ease;
}

.menu-toggle:hover {
  transform: translateY(-2px);
}

.menu-toggle__line {
  display: none !important;
}

.menu-toggle::before,
.menu-toggle::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 42px;
  height: 2px;
  margin-left: -21px;
  margin-top: -1px;
  background: #fff;
  border-radius: 999px;
  transform-origin: center;
  filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.55));
  transition:
    transform 0.28s ease,
    opacity 0.2s ease,
    width 0.28s ease,
    margin-left 0.28s ease,
    background 0.28s ease;
}

.menu-toggle::before {
  box-shadow:
    0 -10px 0 #fff,
    0 10px 0 #fff;
}

.menu-toggle::after {
  opacity: 0;
}

.menu-toggle:hover::before {
  width: 48px;
  margin-left: -24px;
}

.menu-toggle.is-active {
  z-index: 1400;
}

.menu-toggle.is-active::before {
  width: 28px;
  margin-left: -14px;
  box-shadow: none;
  filter: none;
  transform: rotate(45deg);
  background: #20333a;
}

.menu-toggle.is-active::after {
  width: 28px;
  margin-left: -14px;
  opacity: 1;
  filter: none;
  transform: rotate(-45deg);
  background: #20333a;
}

.menu-toggle:focus-visible {
  outline: 2px solid rgba(32, 51, 58, 0.45);
  outline-offset: 4px;
}

@media (max-width: 767.98px) {
  .menu-toggle {
    width: 64px;
    height: 64px;
  }

  .menu-toggle::before,
  .menu-toggle::after {
    width: 26px;
    margin-left: -13px;
  }

  .menu-toggle::before {
    box-shadow:
      0 -7px 0 #fff,
      0 7px 0 #fff;
  }

  .menu-toggle:hover::before {
    width: 30px;
    margin-left: -15px;
  }

  .menu-toggle.is-active::before,
  .menu-toggle.is-active::after {
    width: 24px;
    margin-left: -12px;
  }
}

/* =========================================================
  Hamburger Button - SP
========================================================= */
@media (max-width: 767.98px) {
  .menu-toggle {
    width: 64px;
    height: 64px;
  }

  .menu-toggle::before,
  .menu-toggle::after {
    width: 26px;
    height: 2px;
    margin-left: -13px;
    margin-top: -1px;
    filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.55));
  }

  .menu-toggle::before {
    box-shadow:
      0 -7px 0 #fff,
      0 7px 0 #fff;
  }

  .menu-toggle:hover::before {
    width: 30px;
    margin-left: -15px;
  }

  .menu-toggle.is-active::before,
  .menu-toggle.is-active::after {
    width: 24px;
    margin-left: -12px;
    box-shadow: none;
    filter: none;
    background: #20333a;
  }

  .menu-toggle.is-active:hover::before,
  .menu-toggle.is-active:hover::after {
    width: 26px;
    margin-left: -13px;
  }
}

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

/* =========================================================
  Split Entrance
========================================================= */
.entrance {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr 1fr;
  min-height: 720px;
  overflow: hidden;
}

.entrance-card {
  position: relative;
  display: block;
  height: 360px;
  min-height: 360px;
  overflow: hidden;
  text-decoration: none;
  color: #fff;
  isolation: isolate;
}

.entrance-card__bg,
.entrance-card__overlay {
  position: absolute;
  inset: 0;
}

.entrance-card__bg {
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  transform: scale(1);
  transition: none;
}

.entrance-card__overlay {
  background:
    linear-gradient(to bottom, rgba(12, 25, 30, 0), rgba(12, 25, 30, 0)),
    linear-gradient(135deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0));
}

.entrance-card--snow .entrance-card__bg {
  background-image:
    linear-gradient(135deg, rgba(142, 191, 209, 0), rgba(255, 255, 255, 0)),
    url('../images/top-snow.webp');
}

.entrance-card--mountain .entrance-card__bg {
  background-image:
    linear-gradient(135deg, rgba(154, 184, 155, 0), rgba(255, 255, 255, 0.02)),
    url('../images/top-mountain2.webp');
}

.entrance-card__content {
  position: relative;
  z-index: 2;
  height: 360px;
  min-height: 360px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 20px;
  text-align: center;
}

.entrance-card__sub {
  display: inline-block;
  font-size: var(--sub-size);
  letter-spacing: 0.24em;
  font-weight: 600;
  text-transform: uppercase;
  opacity: 0.96;
  padding: 8px 14px;
  text-shadow: 0 3px 3px rgb(0 0 0);
}

.entrance-card__title {
  margin: 0;
  font-family: 'Roboto', sans-serif;
  font-size: var(--title-size);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
  text-shadow: 0 3px 9px rgb(0 0 0 / 59%);
}

@media (max-width: 768px) {
  .entrance-card__title {
    font-size: 4em;
  }
}

.entrance::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 1px;
  background: rgba(255, 255, 255, 0.18);
  z-index: 3;
  pointer-events: none;
}

/* PC：左右2分割 */
@media (min-width: 768px) {
  .entrance {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr;
    min-height: 100vh;
  }

  .entrance-card {
    height: 100vh;
    min-height: 100vh;
  }

  .entrance-card__content {
    height: 100vh;
    min-height: 100vh;
  }

  .entrance-card__bg {
    transition: transform 0.8s ease;
  }

  .entrance-card:hover .entrance-card__bg {
    transform: scale(1.05);
  }

  .entrance::after {
    top: 0;
    bottom: 0;
    left: 50%;
    right: auto;
    width: 1px;
    height: auto;
  }
}

/* SP：iPhone Chrome対策で高さ固定 */
@media (max-width: 767.98px) {
  .entrance {
    height: 720px;
    min-height: 720px;
    max-height: 720px;
  }

  .entrance-card {
    height: 360px;
    min-height: 360px;
    max-height: 360px;
  }

  .entrance-card__content {
    height: 360px;
    min-height: 360px;
    max-height: 360px;
  }

  .entrance-card__bg,
  .entrance-card:hover .entrance-card__bg,
  .entrance-card:focus .entrance-card__bg,
  .entrance-card:active .entrance-card__bg {
    transform: none;
    transition: none;
  }
}

/* =========================================================
  Fullscreen Slide Menu
========================================================= */
.global-menu {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100svh;
  z-index: 1300;
  pointer-events: none;
  overflow: hidden;
}

.global-menu__backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  margin: 0;
  background: rgba(12, 22, 28, 0.18);
  opacity: 0;
  transition: opacity 0.35s ease;
  cursor: pointer;
}

.global-menu__panel {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      circle at top left,
      rgba(255, 255, 255, 0.32),
      transparent 34%
    ),
    linear-gradient(135deg, #f7fbf8 0%, #eef6fb 48%, #edf6ef 100%);
  clip-path: inset(0 0 0 100%);
  -webkit-clip-path: inset(0 0 0 100%);
  transition:
    clip-path 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    -webkit-clip-path 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  overflow: hidden;
}

.global-menu.is-open {
  pointer-events: auto;
}

.global-menu.is-open .global-menu__backdrop {
  opacity: 1;
}

.global-menu.is-open .global-menu__panel {
  clip-path: inset(0 0 0 0);
  -webkit-clip-path: inset(0 0 0 0);
}
.global-menu__inner {
  height: 100svh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  padding: clamp(18px, 2.6vh, 34px) clamp(42px, 7vw, 100px)
    clamp(18px, 2.8vh, 34px);
  overflow: hidden;
}

.global-menu__head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: clamp(16px, 3vh, 38px);
}

.global-menu__eyebrow {
  margin: 0;
  color: rgba(32, 51, 58, 0.58);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.28em;
}

.global-menu__close {
  position: relative;
  width: 58px;
  height: 58px;
  border: none;
  background: transparent;
  cursor: pointer;
  transition:
    transform 0.25s ease,
    opacity 0.25s ease;
}

.global-menu__close:hover {
  transform: rotate(90deg);
  opacity: 0.72;
}

.global-menu__close span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 42px;
  height: 2px;
  background: #20333a;
  border-radius: 999px;
}

.global-menu__close span:first-child {
  transform: translate(-50%, -50%) rotate(45deg);
}

.global-menu__close span:last-child {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.global-menu__body {
  --menu-body-shift-y: -78px;

  flex: 1 1 auto;
  min-height: 0;
  position: relative;
  overflow: hidden;
  transform: translateY(var(--menu-body-shift-y));
}

.global-menu__nav {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(42vw, 560px);
  transform: translate(-50%, -50%);
}

.global-menu__list {
  list-style: none;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: clamp(6px, 1vh, 12px);
}

.global-menu__list li {
  overflow: hidden;
}

.global-menu__list li:nth-child(4),
.global-menu__list li:nth-child(10) {
  margin-top: clamp(10px, 1.8vh, 22px);
}

.global-menu__list a {
  display: block;
  width: 100%;
  padding: clamp(9px, 1.25vh, 15px) 0;
  text-decoration: none;
  color: #20333a;
  border-bottom: 1px solid rgba(32, 51, 58, 0.1);
  transform: translateX(34px);
  opacity: 0;
  transition:
    color 0.25s ease,
    transform 0.45s ease,
    opacity 0.45s ease,
    border-color 0.25s ease;
}

.global-menu__label {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: clamp(22px, 2vh, 30px);
  font-weight: 300;
  line-height: 1.38;
  letter-spacing: 0.06em;
}

.global-menu__label--pc {
  display: inline-block !important;
}

.global-menu__label--sp {
  display: none !important;
}

body.snow-page .global-menu__list a.is-current {
  border-color: #c75c10a8;
}

.global-menu__list a:hover,
body.snow-page .global-menu__list {
  color: #c26522a8;
}

.global-menu.is-open .global-menu__list a {
  transform: translateX(0);
  opacity: 1;
}

.global-menu.is-open .global-menu__list li:nth-child(1) a {
  transition-delay: 0.06s;
}
.global-menu.is-open .global-menu__list li:nth-child(2) a {
  transition-delay: 0.1s;
}
.global-menu.is-open .global-menu__list li:nth-child(3) a {
  transition-delay: 0.14s;
}
.global-menu.is-open .global-menu__list li:nth-child(4) a {
  transition-delay: 0.18s;
}
.global-menu.is-open .global-menu__list li:nth-child(5) a {
  transition-delay: 0.22s;
}
.global-menu.is-open .global-menu__list li:nth-child(6) a {
  transition-delay: 0.26s;
}
.global-menu.is-open .global-menu__list li:nth-child(7) a {
  transition-delay: 0.3s;
}
.global-menu.is-open .global-menu__list li:nth-child(8) a {
  transition-delay: 0.34s;
}
.global-menu.is-open .global-menu__list li:nth-child(9) a {
  transition-delay: 0.38s;
}
.global-menu.is-open .global-menu__list li:nth-child(10) a {
  transition-delay: 0.42s;
}

.global-menu__side {
  position: absolute;
  right: clamp(34px, 7vw, 110px);
  bottom: clamp(34px, 7vh, 82px);
  width: min(26vw, 320px);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: clamp(18px, 2.4vh, 28px);
}

.global-menu__subnav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 28px;
}

.global-menu__subnav a {
  display: inline-flex;
  width: fit-content;
  color: rgba(32, 51, 58, 0.68);
  text-decoration: none;
  font-size: 13px;
  letter-spacing: 0.08em;
  transition:
    color 0.25s ease,
    transform 0.25s ease;
}

.global-menu__subnav a:hover {
  color: #376a63;
  transform: translateX(4px);
}

.global-menu__sns {
  display: flex;
  align-items: center;
  gap: 12px;
}

.global-menu__sns a {
  width: clamp(34px, 5vh, 42px);
  height: clamp(34px, 5vh, 42px);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #20333a;
  text-decoration: none;
  border: 1px solid rgba(32, 51, 58, 0.16);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.42);
  transition:
    transform 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease,
    background 0.25s ease;
}

.global-menu__sns a:hover {
  transform: translateY(-3px);
  color: #376a63;
  border-color: rgba(55, 106, 99, 0.36);
  background: rgba(255, 255, 255, 0.82);
}

.global-menu__sns i {
  font-size: 18px;
}

.global-menu__note {
  margin: 0;
  color: rgba(32, 51, 58, 0.44);
  font-size: clamp(10px, 1.5vh, 11px);
  letter-spacing: 0.22em;
}

.global-menu {
  z-index: 1500;
}

.global-menu__panel {
  z-index: 1;
}

.global-menu__close {
  position: relative;
  z-index: 20;
  pointer-events: auto;
}

/* =========================================================
  Fullscreen Slide Menu - PC final safe layout
========================================================= */

/* 1701px以上：今まで通りメインメニューは中央 */
@media (min-width: 1701px) {
  .global-menu__nav {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(42vw, 560px);
    transform: translate(-50%, -50%);
  }

  .global-menu__side {
    position: absolute;
    right: clamp(34px, 7vw, 110px);
    bottom: clamp(34px, 7vh, 82px);
    width: min(26vw, 320px);
  }
}

/* 768px〜1700px：重ならないように2カラム化 */
@media (min-width: 768px) and (max-width: 1700px) {
  .global-menu__body {
    --menu-body-shift-y: -40px;

    display: grid;
    grid-template-columns: minmax(380px, 560px) minmax(240px, 320px);
    column-gap: clamp(70px, 8vw, 130px);
    justify-content: center;
    align-items: center;

    overflow: visible;
    transform: translateY(var(--menu-body-shift-y));
  }

  .global-menu__nav {
    position: static;
    width: 100%;
    transform: none;
  }

  .global-menu__side {
    position: static;
    width: 100%;
    margin-top: 180px;
  }
}

/* =========================================================
  Fullscreen Slide Menu - SP
========================================================= */
@media (max-width: 767.98px) {
  .global-menu {
    height: 100vh;
    overflow: hidden;
  }

  .global-menu__inner {
    height: 100vh;
    min-height: 100vh;
    padding: 28px 28px 24px;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
  }

  .global-menu__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 22px;
  }

  .global-menu__eyebrow {
    font-size: 10px;
    letter-spacing: 0.28em;
    color: rgba(32, 51, 58, 0.62);
  }

  .global-menu__close {
    width: 44px;
    height: 44px;
  }

  .global-menu__close span {
    width: 30px;
  }

  .global-menu__body {
    position: static;
    display: block;
    overflow: visible;
    transform: none;
    min-height: 0;
  }

  .global-menu__nav {
    position: static;
    width: 100%;
    transform: none;
    overflow: visible;
  }

  .global-menu__list {
    display: grid;
    gap: 0;
    width: 100%;
    margin: 0;
    padding: 0 0 28px;
  }

  .global-menu__list li {
    overflow: visible;
  }

  .global-menu__list li:nth-child(4),
  .global-menu__list li:nth-child(10) {
    margin-top: 12px;
  }

  .global-menu__list a {
    display: block;
    padding: 8px 0 8px 20px;
    border-bottom: 0;
    color: #20333a;
  }

  .global-menu__list a::after {
    content: '';
    display: block;
    width: 24px;
    height: 1px;
    margin-top: 8px;
    background: rgba(32, 51, 58, 0.18);
  }

  .global-menu__label--pc {
    display: none !important;
  }

  .global-menu__label--sp {
    display: inline-block !important;
  }

  .global-menu__label {
    font-size: clamp(18px, 5vw, 22px);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0.22em;
    color: rgb(31 91 112 / 86%);
  }

  .global-menu__side {
    position: static;
    width: 100%;
    display: block;
    margin-top: 0;
    padding-bottom: 20px;
  }

  .global-menu__subnav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px 20px;
    margin-bottom: 18px;
  }

  .global-menu__subnav a {
    display: inline-flex;
    width: fit-content;
    font-size: 12px;
    line-height: 1.45;
    letter-spacing: 0.04em;
    color: rgb(43 105 128 / 78%);
    text-decoration: none;
  }

  .global-menu__sns {
    display: flex;
    justify-content: flex-start;
    gap: 10px;
    margin: 10px 0 18px;
  }

  .global-menu__sns a {
    width: 36px;
    height: 36px;
    background: rgba(255, 255, 255, 0.72);
    border-color: rgba(32, 51, 58, 0.2);
  }

  .global-menu__sns i {
    font-size: 15px;
  }

  .global-menu__note {
    margin: 0;
    padding-bottom: 8px;
    font-size: 9px;
    letter-spacing: 0.18em;
    color: rgba(32, 51, 58, 0.42);
  }
}

/* =========================================================
  Global Menu - stable hover / break
========================================================= */
.global-menu__list li.global-menu__break {
  margin-top: clamp(10px, 1.8vh, 22px);
}

.global-menu__list a:hover,
.global-menu__list a:hover .global-menu__label {
  color: #c26522a8 !important;
}

.global-menu__list a.is-current {
  border-color: #c75c10a8;
}

/* =========================================================
  Fullscreen Video Block
========================================================= */
.gv-video-block {
  position: relative;
  width: 100%;
  height: 100vh;
  height: 60svh;
  overflow: hidden;
  background: #ffffff;
}

.gv-video-block__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (max-width: 768px) {
  .gv-video-block {
    position: relative;
    width: 100%;
    height: 360px;
    min-height: 360px;
    max-height: 360px;
    overflow: hidden;
    background: #ffffff;
  }

  .gv-video-block__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
}

/* =========================================================
  Mt. Gassan About Block
========================================================= */
.gassan-about-block {
  position: relative;
  padding: clamp(90px, 12vw, 180px) 20px;
  overflow: hidden;
  background: #fff;
}
.gassan-about-block::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url('../images/line_m.png') center center / cover no-repeat;
  opacity: 0.44;
  pointer-events: none;
}

.gassan-about-block__inner {
  position: relative;
  z-index: 1;
  max-width: 980px;
  margin: 0 auto;
  text-align: center;
}

.gassan-about-block__eyebrow {
  margin: 0 0 14px;
  font-size: 0.82rem;
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #6f6f6f;
}

.gassan-about-block__title {
  font-family: 'Shippori Mincho', serif;
  margin: 0 0 24px;
  font-size: clamp(2.2rem, 6vw, 4.6rem);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: 0.04em;
  color: #111;
}

.gassan-about-block__text {
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(40px, 3vw, 60px) 0 clamp(40px, 6vw, 90px);
  font-size: clamp(1rem, 1.1vw, 1.1rem);
  color: var(--ink);
  font-family: 'Noto Sans JP', sans-serif;
  font-weight: 300;
  line-height: 2;
  letter-spacing: 0.04em;
  color: #2b2b2b;
}

@media (max-width: 767.98px) {
  .gassan-about-block {
    padding: 80px 20px 50px;
  }

  .gassan-about-block::before {
    background-position: center top;
    background-size: contain;
    opacity: 0.18;
  }

  .gassan-about-block__title {
    margin-bottom: 18px;
  }

  .gassan-about-block__text {
    line-height: 1.9;
    font-size: clamp(0.9rem, 1vw, 1.1rem);
    text-align: left;
  }
}

/* =========================================================
  SNOW / MOUNTAIN Link Block
========================================================= */
.gassan-link-block {
  padding: clamp(40px, 6vw, 90px) 20px clamp(90px, 10vw, 140px);
  background: #fff;
}

.gassan-link-block__inner {
  width: min(70vw, 1100px);
  margin: 0 auto;
  display: grid;
  gap: 22px;
}

.gassan-link-card {
  position: relative;
  display: grid;
  grid-template-columns: 14% 1fr;
  align-items: stretch;
  min-height: 25px;
  border: 1px solid #d9d9d9;
  background: #fff;
  text-decoration: none;
  color: #111;
  overflow: hidden;
  transition:
    transform 0.35s ease,
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}

.gassan-link-card:hover,
.gassan-link-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.1);
  border-color: #bcbcbc;
}

.gassan-link-card__media {
  position: relative;
  display: block;
  overflow: hidden;
}

.gassan-link-card__media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.gassan-link-card:hover .gassan-link-card__media img,
.gassan-link-card:focus-visible .gassan-link-card__media img {
  transform: scale(1.05);
}

.gassan-link-card__content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 0 clamp(18px, 5vw, 134px);
}

.gassan-link-card__title {
  display: block;
  font-family: 'Roboto', sans-serif;
  color: #73a075;
  font-size: clamp(1.5rem, 2.5vw, 2.6rem);
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.12em;
}

.gassan-link-card__arrow {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: clamp(1.3rem, 2.2vw, 2.2rem);
  color: #73a075;
  line-height: 1;
  transform: translateX(0);
  transition: transform 0.3s ease;
}

.gassan-link-card:hover .gassan-link-card__arrow,
.gassan-link-card:focus-visible .gassan-link-card__arrow {
  transform: translateX(8px);
}

@media (max-width: 991.98px) {
  .gassan-link-block__inner {
    width: min(86vw, 900px);
  }

  .gassan-link-card {
    grid-template-columns: 38% 1fr;
    min-height: 136px;
  }
}

@media (max-width: 767.98px) {
  .gassan-link-block {
    padding: 24px 16px 80px;
  }

  .gassan-link-block__inner {
    width: 100%;
    gap: 16px;
  }

  .gassan-link-card {
    grid-template-columns: 1fr;
    min-height: auto;
  }

  .gassan-link-card__media {
    aspect-ratio: 16 / 7;
  }

  .gassan-link-card__content {
    padding: 16px 16px;
  }

  .gassan-link-card__title {
    font-size: clamp(1.3rem, 7vw, 1.8rem);
    letter-spacing: 0.1em;
  }

  .gassan-link-card__arrow {
    font-size: 1.6rem;
  }
}

/* =========================================================
  SNS Icons Block
========================================================= */
.gassan-sns-block {
  padding: 26px 20px 110px;
  background: #fff;
  overflow: hidden;
}

.gassan-sns-block__inner {
  width: min(70vw, 1100px);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 18px;
}

.gassan-sns-link {
  width: 42px;
  height: 62px;
  background: #fff;
  color: #111;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 2.15rem;
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease;
}

.gassan-sns-link:hover,
.gassan-sns-link:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1);
  border-color: #bcbcbc;
  color: #111;
}

@media (max-width: 991.98px) {
  .gassan-sns-block__inner {
    width: min(86vw, 900px);
  }
}

@media (max-width: 767.98px) {
  .gassan-sns-block {
    padding: 22px 16px 80px;
  }

  .gassan-sns-block__inner {
    width: 100%;
    justify-content: center;
    gap: 16px;
  }

  .gassan-sns-link {
    width: 48px;
    height: 48px;
    font-size: 1.8rem;
  }
}

/* =========================================================
  Footer
========================================================= */
.site-footer {
  background: #f4f7f5;
  color: #20333a;
  padding: clamp(48px, 7vw, 88px) 0 clamp(28px, 4vw, 42px);
}

.site-footer__inner {
  width: min(1120px, calc(100% - 40px));
  margin: 0 auto;
}

.site-footer__main {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(28px, 5vw, 72px);
  align-items: start;
}

.site-footer__label {
  margin: 0 0 10px;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  color: rgba(32, 51, 58, 0.46);
}

.site-footer__name {
  margin: 0 0 14px;
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.12em;
}

.site-footer__address {
  margin: 0;
  font-style: normal;
  color: rgba(32, 51, 58, 0.72);
  font-size: 0.9rem;
  line-height: 1.9;
  letter-spacing: 0.04em;
}

.site-footer__address a {
  color: inherit;
  text-decoration: none;
}

.site-footer__address a:hover {
  color: #376a63;
}

.site-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  margin-top: clamp(32px, 5vw, 54px);
  padding-top: 26px;
  border-top: 1px solid rgba(32, 51, 58, 0.12);
}

.site-footer__nav a {
  color: rgba(32, 51, 58, 0.78);
  text-decoration: none;
  font-size: 0.86rem;
  letter-spacing: 0.08em;
  border-bottom: 1px solid rgba(32, 51, 58, 0.22);
  padding-bottom: 5px;
  transition:
    color 0.25s ease,
    border-color 0.25s ease;
}

.site-footer__nav a:hover {
  color: #376a63;
  border-color: rgba(55, 106, 99, 0.55);
}

.site-footer__copy {
  margin: 26px 0 0;
  color: rgba(32, 51, 58, 0.46);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
}

@media (max-width: 767.98px) {
  .site-footer {
    padding: 42px 0 28px;
  }

  .site-footer__inner {
    width: min(100% - 32px, 520px);
  }

  .site-footer__main {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .site-footer__nav {
    flex-direction: column;
    gap: 12px;
    margin-top: 30px;
    padding-top: 24px;
  }

  .site-footer__nav a {
    width: fit-content;
  }

  .site-footer__copy {
    margin-top: 24px;
  }
}

/* =========================================================
  lift-status.css
========================================================= */

:root {
  --lift-text: #13233f;
  --lift-muted: rgba(19, 35, 63, 0.62);
  --lift-line: rgba(19, 35, 63, 0.1);

  --lift-preparing: #98a2b3;
  --lift-running: #2f67d8;
  --lift-suspended: #f0b429;
  --lift-closed: #de4d43;
}

.lift-mini {
  width: 100%;
  background: #fff;
  padding: clamp(34px, 9vw, 76px) 0 clamp(34px, 9vw, 156px);
  margin: clamp(42px, 7vw, 72px) 0 0;
}

.lift-mini__head {
  width: min(760px, 92vw);
  margin: 0 auto 18px;
  text-align: center;
}

.lift-mini__kicker {
  margin: 0 0 14px;
  font-size: 18px;
  font-family: 'Noto Sans JP', sans-serif;
  line-height: 1;
  letter-spacing: 0.34em;
  font-weight: 400;
  color: var(--gn-text-s);
}

.lift-mini__title {
  margin: 0;
  font-size: clamp(14px, 3vw, 34px);
  font-family: 'Noto Sans JP', sans-serif;
  line-height: 1.14;
  letter-spacing: 0.03em;
  font-weight: 400;
  color: var(--gn-text);
}

.lift-mini__card {
  width: min(760px, 92vw);
  margin: 0 auto;
  padding: 18px 70px;
  border: 1px solid var(--lift-line);
  border-radius: 5px;
  background: #fff;
}

.lift-mini__list {
  display: grid;
  gap: 18px;
}

.lift-mini__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
}

.lift-mini__main {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 44px;
  min-width: 0;
}

.lift-mini__iconWrap {
  width: 72px;
  height: 72px;
  flex: 0 0 72px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.lift-mini__icon {
  display: block;
  width: 100%;
  height: auto;
}

.lift-mini__text {
  min-width: 0;
  text-align: left;
}

.lift-mini__name {
  margin: 0;
  font-size: clamp(20px, 2vw, 23px);
  line-height: 1.22;
  color: var(--lift-text);
  font-weight: 300;
}

.lift-mini__time {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lift-muted);
  letter-spacing: 0.02em;
}

.lift-mini__note {
  margin: 3px 0 0;
  font-size: 14px;
  line-height: 1.7;
  color: var(--lift-text);
}

.lift-mini__statusArea {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 6px;
  white-space: nowrap;
  min-width: 140px;
  text-align: left;
}

.lift-mini__statusLabel {
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: 0.1em;
  color: var(--lift-muted);
  font-weight: 700;
}

.lift-mini__status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 18px;
  line-height: 1.2;
  font-weight: 800;
  color: var(--lift-text);
}

.lift-mini__statusDot {
  width: 16px;
  height: 16px;
  border-radius: 999px;
  flex: 0 0 16px;
  background: var(--lift-preparing);
}

.lift-mini__status.is-preparing {
  color: #667085;
}

.lift-mini__status.is-preparing .lift-mini__statusDot {
  background: var(--lift-preparing);
}

.lift-mini__status.is-running {
  color: var(--lift-running);
}

.lift-mini__status.is-running .lift-mini__statusDot {
  background: var(--lift-running);
}

.lift-mini__status.is-suspended {
  color: #b7791f;
}

.lift-mini__status.is-suspended .lift-mini__statusDot {
  background: var(--lift-suspended);
}

.lift-mini__status.is-closed {
  color: var(--lift-closed);
}

.lift-mini__status.is-closed .lift-mini__statusDot {
  background: var(--lift-closed);
}

/* =========================================================
  Lift mini reveal
========================================================= */
.lift-mini-reveal {
  opacity: 0;
  filter: blur(6px);
  transform: translate3d(0, 0, 0);
  transition:
    opacity 0.9s ease,
    filter 0.9s ease;
  will-change: opacity, filter;
}

.lift-mini-reveal.is-visible {
  opacity: 1;
  filter: blur(0);
}

.lift-mini-reveal__head {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity 0.8s ease,
    transform 0.8s ease;
  transition-delay: 0.06s;
}

.lift-mini-reveal.is-visible .lift-mini-reveal__head {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.lift-mini-reveal__card .lift-mini__row {
  opacity: 0;
  transform: translate3d(0, 24px, 0);
  transition:
    opacity 0.72s ease,
    transform 0.72s ease;
}

.lift-mini-reveal.is-visible .lift-mini-reveal__card .lift-mini__row {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.lift-mini-reveal.is-visible
  .lift-mini-reveal__card
  .lift-mini__row:nth-child(1) {
  transition-delay: 0.14s;
}

.lift-mini-reveal.is-visible
  .lift-mini-reveal__card
  .lift-mini__row:nth-child(2) {
  transition-delay: 0.24s;
}

.lift-mini-reveal.is-visible
  .lift-mini-reveal__card
  .lift-mini__row:nth-child(3) {
  transition-delay: 0.34s;
}

.lift-mini-reveal.is-visible
  .lift-mini-reveal__card
  .lift-mini__row:nth-child(4) {
  transition-delay: 0.44s;
}

/* PC：行と行の間の区切り線 */
.lift-mini__row {
  border-bottom: 1px solid var(--lift-line);
  padding-bottom: 18px;
}

.lift-mini__row:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

@media (max-width: 680px) {
  .lift-mini {
    padding: 30px 0 38px;
    margin: 38px 0 0;
  }

  .lift-mini__head,
  .lift-mini__card {
    width: min(94vw, 760px);
  }

  .lift-mini__card {
    padding: 16px;
  }

  .lift-mini__row {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .lift-mini__main {
    width: 100%;
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: center;
    justify-content: stretch;
    gap: 58px;
  }

  .lift-mini__iconWrap {
    width: 60px;
    height: 60px;
    flex: none;
    justify-self: center;
  }

  .lift-mini__icon {
    width: 60px;
    height: 60px;
    object-fit: contain;
  }

  .lift-mini__text {
    text-align: left;
    min-width: 0;
  }

  .lift-mini__name {
    font-size: clamp(18px, 5.8vw, 24px);
  }

  .lift-mini__time {
    margin: 6px 0 0;
    font-size: 13px;
  }

  .lift-mini__note {
    font-size: 13px;
  }

  .lift-mini__statusArea {
    width: auto;
    margin: 2px 0 0 82px;
    padding-top: 2px;
    padding-bottom: 0;
    border: 0 !important;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    text-align: left;
    white-space: normal;
    min-width: 0;
  }

  .lift-mini__statusLabel {
    display: none;
  }

  .lift-mini__status {
    font-size: 16px;
    justify-content: flex-start;
    margin-left: 50px;
  }

  .lift-mini__statusDot {
    width: 14px;
    height: 14px;
    flex-basis: 14px;
  }

  .lift-mini__statusLabel {
    display: none;
  }

  .lift-mini__statusArea {
    border-top: 0 !important;
    border-bottom: 0 !important;
    padding-top: 2px;
    padding-bottom: 0;
    gap: 4px;
  }

  .lift-mini__row {
    border-bottom: 1px solid var(--lift-line);
    padding-bottom: 14px;
  }

  .lift-mini__row:last-child {
    border-bottom: 0;
    padding-bottom: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .lift-mini-reveal,
  .lift-mini-reveal__head,
  .lift-mini-reveal__card .lift-mini__row {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }
}

/* =========================================================
  news.css
========================================================= */

:root {
  --gn-bg: #f6f6f4;
  --gn-panel: #ffffff;
  --gn-line: rgba(13, 48, 94, 0.14);
  --gn-line-soft: rgba(22, 33, 47, 0.1);
  --gn-line-strong: rgba(22, 33, 47, 0.22);
  --gn-text: #3c444e;
  --gn-text-s: #4789da;
  --gn-muted: rgba(22, 33, 47, 0.6);
  --gn-accent: #264f99;
  --gn-shadow: 0 26px 60px rgba(10, 18, 30, 0.16);
}

body.news-page {
  margin: 0;
  padding: 0;
  background: var(--gn-bg);
  color: var(--gn-text);
  font-family: 'Noto Sans JP', system-ui, sans-serif;
  line-height: 1.8;
}

body.news-page a {
  color: inherit;
  text-decoration: none;
}

body.news-modal-open {
  overflow: hidden;
}

/* =========================================================
  shared
========================================================= */
.gn-page {
  width: min(780px, 92vw);
  margin: 0 auto;
}

body.news-page .gn-page {
  padding: 72px 0 90px;
}

#news.gn-page {
  padding: clamp(54px, 8vw, 126px) 0 clamp(54px, 8vw, 16px);
}

.gn-pageHead {
  text-align: center;
  margin: 0 0 34px;
}

.gn-kicker {
  margin: 0 0 14px;
  font-size: 18px;
  font-family: 'Noto Sans JP', sans-serif;
  line-height: 1;
  letter-spacing: 0.34em;
  font-weight: 400;
  color: var(--gn-text-s);
}

.gn-pageTitle {
  margin: 0;
  font-size: clamp(14px, 3vw, 34px);
  font-family: 'Noto Sans JP', sans-serif;
  line-height: 1.14;
  letter-spacing: 0.03em;
  font-weight: 400;
  color: var(--gn-text);
}

.gn-lead {
  display: none;
}

/*map追加用*/

/* =========================================================
   NEWS 背景マップ
========================================================= */

#news {
  position: relative;
  isolation: isolate;
}

#news::after {
  content: '';
  position: absolute;
  top: 0px; /* ← 縦位置 */
  left: 60%;
  transform: translateX(-50%);
  width: 100vw; /* ← 画面幅基準にする */
  height: 360px; /* ← 高さ */
  background-image: url('/assets/images/map_img.png');
  background-repeat: no-repeat;
  background-size: 560px auto; /* ← 画像サイズ */
  background-position: calc(50% + 360px) center; /* ← ここで右へ移動 */
  opacity: 0.84; /* ← 透明度 */
  pointer-events: none;
  z-index: 0;
}

#news .gn-pageHead,
#news .gn-listBox {
  position: relative;
  z-index: 1;
}

/* タブレット */
@media (max-width: 1200px) {
  #news::after {
    background-size: 400px auto;
    background-position: calc(50% + 280px) center;
    opacity: 0.82;
  }
}

/* SPでは非表示 */
@media (max-width: 767.98px) {
  #news::after {
    display: none;
  }
}

/* =========================================================
  simple list
========================================================= */
.gn-listBox {
  border-top: 1px solid var(--gn-line);
  border-bottom: 1px solid var(--gn-line);
}

.gn-listItem {
  width: 100%;
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr) 192px;
  gap: 20px;
  align-items: center;
  padding: 22px 6px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--gn-text);
  text-align: left;
  cursor: pointer;
  appearance: none;
  transition: background 0.2s ease;
}

.gn-listItem + .gn-listItem {
  border-top: 1px solid var(--gn-line-soft);
}

.gn-listItem:hover {
  background: rgba(255, 255, 255, 0);
}

.gn-listItem:focus-visible {
  outline: 2px solid rgba(38, 79, 153, 0.34);
  outline-offset: -2px;
}

.gn-listItem__date {
  display: block;
  font-size: 15px;
  line-height: 1.4;
  letter-spacing: 0.08em;
  color: var(--gn-muted);
  white-space: nowrap;
  text-align: center;
}

.gn-listItem__main {
  min-width: 0;
  display: block;
}

.gn-listItem__title {
  display: block;
  font-size: 16px;
  line-height: 1.6;
  font-weight: 300;
  color: var(--gn-text);
  letter-spacing: 0.02em;
  transition:
    transform 0.24s ease,
    opacity 0.24s ease;
}

.gn-listItem:hover .gn-listItem__title {
  transform: translateX(4px);
}

.gn-listItem__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  line-height: 1;
  color: rgba(22, 33, 47, 0.36);
  transition:
    transform 0.24s ease,
    color 0.24s ease;
}

.gn-listItem:hover .gn-listItem__arrow {
  transform: translateX(4px);
  color: var(--gn-text);
}

.gn-empty {
  margin: 0;
  padding: 24px 8px;
  font-size: 15px;
  line-height: 1.8;
  color: var(--gn-muted);
}

.gn-more {
  margin: 24px 0 0;
  text-align: right;
}

.gn-moreBtn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  line-height: 1;
  font-weight: 300;
  color: var(--gn-text);
  text-decoration: none;
  transition:
    opacity 0.2s ease,
    transform 0.2s ease;
}

.gn-moreBtn::after {
  content: '→';
  font-size: 16px;
  line-height: 1;
}

.gn-moreBtn:hover {
  opacity: 0.72;
  transform: translateX(2px);
}

/* =========================================================
  detail page fallback
========================================================= */
.gn-newsDetail {
  max-width: 820px;
  margin: 0 auto;
}

.gn-newsDetail__back {
  margin: 0 0 22px;
}

.gn-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  line-height: 1;
  font-weight: 700;
  color: var(--gn-muted);
  text-decoration: none;
}

.gn-back::before {
  content: '←';
  font-size: 14px;
  line-height: 1;
}

.gn-newsDetail__head {
  border-top: 1px solid var(--gn-line);
  border-bottom: 1px solid var(--gn-line);
  padding: 22px 0;
}

.gn-newsDetail__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin: 0 0 10px;
}

.gn-newsDetail__date {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 26px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 1;
  font-weight: 700;
  background: rgba(22, 33, 47, 0.06);
  color: var(--gn-muted);
}

.gn-newsDetail__title {
  margin: 0;
  font-size: clamp(28px, 4vw, 40px);
  line-height: 1.35;
  letter-spacing: 0.02em;
}

.gn-newsDetail__body {
  padding: 28px 0 0;
  font-size: 16px;
  line-height: 2;
  color: var(--gn-text);
}

.gn-newsDetail__cta {
  margin-top: 28px;
}

.gn-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 12px 18px;
  border: 1px solid var(--gn-line-strong);
  background: #fff;
  color: var(--gn-text);
  border-radius: 999px;
  font-size: 14px;
  line-height: 1;
  font-weight: 700;
  text-decoration: none;
  transition:
    transform 0.2s ease,
    opacity 0.2s ease;
}

.gn-btn:hover {
  transform: translateY(-1px);
  opacity: 0.82;
}

/* =========================================================
  modal
========================================================= */
.gn-modal {
  position: fixed;
  inset: 0;
  z-index: 2000;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 0.24s ease,
    visibility 0.24s ease;
}

.gn-modal.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.gn-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 22, 33, 0.46);
  backdrop-filter: blur(6px);
}

.gn-modal__wrap {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px;
}

.gn-modal__panel {
  position: relative;
  width: min(860px, calc(100vw - 28px));
  max-height: min(86vh, 920px);
  overflow: auto;
  background: #fff;
  color: var(--gn-text);
  border-radius: 28px;
  box-shadow: var(--gn-shadow);
  padding: 28px 28px 30px;
}

.gn-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 999px;
  background: rgba(22, 33, 47, 0.06);
  color: var(--gn-text);
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  appearance: none;
}

.gn-modal__close:hover {
  background: rgba(22, 33, 47, 0.1);
}

.gn-modal__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding-right: 48px;
  margin: 0 0 12px;
}

.gn-modal__date {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 28px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 1;
  font-weight: 700;
  background: rgba(22, 33, 47, 0.06);
  color: var(--gn-muted);
}

.gn-modal__cat,
.gn-modal__badge {
  display: none !important;
}

.gn-modal__title {
  margin: 0;
  font-size: clamp(28px, 4vw, 40px);
  line-height: 1.35;
  letter-spacing: 0.02em;
}

.gn-modal__body {
  margin-top: 22px;
  padding-top: 22px;
  border-top: 1px solid var(--gn-line);
  font-size: 16px;
  font-weight: 600;
  line-height: 2;
  color: rgb(41, 120, 156, 0.8);
}

.gn-modal__cta {
  margin-top: 26px;
  display: flex;
  justify-content: flex-start;
}

@media (max-width: 820px) {
  .gn-listItem {
    grid-template-columns: 232px minmax(0, 1fr) 328px;
    gap: 14px;
    padding: 20px 4px;
  }

  .gn-listItem__date {
    font-size: 14px;
  }

  .gn-listItem__title {
    font-size: 16px;
  }
}

@media (max-width: 680px) {
  .gn-page {
    width: min(94vw, 980px);
  }

  body.news-page .gn-page {
    padding: 48px 0 70px;
  }

  #news.gn-page {
    padding: 42px 0 0;
  }

  .gn-pageHead {
    margin-bottom: 24px;
  }

  .gn-pageTitle {
    font-size: clamp(28px, 9vw, 38px);
  }

  .gn-listItem {
    grid-template-columns: 1fr 124px;
    gap: 12px;
    padding: 18px 0;
  }

  .gn-listItem__date {
    grid-column: 1 / 2;
    grid-row: 1;
    font-size: 12px;
    letter-spacing: 0.08em;
    text-align: left;
  }

  .gn-listItem__main {
    grid-column: 1 / 2;
    grid-row: 2;
  }

  .gn-listItem__arrow {
    grid-column: 2 / 3;
    grid-row: 1 / 3;
    align-self: center;
  }

  .gn-listItem__title {
    font-size: 15px;
    line-height: 1.7;
  }

  .gn-more {
    text-align: left;
  }

  .gn-modal__wrap {
    padding: 12px;
  }

  .gn-modal__panel {
    width: min(100vw - 12px, 860px);
    max-height: min(88vh, 920px);
    border-radius: 22px;
    padding: 22px 18px 22px;
  }

  .gn-modal__close {
    top: 10px;
    right: 10px;
    width: 38px;
    height: 38px;
    font-size: 22px;
  }

  .gn-modal__meta {
    padding-right: 42px;
  }

  .gn-modal__title {
    font-size: clamp(22px, 7vw, 30px);
  }

  .gn-modal__body {
    font-size: 15px;
    line-height: 1.9;
  }
}

/* =========================================================
  NEWS date / time display
========================================================= */
.gn-listItem__date {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  min-width: 150px;
  line-height: 1.2;
}

.gn-listItem__dateDay {
  color: rgba(65, 77, 92, 0.62);
  font-size: 0.98rem;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.gn-listItem__dateTime {
  display: inline-flex;
  min-height: 20px;
  padding: 3px;
  font-size: 0.78rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

@media (max-width: 640px) {
  .gn-listItem__date {
    min-width: 112px;
    gap: 5px;
  }

  .gn-listItem__dateDay {
    font-size: 0.86rem;
  }

  .gn-listItem__dateTime {
    min-height: 22px;
    padding: 2px 8px;
    font-size: 0.72rem;
  }
}

/* =========================================================
  top-map-status.css
========================================================= */

:root {
  --gmap-bg: #f6f8fb;
  --gmap-panel: rgba(255, 255, 255, 0.92);
  --gmap-line: rgba(19, 35, 63, 0.1);
  --gmap-text: #13233f;
  --gmap-muted: rgba(19, 35, 63, 0.62);
  --gmap-shadow: 0 20px 46px rgba(18, 30, 56, 0.08);

  --lift-running: #20a95a;
  --lift-preparing: #f0a429;
  --lift-suspended: #de4d43;
  --lift-closed: #8d99a8;
  --lift-inspection: #7a57d1;

  --area-open: rgba(32, 169, 90, 0.28);
  --area-partial: rgba(240, 164, 41, 0.3);
  --area-closed: rgba(141, 153, 168, 0.34);
  --area-preparing: rgba(47, 94, 216, 0.2);
  --area-caution: rgba(222, 77, 67, 0.24);
}

.gmap-status {
  width: min(1240px, 92vw);
  margin: clamp(56px, 8vw, 96px) auto 0;
}

.gmap-status__head {
  text-align: center;
  margin-bottom: 28px;
}

.gmap-status__kicker {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1;
  letter-spacing: 0.28em;
  color: var(--gmap-muted);
  font-weight: 700;
}

.gmap-status__title {
  margin: 0;
  font-size: clamp(32px, 5vw, 54px);
  line-height: 1.15;
  color: var(--gmap-text);
}

.gmap-status__lead {
  margin: 14px 0 0;
  font-size: 14px;
  line-height: 1.9;
  color: var(--gmap-muted);
}

.gmap-status__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
  gap: 20px;
  align-items: start;
}

.gmap-status__visualCard,
.gmap-panel,
.gmap-summary {
  background: var(--gmap-panel);
  border: 1px solid var(--gmap-line);
  box-shadow: var(--gmap-shadow);
  backdrop-filter: blur(8px);
}

.gmap-status__visualCard {
  border-radius: 28px;
  overflow: hidden;
  padding: 18px;
}

.gmap-status__canvas {
  position: relative;
  border-radius: 22px;
  overflow: hidden;
  background: #eef3f9;
  border: 1px solid rgba(19, 35, 63, 0.08);
}

.gmap-status__image {
  display: block;
  width: 100%;
  height: auto;
}

/* =========================================================
  Areas
========================================================= */
.gmap-area {
  position: absolute;
  border: 0;
  background: none;
  padding: 0;
  cursor: default;
}

.gmap-area__fill {
  position: absolute;
  inset: 0;
  border: 1px solid rgba(19, 35, 63, 0.18);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18);
  transition:
    transform 0.2s ease,
    opacity 0.2s ease;
}

.gmap-area__label {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(19, 35, 63, 0.08);
  color: var(--gmap-text);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  box-shadow: 0 8px 20px rgba(17, 24, 39, 0.08);
}

/* 仮配置 */
.gmap-area--01 {
  left: 9%;
  top: 54%;
  width: 22%;
  height: 26%;
}
.gmap-area--01 .gmap-area__fill {
  clip-path: polygon(12% 10%, 88% 0, 100% 42%, 74% 100%, 14% 90%, 0 38%);
}

.gmap-area--02 {
  left: 33%;
  top: 37%;
  width: 26%;
  height: 29%;
}
.gmap-area--02 .gmap-area__fill {
  clip-path: polygon(12% 4%, 84% 0, 100% 34%, 85% 100%, 12% 94%, 0 36%);
}

.gmap-area--03 {
  left: 59%;
  top: 18%;
  width: 23%;
  height: 28%;
}
.gmap-area--03 .gmap-area__fill {
  clip-path: polygon(18% 0, 88% 10%, 100% 48%, 72% 100%, 10% 92%, 0 34%);
}

/* =========================================================
  Lifts
========================================================= */
.gmap-lift {
  position: absolute;
  border: 0;
  background: none;
  padding: 0;
  cursor: default;
}

.gmap-lift__line {
  position: absolute;
  left: 0;
  top: 50%;
  width: 100%;
  height: 10px;
  transform-origin: left center;
  border-radius: 999px;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.55);
}

.gmap-lift__label {
  position: absolute;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(19, 35, 63, 0.08);
  color: var(--gmap-text);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  box-shadow: 0 8px 20px rgba(17, 24, 39, 0.08);
}

/* 仮配置 */
.gmap-lift--01 {
  left: 14%;
  top: 62%;
  width: 26%;
  height: 16px;
}
.gmap-lift--01 .gmap-lift__line {
  transform: translateY(-50%) rotate(-30deg);
}
.gmap-lift--01 .gmap-lift__label {
  right: -8%;
  top: -42px;
}

.gmap-lift--02 {
  left: 39%;
  top: 47%;
  width: 25%;
  height: 16px;
}
.gmap-lift--02 .gmap-lift__line {
  transform: translateY(-50%) rotate(-34deg);
}
.gmap-lift--02 .gmap-lift__label {
  right: -6%;
  top: -42px;
}

.gmap-lift--03 {
  left: 65%;
  top: 32%;
  width: 20%;
  height: 16px;
}
.gmap-lift--03 .gmap-lift__line {
  transform: translateY(-50%) rotate(-24deg);
}
.gmap-lift--03 .gmap-lift__label {
  right: -16%;
  top: -42px;
}

/* =========================================================
  Status colors
========================================================= */
.gmap-lift.is-running .gmap-lift__line {
  background: var(--lift-running);
}
.gmap-lift.is-preparing .gmap-lift__line {
  background: var(--lift-preparing);
}
.gmap-lift.is-suspended .gmap-lift__line {
  background: var(--lift-suspended);
}
.gmap-lift.is-closed .gmap-lift__line {
  background: var(--lift-closed);
}
.gmap-lift.is-inspection .gmap-lift__line {
  background: var(--lift-inspection);
}

.gmap-area.is-open .gmap-area__fill {
  background: var(--area-open);
}
.gmap-area.is-partial .gmap-area__fill {
  background: var(--area-partial);
}
.gmap-area.is-closed .gmap-area__fill {
  background: var(--area-closed);
}
.gmap-area.is-preparing .gmap-area__fill {
  background: var(--area-preparing);
}
.gmap-area.is-caution .gmap-area__fill {
  background: var(--area-caution);
}

.gmap-lift.is-hiddenData,
.gmap-area.is-hiddenData {
  opacity: 0.15;
}

/* =========================================================
  Side
========================================================= */
.gmap-status__side {
  display: grid;
  gap: 16px;
}

.gmap-summary {
  border-radius: 24px;
  padding: 18px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.gmap-summary__item {
  border: 1px solid rgba(19, 35, 63, 0.08);
  border-radius: 18px;
  padding: 14px;
  background: rgba(255, 255, 255, 0.88);
}

.gmap-summary__label {
  display: block;
  font-size: 12px;
  line-height: 1.4;
  color: var(--gmap-muted);
}

.gmap-summary__value {
  display: block;
  margin-top: 8px;
  font-size: 22px;
  line-height: 1.2;
  color: var(--gmap-text);
}

.gmap-panel {
  border-radius: 24px;
  overflow: hidden;
}

.gmap-panel__head {
  padding: 18px 18px 14px;
  border-bottom: 1px solid rgba(19, 35, 63, 0.08);
}

.gmap-panel__head h3 {
  margin: 0;
  font-size: 18px;
  line-height: 1.3;
  color: var(--gmap-text);
}

.gmap-panel__head p {
  margin: 6px 0 0;
  font-size: 12px;
  color: var(--gmap-muted);
}

.gmap-panel__body {
  padding: 10px 18px 18px;
  display: grid;
  gap: 8px;
}

.gmap-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid rgba(19, 35, 63, 0.08);
}

.gmap-row:last-child {
  border-bottom: 0;
}

.gmap-row__title {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--gmap-text);
  font-weight: 700;
}

.gmap-row__note {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.6;
  color: var(--gmap-muted);
}

.gmap-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 11px;
  line-height: 1;
  font-weight: 800;
  white-space: nowrap;
}

.gmap-badge.is-running {
  background: rgba(32, 169, 90, 0.12);
  color: var(--lift-running);
}
.gmap-badge.is-preparing {
  background: rgba(240, 164, 41, 0.14);
  color: #b97800;
}
.gmap-badge.is-suspended {
  background: rgba(222, 77, 67, 0.12);
  color: var(--lift-suspended);
}
.gmap-badge.is-closed {
  background: rgba(141, 153, 168, 0.16);
  color: #667085;
}
.gmap-badge.is-inspection {
  background: rgba(122, 87, 209, 0.12);
  color: var(--lift-inspection);
}
.gmap-badge.is-open {
  background: rgba(32, 169, 90, 0.12);
  color: var(--lift-running);
}
.gmap-badge.is-partial {
  background: rgba(240, 164, 41, 0.14);
  color: #b97800;
}
.gmap-badge.is-caution {
  background: rgba(222, 77, 67, 0.12);
  color: var(--lift-suspended);
}

@media (max-width: 1100px) {
  .gmap-status__grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 680px) {
  .gmap-status {
    width: min(94vw, 1240px);
    margin: 42px auto 0;
  }

  .gmap-summary {
    grid-template-columns: 1fr;
  }

  .gmap-status__visualCard {
    padding: 12px;
    border-radius: 22px;
  }

  .gmap-status__canvas {
    border-radius: 18px;
  }

  .gmap-area__label,
  .gmap-lift__label {
    min-height: 26px;
    padding: 4px 8px;
    font-size: 10px;
  }

  .gmap-lift__line {
    height: 8px;
  }

  .gmap-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }
}

/* =========================================================
  SNOW PAGE
========================================================= */
body.snow-page {
  background: linear-gradient(180deg, #ffffff 0%, #f7fbf8 100%);
  color: var(--ink);
}

body.snow-page .gv-video-block.snow-hero {
  position: relative;
  height: 100svh;
  min-height: 100svh;
  background: #dfecef;
}

body.snow-page .snow-hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(
      to bottom,
      rgba(18, 34, 38, 0.1) 0%,
      rgba(18, 34, 38, 0) 3%,
      rgba(18, 34, 38, 0) 10%
    ),
    linear-gradient(
      135deg,
      rgba(142, 191, 209, 0.1) 0%,
      rgba(154, 184, 155, 0.08) 10%
    );
}

body.snow-page .snow-hero__content {
  position: absolute;
  inset: 0;
  z-index: 2;
}

body.snow-page .snow-hero__center {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(90vw, 900px);
  transform: translate(-50%, -50%);
  text-align: center;
  color: #fff;
}

body.snow-page .snow-hero__title {
  margin: 0;
  font-family: 'Roboto', sans-serif;
  font-size: clamp(56px, 10vw, 132px);
  line-height: 1;
  letter-spacing: 0.08em;
  font-weight: 300;
  color: #fff;
  text-shadow: 0 10px 28px rgba(0, 0, 0, 0.2);
}

body.snow-page .snow-hero__subtitle {
  margin: 14px 0 0;
  font-size: clamp(16px, 7vw, 68px);
  line-height: 1.2;
  letter-spacing: 0.34em;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.94);
  text-shadow: 0 8px 20px rgba(0, 0, 0, 0.16);
}

body.snow-page .snow-hero__scroll {
  position: absolute;
  left: 50%;
  bottom: clamp(24px, 4vw, 42px);
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #fff;
  text-decoration: none;
  font-size: 12px;
  letter-spacing: 0.22em;
}

body.snow-page .snow-hero__scroll::after {
  content: '';
  display: block;
  width: 52px;
  height: 1px;
  background: rgba(255, 255, 255, 0.72);
}

body.snow-page .snow-hero__scroll::after {
  content: '';
  display: block;
  width: 52px;
  height: 1px;
  background: rgba(255, 255, 255, 0.72);
}

/* =========================================================
  About
========================================================= */
body.snow-page .snow-about {
  padding-bottom: clamp(50px, 8vw, 90px);
  background: linear-gradient(180deg, #ffffff 0%, #f7fbf8 100%);
}

body.snow-page .snow-about::before {
  opacity: 0.08;
}

body.snow-page .snow-about .gassan-about-block__eyebrow {
  color: #7c9ea8;
}

body.snow-page .snow-about .gassan-about-block__title {
  color: #20333a;
}

body.snow-page .snow-about .gassan-about-block__text {
  max-width: 820px;
  color: rgba(32, 51, 58, 0.84);
}

/* =========================================================
  Snow Links
========================================================= */
body.snow-page .snow-links {
  padding-top: clamp(10px, 2vw, 16px);
  background: linear-gradient(180deg, #f7fbf8 0%, #ffffff 100%);
}

body.snow-page .snow-links__head {
  width: min(70vw, 1100px);
  margin: 0 auto 26px;
  text-align: center;
}

body.snow-page .snow-links__eyebrow {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1;
  letter-spacing: 0.26em;
  color: #7c9ea8;
}

body.snow-page .snow-links__title {
  margin: 0;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.2;
  font-weight: 400;
  color: var(--ink);
}

body.snow-page .snow-links__lead {
  margin: 14px 0 0;
  font-size: 15px;
  line-height: 1.9;
  color: var(--muted);
}

body.snow-page .snow-link-card {
  border-color: rgba(142, 191, 209, 0.24);
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.98),
    rgba(247, 251, 248, 0.96)
  );
}

body.snow-page .snow-link-card:hover,
body.snow-page .snow-link-card:focus-visible {
  border-color: rgba(142, 191, 209, 0.4);
  box-shadow: 0 18px 40px rgba(32, 51, 58, 0.1);
}

body.snow-page .snow-link-card__textwrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

body.snow-page .snow-link-card__eyebrow {
  display: inline-block;
  font-size: 11px;
  letter-spacing: 0.22em;
  color: #8ba887;
}

body.snow-page .gassan-link-card__title {
  color: #6f9eb0;
}

body.snow-page .gassan-link-card__arrow {
  color: #6f9eb0;
}

body.snow-page .snow-link-card__desc {
  display: block;
  font-size: 14px;
  line-height: 1.8;
  color: rgba(32, 51, 58, 0.72);
}

/* =========================================================
  Message block
========================================================= */
body.snow-page .snow-message {
  padding: clamp(26px, 5vw, 60px) 20px clamp(90px, 10vw, 140px);
  background: #ffffff;
}

body.snow-page .snow-message__inner {
  width: min(70vw, 1100px);
  margin: 0 auto;
  padding: clamp(26px, 4vw, 44px);
  border: 1px solid rgba(142, 191, 209, 0.2);
  background: linear-gradient(
    135deg,
    rgba(238, 246, 251, 0.72),
    rgba(237, 246, 239, 0.68)
  );
}

body.snow-page .snow-message__eyebrow {
  margin: 0 0 12px;
  font-size: 12px;
  letter-spacing: 0.26em;
  color: #7c9ea8;
}

body.snow-page .snow-message__title {
  margin: 0 0 16px;
  font-size: clamp(26px, 4vw, 42px);
  line-height: 1.25;
  font-weight: 400;
  color: var(--ink);
}

body.snow-page .snow-message__text {
  margin: 0;
  max-width: 720px;
  font-size: 15px;
  line-height: 1.95;
  color: rgba(32, 51, 58, 0.78);
}

/* =========================================================
  Responsive
========================================================= */
@media (max-width: 991.98px) {
  body.snow-page .snow-links__head,
  body.snow-page .snow-message__inner {
    width: min(86vw, 900px);
  }
}

@media (max-width: 767.98px) {
  body.snow-page .gv-video-block.snow-hero {
    height: 640px;
    min-height: 640px;
    max-height: 640px;
  }

  body.snow-page .snow-hero__content {
    left: 18px;
    right: 18px;
    bottom: 28px;
  }

  body.snow-page .snow-hero__title {
    font-size: clamp(46px, 18vw, 72px);
    letter-spacing: 0.08em;
  }

  body.snow-page .snow-hero__lead {
    margin-top: 14px;
    font-size: 14px;
    line-height: 1.8;
  }

  body.snow-page .snow-links__head,
  body.snow-page .snow-message__inner {
    width: 100%;
  }

  body.snow-page .snow-message {
    padding: 20px 16px 80px;
  }

  body.snow-page .snow-message__inner {
    padding: 22px 18px;
  }

  body.snow-page .snow-message__title {
    font-size: clamp(22px, 8vw, 30px);
  }

  body.snow-page .snow-message__text {
    font-size: 14px;
    line-height: 1.9;
  }
}

/* =========================================================
  SNOW LIVE BLOCK / FINAL
  ※ snow-live 関連の旧CSS・追記CSSは消してこれだけ使う
========================================================= */
body.snow-page .snow-live-block {
  padding: clamp(24px, 4vw, 48px) 20px;
}

body.snow-page .snow-live-block__inner {
  width: min(1460px, calc(100vw - 40px));
  margin: 0 auto;
}

body.snow-page .snow-live-block {
  --snow-panel-bg: rgba(255, 255, 255, 0.96);
  --snow-panel-line: rgba(41, 71, 88, 0.12);
  --snow-panel-text: #20333a;
  --snow-panel-muted: rgba(32, 51, 58, 0.68);
  --snow-panel-kicker: #6d8793;

  --snow-accent-temp: #505050;
  --snow-accent-wind: #505050;
  --snow-accent-snow: #505050;

  --snow-status-running: #2f7a58;
  --snow-status-preparing: #456e7a;
  --snow-status-suspended: #a36f21;
  --snow-status-closed: #7c8892;
}

/* =========================
   SHELL
========================= */
body.snow-page .snow-live-shell {
  font-family: 'Zen Kaku Gothic Antique', sans-serif;
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  padding: 5px 26px;
  border: 1px solid var(--snow-panel-line);
  border-radius: 0px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.99),
    var(--snow-panel-bg)
  );
}

body.snow-page .snow-live-weather,
body.snow-page .snow-live-operation {
  min-width: 0;
}

body.snow-page .snow-live-head {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 1px;
}

body.snow-page .snow-live-head__group {
  min-width: 0;
}

body.snow-page .snow-live-head__eyebrow {
  margin: 5px 0 8px;
  font-size: 15px;
  line-height: 1;
  letter-spacing: 0.24em;
  color: var(--snow-panel-kicker);
}

body.snow-page .snow-live-head__title {
  margin: 0;
  font-size: clamp(24px, 2.3vw, 34px);
  line-height: 1.05;
  font-weight: 500;
  color: var(--snow-panel-text);
}

body.snow-page .snow-live-head__updated {
  margin: 5px 0 0;
  flex-shrink: 0;
  font-size: 12px;
  line-height: 1.4;
  white-space: nowrap;
  color: rgba(32, 51, 58, 0.52);
}

/* =========================
   WEATHER
========================= */
body.snow-page .snow-weather-main {
  display: grid;
  grid-template-columns: 1fr;
  /*border-top: 1px solid var(--snow-panel-line);
  border-bottom: 1px solid var(--snow-panel-line);*/
}

body.snow-page .snow-weather-current,
body.snow-page .snow-weather-metric {
  min-width: 0;
}

body.snow-page .snow-weather-current {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px 16px;
  border-bottom: 1px solid var(--snow-panel-line);
}

body.snow-page .snow-weather-current__icon {
  width: 84px;
  height: 84px;
  flex-shrink: 0;
  display: grid;
  place-items: center;
}

body.snow-page .snow-weather-current__icon img {
  width: 84px;
  height: 84px;
  display: block;
  object-fit: contain;
}

body.snow-page .snow-weather-current__body {
  min-width: 0;
}

body.snow-page .snow-weather-current__label {
  margin: 0 0 8px;
  font-size: 15px;
  line-height: 1;
  letter-spacing: 0.22em;
  color: var(--snow-panel-kicker);
}

body.snow-page .snow-weather-current__text {
  margin: 0;
  font-size: clamp(34px, 3vw, 52px);
  line-height: 0.95;
  font-weight: 500;
  letter-spacing: -0.03em;
  color: var(--snow-panel-text);
  white-space: nowrap;
}

body.snow-page .snow-weather-metrics {
  display: grid;
  grid-template-columns: 1fr;
  min-width: 0;
}

body.snow-page .snow-weather-metric {
  padding: 10px 16px 1px;
}

body.snow-page .snow-weather-metric + .snow-weather-metric {
  border-top: 1px solid var(--snow-panel-line);
}

body.snow-page .snow-weather-metric__title {
  margin: 0 0 2px;
  font-size: 25px;
  line-height: 1;
  letter-spacing: 0.16em;
  color: var(--snow-panel-kicker);
}

body.snow-page .snow-weather-metric__body {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  min-width: 0;
  min-height: 76px;
}

body.snow-page .snow-weather-metric__icon {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  align-self: center;
}

body.snow-page .snow-weather-metric__icon img {
  width: 34px;
  height: 34px;
  display: block;
  object-fit: contain;
}

body.snow-page .snow-weather-metric__list {
  display: grid;
  gap: 10px;
  margin: 0;
  min-width: 0;
  align-content: center;
}

body.snow-page .snow-weather-metric__row {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  align-items: baseline;
  column-gap: 4px;
  min-width: 0;
}

body.snow-page .snow-weather-metric__row dt {
  margin: 0;
  font-size: 12px;
  line-height: 1.2;
  white-space: nowrap;
  color: var(--snow-panel-muted);
}

body.snow-page .snow-weather-metric__row dd {
  margin: 0;
  min-width: 0;
  display: flex;
  justify-content: flex-start;
  align-items: baseline;
  gap: 5px;
  white-space: nowrap;
  overflow: visible;
  font-size: 0;
  line-height: 1;
}

body.snow-page .snow-weather-metric__row dd.is-empty {
  display: block;
  font-size: 20px;
  font-weight: 500;
  text-align: left;
  color: var(--snow-panel-muted);
}

body.snow-page .snow-weather-metric__num {
  display: inline-block;
  font-size: clamp(28px, 2.1vw, 42px);
  line-height: 0.95;
  font-weight: 500;
  letter-spacing: -0.04em;
  font-variant-numeric: tabular-nums;
}

body.snow-page .snow-weather-metric__unit {
  display: inline-block;
  flex-shrink: 0;
  font-size: 12px;
  line-height: 1;
  font-weight: 700;
  padding-bottom: 4px;
}

body.snow-page .snow-weather-metric--temp .snow-weather-metric__row dd {
  color: var(--snow-accent-temp);
}

body.snow-page .snow-weather-metric--wind .snow-weather-metric__row dd {
  color: var(--snow-accent-wind);
}

body.snow-page .snow-weather-metric--snow .snow-weather-metric__row dd {
  color: var(--snow-accent-snow);
}

body.snow-page .snow-weather-comment {
  margin: 4px 0 0;
  font-size: 14px;
  line-height: 1.75;
  color: var(--snow-panel-muted);
}

/* =========================
   OPERATION
========================= */
body.snow-page .snow-status-grid {
  display: grid;
  margin-top: 30px;
  grid-template-columns: 1fr;
  border-top: 1px solid var(--snow-panel-line);
  border-bottom: 1px solid var(--snow-panel-line);
}

body.snow-page .snow-status-row {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 14px 15px;
}

body.snow-page .snow-status-row + .snow-status-row {
  border-top: 1px solid var(--snow-panel-line);
}

body.snow-page .snow-status-row__name {
  margin: 0;
  min-width: 0;
  flex: 1 1 auto;
  font-size: 15px;
  line-height: 1.4;
  font-weight: 700;
  color: var(--snow-panel-text);
}

body.snow-page .snow-status-row__status {
  margin: 0;
  flex-shrink: 0;
  font-size: clamp(17px, 1.35vw, 22px);
  line-height: 1;
  font-weight: 500;
  white-space: nowrap;
}

body.snow-page .snow-status-row__status.is-running {
  color: var(--snow-status-running);
}

body.snow-page .snow-status-row__status.is-preparing {
  color: var(--snow-status-preparing);
}

body.snow-page .snow-status-row__status.is-suspended {
  color: var(--snow-status-suspended);
}

body.snow-page .snow-status-row__status.is-closed {
  color: var(--snow-status-closed);
}

body.snow-page .snow-status-empty {
  margin: 0;
  padding: 16px 14px 15px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--snow-panel-muted);
}

/* =========================
   2-COLUMN WEATHER METRICS
========================= */
@media (min-width: 640px) {
  body.snow-page .snow-weather-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.snow-page .snow-weather-metric {
    border-top: 0;
  }

  body.snow-page .snow-weather-metric:nth-child(1),
  body.snow-page .snow-weather-metric:nth-child(2) {
    border-top: 0;
  }

  body.snow-page .snow-weather-metric:nth-child(3) {
    border-top: 1px solid var(--snow-panel-line);
  }

  body.snow-page .snow-weather-metric:nth-child(2),
  body.snow-page .snow-weather-metric:nth-child(3) {
    border-left: 1px solid var(--snow-panel-line);
  }
}

/* =========================
   WEATHER SIDE-BY-SIDE
========================= */
@media (min-width: 980px) {
  body.snow-page .snow-weather-main {
    grid-template-columns: minmax(240px, 290px) minmax(0, 1fr);
  }

  body.snow-page .snow-weather-current {
    padding: 20px 18px;
    border-bottom: 0;
  }
}

/* =========================
   3-COLUMN WEATHER METRICS
========================= */
@media (min-width: 1080px) {
  body.snow-page .snow-weather-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body.snow-page .snow-weather-metric {
    border-top: 0 !important;
    border-left: 0;
  }

  body.snow-page .snow-weather-metric + .snow-weather-metric {
    border-left: 1px solid var(--snow-panel-line);
  }

  body.snow-page .snow-weather-metric__body {
    grid-template-columns: 42px minmax(0, 1fr);
    gap: 14px;
    min-height: 92px;
  }

  body.snow-page .snow-weather-metric__icon {
    width: 42px;
    height: 42px;
  }

  body.snow-page .snow-weather-metric__icon img {
    width: 42px;
    height: 42px;
  }
}

/* =========================
   WIDE DESKTOP
========================= */
@media (min-width: 1460px) {
  body.snow-page .snow-live-shell {
    grid-template-columns: minmax(0, 1.85fr) minmax(320px, 0.74fr);
    gap: 28px;
  }

  body.snow-page .snow-live-operation {
    padding-left: 28px;
    border-left: 1px solid var(--snow-panel-line);
  }

  body.snow-page .snow-weather-metric__body {
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 26px;
    min-height: 102px;
  }

  body.snow-page .snow-weather-metric__icon {
    width: 58px;
    height: 58px;
  }

  body.snow-page .snow-weather-metric__icon img {
    width: 68px;
    height: 68px;
  }

  body.snow-page .snow-weather-metric__row {
    grid-template-columns: 48px minmax(0, 1fr);
  }

  body.snow-page .snow-weather-metric__num {
    font-size: clamp(30px, 2vw, 42px);
  }
}

/* =========================
   TABLET
========================= */
@media (max-width: 979.98px) {
  body.snow-page .snow-live-operation {
    padding-top: 2px;
  }
}

/* =========================
   MOBILE
========================= */
@media (max-width: 767.98px) {
  body.snow-page .snow-live-block {
    padding: 20px 16px;
  }

  body.snow-page .snow-live-block__inner {
    width: min(100%, calc(100vw - 32px));
  }

  body.snow-page .snow-live-shell {
    padding: 16px 14px;
    border-radius: 20px;
    gap: 18px;
  }

  body.snow-page .snow-live-head {
    display: block;
    margin-bottom: 12px;
  }

  body.snow-page .snow-live-head__updated {
    margin-top: 8px;
  }

  body.snow-page .snow-live-head__title {
    font-size: 22px;
  }

  /* =========================
     WEATHER
  ========================= */
  body.snow-page .snow-weather-current {
    gap: 12px;
    padding: 14px 10px;
  }

  body.snow-page .snow-weather-current__icon {
    width: 44px;
    height: 44px;
  }

  body.snow-page .snow-weather-current__icon img {
    width: 44px;
    height: 44px;
  }

  body.snow-page .snow-weather-current__text {
    font-size: 34px;
  }

  /* ここを1列→3列に変更 */
  body.snow-page .snow-weather-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    min-width: 0;
  }

  body.snow-page .snow-weather-metric {
    padding: 12px 8px 10px;
    border-top: 1px solid var(--snow-panel-line) !important;
    border-left: 0 !important;
    min-width: 0;
  }

  body.snow-page .snow-weather-metric + .snow-weather-metric {
    border-left: 1px solid var(--snow-panel-line) !important;
  }

  body.snow-page .snow-weather-metric__title {
    margin-bottom: 8px;
    font-size: 10px;
    text-align: center;
  }

  body.snow-page .snow-weather-metric__body {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    min-height: 0;
    align-items: start;
  }

  body.snow-page .snow-weather-metric__icon {
    width: 26px;
    height: 26px;
    margin: 0 auto;
  }

  body.snow-page .snow-weather-metric__icon img {
    width: 26px;
    height: 26px;
  }

  body.snow-page .snow-weather-metric__list {
    gap: 8px;
  }

  body.snow-page .snow-weather-metric__row {
    grid-template-columns: 1fr;
    row-gap: 3px;
    text-align: center;
  }

  body.snow-page .snow-weather-metric__row dt {
    font-size: 10px;
  }

  body.snow-page .snow-weather-metric__row dd {
    justify-content: center;
    gap: 3px;
  }

  body.snow-page .snow-weather-metric__row dd.is-empty {
    text-align: center;
  }

  body.snow-page .snow-weather-metric__num {
    font-size: 24px;
    line-height: 0.95;
  }

  body.snow-page .snow-weather-metric__unit {
    font-size: 10px;
    padding-bottom: 2px;
  }

  body.snow-page .snow-weather-comment {
    margin-top: 10px;
    font-size: 12px;
  }

  /* =========================
     OPERATION
  ========================= */
  body.snow-page .snow-status-row {
    padding: 12px 10px 11px;
    gap: 10px;
  }

  body.snow-page .snow-status-row__name {
    font-size: 12px;
  }

  body.snow-page .snow-status-row__status {
    font-size: 16px;
  }

  body.snow-page .snow-status-empty {
    padding: 12px 10px 11px;
    font-size: 13px;
  }
}
@media (max-width: 767.98px) {
  body.snow-page .snow-live-operation .snow-live-head {
    margin-bottom: 4px;
  }

  body.snow-page .snow-live-operation .snow-live-head__updated {
    margin-top: 25px;
    line-height: 1.2;
  }

  body.snow-page .snow-live-operation .snow-status-grid {
    margin-top: 0;
    min-height: 0;
    align-content: start;
  }

  body.snow-page .snow-live-operation .snow-status-row:first-child {
    padding-top: 8px;
  }

  body.snow-page .snow-live-operation .snow-status-row {
    padding-bottom: 10px;
  }
}

/* =========================================================
   SNOW LIVE CAMERA
========================================================= */

.snow-livecam-band {
  position: relative;
  overflow: hidden;
  padding: clamp(56px, 7vw, 96px) 0;
  background-color: #ffffff;
}

.snow-livecam-inner {
  position: relative;
  z-index: 1;
  width: min(1120px, calc(100% - 32px));
  margin: 0 auto;
}

.snow-livecam-head {
  max-width: 820px;
  margin-bottom: clamp(18px, 2vw, 28px);
}

.snow-livecam-eyebrow {
  margin: 0 0 12px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  line-height: 1;
  color: rgba(41, 120, 156, 0.75);
}

.snow-livecam-place {
  margin: 0 auto clamp(18px, 3vw, 38px);
  text-align: center;
  color: #20333a;
  font-size: clamp(0.95rem, 1.4vw, 1.12rem);
  font-weight: 500;
  line-height: 1.7;
  letter-spacing: 0.08em;
}

.snow-livecam-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 32px 24px;
  align-items: start;
}

.snow-livecam-list[data-count='1'] {
  justify-items: center;
}

.snow-livecam-list[data-count='1'] .snow-livecam-item {
  width: 100%;
  max-width: 980px;
}

.snow-livecam-item,
.snow-livecam-media {
  width: 100%;
}

/* Camera Frame
--------------------------------------------------------- */
.snow-livecam-media-frame {
  position: relative;
  width: 100%;
  height: 0;
  padding-top: calc(56.25% + var(--snow-skiday-ui, 90px));
  overflow: hidden;
  background: #07101a;
}

#skiday_gassan1 {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden !important;
  background: #07101a;
}

#skiday_gassan1 iframe,
#skiday_gassan1 > iframe,
#skiday_gassan1 > * {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  border: 0 !important;
  display: block !important;
  overflow: hidden !important;
}

/* Link
--------------------------------------------------------- */
.snow-livecam-link-wrap {
  margin-top: 1px;
  text-align: center;
}

.snow-livecam-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: rgba(41, 120, 156, 0.95);
  font-size: 0.86rem;
  line-height: 1;
  letter-spacing: 0.06em;
  text-decoration: none;
  transition:
    opacity 0.2s ease,
    transform 0.2s ease;
}

.snow-livecam-link:hover {
  opacity: 0.7;
  transform: translateX(3px);
}

/* Reveal Animation
--------------------------------------------------------- */
.snow-livecam-band [data-snow-reveal] {
  opacity: 0;
  will-change: opacity, transform, filter;
  transition-property: opacity, transform, filter;
  transition-duration: var(--snow-reveal-duration, 900ms);
  transition-timing-function: var(
    --snow-reveal-easing,
    cubic-bezier(0.22, 1, 0.36, 1)
  );
  transition-delay: var(--snow-reveal-delay, 0ms);
}

.snow-livecam-band [data-snow-reveal='text'] {
  transform: translate3d(0, 0, 0);
  filter: blur(var(--snow-reveal-blur, 8px));
}

.snow-livecam-band [data-snow-reveal='media'] {
  transform: translate3d(0, var(--snow-reveal-distance, 48px), 0);
  filter: blur(var(--snow-reveal-blur, 0px));
}

.snow-livecam-band [data-snow-reveal].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

/* Tablet
--------------------------------------------------------- */
@media (max-width: 991.98px) {
  .snow-livecam-inner {
    width: min(1120px, calc(100% - 28px));
  }

  .snow-livecam-list {
    gap: 28px 20px;
  }
}

/* SP
--------------------------------------------------------- */
@media (max-width: 767.98px) {
  .snow-livecam-band {
    padding: 52px 0 0;
  }

  .snow-livecam-inner {
    width: calc(100% - 24px);
  }

  .snow-livecam-head {
    margin-bottom: 14px;
  }

  .snow-livecam-eyebrow {
    margin-bottom: 10px;
    letter-spacing: 0.18em;
  }

  .snow-livecam-place {
    margin-bottom: 18px;
    font-size: 0.95rem;
  }

  .snow-livecam-list {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .snow-livecam-media-frame {
    padding-top: calc(56.25% + var(--snow-skiday-ui-sp, 190px));
  }

  .snow-livecam-link-wrap {
    margin-top: 14px;
  }

  .snow-livecam-link {
    font-size: 0.82rem;
  }

  .snow-livecam-link-wrap {
    display: none;
  }
}

/* Reduced Motion
--------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .snow-livecam-band [data-snow-reveal] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

/* =========================================================
  LIVE CAMERA / 映像エリアだけ透明カバー
========================================================= */

.snow-livecam-media-frame {
  position: relative;
}

/* 映像部分だけスクロール優先にする */
.snow-livecam-media-frame::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 0;

  /* 操作バー部分は空ける */
  bottom: 86px;

  z-index: 20;
  background: transparent;
  pointer-events: auto;
}

/* スマホはカバーしない */
@media (max-width: 767.98px) {
  .snow-livecam-media-frame::after {
    display: none;
  }
}

/* =========================================================
   GASSAN MAP STATUS / COMPLETE REBUILD
========================================================= */
.gassan-map-status {
  --gassan-lift-operating-width: 4.15;
  --gassan-lift-operating-dash: 7 11;
  --gassan-lift-operating-speed: 1.9s;
  --gassan-lift-suspended-width: 1.15;
  --gassan-lift-prep-width: 1.05;
  --gassan-lift-closed-width: 1.15;

  position: relative;
  padding: clamp(64px, 8vw, 110px) 0;
  overflow: hidden;
  background:
    radial-gradient(
      circle at 10% 10%,
      rgba(55, 162, 255, 0.18),
      transparent 26%
    ),
    radial-gradient(
      circle at 88% 12%,
      rgba(125, 211, 252, 0.16),
      transparent 24%
    ),
    linear-gradient(180deg, #eef6fc 0%, #f7fbfe 100%);
}

.gassan-map-status::before {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 42%;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0),
    rgba(215, 229, 240, 0.42)
  );
  pointer-events: none;
}

.gassan-map-status__inner {
  width: min(70vw, 1560px);
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

.gassan-map-status__head {
  margin-bottom: 20px;
}

.gassan-map-status__eyebrow {
  margin: 0 0 10px;
  font-size: 12px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: 0.18em;
  color: #1988d8;
}

.gassan-map-status__title {
  margin: 0;
  font-family: 'Zen Kaku Gothic Antique', sans-serif;
  font-size: clamp(1.4rem, 4vw, 3rem);
  line-height: 1.14;
  font-weight: 400;
  color: #102433;
}

.gassan-map-status__stageCard {
  position: relative;
  padding: 14px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.gassan-map-status__map {
  position: relative;
  aspect-ratio: 16 / 11;
  border-radius: 28px;
  overflow: hidden;
}

.gassan-map-status__map::after {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 32%;
  background: linear-gradient(180deg, rgba(8, 28, 46, 0), rgba(8, 28, 46, 0.1));
  pointer-events: none;
  z-index: 1;
}

.gassan-map-status__image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  filter: saturate(1.04) contrast(1.02);
}

.gassan-map-status__svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.gassan-map-status__labels {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
}

.gassan-map-status__mapTitleBlock {
  position: absolute;
  left: clamp(18px, 2.2vw, 30px);
  top: clamp(5px, 1vw, 20px);
  z-index: 4;
  padding: 12px 16px;
  background: linear-gradient(
    135deg,
    rgba(8, 28, 46, 0.4),
    rgba(8, 28, 46, 0.18)
  );
  border: 1px solid rgba(255, 255, 255, 0.22);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #fff;
}

.gassan-map-status__mapEyebrow {
  margin: 0 0 6px;
  font-size: 11px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: 0.16em;
  color: rgba(255, 255, 255, 0.8);
}

.gassan-map-status__mapTitle {
  margin: 0;
  font-size: clamp(18px, 2vw, 25px);
  line-height: 1.2;
  font-weight: 800;
}

/* JS元カードは非表示 */
.gassan-map-status.is-unified .gassan-map-status__metaOverlay,
.gassan-map-status.is-unified .gassan-map-status__legendOverlay,
.gassan-map-status.is-unified .gassan-map-status__boardOverlay {
  display: none;
}

.gassan-map-status.is-unified .gassan-map-status__map {
  overflow: visible;
}

/* =========================================================
   MAP OVERLAY UI
========================================================= */
.gassan-map-status__updatedInline,
.gassan-map-status__infoUnified {
  position: absolute;
}

.gassan-map-status__updatedInline {
  left: clamp(18px, 4vw, 60px);
  top: clamp(90px, 3.2vw, 100px);
  z-index: 9;
}

.gassan-map-status__updatedInlineRow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
}

.gassan-map-status__updatedInlineLabel {
  font-size: 10px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: 0.12em;
  color: #444444;
}

.gassan-map-status__updatedInlineValue {
  font-size: 14px;
  line-height: 1.2;
  font-weight: 900;
  color: #444444;
}

.gassan-map-status__infoUnified {
  left: 8px;
  bottom: 8px;
  z-index: 8;
  width: min(770px, calc(100% - 56px));
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.95),
    rgba(255, 255, 255, 0.92)
  );
  overflow: hidden;
}

.gassan-map-status__infoUnifiedInner {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  align-items: start;
}

.gassan-map-status__infoLegendWrap {
  padding: 10px 12px 5px 12px;
  border-right: 1px solid rgba(16, 36, 51, 0.08);
  min-width: 0;
}

.gassan-map-status__notesWrap {
  padding: 10px 12px 0;
  min-width: 0;
  max-width: 100%;
}

.gassan-map-status__infoMetaMobile {
  display: none;
}

/* 凡例 */
.gassan-map-status__infoLegendGrid {
  display: grid;
  grid-template-columns: repeat(3, max-content);
  gap: 30px;
  justify-content: start;
  align-items: start;
}

.gassan-map-status__infoLegendGroup {
  min-width: 0;
}

.gassan-map-status__infoLegendHead,
.gassan-map-status__notesHead {
  margin: 0 0 6px;
  font-size: 10px;
  line-height: 1.2;
  font-weight: 900;
  color: #102433;
}

.gassan-map-status__infoLegendList {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.gassan-map-status__infoLegendList li {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  line-height: 1.25;
  color: #203746;
}

.gassan-map-status__infoLegendList .gassan-map-status__swatch {
  width: 24px;
  height: 10px;
  border-radius: 999px;
  display: inline-block;
  border: 1px solid rgba(16, 36, 51, 0.14);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.65);
}

.gassan-map-status__infoLegendList .gassan-map-status__swatch.is-open {
  background: #bae3b8;
  border-color: rgba(16, 36, 51, 0.18);
}

.gassan-map-status__infoLegendList .gassan-map-status__swatch.is-closed {
  background: rgba(239, 68, 68, 0.28);
  border-color: rgba(220, 38, 38, 0.32);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.gassan-map-status__infoLegendList .gassan-map-status__legendLineChip {
  position: relative;
  width: 44px;
  height: 10px;
  display: inline-block;
  color: #0b5ca4;
}

.gassan-map-status__infoLegendList .gassan-map-status__legendLineChip::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 2px;
  transform: translateY(-50%);
  border-radius: 999px;
  background: currentColor;
}

.gassan-map-status__infoLegendList
  .gassan-map-status__legendLineChip.is-operating {
  color: #0b5ca4;
}

.gassan-map-status__infoLegendList
  .gassan-map-status__legendLineChip.is-operating::before {
  background: repeating-linear-gradient(
    90deg,
    currentColor 0 7px,
    transparent 7px 13px
  );
  animation: gassanLegendDashMove 0.9s linear infinite;
}

.gassan-map-status__infoLegendList
  .gassan-map-status__legendLineChip.is-suspended {
  color: #dc2626;
}

.gassan-map-status__infoLegendList .gassan-map-status__legendLineChip.is-prep {
  color: #6b7280;
}

.gassan-map-status__infoLegendList
  .gassan-map-status__legendLineChip.is-closed {
  color: #111111;
}

@keyframes gassanLegendDashMove {
  from {
    background-position: 0 0;
  }
  to {
    background-position: 13px 0;
  }
}

/* エリア説明 */
.gassan-map-status__notesList {
  display: grid;
  grid-auto-flow: column;
  grid-template-rows: repeat(2, auto);
  grid-auto-columns: minmax(100px, 250px);
  gap: 5px 10px;
  align-items: start;
  justify-content: start;
}

.gassan-map-status__noteItem {
  display: block;
  padding: 5px 5px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.72);
  min-width: 0;
}

.gassan-map-status__noteTitle,
.gassan-map-status__noteText {
  display: inline;
  font-size: 10px;
  line-height: 1.35;
  word-break: normal;
  overflow-wrap: anywhere;
}

.gassan-map-status__noteTitle {
  font-weight: 800;
  color: #102433;
}

.gassan-map-status__noteTitle::after {
  content: '：';
}

.gassan-map-status__noteText,
.gassan-map-status__noteEmpty {
  color: #617583;
}

.gassan-map-status__noteEmpty {
  font-size: 10px;
  line-height: 1.35;
}

/* =========================================================
   MAP DRAWING
========================================================= */
.gassan-map-status .gassan-map-status__svg .is-open {
  fill: rgb(151 179 155);
  stroke: rgb(175 199 179 / 96%);
  stroke-width: 0.2;
}

.gassan-map-status .gassan-map-status__svg .is-closed {
  fill: rgba(239, 68, 68, 0.26);
  stroke: rgba(220, 38, 38, 0.5);
  stroke-width: 0.2;
}

.gassan-map-status .gassan-map-status__svg .gassan-map-status__line {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

.gassan-map-status .gassan-map-status__svg .gassan-map-status__liftDot {
  pointer-events: none;
  vector-effect: non-scaling-stroke;
}

.gassan-map-status
  .gassan-map-status__svg
  .gassan-map-status__line.is-operating {
  stroke: #0b5ca4;
  stroke-width: var(--gassan-lift-operating-width);
  stroke-dasharray: 10 10;
  stroke-dashoffset: 0;
  animation: gassanMapDashMove 2s linear infinite;
  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.72));
}

.gassan-map-status
  .gassan-map-status__svg
  .gassan-map-status__line.is-suspended {
  stroke: #dc2626;
  stroke-width: var(--gassan-lift-suspended-width);
  stroke-dasharray: none;
  animation: none;
  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.6));
}

.gassan-map-status .gassan-map-status__svg .gassan-map-status__line.is-prep {
  stroke: #6b7280;
  stroke-width: var(--gassan-lift-prep-width);
  stroke-dasharray: none;
  animation: none;
  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.54));
}

.gassan-map-status .gassan-map-status__svg .gassan-map-status__line.is-closed {
  fill: none;
  stroke: #111111;
  stroke-width: var(--gassan-lift-closed-width);
  stroke-dasharray: none;
  animation: none;
  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.48));
}

.gassan-map-status
  .gassan-map-status__svg
  .gassan-map-status__liftDot.is-operating {
  fill: #0b5ca4;
}

.gassan-map-status
  .gassan-map-status__svg
  .gassan-map-status__liftDot.is-suspended {
  fill: #dc2626;
}

.gassan-map-status .gassan-map-status__svg .gassan-map-status__liftDot.is-prep {
  fill: #6b7280;
}

.gassan-map-status
  .gassan-map-status__svg
  .gassan-map-status__liftDot.is-closed {
  fill: #111111;
}

@keyframes gassanMapDashMove {
  from {
    stroke-dashoffset: 0;
  }

  to {
    stroke-dashoffset: -20;
  }
}

/* ラベル */
.gassan-map-status__labels > * {
  position: absolute;
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  padding: 0 11px;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.88);
  background: rgba(16, 36, 51, 0.86);
  box-shadow: 0 12px 24px rgba(16, 36, 51, 0.18);
  color: #fff;
  font-size: 13px;
  line-height: 1;
  font-weight: 900;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.gassan-map-status__labels > *.is-open {
  background: linear-gradient(135deg, #35c759 0%, #16a34a 100%);
}

.gassan-map-status__labels > *.is-closed {
  background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
}

.gassan-map-status__labels > *.is-operating {
  background: linear-gradient(135deg, #22a7ff 0%, #0b5ca4 100%);
}

.gassan-map-status__labels > *.is-suspended {
  background: linear-gradient(135deg, #ef4444 0%, #b91c1c 100%);
}

.gassan-map-status__labels > *.is-prep {
  background: linear-gradient(135deg, #6b7280 0%, #374151 100%);
}

/* 一覧元データ */
.gassan-map-status__statusList,
#gassanAreaList {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.gassan-map-status__statusItem,
#gassanAreaList > li,
#gassanLiftList > li {
  display: block;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.74);
  border: 1px solid rgba(16, 36, 51, 0.06);
}

.gassan-map-status__statusBody {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.gassan-map-status__statusName {
  min-width: 0;
  font-size: 12px;
  line-height: 1.35;
  font-weight: 800;
  color: #102433;
}

.gassan-map-status__statusNote {
  margin: 0;
  font-size: 11px;
  line-height: 1.55;
  color: #617583;
  white-space: normal;
}

.gassan-map-status__statusBadge,
#gassanLiftList {
  display: none !important;
}

/* =========================================================
   RESPONSIVE
========================================================= */
@media (max-width: 1280px) and (min-width: 861px) {
  .gassan-map-status__inner {
    width: min(78vw, 1560px);
  }

  .gassan-map-status__infoUnified {
    width: min(700px, calc(100% - 48px));
  }

  .gassan-map-status__infoUnifiedInner {
    grid-template-columns: 240px minmax(0, 1fr);
  }

  .gassan-map-status__notesList {
    grid-auto-columns: minmax(160px, 185px);
  }
}

@media (max-width: 1100px) and (min-width: 861px) {
  .gassan-map-status__infoUnified {
    width: min(620px, calc(100% - 40px));
    left: 20px;
    bottom: 20px;
  }

  .gassan-map-status__infoUnifiedInner {
    grid-template-columns: 220px minmax(0, 1fr);
  }

  .gassan-map-status__infoLegendWrap,
  .gassan-map-status__notesWrap {
    padding: 9px 10px;
  }

  .gassan-map-status__infoLegendGrid {
    gap: 8px;
  }

  .gassan-map-status__notesList {
    grid-auto-columns: minmax(145px, 170px);
    gap: 6px 8px;
  }

  .gassan-map-status__updatedInline {
    left: 20px;
  }
}

@media (max-width: 860px) {
  .gassan-map-status__inner {
    width: min(100%, calc(100% - 20px));
  }

  .gassan-map-status__stageCard {
    padding: 10px;
    border-radius: 24px;
  }

  .gassan-map-status__map {
    border-radius: 20px;
    aspect-ratio: 1 / 1.08;
    overflow: visible;
  }

  .gassan-map-status__mapTitleBlock {
    left: 10px;
    top: 10px;
    padding: 9px 11px;
    border-radius: 14px;
  }

  .gassan-map-status__mapTitle {
    font-size: 16px;
  }

  .gassan-map-status__updatedInline {
    display: none;
  }

  .gassan-map-status__infoUnified {
    left: 0;
    right: 0;
    top: calc(100% + 16px);
    bottom: auto;
    width: 100%;
    border-radius: 16px;
  }

  .gassan-map-status__infoUnifiedInner {
    grid-template-columns: 1fr;
  }

  .gassan-map-status__infoLegendWrap,
  .gassan-map-status__notesWrap,
  .gassan-map-status__infoMetaMobile {
    padding: 10px 12px;
  }

  .gassan-map-status__infoLegendWrap {
    border-right: 0;
    border-bottom: 1px solid rgba(16, 36, 51, 0.08);
  }

  .gassan-map-status__notesWrap {
    border-bottom: 1px solid rgba(16, 36, 51, 0.08);
  }

  .gassan-map-status__infoMetaMobile {
    display: block;
  }

  .gassan-map-status__infoMetaMobileRow {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 10px;
  }

  .gassan-map-status__infoMetaMobileLabel {
    font-size: 10px;
    line-height: 1;
    font-weight: 800;
    letter-spacing: 0.12em;
    color: #6b7f8c;
  }

  .gassan-map-status__infoMetaMobileValue {
    font-size: 13px;
    line-height: 1.2;
    font-weight: 900;
    color: #102433;
  }

  .gassan-map-status__infoLegendGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .gassan-map-status__infoLegendList li {
    font-size: 10px;
    gap: 7px;
  }

  .gassan-map-status__notesList {
    grid-auto-flow: row;
    grid-template-columns: 1fr;
    grid-template-rows: none;
    grid-auto-columns: auto;
    gap: 8px;
  }

  .gassan-map-status__noteItem {
    width: 100%;
    padding: 10px 10px 9px;
    border-radius: 12px;
  }

  .gassan-map-status__noteTitle,
  .gassan-map-status__noteText {
    font-size: 11px;
    line-height: 1.55;
  }

  .gassan-map-status__labels > * {
    min-height: 28px;
    padding: 0 10px;
    font-size: 12px;
    border-radius: 8px;
  }

  .gassan-map-status.is-unified .gassan-map-status__map {
    margin-bottom: calc(var(--gassan-unified-card-h, 0px) + 28px);
  }
}

/* =========================================================
   GASSAN MAP STATUS / SP LABEL TUNE
   - PCはそのまま
   - SPだけ map title card を非表示
========================================================= */
@media (max-width: 860px) {
  .gassan-map-status__mapTitleBlock {
    display: none !important;
  }
}

/* =========================================================
   GASSAN MAP STATUS / SP NOTES ACCORDION
   - PCは従来表示
   - SPだけエリア説明を折りたたみ
   - SPだけ補助JSで unified card をマップ外へ出す
========================================================= */

/* 共通 */
.gassan-map-status__notesToggle {
  display: none;
  width: 100%;
  min-height: 44px;
  padding: 0 2px;
  border: 0;
  background: transparent;
  color: #102433;
  font: inherit;
  font-weight: 800;
  text-align: left;
  cursor: pointer;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.gassan-map-status__notesToggle span {
  pointer-events: none;
}

.gassan-map-status__notesToggleText {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: 0.02em;
}

.gassan-map-status__notesToggleIcon {
  position: relative;
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
}

.gassan-map-status__notesToggleIcon::before,
.gassan-map-status__notesToggleIcon::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 12px;
  height: 2px;
  border-radius: 999px;
  background: #102433;
  transform: translate(-50%, -50%);
  transition:
    transform 0.22s ease,
    opacity 0.22s ease;
}

.gassan-map-status__notesToggleIcon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.gassan-map-status.is-notes-open .gassan-map-status__notesToggleIcon::after {
  opacity: 0;
  transform: translate(-50%, -50%) rotate(90deg) scaleX(0.2);
}

.gassan-map-status__notesAccordion {
  overflow: hidden;
}

/* PCは常時表示 */
@media (min-width: 861px) {
  .gassan-map-status__notesWrap {
    padding-top: 10px;
    padding-bottom: 0;
  }

  .gassan-map-status__notesToggle {
    display: none !important;
  }

  .gassan-map-status__notesAccordion {
    display: block !important;
    max-height: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    overflow: visible !important;
  }

  .gassan-map-status__notesWrap .gassan-map-status__notesList {
    padding-top: 0 !important;
  }
}

/* SPだけアコーディオン */
@media (max-width: 860px) {
  .gassan-map-status__notesWrap {
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }

  .gassan-map-status__notesToggle {
    display: flex !important;
  }

  .gassan-map-status__notesAccordion {
    display: block !important;
    max-height: 0;
    opacity: 0;
    visibility: hidden;
    overflow: hidden;
    will-change: max-height, opacity;
    transition:
      max-height 0.32s ease,
      opacity 0.22s ease,
      visibility 0.22s ease;
  }

  .gassan-map-status.is-notes-open .gassan-map-status__notesAccordion {
    opacity: 1;
    visibility: visible;
  }

  .gassan-map-status__notesWrap .gassan-map-status__notesList {
    padding-top: 8px;
  }

  /* 補助JSで stageCard 直下へ移したときだけ通常フロー化 */
  .gassan-map-status.is-unified-outside .gassan-map-status__infoUnified {
    position: relative;
    left: auto;
    right: auto;
    top: auto;
    bottom: auto;
    width: 100%;
    margin-top: 16px;
    z-index: auto;
  }

  .gassan-map-status.is-unified-outside .gassan-map-status__map {
    margin-bottom: 0;
  }
}

/* =========================================================
   GASSAN MAP STATUS / SCROLL REVEAL
   ライブカメラと同じ考え方で統一
========================================================= */
.gassan-map-status [data-gassan-reveal] {
  opacity: 0;
  will-change: opacity, transform, filter;
  transition-property: opacity, transform, filter;
  transition-duration: var(--gassan-reveal-duration, 900ms);
  transition-timing-function: var(
    --gassan-reveal-easing,
    cubic-bezier(0.22, 1, 0.36, 1)
  );
  transition-delay: var(--gassan-reveal-delay, 0ms);
}

.gassan-map-status [data-gassan-reveal='text'] {
  transform: translate3d(0, 0, 0);
  filter: blur(var(--gassan-reveal-blur, 8px));
}

.gassan-map-status [data-gassan-reveal='media'] {
  transform: translate3d(0, var(--gassan-reveal-distance, 48px), 0);
  filter: blur(var(--gassan-reveal-blur, 0px));
}

.gassan-map-status [data-gassan-reveal].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

@media (prefers-reduced-motion: reduce) {
  .gassan-map-status [data-gassan-reveal] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

/* =========================================================
  MAP STATUS / area note title inline
========================================================= */

.gassan-map-status__noteItem {
  display: flex;
  align-items: baseline;
  gap: 0.4em;
  min-width: 0;
}

.gassan-map-status__noteTitle {
  flex: 0 0 auto;
  white-space: nowrap;
}

.gassan-map-status__noteText {
  flex: 1 1 auto;
  min-width: 0;
  white-space: normal;
}

/* =========================================================
   Snow Map Local Rule
========================================================= */
.snow-map-rule {
  margin: 22px auto 0;
  width: 100%;
}

.snow-map-rule__inner {
  background: #ffffff00;
  padding: 22px 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  text-align: center;
}

.snow-map-rule__text {
  margin: 0;
  font-size: 14px;
  line-height: 1.9;
  color: rgba(19, 35, 63, 0.72);
}

.snow-map-rule__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 240px;
  min-height: 52px;
  padding: 0 24px;
  border: 1px solid #799ee9;
  background: #ffffff57;
  color: #7098e7;
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  transition:
    background 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease,
    transform 0.25s ease;
}

.snow-map-rule__btn:hover,
.snow-map-rule__btn:focus-visible {
  background: #ffffff;
  color: #7098e7;
  border-color: #2f67d8;
  transform: translateY(-1px);
}

.snow-map-rule__courseLink {
  width: fit-content;
  margin: 18px auto 0;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: rgba(32, 51, 58, 0.82);
  text-decoration: none;
  font-size: 0.9rem;
  letter-spacing: 0.12em;
  font-weight: 500;
}

.snow-map-rule__courseLink {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 22px;
  padding: 13px 24px;
  color: #20333a;
  font-size: 0.86rem;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.14em;
  text-decoration: none;
  border: 1px solid rgba(32, 51, 58, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.62);
  transition:
    color 0.28s ease,
    border-color 0.28s ease,
    background 0.28s ease,
    transform 0.28s ease;
}

.snow-map-rule__courseLink span {
  position: relative;
  padding-bottom: 0;
}

.snow-map-rule__courseLink span::before,
.snow-map-rule__courseLink span::after {
  display: none;
}

.snow-map-rule__courseLink i {
  position: relative;
  width: 26px;
  height: 1px;
  background: currentColor;
  opacity: 0.72;
  transition:
    width 0.28s ease,
    transform 0.28s ease,
    opacity 0.28s ease;
}

.snow-map-rule__courseLink i::after {
  content: '';
  position: absolute;
  right: 0;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

.snow-map-rule__courseLink:hover {
  color: #1f5f70;
  border-color: rgba(31, 95, 112, 0.32);
  background: rgba(255, 255, 255, 0.9);
  transform: translateY(-2px);
}

.snow-map-rule__courseLink:hover i {
  width: 34px;
  opacity: 1;
  transform: translateX(3px);
}

@media (max-width: 767.98px) {
  .snow-map-rule__courseLink {
    margin-top: 18px;
    padding: 12px 20px;
    font-size: 0.78rem;
    letter-spacing: 0.1em;
  }

  .snow-map-rule__courseLink i {
    width: 22px;
  }
}

/* =========================================================
   local rule map image
========================================================= */
.local-rule-mapImage {
  --local-rule-map-width: 100%;
  --local-rule-map-max-width: 960px;
  --local-rule-map-aspect: auto;

  position: relative;
  padding: clamp(36px, 6vw, 72px) 0 clamp(16px, 2vw, 32px);
}

.local-rule-mapImage__figure {
  width: min(var(--local-rule-map-width), var(--local-rule-map-max-width));
  margin: 0 auto;
  overflow: hidden;
  border-radius: 5px;
}

.local-rule-mapImage__figure img {
  display: block;
  width: 100%;
  height: auto;
}

@media (max-width: 767.98px) {
  .local-rule-mapImage {
    padding: 32px 0;
  }

  .local-rule-mapImage__figure {
    --local-rule-map-width: 100%;
    border-radius: 14px;
  }
}

/* =========================================================
   Snow Map Local Rule Reveal
========================================================= */
.snow-map-rule-reveal {
  opacity: 0;
  filter: blur(6px);
  transform: translate3d(0, 0, 0);
  transition:
    opacity 0.9s ease,
    filter 0.9s ease;
  will-change: opacity, filter;
}

.snow-map-rule-reveal.is-visible {
  opacity: 1;
  filter: blur(0);
}

.snow-map-rule-reveal__text {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity 0.8s ease,
    transform 0.8s ease;
  transition-delay: 0.08s;
}

.snow-map-rule-reveal.is-visible .snow-map-rule-reveal__text {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.snow-map-rule-reveal__btn {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity 0.8s ease,
    transform 0.8s ease,
    background 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease;
  transition-delay: 0.18s;
}

.snow-map-rule-reveal.is-visible .snow-map-rule-reveal__btn {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

@media (max-width: 767.98px) {
  .snow-map-rule {
    margin-top: 16px;
  }

  .snow-map-rule__inner {
    border-radius: 14px;
    padding: 18px 14px;
    gap: 12px;
  }

  .snow-map-rule__text {
    font-size: 13px;
    line-height: 1.8;
  }

  .snow-map-rule__btn {
    width: 50%;
    min-width: 0;
    min-height: 48px;
    font-size: 14px;
  }
  .snow-map-rule__text {
    margin: 0;
    font-size: 13px;
    line-height: 1.9;
    color: rgba(19, 35, 63, 0.72);
  }
}

@media (prefers-reduced-motion: reduce) {
  .snow-map-rule-reveal,
  .snow-map-rule-reveal__text,
  .snow-map-rule-reveal__btn {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }
}

/* =========================================================
   SNOW NEWS Reveal
========================================================= */
.snow-news-reveal {
  opacity: 0;
  filter: blur(6px);
  transform: translate3d(0, 0, 0);
  transition:
    opacity 0.9s ease,
    filter 0.9s ease;
  will-change: opacity, filter;
}

.snow-news-reveal.is-visible {
  opacity: 1;
  filter: blur(0);
}

.snow-news-reveal__head {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity 0.8s ease,
    transform 0.8s ease;
  transition-delay: 0.08s;
}

.snow-news-reveal.is-visible .snow-news-reveal__head {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.snow-news-reveal__list .gn-listItem,
.snow-news-reveal__list .gn-empty {
  opacity: 0;
  transform: translate3d(0, 22px, 0);
  transition:
    opacity 0.7s ease,
    transform 0.7s ease;
}

.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem,
.snow-news-reveal.is-visible .snow-news-reveal__list .gn-empty {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem:nth-child(1) {
  transition-delay: 0.14s;
}
.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem:nth-child(2) {
  transition-delay: 0.22s;
}
.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem:nth-child(3) {
  transition-delay: 0.3s;
}
.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem:nth-child(4) {
  transition-delay: 0.38s;
}
.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem:nth-child(5) {
  transition-delay: 0.46s;
}
.snow-news-reveal.is-visible .snow-news-reveal__list .gn-listItem:nth-child(6) {
  transition-delay: 0.54s;
}

@media (prefers-reduced-motion: reduce) {
  .snow-news-reveal,
  .snow-news-reveal__head,
  .snow-news-reveal__list .gn-listItem,
  .snow-news-reveal__list .gn-empty {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }
}

.snow-gn-page {
  margin: 100px auto;
}

/* =========================================================
  Local Rule Page
========================================================= */
.local-rule-page {
  background: #f5f8fc;
  color: #0f172a;
}

.local-rule-main {
  overflow: clip;
}

.local-rule-shell {
  width: min(1120px, calc(100% - 32px));
  margin-inline: auto;
}

.local-rule-hero {
  position: relative;
  min-height: clamp(420px, 72vh, 820px);
  display: flex;
  align-items: flex-end;
  color: #fff;
  background: #07111f;
}

.local-rule-hero__media {
  position: absolute;
  inset: 0;
  margin: 0;
  overflow: hidden;
}

.local-rule-hero__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center bottom;
}

.local-rule-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(7, 17, 31, 0.05) 0%,
    rgba(7, 17, 31, 0.1) 38%,
    rgba(7, 17, 31, 0.1) 100%
  );
  pointer-events: none;
}

.local-rule-hero__inner {
  position: relative;
  z-index: 2;
  width: min(1120px, calc(100% - 32px));
  margin: 0 auto;
  padding: clamp(120px, 16vw, 180px) 0 56px;
}

.local-rule-hero__eyebrow {
  margin: 0 0 14px;
  font-size: 1.42rem;
  letter-spacing: 0.28em;
  color: rgba(255, 255, 255, 0.78);
}

.local-rule-hero__title {
  margin: 0;
  font-family: 'Zen Kaku Gothic Antique', sans-serif;
  font-size: clamp(2.2rem, 4vw, 3.8rem);
  line-height: 1.05;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #fff;
  text-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);
}

.local-rule-hero__lead {
  margin: 18px 0 0;
  max-width: 760px;
  font-size: clamp(1rem, 2vw, 1.18rem);
  line-height: 1.95;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
}

.local-rule-intro {
  padding: 38px 0 24px;
}

.local-rule-intro__card,
.local-rule-card,
.local-rule-listItem,
.local-rule-emergency,
.local-rule-closing__card {
  border: 1px solid rgba(148, 163, 184, 0.18);
  background: rgb(255, 255, 255);
}

.local-rule-intro__card {
  padding: clamp(24px, 4vw, 38px);
  border-radius: 5px;
  border-color: #ca5108;
}

.local-rule-intro__text {
  margin: 0;
  font-size: clamp(1rem, 1.8vw, 1.08rem);
  line-height: 2;
  color: #334155;
}

.local-rule-intro__text + .local-rule-intro__text {
  margin-top: 14px;
}

.local-rule-section {
  padding: clamp(54px, 7vw, 88px) 0;
}

.local-rule-section--alt {
  background: linear-gradient(
    180deg,
    rgba(226, 232, 240, 0.34),
    rgba(226, 232, 240, 0.14)
  );
}

.local-rule-section__head {
  margin-bottom: 28px;
}

.local-rule-section__eyebrow {
  margin: 0 0 5px;
  font-size: 1.2rem;
  letter-spacing: 0.24em;
  color: #1d5fbd;
}

.local-rule-section__title {
  margin: 0;
  font-size: clamp(1.7rem, 3vw, 2.7rem);
  line-height: 1.3;
  font-weight: 800;
  color: #0f172a;
}

.local-rule-grid {
  display: grid;
  gap: 20px;
}

.local-rule-grid--important {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.local-rule-grid--two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.local-rule-card {
  border-radius: 5px;
  padding: 26px 24px;
}

.local-rule-card__title {
  margin: 0 0 12px;
  font-size: 1.15rem;
  line-height: 1.6;
  font-weight: 800;
  color: #0f172a;
}

.local-rule-card__text {
  margin: 0;
  font-size: 0.98rem;
  line-height: 1.95;
  color: #475569;
}

.local-rule-list {
  display: grid;
  gap: 16px;
}

.local-rule-listItem {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
  border-radius: 24px;
  padding: 22px 24px;
}

.local-rule-listItem__num {
  display: grid;
  place-items: center;
  min-height: 64px;
  border-radius: 18px;
  background: linear-gradient(135deg, #0f3c8a, #3b82f6);
  color: #fff;
  font-weight: 800;
  font-size: 1.1rem;
  letter-spacing: 0.08em;
}

.local-rule-listItem__title {
  margin: 0 0 8px;
  font-size: 1.08rem;
  line-height: 1.7;
  font-weight: 800;
  color: #0f172a;
}

.local-rule-listItem__text {
  margin: 0;
  font-size: 0.96rem;
  line-height: 1.9;
  color: #475569;
}

.local-rule-bullets {
  margin: 0;
  padding-left: 1.2em;
  display: grid;
  gap: 10px;
  color: #475569;
  line-height: 1.85;
}

.local-rule-ban {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.local-rule-ban__item {
  border-radius: 18px;
  padding: 16px 18px;
  background: rgba(15, 23, 42, 0.92);
  color: #fff;
  font-size: 0.96rem;
  line-height: 1.8;
  box-shadow: 0 12px 30px rgba(15, 23, 42, 0.16);
}

.local-rule-emergency {
  border-radius: 5px;
  padding: clamp(24px, 4vw, 34px);
}

.local-rule-emergency__text {
  margin: 0;
  font-size: 1rem;
  line-height: 2;
  color: #334155;
}

.local-rule-emergency__text + .local-rule-emergency__text {
  margin-top: 10px;
}

.local-rule-closing {
  padding: 24px 0 90px;
}

.local-rule-closing__card {
  border-radius: 30px;
  padding: clamp(28px, 5vw, 42px);
  text-align: center;
}

.local-rule-closing__lead {
  margin: 0;
  font-size: clamp(1rem, 2vw, 1.14rem);
  line-height: 2;
  color: #1e293b;
}

.local-rule-closing__actions {
  margin-top: 24px;
}

.local-rule-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 220px;
  padding: 14px 24px;
  border-radius: 5px;
  background: linear-gradient(135deg, #0f3c8a, #2563eb);
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  letter-spacing: 0.04em;
  box-shadow: 0 16px 32px rgba(37, 99, 235, 0.24);
  transition:
    transform 0.28s ease,
    box-shadow 0.28s ease,
    opacity 0.28s ease;
}

.local-rule-btn:hover,
.local-rule-btn:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 20px 40px rgba(37, 99, 235, 0.28);
  color: #fff;
  opacity: 1;
}

/* reveal */
.is-local-reveal-text,
.is-local-reveal-media {
  opacity: 0;
  transition:
    opacity 0.9s ease,
    transform 1s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--local-reveal-delay, 0ms);
  will-change: opacity, transform;
}

.is-local-reveal-text {
  transform: translateY(18px);
}

.is-local-reveal-media {
  transform: translateY(42px);
}

.is-local-reveal-text.is-visible,
.is-local-reveal-media.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* =========================================================
   local rule submit photo
========================================================= */
.local-rule-submitPhoto {
  --submit-photo-width: 100%;
  --submit-photo-max-width: 560px;
  --submit-photo-aspect: 16 / 8;
  width: min(var(--submit-photo-width), var(--submit-photo-max-width));
  margin: clamp(24px, 4vw, 42px) auto 0;
  text-align: center;
  overflow: hidden;
}

.local-rule-submitPhoto img {
  display: block;
  width: 100%;
  aspect-ratio: var(--submit-photo-aspect);
  object-fit: cover;
  border-radius: 5px;
}

.local-rule-submitPhoto__caption {
  margin-top: 10px;
  font-size: 0.88rem;
  line-height: 1.7;
  color: rgba(32, 51, 58, 0.72);
}

/* responsive */
@media (max-width: 991.98px) {
  .local-rule-grid--important,
  .local-rule-grid--two,
  .local-rule-ban {
    grid-template-columns: 1fr;
  }

  .local-rule-hero {
    min-height: 380px;
  }
}

@media (max-width: 767.98px) {
  .local-rule-shell,
  .local-rule-hero__inner {
    width: min(100% - 24px, 100%);
  }

  .local-rule-hero {
    min-height: 62svh;
  }

  .local-rule-hero__inner {
    width: min(100% - 24px, 100%);
    padding: 112px 0 34px;
  }

  .local-rule-hero__lead br {
    display: none;
  }

  .local-rule-intro__card,
  .local-rule-card,
  .local-rule-listItem,
  .local-rule-emergency,
  .local-rule-closing__card {
    border-radius: 22px;
  }

  .local-rule-listItem {
    grid-template-columns: 1fr;
    gap: 14px;
    padding: 20px 18px;
  }

  .local-rule-listItem__num {
    min-height: 54px;
    width: 74px;
    border-radius: 14px;
  }

  .local-rule-closing {
    padding-bottom: 72px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .is-local-reveal-text,
  .is-local-reveal-media {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

.local-rule-closing__card {
  background: transparent;
  border: none;
  box-shadow: none;
}

/* =========================================================
  Snow Scroll Story
========================================================= */
body.snow-page .snow-scroll-story {
  position: relative;
  height: 250svh;
  background: #0d1720;
  overflow: visible;
}

body.snow-page .snow-scroll-story__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 100svh;
  overflow: hidden;
  background: #0d1720;
}

body.snow-page .snow-scroll-story__media,
body.snow-page .snow-scroll-story__video,
body.snow-page .snow-scroll-story__overlay {
  position: absolute;
  inset: 0;
}

body.snow-page .snow-scroll-story__media {
  overflow: hidden;
  background: #0d1720;
}

body.snow-page .snow-scroll-story__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1.02);
}

body.snow-page .snow-scroll-story__overlay {
  background:
    linear-gradient(
      180deg,
      rgba(7, 14, 22, 0.26) 0%,
      rgb(7 14 22 / 9%) 30%,
      rgb(7 14 22 / 10%) 100%
    ),
    linear-gradient(
      90deg,
      rgb(7 14 22 / 15%) 0%,
      rgb(7 14 22 / 15%) 42%,
      rgb(7 14 22 / 0%) 100%
    );
  pointer-events: none;
}

body.snow-page .snow-scroll-story__content {
  position: relative;
  z-index: 2;
  width: min(1100px, calc(100% - 48px));
  height: 100%;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 8px;
  padding: clamp(64px, 9vw, 120px) 0;
  color: #ffffff;
}

body.snow-page .snow-scroll-story__eyebrow {
  margin: 0 0 8px;
  font-size: clamp(11px, 1.1vw, 14px);
  line-height: 1.2;
  letter-spacing: 0.32em;
  font-weight: 500;
  opacity: 0.92;
}

body.snow-page .snow-scroll-story__title {
  margin: 0;
  max-width: 8em;
  font-size: clamp(34px, 6vw, 78px);
  line-height: 1.16;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
}

body.snow-page .snow-scroll-story__text {
  margin: 0;
  max-width: min(820px, 100%);
  font-size: clamp(15px, 1.45vw, 20px);
  line-height: 2.05;
  font-weight: 400;
  letter-spacing: 0.06em;
  color: rgba(255, 255, 255, 0.94);
  text-shadow: 0 10px 24px rgba(0, 0, 0, 0.14);
}

body.snow-page .snow-scroll-story .js-scroll-story-item {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  filter: blur(8px);
  transition:
    opacity 0.05s ease,
    transform 0.05s ease,
    filter 0.05s ease;
  will-change: opacity, transform, filter;
}

body.snow-page .snow-scroll-story .js-scroll-story-item.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

body.snow-page .snow-scroll-story__title.js-scroll-story-item {
  transition-duration: 0.75s;
}

body.snow-page .snow-scroll-story__text.js-scroll-story-item {
  transition-duration: 0.7s;
}

/* =========================================================
  Snow Scroll Story Button
========================================================= */
.snow-scroll-story__essence-btn {
  width: fit-content;
  margin: clamp(26px, 14vw, 172px) auto 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  min-height: 58px;
  padding: 0 34px;
  border: 1px solid rgb(0 255 234 / 42%);
  border-radius: 999px;
  background: rgba(0, 18, 22, 0.36);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: rgb(0 255 234 / 92%);
  text-decoration: none;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(0.78rem, 1.5vw, 1.02rem);
  line-height: 1;
  letter-spacing: 0.22em;
  font-weight: 400;
  text-transform: uppercase;
  transition:
    transform 0.35s ease,
    background 0.35s ease,
    border-color 0.35s ease,
    box-shadow 0.35s ease;
}

.snow-scroll-story__essence-btn span {
  position: relative;
  top: 1px;
}

.snow-scroll-story__essence-btn i {
  position: relative;
  width: 34px;
  height: 1px;
  background: currentColor;
  transition:
    transform 0.35s ease,
    width 0.35s ease;
}

.snow-scroll-story__essence-btn i::after {
  content: '';
  position: absolute;
  right: 0;
  top: 50%;
  width: 9px;
  height: 9px;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

.snow-scroll-story__essence-btn:hover {
  transform: translateY(-4px);
  background: rgba(0, 255, 234, 0.08);
  border-color: rgb(0 255 234 / 82%);
  box-shadow: 0 14px 34px rgba(0, 255, 234, 0.14);
  color: rgb(0 255 234 / 100%);
}

.snow-scroll-story__essence-btn:hover i {
  width: 42px;
  transform: translateX(6px);
}

@media (max-width: 767.98px) {
  body.snow-page .snow-scroll-story {
    position: relative;
    height: 1700px;
    min-height: 1700px;
    max-height: 1700px;
    overflow: visible;
    background: transparent;
  }

  body.snow-page .snow-scroll-story__sticky {
    position: sticky;
    top: 0;
    height: 100vh;
    min-height: 100vh;
    max-height: 100vh;
    overflow: hidden;
    background: #0d1720;
  }

  body.snow-page .snow-scroll-story__media,
  body.snow-page .snow-scroll-story__video,
  body.snow-page .snow-scroll-story__overlay,
  body.snow-page .snow-scroll-story__content {
    height: 100vh;
    min-height: 100vh;
    max-height: 100vh;
  }

  body.snow-page .snow-scroll-story__video {
    transform: none;
  }

  body.snow-page .snow-scroll-story__content {
    width: calc(100% - 32px);
    height: 640px;
    min-height: 640px;
    max-height: 640px;
    justify-content: center;
    padding: 0 0 72px;
    gap: 14px;
  }

  body.snow-page .snow-scroll-story__eyebrow {
    margin-bottom: 4px;
    font-size: 11px;
    letter-spacing: 0.24em;
  }

  body.snow-page .snow-scroll-story__title {
    max-width: 100%;
    font-size: clamp(28px, 10vw, 44px);
    line-height: 1.28;
    letter-spacing: 0.06em;
  }

  body.snow-page .snow-scroll-story__text {
    max-width: 100%;
    font-size: 14px;
    line-height: 1.95;
    letter-spacing: 0.04em;
  }

  .snow-scroll-story__essence-btn {
    margin-top: 28px;
    min-height: 52px;
    padding: 0 24px;
    gap: 14px;
    font-size: 0.72rem;
    letter-spacing: 0.16em;
  }

  .snow-scroll-story__essence-btn i {
    width: 28px;
  }

  .snow-scroll-story__essence-btn:hover i {
    width: 34px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.snow-page .snow-scroll-story {
    height: auto;
  }

  body.snow-page .snow-scroll-story__sticky {
    position: relative;
    height: auto;
    min-height: 100svh;
  }

  body.snow-page .snow-scroll-story__content {
    min-height: 100svh;
  }

  body.snow-page .snow-scroll-story .js-scroll-story-item {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

/* =========================================================
  Snow Links Slider
========================================================= */
body.snow-page .snow-links-slider {
  --snow-links-bg: #e7eef2;
  --snow-links-bg-2: #dde8df;
  --snow-links-text: #20333a;
  --snow-links-muted: rgba(32, 51, 58, 0.58);
  --snow-links-shadow: 0 16px 36px rgba(14, 26, 32, 0.08);

  position: relative;
  padding: clamp(68px, 8vw, 112px) 0 clamp(86px, 10vw, 136px);
  background: linear-gradient(
    180deg,
    var(--snow-links-bg) 0%,
    var(--snow-links-bg-2) 100%
  );
  overflow: hidden;
}

body.snow-page .snow-links-slider__shell {
  width: 100%;
}

body.snow-page .snow-links-slider__head {
  width: min(1800px, calc(100% - 48px));
  margin: 0 auto 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

body.snow-page .snow-links-slider__titleWrap {
  flex: 1 1 auto;
  text-align: left;
}

body.snow-page .snow-links-slider__eyebrow {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1.2;
  letter-spacing: 0.28em;
  color: var(--snow-links-muted);
}

body.snow-page .snow-links-slider__title {
  margin: 0;
  font-size: clamp(22px, 3vw, 36px);
  line-height: 1.18;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--snow-links-text);
}

body.snow-page .snow-links-slider__nav {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 18px;
  min-width: 120px;
}

body.snow-page .snow-links-slider__arrow {
  position: relative;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: transparent;
  box-shadow: none;
  cursor: pointer;
  display: inline-block;
  transition:
    transform 0.22s ease,
    opacity 0.22s ease;
}

body.snow-page .snow-links-slider__arrow span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

body.snow-page .snow-links-slider__arrow::before,
body.snow-page .snow-links-slider__arrow::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 16px;
  height: 1.5px;
  background: rgba(32, 51, 58, 0.88);
  transform-origin: center;
  transition:
    background 0.22s ease,
    transform 0.22s ease,
    opacity 0.22s ease;
}

body.snow-page .snow-links-slider__arrow--prev::before {
  transform: translate(-8px, -5px) rotate(-45deg);
}

body.snow-page .snow-links-slider__arrow--prev::after {
  transform: translate(-8px, 5px) rotate(45deg);
}

body.snow-page .snow-links-slider__arrow--next::before {
  transform: translate(-8px, -5px) rotate(45deg);
}

body.snow-page .snow-links-slider__arrow--next::after {
  transform: translate(-8px, 5px) rotate(-45deg);
}

body.snow-page .snow-links-slider__arrow:hover {
  transform: translateY(-1px);
}

body.snow-page .snow-links-slider__arrow:hover::before,
body.snow-page .snow-links-slider__arrow:hover::after {
  background: #20333a;
}

body.snow-page .snow-links-slider__arrow--prev:hover::before {
  transform: translate(-10px, -5px) rotate(-45deg);
}

body.snow-page .snow-links-slider__arrow--prev:hover::after {
  transform: translate(-10px, 5px) rotate(45deg);
}

body.snow-page .snow-links-slider__arrow--next:hover::before {
  transform: translate(-6px, -5px) rotate(45deg);
}

body.snow-page .snow-links-slider__arrow--next:hover::after {
  transform: translate(-6px, 5px) rotate(-45deg);
}

body.snow-page .snow-links-slider__arrow:active {
  transform: translateY(0);
  opacity: 0.72;
}

body.snow-page .snow-links-slider__arrow:disabled {
  opacity: 0.26;
  cursor: default;
}

body.snow-page .snow-links-slider__arrow:disabled::before,
body.snow-page .snow-links-slider__arrow:disabled::after {
  background: rgba(32, 51, 58, 0.42);
}

body.snow-page .snow-links-slider__arrow:focus-visible {
  outline: none;
  opacity: 1;
}

body.snow-page .snow-links-slider__arrow:focus-visible::before,
body.snow-page .snow-links-slider__arrow:focus-visible::after {
  background: rgba(71, 137, 218, 0.92);
}

body.snow-page .snow-links-slider__viewportWrap {
  position: relative;
}

body.snow-page .snow-links-slider__spHint {
  display: none;
}

body.snow-page .snow-links-slider__viewport {
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding-left: clamp(16px, 4vw, 28px);
  padding-right: clamp(16px, 4vw, 28px);
}

body.snow-page .snow-links-slider__viewport::-webkit-scrollbar {
  display: none;
}

body.snow-page .snow-links-slider__track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: clamp(260px, 26vw, 520px);
  gap: clamp(18px, 1.8vw, 34px);
  align-items: stretch;
  width: max-content;
}

body.snow-page .snow-links-card {
  display: block;
  text-decoration: none;
  color: inherit;
  scroll-snap-align: start;
}

body.snow-page .snow-links-card__inner {
  position: relative;
  min-height: clamp(420px, 30vw, 560px);
  border-radius: 34px 0 34px 34px;
  overflow: hidden;
  background: #d8dde3;
  isolation: isolate;
}

body.snow-page .snow-links-card__media,
body.snow-page .snow-links-card__media img,
body.snow-page .snow-links-card__overlay {
  position: absolute;
  inset: 0;
}

body.snow-page .snow-links-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.8s ease;
}

body.snow-page .snow-links-card__overlay {
  background: linear-gradient(
    180deg,
    rgba(10, 18, 28, 0.02) 0%,
    rgba(10, 18, 28, 0.1) 34%,
    rgba(10, 18, 28, 0.26) 100%
  );
  z-index: 1;
}

body.snow-page .snow-links-card__content {
  position: relative;
  z-index: 2;
  min-height: inherit;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  padding: clamp(22px, 2.1vw, 32px);
  color: #fff;
}

body.snow-page .snow-links-card__tag {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  margin-bottom: 18px;
  padding: 8px 16px;
  border: 1px solid rgba(255, 255, 255, 0.62);
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  font-size: 12px;
  line-height: 1;
  letter-spacing: 0.08em;
  font-weight: 700;
}

body.snow-page .snow-links-card__title {
  margin: 0;
  font-size: clamp(24px, 2.1vw, 40px);
  line-height: 1.45;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-shadow: 0 8px 20px rgba(0, 0, 0, 0.16);
}

body.snow-page .snow-links-card__text {
  margin: 14px 0 0;
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.9;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 6px 16px rgba(0, 0, 0, 0.14);
}

body.snow-page .snow-links-card__more {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-top: 22px;
  padding-top: 14px;
  min-width: min(100%, 280px);
  border-top: 1px solid rgba(255, 255, 255, 0.42);
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0.08em;
  font-weight: 700;
}

body.snow-page .snow-links-card__more::after {
  content: '';
  flex: 1 1 auto;
  height: 1px;
  background: rgba(255, 255, 255, 0.64);
}

body.snow-page .snow-links-card:hover .snow-links-card__media img,
body.snow-page .snow-links-card:focus-visible .snow-links-card__media img {
  transform: scale(1.05);
}

body.snow-page .snow-links-card:focus-visible {
  outline: none;
}

body.snow-page .snow-links-card:focus-visible .snow-links-card__inner {
  box-shadow:
    0 18px 40px rgba(14, 26, 32, 0.1),
    0 0 0 3px rgba(71, 137, 218, 0.35);
}

/* =========================================================
  SP
========================================================= */
@media (max-width: 767.98px) {
  body.snow-page .snow-links-slider {
    padding: 56px 0 82px;
  }

  body.snow-page .snow-links-slider__head {
    width: calc(100% - 32px);
    margin-bottom: 14px;
    display: block;
  }

  body.snow-page .snow-links-slider__titleWrap {
    text-align: left;
  }

  body.snow-page .snow-links-slider__nav {
    display: none;
  }

  body.snow-page .snow-links-slider__eyebrow {
    margin-bottom: 8px;
    font-size: 11px;
    letter-spacing: 0.22em;
  }

  body.snow-page .snow-links-slider__title {
    font-size: clamp(22px, 7vw, 32px);
  }

  body.snow-page .snow-links-slider__viewportWrap {
    position: relative;
  }

  body.snow-page .snow-links-slider__spHint {
    position: absolute;
    top: 58px;
    right: 150px;
    z-index: 6;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    color: rgba(255, 255, 255, 0.92);
    background: rgb(193 232 170 / 64%);
    backdrop-filter: blur(11px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgb(255 255 255 / 32%);
    border-radius: 9px;
    box-shadow: 0 8px 24px rgba(10, 18, 28, 0.14);
    transition:
      opacity 0.3s ease,
      transform 0.3s ease;
    pointer-events: none;
  }

  body.snow-page .snow-links-slider__spHint.is-hidden {
    opacity: 0;
    transform: translateY(-6px);
  }

  body.snow-page .snow-links-slider__spHintHand {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    line-height: 1;
  }

  body.snow-page .snow-links-slider__spHintArrow {
    position: relative;
    display: inline-block;
    width: 28px;
    height: 8px;
  }

  body.snow-page .snow-links-slider__spHintArrow::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    width: 18px;
    height: 1.5px;
    background: currentColor;
    transform: translateY(-50%);
  }

  body.snow-page .snow-links-slider__spHintArrow::after {
    content: '';
    position: absolute;
    right: 1px;
    top: 50%;
    width: 8px;
    height: 8px;
    border-top: 1.5px solid currentColor;
    border-right: 1.5px solid currentColor;
    transform: translateY(-50%) rotate(45deg);
  }

  body.snow-page .snow-links-slider__spHintLabel {
    font-size: 10px;
    line-height: 1;
    letter-spacing: 0.18em;
    font-weight: 700;
  }

  body.snow-page .snow-links-slider__viewport {
    padding-left: 16px;
    padding-right: 16px;
  }

  body.snow-page .snow-links-slider__track {
    grid-auto-columns: min(82vw, 360px);
    gap: 14px;
  }

  body.snow-page .snow-links-card__inner {
    min-height: 440px;
    border-radius: 34px 0 26px 26px;
  }

  body.snow-page .snow-links-card__content {
    padding: 18px 18px 20px;
  }

  body.snow-page .snow-links-card__tag {
    min-height: 32px;
    margin-bottom: 14px;
    padding: 7px 14px;
    font-size: 11px;
  }

  body.snow-page .snow-links-card__title {
    font-size: clamp(20px, 6.6vw, 28px);
    line-height: 1.5;
  }

  body.snow-page .snow-links-card__text {
    margin-top: 10px;
    font-size: 13px;
    line-height: 1.8;
  }

  body.snow-page .snow-links-card__more {
    margin-top: 18px;
    padding-top: 12px;
    font-size: 12px;
  }
}

/* =========================================================
  Snow Links Reveal
========================================================= */
body.snow-page .snow-links-slider [data-snow-reveal='text'],
body.snow-page .snow-links-slider [data-snow-reveal='media'] {
  --snow-reveal-delay: 0ms;
}

body.snow-page .snow-links-slider [data-snow-reveal-delay='60'] {
  --snow-reveal-delay: 60ms;
}

body.snow-page .snow-links-slider [data-snow-reveal-delay='80'] {
  --snow-reveal-delay: 80ms;
}

body.snow-page .snow-links-slider [data-snow-reveal-delay='120'] {
  --snow-reveal-delay: 120ms;
}

body.snow-page .snow-links-slider [data-snow-reveal-delay='140'] {
  --snow-reveal-delay: 140ms;
}

body.snow-page .snow-links-slider [data-snow-reveal-delay='180'] {
  --snow-reveal-delay: 180ms;
}

body.snow-page .snow-links-slider [data-snow-reveal='text'] {
  opacity: 0;
  transform: translate3d(0, 0, 0);
  filter: blur(6px);
  transition:
    opacity 0.85s ease,
    filter 0.85s ease,
    transform 0.85s ease;
  transition-delay: var(--snow-reveal-delay);
  will-change: opacity, filter, transform;
}

body.snow-page .snow-links-slider [data-snow-reveal='text'].is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0);
}

body.snow-page .snow-links-slider [data-snow-reveal='media'] {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  filter: blur(8px);
  transition:
    opacity 0.95s ease,
    transform 0.95s ease,
    filter 0.95s ease;
  transition-delay: var(--snow-reveal-delay);
  will-change: opacity, filter, transform;
}

body.snow-page .snow-links-slider [data-snow-reveal='media'].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

body.snow-page
  .snow-links-slider
  .snow-links-card__tag[data-snow-reveal='text'] {
  transform: translate3d(0, 0, 0);
}

body.snow-page
  .snow-links-slider
  .snow-links-card__title[data-snow-reveal='text'],
body.snow-page
  .snow-links-slider
  .snow-links-card__text[data-snow-reveal='text'],
body.snow-page
  .snow-links-slider
  .snow-links-card__more[data-snow-reveal='text'] {
  transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
  body.snow-page .snow-links-slider [data-snow-reveal='text'],
  body.snow-page .snow-links-slider [data-snow-reveal='media'] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
    will-change: auto !important;
  }
}

/* =========================================================
   Stay Guide Frame
========================================================= */
.snow-stayFrame {
  position: relative;
  padding: clamp(72px, 9vw, 120px) 0;
  background: #f7f6f4;
}

.snow-stayFrame__inner {
  width: min(1400px, calc(100% - 48px));
  margin: 0 auto;
}

.snow-stayFrame__head {
  margin: 0 0 clamp(28px, 4vw, 44px);
}

.snow-stayFrame__eyebrow {
  margin: 0 0 10px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #8e7d6e;
}

.snow-stayFrame__mainTitle {
  margin: 0;
  font-size: clamp(2rem, 4vw, 3rem);
  line-height: 1.15;
  font-weight: 700;
  color: #1f2328;
}

/* 1パネル */
.snow-stayPanel {
  display: grid;
  grid-template-columns: minmax(320px, 0.92fr) minmax(420px, 1.08fr);
  align-items: stretch;
  min-height: 55vh;
  border-radius: 5px;
  overflow: hidden;
  background: #ffffff;
  box-shadow: 0 18px 48px rgba(20, 28, 38, 0.06);
}

.snow-stayPanel + .snow-stayPanel {
  margin-top: clamp(24px, 3vw, 36px);
}

.snow-stayPanel__content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(34px, 4vw, 68px) clamp(24px, 4vw, 72px);
  background: #ffffff;
}

.snow-stayPanel__label {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  min-height: 44px;
  margin: 0 0 20px;
  padding: 0 16px;
  border: 1px solid rgb(103 185 90 / 58%);
  border-radius: 5px;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #719a66bd;
  background: rgba(255, 255, 255, 0.72);
}

.snow-stayPanel__title {
  margin: 0;
  font-family: 'Shippori Mincho', 'Noto Serif JP', serif;
  font-size: clamp(1.7rem, 1vw, 2.3rem);
  line-height: 1.45;
  font-weight: 300;
  letter-spacing: 0.02em;
  color: #202124;
}

.snow-stayPanel__text {
  max-width: 34rem;
  margin: 24px 0 0;
  font-size: clamp(0.7rem, 1vw, 1.05rem);
  line-height: 2;
  color: #1f2a37;
  font-weight: 300;
}

.snow-stayPanel__arrowLink {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  align-self: flex-start;
  margin-top: 24px;
  text-decoration: none;
  color: #1f2328;
  transition:
    transform 0.25s ease,
    opacity 0.25s ease;
}

.snow-stayPanel__arrowLink:hover,
.snow-stayPanel__arrowLink:focus-visible {
  transform: translateX(6px);
  opacity: 0.9;
}

.snow-stayPanel__arrowText {
  font-size: 0.86rem;
  font-weight: 300;
  line-height: 1.5;
  color: #1f2328;
}

.snow-stayPanel__arrowIcon {
  position: relative;
  display: inline-block;
  width: 68px;
  height: 0.3px;
  flex: 0 0 auto;
}

.snow-stayPanel__arrowIcon::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 54px;
  height: 0.3px;
  background: currentColor;
  transform: translateY(-50%);
}

.snow-stayPanel__arrowIcon::after {
  content: '';
  position: absolute;
  right: 1px;
  top: 50%;
  width: 12px;
  height: 12px;
  border-top: 0.3px solid currentColor;
  border-right: 0.3px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

.snow-stayPanel__media {
  position: relative;
  min-height: 100%;
  background: #dfe5ea;
}

.snow-stayPanel__imageLink {
  display: block;
  width: 100%;
  height: 100%;
  text-decoration: none;
  overflow: hidden;
}

.snow-stayPanel__image {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 55vh;
  object-fit: cover;
  transition: transform 0.8s ease;
}

.snow-stayPanel__imageLink:hover .snow-stayPanel__image,
.snow-stayPanel__imageLink:focus-visible .snow-stayPanel__image {
  transform: scale(1.04);
}

/* =========================================================
   snow stay slider
   Swiperなし / 自作フェード
========================================================= */
.snow-staySlider {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 55vh;
  overflow: hidden;
}

.snow-staySlider__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: scale(1.04);
  transition:
    opacity 1.4s ease,
    transform 4.8s ease;
}

.snow-staySlider__slide.is-active {
  opacity: 1;
  transform: scale(1);
  z-index: 1;
}

.snow-staySlider .snow-stayPanel__imageLink {
  display: block;
  width: 100%;
  height: 100%;
}

.snow-staySlider .snow-stayPanel__image {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 55vh;
  object-fit: cover;
}

@media (max-width: 991.98px) {
  .snow-staySlider {
    min-height: 320px;
  }

  .snow-staySlider .snow-stayPanel__image {
    min-height: 320px;
  }
}

@media (max-width: 767.98px) {
  .snow-staySlider {
    min-height: 240px;
  }

  .snow-staySlider .snow-stayPanel__image {
    min-height: 240px;
  }
}

/* =========================================================
   Reveal
========================================================= */
.reveal-fade,
.reveal-up {
  opacity: 0;
  will-change: transform, opacity;
}

.reveal-fade {
  transform: translateY(0);
  transition:
    opacity 0.9s ease,
    transform 0.9s ease;
}

.reveal-up {
  transform: translateY(42px);
  transition:
    opacity 1s ease,
    transform 1s ease;
}

.reveal-fade.is-visible,
.reveal-up.is-visible {
  opacity: 1;
}

.reveal-fade.is-visible {
  transform: none;
}

.reveal-up.is-visible {
  transform: translateY(0);
}

/* =========================================================
   Responsive
========================================================= */
@media (max-width: 1199.98px) {
  .snow-stayPanel {
    grid-template-columns: minmax(300px, 0.95fr) minmax(360px, 1.05fr);
  }

  .snow-stayPanel__content {
    padding: 36px 36px;
  }

  .snow-stayPanel__title {
    font-size: clamp(1.8rem, 3vw, 2.7rem);
  }
}

@media (max-width: 991.98px) {
  .snow-stayFrame__inner {
    width: min(100% - 28px, 960px);
  }

  .snow-stayPanel {
    grid-template-columns: 1fr;
    min-height: auto;
  }

  .snow-stayPanel__media {
    order: 1;
  }

  .snow-stayPanel__content {
    order: 2;
    padding: 26px 22px 24px;
  }

  .snow-stayPanel__image {
    min-height: 320px;
  }

  .snow-stayPanel__title {
    font-size: clamp(1.7rem, 5vw, 2.3rem);
    line-height: 1.5;
  }

  .snow-stayPanel__text {
    max-width: none;
    margin-top: 18px;
    font-size: 0.96rem;
    line-height: 1.9;
  }

  .snow-stayPanel__arrowLink {
    margin-top: 20px;
  }
}

@media (max-width: 767.98px) {
  .snow-stayFrame {
    padding: 64px 0;
  }

  .snow-stayFrame__inner {
    width: min(100% - 20px, 720px);
  }

  .snow-stayFrame__head {
    margin-bottom: 24px;
  }

  .snow-stayPanel {
    border-radius: 20px;
  }

  .snow-stayPanel + .snow-stayPanel {
    margin-top: 20px;
  }

  .snow-stayPanel__image {
    min-height: 240px;
  }

  .snow-stayPanel__content {
    padding: 18px 16px 20px;
  }

  .snow-stayPanel__label {
    min-height: 40px;
    margin-bottom: 16px;
    padding: 0 14px;
    font-size: 0.8rem;
  }

  .snow-stayPanel__title {
    font-size: clamp(1.5rem, 3vw, 2rem);
    line-height: 1.5;
    font-weight: 300;
  }

  .snow-stayPanel__text {
    font-size: 0.82rem;
    line-height: 1.85;
  }

  .snow-stayPanel__arrowText {
    font-size: 0.8rem;
  }

  .snow-stayPanel__arrowIcon {
    width: 52px;
    height: 10px;
  }

  .snow-stayPanel__arrowIcon::before {
    width: 40px;
  }

  .snow-stayPanel__arrowIcon::after {
    width: 10px;
    height: 10px;
  }
}

/*英語だけ表示用css*/
/* =========================================================
   SNOW PAGE : English heading unified
   既存の見出し追記CSSは使わず、このブロックに統一
========================================================= */
:root {
  --gassan-earth: #8e7d6e;
  --gassan-earth-line: rgba(142, 125, 110, 0.42);
}

/* 各ブロックの見出し下余白だけ軽く整理 */
body.snow-page .gn-pageHead {
  margin-bottom: 24px;
}

@media (max-width: 767.98px) {
  body.snow-page .snow-live-head__eyebrow--solo,
  body.snow-page .snow-livecam-eyebrow--solo,
  body.snow-page .gassan-map-status__eyebrow--solo,
  body.snow-page .gn-kicker--solo,
  body.snow-page .snow-links-slider__eyebrow--solo,
  body.snow-page .snow-stayFrame__eyebrow--solo {
    padding-bottom: 10px;
    font-size: 11px;
    letter-spacing: 0.22em;
  }

  body.snow-page .snow-live-head__eyebrow--solo.reveal-fade.is-visible::after,
  body.snow-page .snow-livecam-eyebrow--solo.reveal-fade.is-visible::after,
  body.snow-page
    .gassan-map-status__eyebrow--solo.reveal-fade.is-visible::after,
  body.snow-page .gn-kicker--solo.reveal-fade.is-visible::after,
  body.snow-page
    .snow-links-slider__eyebrow--solo.reveal-fade.is-visible::after,
  body.snow-page .snow-stayFrame__eyebrow--solo.reveal-fade.is-visible::after {
    width: 56px;
  }

  body.snow-page .snow-live-head__eyebrow--solo:hover::after,
  body.snow-page .snow-livecam-eyebrow--solo:hover::after,
  body.snow-page .gassan-map-status__eyebrow--solo:hover::after,
  body.snow-page .gn-kicker--solo:hover::after,
  body.snow-page .snow-links-slider__eyebrow--solo:hover::after,
  body.snow-page .snow-stayFrame__eyebrow--solo:hover::after {
    width: 82px;
  }
}
/* =========================================================
   SNOW PAGE : English heading underline
   scaleX 方式で安定化
========================================================= */
:root {
  --gassan-earth: #8e7d6e;
  --gassan-earth-line: rgba(142, 125, 110, 0.42);
}

body.snow-page .snow-live-head__eyebrow--solo,
body.snow-page .snow-livecam-eyebrow--solo,
body.snow-page .gassan-map-status__eyebrow--solo,
body.snow-page .gn-kicker--solo,
body.snow-page .snow-links-slider__eyebrow--solo,
body.snow-page .snow-stayFrame__eyebrow--solo {
  position: relative;
  display: inline-block;
  margin: 0;
  padding: 0 0 12px;
  font-size: clamp(12px, 2.05vw, 25px);
  line-height: 1.2;
  font-weight: 500;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--gassan-earth);
  text-decoration: none;
}

body.snow-page .snow-live-head__eyebrow--solo::after,
body.snow-page .snow-livecam-eyebrow--solo::after,
body.snow-page .gassan-map-status__eyebrow--solo::after,
body.snow-page .gn-kicker--solo::after,
body.snow-page .snow-links-slider__eyebrow--solo::after,
body.snow-page .snow-stayFrame__eyebrow--solo::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 154px;
  height: 2px;
  background: rgba(142, 125, 110, 0.55);
  transform: scaleX(0);
  transform-origin: left center;
  transition:
    transform 2.6s cubic-bezier(0.22, 0.61, 0.36, 1),
    width 0.35s ease;
  pointer-events: none;
}

/* スクロールで表示されたら線が出る */
body.snow-page .snow-live-head__eyebrow--solo.reveal-fade.is-visible::after,
body.snow-page .snow-livecam-eyebrow--solo.reveal-fade.is-visible::after,
body.snow-page .gassan-map-status__eyebrow--solo.reveal-fade.is-visible::after,
body.snow-page .gn-kicker--solo.reveal-fade.is-visible::after,
body.snow-page .snow-links-slider__eyebrow--solo.reveal-fade.is-visible::after,
body.snow-page .snow-stayFrame__eyebrow--solo.reveal-fade.is-visible::after {
  transform: scaleX(1);
}

/* hoverでさらに長く見せる */
body.snow-page .snow-live-head__eyebrow--solo:hover::after,
body.snow-page .snow-livecam-eyebrow--solo:hover::after,
body.snow-page .gassan-map-status__eyebrow--solo:hover::after,
body.snow-page .gn-kicker--solo:hover::after,
body.snow-page .snow-links-slider__eyebrow--solo:hover::after,
body.snow-page .snow-stayFrame__eyebrow--solo:hover::after {
  width: 100px;
  transform: scaleX(1);
}

body.snow-page .gn-pageHead {
  margin-bottom: 24px;
}

/* NEWS だけ線の長さ固定 */
body.snow-page .gn-kicker--solo::after,
body.snow-page .gn-kicker--solo.reveal-fade.is-visible::after,
body.snow-page .gn-kicker--solo:hover::after {
  width: 88px;
  transform: scaleX(1);
}

@media (max-width: 767.98px) {
  body.snow-page .snow-live-head__eyebrow--solo,
  body.snow-page .snow-livecam-eyebrow--solo,
  body.snow-page .gassan-map-status__eyebrow--solo,
  body.snow-page .gn-kicker--solo,
  body.snow-page .snow-links-slider__eyebrow--solo,
  body.snow-page .snow-stayFrame__eyebrow--solo {
    padding-bottom: 10px;
    font-size: 15px;
    letter-spacing: 0.22em;
  }

  body.snow-page .snow-live-head__eyebrow--solo::after,
  body.snow-page .snow-livecam-eyebrow--solo::after,
  body.snow-page .gassan-map-status__eyebrow--solo::after,
  body.snow-page .gn-kicker--solo::after,
  body.snow-page .snow-links-slider__eyebrow--solo::after,
  body.snow-page .snow-stayFrame__eyebrow--solo::after {
    width: 56px;
  }

  body.snow-page .snow-live-head__eyebrow--solo:hover::after,
  body.snow-page .snow-livecam-eyebrow--solo:hover::after,
  body.snow-page .gassan-map-status__eyebrow--solo:hover::after,
  body.snow-page .gn-kicker--solo:hover::after,
  body.snow-page .snow-links-slider__eyebrow--solo:hover::after,
  body.snow-page .snow-stayFrame__eyebrow--solo:hover::after {
    width: 82px;
  }

  /* NEWS だけ線の長さ固定 */
  body.snow-page .gn-kicker--solo::after,
  body.snow-page .gn-kicker--solo.reveal-fade.is-visible::after,
  body.snow-page .gn-kicker--solo:hover::after {
    width: 56px;
    transform: scaleX(1);
  }
}

/* =========================================================
   GASSAN MAP STATUS / SP horizontal map
========================================================= */
.gassan-map-status__mapScroller {
  width: 100%;
}

.gassan-map-status__spScrollHint {
  display: none;
}

@media (max-width: 860px) {
  .gassan-map-status__stageCard {
    padding: 10px 0;
    overflow: hidden;
  }

  .gassan-map-status__spScrollHint {
    display: flex;
    justify-content: flex-end;
    margin: 0 10px 8px;
    font-size: 10px;
    letter-spacing: 0.08em;
    color: rgba(16, 36, 51, 0.56);
  }

  .gassan-map-status__spScrollHint span::before {
    content: '← ';
  }

  .gassan-map-status__spScrollHint span::after {
    content: ' →';
  }

  .gassan-map-status__mapScroller {
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding: 0 10px;
  }

  .gassan-map-status__mapScroller::-webkit-scrollbar {
    display: none;
  }

  .gassan-map-status__map {
    width: 192vw;
    max-width: none;
    aspect-ratio: 16 / 11;
  }

  .gassan-map-status.is-unified-outside .gassan-map-status__infoUnified {
    width: calc(100% - 20px);
    margin: 16px auto 0;
  }
}

/* =========================================================
   GASSAN MAP STATUS / SP swipe hint
========================================================= */
.gassan-map-status__spHint {
  display: none;
}

@media (max-width: 860px) {
  .gassan-map-status__spHint {
    position: absolute;
    top: 424px;
    right: 124px;
    z-index: 12;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    color: rgba(255, 255, 255, 0.92);
    background: rgb(193 232 170 / 64%);
    backdrop-filter: blur(11px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgb(255 255 255 / 32%);
    border-radius: 9px;
    box-shadow: 0 8px 24px rgba(10, 18, 28, 0.14);
    pointer-events: none;
  }

  .gassan-map-status__spHintHand {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    line-height: 1;
  }

  .gassan-map-status__spHintArrow {
    position: relative;
    display: inline-block;
    width: 28px;
    height: 8px;
  }

  .gassan-map-status__spHintArrow::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    width: 18px;
    height: 1.5px;
    background: currentColor;
    transform: translateY(-50%);
  }

  .gassan-map-status__spHintArrow::after {
    content: '';
    position: absolute;
    right: 1px;
    top: 50%;
    width: 8px;
    height: 8px;
    border-top: 1.5px solid currentColor;
    border-right: 1.5px solid currentColor;
    transform: translateY(-50%) rotate(45deg);
  }

  .gassan-map-status__spHintLabel {
    font-size: 10px;
    line-height: 1;
    letter-spacing: 0.18em;
    font-weight: 700;
  }

  .gassan-map-status__spHint {
    transition:
      opacity 0.3s ease,
      transform 0.3s ease;
  }

  .gassan-map-status__spHint.is-hidden {
    opacity: 0;
    transform: translateY(-6px);
  }
}

/* =========================================================
   GASSAN MAP STATUS / SP label size tune
========================================================= */
@media (max-width: 860px) {
  .gassan-map-status__labels > * {
    min-height: 22px;
    padding: 0 7px;
    border-radius: 6px;
    font-size: 11px;
    line-height: 1;
    letter-spacing: 0;
  }
}

/* =========================================================
   external site link
========================================================= */
.gassan-external-siteLink {
  margin-top: clamp(28px, 4vw, 48px);
}

.gassan-external-siteLink__anchor {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 13px 18px;
  border: 1px solid rgba(32, 51, 58, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.68);
  color: #20333a;
  text-decoration: none;
  transition:
    transform 0.28s ease,
    background 0.28s ease,
    border-color 0.28s ease;
}

.gassan-external-siteLink__anchor::after {
  content: '↗';
  font-size: 0.9rem;
  line-height: 1;
  transform: translateY(-1px);
}

.gassan-external-siteLink__label {
  font-size: 0.9rem;
  letter-spacing: 0.04em;
}

.gassan-external-siteLink__note {
  font-size: 0.68rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(32, 51, 58, 0.48);
}

.gassan-external-siteLink__anchor:hover {
  transform: translateY(-2px);
  background: #fff;
  border-color: rgba(32, 51, 58, 0.34);
}

@media (max-width: 767.98px) {
  .gassan-external-siteLink {
    order: 4;
    margin-top: 22px;
  }

  .gassan-external-siteLink__anchor {
    gap: 10px;
    padding: 12px 15px;
  }

  .gassan-external-siteLink__label {
    font-size: 0.84rem;
  }

  .gassan-external-siteLink__note {
    font-size: 0.62rem;
  }
}

/* =========================================================
   Access Intro
========================================================= */
.snow-access-intro {
  position: relative;
  padding: clamp(72px, 10vw, 140px) 0;
  background: #ffffff;
  overflow: hidden;
}

.snow-access-intro__inner {
  position: relative;
  width: min(1200px, calc(100% - 40px));
  margin: 0 auto;
}

.snow-access-intro__grid {
  position: relative;
  display: block;
  min-height: clamp(420px, 45vw, 580px);
}

.snow-access-intro__content {
  position: relative;
  z-index: 3;
  width: min(100%, 700px);
}

.snow-access-intro__title {
  margin: 0;
  color: #111;
  font-family: 'Shippori Mincho', 'Noto Serif JP', serif;
  font-size: clamp(1.7rem, 1vw, 2.3rem);
  font-weight: 300;
  line-height: 1.8;
  letter-spacing: 0.08em;
}

.snow-access-intro__lead {
  margin-top: clamp(28px, 4vw, 42px);
}

.snow-access-intro__lead p {
  margin: 0;
  color: #ba7123;
  font-size: clamp(0.52rem, 2vw, 1.18rem);
  font-weight: 300;
  line-height: 2;
  letter-spacing: 0.04em;
}

.snow-access-intro__text {
  margin-top: clamp(18px, 2vw, 30px);
  max-width: 40em;
}

.snow-access-intro__text p {
  margin: 0;
  color: #222;
  font-size: 0.9rem;
  font-weight: 400;
  line-height: 2.35;
  letter-spacing: 0.04em;
}

.snow-access-intro__text p + p {
  margin-top: 1.4em;
}

/* access page link */
.gassan-access-pageLink {
  position: relative;
  z-index: 3;
  margin-top: clamp(26px, 4vw, 42px);
}

/* map */
.snow-access-intro__map {
  position: absolute;
  top: 0;
  right: 4%;
  width: min(58vw, 760px);
  z-index: 1;
  pointer-events: none;
  opacity: 0.82;
}

.snow-access-intro__map-box {
  position: relative;
  width: 100%;
}

.snow-access-intro__map-image {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* external site link */
.gassan-external-siteLink {
  position: relative;
  z-index: 3;
  margin-top: clamp(28px, 4vw, 48px);
}

.gassan-external-siteLink__anchor {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 13px 18px;
  border: 1px solid rgba(32, 51, 58, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.68);
  color: #20333a;
  text-decoration: none;
  transition:
    transform 0.28s ease,
    background 0.28s ease,
    border-color 0.28s ease;
}

.gassan-external-siteLink__anchor::after {
  content: '↗';
  font-size: 0.9rem;
  line-height: 1;
  transform: translateY(-1px);
}

.gassan-external-siteLink__label {
  font-size: 0.9rem;
  letter-spacing: 0.04em;
}

.gassan-external-siteLink__note {
  font-size: 0.68rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(32, 51, 58, 0.48);
}

.gassan-external-siteLink__anchor:hover {
  transform: translateY(-2px);
  background: #fff;
  border-color: rgba(32, 51, 58, 0.34);
}

/* =========================================================
   Access Intro Responsive
========================================================= */
@media (max-width: 991.98px) {
  .snow-access-intro__grid {
    min-height: auto;
  }

  .snow-access-intro__content {
    width: 100%;
    max-width: none;
  }

  .snow-access-intro__title {
    line-height: 1.65;
  }

  .snow-access-intro__text {
    max-width: none;
  }

  .snow-access-intro__map {
    position: relative;
    top: auto;
    right: auto;
    width: min(100%, 620px);
    margin: 36px auto 0;
    transform: none;
    opacity: 0.92;
  }
}

@media (max-width: 767.98px) {
  .snow-access-intro {
    padding: 72px 0;
  }

  .snow-access-intro__inner {
    width: min(100%, calc(100% - 24px));
  }

  .snow-access-intro__grid {
    display: flex;
    flex-direction: column;
  }

  .snow-access-intro__content {
    order: 1;
  }

  .gassan-access-pageLink {
    order: 2;
    margin-top: 24px;
  }

  .snow-access-intro__map {
    order: 3;
    width: 100%;
    margin: 32px auto 0;
    opacity: 0.95;
  }

  .gassan-external-siteLink {
    order: 4;
    margin-top: 22px;
  }

  .snow-access-intro__title {
    font-size: clamp(1rem, 5vw, 2.3rem);
    line-height: 1.7;
    letter-spacing: 0.06em;
  }

  .snow-access-intro__lead {
    margin-top: 22px;
  }

  .snow-access-intro__lead p {
    font-size: 1rem;
    line-height: 1.95;
  }

  .snow-access-intro__text {
    margin-top: 22px;
  }

  .snow-access-intro__text p {
    font-size: 0.85rem;
    line-height: 1.85;
    font-weight: 300;
  }

  .gassan-external-siteLink__anchor {
    gap: 10px;
    padding: 12px 15px;
  }

  .gassan-external-siteLink__label {
    font-size: 0.84rem;
  }

  .gassan-external-siteLink__note {
    font-size: 0.62rem;
  }
}

/* =========================================================
   INFO PAGE
========================================================= */
.gassan-info-page {
  position: relative;
  background: linear-gradient(
    180deg,
    rgba(245, 248, 252, 0.98) 0%,
    rgba(255, 255, 255, 1) 100%
  );
  overflow: clip;
}

.gassan-info-shell {
  width: min(1180px, calc(100% - 32px));
  margin: 0 auto;
}

/* hero */
.gassan-info-hero {
  position: relative;
  min-height: clamp(340px, 54vw, 620px);
  display: flex;
  align-items: flex-end;
  padding: clamp(120px, 14vw, 170px) 0 60px;
  overflow: hidden;
}

.gassan-info-hero__bg {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      90deg,
      rgba(10, 24, 42, 0) 0%,
      rgba(10, 24, 42, 0) 38%,
      rgba(10, 24, 42, 0) 62%,
      rgba(10, 24, 42, 0) 100%
    ),
    url('../images/info_top_pic.png') center center / cover no-repeat;
  transform: scale(1.02);
}

.gassan-info-hero__bg::after {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 120px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(245, 248, 252, 0) 100%
  );
}

.gassan-info-hero__inner {
  position: relative;
  z-index: 1;
  width: min(1180px, calc(100% - 32px));
  margin: 0 auto;
}

.gassan-info-hero__eyebrow {
  display: inline-block;
  margin: 0 0 14px;
  font-size: 1.22rem;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.78);
}

.gassan-info-hero__title {
  margin: 0;
  font-size: clamp(2.4rem, 4vw, 3.8rem);
  line-height: 1.06;
  font-weight: 400;
  letter-spacing: 0.08em;
  color: #fff;
}

.gassan-info-hero__lead {
  margin: 18px 0 0;
  max-width: 760px;
  font-size: clamp(0.98rem, 1.6vw, 1.06rem);
  line-height: 2;
  color: rgba(255, 255, 255, 0.9);
}

/* intro */
.gassan-info-intro {
  padding: 46px 0 3px;
}

.gassan-info-heading {
  margin-bottom: 28px;
}

.gassan-info-heading__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0;
  padding-right: 0;
  padding-bottom: 18px;
  font-size: clamp(1.05rem, 1.8vw, 1.25rem);
  font-weight: 500;
  letter-spacing: 0.26em;
  color: #8f7b6a;
  line-height: 1.2;
}

.gassan-info-heading__eyebrow::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 140px;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(143, 123, 106, 0.95) 0%,
    rgba(143, 123, 106, 0.35) 100%
  );
  transform: scaleX(1);
  transform-origin: left center;
}

.gassan-info-intro__box {
  padding: clamp(22px, 4vw, 34px);
  border-radius: 26px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.95) 0%,
    rgba(248, 251, 255, 0.96) 100%
  );
  border: 1px solid rgba(132, 167, 210, 0.18);
  box-shadow: 0 18px 44px rgba(33, 64, 110, 0.08);
}

.gassan-info-intro__text {
  margin: 0;
  font-size: 1rem;
  line-height: 2;
  color: #3d5873;
}

/* cards */
.gassan-info-section {
  padding: 10px 0 110px;
}

.gassan-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.gassan-info-card {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 24px 24px 22px;
  border-radius: 24px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.96) 0%,
    rgba(246, 250, 255, 0.92) 100%
  );
  border: 1px solid rgba(130, 167, 214, 0.22);
  box-shadow: 0 18px 40px rgba(28, 61, 109, 0.08);
}

.gassan-info-card__head {
  display: grid;
  grid-template-columns: 62px 1fr;
  gap: 16px;
  align-items: center;
  margin-bottom: 18px;
}

.gassan-info-card__icon {
  width: 62px;
  height: 62px;
  border-radius: 18px;
  background: linear-gradient(
    180deg,
    rgba(234, 242, 252, 1) 0%,
    rgba(248, 251, 255, 1) 100%
  );
  border: 1px solid rgba(138, 170, 209, 0.22);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.gassan-info-card__icon-placeholder {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: #8aa2bc;
}

.gassan-info-card__label {
  margin: 0 0 6px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  color: #6e90b8;
}

.gassan-info-card__title {
  margin: 0;
  font-size: 1.35rem;
  line-height: 1.45;
  font-weight: 700;
  color: #183a60;
}

.gassan-info-card__body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.gassan-info-card__main {
  margin: 0;
  font-size: clamp(1.2rem, 2.2vw, 1.5rem);
  line-height: 1.5;
  font-weight: 700;
  color: #173a61;
}

.gassan-info-card__text {
  margin: 0;
  font-size: 0.96rem;
  line-height: 1.95;
  color: #4a667f;
}

.gassan-info-card__note {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.85;
  color: #70859d;
}

/* price */
.gassan-info-price {
  display: grid;
  gap: 10px;
}

.gassan-info-price__row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 11px 0;
  border-bottom: 1px solid rgba(130, 167, 214, 0.18);
}

.gassan-info-price__name {
  font-size: 0.96rem;
  line-height: 1.6;
  color: #49667f;
}

.gassan-info-price__value {
  font-size: 1.02rem;
  line-height: 1.4;
  font-weight: 700;
  color: #183a60;
  white-space: nowrap;
}

/* list */
.gassan-info-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}

.gassan-info-list li {
  position: relative;
  padding-left: 1.2em;
  font-size: 0.94rem;
  line-height: 1.85;
  color: #49667f;
}

.gassan-info-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.8em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #7fa9d9;
  transform: translateY(-50%);
}

/* responsive */
@media (max-width: 991.98px) {
  .gassan-info-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 767.98px) {
  .gassan-info-hero {
    min-height: 360px;
    padding: 112px 0 42px;
  }

  .gassan-info-hero__bg {
    background:
      linear-gradient(
        180deg,
        rgba(10, 24, 42, 0.42) 0%,
        rgba(10, 24, 42, 0.22) 45%,
        rgba(10, 24, 42, 0.18) 100%
      ),
      url('/assets/images/info_top_pic.png') center center / cover no-repeat;
  }

  .gassan-info-hero__lead br,
  .gassan-info-intro__text br,
  .gassan-info-card__text br {
    display: none;
  }

  .gassan-info-intro {
    padding: 34px 0 2px;
  }

  .gassan-info-section {
    padding: 8px 0 84px;
  }

  .gassan-info-grid {
    gap: 14px;
  }

  .gassan-info-card {
    padding: 20px 18px 18px;
    border-radius: 20px;
  }

  .gassan-info-card__head {
    grid-template-columns: 54px 1fr;
    gap: 14px;
    margin-bottom: 16px;
  }

  .gassan-info-card__icon {
    width: 54px;
    height: 54px;
    border-radius: 16px;
  }

  .gassan-info-card__title {
    font-size: 1.18rem;
  }

  .gassan-info-card__main {
    font-size: 1.16rem;
  }

  .gassan-info-price__row {
    padding: 10px 0;
  }
}

/* =========================================================
   INFO HEADING LINE
========================================================= */
.gassan-info-heading {
  margin-bottom: 28px;
}

.gassan-info-heading__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0;
  padding-right: 0;
  padding-bottom: 18px;
  font-size: clamp(1.05rem, 1.8vw, 1.25rem);
  font-weight: 500;
  letter-spacing: 0.26em;
  color: #8f7b6a;
  line-height: 1.2;
}

.gassan-info-heading__eyebrow::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 140px;
  height: 2px;
  background: linear-gradient(
    90deg,
    rgba(143, 123, 106, 0.95) 0%,
    rgba(143, 123, 106, 0.35) 100%
  );
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 900ms cubic-bezier(0.22, 0.61, 0.36, 1) 180ms;
}

.gassan-info-heading__eyebrow.is-line-visible::after {
  transform: scaleX(1);
}

@media (max-width: 767.98px) {
  .gassan-info-heading {
    margin-bottom: 22px;
  }

  .gassan-info-heading__eyebrow {
    padding-bottom: 14px;
    letter-spacing: 0.2em;
    font-size: 0.98rem;
  }

  .gassan-info-heading__eyebrow::after {
    width: 92px;
  }
}
/* =========================================================
   SITE REVEAL
========================================================= */
[data-snow-reveal] {
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
}

[data-snow-reveal].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
  [data-snow-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* =========================================================
   GASSAN SEASON CARD
========================================================= */
.gassan-season-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  align-items: start;
}

.gassan-season-hero-block {
  padding: 0;
  min-width: 0;
}

.gassan-season-hero-block__inner {
  width: 100%;
  margin: 0;
}

.gassan-season-card {
  position: relative;
  aspect-ratio: 6.5 / 2;
  border-radius: 5px;
  overflow: hidden;
  background: #ffffff;
  isolation: isolate;
  min-width: 0;
}

/* 背景画像 */
.gassan-season-card__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.gassan-season-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.9) contrast(0.85);
  transform: scale(1.12);
  opacity: 0.2;
}

/* アイコン 左上 */
.gassan-season-card__icon {
  position: absolute;
  top: 4px;
  left: 4px;
  z-index: 3;
  width: 68px;
  height: 68px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.gassan-season-card__icon img {
  display: block;
  width: 56px;
  height: 56px;
  object-fit: contain;
  opacity: 0.95;
}

/* 中央コンテンツ */
.gassan-season-card__content {
  position: relative;
  z-index: 2;
  height: 100%;
  padding: 20px 40px 34px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.gassan-season-card__label {
  margin: 0 0 3px;
  font-size: 0.7rem;
  line-height: 1.4;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: #6e6e6e;
}

.gassan-season-card__title {
  margin: 0 0 11px;
  font-size: clamp(1rem, 2.5vw, 1.1rem);
  line-height: 1.25;
  font-weight: 400;
  letter-spacing: 0.03em;
  color: #12263d;
}

.gassan-season-card__date {
  margin: 0 0 11px;
  font-size: clamp(1rem, 3vw, 1.4rem);
  line-height: 1.22;
  font-weight: 400;
  letter-spacing: 0.01em;
  color: #111;
  overflow-wrap: anywhere;
}

.gassan-season-card__note {
  display: grid;
  gap: 6px;
  margin: 0;
  max-width: 760px;
  font-size: 0.85rem;
  line-height: 1.95;
  font-weight: 400;
  color: #34485d;
}

.gassan-season-card__note p {
  display: grid;
  grid-template-columns: 1.2em 1fr;
  gap: 0.2em;
  margin: 0;
}

.gassan-season-card__note span {
  display: block;
}

.gassan-season-card__note em {
  display: block;
  font-style: normal;
}

/* タブレット */
@media (max-width: 991.98px) {
  .gassan-season-row {
    gap: 14px;
  }

  .gassan-season-card {
    aspect-ratio: 5 / 2.1;
  }

  .gassan-season-card__icon {
    top: 6px;
    left: 6px;
    width: 56px;
    height: 56px;
  }

  .gassan-season-card__icon img {
    width: 44px;
    height: 44px;
  }

  .gassan-season-card__content {
    padding: 16px 20px 20px;
  }

  .gassan-season-card__label {
    font-size: 0.68rem;
    margin-bottom: 4px;
  }

  .gassan-season-card__title {
    margin-bottom: 8px;
    font-size: clamp(0.92rem, 1.8vw, 1rem);
  }

  .gassan-season-card__date {
    margin-bottom: 8px;
    font-size: clamp(0.95rem, 2.4vw, 1.2rem);
    line-height: 1.18;
  }

  .gassan-season-card__note {
    font-size: 0.72rem;
    line-height: 1.7;
  }
}

/* SP */
@media (max-width: 767.98px) {
  .gassan-season-row {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .gassan-season-card {
    aspect-ratio: 7 / 5;
    border-radius: 5px;
  }

  .gassan-season-card__icon {
    top: 10px;
    left: 10px;
    width: 52px;
    height: 52px;
  }

  .gassan-season-card__icon img {
    width: 38px;
    height: 38px;
  }

  .gassan-season-card__content {
    padding: 26px 16px 10px;
  }

  .gassan-season-card__label {
    margin-bottom: 6px;
    font-size: 0.68rem;
    letter-spacing: 0.14em;
  }

  .gassan-season-card__title {
    margin-bottom: 10px;
    font-size: 1rem;
  }

  .gassan-season-card__date {
    margin-bottom: 10px;
    font-size: 1.45rem;
    line-height: 1.25;
    letter-spacing: 0.01em;
  }

  .gassan-season-card__note {
    text-align: left;
    font-size: 0.78rem;
    line-height: 1.75;
  }
}

/* =========================================================
   GASSAN FARE CARD
========================================================= */
.gassan-fare-block {
  padding: 18px 0 0;
}

.gassan-fare-block__inner {
  width: 100%;
  margin: 0;
}

.gassan-fare-card {
  position: relative;
  border-radius: 5px;
  overflow: hidden;
  background: #ffffff;
  isolation: isolate;
  min-width: 0;
}

.gassan-fare-card__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.gassan-fare-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.9) contrast(0.85);
  transform: scale(1.08);
  opacity: 0.12;
}

.gassan-fare-card__icon {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  width: 68px;
  height: 68px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.gassan-fare-card__iconText {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  background: rgba(235, 242, 250, 0.9);
  border: 1px solid rgba(160, 186, 214, 0.35);
  color: #7c9bbd;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.gassan-fare-card__content {
  position: relative;
  z-index: 2;
  padding: 20px 40px 32px;
  text-align: center;
}

.gassan-fare-card__label {
  margin: 0 0 3px;
  font-size: 0.78rem;
  line-height: 1.4;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: #6e6e6e;
}

.gassan-fare-card__title {
  margin: 0 0 18px;
  font-size: clamp(1rem, 2.5vw, 1.1rem);
  line-height: 1.25;
  font-weight: 400;
  letter-spacing: 0.03em;
  color: #12263d;
}

.gassan-fare-card__tableWrap {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.gassan-fare-card__tableWrap--sub {
  margin-top: 18px;
}

.gassan-fare-table {
  width: 100%;
  min-width: 820px;
  border-collapse: collapse;
  background: rgba(255, 255, 255, 0.72);
}

.gassan-fare-table__caption {
  text-align: left;
  margin: 0 0 10px;
  padding: 0 0 8px;
  font-size: 0.9rem;
  line-height: 1.4;
  letter-spacing: 0.12em;
  font-weight: 400;
  color: #12263d;
  caption-side: top;
}

.gassan-fare-table th,
.gassan-fare-table td {
  padding: 14px 16px;
  border-bottom: 1px solid rgba(18, 38, 61, 0.12);
  text-align: left;
  vertical-align: top;
  font-size: 0.88rem;
  line-height: 1.7;
  color: #34485d;
}

.gassan-fare-table thead th {
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: #6e6e6e;
  background: rgba(255, 255, 255, 0.5);
}

.gassan-fare-table tbody th {
  width: 26%;
  font-weight: 400;
  color: #12263d;
  background: rgba(255, 255, 255, 0.32);
}

.gassan-fare-table tbody td:nth-child(2),
.gassan-fare-table tbody td:nth-child(3) {
  width: 12%;
  white-space: nowrap;
}

.gassan-fare-table tbody td:last-child {
  width: 50%;
}

.gassan-fare-table thead th:nth-child(2),
.gassan-fare-table thead th:nth-child(3) {
  text-align: center;
}

.gassan-fare-table tbody td:nth-child(2),
.gassan-fare-table tbody td:nth-child(3) {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.gassan-fare-card__note {
  margin: 12px 0 0;
  text-align: left;
  font-size: 0.82rem;
  line-height: 1.8;
  color: #34485d;
}

/* タブレット */
@media (max-width: 991.98px) {
  .gassan-fare-block {
    padding-top: 14px;
  }

  .gassan-fare-card__icon {
    top: 8px;
    left: 8px;
    width: 56px;
    height: 56px;
  }

  .gassan-fare-card__iconText {
    width: 44px;
    height: 44px;
    font-size: 0.66rem;
    border-radius: 12px;
  }

  .gassan-fare-card__content {
    padding: 18px 20px 24px;
  }

  .gassan-fare-card__label {
    font-size: 0.68rem;
  }

  .gassan-fare-card__title {
    margin-bottom: 14px;
    font-size: 1rem;
  }

  .gassan-fare-table th,
  .gassan-fare-table td {
    padding: 12px 12px;
    font-size: 0.82rem;
  }

  .gassan-fare-table thead th {
    font-size: 0.7rem;
  }

  .gassan-fare-card__note {
    font-size: 0.76rem;
  }
}

/* SP */
@media (max-width: 767.98px) {
  .gassan-fare-block {
    padding-top: 12px;
  }

  .gassan-fare-card {
    border-radius: 8px;
  }

  .gassan-fare-card__icon {
    top: 10px;
    left: 10px;
    width: 52px;
    height: 52px;
  }

  .gassan-fare-card__iconText {
    width: 38px;
    height: 38px;
    font-size: 0.58rem;
    border-radius: 10px;
  }

  .gassan-fare-card__content {
    padding: 18px 14px 18px;
  }

  .gassan-fare-card__label {
    margin-bottom: 4px;
    font-size: 0.68rem;
    letter-spacing: 0.14em;
  }

  .gassan-fare-card__title {
    margin-bottom: 12px;
    font-size: 1rem;
  }

  .gassan-fare-card__tableWrap--sub {
    margin-top: 14px;
  }

  .gassan-fare-table {
    min-width: 720px;
  }

  .gassan-fare-table__caption {
    font-size: 0.82rem;
  }

  .gassan-fare-table th,
  .gassan-fare-table td {
    padding: 10px 10px;
    font-size: 0.76rem;
    line-height: 1.65;
  }

  .gassan-fare-table thead th {
    font-size: 0.64rem;
  }

  .gassan-fare-card__note {
    margin-top: 10px;
    font-size: 0.72rem;
    line-height: 1.7;
  }

  @media (max-width: 767px) {
    .gassan-fare-card__tableWrap {
      position: relative;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
    }

    .gassan-fare-card__tableWrap::after {
      content: '横にスクロールできます →';
      position: sticky;
      right: 10px;
      top: 10px;
      z-index: 5;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      float: right;
      margin-bottom: 8px;
      padding: 6px 10px;
      border-radius: 999px;
      background: rgba(18, 32, 46, 0.78);
      color: #fff;
      font-size: 0.72rem;
      letter-spacing: 0.04em;
      white-space: nowrap;
      pointer-events: none;
      opacity: 1;
      transform: translateY(0);
      transition:
        opacity 0.35s ease,
        transform 0.35s ease;
    }

    .gassan-fare-card__tableWrap.is-scrolled::after {
      opacity: 0;
      transform: translateY(-6px);
    }

    .gassan-fare-table {
      min-width: 680px;
    }
  }
}

/* =========================================================
   GASSAN T-BAR CARD
========================================================= */
.gassan-tbar-block {
  padding: 18px 0 0;
}

.gassan-tbar-block__inner {
  width: 100%;
  margin: 0;
}

.gassan-tbar-card {
  position: relative;
  border-radius: 5px;
  overflow: hidden;
  background: #ffffff;
  isolation: isolate;
  min-width: 0;
}

.gassan-tbar-card__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.gassan-tbar-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.9) contrast(0.85);
  transform: scale(1.08);
  opacity: 0.12;
}

.gassan-tbar-card__icon {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  width: 68px;
  height: 68px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.gassan-tbar-card__iconText {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  background: rgba(235, 242, 250, 0.9);
  border: 1px solid rgba(160, 186, 214, 0.35);
  color: #7c9bbd;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.gassan-tbar-card__content {
  position: relative;
  z-index: 2;
  padding: 20px 40px 32px;
  text-align: center;
}

.gassan-tbar-card__label {
  margin: 0 0 3px;
  font-size: 0.78rem;
  line-height: 1.4;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: #6e6e6e;
}

.gassan-tbar-card__title {
  margin: 0 0 18px;
  font-size: clamp(1rem, 2.5vw, 1.1rem);
  line-height: 1.25;
  font-weight: 400;
  letter-spacing: 0.03em;
  color: #12263d;
}

.gassan-tbar-card__lead {
  margin: 0 0 20px;
}

.gassan-tbar-card__lead p {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.9;
  color: #34485d;
}

.gassan-tbar-card__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  text-align: left;
}

.gassan-tbar-card__panel {
  background: rgba(255, 255, 255, 0.66);
  padding: 18px 18px 16px;
}

.gassan-tbar-card__panelTitle {
  margin: 0 0 12px;
  font-size: 0.92rem;
  line-height: 1.4;
  letter-spacing: 0.08em;
  font-weight: 700;
  color: #12263d;
}

.gassan-tbar-card__tableWrap {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.gassan-tbar-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  background: rgba(255, 255, 255, 0.72);
}

.gassan-tbar-table th,
.gassan-tbar-table td {
  padding: 12px 12px;
  border-bottom: 1px solid rgba(18, 38, 61, 0.12);
  text-align: left;
  vertical-align: top;
  font-size: 0.82rem;
  line-height: 1.7;
  color: #34485d;
}

.gassan-tbar-table thead th {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: #6e6e6e;
  background: rgba(255, 255, 255, 0.5);
}

.gassan-tbar-table tbody th {
  width: 24%;
  font-weight: 500;
  color: #12263d;
  background: rgba(255, 255, 255, 0.32);
}

.gassan-tbar-card__note {
  margin: 10px 0 0;
  font-size: 0.76rem;
  line-height: 1.75;
  color: #34485d;
}

.gassan-tbar-card__list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 5px;
}

.gassan-tbar-card__list li {
  position: relative;
  padding-left: 1.1em;
  font-size: 0.82rem;
  line-height: 1.8;
  color: #34485d;
}

.gassan-tbar-card__list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.82em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #7c9bbd;
  transform: translateY(-50%);
}

.gassan-tbar-card__subbox {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid rgba(18, 38, 61, 0.12);
}

.gassan-tbar-card__subTitle {
  margin: 0 0 8px;
  font-size: 0.78rem;
  line-height: 1.4;
  letter-spacing: 0.08em;
  font-weight: 700;
  color: #12263d;
}

.gassan-tbar-card__subbox p {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.8;
  color: #34485d;
}

@media (max-width: 991.98px) {
  .gassan-tbar-block {
    padding-top: 14px;
  }

  .gassan-tbar-card__icon {
    top: 8px;
    left: 8px;
    width: 56px;
    height: 56px;
  }

  .gassan-tbar-card__iconText {
    width: 44px;
    height: 44px;
    font-size: 0.66rem;
    border-radius: 12px;
  }

  .gassan-tbar-card__content {
    padding: 18px 20px 24px;
  }

  .gassan-tbar-card__label {
    font-size: 0.68rem;
  }

  .gassan-tbar-card__title {
    margin-bottom: 14px;
    font-size: 1rem;
  }

  .gassan-tbar-card__lead p {
    font-size: 0.8rem;
  }

  .gassan-tbar-card__grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }
}

@media (max-width: 767.98px) {
  .gassan-tbar-block {
    padding-top: 12px;
  }

  .gassan-tbar-card {
    border-radius: 8px;
  }

  .gassan-tbar-card__icon {
    top: 10px;
    left: 10px;
    width: 52px;
    height: 52px;
  }

  .gassan-tbar-card__iconText {
    width: 38px;
    height: 38px;
    font-size: 0.58rem;
    border-radius: 10px;
  }

  .gassan-tbar-card__content {
    padding: 18px 14px 18px;
  }

  .gassan-tbar-card__label {
    margin-bottom: 4px;
    font-size: 0.68rem;
    letter-spacing: 0.14em;
  }

  .gassan-tbar-card__title {
    margin-bottom: 12px;
    font-size: 1rem;
  }

  .gassan-tbar-card__lead {
    margin-bottom: 14px;
  }

  .gassan-tbar-card__lead p {
    font-size: 0.69rem;
    line-height: 1.75;
  }

  .gassan-tbar-card__panel {
    padding: 14px 12px 12px;
  }

  .gassan-tbar-card__panelTitle {
    font-size: 0.84rem;
  }

  .gassan-tbar-table {
    min-width: 560px;
  }

  .gassan-tbar-table th,
  .gassan-tbar-table td {
    padding: 10px 10px;
    font-size: 0.74rem;
    line-height: 1.65;
  }

  .gassan-tbar-table thead th {
    font-size: 0.62rem;
  }

  .gassan-tbar-card__list li,
  .gassan-tbar-card__subbox p,
  .gassan-tbar-card__note {
    font-size: 0.72rem;
    line-height: 1.7;
  }
}

/* =========================================================
   GASSAN T-BAR SIMPLE FARE
========================================================= */
.gassan-tbar-simplefare {
  background: rgba(255, 255, 255, 0.72);
}

.gassan-tbar-simplefare__row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: center;
  padding: 16px 16px;
  border-bottom: 1px solid rgba(18, 38, 61, 0.12);
}

.gassan-tbar-simplefare__label {
  font-size: 0.88rem;
  line-height: 1.7;
  color: #12263d;
  font-weight: 500;
}

.gassan-tbar-simplefare__price {
  font-size: 1.05rem;
  line-height: 1.4;
  color: #111;
  font-weight: 700;
  white-space: nowrap;
}

@media (max-width: 991.98px) {
  .gassan-tbar-simplefare__row {
    padding: 14px 14px;
  }

  .gassan-tbar-simplefare__label {
    font-size: 0.82rem;
  }

  .gassan-tbar-simplefare__price {
    font-size: 0.96rem;
  }
}

@media (max-width: 767.98px) {
  .gassan-tbar-simplefare__row {
    padding: 12px 12px;
    gap: 12px;
  }

  .gassan-tbar-simplefare__label {
    font-size: 0.76rem;
    line-height: 1.65;
  }

  .gassan-tbar-simplefare__price {
    font-size: 0.88rem;
  }
}
.gassan-season-card,
.gassan-fare-card,
.gassan-tbar-card {
  border: 1px solid rgba(255, 255, 255, 0);
}

/* =========================================================
   GASSAN PARKING CARD
========================================================= */
.gassan-parking-block {
  padding: 18px 0 0;
}

.gassan-parking-block__inner {
  width: 100%;
  margin: 0;
}

.gassan-parking-card {
  position: relative;
  border-radius: 5px;
  overflow: hidden;
  background: #ffffff;
  isolation: isolate;
  min-width: 0;
}

.gassan-parking-card__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.gassan-parking-card__bgfill {
  width: 100%;
  height: 100%;
  background: rgba(230, 236, 242, 0.35);
}

.gassan-parking-card__icon {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  width: 68px;
  height: 68px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.gassan-parking-card__iconText {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  background: rgba(235, 242, 250, 0.9);
  border: 1px solid rgba(160, 186, 214, 0.35);
  color: #7c9bbd;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.gassan-parking-card__content {
  position: relative;
  z-index: 2;
  padding: 20px 40px 32px;
  text-align: center;
}

.gassan-parking-card__label {
  margin: 0 0 3px;
  font-size: 0.78rem;
  line-height: 1.4;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: #6e6e6e;
}

.gassan-parking-card__title {
  margin: 0 0 18px;
  font-size: clamp(1rem, 2.5vw, 1.1rem);
  line-height: 1.25;
  font-weight: 400;
  letter-spacing: 0.03em;
  color: #12263d;
}

.gassan-parking-card__lead {
  margin: 0 0 20px;
}

.gassan-parking-card__lead p {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.9;
  color: #34485d;
}

.gassan-parking-card__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  text-align: left;
}

.gassan-parking-card__panel {
  background: rgba(255, 255, 255, 0.66);
  padding: 18px 18px 16px;
}

.gassan-parking-card__panelTitle {
  margin: 0 0 12px;
  font-size: 0.92rem;
  line-height: 1.4;
  letter-spacing: 0.08em;
  font-weight: 700;
  color: #12263d;
}

.gassan-parking-info {
  display: grid;
  gap: 10px;
  margin-bottom: 12px;
}
.gassan-parking-info__row {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 12px;
  align-items: start;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(18, 38, 61, 0.12);
}

.gassan-parking-info__label {
  font-size: 0.82rem;
  line-height: 1.7;
  font-weight: 500;
  color: #12263d;
}

.gassan-parking-info__value {
  font-size: 0.82rem;
  line-height: 1.7;
  color: #34485d;
}

.gassan-parking-card__text {
  margin: 0;
  font-size: 0.82rem;
  line-height: 1.8;
  color: #34485d;
}

.gassan-parking-gallery {
  margin-top: 20px;
}

.gassan-parking-gallery__map {
  margin-bottom: 14px;
  text-align: left;
}
.gassan-parking-gallery__image {
  width: 100%;
  display: block;
  height: auto;
}

.gassan-parking-gallery__image--map {
  aspect-ratio: 16 / 6;
  object-fit: cover;
}
.gassan-parking-gallery__image--photo {
  aspect-ratio: 16 / 12;
  object-fit: cover;
}
.gassan-parking-gallery__photos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.gassan-parking-gallery__item {
  text-align: left;
}

.gassan-parking-gallery__ph {
  width: 100%;
  aspect-ratio: 4 / 3;
  background: rgba(220, 228, 236, 0.9);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #8aa2bc;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.gassan-parking-gallery__ph--map {
  aspect-ratio: 16 / 7;
}

.gassan-parking-gallery__caption {
  margin: 8px 0 0;
  font-size: 0.78rem;
  line-height: 1.6;
  color: #34485d;
}

/* タブレット */
@media (max-width: 991.98px) {
  .gassan-parking-block {
    padding-top: 14px;
  }

  .gassan-parking-card__icon {
    top: 8px;
    left: 8px;
    width: 56px;
    height: 56px;
  }

  .gassan-parking-card__iconText {
    width: 44px;
    height: 44px;
    font-size: 0.66rem;
    border-radius: 12px;
  }

  .gassan-parking-card__content {
    padding: 18px 20px 24px;
  }

  .gassan-parking-card__label {
    font-size: 0.68rem;
  }

  .gassan-parking-card__title {
    margin-bottom: 14px;
    font-size: 1rem;
  }

  .gassan-parking-card__lead p {
    font-size: 0.8rem;
  }

  .gassan-parking-card__grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .gassan-parking-gallery__photos {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
  }
}

/* SP */
@media (max-width: 767.98px) {
  .gassan-parking-block {
    padding-top: 12px;
  }

  .gassan-parking-card {
    border-radius: 8px;
  }

  .gassan-parking-card__icon {
    top: 10px;
    left: 10px;
    width: 52px;
    height: 52px;
  }

  .gassan-parking-card__iconText {
    width: 38px;
    height: 38px;
    font-size: 0.58rem;
    border-radius: 10px;
  }

  .gassan-parking-card__content {
    padding: 18px 14px 18px;
  }

  .gassan-parking-card__label {
    margin-bottom: 4px;
    font-size: 0.68rem;
    letter-spacing: 0.14em;
  }

  .gassan-parking-card__title {
    margin-bottom: 12px;
    font-size: 1rem;
  }

  .gassan-parking-card__lead {
    margin-bottom: 14px;
  }

  .gassan-parking-card__lead p,
  .gassan-parking-card__text,
  .gassan-parking-info__label,
  .gassan-parking-info__value,
  .gassan-parking-gallery__caption {
    font-size: 0.74rem;
    line-height: 1.7;
  }

  .gassan-parking-card__panel {
    padding: 14px 12px 12px;
  }

  .gassan-parking-card__panelTitle {
    font-size: 0.84rem;
  }

  .gassan-parking-info__row {
    grid-template-columns: 92px 1fr;
    gap: 10px;
  }

  .gassan-parking-gallery {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .gassan-parking-gallery__ph {
    aspect-ratio: 16 / 10;
  }

  .gassan-parking-gallery__photos {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .gassan-parking-gallery__ph--map {
    aspect-ratio: 16 / 10;
  }
  .gassan-parking-gallery__map {
    width: 100%;
    overflow: visible;
  }

  .gassan-parking-gallery__map picture {
    display: block;
    width: 100%;
  }

  .gassan-parking-gallery__image--map {
    display: block;
    width: 100%;
    height: auto;
    max-height: none;
    aspect-ratio: auto;
    object-fit: contain;
  }
}

/* =========================================================
   FACILITY PAGE
========================================================= */
:root {
  --facility-bg: #f3f0ea;
  --facility-surface: #ffffff;
  --facility-text: #171717;
  --facility-muted: #6f6b63;
  --facility-line: rgba(23, 23, 23, 0.12);
  --facility-max: 1420px;
  --facility-left-w: 40%;
  --facility-gap: clamp(28px, 3vw, 56px);
  --facility-shadow: 0 24px 60px rgba(0, 0, 0, 0.1);
  --facility-radius: 5px;
}

body.facility-page {
  background: var(--facility-bg);
  color: var(--facility-text);
}

.facility-page-main {
  position: relative;
  z-index: 1;
}

/* =========================================================
  FACILITY HERO
========================================================= */

.facility-hero {
  position: relative;
  min-height: 72vh;
  overflow: hidden;
  background: #111;
  color: #fff;
}

.facility-hero__media,
.facility-hero__overlay {
  position: absolute;
  inset: 0;
}

.facility-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.facility-hero__overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.15) 100%
  );
}

.facility-hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 40px, 1280px);
  min-height: 72vh;
  margin: 0 auto;
  padding: 160px 0 70px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
}

.facility-hero__title {
  margin: 0;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(2.3rem, 3vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
}

@media (max-width: 768px) {
  .facility-hero,
  .facility-hero__inner {
    min-height: 64vh;
  }

  .facility-hero__inner {
    width: min(100% - 32px, 1280px);
    padding: 130px 0 54px;
  }

  .facility-hero__title {
    font-size: clamp(1.75rem, 8vw, 2.4rem);
    letter-spacing: 0.08em;
  }
}

.info-hero {
  position: relative;
  min-height: clamp(440px, 72vh, 860px);
  overflow: hidden;
  background: #cfc9bd;
}

.info-hero__media,
.info-hero__media img {
  width: 100%;
  height: 100%;
}

.info-hero__media {
  position: absolute;
  inset: 0;
}

.info-hero__media img {
  display: block;
  object-fit: cover;
}

.info-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(0, 0, 0, 0.46) 0%,
    rgba(0, 0, 0, 0.2) 35%,
    rgba(0, 0, 0, 0.04) 100%
  );
}

.info-hero__inner {
  position: relative;
  z-index: 2;
  width: min(calc(100% - 40px), var(--facility-max));
  margin: 0 auto;
  padding: clamp(140px, 56vh, 420px) 0 clamp(44px, 6vw, 72px);
  color: #fff;
}

.info-hero__eyebrow {
  display: inline-block;
  margin: 0 0 14px;
  font-size: 0.86rem;
  letter-spacing: 0.24em;
  color: rgba(255, 255, 255, 0.88);
}

.info-hero__title {
  margin: 0;
  font-size: clamp(4.9rem, 6vw, 7.2rem);
  line-height: 0.94;
  letter-spacing: 0.08em;
  font-weight: 400;
}

.info-hero__title-ja {
  margin: 14px 0 0;
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  line-height: 1.9;
  letter-spacing: 0.24em;
}

.info-hero__lead {
  width: min(100%, 700px);
  margin: 20px 0 0;
  font-size: clamp(0.96rem, 1.5vw, 1.1rem);
  line-height: 2;
  letter-spacing: 0.1em;
  color: rgba(255, 255, 255, 0.9);
}

/* =========================================================
   INTRO
========================================================= */
.facility-intro {
  padding: 0;
}

.facility-intro__inner {
  width: min(100%, 860px);
  margin: 0 auto;
  text-align: center;
  padding-top: 50px;
}

.facility-intro__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #2d2d2d;
}

.facility-intro__eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.facility-intro__eyebrow.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.facility-intro__eyebrow_e {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #aeaeae;
}

.facility-intro__eyebrow_e::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.facility-intro__eyebrow_e.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.facility-intro__title {
  margin: 0;
  font-size: clamp(1.3rem, 1.8vw, 2rem);
  line-height: 0.8;
  letter-spacing: 0.2em;
  font-weight: 400;
}

.facility-intro__title_e {
  margin: 0;
  font-size: clamp(1.3rem, 1.8vw, 2rem);
  line-height: 1.3;
  letter-spacing: 0.2em;
  font-weight: 400;
}

.facility-intro__copy {
  margin: 20px auto 70px;
  width: min(100%, 820px);
  font-size: clamp(0.7rem, 1.2vw, 1rem);
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: #43413b;
}

.facility-intro__copy_e {
  margin: 20px auto 70px;
  width: min(100%, 820px);
  font-size: clamp(0.7rem, 1.2vw, 1rem);
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: #aeaeae;
}

.info-intro {
  padding: 0;
}

.info-intro__inner {
  width: min(100%, 860px);
  margin: 0 auto;
  text-align: center;
  padding-top: 50px;
}

.info-intro__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #2d2d2d;
}

.info-intro__eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.info-intro__eyebrow.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.info-intro__title {
  margin: 0;
  font-size: clamp(1.5rem, 1.8vw, 2rem);
  line-height: 0.8;
  letter-spacing: 0.2em;
  font-weight: 400;
}

.info-intro__copy {
  margin: 20px auto 70px;
  width: min(100%, 820px);
  font-size: clamp(0.85rem, 1.2vw, 1rem);
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: #43413b;
}

/* =========================================================
   SECTIONS
========================================================= */
.facility-sections {
  padding: 0px;
}

.facility-section {
  width: 100%;
}

.facility-section:first-child {
  border-top: none;
}

.facility-section__inner {
  width: min(100%, var(--facility-max));
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(280px, var(--facility-left-w)) minmax(0, 1fr);
  gap: var(--facility-gap);
  align-items: start;
  padding: clamp(34px, 4vw, 48px) 24px clamp(88px, 8vw, 128px);
}

.facility-section--1 {
  background: #f6f1e8;
}

.facility-section--2 {
  background: #eef4f1;
}

.facility-section--3 {
  background: #f4f2f7;
}

.facility-section--4 {
  background: #eef2f8;
}

.facility-section__info {
  padding: 0 110px 0 50px;
  position: sticky;
  top: 118px;
  align-self: start;
  margin-left: 10px;
}

.facility-section__info-inner {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  transition:
    opacity 0.8s cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 0.8s cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

.facility-section__info-inner.is-fading-out {
  opacity: 0;
  transform: translate3d(0, -48px, 0);
}

.facility-section__label {
  position: relative;
  display: inline-block;
  margin: 0 0 58px;
  padding-bottom: 12px;
  font-size: 0.8rem;
  letter-spacing: 0.24em;
  color: #548636;
}

.facility-section__label::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 92px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.7s ease 0.12s;
}

.facility-section__label.is-visible::after {
  transform: scaleX(1);
}

.facility-section__title {
  margin: 0 0 18px;
  font-size: clamp(1rem, 1.4vw, 1.3rem);
  line-height: 1.5;
  font-weight: 400;
  letter-spacing: 0.08em;
}

.facility-section__desc {
  padding-right: 25%;
  margin: 0;
  font-weight: 350;
  font-size: 0.74rem;
  line-height: 1.55;
  letter-spacing: 0.06em;
  color: #35332f;
}

.facility-section__gallery {
  display: grid;
  grid-template-columns: repeat(1, minmax(0, 1fr));
  gap: clamp(18px, 5vw, 78px);
}

.facility-card {
  display: block;
  min-width: 0;
}

.facility-card__media {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: var(--facility-radius);
  background: linear-gradient(135deg, #d8d2c8 0%, #c5beb3 100%);
  box-shadow: var(--facility-shadow);
}

.facility-card__media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform 1.1s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.facility-card:hover .facility-card__media img {
  transform: scale(1.04);
}

.facility-card__media.is-placeholder::before {
  content: 'IMAGE';
  position: absolute;
  inset: 50% auto auto 50%;
  transform: translate(-50%, -50%);
  font-size: 0.82rem;
  letter-spacing: 0.26em;
  color: rgba(30, 30, 27, 0.45);
}

.facility-card__caption {
  margin-top: 14px;
  padding-inline: 2px;
}

.facility-card__title {
  margin: 0;
  font-size: 1rem;
  line-height: 1.65;
  letter-spacing: 0.08em;
  font-weight: 400;
}

.facility-card__text {
  margin: 8px 0 0;
  font-size: 0.95rem;
  line-height: 1.95;
  letter-spacing: 0.05em;
  color: #4b4943;
}

/* =========================================================
   FACILITY + SNOW REVEAL
========================================================= */
body.facility-page [data-snow-reveal='text'] {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity 900ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 900ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

body.facility-page [data-snow-reveal='media'] {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  transition:
    opacity 900ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 900ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

body.facility-page [data-snow-reveal].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
  body.facility-page [data-snow-reveal='text'],
  body.facility-page [data-snow-reveal='media'] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .facility-card:hover .facility-card__media img {
    transform: none;
  }
}

/* =========================================================
   TABLET
========================================================= */
@media (max-width: 1080px) {
  .facility-section {
    grid-template-columns: 320px minmax(0, 1fr);
  }

  .facility-section__gallery {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   SP
========================================================= */
@media (max-width: 767.98px) {
  .facility-hero {
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    overflow: hidden;
  }

  .facility-hero__inner {
    width: calc(100% - 32px);
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    padding-top: 138px;
    padding-bottom: 30px;
  }

  .facility-hero__title {
    font-size: clamp(1.9rem, 2vw, 3rem);
    line-height: 0.98;
  }

  .facility-hero__title-ja {
    margin-top: 10px;
    letter-spacing: 0.18em;
  }

  .facility-hero__lead {
    margin-top: 16px;
    line-height: 1.95;
  }

  .facility-intro {
    padding-left: 16px;
    padding-right: 16px;
  }

  .facility-intro__eyebrow {
    padding-bottom: 8px;
  }

  .facility-intro__eyebrow {
    padding-bottom: 8px;
  }
  .facility-intro__copy {
    line-height: 1.5;
    text-align: left;
    width: 85%;
    margin-bottom: 50px;
  }

  .facility-card__title {
    text-align: center;
    padding: 0 0 30px;
    font-weight: 300;
  }

  .card_title_se {
    padding: 0;
  }

  .facility-card__text {
    text-align: left;
    font-size: 0.79rem;
    padding-bottom: 15px;
  }

  .info-intro {
    padding-left: 16px;
    padding-right: 16px;
  }

  .info-intro__eyebrow {
    padding-bottom: 8px;
  }

  .info-intro__eyebrow {
    padding-bottom: 8px;
  }
  .info-intro__copy {
    line-height: 1.5;
    text-align: center;
    width: 95%;
    margin-bottom: 50px;
  }

  .facility-sections {
    padding-bottom: 0;
  }

  .facility-section {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 3px 0 1px;
  }

  .facility-section__info-inner,
  .facility-section__info-inner.is-fading-out {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .facility-section__title {
    margin-bottom: 10px;
  }

  .facility-section__gallery {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .facility-card__media {
    border-radius: 5px;
  }
  .facility-section__inner {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 34px 16px 58px;
  }

  .facility-section__info {
    position: static;
    top: auto;
    align-self: auto;
    margin-left: 0;
    padding-right: 0;
    padding: 0 10px 0 10px;
  }
  .facility-section__desc {
    padding-right: 5%;
  }
  .facility-section__info-inner {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .facility-section__gallery {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .facility-section__label {
    margin-bottom: 18px;
  }

  .info-hero {
    min-height: 58vh;
  }

  .info-hero__inner {
    width: calc(100% - 32px);
    padding-top: 138px;
    padding-bottom: 30px;
  }

  .info-hero__title {
    font-size: clamp(2.5rem, 14vw, 4rem);
    line-height: 0.98;
  }

  .info-hero__title-ja {
    margin-top: 10px;
    letter-spacing: 0.18em;
  }

  .info-hero__lead {
    margin-top: 16px;
    line-height: 1.95;
  }
}

/* =========================================================
   FACILITY CASHLESS
========================================================= */

.facility-card--cashless {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(320px, 1.08fr);
  gap: clamp(22px, 3vw, 44px);
  align-items: center;
}

.facility-card--cashless .facility-card__media {
  order: 2;
}

.facility-card--cashless .facility-card__caption {
  order: 1;
  margin-top: 0;
  padding: clamp(18px, 2vw, 28px) 0;
}

.facility-cashless {
  margin-top: clamp(18px, 2vw, 28px);
}

.facility-cashless__label {
  margin: 0 0 14px;
  font-size: 0.78rem;
  line-height: 1.7;
  letter-spacing: 0.12em;
  color: #6a665f;
}

.facility-cashless__logos {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.facility-cashless__logo {
  min-height: 50px;
  padding: 1px 1px;
  border: 1px solid rgb(23 23 23 / 0%);
  border-radius: 2px;
  background: rgb(255 255 255 / 42%);
  display: flex;
  align-items: center;
  justify-content: center;
}

.facility-cashless__logo img {
  max-width: 100%;
  max-height: 30px;
  object-fit: contain;
  display: block;
}

@media (max-width: 767.98px) {
  .facility-card--cashless {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .facility-card--cashless .facility-card__media {
    order: 1;
  }

  .facility-card--cashless .facility-card__caption {
    order: 2;
    padding: 0 2px;
  }

  .facility-cashless__logos {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }

  .facility-cashless__logo {
    min-height: 48px;
    padding: 8px 10px;
  }

  .facility-cashless__logo img {
    max-height: 24px;
  }
}
.facility-card--cashless .facility-card__media {
  aspect-ratio: auto;
  height: 100%;
  min-height: 420px;
}

/* =========================================================
   FACILITY RESTAURANT MENU FEATURE
========================================================= */

.facility-menu-feature {
  width: 100%;
  margin-top: clamp(18px, 1vw, 36px);
  overflow: visible;
}

.facility-menu-feature__top {
  display: grid;
  grid-template-columns: minmax(240px, 0.82fr) minmax(0, 1.18fr);
  align-items: center;
  gap: clamp(28px, 5vw, 76px);
}

.facility-menu-feature__content {
  position: relative;
  z-index: 3;
}

.facility-menu-feature__eyebrow {
  margin: 0 0 28px;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(1.7rem, 3.2vw, 3.8rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
  color: rgba(23, 23, 23, 0.82);
}

.facility-menu-feature__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.facility-menu-feature__item {
  width: min(100%, 420px);
  appearance: none;
  border: none;
  border-bottom: 1px solid rgba(23, 23, 23, 0.16);
  background: transparent;
  padding: 14px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  text-align: left;
  cursor: pointer;
  color: #24221f;
}

.facility-menu-feature__item span {
  font-size: clamp(0.92rem, 1.12vw, 1.05rem);
  line-height: 1.6;
  letter-spacing: 0.12em;
}

.facility-menu-feature__item small {
  font-size: 0.68rem;
  letter-spacing: 0.18em;
  color: #548636;
  opacity: 0.78;
}

.facility-menu-feature__item:hover span {
  transform: translateX(8px);
}

.facility-menu-feature__item span {
  transition: transform 0.32s ease;
}

.facility-menu-feature__image {
  position: relative;
  z-index: 1;
  width: 58vw;
  margin-right: calc(50% - 50vw);
  overflow: hidden;
}

.facility-menu-feature__image img {
  width: 118%;
  max-width: none;
  height: auto;
  display: block;
  object-fit: contain;
  transform: translateX(-1%);
}

.facility-menu-feature__desc {
  width: min(100%, 720px);
  margin-top: clamp(30px, 4vw, 56px);
  font-size: clamp(0.82rem, 1vw, 0.95rem);
  line-height: 2.05;
  letter-spacing: 0.08em;
  color: #4b4943;
}

/* =========================================================
   MENU MODAL - BRUSH UP
========================================================= */

body.is-menu-modal-open {
  overflow: hidden;
}

.facility-menu-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 48px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
}

.facility-menu-modal.is-open {
  opacity: 1;
  pointer-events: auto;
}

.facility-menu-modal__overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      circle at 70% 20%,
      rgba(255, 255, 255, 0.18),
      transparent 34%
    ),
    rgba(15, 15, 15, 0.62);
  backdrop-filter: blur(12px);
}

.facility-menu-modal__body {
  position: relative;
  z-index: 2;
  width: min(92vw, 760px);
  max-height: min(86vh, 860px);
  padding: clamp(18px, 3vw, 34px);
  border-radius: 4px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 1),
    rgba(247, 244, 238, 1)
  );
  box-shadow:
    0 40px 120px rgba(0, 0, 0, 0.34),
    0 1px 0 rgba(255, 255, 255, 0.7) inset;
  transform: translateY(18px) scale(0.96);
  opacity: 0;
  transition:
    transform 0.42s cubic-bezier(0.22, 0.61, 0.36, 1),
    opacity 0.42s ease;
}

.facility-menu-modal.is-open .facility-menu-modal__body {
  transform: translateY(0) scale(1);
  opacity: 1;
}

.facility-menu-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 3;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: #24221f;
  font-size: 0;
  cursor: pointer;
}

.facility-menu-modal__close::before,
.facility-menu-modal__close::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 17px;
  height: 1px;
  background: currentColor;
}

.facility-menu-modal__close::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.facility-menu-modal__close::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.facility-menu-modal__name {
  position: relative;
  margin: 0 54px 18px 0;
  padding-bottom: 14px;
  font-size: clamp(1rem, 1.6vw, 1.25rem);
  line-height: 1.6;
  letter-spacing: 0.14em;
  color: #24221f;
}

.facility-menu-modal__name::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: rgba(84, 134, 54, 0.8);
}

.facility-menu-modal__image {
  width: 100%;
  max-height: 70vh;
  object-fit: contain;
  display: block;
  border-radius: 3px;
  background: #f3f0ea;
}

.facility-menu-feature__item--plain {
  cursor: default;
  opacity: 0.72;
  cursor: default;
}

.facility-menu-feature__item--plain small {
  color: rgba(32, 51, 58, 0.38);
}

.facility-menu-feature__item--plain,
.facility-menu-feature__item--plain:hover,
.facility-menu-feature__item--plain:focus,
.facility-menu-feature__item--plain:focus-visible,
.facility-menu-feature__item--plain span,
.facility-menu-feature__item--plain small,
.facility-menu-feature__item--plain:hover span,
.facility-menu-feature__item--plain:hover small {
  transform: none !important;
  translate: none !important;
  transition: none !important;
}

@media (max-width: 767.98px) {
  .facility-menu-modal {
    padding: 14px;
  }

  .facility-menu-modal__body {
    width: 94vw;
    padding: 16px;
  }

  .facility-menu-modal__close {
    top: 10px;
    right: 10px;
    width: 38px;
    height: 38px;
  }

  .facility-menu-modal__name {
    margin-right: 46px;
    font-size: 0.95rem;
  }

  .facility-menu-modal__image {
    max-height: 68vh;
  }
}

/* =========================================================
   SP
========================================================= */

@media (max-width: 767.98px) {
  .facility-menu-feature {
    overflow: hidden;
  }

  .facility-menu-feature__top {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .facility-menu-feature__content {
    order: 1;
    position: relative;
    z-index: 2;
  }

  .facility-menu-feature__image {
    order: 2;
    width: 150%;
    max-width: none;
    margin-left: 0;
    margin-right: -50%;
    overflow: visible;
  }

  .facility-menu-feature__image img {
    display: block;
    width: 100%;
    max-width: none;
    height: auto;
    transform: translateX(12%);
  }

  .facility-menu-feature__eyebrow {
    font-size: clamp(1.6rem, 8vw, 2.4rem);
    margin-bottom: 20px;
  }

  .facility-menu-feature__item {
    width: 100%;
    padding: 12px 0;
  }

  .facility-menu-feature__desc {
    margin-top: 24px;
    font-size: 0.8rem;
    line-height: 1.9;
  }
}

/*=====================================================
   THE ESSENCE OF GASSAN
   このページ専用 / 軽量版
========================================================= */
.page-essence {
  --essence-text: #f5f7fb;
  --essence-muted: rgba(245, 247, 251, 0.74);
  --essence-line: rgba(255, 255, 255, 0.1);
  --essence-panel: rgba(255, 255, 255, 0.05);
  --essence-shadow: 0 12px 36px rgba(0, 0, 0, 0.22);
  --essence-radius-lg: 5px;
  --essence-radius-md: 5px;
}

.page-essence .site-main,
.page-essence .snow-page-main,
.page-essence .facility-page-main,
.page-essence .essence-main {
  background:
    radial-gradient(
      circle at top right,
      rgba(116, 170, 255, 0.08),
      transparent 28%
    ),
    linear-gradient(180deg, #09111a 0%, #101827 36%, #0a1220 100%);
  color: var(--essence-text);
  overflow: clip;
}

/* =========================================================
   reveal
========================================================= */
.js-essence-reveal,
.js-essence-split .char {
  opacity: 0;
  will-change: transform, opacity;
}

.js-essence-reveal {
  transition:
    opacity 1.15s cubic-bezier(0.16, 1, 0.3, 1),
    transform 3.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.js-essence-reveal[data-essence-reveal='up'] {
  transform: translate3d(0, 56px, 0);
}

.js-essence-reveal[data-essence-reveal='left'] {
  transform: translate3d(-234px, 0, 0);
}

.js-essence-reveal[data-essence-reveal='right'] {
  transform: translate3d(54px, 0, 0);
}

.js-essence-reveal[data-essence-reveal='fade'] {
  transform: translate3d(0, 0, 0);
}

.js-essence-reveal.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.js-essence-split {
  overflow: clip;
}

.js-essence-split .char {
  display: inline-block;
  transform: translate3d(0, 0.9em, 0);
  transition:
    opacity 0.58s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.68s cubic-bezier(0.22, 1, 0.36, 1);
}

.js-essence-split.is-visible .char {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* essence-band の文字だけ、その場で順番にフワッと */
.essence-band__title--fadechars .char {
  opacity: 0;
  transform: scale(0.96);
  transition:
    opacity 0.72s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.72s cubic-bezier(0.22, 1, 0.36, 1);
}

.essence-band__title--fadechars.is-visible .char {
  opacity: 1;
  transform: scale(1);
}

/* =========================================================
   common width
========================================================= */
.essence-intro__inner,
.essence-feature__inner,
.essence-wide-panel__inner,
.essence-journey__inner,
.essence-closing__inner,
.essence-band__inner {
  width: min(1680px, calc(100% - 40px));
  margin: 0 auto;
}

/* =========================================================
   HERO VIDEO
========================================================= */
.essence-hero-video {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
  background: #05070b;
  color: #fff;
}

.essence-hero-video__media,
.essence-hero-video__video {
  position: absolute;
  inset: 0;
}

.essence-hero-video__media {
  overflow: hidden;
}

.essence-hero-video__video {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center center;
  transform: scale(1.02);
  filter: brightness(0.86) contrast(1.01);
}

.essence-hero-video__video--sp {
  display: none;
}

.essence-hero-video__inner {
  position: relative;
  z-index: 2;
  min-height: 100svh;
  width: min(100% - 32px, 1200px);
  margin: 0 auto;
  display: grid;
  place-items: center;
  text-align: center;
  padding: 140px 0 88px;
}

.essence-hero-video__heading {
  display: grid;
  gap: 10px;
  justify-items: center;
}

.essence-hero-video__eyebrow {
  margin: 0;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.28em;
  color: rgba(255, 255, 255, 0.8);
}

.essence-hero-video__title {
  margin: 0;
  font-size: clamp(34px, 4.2vw, 64px);
  line-height: 1.08;
  letter-spacing: 0.1em;
  font-weight: 500;
  text-wrap: balance;
  text-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);
}

.essence-hero-video__title.js-essence-reveal {
  opacity: 0;
  transform: scale(0.985);
  transition:
    opacity 2.4s cubic-bezier(0.22, 1, 0.36, 1),
    transform 3.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.essence-hero-video__title.js-essence-reveal.is-visible {
  opacity: 1;
  transform: scale(1);
}

.essence-hero-video__scroll {
  position: absolute;
  left: 50%;
  bottom: 28px;
  transform: translateX(-50%);
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.essence-hero-video__scroll-line {
  display: block;
  width: 1px;
  height: 72px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 255, 255, 0.86) 100%
  );
  animation: essenceHeroScrollLine 2.1s ease-in-out infinite;
}

.essence-hero-video__scroll-text {
  font-size: 10px;
  letter-spacing: 0.3em;
  color: rgba(255, 255, 255, 0.68);
}

@keyframes essenceHeroScrollLine {
  0% {
    transform: scaleY(0.35);
    transform-origin: top;
    opacity: 0.35;
  }

  50% {
    transform: scaleY(1);
    transform-origin: top;
    opacity: 1;
  }

  100% {
    transform: scaleY(0.35);
    transform-origin: top;
    opacity: 0.35;
  }
}

@media (max-width: 767.98px) {
  .essence-hero-video__inner {
    width: min(100% - 24px, 1200px);
    padding: 124px 0 78px;
  }

  .essence-hero-video__video--pc {
    display: none !important;
  }

  .essence-hero-video__video--sp {
    display: block !important;
  }

  .essence-hero-video__eyebrow {
    margin-bottom: 14px;
    font-size: 11px;
    letter-spacing: 0.22em;
  }

  .essence-hero-video__title {
    font-size: clamp(28px, 9.4vw, 42px);
    letter-spacing: 0.08em;
  }

  .essence-hero-video__scroll {
    bottom: 22px;
  }

  .essence-hero-video__scroll-line {
    height: 56px;
  }
}

/* =========================================================
   intro
========================================================= */
.essence-intro {
  position: relative;
  padding: clamp(72px, 9vw, 128px) 0 clamp(40px, 6vw, 80px);
}

.essence-intro__eyebrow,
.essence-feature__eyebrow,
.essence-band__eyebrow,
.essence-wide-panel__eyebrow,
.essence-journey__eyebrow,
.essence-closing__eyebrow {
  display: inline-block;
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: rgba(255, 255, 255, 0.72);
}

.essence-intro__title {
  margin: 0;
  font-size: clamp(40px, 5.4vw, 92px);
  line-height: 1.52;
  letter-spacing: 0.02em;
}

.essence-feature__title,
.essence-band__title,
.essence-wide-panel__title,
.essence-journey__title,
.essence-closing__title {
  margin: 0;
  font-size: clamp(40px, 5.4vw, 92px);
  line-height: 1.12;
  letter-spacing: 0.02em;
}

.essence-intro__copy,
.essence-feature__copy p,
.essence-wide-panel__text p,
.essence-journey__copy p,
.essence-closing__text {
  font-size: clamp(12px, 1.35vw, 18px);
  line-height: 2;
  color: var(--essence-muted);
}

.essence-intro__copy {
  max-width: 820px;
  margin-top: 26px;
}

@media (max-width: 767.98px) {
  .essence-feature__eyebrow,
  .essence-closing__eyebrow {
    margin: 20px 0 0;
  }
}

/* =========================================================
   feature
========================================================= */
.essence-feature {
  position: relative;
  padding: 0 0 clamp(88px, 10vw, 150px);
}

.essence-feature__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: center;
}

.essence-feature--reverse .essence-feature__copy {
  order: 1;
}

.essence-feature--reverse .essence-feature__visual {
  order: 2;
}

.essence-feature__hero,
.essence-feature__card {
  overflow: hidden;
  border-radius: var(--essence-radius-lg);
  box-shadow: var(--essence-shadow);
  background: rgba(255, 255, 255, 0.04);
}

.essence-feature__hero img,
.essence-feature__card img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.essence-feature__hero img {
  aspect-ratio: 4 / 5;
}

.essence-feature__lead,
.essence-wide-panel__lead,
.essence-journey__lead {
  max-width: 760px;
  margin: 18px 0 0;
  font-size: clamp(18px, 2vw, 28px);
  line-height: 1.6;
  color: #fff;
}

.essence-feature__copy p + p,
.essence-wide-panel__text p + p,
.essence-journey__copy p + p {
  margin-top: 1.2em;
}

.essence-feature__visual--stack {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}

.essence-feature__card--large img {
  aspect-ratio: 4 / 5;
}

.essence-feature__card--small {
  width: min(62%, 360px);
  margin-left: auto;
}

.essence-feature__card--small img {
  aspect-ratio: 4 / 3;
}

/* =========================================================
   band
========================================================= */
.essence-band {
  position: relative;
  width: 100%;
  margin: 0 0 clamp(72px, 10vw, 140px);
  min-height: clamp(560px, 102vh, 1120px);
  overflow: hidden;
  background: #0a1220;
}

.essence-band__media {
  position: absolute;
  inset: 0;
  z-index: 0;

  background-image: url('/assets/images/gassan_big.jpg');
  background-size: cover;
  background-position: center calc(50% + var(--essence-band-offset, 0px));
  background-repeat: no-repeat;

  will-change: background-position;
}

/*.essence-band__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(3, 7, 13, 0) 0%,
    rgba(3, 7, 13, 0) 44%,
    rgba(3, 7, 13, 0) 100%
  );
}*/

.essence-band__inner {
  position: relative;
  z-index: 2;
  min-height: inherit;
  display: grid;
  align-content: start;
  padding: clamp(40px, 15vw, 172px) 0;
}

.essence-band__title {
  max-width: 100vw;
}

@media (max-width: 767.98px) {
  .essence-band__media {
    background-size: auto 112%;
  }
}

/* =========================================================
   band（video版）
========================================================= 
.essence-band {
  position: relative;
  width: 100%;
  margin: 0 0 clamp(72px, 10vw, 140px);
  min-height: clamp(560px, 82vh, 920px);
  overflow: hidden;
  background: #0a1220;
}

.essence-band__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}


.essence-band__video {
  position: absolute;
  top: 50%;
  left: 50%;

  width: 120%;
  height: 120%;

  transform: translate(-50%, -50%) scale(1.05);

  object-fit: cover;

  pointer-events: none;
}

.essence-band__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(3, 7, 13, 0.18) 0%,
    rgba(3, 7, 13, 0.28) 44%,
    rgba(3, 7, 13, 0.76) 100%
  );
}


.essence-band__inner {
  position: relative;
  z-index: 2;
  min-height: inherit;
  display: grid;
  align-content: end;
  padding: clamp(40px, 6vw, 72px) 0;
}

.essence-band__title {
  max-width: 10ch;
}

*/

/* =========================================================
   wide panel
========================================================= */
.essence-wide-panel {
  position: relative;
  padding: 0 0 clamp(88px, 10vw, 150px);
}

.essence-wide-panel__head {
  margin-bottom: clamp(28px, 4vw, 56px);
}

.essence-wide-panel__body {
  display: grid;
  gap: clamp(26px, 3vw, 36px);
}

.essence-wide-panel__media {
  overflow: hidden;
  border-radius: var(--essence-radius-lg);
  box-shadow: var(--essence-shadow);
}

.essence-wide-panel__media img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 8;
  object-fit: cover;
}

/* =========================================================
   journey
========================================================= */
.essence-journey {
  position: relative;
  padding: 0 0 clamp(88px, 10vw, 150px);
}

.essence-journey__inner {
  margin-top: 100px;
  display: grid;
  grid-template-columns: 0.84fr 1.16fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: center;
}

.essence-journey__gallery {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: clamp(16px, 2vw, 24px);
  align-items: start;
}

.essence-journey__media {
  overflow: hidden;
  border-radius: var(--essence-radius-md);
  box-shadow: var(--essence-shadow);
}

.essence-journey__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.essence-journey__media--tall img {
  aspect-ratio: 4 / 5;
}

.essence-journey__media--wide img {
  aspect-ratio: 4 / 5;
}

/* =========================================================
   closing
========================================================= */
.essence-closing {
  position: relative;
  padding: clamp(72px, 15vw, 240px) 0 0;
}

.essence-closing__inner {
  text-align: center;
}

.essence-closing__title {
  max-width: 20ch;
  margin-left: auto;
  margin-right: auto;
}

.essence-closing__text {
  max-width: 760px;
  margin: 24px auto 0;
}

.essence-expand-gallery__content {
  position: relative;
  z-index: 2;
  width: min(980px, calc(100% - 40px));
  height: 100%;
  margin-left: max(24px, 8vw);
  margin-right: auto;
  display: grid;
  align-content: center;
  color: #fff;
  text-shadow: 0 3px 18px rgba(0, 0, 0, 0.48);

  opacity: var(--essence-gallery-text-progress, 0);
  transform: translate3d(
    0,
    calc(
      ((1 - var(--essence-gallery-text-progress, 0)) * 34px) -
        (var(--essence-gallery-out-progress, 0) * 80px)
    ),
    0
  );
  pointer-events: none;
}

/* =========================================================
   responsive
========================================================= */
@media (max-width: 991.98px) {
  .essence-feature__inner,
  .essence-journey__inner {
    grid-template-columns: 1fr;
  }

  .essence-feature--reverse .essence-feature__copy,
  .essence-feature--reverse .essence-feature__visual {
    order: initial;
  }

  .essence-journey__gallery {
    grid-template-columns: 1fr 1fr;
  }
}

.essence-hero-video__video--sp {
  display: none;
}

@media (max-width: 767.98px) {
  .essence-intro__inner,
  .essence-feature__inner,
  .essence-wide-panel__inner,
  .essence-journey__inner,
  .essence-closing__inner,
  .essence-band__inner {
    width: min(100% - 28px, 1280px);
  }

  .essence-hero-video__inner {
    width: min(100% - 24px, 1200px);
    padding: 124px 0 78px;
  }

  .essence-feature__visual {
    position: relative;
    left: 50%;
    width: 100vw;
    margin-left: -50vw;
  }

  .essence-feature__hero {
    margin: 0;
  }

  .essence-feature__hero img {
    width: 100vw;
    max-width: 100vw;
    display: block;
    border-radius: 0;
  }

  .essence-hero-video__eyebrow {
    margin-bottom: 14px;
    font-size: 11px;
    letter-spacing: 0.22em;
  }

  .essence-hero-video__title {
    font-size: clamp(28px, 9.4vw, 42px);
    letter-spacing: 0.08em;
  }

  .essence-hero-video__sub {
    margin-top: 20px;
    font-size: 14px;
    line-height: 1.9;
  }

  .essence-hero-video__scroll {
    bottom: 22px;
  }

  .essence-hero-video__scroll-line {
    height: 56px;
  }

  .essence-hero-video__heading {
    display: grid;
    gap: 10px;
    justify-items: center;
  }

  .essence-hero-video__video--pc {
    display: none !important;
  }

  .essence-hero-video__video--sp {
    display: block !important;
  }

  .essence-intro,
  .essence-feature,
  .essence-wide-panel,
  .essence-journey {
    padding-bottom: 72px;
  }

  .essence-closing {
    padding-bottom: 0;
  }

  .essence-intro__title {
    font-size: clamp(25px, 8vw, 48px);
    line-height: 2;
    text-align: center;
  }

  .essence-feature__title,
  .essence-band__title,
  .essence-wide-panel__title,
  .essence-journey__title,
  .essence-closing__title {
    font-size: clamp(25px, 7vw, 44px);
    line-height: 1;
  }

  .essence-feature__lead,
  .essence-wide-panel__lead,
  .essence-journey__lead {
    font-size: 17px;
  }

  .essence-feature__hero,
  .essence-feature__card,
  .essence-wide-panel__media,
  .essence-journey__media {
    border-radius: 0px;
  }

  .essence-feature__card--small {
    width: 100%;
  }

  .essence-journey__gallery {
    grid-template-columns: 1fr;
  }

  .js-essence-reveal[data-essence-reveal='left'],
  .js-essence-reveal[data-essence-reveal='right'] {
    transform: translate3d(0, 30px, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .js-essence-reveal,
  .js-essence-split .char {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }

  .essence-hero-video__scroll-line {
    animation: none;
  }

  .essence-hero-video__video {
    transform: none;
  }
}

/* =========================================================
   ESSENCE EXPAND VIDEO
========================================================= */
.essence-expand-video {
  position: relative;
  height: 150vh;
  background: transparent;
}

.essence-expand-video__sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  min-height: 100svh;
  overflow: hidden;
  background: transparent;
}

.essence-expand-video__media {
  position: absolute;
  left: 50%;
  top: 50%;
  width: calc(34vw + (100vw - 34vw) * var(--essence-expand-progress, 0));
  height: calc(
    19.125vw + (100vh - 19.125vw) * var(--essence-expand-progress, 0)
  );
  max-width: 100vw;
  max-height: 100vh;
  overflow: hidden;
  transform: translate3d(-50%, -50%, 0);
  background: rgba(255, 255, 255, 0.04);
}

.essence-expand-video__video,
.essence-expand-video__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.essence-expand-video__overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: var(--essence-expand-progress, 0);
  background: transparent;
}

.essence-expand-video__content {
  position: relative;
  z-index: 2;
  width: min(1280px, calc(100% - 40px));
  height: 100%;
  margin: 0 auto;
  display: grid;
  align-content: center;
  color: #fff;
  opacity: var(--essence-expand-text-progress, 0);
  transform: translate3d(
    0,
    calc(
      ((1 - var(--essence-expand-text-progress, 0)) * 34px) -
        (var(--essence-expand-out-progress, 0) * 80px)
    ),
    0
  );
  pointer-events: none;
}

.essence-expand-video__eyebrow {
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: rgba(83, 83, 83, 0.74);
}

.essence-expand-video__title {
  margin: 0;
  font-size: clamp(42px, 8vw, 112px);
  line-height: 1;
  letter-spacing: 0.02em;
  color: rgb(0 0 0 / 37%);
}

.essence-expand-video__lead {
  max-width: 1620px;
  margin: 22px 0 0;
  font-size: clamp(15px, 2vw, 28px);
  line-height: 1.6;
  color: rgb(0 0 0 / 37%);
}

.essence-expand-video__text {
  max-width: 620px;
  margin-top: 28px;
}

.essence-expand-video__text p {
  margin: 0;
  font-size: clamp(15px, 1.35vw, 18px);
  line-height: 1.5;
  color: rgb(0 0 0 / 65%);
}

.essence-expand-video__text p + p {
  margin-top: 0.8em;
}

@media (max-width: 767.98px) {
  .essence-expand-video {
    height: 220vh;
  }

  .essence-expand-video__media {
    width: calc(68vw + (100vw - 68vw) * var(--essence-expand-progress, 0));
    height: calc(
      38.25vw + (100svh - 38.25vw) * var(--essence-expand-progress, 0)
    );
  }

  .essence-expand-video__content {
    width: min(100% - 28px, 1280px);
    align-content: start;
    padding-top: clamp(120px, 24vw, 180px);
  }

  .essence-expand-video__eyebrow {
    margin: 200px 0 14px;
  }

  .essence-expand-video__title {
    font-size: clamp(42px, 16vw, 72px);
  }
}

/* =========================================================
   essence closing photo
========================================================= */
.essence-closing-photo {
  --closing-photo-width: 100vw; /* 写真の横幅 */
  --closing-photo-max-width: none; /* 最大幅 */
  --closing-photo-aspect: 16 / 9; /* アスペクト比 */
  width: min(var(--closing-photo-width), var(--closing-photo-max-width));
  margin: clamp(44px, 6vw, 88px) auto 0;
  overflow: hidden;
}

.essence-closing-photo img {
  display: block;
  width: 100%;
  aspect-ratio: var(--closing-photo-aspect);
  object-fit: cover;
}

/* =========================================================
   essence photo triptych
   3枚写真 / 両端画面幅 / 画像内パララックス
========================================================= */
.essence-photo-triptych {
  --triptych-top-space: clamp(72px, 9vw, 140px);
  --triptych-bottom-space: clamp(88px, 11vw, 160px);
  --triptych-aspect: 1 / 1; /* ここで比率変更 */
  --triptych-gap: clamp(8px, 1.2vw, 18px);
  --triptych-parallax-range: 172px;

  position: relative;
  width: 100%;
  padding: var(--triptych-top-space) 0 var(--triptych-bottom-space);
  overflow: clip;
}

.essence-photo-triptych__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--triptych-gap);
  width: 100vw;
  margin-left: calc(50% - 50vw);
}

.essence-photo-triptych__item {
  position: relative;
  aspect-ratio: var(--triptych-aspect);
  height: auto;
  margin: 0;
  overflow: hidden;
}

/* 3枚まとめて下から上げる */
.essence-photo-triptych__grid.js-essence-reveal[data-essence-reveal='up'] {
  transform: translate3d(0, 72px, 0);
  transition:
    opacity 1.15s cubic-bezier(0.16, 1, 0.3, 1),
    transform 2.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.essence-photo-triptych__grid.js-essence-reveal.is-visible {
  transform: translate3d(0, 0, 0);
}

.essence-photo-triptych__item img {
  display: block;
  width: 100%;
  height: calc(100% + var(--triptych-parallax-range));
  object-fit: cover;
  transform: translate3d(0, var(--triptych-y, 0px), 0) scale(1.03);
  will-change: transform;
}

.essence-sp-br {
  display: none;
}

@media (max-width: 767.98px) {
  .essence-photo-triptych {
    --triptych-top-space: 36px;
    --triptych-bottom-space: 72px;
    --triptych-aspect: 4 / 3;
    --triptych-gap: 25px;
    --triptych-parallax-range: 52px;
    --triptych-sp-width: 100vw; /* スマホの画像横幅 */
  }

  .essence-photo-triptych__grid {
    grid-template-columns: 1fr;
    width: var(--triptych-sp-width);
    margin-left: auto;
    margin-right: auto;
  }

  .essence-sp-br {
    display: block;
  }
}
/* =========================================================
   essence mountain / 山の魅力
========================================================= */
.essence-mountain {
  position: relative;
  padding: clamp(88px, 11vw, 160px) 0;
}

.essence-mountain__inner {
  width: min(1680px, calc(100% - 40px));
  margin: 0 auto;
}

/* 山の魅力：左広め / 右狭め */
.essence-mountain__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}

/* 食堂の風景：左狭め / 右広め */
.essence-lunch__layout {
  display: grid;
  grid-template-columns: minmax(320px, 0.92fr) minmax(0, 1.08fr);
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
  margin-top: clamp(92px, 12vw, 180px);
}

.essence-mountain__left,
.essence-lunch__left {
  display: grid;
  gap: clamp(16px, 20vw, 140px);
  min-width: 0;
}

.essence-mountain__right,
.essence-lunch__right {
  display: grid;
  gap: clamp(16px, 2vw, 26px);
  min-width: 0;
}

.essence-mountain__copy {
  max-width: 760px;
  padding-top: clamp(90px, 12vw, 270px);
  padding-bottom: clamp(9px, 7vw, 130px);
}

.essence-mountain__eyebrow,
.essence-lunch__eyebrow,
.essence-mountain-note__label {
  display: inline-block;
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: rgba(255, 255, 255, 0.72);
}

.essence-mountain__title {
  margin: 0;
  font-size: clamp(40px, 6vw, 79px);
  line-height: 1.12;
  letter-spacing: 0em;
  color: #fff;
}

.essence-lunch__title {
  margin: 0;
  font-size: clamp(28px, 3vw, 38px);
  line-height: 1.18;
  letter-spacing: 0.02em;
  color: #fff;
  font-weight: 300;
}

.essence-mountain__lead {
  max-width: 760px;
  margin: 18px 0 0;
  font-size: clamp(18px, 2vw, 28px);
  line-height: 1.6;
  color: #fff;
}

.essence-lunch__lead {
  max-width: 760px;
  margin: 16px 0 0;
  font-size: clamp(16px, 1.5vw, 21px);
  line-height: 1.7;
  color: #fff;
}

.essence-mountain__copy p,
.essence-lunch__copy p {
  margin: 1.2em 0 0;
  font-size: clamp(13px, 1.35vw, 18px);
  line-height: 2;
  color: var(--essence-muted, rgba(245, 247, 251, 0.74));
}

/* 左画面いっぱい動画 */
.essence-mountain__wide-video {
  position: relative;
  width: calc(100% + max(20px, (100vw - min(1680px, calc(100vw - 40px))) / 2));
  margin: 0 0 0
    calc(-1 * max(20px, (100vw - min(1680px, calc(100vw - 40px))) / 2));
  overflow: hidden;
  border-radius: 0 var(--essence-radius-lg, 5px) var(--essence-radius-lg, 5px) 0;
  box-shadow: var(--essence-shadow, 0 12px 36px rgba(0, 0, 0, 0.22));
  background: rgba(255, 255, 255, 0.04);
}

.essence-mountain__wide-video video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* 画像・動画共通 */
.essence-mountain__hero,
.essence-mountain__side-photo,
.essence-lunch__photo,
.essence-lunch__wide-video {
  overflow: hidden;
  margin: 0;
  /*padding-bottom: clamp(90px, 7vw, 130px);*/
  border-radius: var(--essence-radius-lg, 5px);
  box-shadow: var(--essence-shadow, 0 12px 36px rgba(0, 0, 0, 0.22));
  background: rgba(255, 255, 255, 0.04);
}

.essence-mountain__hero img,
.essence-mountain__side-photo img,
.essence-lunch__photo img,
.essence-lunch__wide-video video {
  display: block;
  width: 100%;
  object-fit: cover;
}

.essence-mountain__hero img,
.essence-lunch__photo img {
  aspect-ratio: 4 / 5;
}

.essence-mountain__side-photo img,
.essence-lunch__wide-video video {
  aspect-ratio: 16 / 9;
}

.essence-mountain-note__label {
  display: block;
  margin-bottom: 12px;
}

.essence-mountain-note__title {
  margin: 0;
  font-weight: 300;
  font-size: clamp(10px, 6vw, 20px);
  line-height: 1.28;
  color: #fff;
}

.essence-mountain-note__text {
  margin: 5px 0 0;
  font-size: clamp(12px, 1vw, 14px);
  line-height: 1.9;
  color: var(--essence-muted, rgba(245, 247, 251, 0.74));
}

/* 食堂コピーを右側に配置 */
.essence-lunch__copy--side {
  max-width: 760px;
  padding-top: clamp(44px, 14vw, 228px);
}

/* hoverできる端末だけ、軽く奥行き */
@media (hover: hover) {
  .essence-mountain__wide-video video,
  .essence-mountain__hero img,
  .essence-mountain__side-photo img,
  .essence-lunch__photo img,
  .essence-lunch__wide-video video {
    transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
  }

  .essence-mountain__wide-video:hover video,
  .essence-mountain__hero:hover img,
  .essence-mountain__side-photo:hover img,
  .essence-lunch__photo:hover img,
  .essence-lunch__wide-video:hover video {
    transform: scale(1.04);
  }
}

@media (max-width: 991.98px) {
  .essence-mountain__layout,
  .essence-lunch__layout {
    grid-template-columns: 1fr;
  }

  .essence-mountain__copy {
    max-width: none;
    padding-top: 0;
  }

  .essence-mountain__wide-video {
    width: 100%;
    margin: 0;
    border-radius: var(--essence-radius-lg, 5px);
  }

  .essence-mountain__hero img,
  .essence-mountain__side-photo img,
  .essence-lunch__photo img,
  .essence-mountain__wide-video video,
  .essence-lunch__wide-video video {
    aspect-ratio: 16 / 10;
  }
}

@media (max-width: 767.98px) {
  .essence-mountain {
    padding: 72px 0;
  }

  .essence-mountain__inner {
    width: min(100% - 28px, 1280px);
  }

  .essence-mountain__title {
    font-size: clamp(30px, 10vw, 56px);
  }

  .essence-lunch__title {
    font-size: clamp(20px, 8vw, 38px);
  }

  .essence-mountain__lead,
  .essence-lunch__lead {
    font-size: 17px;
  }

  .essence-lunch__left,
  .essence-mountain__left {
    gap: 1px;
  }
  .essence-mountain__wide-video {
    position: relative;
    left: 50%;
    width: 100vw;
    max-width: 100vw;
    margin-left: -50vw;
    margin-right: 0;
    border-radius: 0;
  }

  .essence-mountain__wide-video video {
    width: 100%;
    max-width: 100%;
    display: block;
  }

  .essence-mountain-note--between {
    margin-top: 18px;
    padding-top: 0;
  }

  .essence-mountain__hero {
    margin-bottom: 24px;
  }

  .essence-lunch__layout {
    display: grid;
  }

  .essence-lunch__right {
    display: contents;
  }

  .essence-lunch__copy--side {
    order: 1;
    padding-top: 0;
  }

  .essence-lunch__left {
    order: 2;
  }

  .essence-lunch__wide-video {
    order: 3;
  }

  .essence-lunch__wide-video {
    position: relative;
    left: 50%;
    width: 100vw;
    max-width: 100vw;
    margin-left: -50vw;
    margin-right: 0;
    border-radius: 0;
  }

  .essence-lunch__wide-video video {
    width: 100%;
    max-width: 100%;
    display: block;
  }
}
@media (min-width: 992px) {
  .essence-lunch__wide-video {
    position: relative;
    left: auto;
    width: calc(
      100% + max(20px, (100vw - min(1680px, calc(100vw - 40px))) / 2)
    );
    margin-right: 0;
    border-radius: 0 var(--essence-radius-lg, 5px) var(--essence-radius-lg, 5px)
      0;
  }

  .essence-lunch__wide-video video {
    width: 100%;
    display: block;
  }
}
/* =========================================================
   ESSENCE EXPAND GALLERY
========================================================= */
.essence-expand-gallery {
  position: relative;
  height: 380vh;
  background: transparent;
}

.essence-expand-gallery__sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  min-height: 100svh;
  overflow: hidden;
  background: transparent;
}

.essence-expand-gallery__media {
  position: absolute;
  left: 50%;
  top: 50%;
  width: calc(
    34vw + (100vw - 34vw) * var(--essence-gallery-expand-progress, 0)
  );
  height: calc(
    22.66vw + (100vh - 22.66vw) * var(--essence-gallery-expand-progress, 0)
  );
  max-width: 100vw;
  max-height: 100vh;
  overflow: hidden;
  transform: translate3d(-50%, -50%, 0);
  background: rgba(255, 255, 255, 0.04);
}

.essence-expand-gallery__image {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 1;
  overflow: hidden;
  z-index: 1;
  transform: translate3d(0, 100%, 0);
  transition: transform var(--essence-gallery-change-speed, 1.45s)
    cubic-bezier(0.22, 1, 0.36, 1);
}

.essence-expand-gallery__image.is-past {
  z-index: 2;
  transform: translate3d(0, 0, 0);
}

.essence-expand-gallery__image.is-active {
  z-index: 3;
  transform: translate3d(0, 0, 0);
}

.essence-expand-gallery__image picture,
.essence-expand-gallery__image img,
.essence-expand-gallery__image video {
  display: block;
  width: 100%;
  height: 100%;
}

.essence-expand-gallery__image picture {
  position: absolute;
  inset: 0;
}

.essence-expand-gallery__image img,
.essence-expand-gallery__image video {
  object-fit: cover;
}

.essence-expand-gallery__overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: var(--essence-gallery-overlay-progress, 0);
  background: rgba(3, 7, 13, 0.1);
}

.essence-expand-gallery__content {
  position: relative;
  z-index: 4;
  width: min(1280px, calc(100% - 40px));
  height: 100%;
  margin: 0 auto;
  display: grid;
  align-content: center;
  color: #fff;
  opacity: var(--essence-gallery-text-progress, 0);
  transform: translate3d(
    0,
    calc(
      ((1 - var(--essence-gallery-text-progress, 0)) * 34px) -
        (var(--essence-gallery-out-progress, 0) * 80px)
    ),
    0
  );
  pointer-events: none;
}

.essence-expand-gallery__eyebrow {
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: rgba(255, 255, 255, 0.74);
}

.essence-expand-gallery__title {
  margin: 0;
  font-size: clamp(42px, 8vw, 112px);
  line-height: 1;
  letter-spacing: 0.02em;
}

.essence-expand-gallery__lead {
  max-width: 820px;
  margin: 22px 0 0;
  font-size: clamp(18px, 2vw, 28px);
  line-height: 1.6;
}

.essence-expand-gallery__text {
  max-width: 820px;
  margin-top: 28px;
}

.essence-expand-gallery__text p {
  margin: 0;
  font-size: clamp(15px, 1.35vw, 18px);
  line-height: 2;
  color: rgba(255, 255, 255, 0.76);
}

.essence-expand-gallery__text p + p {
  margin-top: 1.2em;
}

@media (max-width: 767.98px) {
  .essence-expand-gallery {
    height: 280vh;
  }

  .essence-expand-gallery__media {
    width: calc(
      68vw + (100vw - 68vw) * var(--essence-gallery-expand-progress, 0)
    );
    height: calc(
      45.33vw + (100svh - 45.33vw) * var(--essence-gallery-expand-progress, 0)
    );
  }

  .essence-expand-gallery__content {
    width: min(100% - 28px, 1280px);
    align-content: start;
    padding-top: clamp(220px, 34vw, 280px);
  }

  .essence-expand-gallery__title {
    font-size: clamp(42px, 16vw, 72px);
  }

  .essence-expand-gallery__lead {
    font-size: 17px;
  }

  @media (max-width: 767.98px) {
    .essence-expand-gallery {
      --essence-gallery-change-speed: 1.05s;
    }
  }
}

/* =========================================================
   essence promo image
   intro と feature の間の大判画像
========================================================= */
.essence-promo-image {
  --essence-promo-width: 85vw; /* 画像の横幅：あとから調整 */
  --essence-promo-max-width: 1480px; /* 最大幅：あとから調整 */
  --essence-promo-aspect: 16 / 9; /* アスペクト比：あとから調整 */

  position: relative;
  padding: 0 0 clamp(72px, 9vw, 132px);
}

.essence-promo-image__inner {
  width: min(var(--essence-promo-width), var(--essence-promo-max-width));
  margin: 0 auto;
}

.essence-promo-image__figure {
  margin: 0;
  overflow: hidden;
  border-radius: var(--essence-radius-lg, 5px);
  box-shadow: var(--essence-shadow, 0 12px 36px rgba(0, 0, 0, 0.22));
  background: rgba(255, 255, 255, 0.04);
}

.essence-promo-image__figure img {
  display: block;
  width: 100%;
  aspect-ratio: var(--essence-promo-aspect);
  object-fit: cover;
}

.essence-promo-image__figure.js-essence-reveal[data-essence-reveal='up'] {
  transform: translate3d(0, 180px, 0);
  transition:
    opacity 1.15s cubic-bezier(0.16, 1, 0.3, 1),
    transform 5.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.essence-promo-image__figure.js-essence-reveal.is-visible {
  transform: translate3d(0, 0, 0);
}

@media (max-width: 767.98px) {
  .essence-promo-image {
    --essence-promo-width: 100vw;
    --essence-promo-aspect: 4 / 5;

    padding-bottom: 72px;
  }

  .essence-promo-image__figure {
    border-radius: 0;
  }
}

/* =========================================================
   essence promo image scroll zoom
========================================================= */
.essence-promo-image {
  --essence-promo-zoom-from: 1.34;
  --essence-promo-zoom-to: 1; /* 拡大したい場合 */
  /* --essence-promo-zoom-to: 0.92; */ /* 小さくしたい場合はこちら */
}

.essence-promo-image__figure {
  overflow: hidden;
}

.essence-promo-image__figure img {
  transform: scale(var(--essence-promo-zoom, var(--essence-promo-zoom-from)));
  transform-origin: center center;
  will-change: transform;
}

/* =========================================================
   ESSENCE PC / SP MEDIA SWITCH
========================================================= */

.essence-pc-media {
  display: block !important;
}

.essence-sp-media {
  display: none !important;
}

.essence-pc-media,
.essence-sp-media,
.essence-sp-media picture,
.essence-sp-media img {
  width: 100%;
  height: 100%;
}

.essence-sp-media img {
  object-fit: cover;
}

@media (max-width: 767.98px) {
  .essence-pc-media {
    display: none !important;
  }

  .essence-sp-media {
    display: block !important;
  }

  .essence-expand-gallery__image .essence-sp-media {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }

  .essence-expand-gallery__image .essence-pc-media {
    display: block !important;
    visibility: visible !important;
  }
}

/* =========================================================
  ACCESS PAGE
========================================================= */

.access-page {
  background: #fff;
  color: #222;
}

.access-page-main {
  background: #fff;
}

/* =========================================================
  HERO：FACILITY準拠
========================================================= */

.access-hero {
  position: relative;
  min-height: 72vh;
  overflow: hidden;
  background: #111;
  color: #fff;
}

.access-hero__media,
.access-hero__overlay {
  position: absolute;
  inset: 0;
}

.access-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.access-hero__overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.15) 100%
  );
}

.access-hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 40px, 1280px);
  min-height: 72vh;
  margin: 0 auto;
  padding: 160px 0 70px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
}

.access-hero__title {
  margin: 0;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(2.3rem, 3vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
}

/* =========================================================
  INTRO：FACILITY準拠
========================================================= */

.access-intro {
  padding: 0 20px;
}

.access-intro__inner {
  width: min(100%, 860px);
  margin: 0 auto;
  padding-top: 50px;
  text-align: center;
}

.access-intro__eyebrow,
.gassan-access__route-eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #2d2d2d;
}

.access-intro__eyebrow::after,
.gassan-access__route-eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.access-intro__eyebrow.is-visible::after,
.gassan-access__route-eyebrow.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.route-eyebrow {
  margin: 0 0 1px;
  padding-bottom: 5px;
}

.access-intro__title,
.gassan-access__route-title {
  margin: 0;
  font-size: clamp(1.1rem, 1.8vw, 2rem);
  line-height: 1.4;
  letter-spacing: 0.2em;
  font-weight: 400;
}

.access-intro__copy {
  width: min(100%, 820px);
  margin: 20px auto 70px;
  font-size: clamp(0.78rem, 1.2vw, 1rem);
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: #43413b;
}

/* =========================================================
  MAIN ACCESS
========================================================= */

.gassan-access {
  background: #fff;
  color: #222;
  padding: 0 20px clamp(90px, 10vw, 150px);
}

.gassan-access__inner {
  width: min(1480px, 100%);
  margin: 0 auto;
}

.gassan-access__top-layout {
  display: grid;
  grid-template-columns: minmax(260px, 0.68fr) minmax(560px, 1.32fr);
  gap: clamp(44px, 5.5vw, 90px);
  align-items: start;
}

.gassan-access__left,
.gassan-access__right {
  width: 100%;
}

@media (min-width: 987px) {
  .gassan-access__right {
    margin-top: 100px;
  }
}

.gassan-access__map-illust {
  max-width: 520px;
  margin: 0 auto;
}

.gassan-access__map-illust img {
  display: block;
  width: 100%;
  height: auto;
}

.gassan-access__road-video {
  width: 100%;
  margin-top: clamp(22px, 3vw, 36px);
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #111;
}

.gassan-access__road-video video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.gassan-access__google {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #f1f1f1;
}

.gassan-access__google iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  filter: grayscale(1) contrast(0.88) brightness(1.06);
}

.gassan-access__map-button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  width: 100%;
  min-height: 64px;
  margin-top: 22px;
  background: #2c2c2c;
  color: #fff;
  text-decoration: none;
  font-size: clamp(14px, 1.25vw, 18px);
  letter-spacing: 0.08em;
  transition: opacity 0.25s ease;
}

.gassan-access__map-button:hover {
  opacity: 0.82;
}

.gassan-access__basic-guide {
  margin-top: clamp(36px, 4vw, 58px);
}

.gassan-access__guide-block {
  padding: 24px 0 24px 50px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
}

.gassan-access__guide-block:first-child {
  border-top: 1px solid rgba(0, 0, 0, 0.18);
}

.gassan-access__guide-title {
  margin: 0 0 14px;
  font-size: clamp(1.1rem, 1.65vw, 1.55rem);
  font-weight: 400;
  letter-spacing: 0.1em;
}

.gassan-access__list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.gassan-access__list li {
  position: relative;
  padding-left: 1.2em;
  margin-top: 8px;
  font-size: clamp(0.85rem, 1.1vw, 1rem);
  line-height: 1.9;
  letter-spacing: 0.06em;
  color: #444;
}

.gassan-access__list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.9em;
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: #777;
}

/* =========================================================
  ROUTE SECTION
========================================================= */

.gassan-access__route-section {
  margin-top: clamp(90px, 10vw, 150px);
}

.gassan-access__route-head {
  margin-bottom: clamp(36px, 5vw, 64px);
  text-align: center;
}

.gassan-access__route-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(24px, 3vw, 42px);
}

.gassan-access__route-card {
  padding: clamp(26px, 3.8vw, 44px);
  border: 1px solid rgba(0, 0, 0, 0.13);
  background: #fff;
}

.gassan-access__route-card-title {
  margin: 0 0 24px;
  padding-bottom: 18px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.14);
  font-size: clamp(1.25rem, 2vw, 1.8rem);
  font-weight: 400;
  letter-spacing: 0.12em;
}

/* =========================================================
  ROUTE DIAGRAM
========================================================= */

.access-route-diagram {
  display: grid;
  grid-template-columns:
    minmax(108px, auto) 1fr minmax(138px, auto)
    70px minmax(86px, auto) 1fr minmax(118px, auto);
  align-items: stretch;
  gap: 0;
  margin: 26px 0 30px;
  border: 1px solid rgba(0, 0, 0, 0.16);
  background: #f0f0f0;
}

.access-route-diagram__stop,
.access-route-diagram__move {
  min-height: 66px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 12px 10px;
  font-size: 0.86rem;
  line-height: 1.55;
  letter-spacing: 0.06em;
}

.access-route-diagram__stop {
  background: #fff;
  color: #222;
}

.access-route-diagram__move {
  position: relative;
  background: #e6e6e6;
  color: #555;
  font-size: 0.76rem;
}

.access-route-diagram__move::after {
  content: '';
  position: absolute;
  right: -8px;
  top: 50%;
  z-index: 2;
  width: 16px;
  height: 16px;
  border-top: 1px solid rgba(0, 0, 0, 0.28);
  border-right: 1px solid rgba(0, 0, 0, 0.28);
  background: #e6e6e6;
  transform: translateY(-50%) rotate(45deg);
}

.access-route-diagram__move--walk {
  background: #f4f4f4;
}

.access-route-diagram__move--walk::after {
  background: #f4f4f4;
}

/* =========================================================
  TIMETABLE
========================================================= */

.access-time-tables {
  display: grid;
  gap: 22px;
}

.access-time-table-block {
  min-width: 0;
}

.access-time-table-title {
  margin: 0 0 10px;
  padding-left: 10px;
  border-left: 4px solid #d7d7d7;
  font-size: 0.95rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  color: #333;
}

.access-time-table-wrap {
  width: 100%;
  overflow-x: auto;
  border: 1px solid rgba(0, 0, 0, 0.13);
}

.access-time-table {
  width: 100%;
  min-width: 560px;
  border-collapse: collapse;
  font-size: 0.9rem;
  letter-spacing: 0.04em;
}

.access-time-table th,
.access-time-table td {
  padding: 14px 12px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  border-right: 1px solid rgba(0, 0, 0, 0.08);
  text-align: center;
  line-height: 1.55;
}

.access-time-table th {
  background: #e9e9e9;
  color: #333;
  font-weight: 400;
}

.access-time-table td:first-child {
  background: #f5f5f5;
  color: #333;
  white-space: nowrap;
}

.access-time-table tr:nth-child(even) td {
  background: #fafafa;
}

.access-time-table tr:last-child td {
  border-bottom: 0;
}

.access-time-table th:last-child,
.access-time-table td:last-child {
  border-right: 0;
}

.gassan-access__note {
  margin: 14px 0 0;
  font-size: 0.78rem;
  line-height: 1.8;
  letter-spacing: 0.04em;
  color: #777;
}

/* =========================================================
  REVEAL
========================================================= */

body.access-page [data-snow-reveal='text'] {
  opacity: 0;
  transform: translate3d(0, 18px, 0);
  transition:
    opacity 900ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 900ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

body.access-page [data-snow-reveal='media'] {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  transition:
    opacity 900ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 900ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

body.access-page [data-snow-reveal].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* =========================================================
  TABLET / SP
========================================================= */

@media (max-width: 980px) {
  .gassan-access__top-layout {
    display: flex;
    flex-direction: column;
    gap: 46px;
  }

  .gassan-access__right {
    order: 1;
  }

  .gassan-access__left {
    order: 2;
  }

  .gassan-access__map-illust {
    max-width: 100%;
    margin-top: clamp(36px, 8vw, 56px);
  }

  .gassan-access__route-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 767.98px) {
  .access-hero {
    min-height: 58vh;
  }

  .access-hero__inner {
    width: calc(100% - 32px);
    min-height: 58vh;
    padding-top: 138px;
    padding-bottom: 30px;
  }

  .access-hero__title {
    font-size: clamp(2rem, 2.2vw, 2.6rem);
    line-height: 1.05;
  }

  .access-intro {
    padding-left: 16px;
    padding-right: 16px;
  }

  .access-intro__copy {
    width: 85%;
    margin-bottom: 50px;
    line-height: 1.7;
    text-align: left;
  }

  .gassan-access {
    padding-left: 16px;
    padding-right: 16px;
    overflow: hidden;
  }

  .gassan-access__inner,
  .gassan-access__top-layout,
  .gassan-access__right,
  .gassan-access__left,
  .gassan-access__route-section,
  .gassan-access__route-grid,
  .gassan-access__route-card {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  .gassan-access__google {
    aspect-ratio: 4 / 3;
  }

  .gassan-access__map-button {
    min-height: 56px;
    margin-top: 18px;
    font-size: 0.86rem;
  }

  .gassan-access__basic-guide {
    margin-top: 30px;
  }

  .gassan-access__guide-block {
    padding: 20px 0;
  }

  .gassan-access__guide-title {
    font-size: 1rem;
  }

  .gassan-access__list li {
    font-size: 0.8rem;
    line-height: 1.75;
  }

  .gassan-access__route-section {
    margin-top: 64px;
  }

  .gassan-access__route-head {
    margin-bottom: 28px;
  }

  .gassan-access__route-grid {
    gap: 22px;
  }

  .gassan-access__route-card {
    padding: 20px 14px;
  }

  .gassan-access__route-card-title {
    margin-bottom: 16px;
    padding-bottom: 12px;
    font-size: 1.05rem;
  }

  .access-route-diagram {
    grid-template-columns: 1fr;
    margin: 16px 0 20px;
  }

  .access-route-diagram__stop,
  .access-route-diagram__move {
    min-height: 38px;
    padding: 8px 10px;
    font-size: 0.76rem;
    line-height: 1.35;
  }

  .access-route-diagram__move {
    min-height: 30px;
    font-size: 0.68rem;
  }

  .access-route-diagram__move::after {
    right: auto;
    top: auto;
    left: 50%;
    bottom: -8px;
    transform: translateX(-50%) rotate(135deg);
  }

  .access-time-tables {
    gap: 18px;
  }

  .access-time-table-title {
    margin-bottom: 8px;
    font-size: 0.82rem;
  }

  .access-time-table {
    min-width: 500px;
    font-size: 0.74rem;
  }

  .access-time-table th,
  .access-time-table td {
    padding: 8px 7px;
    line-height: 1.35;
  }

  .gassan-access__note {
    margin-top: 10px;
    font-size: 0.7rem;
  }
  .access-time-table-wrap {
    position: relative;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .access-time-table-wrap::after {
    content: '横にスクロールできます →';
    position: sticky;
    right: 10px;
    top: 10px;
    z-index: 5;
    display: inline-flex;
    float: right;
    margin-bottom: 8px;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(18, 32, 46, 0.78);
    color: #fff;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    white-space: nowrap;
    pointer-events: none;
    opacity: 1;
    transform: translateY(0);
    transition:
      opacity 0.35s ease,
      transform 0.35s ease;
  }

  .access-time-table-wrap.is-scrolled::after {
    opacity: 0;
    transform: translateY(-6px);
  }

  .access-time-table {
    min-width: 680px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.access-page [data-snow-reveal='text'],
  body.access-page [data-snow-reveal='media'] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
.access-time-table tr.is-weekend td {
  background: #f6eadf;
}

.access-time-table tr.is-weekend td:first-child {
  background: #f6eadf;
  font-weight: 500;
}

/* =========================================================
  STAY PAGE
========================================================= */

/* Page Hero
--------------------------------------------------------- */
.stay-hero {
  position: relative;
  min-height: 72vh;
  overflow: hidden;
  background: #111;
  color: #fff;
}

.stay-hero__media,
.stay-hero__overlay {
  position: absolute;
  inset: 0;
}

.stay-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.stay-hero__overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.15) 100%
  );
}

.stay-hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 40px, 1280px);
  min-height: 72vh;
  margin: 0 auto;
  padding: 160px 0 70px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
}

.stay-hero__title {
  margin: 0;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(2.3rem, 3vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
}

/* Main Dark Base
--------------------------------------------------------- */
.stay-page-main {
  background:
    radial-gradient(
      circle at top right,
      rgba(116, 170, 255, 0.08),
      transparent 28%
    ),
    linear-gradient(180deg, #09111a 0%, #101827 36%, #0a1220 100%);
  color: #f5f7fb;
}

/* Intro
--------------------------------------------------------- */
.stay-intro {
  position: relative;
  padding: clamp(54px, 7vw, 86px) 20px clamp(70px, 8vw, 110px);
  background: #aca5a5;
  overflow: hidden;
}

.stay-intro__inner {
  width: min(920px, 100%);
  margin: 0 auto;
  text-align: center;
}

.stay-intro__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #f5f7fb;
}

.stay-intro__eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: rgba(255, 255, 255, 0.72);
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.stay-intro__eyebrow.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.stay-intro__title {
  margin: 0;
  color: #f5f7fb;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: clamp(1.45rem, 2.2vw, 2rem);
  font-weight: 400;
  line-height: 1.7;
  letter-spacing: 0.16em;
}

.stay-intro__copy {
  margin: clamp(24px, 3vw, 34px) auto 0;
  max-width: 760px;
  color: rgba(245, 247, 251, 0.74);
  font-size: clamp(0.88rem, 1vw, 1rem);
  font-weight: 300;
  line-height: 2.1;
  letter-spacing: 0.08em;
}

/* Common Stay Section
--------------------------------------------------------- */
.stay-section {
  padding: clamp(72px, 10vw, 140px) 20px;
  background: transparent;
  color: #f5f7fb;
}

.stay-section__inner {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
  gap: clamp(34px, 6vw, 86px);
  align-items: center;
}

.stay-section__inner--reverse {
  grid-template-columns: minmax(360px, 0.92fr) minmax(0, 1.08fr);
}

.stay-section__inner--reverse .stay-section__media {
  order: 2;
}

.stay-section__inner--reverse .stay-section__content {
  order: 1;
}

.stay-section__media {
  position: relative;
  overflow: hidden;
  border-radius: 28px;
}

.stay-section__media::before {
  content: '';
  display: block;
  padding-top: 68%;
}

.stay-section__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: auto;
  object-fit: cover;
}

.stay-section__content {
  position: relative;
}

.stay-section__eyebrow {
  margin: 0 0 16px;
  font-size: 12px;
  letter-spacing: 0.18em;
  color: rgba(245, 247, 251, 0.68);
}

.stay-section__title {
  margin: 0;
  font-family: 'Shippori Mincho', serif;
  font-size: clamp(30px, 4vw, 52px);
  font-weight: 500;
  line-height: 1.35;
  color: #f5f7fb;
}

.stay-section__lead {
  margin: clamp(20px, 2.4vw, 30px) 0 0;
  font-size: clamp(17px, 1.7vw, 22px);
  line-height: 1.85;
  color: #f5f7fb;
}

.stay-section__text {
  margin: 18px 0 0;
  font-size: 15px;
  line-height: 2.1;
  color: #f5f7fb;
}

.stay-points {
  margin: clamp(28px, 3.5vw, 42px) 0 0;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.stay-point {
  display: grid;
  grid-template-columns: 46px 1fr;
  gap: 16px;
  align-items: center;
  padding: 16px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.14);
}

.stay-point span {
  font-size: 12px;
  letter-spacing: 0.12em;
  color: rgba(245, 247, 251, 0.68);
}

.stay-point p {
  margin: 0;
  font-size: 14px;
  line-height: 1.8;
  color: #f5f7fb;
}

.stay-section__button {
  margin-top: clamp(28px, 3.5vw, 44px);
}

.gassan-text-link {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  color: #f5f7fb;
  font-size: 14px;
  letter-spacing: 0.08em;
  text-decoration: none;
}

.gassan-text-link span {
  width: 54px;
  height: 1px;
  background: currentColor;
  position: relative;
}

.gassan-text-link span::after {
  content: '';
  position: absolute;
  right: 0;
  top: 50%;
  width: 8px;
  height: 8px;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
}

/* Resort Inn Section : left edge image
--------------------------------------------------------- */
.stay-section--resort {
  padding-left: 0;
  padding-right: 20px;
}

.stay-section--resort .stay-section__inner {
  max-width: none;
  width: 100%;
  margin: 0;
  grid-template-columns: minmax(0, 52vw) minmax(360px, 520px);
  gap: clamp(34px, 6vw, 86px);
}

.stay-section--resort .stay-section__media {
  border-radius: 0 5px 5px 0;
}

/* Shizu Onsen Section : left text / right video
--------------------------------------------------------- */
.stay-section--shizu {
  padding: clamp(72px, 10vw, 140px) 0;
  background: transparent;
}

.stay-section--shizu .stay-section__inner,
.stay-section--shizu .stay-section__inner--reverse {
  max-width: none;
  width: 100%;
  margin: 0;
  display: grid;
  grid-template-columns:
    minmax(20px, 1fr)
    minmax(320px, 520px)
    clamp(34px, 6vw, 86px)
    minmax(0, 56vw);
  gap: 0;
  align-items: center;
}

.stay-section--shizu .stay-section__content,
.stay-section--shizu .stay-section__inner--reverse .stay-section__content {
  grid-column: 2;
  grid-row: 1;
  order: initial;
  align-self: center;
  padding: 0;
}

.stay-section--shizu .stay-section__media,
.stay-section--shizu .stay-section__inner--reverse .stay-section__media {
  grid-column: 4;
  grid-row: 1;
  order: initial;
  align-self: center;
  width: 100%;
  margin: 0;
  padding: 0;
  border-radius: 5px 0 0 5px;
  background: transparent;
  overflow: visible;
}

.stay-section--shizu .stay-section__media::before,
.stay-section--shizu .stay-section__media--video::before {
  display: none;
  content: none;
}

.stay-section--shizu .stay-section__media--video {
  aspect-ratio: auto;
  min-height: 0;
}

.stay-section--shizu .stay-section__media--video video {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  margin: 0;
  padding: 0;
  border-radius: 5px 0 0 5px;
}

/* STAY REVEAL MOTION
--------------------------------------------------------- */
.js-stay-reveal,
.js-stay-split .char {
  opacity: 0;
  will-change: transform, opacity;
}

.js-stay-reveal {
  transition:
    opacity 1.15s cubic-bezier(0.16, 1, 0.3, 1),
    transform 3.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.js-stay-reveal[data-stay-reveal='up'] {
  transform: translate3d(0, 56px, 0);
}

.js-stay-reveal[data-stay-reveal='left'] {
  transform: translate3d(-234px, 0, 0);
}

.js-stay-reveal[data-stay-reveal='right'] {
  transform: translate3d(54px, 0, 0);
}

.js-stay-reveal[data-stay-reveal='fade'] {
  transform: translate3d(0, 0, 0);
}

.js-stay-reveal.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.js-stay-split {
  overflow: clip;
}

.js-stay-split .char {
  display: inline-block;
  transform: translate3d(0, 0.9em, 0);
  transition:
    opacity 0.58s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.68s cubic-bezier(0.22, 1, 0.36, 1);
}

.js-stay-split.is-visible .char {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* SP
--------------------------------------------------------- */
.sp-only {
  display: none;
}

@media (max-width: 768px) {
  .sp-only {
    display: block;
  }

  .stay-hero,
  .stay-hero__inner {
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    overflow: hidden;
  }

  .stay-hero__inner {
    width: calc(100% - 32px);
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    padding-top: 138px;
    padding-bottom: 30px;
  }

  .stay-hero__title {
    font-size: clamp(1.75rem, 8vw, 2.4rem);
    letter-spacing: 0.08em;
  }

  .stay-intro {
    padding: 48px 20px 64px;
  }

  .stay-intro__eyebrow {
    margin-bottom: 22px;
    font-size: 0.76rem;
  }

  .stay-intro__title {
    font-size: clamp(1.35rem, 6vw, 1.7rem);
    letter-spacing: 0.12em;
  }

  .stay-intro__copy {
    margin-top: 22px;
    font-size: 0.86rem;
    line-height: 2;
    letter-spacing: 0.04em;
  }

  .stay-section {
    padding: 64px 20px;
  }

  .stay-section__inner,
  .stay-section__inner--reverse {
    display: block;
  }

  .stay-section__inner--reverse .stay-section__media,
  .stay-section__inner--reverse .stay-section__content {
    order: initial;
  }

  .stay-section__media {
    border-radius: 20px;
    margin-bottom: 32px;
  }

  .stay-section__media::before {
    padding-top: 72%;
  }

  .stay-section__lead {
    margin-top: 18px;
  }

  .stay-point {
    grid-template-columns: 28px 1fr;
    gap: 10px;
    padding: 14px 0;
  }

  .stay-point p {
    font-size: 13px;
  }

  .stay-section--resort {
    padding-left: 0;
    padding-right: 0;
  }

  .stay-section--resort .stay-section__inner {
    display: block;
  }

  .stay-section--resort .stay-section__media {
    border-radius: 0;
    margin-bottom: 32px;
  }

  .stay-section--resort .stay-section__content {
    padding: 0 20px;
  }

  .stay-section--shizu {
    padding: 64px 0;
  }

  .stay-section--shizu .stay-section__inner,
  .stay-section--shizu .stay-section__inner--reverse {
    display: flex;
    flex-direction: column;
    width: 100%;
  }

  .stay-section--shizu .stay-section__media,
  .stay-section--shizu .stay-section__inner--reverse .stay-section__media {
    order: 1;
    width: 100%;
    border-radius: 0;
    margin: 0 0 32px;
    overflow: visible;
  }

  .stay-section--shizu .stay-section__media--video video {
    border-radius: 0;
  }

  .stay-section--shizu .stay-section__content,
  .stay-section--shizu .stay-section__inner--reverse .stay-section__content {
    order: 2;
    width: 100%;
    padding: 0 20px;
  }

  .js-stay-reveal[data-stay-reveal='left'],
  .js-stay-reveal[data-stay-reveal='right'] {
    transform: translate3d(0, 30px, 0);
  }

  .stay-section__eyebrow {
    margin: 20px 0 5px;
  }

  .stay-section__text {
    font-size: 13px;
    line-height: 2.1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .stay-section--resort .stay-section__media[data-stay-slide='left'],
  .js-stay-reveal,
  .js-stay-split .char {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* =========================================================
  STAY RESORT LOOP GALLERY
========================================================= */

.stay-resort-loop {
  --stay-loop-gap: clamp(14px, 3vw, 46px);
  --stay-loop-width: clamp(200px, 22vw, 370px);
  --stay-loop-speed: 44; /* 数字が大きいほど速い */

  position: relative;
  width: 100%;
  margin-top: clamp(56px, 8vw, 156px);
  overflow: hidden;
}

.stay-resort-loop__track {
  display: flex;
  width: max-content;
  gap: var(--stay-loop-gap);
  align-items: center;
  will-change: transform;
  transform: translate3d(0, 0, 0);
}

.stay-resort-loop__group {
  display: flex;
  gap: var(--stay-loop-gap);
  align-items: center;
  flex: 0 0 auto;
}

.stay-resort-loop__item {
  flex: 0 0 var(--stay-loop-width);
  width: var(--stay-loop-width);
  margin: 0;
  overflow: hidden;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.06);
}

.stay-resort-loop__item img {
  display: block;
  width: 100%;
  height: auto;
}

@media (max-width: 768px) {
  .stay-resort-loop {
    --stay-loop-gap: 14px;
    --stay-loop-width: 210px;
    --stay-loop-speed: 62; /* スマホ速度：数字が大きいほど速い */

    margin-top: 46px;
  }
}

/* =========================================================
  GUIDE PAGE
========================================================= */

body.guide-page,
.gassan-guide-page,
.guide-page-main {
  background: #fff;
  color: #222;
}

.guide-page-main {
  overflow: hidden;
}

/* =========================================================
  HERO：ACCESSページ準拠
========================================================= */

.guide-hero {
  position: relative;
  min-height: 72vh;
  overflow: hidden;
  background: #111;
  color: #fff;
}

.guide-hero__media,
.guide-hero__overlay {
  position: absolute;
  inset: 0;
}

.guide-hero__media img,
.guide-hero__media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ACCESSページと同じ薄めの下グラデ */
.guide-hero__overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.15) 100%
  );
}

.guide-hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 40px, 1280px);
  min-height: 72vh;
  margin: 0 auto;
  padding: 160px 0 70px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
}

.guide-hero__title {
  margin: 0;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(2.3rem, 3vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
}

/* =========================================================
  INTRO：ACCESSページ準拠
========================================================= */

.guide-intro {
  padding: 0 20px;
  background: #fff;
}

.guide-intro__inner {
  width: min(100%, 860px);
  margin: 0 auto;
  padding-top: 50px;
  text-align: center;
}

.guide-intro__eyebrow,
.snow-guide-head__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #2d2d2d;
  font-weight: 400;
}

.guide-intro__eyebrow::after,
.snow-guide-head__eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.guide-intro__eyebrow.is-visible::after,
.snow-guide-head__eyebrow.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.guide-intro__title,
.snow-guide-head__title {
  margin: 0;
  font-size: clamp(1.3rem, 1.8vw, 2rem);
  line-height: 1.4;
  letter-spacing: 0.2em;
  font-weight: 400;
  color: #20333a;
}

.guide-intro__copy,
.snow-guide-head__lead {
  width: min(100%, 820px);
  margin: 20px auto 10px;
  font-size: clamp(0.78rem, 1.2vw, 1rem);
  line-height: 1.9;
  letter-spacing: 0.04em;
  color: rgba(32, 51, 58, 0.72);
}

/* SP */
@media (max-width: 767.98px) {
  .guide-intro__inner {
    padding-top: 25px;
  }
}

/* =========================================================
  COMMON SECTION
========================================================= */

.snow-guide-section {
  position: relative;
  padding: clamp(10px, 2vw, 80px) 20px 0;
  background: #fff;
}

.snow-guide-section__inner {
  width: min(1120px, 100%);
  margin: 0 auto;
}

.snow-guide-head {
  margin-bottom: clamp(28px, 4vw, 48px);
  text-align: center;
}

/* =========================================================
  GUIDE MAP - PREPARING
========================================================= */

.snow-guide-map-wrap {
  width: min(var(--guide-map-width, 1120px), 100%);
  margin: 0 auto;
}

.snow-guide-map {
  position: relative;
  width: 100%;
  overflow: hidden;
  background: #90909042;
}

/* マップ画像を入れた時 */
.snow-guide-map__image {
  display: block;
  width: 100%;
  height: auto;
}

/* 準備中表示 */
.snow-guide-map--preparing {
  min-height: var(--guide-map-height, 520px);
  display: grid;
  place-items: center;
}

.snow-guide-map__placeholder {
  width: min(680px, calc(100% - 40px));
  margin: 0 auto;
  text-align: center;
  padding: clamp(42px, 6vw, 72px) 20px;
}

.snow-guide-map__label {
  margin: 0 0 18px;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 0.78rem;
  line-height: 1;
  letter-spacing: 0.24em;
  color: rgba(32, 51, 58, 0.52);
}

.snow-guide-map__placeholder h3 {
  margin: 0;
  font-size: clamp(1.6rem, 3vw, 2.6rem);
  line-height: 1.35;
  letter-spacing: 0.08em;
  font-weight: 400;
  color: #20333a;
}

.snow-guide-map__placeholder p:last-child {
  margin: 24px 0 0;
  font-size: 0.94rem;
  line-height: 2;
  color: rgba(32, 51, 58, 0.68);
}
/* =========================================================
  GUIDE MAP WIDTH FIX
========================================================= */

/* マップセクションだけ親幅制限を外す */
.snow-guide-map-section .snow-guide-section__inner {
  width: 100%;
  max-width: none;
}

/* 見出しは今まで通り中央の読みやすい幅に戻す */
.snow-guide-map-section .snow-guide-head {
  width: min(1120px, calc(100% - 40px));
  margin-left: auto;
  margin-right: auto;
}

/* マップ本体だけ自由に幅調整 */
.snow-guide-map-section .snow-guide-map-wrap {
  width: min(
    var(--guide-map-width, 1120px),
    calc(100% - var(--guide-map-side-space, 40px))
  );
  margin-left: auto;
  margin-right: auto;
}
/* マップサイズ調整用
  全幅に近くしたい場合：
  --guide-map-width: 100%;

  小さくしたい場合：
  --guide-map-width: 860px;

  高さ調整：
  --guide-map-height: 420px;
*/
.snow-guide-map-section {
  --guide-map-width: 1720px;
  --guide-map-height: 720px;
  --guide-map-radius: 5px;
}

/* SP */
@media (max-width: 767.98px) {
  .snow-guide-map-section {
    --guide-map-width: 100%;
    --guide-map-height: 360px;
    --guide-map-radius: 20px;
  }

  .snow-guide-map__placeholder {
    width: min(100% - 28px, 520px);
  }

  .snow-guide-map__placeholder p:last-child {
    text-align: left;
  }
}

/* =========================================================
  GUIDE MAP MORE LINK
========================================================= */

.snow-guide-map-link {
  width: min(
    var(--guide-map-width, 1120px),
    calc(100% - var(--guide-map-side-space, 40px))
  );
  margin: 38px auto 0;
  text-align: center;
}

.snow-guide-more-link {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: #8b7b68;
  text-decoration: none;
  margin-bottom: 50px;
}

.snow-guide-more-link__main {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 64px;
  min-width: 168px;
  padding: 0 0 12px;
}

.snow-guide-more-link__main::before,
.snow-guide-more-link__main::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  height: 1px;
}

.snow-guide-more-link__main::before {
  width: 100%;
  background: rgba(139, 123, 104, 0.28);
}

.snow-guide-more-link__main::after {
  width: 0;
  background: rgba(139, 123, 104, 0.92);
  transition: width 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}

.snow-guide-more-link:hover .snow-guide-more-link__main::after {
  width: 100%;
}

.snow-guide-more-link__text {
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 1.2rem;
  line-height: 1;
  letter-spacing: 0.1em;
  font-weight: 300;
  color: #75470b;
}

.snow-guide-more-link__arrow {
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 1.15rem;
  line-height: 1;
  transform: translateY(-1px);
  transition: transform 0.32s ease;
}

.snow-guide-more-link:hover .snow-guide-more-link__arrow {
  transform: translate(4px, -1px);
}

.snow-guide-more-link__caption {
  display: block;
  font-size: 0.78rem;
  line-height: 1.8;
  letter-spacing: 0.04em;
  color: rgba(32, 51, 58, 0.58);
}

@media (max-width: 767.98px) {
  .snow-guide-map-link {
    margin-top: 30px;
  }

  .snow-guide-more-link__main {
    min-width: 150px;
    gap: 50px;
  }

  .snow-guide-more-link__caption {
    max-width: 280px;
  }
}

/* =========================================================
  AREA CARD
========================================================= */

.snow-guide-area-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}

.snow-guide-area-card {
  position: relative;
  min-height: 250px;
  padding: 28px;
  border-radius: 26px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(32, 51, 58, 0.08);
  box-shadow: 0 22px 64px rgba(22, 46, 52, 0.1);
}

.snow-guide-area-card::before {
  content: '';
  position: absolute;
  inset: auto 24px 24px auto;
  width: 86px;
  height: 86px;
  border-radius: 999px;
  opacity: 0.52;
  filter: blur(2px);
}

.snow-guide-area-card--beginner::before {
  background: rgba(78, 190, 118, 0.9);
}

.snow-guide-area-card--intermediate::before {
  background: rgba(74, 144, 226, 0.9);
}

.snow-guide-area-card--advanced::before {
  background: rgba(35, 42, 54, 0.86);
}

.snow-guide-area-card__level {
  margin: 0 0 20px;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  color: #5c83a3;
  font-weight: 700;
}

.snow-guide-area-card h3 {
  margin: 0 0 18px;
  font-size: 1.35rem;
  letter-spacing: 0.05em;
  color: #20333a;
}

.snow-guide-area-card p:last-child {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.9;
  color: rgba(32, 51, 58, 0.72);
}

/* =========================================================
  LIFT
========================================================= */

.snow-guide-split {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: clamp(30px, 6vw, 70px);
  align-items: center;
}

.snow-guide-lift-list {
  display: grid;
  gap: 16px;
}

.snow-guide-lift-card {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 22px;
  align-items: center;
  padding: 24px;
  border-radius: 24px;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid rgba(32, 51, 58, 0.08);
  box-shadow: 0 20px 56px rgba(22, 46, 52, 0.09);
}

.snow-guide-lift-card span {
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  border-radius: 999px;
  background: rgba(92, 131, 163, 0.12);
  color: #31516f;
  font-size: 0.84rem;
  letter-spacing: 0.12em;
}

.snow-guide-lift-card h3 {
  margin: 0 0 8px;
  font-size: 1.16rem;
  color: #20333a;
}

.snow-guide-lift-card p {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.8;
  color: rgba(32, 51, 58, 0.7);
}

/* =========================================================
  NOTE
========================================================= */

.snow-guide-note {
  display: grid;
  grid-template-columns: 0.75fr 1.25fr;
  gap: 36px;
  padding: clamp(28px, 5vw, 52px);
  border-radius: 30px;
  background: linear-gradient(
    135deg,
    rgba(126, 174, 213, 0.15),
    rgba(255, 255, 255, 0.9)
  );
  border: 1px solid rgba(32, 51, 58, 0.08);
  box-shadow: 0 24px 70px rgba(22, 46, 52, 0.1);
}

.snow-guide-note h2 {
  margin: 0;
  font-size: clamp(1.5rem, 3vw, 2.6rem);
  color: #20333a;
}

.snow-guide-note ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.snow-guide-note li {
  position: relative;
  padding-left: 1.25em;
  font-size: 0.94rem;
  line-height: 1.9;
  color: rgba(32, 51, 58, 0.72);
}

.snow-guide-note li + li {
  margin-top: 10px;
}

.snow-guide-note li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.82em;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: #5c83a3;
}

/* =========================================================
  REVEAL
========================================================= */

.guide-page-main [data-snow-reveal],
.guide-hero [data-snow-reveal] {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  transition:
    opacity 900ms cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 900ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

.guide-page-main [data-snow-reveal].is-visible,
.guide-hero [data-snow-reveal].is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* =========================================================
  TABLET / SP
========================================================= */

@media (max-width: 980px) {
  .snow-guide-split {
    grid-template-columns: 1fr;
  }

  .snow-guide-area-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 767.98px) {
  .guide-hero {
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    overflow: hidden;
  }

  .guide-hero__inner {
    width: calc(100% - 32px);
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    padding-top: 138px;
    padding-bottom: 30px;
  }

  .guide-hero__title {
    font-size: clamp(2.1rem, 11vw, 3.6rem);
    line-height: 1.05;
  }

  .guide-intro {
    padding-left: 16px;
    padding-right: 16px;
  }

  .guide-intro__copy,
  .snow-guide-head__lead {
    width: 95%;
    margin-bottom: 5px;
    line-height: 1.7;
    text-align: left;
  }

  .snow-guide-section {
    padding: 38px 0;
  }

  .snow-guide-map {
    border-radius: 5px;
  }

  .snow-guide-legend {
    gap: 10px;
  }

  .snow-guide-legend__group {
    width: 100%;
    padding: 13px 14px;
    border-radius: 16px;
  }

  .snow-guide-area-grid {
    display: flex;
    gap: 14px;
    overflow-x: auto;
    padding: 0 14px 8px;
    margin: 0 -14px;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
  }

  .snow-guide-area-card {
    flex: 0 0 82%;
    min-height: 235px;
    scroll-snap-align: start;
  }

  .snow-guide-lift-card {
    grid-template-columns: 54px 1fr;
    gap: 16px;
    padding: 20px;
  }

  .snow-guide-lift-card span {
    width: 48px;
    height: 48px;
  }

  .snow-guide-note {
    grid-template-columns: 1fr;
    gap: 24px;
    border-radius: 24px;
  }

  .snow-guide-more-link__caption {
    font-size: 0.68rem;
  }
}

/* =========================================================
  GUIDE STORY GRID - SPECIAL MOOD / FULL WIDTH
========================================================= */

.guide-story {
  position: relative;
  padding: clamp(50px, 4vw, 120px) 0;
  background:
    radial-gradient(circle at 5% 15%, rgb(212 235 243 / 57%), transparent 34%),
    radial-gradient(circle at 86% 88%, rgb(158 173 158 / 0%), transparent 36%),
    #f4f1e800;
  overflow: hidden;
}

.guide-story::before {
  content: 'GASSAN TRAIL GUIDE';
  position: absolute;
  left: 5%;
  top: clamp(18px, 2vw, 25px);
  transform: translateX(-10%);
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(1.4rem, 1.5vw, 2rem);
  line-height: 1;
  letter-spacing: 0.08em;
  font-weight: 300;
  color: rgba(32, 51, 58, 0.5);
  white-space: nowrap;
  pointer-events: none;
}

.guide-story__grid {
  position: relative;
  z-index: 1;
  width: 100%;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid rgb(155 155 155);
  border-left: 1px solid rgb(155 155 155);
  background: rgba(255, 255, 255, 0.28);
  box-shadow: none;
}
/*.guide-story__grid {
  position: relative;
  z-index: 1;
  width: min(1680px, calc(100% - 40px));
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid rgba(32, 51, 58, 0.22);
  border-left: 1px solid rgba(32, 51, 58, 0.22);
  background: rgba(255, 255, 255, 0.28);
  box-shadow: 0 34px 90px rgba(22, 46, 52, 0.12);
}*/
.guide-story__cell {
  position: relative;
  width: 100%;
  min-height: clamp(230px, 28vw, 420px);
  border: 0;
  border-right: 1px solid rgb(155 155 155);
  border-bottom: 1px solid rgb(155 155 155);
  background: rgba(247, 245, 236, 0.72);
  color: #111;
  padding: clamp(26px, 3vw, 46px);
  text-align: left;
  cursor: pointer;
  overflow: hidden;
  appearance: none;
  transition:
    background 0.42s ease,
    color 0.42s ease;
}

.guide-story__cell--text {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.guide-story__cell--text::before {
  content: '';
  position: absolute;
  inset: 16px;
  border: 1px solid rgba(32, 51, 58, 0.08);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.42s ease;
}

.guide-story__cell--text:hover,
.guide-story__cell--text.is-pair-hover {
  background: rgba(110, 163, 202, 0.88);
}

.guide-story__cell--text:hover::before,
.guide-story__cell--text.is-pair-hover::before {
  opacity: 1;
}

.guide-story__cell--image {
  padding: 0;
  background: #d9ddd8;
  overflow: hidden;
}

.guide-story__cell--image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(8, 17, 29, 0.06),
    rgba(8, 17, 29, 0.18)
  );
  pointer-events: none;
  transition: opacity 0.42s ease;
}

.guide-story__cell--image:hover::after,
.guide-story__cell--image.is-pair-hover::after {
  opacity: 0.25;
}

.guide-story__cell--image img,
.guide-story__cell--image video {
  display: block;
  width: 100%;
  height: 100%;
  min-height: clamp(230px, 28vw, 420px);
  object-fit: cover;
  transform: scale(1) !important;
  transform-origin: center center;
  transition: transform 1.75s cubic-bezier(0.22, 1, 0.36, 1) !important;
  will-change: transform;
}

.guide-story__cell--image:hover img,
.guide-story__cell--image:hover video,
.guide-story__cell--image.is-pair-hover img,
.guide-story__cell--image.is-pair-hover video {
  transform: scale(1.18) !important;
}

.guide-story__meta {
  display: inline-block;
  margin: 0 0 5px;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 0.72rem;
  line-height: 1;
  letter-spacing: 0.2em;
  color: rgba(28, 170, 222, 1);
}

.guide-story__cell h3 {
  margin: 0;
  font-size: clamp(1.45rem, 2vw, 2rem);
  line-height: 1.65;
  letter-spacing: 0.06em;
  font-weight: 300;
  color: #1d2f36;
}

.guide-story__cell p {
  margin: 64px 0 0;
  font-size: 0.94rem;
  line-height: 1;
  letter-spacing: 0.03em;
  color: rgba(32, 51, 58, 0.72);
}

.guide-story__read {
  position: absolute;
  right: 34px;
  bottom: 30px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 0.82rem;
  line-height: 1;
  letter-spacing: 0.12em;
  color: rgba(32, 51, 58, 0.72);
}

.guide-story__read::after {
  content: '';
  width: 22px;
  height: 1px;
  background: currentColor;
  transform-origin: left center;
  transition: transform 0.32s ease;
}

.guide-story__cell:hover .guide-story__read::after,
.guide-story__cell.is-pair-hover .guide-story__read::after {
  transform: scaleX(1.45);
}

/* =========================================================
  GUIDE STORY MODAL
========================================================= */

.guide-story-modal {
  position: fixed;
  inset: 0;
  z-index: 2500;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 0.28s ease,
    visibility 0.28s ease;

  --guide-story-modal-width: 1440px;
  --guide-story-modal-height: 92vh;
  --guide-story-modal-margin-top: 3vh;
  --guide-story-modal-gallery-height: 720px;
}

.guide-story-modal.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.guide-story-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(13, 24, 34, 0.58);
  backdrop-filter: blur(6px);
}

.guide-story-modal__panel {
  position: relative;
  z-index: 1;
  width: min(var(--guide-story-modal-width), calc(100vw - 32px));
  max-height: min(var(--guide-story-modal-height), 920px);
  margin: var(--guide-story-modal-margin-top) auto 0;
  background: #f7f5ec;
  color: #111;
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  overflow: auto;
  box-shadow: 0 28px 80px rgba(0, 0, 0, 0.28);
}

.guide-story-modal__close {
  position: absolute;
  top: 14px;
  right: 16px;
  z-index: 2;
  width: 42px;
  height: 42px;
  border: 0;
  background: transparent;
  color: #111;
  font-size: 32px;
  line-height: 1;
  cursor: pointer;
}

.guide-story-modal__gallery {
  min-height: var(--guide-story-modal-gallery-height);
  background: #ddd;
  display: grid;
  grid-template-columns: 1fr 1fr;
  padding: 10px;
  gap: 10px;
  overflow: hidden;
}

.guide-story-modal__gallery figure {
  margin: 0;
  min-height: 260px;
  overflow: hidden;
  background: #ddd;
}

.guide-story-modal__gallery figure:first-child {
  grid-column: span 2;
  min-height: 360px;
}

.guide-story-modal__gallery img,
.guide-story-modal__gallery video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none;
  display: block;
}

.guide-story-modal__content {
  padding: clamp(34px, 5vw, 64px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.guide-story-modal__meta {
  margin: 0 0 22px;
  font-size: 0.82rem;
  letter-spacing: 0.14em;
  color: rgba(28, 170, 222, 1);
}

.guide-story-modal__content h3 {
  margin: 0;
  font-size: clamp(1rem, 2vw, 1.7rem);
  line-height: 1.45;
  font-weight: 400;
}

.guide-story-modal__content p:last-child {
  margin: 28px 0 0;
  font-size: 1rem;
  line-height: 2;
  color: rgba(17, 17, 17, 0.74);
}

.guide-story-modal__section + .guide-story-modal__section {
  margin-top: 26px;
}

.guide-story-modal__section h4 {
  margin: 0 0 10px;
  font-size: 0.8rem;
  line-height: 1;
  letter-spacing: 0.08em;
  font-weight: 300;
  color: #111;
}
.guide-story-modal__section p {
  margin: 0;
  font-size: 0.95rem;
  line-height: 2;
  color: rgba(17, 17, 17, 0.72);
}

body.guide-story-modal-open {
  overflow: hidden;
}

.guide-story-modal.is-open {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.guide-story-modal__panel {
  overflow: visible;
}

.guide-story-sp-detail {
  display: none;
}

.guide-story__item {
  display: contents;
}

.guide-story__en {
  margin: 1px 0 0 !important;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 0.78rem !important;
  line-height: 1.4;
  letter-spacing: 0.16em;
  font-weight: 300;
  color: rgba(32, 51, 58, 0.52);
  text-transform: uppercase;
}

/* オンマウス時：文字を白にする */
.guide-story__cell--text:hover .guide-story__meta,
.guide-story__cell--text:hover h3,
.guide-story__cell--text:hover p,
.guide-story__cell--text:hover .guide-story__en,
.guide-story__cell--text:hover .guide-story__read,
.guide-story__cell--text.is-pair-hover .guide-story__meta,
.guide-story__cell--text.is-pair-hover h3,
.guide-story__cell--text.is-pair-hover p,
.guide-story__cell--text.is-pair-hover .guide-story__en,
.guide-story__cell--text.is-pair-hover .guide-story__read {
  color: #fff !important;
}

/* =========================================================
  SP
========================================================= */

@media (max-width: 767.98px) {
  .guide-story {
    padding: 56px 14px;
    background: #f4f1e8;
  }

  .guide-story::before {
    top: 20px;
    left: 14px;
    margin-left: 0;
    transform: none;
    font-size: 1.2rem;
    letter-spacing: 0.04em;
  }

  .guide-story__grid {
    display: block;
    width: 100%;
    border: 0;
    background: transparent;
    box-shadow: none;
  }

  .guide-story__item {
    display: block;
    margin-bottom: 28px;
  }

  .guide-story__cell {
    width: 100%;
    border: 1px solid rgba(32, 51, 58, 0.14);
  }

  .guide-story__cell--image {
    display: none;
  }

  .guide-story__cell--text {
    min-height: auto;
    padding: 28px 22px;
    cursor: default;
    pointer-events: none;
    justify-content: flex-start;
    color: #fff;
    background:
      linear-gradient(
        180deg,
        rgba(8, 17, 29, 0.04) 0%,
        rgba(8, 17, 29, 0.82) 100%
      ),
      var(--guide-story-bg) center / cover no-repeat;
  }

  .guide-story__cell--text:hover,
  .guide-story__cell--text.is-pair-hover {
    background:
      linear-gradient(
        180deg,
        rgba(8, 17, 29, 0.04) 0%,
        rgba(8, 17, 29, 0.82) 100%
      ),
      var(--guide-story-bg) center / cover no-repeat;
  }

  .guide-story__item--spring {
    --guide-story-bg: url('/assets/images/sawacourse_2.jpg');
  }

  .guide-story__item--terrain {
    --guide-story-bg: url('/assets/images/bigslope.jpg');
  }

  .guide-story__item--lift {
    --guide-story-bg: url('/assets/images/lift.jpg');
  }

  .guide-story__cell--text:hover,
  .guide-story__cell--text.is-pair-hover {
    background:
      linear-gradient(
        180deg,
        rgba(8, 17, 29, 0.04) 0%,
        rgba(8, 17, 29, 0.82) 100%
      ),
      url('/assets/images/map_sample.jpg') center / cover no-repeat;
  }

  .guide-story__cell--text::before {
    inset: 14px;
    border-color: rgba(255, 255, 255, 0.22);
    opacity: 1;
  }

  .guide-story__meta,
  .guide-story__cell p,
  .guide-story__en {
    color: rgba(255, 255, 255, 0.82) !important;
  }

  .guide-story__cell h3 {
    color: #fff;
    font-size: clamp(1.35rem, 7vw, 2rem);
    line-height: 1.55;
  }

  .guide-story__cell p {
    margin-top: 18px;
    font-size: 0.9rem;
    line-height: 1.8;
  }

  .guide-story__read {
    display: none;
  }

  .guide-story-sp-detail {
    display: block;
    background: #f7f5ec;
    border: 1px solid rgba(32, 51, 58, 0.14);
    border-top: 0;
  }

  .guide-story-sp-detail__content {
    padding: 26px 22px 24px;
  }

  .guide-story-sp-detail__meta {
    margin: 0 0 10px;
    font-family: 'Roboto', 'Noto Sans JP', sans-serif;
    font-size: 0.72rem;
    line-height: 1;
    letter-spacing: 0.16em;
    color: rgba(28, 170, 222, 1);
  }

  .guide-story-sp-detail__content h3 {
    margin: 0;
    font-size: 1.35rem;
    line-height: 1.6;
    font-weight: 400;
    color: #1d2f36;
  }

  .guide-story-sp-detail__en {
    margin: 2px 0 0;
    font-family: 'Roboto', 'Noto Sans JP', sans-serif;
    font-size: 0.76rem;
    line-height: 1.5;
    letter-spacing: 0.14em;
    color: rgba(32, 51, 58, 0.5);
    text-transform: uppercase;
  }

  .guide-story-sp-detail__content p:last-child {
    margin: 18px 0 0;
    font-size: 0.92rem;
    line-height: 2;
    color: rgba(32, 51, 58, 0.72);
  }

  .guide-story-sp-detail__gallery {
    display: grid;
    gap: 10px;
    padding: 0 12px 12px;
  }

  .guide-story-sp-detail__gallery img,
  .guide-story-sp-detail__gallery video {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
  }

  .guide-story-modal {
    display: none !important;
  }
}

@media (min-width: 768px) {
  .guide-story__item {
    display: contents;
  }

  /* 左上：沢コース */
  .guide-story__item--spring .guide-story__cell--text {
    grid-column: 1;
    grid-row: 1;
  }

  /* 左下：沢コース写真 */
  .guide-story__item--spring .guide-story__cell--image {
    grid-column: 1;
    grid-row: 2;
  }

  /* 中央上：大斜面写真 */
  .guide-story__item--terrain .guide-story__cell--image {
    grid-column: 2;
    grid-row: 1;
  }

  /* 中央下：大斜面コース */
  .guide-story__item--terrain .guide-story__cell--text {
    grid-column: 2;
    grid-row: 2;
  }

  /* 右上：リフト */
  .guide-story__item--lift .guide-story__cell--text {
    grid-column: 3;
    grid-row: 1;
  }

  /* 右下：リフト写真 */
  .guide-story__item--lift .guide-story__cell--image {
    grid-column: 3;
    grid-row: 2;
  }
}
/* =========================================================
  GUIDE LOCAL RULE
========================================================= */

.guide-local-rule {
  position: relative;
  padding: clamp(82px, 10vw, 150px) 20px;
  background:
    radial-gradient(
      circle at 12% 8%,
      rgba(142, 191, 209, 0.14),
      transparent 32%
    ),
    linear-gradient(180deg, #ffffff 0%, #f4f1e8 100%);
  color: #20333a;
  overflow: hidden;
}

.guide-local-rule__inner {
  width: min(1120px, 100%);
  margin: 0 auto;
}

.guide-local-rule__head {
  text-align: center;
  margin-bottom: clamp(34px, 5vw, 64px);
}

.guide-local-rule__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 22px;
  padding-bottom: 14px;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 0.78rem;
  letter-spacing: 0.28em;
  color: rgba(32, 51, 58, 0.66);
}

.guide-local-rule__eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 72px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%);
}

.guide-local-rule__title {
  margin: 0;
  font-size: clamp(1.8rem, 4vw, 3rem);
  line-height: 1.35;
  letter-spacing: 0.12em;
  font-weight: 400;
}

.guide-local-rule__lead {
  margin: 24px auto 0;
  max-width: 760px;
  font-size: 0.95rem;
  line-height: 2;
  color: rgba(32, 51, 58, 0.68);
}

.guide-local-rule__intro {
  max-width: 920px;
  margin: 0 auto clamp(36px, 6vw, 72px);
  padding: clamp(26px, 4vw, 42px);
  background: rgba(255, 255, 255, 0.68);
  border: 1px solid rgba(32, 51, 58, 0.1);
}

.guide-local-rule__intro p {
  margin: 0;
  font-size: 0.98rem;
  line-height: 2;
  color: rgba(32, 51, 58, 0.74);
}

.guide-local-rule__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  border-top: 1px solid rgba(32, 51, 58, 0.16);
  border-left: 1px solid rgba(32, 51, 58, 0.16);
}

.guide-local-rule__item {
  padding: clamp(28px, 4vw, 48px);
  background: rgba(255, 255, 255, 0.58);
  border-right: 1px solid rgba(32, 51, 58, 0.16);
  border-bottom: 1px solid rgba(32, 51, 58, 0.16);
}

.guide-local-rule__item--wide {
  grid-column: span 2;
}

.guide-local-rule__num {
  margin: 0 0 18px;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: 0.72rem;
  letter-spacing: 0.22em;
  color: rgba(32, 51, 58, 0.52);
}

.guide-local-rule__item h3 {
  margin: 0 0 22px;
  font-size: clamp(1.2rem, 2vw, 1.7rem);
  line-height: 1.5;
  letter-spacing: 0.06em;
  font-weight: 400;
  color: #1d2f36;
}

.guide-local-rule__item p {
  margin: 0;
  font-size: 0.92rem;
  line-height: 2;
  color: rgba(32, 51, 58, 0.74);
}

.guide-local-rule__item p + p {
  margin-top: 16px;
}

.guide-local-rule__costs {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px;
}

.guide-local-rule__cost {
  padding: 22px;
  background: rgba(244, 241, 232, 0.9);
  border: 1px solid rgba(32, 51, 58, 0.1);
}

.guide-local-rule__cost h4 {
  margin: 0 0 14px;
  font-size: 1rem;
  line-height: 1.6;
  font-weight: 500;
}

.guide-local-rule__cost ul {
  margin: 0;
  padding-left: 1.2em;
}

.guide-local-rule__cost li {
  font-size: 0.9rem;
  line-height: 1.9;
  color: rgba(32, 51, 58, 0.74);
}

.guide-local-rule__closing {
  margin-top: 34px;
  text-align: right;
}

.guide-local-rule__closing p {
  margin: 0;
  font-size: 0.92rem;
  letter-spacing: 0.08em;
  color: rgba(32, 51, 58, 0.7);
}

@media (max-width: 767.98px) {
  .guide-local-rule {
    padding: 72px 16px;
  }

  .guide-local-rule__head {
    text-align: center;
  }

  .guide-local-rule__lead {
    text-align: left;
  }

  .guide-local-rule__intro {
    padding: 24px 20px;
  }

  .guide-local-rule__list {
    grid-template-columns: 1fr;
  }

  .guide-local-rule__item,
  .guide-local-rule__item--wide {
    grid-column: auto;
  }

  .guide-local-rule__costs {
    grid-template-columns: 1fr;
  }

  .guide-local-rule__closing {
    text-align: left;
  }
}

html,
body {
  max-width: 100%;
  overflow-x: clip;
}

@supports not (overflow: clip) {
  html,
  body {
    overflow-x: hidden;
  }
}

/* =========================================================
  RECRUIT PAGE
========================================================= */

.recruit-page {
  background: #f4f7f8;
  color: #17212b;
}

.recruit-main {
  overflow: hidden;
  background:
    radial-gradient(
      circle at top right,
      rgba(116, 170, 255, 0.18),
      transparent 30%
    ),
    linear-gradient(180deg, #f7fafb 0%, #eef4f6 52%, #f7fafb 100%);
}

.recruit-container {
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
}

.recruit-container--narrow {
  width: min(1280px, calc(100% - 48px));
}

/* =========================================================
  HERO：FACILITY / ACCESS 準拠
========================================================= */

.recruit-hero {
  position: relative;
  min-height: 72vh;
  overflow: hidden;
  background: #111;
  color: #fff;
}

.recruit-hero__media,
.recruit-hero__overlay {
  position: absolute;
  inset: 0;
}

.recruit-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.recruit-hero__overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.15) 100%
  );
}

.recruit-hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 40px, 1280px);
  min-height: 72vh;
  margin: 0 auto;
  padding: 160px 0 70px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
}

.recruit-hero__title {
  margin: 0;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(2.3rem, 3vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
}

.recruit-message,
.recruit-detail,
.recruit-benefits,
.recruit-flow,
.recruit-download,
.recruit-contact {
  padding: clamp(84px, 10vw, 150px) 0;
}

.recruit-message__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
  gap: clamp(40px, 6vw, 90px);
  align-items: center;
}

.recruit-section-head {
  margin-bottom: clamp(34px, 5vw, 58px);
}

.recruit-section__eyebrow {
  margin: 0 0 18px;
  color: #4f8fb8;
  font-size: 0.78rem;
  letter-spacing: 0.3em;
  font-weight: 700;
}

.recruit-section__title {
  margin: 0;
  color: #17212b;
  font-size: clamp(2rem, 3vw, 3.2rem);
  line-height: 1.28;
  font-weight: 300;
  letter-spacing: 0.06em;
}

.recruit-message__text {
  margin-top: 34px;
  color: #394854;
  line-height: 2;
}

.recruit-message__text p {
  margin: 0;
}

.recruit-message__text p + p {
  margin-top: 1.1em;
}

.recruit-message__image {
  position: relative;
  border-radius: 5px;
  overflow: hidden;
}

.recruit-message__image::before {
  content: '';
  display: block;
  aspect-ratio: 4 / 5;
}

.recruit-message__image img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.recruit-detail {
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.66),
    rgba(255, 255, 255, 0.2)
  );
}

.recruit-detail-card {
  background: rgba(255, 255, 255, 0.82);
  border: 1px solid rgba(130, 156, 172, 0.24);
  border-radius: 5px;
  overflow: hidden;
  box-shadow: 0 24px 70px rgba(18, 46, 68, 0.08);
}

.recruit-table {
  margin: 0;
}

.recruit-table__row {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  border-bottom: 1px solid rgba(130, 156, 172, 0.22);
}

.recruit-table__row:last-child {
  border-bottom: none;
}

.recruit-table__row dt,
.recruit-table__row dd {
  margin: 0;
  padding: 28px 32px;
}

.recruit-table__row dt {
  background: rgba(225, 235, 241, 0.62);
  color: #263746;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.recruit-table__row dd {
  color: #334654;
  line-height: 2;
}

.recruit-table__row--accent dd {
  color: #1f75a8;
  font-weight: 700;
}

.recruit-table__accent-text {
  color: #1f75a8;
  font-weight: 700;
}

.recruit-benefits__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 26px;
}

.recruit-benefit-card {
  background: rgba(255, 255, 255, 0.82);
  border: 1px solid rgba(130, 156, 172, 0.22);
  border-radius: 28px;
  overflow: hidden;
  box-shadow: 0 18px 56px rgba(18, 46, 68, 0.08);
}

.recruit-benefit-card__image {
  position: relative;
  overflow: hidden;
}

.recruit-benefit-card__image::before {
  content: '';
  display: block;
  aspect-ratio: 4 / 3;
}

.recruit-benefit-card__image img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s ease;
}

.recruit-benefit-card:hover .recruit-benefit-card__image img {
  transform: scale(1.045);
}

.recruit-benefit-card__body {
  padding: 28px;
}

.recruit-benefit-card__body h3 {
  margin: 0 0 14px;
  font-size: 1.18rem;
  letter-spacing: 0.08em;
}

.recruit-benefit-card__body p {
  margin: 0;
  color: #435460;
  line-height: 2;
}

.recruit-flow {
  background: #0d1722;
  color: #fff;
}

.recruit-flow .recruit-section__title {
  color: #fff;
}

.recruit-flow .recruit-section__eyebrow {
  color: #8ed1ff;
}

.recruit-flow-card {
  padding: clamp(34px, 5vw, 58px);
  border-radius: 30px;
  background:
    radial-gradient(
      circle at top right,
      rgba(142, 209, 255, 0.14),
      transparent 34%
    ),
    rgba(255, 255, 255, 0.055);
  border: 1px solid rgba(255, 255, 255, 0.12);
}

.recruit-flow-card__lead,
.recruit-flow-card__note {
  margin: 0;
  color: rgba(255, 255, 255, 0.8);
  line-height: 2;
}

.recruit-flow-list {
  display: grid;
  gap: 0;
  margin: 36px 0;
  padding: 0;
  list-style: none;
}

.recruit-flow-list li {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 22px;
  align-items: center;
  padding: 22px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.recruit-flow-list li:last-child {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.recruit-flow-list span {
  width: 54px;
  height: 54px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: rgba(142, 209, 255, 0.13);
  color: #8ed1ff;
  font-size: 0.82rem;
  letter-spacing: 0.08em;
}

.recruit-flow-list p {
  margin: 0;
  line-height: 1.8;
}

.recruit-download__lead {
  margin: -18px 0 34px;
  color: #435460;
  line-height: 2;
}

.recruit-download-list {
  display: grid;
  gap: 22px;
}

.recruit-download-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 240px;
  text-decoration: none;
  color: inherit;
  border-radius: 5px;
  overflow: hidden;
  box-shadow: 0 16px 44px rgba(18, 46, 68, 0.08);
  transition:
    transform 0.35s ease,
    box-shadow 0.35s ease;
}

.recruit-download-item:hover {
  transform: translateY(-3px);
  box-shadow: 0 24px 62px rgba(18, 46, 68, 0.13);
}

.recruit-download-item__name {
  display: flex;
  align-items: center;
  min-height: 74px;
  padding: 22px 30px;
  background: rgba(255, 255, 255, 0.86);
  color: #263746;
  font-weight: 700;
  line-height: 1.7;
}

.recruit-download-item__button {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 74px;
  background: #46515c;
  color: #fff;
  font-size: 0.82rem;
  letter-spacing: 0.16em;
  transition: background 0.35s ease;
}

.recruit-download-item:hover .recruit-download-item__button {
  background: #1f75a8;
}

.recruit-contact {
  padding-top: 30px;
}

.recruit-contact-card {
  padding: clamp(34px, 5vw, 58px);
  border-radius: 30px;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.9),
    rgba(239, 246, 249, 0.9)
  );
  border: 1px solid rgba(130, 156, 172, 0.22);
  box-shadow: 0 24px 70px rgba(18, 46, 68, 0.08);
}

.recruit-contact-card__eyebrow {
  margin: 0 0 16px;
  color: #4f8fb8;
  font-size: 0.78rem;
  letter-spacing: 0.3em;
  font-weight: 700;
}

.recruit-contact-card h2 {
  margin: 0;
  color: #17212b;
  font-size: clamp(1.8rem, 3vw, 3.2rem);
  font-weight: 300;
  letter-spacing: 0.08em;
}

.recruit-contact-card__body {
  margin-top: 30px;
  color: #334654;
  line-height: 2.1;
}

.recruit-contact-card__body p {
  margin: 0;
}

.recruit-contact-card__body p + p {
  margin-top: 22px;
}

.recruit-contact-card a {
  color: #20333a;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.recruit-contact-card a:hover {
  color: #6f8f7a;
}
/* =========================================================
  RECRUIT PAGE SP
========================================================= */

@media (max-width: 900px) {
  .recruit-container,
  .recruit-container--narrow {
    width: min(100% - 32px, 680px);
  }

  .recruit-message,
  .recruit-detail,
  .recruit-benefits,
  .recruit-flow,
  .recruit-download,
  .recruit-contact {
    padding: 78px 0;
  }

  .recruit-message__grid {
    grid-template-columns: 1fr;
  }

  .recruit-message__image::before {
    aspect-ratio: 4 / 3;
  }

  .recruit-table__row {
    grid-template-columns: 1fr;
  }

  .recruit-table__row dt,
  .recruit-table__row dd {
    padding: 22px;
  }

  .recruit-benefits__grid {
    grid-template-columns: 1fr;
  }

  .recruit-flow-card {
    padding: 30px 22px;
  }

  .recruit-flow-list li {
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 16px;
  }

  .recruit-flow-list span {
    width: 46px;
    height: 46px;
  }

  .recruit-download-item {
    grid-template-columns: 1fr;
  }

  .recruit-download-item__name {
    min-height: auto;
    padding: 22px;
  }

  .recruit-download-item__button {
    min-height: 62px;
  }
}

/* SP */
@media (max-width: 767.98px) {
  .recruit-hero {
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    overflow: hidden;
  }

  .recruit-hero__inner {
    width: calc(100% - 32px);
    min-height: 640px;
    height: 640px;
    max-height: 640px;
    padding-top: 138px;
    padding-bottom: 30px;
  }

  .recruit-hero__title {
    font-size: clamp(2rem, 2.2vw, 2.6rem);
    line-height: 1.05;
  }
}

.recruit-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.recruit-list li {
  position: relative;
  padding-left: 0.8em;
  line-height: 2;
  padding-top: 0.15em;
}

.recruit-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 1.2em;

  width: 3px;
  height: 3px;

  border-radius: 999px;
  background: #4f8fb8;

  transform: translateY(-50%);
}

/* =========================================================
  RECRUIT PAGE SP READABILITY FIX
========================================================= */

@media (max-width: 767.98px) {
  .recruit-main {
    background: linear-gradient(180deg, #f7fafb 0%, #eef4f6 52%, #f7fafb 100%);
  }

  .recruit-container,
  .recruit-container--narrow {
    width: min(100% - 28px, 520px);
  }

  .recruit-message,
  .recruit-detail,
  .recruit-flow,
  .recruit-download,
  .recruit-contact {
    padding: 58px 0;
  }

  .recruit-section-head {
    margin-bottom: 26px;
  }

  .recruit-section__eyebrow,
  .recruit-contact-card__eyebrow {
    margin-bottom: 12px;
    font-size: 0.68rem;
    letter-spacing: 0.22em;
  }

  .recruit-section__title,
  .recruit-contact-card h2 {
    font-size: clamp(1.55rem, 7vw, 2rem);
    line-height: 1.45;
    letter-spacing: 0.04em;
  }

  .recruit-message__grid {
    gap: 30px;
  }

  .recruit-message__text {
    margin-top: 24px;
    font-size: 0.94rem;
    line-height: 2;
  }

  .recruit-message__image {
    border-radius: 18px;
  }

  .recruit-message__image::before {
    aspect-ratio: 16 / 11;
  }

  .recruit-detail-card {
    border-radius: 18px;
    box-shadow: 0 16px 42px rgba(18, 46, 68, 0.08);
  }

  .recruit-table__row {
    display: block;
    border-bottom: 1px solid rgba(130, 156, 172, 0.22);
  }

  .recruit-table__row dt {
    padding: 16px 18px 12px;
    background: rgba(225, 235, 241, 0.78);
    font-size: 0.84rem;
    letter-spacing: 0.08em;
  }

  .recruit-table__row dd {
    padding: 18px;
    font-size: 0.92rem;
    line-height: 1.9;
  }

  .recruit-list {
    margin-top: 10px;
  }

  .recruit-list li {
    padding-left: 1em;
    font-size: 0.9rem;
    line-height: 1.85;
  }

  .recruit-flow-card,
  .recruit-contact-card {
    padding: 28px 20px;
    border-radius: 22px;
  }

  .recruit-flow-card__lead,
  .recruit-flow-card__note,
  .recruit-contact-card__body {
    font-size: 0.93rem;
    line-height: 1.95;
  }

  .recruit-flow-list {
    margin: 26px 0;
  }

  .recruit-flow-list li {
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 14px;
    padding: 18px 0;
  }

  .recruit-flow-list span {
    width: 40px;
    height: 40px;
    font-size: 0.72rem;
  }

  .recruit-flow-list p {
    font-size: 0.92rem;
    line-height: 1.75;
  }

  .recruit-download__lead {
    margin: -6px 0 24px;
    font-size: 0.92rem;
    line-height: 1.9;
  }

  .recruit-download-list {
    gap: 14px;
  }

  .recruit-download-item {
    border-radius: 16px;
  }

  .recruit-download-item__name {
    padding: 18px;
    font-size: 0.9rem;
  }

  .recruit-download-item__button {
    min-height: 52px;
    font-size: 0.76rem;
  }
}

.recruit-contact-card__button {
  margin-top: 26px;
}

.recruit-contact-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 28px;
  border-radius: 999px;
  background: #20333a;
  color: #fff !important;
  text-decoration: none;
  font-size: 0.92rem;
  letter-spacing: 0.08em;
  transition:
    transform 0.25s ease,
    opacity 0.25s ease,
    background 0.25s ease;
}

.recruit-contact-btn:hover {
  transform: translateY(-2px);
  opacity: 0.86;
  color: #fff;
}

/* =========================================================
  Recruit Contact Form
========================================================= */
.recruit-form-page {
  background:
    radial-gradient(
      circle at top left,
      rgba(216, 232, 238, 0.75),
      transparent 34%
    ),
    linear-gradient(135deg, #f7fbf8 0%, #eef6fb 52%, #edf6ef 100%);
  min-height: 100vh;
  padding: clamp(120px, 14vw, 180px) 0 clamp(80px, 10vw, 130px);
  color: #20333a;
}

.recruit-form {
  width: 100%;
}

.recruit-form-card {
  background: rgba(255, 255, 255, 0.74);
  border: 1px solid rgba(32, 51, 58, 0.08);
  border-radius: 28px;
  padding: clamp(34px, 5vw, 64px);
  box-shadow: 0 24px 70px rgba(31, 55, 65, 0.08);
}

.recruit-form__eyebrow {
  margin: 0 0 14px;
  color: rgba(32, 51, 58, 0.5);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.28em;
}

.recruit-form h1 {
  margin: 0 0 18px;
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  font-weight: 400;
  letter-spacing: 0.08em;
}

.recruit-form__lead {
  margin: 0 0 34px;
  color: rgba(32, 51, 58, 0.68);
  line-height: 2;
  font-size: 0.95rem;
}

.recruit-form-field {
  display: grid;
  gap: 9px;
  margin-top: 22px;
}

.recruit-form-field span {
  font-size: 0.88rem;
  letter-spacing: 0.08em;
  color: rgba(32, 51, 58, 0.78);
}

.recruit-form-field input,
.recruit-form-field textarea {
  width: 100%;
  border: 1px solid rgba(32, 51, 58, 0.14);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.86);
  padding: 15px 16px;
  color: #20333a;
  font: inherit;
  outline: none;
}

.recruit-form-field textarea {
  resize: vertical;
  min-height: 180px;
}

.recruit-form-field input:focus,
.recruit-form-field textarea:focus {
  border-color: rgba(32, 51, 58, 0.42);
  box-shadow: 0 0 0 4px rgba(32, 51, 58, 0.06);
}

.recruit-form-required {
  color: #b85d36;
  font-size: 0.78rem;
  margin-left: 0.4em;
}

.recruit-form-actions {
  margin-top: 34px;
}

.recruit-form-submit,
.recruit-form-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 54px;
  padding: 0 34px;
  border-radius: 999px;
  border: none;
  background: #20333a;
  color: #fff !important;
  text-decoration: none;
  font-size: 0.92rem;
  letter-spacing: 0.1em;
  cursor: pointer;
  transition:
    transform 0.25s ease,
    opacity 0.25s ease;
}

.recruit-form-submit:hover,
.recruit-form-back:hover {
  transform: translateY(-2px);
  opacity: 0.86;
  color: #fff !important;
}

.recruit-form-message {
  margin: 0 0 26px;
  padding: 16px 18px;
  border-radius: 16px;
  font-size: 0.9rem;
  line-height: 1.8;
}

.recruit-form-message--error {
  background: rgba(184, 93, 54, 0.09);
  color: #8d3d24;
}

.recruit-form-message--success {
  background: rgba(55, 106, 99, 0.1);
  color: #376a63;
}

.recruit-form-message p {
  margin: 0;
}

.recruit-form-thanks {
  text-align: center;
}

.recruit-form-thanks h1 {
  margin-bottom: 20px;
}

.recruit-form-thanks p {
  margin: 0;
  line-height: 2;
  color: rgba(32, 51, 58, 0.72);
}

.recruit-form-thanks .recruit-form-actions {
  margin-top: 36px;
}

@media (max-width: 767.98px) {
  .recruit-form-page {
    padding: 96px 0 72px;
  }

  .recruit-form-card {
    border-radius: 22px;
    padding: 28px 22px;
  }

  .recruit-form-submit,
  .recruit-form-back {
    width: 100%;
  }
}

/* =========================================================
  FURUSATO PAGE
========================================================= */

.furusato-page {
  background: #f6f7f5;
  color: #2d2d2d;
}

/* =========================================================
  HERO / INTRO
  facility page style
========================================================= */

.furusato-page .facility-hero {
  position: relative;
  min-height: 72vh;
  overflow: hidden;
  background: #111;
  color: #fff;
}

.furusato-page .facility-hero__media,
.furusato-page .facility-hero__overlay {
  position: absolute;
  inset: 0;
}

.furusato-page .facility-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.furusato-page .facility-hero__overlay {
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.15) 100%
  );
}

.furusato-page .facility-hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 40px, 1280px);
  min-height: 72vh;
  margin: 0 auto;
  padding: 160px 0 70px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
}

.furusato-page .facility-hero__title {
  margin: 0;
  font-family: 'Roboto', 'Noto Sans JP', sans-serif;
  font-size: clamp(2.3rem, 3vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.12em;
  font-weight: 300;
}

.furusato-main {
  background:
    radial-gradient(
      circle at top right,
      rgba(185, 202, 194, 0.24),
      transparent 34%
    ),
    linear-gradient(180deg, #f6f7f5 0%, #eef3ef 48%, #ffffff 100%);
}

.furusato-page .facility-intro {
  padding: 0;
}

.furusato-page .facility-intro__inner {
  width: min(100%, 860px);
  margin: 0 auto;
  text-align: center;
  padding-top: 50px;
}

.furusato-page .facility-intro__eyebrow {
  position: relative;
  display: inline-block;
  margin: 0 0 16px;
  padding-bottom: 14px;
  font-size: clamp(0.8rem, 1.8vw, 1rem);
  letter-spacing: 0.22em;
  color: #2d2d2d;
}

.furusato-page .facility-intro__eyebrow::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 78px;
  height: 1px;
  background: currentColor;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 0.7s ease 0.12s;
}

.furusato-page .facility-intro__eyebrow.is-visible::after {
  transform: translateX(-50%) scaleX(1);
}

.furusato-page .facility-intro__title {
  margin: 0;
  font-size: clamp(1.3rem, 1.8vw, 2rem);
  line-height: 0.8;
  letter-spacing: 0.2em;
  font-weight: 400;
}

.furusato-page .facility-intro__copy {
  margin: 20px auto 70px;
  width: min(100%, 820px);
  font-size: clamp(0.7rem, 1.2vw, 1rem);
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: #43413b;
}

/* =========================================================
  BANNER LINKS
========================================================= */

.furusato-links {
  padding: 0 0 clamp(90px, 11vw, 150px);
}

.furusato-links__inner {
  width: min(860px, calc(100% - 40px));
  margin: 0 auto;
}

.furusato-links__lead {
  margin: 0 auto clamp(28px, 4vw, 42px);
  text-align: center;
  font-size: clamp(0.82rem, 1.2vw, 0.98rem);
  line-height: 2.1;
  letter-spacing: 0.08em;
  color: rgba(45, 45, 45, 0.72);
}

.furusato-banner-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}

.furusato-banner-card {
  position: relative;
  min-height: 124px;
  display: grid;
  place-items: center;
  padding: 28px 34px;
  border: 1px solid rgba(32, 51, 58, 0.08);
  border-radius: 5px;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.92),
    rgba(239, 246, 244, 0.78)
  );
  text-decoration: none;
  overflow: hidden;
  transition:
    transform 0.4s ease,
    box-shadow 0.4s ease,
    border-color 0.4s ease;
}

.furusato-banner-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      circle at top left,
      rgba(143, 181, 196, 0.18),
      transparent 34%
    ),
    radial-gradient(
      circle at bottom right,
      rgba(138, 164, 132, 0.14),
      transparent 36%
    );
  opacity: 0;
  transition: opacity 0.4s ease;
}

.furusato-banner-card::after {
  content: 'VIEW SITE';
  position: absolute;
  right: 24px;
  bottom: 20px;
  font-size: 0.68rem;
  letter-spacing: 0.18em;
  color: rgba(32, 51, 58, 0.38);
}

.furusato-banner-card:hover {
  transform: translateY(-4px);
  border-color: rgba(32, 51, 58, 0.14);
}

.furusato-banner-card:hover::before {
  opacity: 1;
}

.furusato-banner-card img {
  position: relative;
  z-index: 1;
  display: block;
  max-width: min(320px, 72%);
  max-height: 72px;
  width: auto;
  height: auto;
  object-fit: contain;
}

.furunabi_b img {
  max-width: min(220px, 72%);
}

@media (max-width: 768px) {
  .furusato-page .facility-hero,
  .furusato-page .facility-hero__inner {
    min-height: 64vh;
  }

  .furusato-page .facility-hero__inner {
    width: min(100% - 32px, 1280px);
    padding: 130px 0 54px;
  }

  .furusato-page .facility-hero__title {
    font-size: clamp(1.75rem, 8vw, 2.4rem);
    letter-spacing: 0.08em;
  }

  .furusato-page .facility-intro__inner {
    width: min(100% - 32px, 860px);
  }

  .furusato-page .facility-intro__title {
    line-height: 1.3;
  }

  .furusato-page .facility-intro__copy {
    margin-bottom: 54px;
  }

  .furusato-links__inner {
    width: min(100% - 32px, 860px);
  }

  .furusato-banner-list {
    gap: 14px;
  }

  .furusato-banner-card {
    min-height: 112px;
    padding: 24px 22px 34px;
    border-radius: 22px;
  }

  .furusato-banner-card::after {
    right: 20px;
    bottom: 16px;
    font-size: 0.62rem;
  }

  .furusato-banner-card img {
    max-width: min(280px, 82%);
    max-height: 62px;
  }

  .furunabi_b img {
    max-width: min(280px, 52%);
  }
}

/* =========================================================
  404
========================================================= */

.error404 {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 120px 24px;
  background: linear-gradient(180deg, #0b1220 0%, #152638 100%);
  color: #fff;
  text-align: center;
}

.error404__inner {
  width: min(100%, 720px);
}

.error404__code {
  margin: 0 0 12px;
  font-size: clamp(5rem, 14vw, 10rem);
  line-height: 1;
  font-weight: 200;
  letter-spacing: 0.08em;
  opacity: 0.18;
}

.error404__title {
  margin: 0 0 24px;
  font-size: clamp(2rem, 5vw, 3.4rem);
  font-weight: 300;
  letter-spacing: 0.12em;
}

.error404__text {
  margin: 0;
  font-size: 1rem;
  line-height: 2;
  color: rgba(255, 255, 255, 0.72);
}

.error404__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
  margin-top: 42px;
}

.error404__button {
  min-width: 180px;
  padding: 16px 24px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  color: #fff;
  text-decoration: none;
  transition:
    background 0.3s ease,
    transform 0.3s ease,
    border-color 0.3s ease;
}

.error404__button:hover {
  background: rgba(255, 255, 255, 0.08);
  transform: translateY(-2px);
}

.error404__button--ghost {
  background: rgba(255, 255, 255, 0.03);
}
