@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@100;300;400;500;700;900&family=Noto+Serif+TC:wght@200;300;400;500;600;700;900&display=swap");

@font-face {
    font-family: "Butler_Regular";
    src: url(../fonts/Butler_Regular.otf);
}

@font-face {
    font-family: "Butler_Light";
    src: url(../fonts/Butler_Light.otf);
}

@font-face {
    font-family: "Butler_Bold";
    src: url(../fonts/Butler_Bold.otf);
}

.NotoSansTC {
    font-family: "Noto Sans TC";
    font-weight: 300;
    letter-spacing: 0.2em;
}

.Butler_Light {
    font-family: "Butler_Light";
    letter-spacing: 0;
}

.Butler_Regular {
    font-family: "Butler_Regular";
    /* letter-spacing: 0; */
}

[data-aos="opacity-up"] {
    opacity: 1;
    clip-path: inset(100% 0 0% 0);
    /* 初始状态下完全隐藏 */
}

[data-aos="opacity-up"].aos-animate {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    /* 显示全部图片 */
}



body,
html {
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    /* scroll-behavior: smooth; */
    --vw-base: calc(100vw / 1920);
    /* cursor: none; */
    /* 自訂游標暫時停用 */
}


body>* {}

h1,
h2,
h3,
h4,
h5,
h6,
p {
    margin: 0;
    padding: 0;
    font-weight: normal;
}

a:link,
a:visited,
a:hover,
a:active {
    text-decoration: none;
}

button,
input,
textarea,
select,
option {
    margin: 0;
    padding: 0;
    -webkit-appearance: none;
    -webkit-border-radius: 0px;
    border-radius: 0;
    -moz-appearance: none;
    appearance: none;
    outline: none;
}

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

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

/* 隱藏瀏覽器原生的滾動條以防止 100vw 的寬度包含滾動條 (Hide native scrollbar to prevent 100vw from including scrollbar width) */
::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

html {
    scrollbar-width: none !important;
    /* Firefox */
    -ms-overflow-style: none !important;
    /* IE and Edge */
}


/* 自製滾動條軌道容器 (Custom Scrollbar Track Container) */
.custom-scrollbar {
    position: fixed;
    right: 4px;
    top: 4px;
    bottom: 4px;
    width: 4px;
    /* background-color: rgba(255, 255, 255, 0.02); */
    /* 微弱的半透明背景軌道 */
    border-radius: 4px;
    z-index: 999999;
    pointer-events: auto;
    opacity: 0;
    transition: opacity 0.3s ease, background-color 0.3s ease;
}

/* 當滑鼠懸停於軌道或是有 visible 類別時顯示滾動條 (Show scrollbar when hovered or has visible class) */
.custom-scrollbar.visible,
.custom-scrollbar:hover {
    opacity: 1;
    background-color: rgba(0, 0, 0, 0.08);
    /* 懸停時軌道背景變深一點 */
}

/* 自製滾動條滑塊 (Custom Scrollbar Thumb) */
.custom-scrollbar-thumb {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 20px;
    /* 高度由 JS 動態設定 */
    background-color: rgba(0, 0, 0, 0.3);
    /* 半透明白色色塊 */
    /* border-radius: 4px; */
    cursor: pointer;
    transition: background-color 0.2s ease;
}

/* 滑塊懸停或啟用狀態 (Thumb hover or active state) */
.custom-scrollbar-thumb:hover,
.custom-scrollbar-thumb.active {
    background-color: rgba(0, 0, 0, 0.5);
    /* 更亮一些 */
}

/* 拖曳時臨時停用平滑捲動以防止滑塊抖動滯後 (Temporarily disable smooth scroll during drag to prevent thumb lag) */
html.no-smooth {
    scroll-behavior: auto !important;
}

.pic-txt {
    position: absolute;
    bottom: calc(8* var(--vw-base));
    right: calc(8* var(--vw-base));
    color: #fff;
    font-size: calc(12* var(--vw-base));
    font-family: "Noto Sans TC";
    font-weight: 400;
    letter-spacing: 0.05em;
    line-height: calc(20* var(--vw-base));
    z-index: 10;
    text-shadow: #4e484698 1px 1px 1px;
}

/*內容*/
.container {
    position: relative;
    width: 100%;
    height: auto;
    /* opacity: 0; */
    background-color: #e6e6e6;
}


.m1 {
    position: relative;
    width: 100%;
    height: calc(950*var(--vw-base));
    background-color: #e6e6e6;
    /* 白色背景開始 */
    z-index: 10;
}

/* 從 m4 內頁返回時，等定位完成後再顯示上方 m1，避免先看到入場動畫。 */
html.is-m4-return .m1 {
    visibility: hidden;
}

html.is-m4-return .m4-swiper-box {
    visibility: hidden;
}

.m1-bg {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

.bg-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    mix-blend-mode: luminosity;
    /* 或 screen */
    opacity: 0.08;
    /* 使用遮罩：700vw-base前完全顯示，700~900vw-base漸漸淡出，900~950vw-base完全遮蔽影片 (CSS mask-image gradient stops) */
    -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1) calc(700*var(--vw-base)), rgba(0, 0, 0, 0) calc(900*var(--vw-base)), rgba(0, 0, 0, 0) calc(950*var(--vw-base)));
    mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1) calc(700*var(--vw-base)), rgba(0, 0, 0, 0) calc(900*var(--vw-base)), rgba(0, 0, 0, 0) calc(950*var(--vw-base)));
}

.logo-row {
    position: absolute;
    left: 50%;
    top: calc(16*var(--vw-base));
    transform: translate(-50%, 0);
    width: calc(71*var(--vw-base));
    height: calc(41*var(--vw-base));
    opacity: 0;
    /* 預設隱藏避免進場動畫前閃現，由 GSAP 接手 (Hidden before entrance; GSAP takes over) */
}

.logo-row img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.m1-pic {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, 0);
    /* 圖片本體固定滿版 (1920x721)，不再縮放 (Full-bleed box, no resizing) */
    width: 100%;
    height: calc(721*var(--vw-base));
    z-index: 5;
    overflow: hidden;
    /* 初始 clip 成 1760x609、top 112 的內縮框，滾動時由 GSAP 還原至滿版
       (Initially clipped to the inset frame; GSAP reveals to full bleed on scroll) */
    clip-path: inset(calc(112*var(--vw-base)) calc(80*var(--vw-base)) 0 calc(80*var(--vw-base)));
    -webkit-clip-path: inset(calc(112*var(--vw-base)) calc(80*var(--vw-base)) 0 calc(80*var(--vw-base)));
    opacity: 0;
    /* 預設隱藏避免進場動畫前閃現，由 GSAP 接手 (Hidden before entrance; GSAP takes over) */
}

.m1-scroll {
    position: absolute;
    top: calc(750*var(--vw-base));
    /* 位於下方 230vw-base 剩餘空間的居中偏下 */
    left: 50%;
    transform: translate(-50%, 0);
    text-align: center;
    z-index: 3;
    opacity: 0;
    /* 預設隱藏，由 GSAP 控制淡入與上浮 */
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: calc(10*var(--vw-base));
    z-index: 3;
}

.m1-scroll-txt {
    position: relative;
    color: #333333;
    font-family: "Noto Serif TC";
    font-size: calc(16*var(--vw-base));
    line-height: 1.4em;
    font-weight: 500;
    letter-spacing: 0.3em;
}

/* 外層容器：確保箭頭位置固定 */
.m1-scroll-wrapper {
    position: relative;
    width: calc(4 * var(--vw-base));
    height: calc(137 * var(--vw-base));
}

/* 1. 底層靜態箭頭 */
.arr1 {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

.arr1 img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* 2. 動態光束層 */
.arr2 {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    /* 初始：隱藏光束 */
    clip-path: inset(0% 0% 100% 0%);
}

.arr2 img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* 01 頁沒有 m1-navbar，開頁鈕一開始就固定顯示
   (No m1-navbar on this page: menu button is fixed & visible from the start,
    overriding the hidden default in menu.css) */
.menu-btn.is-fixed {
    opacity: 1;
    pointer-events: auto;
}


.m2 {
    position: relative;
    width: 100%;
    /* min-height: calc(586*var(--vw-base)); */
    background-color: #e6e6e6;
    /* 白色背景開始 */
    padding-bottom: calc(222*var(--vw-base));
}

.m2-content {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-top: calc(70*var(--vw-base));
}

.m2-content .en {
    position: relative;
    font-style: italic;
    color: #333333;
    font-family: "Butler_Light";
    font-size: calc(18*var(--vw-base));
    line-height: 1.2em;
    font-weight: 300;
    letter-spacing: 0em;
    text-align: center;
}

.m2-content .cn {
    position: relative;
    color: #333333;
    font-family: "Noto Serif TC";
    font-size: calc(16*var(--vw-base));
    line-height: 1.8em;
    font-weight: 300;
    letter-spacing: 0.3em;
    text-align: center;
}

.m3 {
    position: relative;
    width: 100%;
    height: calc(1000*var(--vw-base));
    overflow: hidden;
    isolation: isolate;
    background: #333;
    --m3-circle-diameter: calc(904*var(--vw-base));
    --m3-circle-overlap: calc(40*var(--vw-base));
    --m3-circle-offset: calc(var(--m3-circle-diameter) - var(--m3-circle-overlap));
}

.m3-backgrounds,
.m3-background,
.m3-shade {
    position: absolute;
    inset: 0;
}

.m3-backgrounds {
    z-index: 0;
    overflow: hidden;
}

.m3-background {
    z-index: 0;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    opacity: 0;
    transform: scale(1.06);
    will-change: opacity, transform;
}

.m3-background.is-active {
    opacity: 1;
}

.m3-shade {
    z-index: 1;
    /* background: rgba(0, 0, 0, 0.22); */
    pointer-events: none;
}

.m3-orbit-list {
    position: absolute;
    inset: 0;
    z-index: 2;
    overflow: hidden;
    touch-action: none;
    user-select: none;
    -webkit-user-select: none;
    cursor: grab;
    opacity: 0;
    transition: none;
}

.m3.is-ready .m3-orbit-list {
    opacity: 1;
}

.m3-orbit-track {
    position: absolute;
    inset: 0;
    z-index: 1;
}

.m3-orbit {
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--m3-circle-diameter);
    height: var(--m3-circle-diameter);
    transform: translate(-50%, -50%);
    touch-action: none;
    z-index: 1;
}

.m3-orbit[data-ring-position="left"] {
    left: calc(50% - var(--m3-circle-offset));
}

.m3-orbit[data-ring-position="center"] {
    left: 50%;
    z-index: 2;
    border-radius: 50%;
}

.m3-orbit[data-ring-position="right"] {
    left: calc(50% + var(--m3-circle-offset));
}

.m3-orbit[data-ring-position="left"],
.m3-orbit[data-ring-position="right"] {
    cursor: pointer;
}

.m3-orbit[role="button"]:focus-visible {
    outline: calc(1*var(--vw-base)) solid #fff;
    outline-offset: calc(5*var(--vw-base));
}

.m3-orbit-list.is-dragging {
    cursor: grabbing;
}

.m3-ring {
    position: absolute;
    inset: 0;
    z-index: 1;
    border: calc(1*var(--vw-base)) solid rgba(255, 255, 255, 0.88);
    border-radius: 50%;
    pointer-events: none;
}

.m3-center-ring-draw {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}

.m3-center-ring-stroke {
    fill: none;
    stroke: rgba(255, 255, 255, 0.88);
    stroke-width: 1;
    stroke-dasharray: 2837;
    stroke-dashoffset: 2837;
}

.m3-hover-panel {
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--m3-circle-diameter);
    height: var(--m3-circle-diameter);
    z-index: 0;
    overflow: hidden;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    background-color: rgba(18, 18, 18, 0);
    -webkit-backdrop-filter: blur(0);
    backdrop-filter: blur(0);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.45s ease, background-color 0.45s ease, backdrop-filter 0.45s ease;
}

.m3.is-hover-content-ready.is-center-hovered .m3-hover-panel {
    background-color: rgba(18, 18, 18, 0.2);
    -webkit-backdrop-filter: blur(calc(10*var(--vw-base)));
    backdrop-filter: blur(calc(10*var(--vw-base)));
    opacity: 1;
}

.m3-hover-copy {
    position: absolute;
    top: 50%;
    left: calc(394*var(--vw-base));
    width: calc(470*var(--vw-base));
    max-height: calc(760*var(--vw-base));
    overflow-y: auto;
    transform: translateY(-50%);
    color: #fff;
    font-family: "Noto Serif TC", serif;
    font-size: calc(16*var(--vw-base));
    font-weight: 300;
    letter-spacing: 0.2em;
    line-height: 1.6em;
    text-align: left;
    scrollbar-width: none;
}

.m3-hover-copy[hidden] {
    display: none;
}

.m3-hover-copy::-webkit-scrollbar {
    display: none;
}

.m3-hover-copy p {
    margin: 0;
}

.m3-hover-lead {
    margin-bottom: calc(20*var(--vw-base)) !important;
}

.m3-hover-description {
    margin-bottom: calc(20*var(--vw-base)) !important;
}

.m3-hover-description:last-child {
    margin-bottom: 0 !important;
}

.m3-hover-activities ul {
    margin: 0;
    padding-left: 1.2em;
    list-style: disc;
}

.m3-hover-activities li+li {
    margin-top: calc(2*var(--vw-base));
}

.m3-station {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.m3-station-dot {
    position: absolute;
    width: calc(18*var(--vw-base));
    height: calc(18*var(--vw-base));
    border-radius: 50%;
    background: #fff;
    transform: translate(-50%, -50%);
}

.m3-right-anchor {
    position: absolute;
    width: calc(18*var(--vw-base));
    height: calc(18*var(--vw-base));
    border-radius: 50%;
    background: #fff;
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.m3-right-label {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.m3-label {
    position: absolute;
    width: max-content;
    color: #fff;
    white-space: nowrap;
    text-shadow: 0 calc(1*var(--vw-base)) calc(3*var(--vw-base)) rgba(0, 0, 0, 0.28);
}

.m3-title {
    display: flex;
    align-items: baseline;
    gap: calc(8*var(--vw-base));
    line-height: 1.15em;
}

.m3-title-cn {
    font-family: "Noto Serif TC", serif;
    font-size: calc(20*var(--vw-base));
    font-weight: 400;
    letter-spacing: 0.3em;
    line-height: 1.15em;
}

.m3-title-en {
    font-family: "Butler_Light", serif;
    font-size: calc(18*var(--vw-base));
    font-style: italic;
    font-weight: 300;
    letter-spacing: 0em;
    line-height: 1.15em;
}

.m3-subtitle {
    margin-top: calc(5*var(--vw-base));
    font-family: "Noto Serif TC", serif;
    font-size: calc(16*var(--vw-base));
    font-weight: 300;
    letter-spacing: 0.2em;
    line-height: 1.15em;
}

.m3-orbit-list:focus-visible .m3-ring {
    outline: calc(1*var(--vw-base)) solid #fff;
    outline-offset: calc(5*var(--vw-base));
}

.m3-announcement {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
}

.m4 {
    position: relative;
    width: 100%;
    height: calc(1030*var(--vw-base));
}

.m4-info {
    position: absolute;
    left: calc(162*var(--vw-base));
    top: calc(258*var(--vw-base));

}

.m4-info .en {
    color: #333333;
    font-family: "Butler_Light", serif;
    font-size: calc(18*var(--vw-base));
    font-style: italic;
    font-weight: 300;
    letter-spacing: 0em;
    line-height: 1.15em;
}

.m4-info .cn {
    position: relative;
    margin-top: calc(12*var(--vw-base));
    color: #333333;
    font-family: "Noto Serif TC", serif;
    font-size: calc(16*var(--vw-base));
    font-weight: 300;
    letter-spacing: 0.1em;
    line-height: 1.6em;
}

.m4-info .cn .m4-cn-segment+.m4-cn-segment {
    margin-top: 1.6em;
}

.m4-swiper-box {
    position: absolute;
    left: calc(795*var(--vw-base));
    top: calc(258*var(--vw-base));
    width: calc(1120*var(--vw-base));
}

.m4-swiper {
    position: relative;
    width: calc(1120*VAR(--vw-base));
}

.m4-swiper .swiper-slide {
    width: calc(412*var(--vw-base));
}

.card {
    position: relative;
    display: block;
    width: calc(412*var(--vw-base));
    box-sizing: border-box;
    padding-right: calc(30*var(--vw-base));
}

.card .pic {
    position: relative;
    width: 100%;
    height: calc(564*var(--vw-base));
    overflow: hidden;
}

.card .pic img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    user-select: none;
    -webkit-user-drag: none;
}

.m4 .card .pic-hover-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    background-color: rgba(0, 0, 0, 0);
    pointer-events: none;
    transition: background-color 0.5s ease;
}

.m4 .card .m4-more-effect {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 3;
    width: calc(107*var(--vw-base));
    height: calc(107*var(--vw-base));
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transform: translate(-50%, -50%);
    pointer-events: auto;
    transition: opacity 0.5s ease;
}

.m4 .card .m4-more-text {
    position: relative;
    z-index: 2;
    color: #fff;
    font-family: "Butler_Regular", serif;
    font-size: calc(18*var(--vw-base));
    font-style: italic;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.m4 .card .m4-more-circle,
.m4 .card .m4-more-arc {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    height: 100%;
    transform: translate(-50%, -50%);
}

.m4 .card .m4-more-circle {
    z-index: 1;
}

.m4 .card .m4-more-arc {
    z-index: 2;
}

.m4 .card .m4-more-arc img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.m4 .card:hover .pic-hover-overlay {
    background-color: rgba(0, 0, 0, 0.4);
}

.m4 .card:hover .m4-more-effect {
    opacity: 1;
}

.card .date {
    position: relative;
    display: block;
    color: #333333;
    font-family: "Butler_Light";
    font-size: calc(18*var(--vw-base));
    line-height: 1.2em;
    letter-spacing: 0.1em;
    margin-top: calc(20*var(--vw-base));
}

.card .mark {
    position: relative;
    margin-top: calc(10*var(--vw-base));
    width: calc(58*var(--vw-base));
    height: calc(3*var(--vw-base));
}

.card .mark img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.card .desc {
    position: relative;
    margin-top: calc(10*var(--vw-base));
    font-family: "Noto Serif TC", serif;
    font-weight: 500;
    color: #333333;
    font-size: calc(20*var(--vw-base));
    line-height: 1.8em;
    letter-spacing: 0.3em;
}


.arrow {
    width: calc(91*var(--vw-base));
    height: calc(6*var(--vw-base));
}

.m4-scroller {
    position: absolute;
    top: calc(753.6*var(--vw-base));
    left: 0;
    width: calc(100vw - 795*var(--vw-base));
    height: calc(6*var(--vw-base));
    z-index: 3;
    cursor: pointer;
    touch-action: none;
    user-select: none;
    -webkit-user-select: none;
    /* 固定在兩行 desc 後約 53vw-base；desc 增至三行時，線與箭頭高度不變。 */
}

.m4-scroller::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: calc(24*var(--vw-base));
    transform: translateY(-50%);
}

.m4-scroller .line {
    position: absolute;
    bottom: 0%;
    left: 0;
    width: 100%;
    height: calc(1*var(--vw-base));
    /* transform: translateY(-50%); */
    background-color: #333333;
    pointer-events: none;
}

.m4-scroller .arrow {
    position: absolute;
    top: 0%;
    left: 0;
    z-index: 1;
    cursor: grab;
    transition: left 1.4s ease 0.1s;
}

.m4-scroller .arrow img {
    display: block;
    width: 100%;
    height: 100%;
}

.m4-scroller.is-dragging .arrow {
    cursor: grabbing;
    transition: none;
}

.m4-swiper.swiper-grabbing+.m4-scroller .arrow {
    cursor: grabbing;
}

.m4-scroller:focus-visible {
    outline: 1px solid rgba(51, 51, 51, 0.65);
    outline-offset: calc(8*var(--vw-base));
}
