#facility_visual_scene {
   position: relative;
   height: 380vh;
}

.facility_visual_sticky {
   position: sticky;
   top: 0;
   width: 100%;
   height: 100vh;
   overflow: hidden;
}

.facility_visual_intro {
   position: absolute;
   left: 50%;
   top: 32%;
   z-index: 4;
   width: max-content;
   transform: translateX(-50%);
   text-align: center;
}

.facility_visual_title,
.tab_mo_facility_visual_title {
   margin: 0;
   font-family: "Bahnschrift", "Pretendard", sans-serif;
   font-weight: 600;
   font-stretch: semi-condensed;
   line-height: 1;
   letter-spacing: 0.04em;
}

.facility_visual_title {
   font-size: 140px;
}

.tab_mo_facility_visual_title {
   display: none;
}

.facility_visual_img {
   position: absolute;
   left: 50%;
   top: 85%;
   z-index: 5;
   width: clamp(560px, 37vw, 700px);
   aspect-ratio: 1.7 / 1;
   overflow: hidden;
   will-change: left, top, width, height, transform;
   --visualOverlay: 0.03;
}

.facility_visual_media {
   display: block;
   width: 100%;
   height: 100%;
   object-fit: cover;
   object-position: center;
   pointer-events: none;
}

.facility_visual_img::after {
   content: "";
   position: absolute;
   inset: 0;
   z-index: 2;
   background: rgba(0, 0, 0, var(--visualOverlay));
   pointer-events: none;
}

.facility_visual_text {
   position: absolute;
   left: 50%;
   top: 50%;
   z-index: 7;
   width: max-content;
   opacity: 0;
   visibility: hidden;
   text-align: center;
   pointer-events: none;
}

.facility_visual_text p {
   font-size: 56px;
   font-weight: 700;
   line-height: 1.45;
   color: var(--color-text-light);
   text-shadow: 0 4px 18px rgba(0, 0, 0, 0.25), 0 1px 4px rgba(0, 0, 0, 0.18);
}

.facility_hover_card {
   display: none;
}

@media screen and (min-width: 1025px) {
   .facility_visual_text {
      display: none !important;
   }

   .facility_dot_layer {
      position: absolute;
      inset: 0;
      z-index: 3;
      display: block;
      pointer-events: none;
   }

   .facility_dot {
      position: absolute;
      box-sizing: border-box;
      width: 20px;
      height: 20px;
      padding: 0;
      border: 1px solid #fff;
      border-radius: 50%;
      background: var(--color-brand);
      box-shadow:
         0 0 0 10px rgba(255, 255, 255, 0.3),   /* 안쪽 반투명 원 */
         0 0 0 20px rgba(255, 255, 255, 0.16),  /* 바깥 반투명 원 */
         0 3px 10px rgba(0, 0, 0, 0.22);
      opacity: 0;
      visibility: hidden;
      transform: translate(-50%, -50%) scale(0.4);
      transform-origin: center;
      cursor: pointer;
       pointer-events: auto;
       will-change: opacity, transform;
       transition: filter 0.22s ease;
    }

   .facility_dot::before {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 68px;
      height: 68px;
      border: 1px solid rgba(255, 255, 255, 0.65);
      border-radius: 50%;
      transform: translate(-50%, -50%);
      animation: facilityDotPulse 1.8s ease-out infinite;
      pointer-events: none;
   }

   .facility_dot::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 7px;
      height: 7px;
      border-radius: 50%;
      background: #fff;
      transform: translate(-50%, -50%);
      pointer-events: none;
   }

   .facility_dot_label {
      position: absolute;
      left: 50%;
      bottom: calc(100% + 16px);
      display: inline-flex;
      align-items: center;
      gap: 8px;
      width: max-content;
      padding: 6px 20px;
      border: 1px solid rgba(255, 255, 255, 0.72);
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.92);
      box-shadow: 0 8px 24px rgba(16, 34, 21, 0.18);
      color: var(--color-brand);
      font-size: clamp(13px, 1vw, 16px);
      font-weight: 500;
      line-height: 1.25;
      opacity: 0.94;
      visibility: visible;
      transform: translateX(-50%) translateY(0);
      transition:
         opacity 0.22s ease,
         transform 0.22s ease,
         color 0.22s ease,
         background-color 0.22s ease,
         border-color 0.22s ease,
         box-shadow 0.22s ease;
      pointer-events: none;
      white-space: nowrap;
      backdrop-filter: blur(8px);
   }

   .facility_dot_label::before {
      content: "";
      position: absolute;
      left: 50%;
      top: 100%;
      width: 1px;
      height: 16px;
      background: rgba(255, 255, 255, 0.78);
      transform: translateX(-50%);
   }

   .facility_dot:is(:hover, :focus-visible) {
      filter: brightness(1.08) drop-shadow(0 8px 18px rgba(0, 0, 0, 0.16));
   }

   .facility_dot_label::after {
      content: "CLICK";
      display: inline-flex;
      align-items: center;
      height: 18px;
      padding: 0 7px;
      border-radius: 999px;
      background: #fff;
      color: var(--color-brand);
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.03em;
      opacity: 0;
      transform: translateX(-4px);
      transition: opacity 0.2s ease, transform 0.2s ease;
   }

   .facility_dot:is(:hover, :focus-visible) .facility_dot_label::after {
      opacity: 1;
      transform: translateX(0);
   }

   .facility_dot.is-active .facility_dot_label::after {
      opacity: 0;
   }

   .facility_dot:is(:hover, :focus-visible) .facility_dot_label,
   .facility_dot.is-active .facility_dot_label {
      border-color: var(--color-brand);
      background: var(--color-brand);
      box-shadow: 0 10px 28px rgba(16, 34, 21, 0.28);
      color: #fff;
      opacity: 1;
      visibility: visible;
      transform: translateX(-50%) translateY(-3px);
   }

   .facility_dot:is(:hover, :focus-visible) .facility_dot_label::before,
   .facility_dot.is-active .facility_dot_label::before {
      height: 19px;
   }

   .facility_dot:focus-visible {
      outline: 3px solid rgba(255, 255, 255, 0.9);
      outline-offset: 5px;
   }

   .facility_hover_card {
      --facility-grid-edge: max(24px, calc((100vw - 1400px) / 2));
      display: block;
      position: absolute;
      left: var(--facility-grid-edge);
      right: auto;
      top: 50%;
      z-index: 4;
      box-sizing: border-box;
      width: 440px;
      padding: 30px;
      border-radius: 24px;
      background: #fff;
      box-shadow: 0 16px 40px rgba(0, 0, 0, 0.2);
      color: var(--color-text-secondary);
      opacity: 0;
      visibility: hidden;
      transform: translateY(calc(-50% + 14px));
      pointer-events: auto;
      will-change: opacity, transform;
   }

   .facility_hover_card.is-card-right {
      left: auto;
      right: var(--facility-grid-edge);
   }

   .facility_hover_card_head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 20px;
      margin-bottom: 26px;
   }

   .facility_hover_card_heading {
      display: flex;
      align-items: center;
      min-width: 0;
      gap: 12px;
   }

   .facility_hover_card_icon_box {
      display: inline-flex;
      flex: 0 0 40px;
      align-items: center;
      justify-content: center;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      background: var(--color-bg-soft);
   }

   .facility_hover_card_icon {
      width: 85%;
      height: 85%;
      object-fit: contain;
   }

   .facility_hover_card_title {
      color: var(--color-brand);
      font-size: 24px;
      font-weight: 600;
   }

   .facility_hover_card_close {
      position: relative;
      flex: 0 0 40px;
      width: 40px;
      height: 40px;
      padding: 0;
      border: 0;
      background: transparent;
      cursor: pointer;
   }

   .facility_hover_card_close::before,
   .facility_hover_card_close::after {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 18px;
      height: 2px;
      border-radius: 2px;
      background: var(--color-text-primary);
   }

   .facility_hover_card_close::before {
      transform: translate(-50%, -50%) rotate(45deg);
   }

   .facility_hover_card_close::after {
      transform: translate(-50%, -50%) rotate(-45deg);
   }

   .facility_hover_card_close:is(:hover, :focus-visible) {
      background: var(--color-bg-soft);
      border-radius: 50%;
   }

   .facility_hover_card_close:focus-visible {
      outline: 2px solid var(--color-brand);
      outline-offset: 2px;
   }

   .facility_hover_card_desc {
      margin: 0 0 26px;
      font-size: 16px;
      font-weight: 400;
      line-height: 1.5;
      color: var(--color-text-secondary);
   }

   .facility_hover_card_img {
      width: 380px;
      height: 250px;
      margin: 0 0 24px;
      overflow: hidden;
   }

   .facility_hover_card_img img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
   }

   .facility_hover_card_info {
      display: flex;
      flex-direction: column;
      gap: 4px;
      margin: 0;
      padding: 0;
      list-style: none;
   }

   .facility_hover_card_info li {
      position: relative;
      padding-left: 14px;
      font-size: 15px;
      font-weight: 400;
      color: var(--color-text-muted);
   }

   .facility_hover_card_info li::before {
      content: "";
      position: absolute;
      left: 0;
      top: 0.5em;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: var(--color-brand);
   }

   .facility_hover_card_info .tab_mo_facility_info_dot {
      display: none;
   }

   /* Facility dot positions: adjust these percentage values in DevTools. */
   .facility_dot_01 {
      left: 76%;
      top: 15%;
   }

   .facility_dot_02 {
      left: 27.8%;
      top: 45%;
   }

   .facility_dot_03 {
      left: 42.2%;
      top: 39.7%;
   }

   .facility_dot_04 {
      left: 58%;
      top: 32%;
   }

   .facility_dot_05 {
      left: 14.4%;
      top: 46.7%;
   }

   .facility_dot_06 {
      left: 37.6%;
      top: 60.6%;
   }

   .facility_dot_07 {
      left: 26.6%;
      top: 67.8%;
   }

   .facility_dot_08 {
      left: 66.5%;
      top: 49.7%;
   }

   .facility_dot_09 {
      left: 76%;
      top: 70.1%;
   }

   .facility_dot_10 {
      left: 50%;
      top: 87%;
   }
}

@keyframes facilityDotPulse {
   0% {
      opacity: 0.75;
      transform: translate(-50%, -50%) scale(0.72);
   }

   75%,
   100% {
      opacity: 0;
      transform: translate(-50%, -50%) scale(1.25);
   }
}

#tab_mo_facility_list {
   display: none;
}

.pc_facility_section_head {
   display: none;
}

@media screen and (min-width: 1025px) {
   .facility_hover_card {
      display: none !important;
   }

   .facility_dot_label::after {
      display: none;
   }

   #tab_mo_facility_list {
      display: block;
      padding: 180px 0 220px;
      background: var(--color-bg-base);
   }

   .pc_facility_section_head,
   .tab_mo_facility_inner {
      width: min(1600px, calc(100% - 120px));
      margin: 0 auto;
   }

   .pc_facility_section_head {
      display: grid;
      grid-template-columns: minmax(0, 1fr) minmax(320px, 0.55fr);
      align-items: end;
      column-gap: 80px;
      margin-bottom: 110px;
   }

   .pc_facility_section_eyebrow {
      grid-column: 1 / -1;
      margin-bottom: 28px;
      color: var(--color-brand);
      font-size: 16px;
      font-weight: 600;
      letter-spacing: 0.14em;
   }

   .pc_facility_section_head h2 {
      color: var(--color-text-primary);
      font-size: clamp(64px, 5vw, 92px);
      font-weight: 700;
      line-height: 1.08;
   }

   .pc_facility_section_head p {
      padding-bottom: 10px;
      color: var(--color-text-secondary);
      font-size: 18px;
      line-height: 1.8;
   }

   .tab_mo_facility_inner {
      display: flex;
      flex-direction: column;
      gap: 120px;
      counter-reset: pc-facility;
   }

   .tab_mo_facility_item {
      position: relative;
      display: grid;
      grid-template-columns: minmax(360px, 0.82fr) minmax(520px, 1.18fr);
      min-height: 560px;
      border-top: 1px solid rgba(102, 155, 69, 0.24);
      border-bottom: 1px solid rgba(102, 155, 69, 0.24);
      background: transparent;
      overflow: hidden;
      scroll-margin-top: 80px;
      counter-increment: pc-facility;
   }

   .tab_mo_facility_item:nth-child(even) .tab_mo_facility_img {
      order: 2;
   }

   .tab_mo_facility_item:nth-child(even) .tab_mo_facility_cont {
      order: 1;
   }

   .tab_mo_facility_item.is-targeted {
      background: transparent;
   }

   .tab_mo_facility_img {
      position: relative;
      min-width: 0;
      height: 100%;
      overflow: hidden;
      will-change: clip-path;
   }

   .tab_mo_facility_img img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
   }

   .tab_mo_facility_cont {
      position: relative;
      display: flex;
      flex-direction: column;
      justify-content: center;
      min-width: 0;
      padding: clamp(54px, 5vw, 90px);
      background: transparent;
      overflow: hidden;
      transition: background-color 0.45s ease;
   }

   .tab_mo_facility_item:hover .tab_mo_facility_cont,
   .tab_mo_facility_item.is-targeted .tab_mo_facility_cont {
      background: rgba(102, 155, 69, 0.055);
   }

   .tab_mo_facility_cont::after {
      content: "";
      position: absolute;
      left: clamp(54px, 5vw, 90px);
      top: 0;
      width: 72px;
      height: 3px;
      background: var(--color-brand);
   }

   .tab_mo_facility_head {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 26px;
      margin-bottom: 38px;
   }

   .tab_mo_facility_icon {
      display: none;
   }

   .tab_mo_facility_head::before {
      content: counter(pc-facility, decimal-leading-zero);
      flex: 0 0 auto;
      color: var(--color-brand);
      font-family: "Bahnschrift", "Pretendard", sans-serif;
      font-size: clamp(54px, 4.2vw, 76px);
      font-weight: 300;
      font-stretch: condensed;
      line-height: 1;
      opacity: 0.72;
   }

   .tab_mo_facility_title {
      color: var(--color-text-primary);
      font-size: clamp(34px, 2.4vw, 46px);
      font-weight: 700;
      line-height: 1.2;
   }

   .tab_mo_facility_desc {
      color: var(--color-text-secondary);
      font-size: 17px;
      line-height: 1.8;
   }

   .tab_mo_facility_info {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin-top: 42px;
      color: var(--color-text-secondary);
      font-size: 15px;
      line-height: 1.6;
   }

   .tab_mo_facility_info li {
      display: flex;
      align-items: flex-start;
      gap: 10px;
   }

   .tab_mo_facility_info_dot {
      flex: 0 0 4px;
      width: 4px;
      height: 4px;
      margin-top: 10px;
      border-radius: 50%;
      background: var(--color-brand);
   }

   .tab_mo_facility_head,
   .tab_mo_facility_desc,
   .tab_mo_facility_info {
      position: relative;
      z-index: 1;
      will-change: opacity, transform;
   }

   .tab_desc {
      display: block;
   }

   .mo_desc {
      display: none;
   }
}











/*------------------------------------
   Responsive
------------------------------------*/
@media (max-width: 1400px) {}




/*------------------------------------
   탭 버전
------------------------------------*/
@media screen and (min-width: 600px) and (max-width: 1024px) {
   #facility_visual_scene {
      height: 260svh;
   }

   .facility_visual_sticky {
      height: 100svh;
   }

   .facility_visual_intro {
      top: 20%;
      width: calc(100% - 48px);
   }

   .facility_visual_title {
      display: none;
   }

   .tab_mo_facility_visual_title {
      display: block;
      font-size: clamp(120px, 15.5vw, 160px);
   }

   .facility_visual_img {
      top: 65%;
      width: min(calc(100vw - 40px), clamp(560px, 75vw, 700px));
   }

   .facility_visual_text {
      display: block;
      width: max-content;
      max-width: calc(100% - 80px);
   }

   .facility_visual_text p {
      font-size: clamp(30px, 5vw, 56px);
   }

   .facility_dot_layer {
      display: none;
   }

   #pc_facility_map {
      display: none;
   }

   #tab_mo_facility_list {
      display: block;

      width: 100%;
      padding: 160px 0 80px 0;
   }

   .tab_desc {
      display: block;
   }

   .mo_desc {
      display: none;
   }

   .tab_mo_facility_inner {
      width: calc(100% - 48px);
      height: 100%;

      margin: 0 auto;

      display: flex;
      flex-direction: column;
      gap: 160px;
      counter-reset: facility-item;
   }

   .tab_mo_facility_item {
      display: flex;
      flex-direction: column;
      gap: 30px;
      counter-increment: facility-item;
   }

   .tab_mo_facility_img {
      width: 100%;
      height: clamp(340px, 42vw, 430px);
      overflow: hidden;
   }

   .tab_mo_facility_img img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center center;
   }

   .tab_mo_facility_cont {
      display: flex;
      flex-direction: column;
      gap: 25px;
   }

   .tab_mo_facility_head {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 16px;
   }

   .tab_mo_facility_icon {
      display: none;
   }

   .tab_mo_facility_head::before {
      content: counter(facility-item, decimal-leading-zero);
      color: var(--color-brand);
      font-family: "Bahnschrift", "Pretendard", sans-serif;
      font-size: clamp(44px, 6vw, 56px);
      font-weight: 300;
      font-stretch: condensed;
      line-height: 1;
      opacity: 0.72;
   }

   .tab_mo_facility_title {
      font-size: 28px;
      font-weight: 600;
      color: var(--color-brand);
   }

   .tab_desc {
      font-size: 17px;
      line-height: 1.15;
      color: var(--color-text-secondary);
   }

   .tab_mo_facility_info {
      display: flex;
      flex-direction: column;
      gap: 2px;

      margin-top: 5px;
   }

   .tab_mo_facility_info li {
      display: flex;
      align-items: center;
      gap: 2px;

      font-size: 15px;
      color: var(--color-text-muted);
   }

   .tab_mo_facility_info_dot {
      width: 4px;
      height: 4px;
      background-color: var(--color-brand);
      border-radius: 50%;
      margin: 6px;
   }
}




/*------------------------------------
   모바일 버전
------------------------------------*/
@media screen and (min-width: 300px) and (max-width: 599px) {
   #facility_visual_scene {
      height: 260svh;
   }

   .facility_visual_sticky {
      height: 100svh;
      background: #fff;
      --mo-img-w: calc(100vw - 40px);
      --mo-img-center-y: 70svh;
      --mo-img-half-h: calc(var(--mo-img-w) / 3.7016);
      --mo-title-gap: 25px;
   }

   .facility_visual_intro {
      left: 50%;
      top: auto;
      bottom: calc(100svh - var(--mo-img-center-y) + var(--mo-img-half-h) + var(--mo-title-gap));
      width: calc(100% - 40px);
      transform: translateX(-50%);
   }

   .facility_visual_title {
      display: none;
   }

   .tab_mo_facility_visual_title {
      display: block;
      font-size: clamp(60px, 18vw, 100px);
   }

   .facility_visual_img {
      left: 50%;
      top: var(--mo-img-center-y);
      width: var(--mo-img-w);
      aspect-ratio: 335 / 181;
   }

   .facility_visual_text {
      display: block;
      width: max-content;
      max-width: calc(100% - 40px);
   }

   .facility_visual_text p {
      font-size: clamp(28px, 7.5vw, 48px);
   }

   .facility_dot_layer {
      display: none;
   }

   #pc_facility_map {
      display: none;
   }

   #tab_mo_facility_list {
      display: block;

      width: 100%;
      padding: 100px 0 50px 0;
   }

   .tab_desc {
      display: none;
   }

   .mo_desc {
      display: block;
   }

   .tab_mo_facility_inner {
      width: calc(100% - 48px);
      height: 100%;

      margin: 0 auto;

      display: flex;
      flex-direction: column;
      gap: 100px;
      counter-reset: facility-item;
   }

   .tab_mo_facility_item {
      display: flex;
      flex-direction: column;
      gap: 20px;
      counter-increment: facility-item;
   }

   .tab_mo_facility_img {
      width: 100%;
      height: clamp(180px, 45vw, 240px);
      overflow: hidden;
   }

   .tab_mo_facility_img img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center center;
   }

   .tab_mo_facility_cont {
      display: flex;
      flex-direction: column;
      gap: 25px;
   }

   .tab_mo_facility_head {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 14px;
   }

   .tab_mo_facility_icon {
      display: none;
   }

   .tab_mo_facility_head::before {
      content: counter(facility-item, decimal-leading-zero);
      color: var(--color-brand);
      font-family: "Bahnschrift", "Pretendard", sans-serif;
      font-size: 40px;
      font-weight: 300;
      font-stretch: condensed;
      line-height: 1;
      opacity: 0.72;
   }

   .tab_mo_facility_title {
      font-size: 24px;
      font-weight: 600;
      color: var(--color-brand);
   }

   .mo_desc {
      font-size: 14px;
      line-height: 1.15;
      color: var(--color-text-secondary);
   }

   .tab_mo_facility_info {
      display: flex;
      flex-direction: column;
      gap: 2px;

      margin-top: 5px;
   }

   .tab_mo_facility_info li {
      display: flex;
      align-items: center;
      gap: 2px;

      font-size: 13px;
      color: var(--color-text-muted);
   }

   .tab_mo_facility_info_dot {
      width: 4px;
      height: 4px;
      background-color: var(--color-brand);
      border-radius: 50%;
      margin: 6px;
   }
}
