@charset "UTF-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@400;500;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;700&display=swap');

:root {
  --ink: #333;
  --blue: #384aaa;
  --cyan: #5aecff;
  --paper: #fff;
  --mist: #edede8;
  --serif: 'Noto Serif TC', -apple-system, BlinkMacSystemFont, serif;
  --sans: 'Noto Sans TC', -apple-system, BlinkMacSystemFont, Meiryo, sans-serif;
}
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.75;
}
a {
  color: inherit;
  text-decoration: none;
}
button {
  font: inherit;
}
.hero {
  height: 100vh;
  /* height: 100dvh; */
  position: relative;
  overflow: hidden;
  color: #fff;
  background: linear-gradient(130deg, #183f52 0%, #678fa0 43%, #dfe9e9 100%);
}
.hero:before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at 50% 85%,
      rgba(255, 255, 255, 0.75),
      transparent 24%
    ),
    linear-gradient(165deg, transparent 45%, rgba(14, 37, 43, 0.52) 100%);
}
.hero:after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      115deg,
      transparent 55%,
      rgba(255, 255, 255, 0.28) 55.2%,
      transparent 56%
    ),
    linear-gradient(
      75deg,
      transparent 68%,
      rgba(255, 255, 255, 0.2) 68.2%,
      transparent 69%
    );
  opacity: 0.7;
}
.hero__ornament {
  position: absolute;
  top: 8%;
  left: 5%;
  font-size: 11px;
  letter-spacing: 5px;
  line-height: 1.4;
  opacity: 0.7;
  z-index: 1;
}
.hero__ornament span {
  color: var(--cyan);
}
.hero__logo {
  margin: 0;
  position: absolute;
  top: 17%;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--serif);
  font-size: 25px;
  writing-mode: vertical-rl;
  letter-spacing: 8px;
  z-index: 1;
}
.hero__copy {
  position: absolute;
  z-index: 1;
  top: 47%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  color: var(--cyan);
  font-family: var(--serif);
  white-space: nowrap;
}
.hero__copy strong {
  font: 700 112px Tangerine;
  color: var(--cyan);
  margin-right: 14px;
}
.hero__copy span {
  font-size: 28px;
  color: #fff;
}
.hamburger {
  display: none;
  position: fixed;
  right: 22px;
  top: 22px;
  background: none;
  border: 0;
  z-index: 10;
}
.hamburger i {
  display: block;
  width: 25px;
  height: 1px;
  background: #fff;
  margin: 6px;
}
.scroll-mark {
  position: absolute;
  z-index: 2;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 11px;
  color: var(--blue);
  text-align: center;
}
.scroll-mark span {
  display: block;
  background: #fff;
  border-radius: 11px;
  padding: 1px 12px;
}
.scroll-mark b {
  display: block;
  width: 1px;
  height: 30px;
  background: #fff;
  margin: 2px auto;
}
.side-menu {
  position: fixed;
  z-index: 5;
  top: 0;
  left: 0;
  width: 196px;
  height: 100vh;
  /* height: 100svh; */
  padding: 45px 28px;
  background: rgba(23, 73, 186, 0.97);
  color: #fff;
}
.side-menu__brand {
  font-family: var(--serif);
  font-size: 24px;
  line-height: 1.1;
  margin-bottom: 150px;
}
.side-menu__brand small {
  font: 10px var(--sans);
  letter-spacing: 2px;
  color: var(--cyan);
}
.side-menu a {
  display: block;
  font-size: 14px;
  margin: 20px 0;
}
.side-menu a.is-active {
  font-weight: 700;
  font-size: 18px;
  color: var(--cyan);
}
.theme {
  position: relative;
  background: #fff;
}
.theme-visual {
  height: 720px;
  position: relative;
  overflow: hidden;
  background-color: #78959b;
}
.theme-visual:before,
.spot__image:before,
.event-image:before,
.night-image:before,
.photo:before,
.transport-image:before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      140deg,
      rgba(20, 49, 56, 0.15),
      rgba(255, 255, 255, 0.25) 45%,
      rgba(15, 31, 38, 0.38)
    ),
    radial-gradient(
      ellipse at 25% 20%,
      rgba(255, 255, 255, 0.56),
      transparent 20%
    ),
    linear-gradient(
      160deg,
      transparent 55%,
      rgba(15, 44, 57, 0.35) 56%,
      transparent 57%
    );
}
.visual-castle {
  background: linear-gradient(
    155deg,
    #718f95 0 30%,
    #d5e1df 31% 56%,
    #63757a 57% 100%
  );
}
.visual-food {
  background: linear-gradient(
    135deg,
    #352b24,
    #bd9f78 45%,
    #3d2e25 46%,
    #e7d6b6 80%,
    #744b2e
  );
}
.visual-onsen {
  background: linear-gradient(
    145deg,
    #c7dbe0 0 38%,
    #6a939e 39% 61%,
    #dee6e1 62% 100%
  );
}
.visual-snow {
  background: linear-gradient(
    145deg,
    #9ab4bf,
    #edf5f2 47%,
    #8ea5ad 48%,
    #dbe7e4
  );
}
.theme-visual__shade {
  position: absolute;
  right: 0;
  top: 0;
  width: 31.5%;
  height: 100%;
  background: rgba(0, 0, 0, 0.6);
}
.visual-label {
  position: absolute;
  right: 5%;
  top: 8%;
  width: 24%;
  font-family: var(--serif);
  font-size: 28px;
  line-height: 2;
  color: #fff;
}
.theme-content {
  max-width: 1092px;
  margin-right: auto;
  margin-left: auto;
  padding: 65px 30px 120px;
}
.eyebrow {
  font-size: 11px;
  letter-spacing: 3px;
  color: var(--blue);
  margin: 0 0 10px;
}
.theme h2,
.section-head h2 {
  font: 400 36px/1.6 var(--serif);
  margin: 0 0 48px;
}
.spot-list {
  display: flex;
  flex-direction: column;
  gap: 40px;
}
.spot {
  display: grid;
  grid-template-columns: 400px 1fr;
  gap: 40px;
  align-items: start;
}
.spot__image {
  height: 270px;
  position: relative;
  overflow: hidden;
}
.image-castle {
  background-color: #789;
  margin: 0 0 16px;
}
.mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 27px;
  margin-right: 12px;
  background: var(--blue);
  color: #fff;
  font-size: 13px;
}
.spot p {
  margin: 0 0 16px;
  line-height: 1.75;
}
.spot small {
  display: block;
  line-height: 1.8;
  margin-bottom: 14px;
}
.small-btn {
  display: inline-flex;
  border: 1px solid #ddd;
  border-radius: 16px;
  padding: 3px 16px;
  line-height: 24px;
  font-size: 14px;
  background: #fff;
}
.theme--food,
.theme--onsen,
.theme--snow {
  background: #f8f8f4;
}
.more {
  position: relative;
  overflow: hidden;
  padding: 96px 0 130px;
  background: linear-gradient(#e0f2ff, #97cbef 55%, #3e6f9a);
  color: #fff;
}
.more__stars {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 12% 18%, #fff 0 2px, transparent 3px),
    radial-gradient(circle at 82% 14%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 48% 38%, #fff 0 2px, transparent 3px);
  opacity: 0.45;
}
.section-head,
.section-head {
  position: relative;
  max-width: 1092px;
  margin: 0 auto;
  padding-right: 30px;
  padding-left: 30px;
  text-align: center;
}
.more-inner {
  position: relative;
  max-width: 964px;
  margin: 0 auto;
  padding-right: 30px;
  padding-left: 30px;
  text-align: center;
}
.section-head h2 {
  margin-bottom: 14px;
}
.more .section-head .eyebrow {
  color: var(--blue);
}
.more .section-head h2 {
  color: #2c2c2c;
}
.more .section-head > p:last-child {
  color: #333;
}
.more-inner {
  margin-top: 68px;
}
.subhead {
  font: 400 36px var(--serif);
  margin: 0 0 32px;
  color: #2c2c2c;
}
.subhead--light {
  color: #fff;
  margin-top: 80px;
}
.photo-grid {
  display: grid;
  grid-template-columns: repeat(3, 280px);
  gap: 32px;
  justify-content: center;
}
.photo {
  height: 280px;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 0 12px 24px;
  background: #789;
}
.photo:before {
  background: linear-gradient(transparent 45%, rgba(0, 0, 0, 0.35));
}
.photo__tags > span {
  position: relative;
  background: #fff;
  color: #2c2c2c;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 14px;
}
.photo b {
  position: absolute;
  right: 14px;
  bottom: 14px;
  color: #fff;
  font-size: 28px;
}
.night-list article {
  display: grid;
  grid-template-columns: 315px 1fr;
  gap: 32px;
  align-items: start;
}
.night-image {
  height: 200px;
  position: relative;
}
.night-1 {
  background-color: #789;
  margin: 0;
}
.night-list p {
  margin: 0 0 14px;
}
.events {
  padding: 96px 0 80px;
  background: var(--mist);
}
.event-block {
  width: 1400px;
  margin: 70px auto 0;
  text-align: center;
}
.event-block > h3 {
  font: 400 36px var(--serif);
  margin: 0 0 32px;
}
.event-scroll {
  display: flex;
  gap: 40px;
  justify-content: center;
}
.event-card {
  width: 320px;
  min-height: 524px;
  padding-bottom: 24px;
  text-align: left;
  background: #fff;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.12);
}
.event-image {
  height: 216px;
  position: relative;
}
.event-card h4 {
  font-weight: 700;
  margin-top: 20px;
  margin-bottom: 4px;
}
.event-card p {
  margin-top: 0;
  line-height: 1.75;
}
.event-card small {
  margin-top: 16px;
  background: #f0f0ec;
  padding: 2px 8px;
  width: max-content;
}
.event-card > b {
  font-weight: 400;
  margin-top: 4px;
}
.event-card .small-btn {
  margin: 20px auto 0;
  display: flex;
  width: max-content;
}
.course {
  width: 1400px;
  margin: 80px auto 0;
  padding: 70px 20px;
  text-align: center;
  background: linear-gradient(100deg, #64899d, #dce9e5, #64899d);
  color: #fff;
}
.course h3 {
  font: 400 28px var(--serif);
}
.course a {
  display: inline-block;
  margin: 20px 8px 0;
  padding: 18px 50px;
  background: #fff;
  color: var(--blue);
  border-radius: 32px;
}
.basic {
  padding: 80px 0 120px;
}
.basic > .section-head {
  margin-bottom: 60px;
}
.access,
.transport,
.tips {
  width: 900px;
  margin: 0 auto;
}
.access {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 70px;
  align-items: center;
}
.access h3,
.transport h3,
.tips h3 {
  font: 400 32px var(--serif);
  margin: 0 0 20px;
}
.map-placeholder {
  height: 300px;
  padding: 100px 20px;
  text-align: center;
  color: #fff;
  background-color: #789;
  background-size: cover;
  background-position: center;
  font: 400 32px var(--serif);
  margin: 10px;
}
.transport {
  padding-top: 80px;
}
.transport > h3 {
  text-align: center;
}
.transport-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
}
.transport-grid article {
  border: 1px solid #ddd;
  padding-bottom: 20px;
}
.transport-image {
  height: 170px;
  position: relative;
}
.bus {
  background: linear-gradient(145deg, #e2d8b9, #668795);
}
.cycle {
  background: linear-gradient(145deg, #7b9c82, #dae4d2);
}
.transport h4,
.transport p {
  margin: 10px 20px;
}
.transport > .small-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 272px;
  height: 64px;
  margin: 32px auto 0;
  padding: 0 40px;
  gap: 4px;
  border: 0;
  border-radius: 32px;
  background: #fff;
  color: #2c2c2c;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.12);
  font-size: 16px;
  font-weight: 500;
  line-height: normal;
  white-space: nowrap;
}
.tips {
  padding-top: 90px;
}
.tips > h3 {
  text-align: center;
  font-size: 36px;
}
.tips > p {
  text-align: center;
}
.tips-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
  margin-top: 32px;
}
.tips-grid article {
  padding: 32px 24px;
  background: #f3f3ee;
}
.tips-grid b {
  font-weight: 700;
}
.tips-grid p {
  line-height: 1.8;
}
.tips-grid a {
  font-size: 14px;
}
footer {
  padding: 40px;
  text-align: center;
  background: #193645;
  color: #fff;
}
footer div {
  font: 28px var(--serif);
}
footer small {
  font: 10px var(--sans);
  letter-spacing: 2px;
}
footer p {
  font-size: 12px;
  margin: 20px 0 0;
}
.sp-only {
  display: none;
}
@media (min-width: 768px) and (max-width: 1588px) {
  .theme-content {
    margin-left: 248px;
  }
}
@media (min-width: 768px) and (max-width: 1147px) {
  .spot-list .spot {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 767px) {
  .hero {
    height: 100vh;
    /* height: 100dvh; */
  }
  .hero__ornament {
    top: 6%;
    left: 7%;
    font-size: 9px;
  }
  .hero__logo {
    top: 11%;
    font-size: 18px;
  }
  .hero__copy {
    top: 44%;
  }
  .hero__copy strong {
    font-size: 76px;
  }
  .hero__copy span {
    font-size: 18px;
  }
  .hamburger {
    display: block;
  }
  .side-menu {
    display: none;
  }
  .theme-visual {
    height: 667px;
  }
  .theme-visual__shade {
    display: none;
  }
  .visual-label {
    right: 8%;
    top: 7%;
    width: auto;
    font-size: 20px;
  }
  .theme-content {
    max-width: 100%;
    margin-right: auto;
    margin-left: auto;
    padding: 56px 30px 80px;
  }
  .eyebrow {
    font-size: 10px;
  }
  .theme h2,
  .section-head h2 {
    font-size: 24px;
    line-height: 1.75;
    margin-bottom: 36px;
  }
  .spot-list {
    gap: 48px;
  }
  .spot {
    display: flex;
    flex-direction: column;
    gap: 24px;
  }
  .spot__image {
    width: 100%;
    height: 213px;
  }
  .spot h3 {
    font-size: 20px;
    line-height: 1.3;
    margin-bottom: 20px;
  }
  .spot p {
    line-height: 1.875;
  }
  .spot small {
    line-height: 1.65;
  }
  .spot .small-btn {
    margin-top: 4px;
  }
  .mark {
    width: 34px;
    height: 22px;
    margin-right: 11px;
  }
  .more {
    padding: 56px 30px 90px;
  }
  .section-head,
  .more-inner {
    max-width: 100%;
  }
  #more .more-inner,
  #basic > .section-head {
    padding-right: 0;
    padding-left: 0;
  }
  .more .section-head {
    text-align: center;
  }
  .more .section-head p:last-child {
    line-height: 1.8;
  }
  .more-inner {
    margin-top: 52px;
  }
  .subhead {
    font-size: 24px;
    margin-bottom: 28px;
  }
  .photo-grid {
    grid-template-columns: repeat(2, 150px);
    gap: 15px;
  }
  .photo {
    height: 150px;
    padding: 0 5px 8px;
  }
  .photo__tags > span {
    font-size: 11px;
  }
  .photo b {
    right: 5px;
    bottom: 3px;
    font-size: 20px;
  }
  .subhead--light {
    margin-top: 64px;
  }
  .night-list {
    gap: 40px;
  }
  .night-list article {
    display: flex;
    flex-direction: column;
    gap: 24px;
  }
  .night-image {
    width: 100%;
    height: 200px;
  }
  .night-list h4 {
    font-size: 20px;
  }
  .night-list p {
    line-height: 1.75;
  }
  .events {
    padding: 56px 0 60px;
  }
  .events > .section-head {
    padding: 0 30px;
  }
  .event-block {
    width: auto;
    margin-top: 52px;
    text-align: center;
  }
  .event-block > h3 {
    font-size: 24px;
  }
  .event-scroll {
    justify-content: flex-start;
    overflow-x: auto;
    gap: 24px;
    padding: 0 30px 14px;
  }
  .event-card {
    flex: 0 0 280px;
    min-height: 526px;
  }
  .event-image {
    height: 189px;
  }
  .event-card h4,
  .event-card p,
  .event-card small,
  .event-card > b {
    margin-left: 20px;
    margin-right: 20px;
  }
  .course {
    width: auto;
    margin-top: 60px;
    padding: 48px 30px;
  }
  .course h3 {
    font-size: 24px;
  }
  .course a {
    display: block;
    margin: 16px 0 0;
    padding: 14px 10px;
  }
  .basic {
    padding: 56px 30px 80px;
  }
  .basic > .section-head {
    margin-bottom: 48px;
  }
  .transport,
  .tips {
    width: auto;
  }
  .access {
    display: flex;
    flex-direction: column;
    gap: 24px;
    align-items: stretch;
  }
  .access h3,
  .transport h3,
  .tips h3 {
    font-size: 24px;
  }
  .map-placeholder {
    width: 900px;
    height: 320px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  .access {
    overflow: hidden;
  }
  .transport {
    padding-top: 56px;
  }
  .transport-grid {
    display: flex;
    overflow-x: auto;
    gap: 20px;
  }
  .transport-grid article {
    flex: 0 0 280px;
  }
  .tips {
    padding-top: 64px;
  }
  .tips-grid {
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  .tips-grid article {
    min-height: 240px;
    padding: 24px;
  }
  .sp-only {
    display: block;
  }
}

/* Integrated Figma assets and layout corrections. */
/* Figma assets. Loaded after style.css so these rules replace placeholders. */
.hero,
.theme-visual,
.photo {
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}

.hero {
  background-image: url("../img/hero.jpg");
}
.spot__image > img,
.photo > img,
.night-image > img,
.event-image > img,
.tour-image > img,
.transport-image > img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.photo > img {
  z-index: 0;
}
.photo::before {
  z-index: 1;
}
.map-placeholder__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.spot__image::before,
.event-image::before,
.night-image::before,
.transport-image::before {
  background: none;
}
@media (max-width: 767px) {
  .hero {
    background-image: url("../img/hero_sp.jpg");
    background-position: left bottom;
  }
}

/* Layout corrections based on the PC/SP Figma frames. */
.spot h3 {
  margin: 0 0 16px;
  font: 400 28px/1.4 var(--serif);
}
.event-image {
  border-radius: 8px 8px 0 0;
}
.map-placeholder {
  padding: 0;
}
.map-scroll-indicator {
  display: none;
}
.travel-fair {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 30px;
  padding-left: 30px;
  min-height: 596px;
  position: relative;
  overflow: hidden;
  color: #2c2c2c;
  background: url("../img/travel-fair-bg.png") center/cover no-repeat;
}
.travel-fair__wrapper {
  display: grid;
  grid-template-columns: minmax(0, 480px) minmax(0, 371px);
  column-gap: 50px;
  align-items: start;
  width: 911px;
  max-width: 100%;
  margin-right: auto;
  margin-left: auto;
}
.travel-fair__content {
  width: 100%;
  max-width: 480px;
  margin: 0;
  padding: 70px 0;
}
.travel-fair h2 {
  margin: 0 0 28px;
  font: 600 40px/1.6 var(--serif);
}
.travel-fair__content p {
  margin: 0 0 10px;
  line-height: 1.875;
}
.travel-fair dl {
  margin-top: 24px;
}
.travel-fair dt {
  font-weight: 700;
}
.travel-fair dd {
  margin: 4px 0;
}
.travel-fair__gifts {
  position: relative;
  align-self: start;
  width: 100%;
  max-width: 293px;
  height: 367px;
  margin-top: 94px;
}
.travel-fair__gifts img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Figma-aligned PC navigation and KV artwork. */
.side-menu__brand {
  width: 132px;
  height: 55px;
  margin: 0 0 140px;
}
.side-menu__brand img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.side-menu a {
  margin: 0 0 24px;
  color: #fff;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.4;
  white-space: normal;
}
.side-menu a.is-active {
  color: #5aecff;
  font-size: 18px;
  font-weight: 700;
}
.hero__logo {
  top: 128px;
  width: 359px;
  height: 416px;
  writing-mode: initial;
}
.hero__logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.hero::before,
.hero::after {
  content: none;
}

/* Theme visual: 720px image plus Figma's 280px fade. */
.theme-visual {
  height: 1000px;
}
.theme-visual::before {
  content: none;
}
.theme-visual::after {
  content: "";
  position: absolute;
  z-index: 1;
  left: 0;
  right: 0;
  bottom: 0;
  height: 280px;
  background: linear-gradient(to bottom, transparent, #fff 86%);
}
.theme--food .theme-visual::after,
.theme--onsen .theme-visual::after,
.theme--snow .theme-visual::after {
  background: linear-gradient(to bottom, transparent, #f8f8f4 86%);
}
.theme-visual__shade {
  z-index: 2;
  width: 440px;
  background: rgba(0, 0, 0, 0.6);
}
.visual-copy {
  min-height: 100vh;
  /* min-height: 100svh; */
  padding: 64px 40px;
  color: #fff;
  font-family: var(--serif);
}
.visual-copy h2 {
  margin: 0 0 32px;
  font: 400 28px/1.45 var(--serif);
}
.visual-copy p {
  margin: 0 0 18px;
  font-size: 18px;
  line-height: 2;
}
.theme-content {
  position: relative;
  z-index: 3;
}
.theme-content > .eyebrow {
  display: none;
}
.theme-content .small-btn {
  border: 1px solid #ddd;
  background: #fff;
  color: #333;
}
.feature-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 320px;
  height: 64px;
  margin: 56px auto 0;
  border-radius: 32px;
  background: #fff;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.12);
}
.theme .feature-btn {
  border: 0;
  background: #5aecff;
  color: #2c2c2c;
}

/* Figma number glyphs replace the temporary text badges. */
.mark {
  width: 44px;
  height: 28px;
  flex: 0 0 44px;
  background: transparent center/contain no-repeat;
  color: transparent;
  font-size: 0;
}
.spot:nth-child(1) .mark {
  background-image: url("../img/spot-number-01.svg");
}
.spot:nth-child(2) .mark {
  background-image: url("../img/spot-number-02.svg");
}
.spot:nth-child(3) .mark {
  background-image: url("../img/spot-number-03.svg");
}
.spot:nth-child(4) .mark {
  background-image: url("../img/spot-number-04.svg");
}
.spot:nth-child(5) .mark {
  background-image: url("../img/spot-number-05.svg");
}
.spot h3 {
  display: flex;
  align-items: center;
}

/* MORE background combines the exported landscape with the Figma gradient. */
.more {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: linear-gradient(
    to bottom,
    #97cbef 0%,
    #e0f2ff 52.2%,
    #97cbef 100%
  );
}
.more::before {
  content: "";
  position: absolute;
  z-index: -3;
  top: 60px;
  left: -3%;
  width: 113%;
  height: 66%;
  background: url("../img/more-bg.png") top center/100% 100% no-repeat;
}
.more::after {
  content: "";
  position: absolute;
  z-index: -2;
  inset: 0;
  background-image:
    url("../img/more-vector-1.svg"), url("../img/more-vector-2.svg");
  background-position:
    center 31%,
    center bottom;
  background-size:
    100% auto,
    100% calc(100% - 610px);
  background-repeat: no-repeat;
  pointer-events: none;
}
.more__stars {
  display: none;
}
.more-inner {
  position: relative;
  z-index: 1;
}
.night-list,
.night-list article,
.night-list article > div {
  text-align: left;
}
.photo {
  display: block;
  padding: 0;
}
.photo-grid .photo > b {
  position: absolute;
  z-index: 3;
  right: 0;
  bottom: 0;
  display: block;
  width: 35px;
  height: 35px;
  background: url("../img/photo-zoom.svg") center/100% 100% no-repeat;
  color: transparent;
  font-size: 0;
}
.photo__tags > span {
  position: static;
}
.photo-grid .photo .photo__tags {
  position: absolute !important;
  z-index: 2;
  display: block;
  max-width: calc(100% - 48px);
  padding: 0;
  border-radius: 0;
  background: none;
  color: inherit;
  font-size: inherit;
}
.photo__tags > span {
  display: table;
  width: max-content;
  max-width: 100%;
  margin: 0 0 4px;
  padding: 4px 8px 5px;
  border-radius: 4px;
  background: #fff;
  color: #2c2c2c;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.2;
  text-align: left;
  white-space: normal;
}
.tags-top-left .photo__tags {
  top: 12px;
  left: 12px;
}
.tags-top-right .photo__tags {
  top: 12px;
  right: 12px;
  text-align: right;
}
.tags-bottom-left .photo__tags {
  bottom: 12px;
  left: 12px;
}
.tags-bottom-right .photo__tags {
  right: 12px;
  bottom: 12px;
  text-align: right;
}
.night-list {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.night-list article {
  margin: 0;
  gap: 32px;
}
.night-list article > div:last-child {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
}
.night-list h4,
.night-list p,
.night-list .small-btn {
  margin: 0;
}
.night-list h4 {
  color: #fff;
  font: 400 20px/1.4 var(--serif);
}
.night-list p {
  color: #fff;
  line-height: 28px;
}
.night-list .small-btn {
  border: 1px solid #ddd;
  background: #fff;
  color: #333;
}
@media (max-width: 767px) {
  .more::after {
    background-size:
      100% auto,
      100% calc(100% - 447.238px);
  }
  .night-list {
    gap: 40px;
  }
  .night-list article {
    gap: 24px;
  }
}

/* Event card content inset: 24px on PC, 20px on SP. */
.event-card > h4,
.event-card > p,
.event-card > small,
.event-card > b {
  display: block;
  margin-right: 24px;
  margin-left: 24px;
}
.event-card > h4 {
  margin-top: 20px;
  margin-bottom: 4px;
}
.event-card > p {
  margin-top: 0;
}
.event-card > small {
  margin-top: 16px;
}
.event-card > b {
  margin-top: 4px;
}
.event-block .event-card small {
  min-width: 80px;
  height: 25px;
  padding: 4px 8px;
  background: url("../img/event-label.svg") center/100% 100% no-repeat;
  color: #2c2c2c;
  font-size: 13px;
  line-height: 17px;
  text-align: center;
}
.btn-wh {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 272px;
  height: 64px;
  border-radius: 32px;
  background: #fff;
  color: #2c2c2c;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.16);
  text-decoration: none;
}
.tour-block {
  width: 1400px;
  margin: 96px auto 0;
  text-align: center;
}
.tour-block > h3 {
  margin: 0 0 32px;
  font: 400 36px/1 var(--serif);
}
.tour-scroll {
  display: flex;
  gap: 40px;
  overflow-x: auto;
}
.tour-scroll article {
  flex: 0 0 320px;
  overflow: hidden;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.12);
  text-align: left;
}
.tour-image {
  position: relative;
  width: 320px;
  height: 216px;
}
.tour-scroll article > div:last-child {
  padding: 20px 24px;
}
.tour-scroll h4,
.tour-scroll p {
  margin: 0;
  font-size: 16px;
  line-height: 28px;
}
.tour-scroll h4 {
  font-weight: 700;
}
.tour-more {
  margin: 32px auto 0;
}
.model-course {
  display: flex;
  position: relative;
  isolation: isolate;
  width: 100%;
  height: auto;
  margin: 96px auto;
  padding-bottom: 56px;
  overflow: hidden;
  flex-direction: column;
  align-items: center;
  background: #478ec9;
  background-size: cover;
}
.model-course::before,
.model-course::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  pointer-events: none;
}
.model-course::before {
  background: url("../img/model-course-gradient.png") center 12.7% / 100% auto
    no-repeat;
  background-size: cover;
  opacity: 0.8;
}
.model-course::after {
  z-index: -1;
  background: url("../img/model-course-mask.png") center / 100% 100% no-repeat;
  background-size: cover;
}
.model-course h3 {
  margin: 72px 0 0;
  color: #2c2c2c;
  font: 400 36px/1 var(--serif);
}
.model-course > p {
  margin: 20px 0 36px;
  color: #2c2c2c;
  font-size: 20px;
  line-height: 36px;
}
.model-course > div {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 24px;
}
.model-course .btn-wh {
  width: 466px;
  padding: 0 40px;
}
.course {
  width: 599px;
  margin: 0 auto;
  padding: 0;
  color: #2c2c2c;
  background: none;
}
.course h3 {
  margin: 0 0 32px;
  font: 400 36px/1 var(--serif);
  text-align: center;
}
.course p {
  margin: 0 auto 12px;
  max-width: 548px;
}
.course img {
  display: block;
  width: 320px;
  height: 72px;
  margin: 12px auto;
  object-fit: contain;
}
.course .feature-btn {
  display: flex;
  gap: 4px;
  width: 218px;
  padding: 0 40px;
  margin-right: auto;
  margin-left: auto;
  color: #2c2c2c;
  white-space: nowrap;
}
.course .feature-btn span {
  white-space: nowrap;
}
.course .feature-btn__icon {
  width: 22px;
  height: 22px;
  margin: 0;
  object-fit: contain;
}
.feature-btn {
  margin-right: auto;
  margin-left: auto;
}

/* Basic information follows the stacked 900px Figma layout. */
.access {
  display: flex;
  width: 900px;
  flex-direction: column;
  gap: 30px;
  text-align: center;
}
.access h3 {
  display: flex;
  margin: 0;
  flex-direction: column;
  align-items: center;
  color: #2c2c2c;
  font-family: var(--serif);
  font-weight: 400;
}
.access h3 span {
  font-size: 32px;
  line-height: 1.35;
}
.access h3 small {
  margin-top: -2px;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.35;
}
.access > div:first-child > p {
  margin-top: 32px;
  font-size: 16px;
  line-height: 28px;
}
.map-placeholder {
  width: 900px;
  height: 527px;
  margin: 0;
  background-size: cover;
}
.transport-grid {
  display: flex;
  flex-direction: column;
  gap: 32px;
}
.transport-grid article {
  display: grid;
  grid-template-columns: 1fr 300px;
  grid-template-rows: auto 1fr;
  min-height: 170px;
  padding: 0;
  border: 0;
}
.transport-image {
  grid-column: 2;
  grid-row: 1 / 3;
  height: 170px;
}
.transport h4,
.transport p {
  grid-column: 1;
  margin: 0 40px 12px 0;
}
.transport h4 {
  align-self: end;
  font: 400 18px/1.35 var(--serif);
  font-weight: bold;
}
.transport h4 small {
  display: block;
  margin-bottom: 1px;
  font: 400 12px/1.2 var(--sans);
  font-weight: normal;
}
.tips-grid {
  grid-template-columns: repeat(3, 273px);
  gap: 40px;
  justify-content: center;
}
.tips-grid article {
  position: relative;
  overflow: hidden;
  padding: 155px 24px 24px;
  background: #edede8;
  text-align: left;
}
.tips-grid article::before {
  content: "";
  position: absolute;
  top: 24px;
  left: 50%;
  width: 86px;
  height: 81px;
  transform: translateX(-50%);
  background: url("../img/tips-icon-pc-01.svg") center/contain no-repeat;
}
.tips-grid article:nth-child(2)::before {
  background-image: url("../img/tips-icon-pc-02.svg");
}
.tips-grid article:nth-child(3)::before {
  background-image: url("../img/tips-icon-pc-03.svg");
}
.tips-grid article:nth-child(4)::before {
  background-image: url("../img/tips-icon-pc-04.svg");
}
.tips-grid article:nth-child(5)::before {
  background-image: url("../img/tips-icon-pc-05.svg");
}
.tips-grid article:nth-child(6)::before {
  background-image: url("../img/tips-icon-pc-06.svg");
}
.tips-grid b {
  display: block;
  margin-bottom: 16px;
  text-align: center;
}
.tips-grid a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: transparent;
  font-size: 0;
}
.tips-grid a::before {
  content: "查看詳情";
  color: #2c2c2c;
  font-size: 14px;
}
.tips-grid a::after {
  content: "";
  width: 10px;
  height: 10px;
  background: url("../img/tips-arrow-a-pc.svg") center/contain no-repeat;
}
.tips-grid article:nth-child(6) a::after {
  background-image: url("../img/tips-arrow-b-pc.svg");
}
footer {
  display: flex;
  min-height: 185px;
  padding: 40px;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  background: #243b79;
  color: #ddd;
}
footer img {
  display: block;
  width: 257px;
  height: 56px;
  object-fit: contain;
}
footer > a {
  display: block;
  width: 257px;
  height: 56px;
}
footer p {
  margin: 0;
  font-size: 14px;
  line-height: 17px;
}

/* Figma node 52:2768: horizontal PC global menu. */
@media (min-width: 768px) {
  #global-menu {
    display: flex;
    position: fixed;
    z-index: 20;
    top: 0;
    left: 0;
    width: 100%;
    height: 60px;
    padding: 0;
    align-items: center;
    justify-content: center;
    gap: 24px;
    background: transparent;
    color: #fff;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
  }
  #global-menu .side-menu__brand {
    display: none;
  }
  #global-menu a,
  #global-menu a.is-active {
    width: auto;
    margin: 0;
    color: #fff;
    font-size: 15px;
    font-weight: 400;
    line-height: 18px;
  }

}

/* Figma slider01-04 / SP_slider01-04: vertical full-screen sliders. */
.theme-slider {
  position: relative;
  height: 100vh;
  /* height: 100svh; */
  overflow: hidden;
  background: #111;
}
.theme-slider .splide__track,
.theme-slider .splide__list {
  height: 100%;
}
.theme-slider::before {
  content: none;
}
.theme-slide {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  background-image: var(--slide-image);
  background-position: center;
  background-size: cover;
}
.theme-slider::after {
  content: "";
  position: absolute;
  z-index: 1;
  right: 0;
  bottom: 0;
  left: 0;
  height: 28%;
  background: linear-gradient(to bottom, transparent, #fff 92%);
  pointer-events: none;
}
.theme--food .theme-slider::after,
.theme--onsen .theme-slider::after,
.theme--snow .theme-slider::after {
  background: linear-gradient(to bottom, transparent, #f8f8f4 92%);
}
.theme-slide__shade {
  position: absolute;
  z-index: 2;
  top: 0;
  right: 0;
  width: 440px;
  min-height: 100%;
  background: rgba(0, 0, 0, 0.6);
}
.theme-slide .visual-copy {
  padding: 64px 40px 20%;
}
@media (max-width: 767px) {
  body.menu-open {
    overflow: hidden;
  }
  .side-menu {
    display: flex;
    position: fixed;
    inset: 0;
    width: 100%;
    /* height: 100svh; */
    padding: 190px 30px 40px 89px;
    flex-direction: column;
    align-items: flex-start;
    gap: 40px;
    overflow-y: auto;
    background: rgba(23, 73, 186, 0.97);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-12px);
    transition:
      opacity 0.2s ease,
      transform 0.2s ease,
      visibility 0.2s;
  }
  .menu-open .side-menu {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  .side-menu__brand {
    position: absolute;
    top: 57px;
    left: 66px;
    width: 160px;
    height: 69px;
    margin: 0;
  }
  .side-menu a,
  .side-menu a.is-active {
    width: 100%;
    margin: 0;
    color: #fff;
    font-size: 16px;
    font-weight: 400;
    line-height: normal;
  }
  .hamburger {
    top: 24px;
    right: 24px;
    width: 48px;
    height: 34px;
    padding: 0;
  }
  .hamburger i {
    position: absolute;
    right: 0;
    width: 48px;
    height: 2px;
    margin: 0;
  }
  .hamburger i:nth-child(1) {
    top: 0;
  }
  .hamburger i:nth-child(2) {
    top: 16px;
  }
  .hamburger i:nth-child(3) {
    top: 32px;
  }
  .menu-open .hamburger {
    top: 23px;
    right: 31px;
    width: 34px;
    height: 34px;
  }
  .menu-open .hamburger i:nth-child(1) {
    top: 50%;
    right: 50%;
    transform: translate(50%, -50%) rotate(45deg);
  }
  .menu-open .hamburger i:nth-child(2) {
    opacity: 0;
  }
  .menu-open .hamburger i:nth-child(3) {
    top: 50%;
    right: 50%;
    transform: translate(50%, -50%) rotate(-45deg);
  }
  .hamburger i {
    transition:
      transform 0.2s ease,
      opacity 0.2s ease;
  }
  .spot h3 {
    font-size: 20px;
    line-height: 30px;
  }
  .spot p {
    line-height: 28px;
  }
  .hero__logo {
    top: 86px;
    width: 280px;
    height: 370px;
  }
  .theme-visual {
    height: 667px;
  }
  .theme-visual::after {
    display: none;
  }
  .theme-visual__shade {
    display: block;
    width: 100%;
    background: linear-gradient(90deg, transparent 32%, rgba(0, 0, 0, 0.66));
  }
  .visual-copy {
    width: 64%;
    margin-left: auto;
    padding: 44px 28px;
    text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
  }
  .visual-copy h2 {
    margin-bottom: 22px;
    font-size: 22px;
  }
  .visual-copy p {
    font-size: 14px;
    line-height: 1.8;
  }
  .theme-slider {
    /* height: 100svh; */
    min-height: 0;
  }
  .theme-slide {
    height: 100vh;
    /* height: 100svh; */
    min-height: 0;
    background-size: auto 100%;
  }
  .theme-slider::after {
    height: 80px;
  }
  .theme-slide__shade {
    width: 100%;
    background: rgba(0, 0, 0, 0.65);
  }
  .theme-slide .visual-copy {
    width: auto;
    margin: 0;
    padding: 56px 32px 96px;
    text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
  }
  .theme-slide .visual-copy h2 {
    margin-bottom: 24px;
    font-size: 22px;
  }
  .theme-slide .visual-copy p {
    font-size: 16px;
    line-height: 28px;
  }
  .theme-content {
    max-width: 100%;
    margin-right: auto;
    margin-left: auto;
    padding-right: 30px;
    padding-left: 30px;
  }
  .spot__image {
    flex: 0 0 213px;
  }
  .feature-btn {
    width: 272px;
  }
  .event-card > h4,
  .event-card > p,
  .event-card > small,
  .event-card > b {
    margin-right: 20px;
    margin-left: 20px;
  }
  .model-course {
    width: 100%;
    height: auto;
    margin: 48px 0;
    padding-bottom: 98px;
    background-color: #478ec9;
    background-size: cover;
  }
  .model-course::before {
    background-image: url("../img/model-course-gradient-sp.png");
    background-position: center -110.85px;
    background-size: cover;
  }
  .model-course::after {
    background-image: url("../img/model-course-mask-sp.png");
    background-position: bottom center;
    background-size: cover;
  }
  .model-course h3 {
    margin: 37px 0 12px;
    padding: 0;
    font-size: 24px;
    line-height: normal;
    text-align: center;
  }
  .model-course > p {
    margin: 0 0 24px;
    padding: 0;
    font-size: 16px;
    line-height: 36px;
    text-align: center;
  }
  .model-course > div {
    width: 288px;
    justify-content: center;
    flex-wrap: wrap;
    flex-direction: column;
    gap: 16px;
  }
  .model-course .btn-wh {
    width: 288px;
    height: 64px;
    min-height: 0;
    padding: 8px 40px;
    line-height: 24px;
    text-align: center;
  }
  .tour-block {
    width: auto;
    margin-top: 60px;
  }
  .tour-block > h3 {
    font-size: 24px;
    line-height: normal;
  }
  .tour-scroll {
    gap: 16px;
  }
  .course {
    width: auto;
    padding-right: 30px;
    padding-left: 30px;
  }
  .course h3 {
    font-size: 24px;
    line-height: normal;
  }
  .course img {
    width: 260px;
    height: 58px;
  }
  .access {
    width: 100%;
    overflow: visible;
  }
  .access > div:first-child {
    margin-right: auto;
    margin-left: auto;
  }
  .map-placeholder {
    display: block;
    position: relative;
    left: -30px;
    width: 100vw;
    height: auto;
    height: 560px;
    flex: none;
    overflow-x: auto;
    overflow-y: hidden;
    font-size: 0;
    line-height: 0;
  }
  .map-placeholder__image {
    display: block;
    width: 900px;
    height: 560px;
    object-fit: cover;
  }
  .map-scroll-indicator {
    position: absolute;
    right: 12px;
    bottom: 12px;
    z-index: 1;
    display: block;
    width: 84px;
    height: 36px;
    opacity: 1;
    transition: opacity 0.8s ease;
    pointer-events: none;
  }
  .map-scroll-indicator.is-faded {
    opacity: 0;
  }
  .map-scroll-indicator.is-hidden {
    display: none;
  }
  .transport-grid article {
    display: block;
    flex: none;
    min-height: 0;
  }
  .transport-image {
    width: 100%;
    height: 186px;
    margin-bottom: 16px;
  }
  .transport h4,
  .transport p {
    margin: 0 0 12px;
  }
  .tips-grid {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .tips-grid article {
    width: 100%;
    max-width: 315px;
    padding-top: 126px;
  }
  .travel-fair {
    display: block;
    width: 100%;
    max-width: none;
    margin-right: 0;
    margin-left: 0;
    padding: 56px 30px 48px;
    min-height: 0;
    background-position: center;
  }
  .travel-fair__wrapper {
    display: block;
    width: 100%;
    max-width: none;
    margin-right: 0;
    margin-left: 0;
  }
  .travel-fair__content {
    width: auto;
    margin: 0;
    padding: 0;
  }
  .travel-fair h2 {
    font-size: 30px;
    line-height: 1.6;
  }
  .travel-fair__gifts {
    position: relative;
    inset: auto;
    width: min(293px, calc(100% - 20px));
    height: auto;
    aspect-ratio: 293 / 367;
    margin: 24px auto 0;
  }
}

/* Final background sizing policy. Keep after all component rules so shorthand
   declarations and responsive overrides cannot reset the intended sizing. */
.hero,
.theme-visual,
.travel-fair {
  background-size: cover;
}
.theme-slide {
  background-size: cover;
}
.more::before,
.photo-grid .photo > b,
.event-block .event-card small {
  background-size: 100% 100%;
}
.mark,
.tips-grid article::before,
.tips-grid a::after {
  background-size: contain;
}

@media (max-width: 767px) {
  .theme-slide {
    background-size: auto 100%;
  }
}

@media (min-width: 768px) {
  .access,
  .transport,
  .tips,
  .access > div:first-child {
    max-width: 100%;
  }
  .access {
    width: 960px;
  }
  .transport,
  .tips {
    width: 960px;
    padding-right: 30px;
    padding-left: 30px;
  }
  .access > div:first-child {
    padding-right: 30px;
    padding-left: 30px;
  }
  .map-placeholder {
    max-width: 100%;
  }
}

@media (min-width: 768px) and (max-width: 1199px) {
  .photo-grid,
  .tips-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Event and tour card sliders. */
.event-block,
.tour-block {
  width: 100%;
  max-width: 1460px;
  margin-right: auto;
  margin-left: auto;
  overflow: hidden;
}

@media (min-width: 768px) {
  .event-block,
  .tour-block {
    padding-right: 30px;
    padding-left: 30px;
  }
}

.card-splide .splide__track {
  position: relative;
  overflow: visible;
}

.card-splide .event-scroll,
.card-splide .tour-scroll {
  display: flex;
  justify-content: flex-start;
  gap: 0;
  padding: 0;
  overflow: visible;
}

.card-splide .splide__slide {
  flex: none;
  margin: 0;
}

.card-splide .splide__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 72px;
  height: 72px;
  border: 0;
  background-color: transparent;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  opacity: 1;
  z-index: 5;
}

.card-splide .splide__arrow--prev {
  left: 0;
  background-image: url("../img/arrow_l.svg");
}

.card-splide .splide__arrow--next {
  right: 0;
  background-image: url("../img/arrow_r.svg");
}

.card-splide .splide__arrow svg {
  display: none;
}

.card-splide .splide__arrow:disabled {
  opacity: 0;
  pointer-events: none;
}

@media (min-width: 768px) {
  .card-splide .splide__arrow--prev {
    left: -30px;
  }

  .card-splide .splide__arrow--next {
    right: -30px;
  }
}

.card-splide .event-card,
.card-splide .tour-scroll article {
  width: 100%;
}

@media (max-width: 767px) {
  .event-block,
  .tour-block {
    width: 100%;
    max-width: 100%;
  }

  .card-splide .splide__arrow {
    display: none;
  }

  .card-splide .splide__arrow--prev {
    left: 0;
  }

  .card-splide .splide__arrow--next {
    right: 0;
  }
}

body.modal-open {
  overflow: hidden;
}
.photo-modal {
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: #fff;
}
.photo-modal::backdrop {
  background: rgba(0, 0, 0, 0.85);
}
.photo-modal__inner {
  position: relative;
  display: flex;
  align-items: center;
  gap: 40px;
  width: min(100% - 160px, 1052px);
  min-height: 100%;
  margin: 0 auto;
}
.photo-modal__close {
  position: fixed;
  z-index: 2;
  top: 44px;
  right: 40px;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.photo-modal__close picture,
.photo-modal__close img {
  display: block;
  width: 100%;
  height: 100%;
}
.photo-modal__image-wrap {
  flex: 0 1 620px;
  aspect-ratio: 1;
  overflow: hidden;
}
.photo-modal__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.photo-modal__content {
  display: flex;
  flex: 0 0 304px;
  flex-direction: column;
  align-items: flex-start;
  gap: 24px;
  text-align: left;
}
.photo-modal__content h2,
.photo-modal__content p,
.photo-modal__content .small-btn {
  margin: 0;
}
.photo-modal__content h2 {
  color: #fff;
  font: 400 20px/28px var(--sans);
}
.photo-modal__description {
  color: #fff;
  font: 400 16px/28px var(--sans);
}
.photo-modal__link {
  border: 1px solid #ddd;
  background: #fff;
  color: #333;
}
@media (max-width: 767px) {
  .photo-modal__inner {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 24px;
    width: 100%;
    min-height: 100%;
    padding: 72px 0 32px;
  }
  .photo-modal__close {
    top: 24px;
    right: 20px;
    width: 40px;
    height: 40px;
  }
  .photo-modal__image-wrap {
    flex: none;
    width: 100%;
    aspect-ratio: 1;
  }
  .photo-modal__content {
    flex: none;
    gap: 24px;
    width: auto;
    margin: 0 32px;
  }
  .photo-modal__content h2 {
    display: none;
  }
}


.theme .splide,
.theme .splide__track,
.theme .splide__slide {
  height: 100vh; 
  /* height: 100svh; */
}

/* Theme visuals use scroll-driven fixed backgrounds instead of Splide. */
.theme-visual.theme-parallax {
  height: auto;
  overflow: visible;
  background: none;
}
.theme-visual.theme-parallax::after {
  display: none;
}
.theme-visual.theme-parallax::before {
  display: none;
}
.theme-parallax-slide {
  position: relative;
  display: flex;
  min-height: 100vh;
  /* min-height: 100svh; */
  overflow: visible;
  isolation: isolate;
}
.theme .theme-parallax-slide:first-of-type .theme-slide__shade {
  padding-top: 100vh;
  /* padding-top: 100svh; */
}
@media (min-width: 768px) {
  .theme .theme-parallax-slide:first-of-type {
    opacity: 0;
    transition: opacity 0.5s ease;
  }
  .theme .theme-parallax-slide:first-of-type.is-copy-visible {
    opacity: 1;
  }
}
.theme-parallax-slide::before {
  display: none;
}
.theme-parallax-backgrounds {
  position: absolute;
  z-index: 0;
  inset: 0;
  clip-path: inset(0);
}
.theme-parallax-background {
  position: fixed;
  inset: 0;
  background-position: center;
  background-size: cover;
  opacity: 0;
  transition: opacity 0.5s ease;
}
.theme-parallax-background.is-visible {
  opacity: 1;
}
.theme-parallax-slide .theme-slide__shade {
  position: relative;
  z-index: 2;
  width: 440px;
  margin-left: auto;
  min-height: 100vh;
  /* min-height: 100svh; */
}
@media (max-width: 767px) {
  .theme-parallax-slide {
    min-height: 0;
  }
  .theme-parallax-slide .theme-slide__shade {
    display: block;
    min-height: 0;
    padding-top: 100vh;
    /* padding-top: 100svh; */
    width: 100%;
    background: transparent;
    opacity: 0;
    transition: opacity 0.5s ease;
  }
  .theme-parallax-slide:not(:first-of-type) .theme-slide__shade {
    padding-top: 150vh;
    /* padding-top: 150svh; */
  }
  .theme-parallax-slide .visual-copy {
    min-height: 0;
  }
  .theme .theme-parallax-slide:last-of-type .visual-copy {
    min-height: 100vh;
    /* min-height: 100svh; */
  }
  .theme-parallax-slide .theme-slide__shade.is-visible {
    opacity: 1;
  }
  .theme-visual.theme-parallax::before {
    content: "";
    display: block;
    position: absolute;
    z-index: 1;
    inset: 0;
    background: rgba(0, 0, 0, 0.65);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.5s ease;
  }
  .theme-visual.theme-parallax.is-parallax-active::before {
    opacity: 1;
  }
}

@media (max-width: 767px) {
  .theme-parallax-slide {
    z-index: 2;
  }
  .theme-parallax-slide .visual-copy {
    width: 100%;
  }
}

/* Stack the major areas while scrolling. */
.hero {
  position: relative;
  top: 0;
  z-index: 0;
}
.theme {
  position: relative;
  z-index: 1;
}
.theme-visual {
  position: relative;
  top: 0;
  z-index: 0;
}
.theme-content {
  position: relative;
  z-index: 1;
}
.more {
  position: relative;
  z-index: 4;
}

/* Theme-only navigation follows the theme-stage and ends before #more. */
.theme-stage {
  position: relative;
  overflow: visible;
}
.theme-menu {
  display: none;
}
@media (min-width: 768px) {
  .theme-menu {
    display: block;
    position: absolute;
    align-self: flex-start;
    z-index: 20;
    top: 0;
    width: 218px;
    height: 100vh;
    /* height: 100svh; */
    min-height: 100vh;
    /* min-height: 100svh; */
    margin-bottom: 0;
    background: rgba(0, 0, 0, 0.75);
    color: #fff;
    padding: 64px 32px;
  }
  .theme-menu.is-theme-menu-fixed {
    position: fixed;
    top: 0;
    left: 0;
  }
  .theme-menu.is-theme-menu-ended {
    position: absolute;
    top: auto;
    left: 0;
  }
  .theme-menu__brand {
    display: block;
    width: 132px;
    height: 55px;
    margin-bottom: 140px;
  }
  .theme-menu__brand img {
    display: block;
    width: 148px;
    height: 64px;
    object-fit: contain;
  }
  .theme-menu a {
    display: block;
    margin: 0 0 24px;
    color: #fff;
    font-size: 14px;
    line-height: 1.4;
    text-shadow: none;
    white-space: normal;
  }
  .theme-menu a.is-active {
    color: #5aecff;
    font-size: 18px;
    font-weight: 700;
  }
}
