@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);
}

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

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

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


h1,
h2,
h3,
h4,
h5,
h6,
p {
    margin: 0;
    padding: 0;
}

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: 333333;
    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;
}

/*內容*/
.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;
}

.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;
    opacity: 0.4;
}

.arr1 img {
    /*
     * The arrow is only 4px wide at the final size. Render the SVG at 2x
     * first, then reduce it to the original visual size so the tapered end
     * keeps smoother anti-aliasing instead of turning into jagged pixels.
     */
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    max-width: none;
    max-height: none;
    object-fit: fill;
    transform: scale(0.5);
    transform-origin: center center;
    display: block;
}

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

.arr2 img {
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    max-width: none;
    max-height: none;
    object-fit: fill;
    transform: scale(0.5);
    transform-origin: center center;
    display: block;
}

/* 06 頁沒有 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.contact-section {
    position: relative;
    width: 100%;
    height: auto;
    min-height: calc(755 * var(--vw-base));
    background-color: #e6e6e6;
    display: block;
    box-sizing: border-box;
    padding: calc(176 * var(--vw-base)) 0 0 calc(351 * var(--vw-base));
    overflow: hidden;
}

.contact-section>.contain {
    position: relative;
    width: 100%;
    height: auto;
    min-height: calc(600 * var(--vw-base));
    display: grid;
    grid-template-columns: calc(240 * var(--vw-base)) calc(365 * var(--vw-base)) minmax(0, 1fr);
    align-items: start;
}

.contact-copy {
    color: #333333;
    will-change: opacity, transform, filter, background-position;
}

.contact-title {
    grid-column: 1;
    padding-left: calc(3 * var(--vw-base));
    font-family: "Butler_Light";
    font-size: calc(18 * var(--vw-base));
    line-height: 1.15em;
    font-style: italic;
    letter-spacing: 0;
    white-space: nowrap;
}

.contact-copy-body {
    grid-column: 2;
    font-family: "Butler_Light";
    font-size: calc(18 * var(--vw-base));
    line-height: 1.15em;
    font-style: italic;
    letter-spacing: 0;
}

.contact-copy-body .copy-en {
    display: block;
    white-space: nowrap;
}

.contact-copy-body .copy-en-waiting {
    margin-top: calc(34 * var(--vw-base));
}

.contact-copy-body .copy-cn {
    margin-top: calc(38 * var(--vw-base));
    color: #333333;
    font-family: "Noto Serif TC";
    font-size: calc(16 * var(--vw-base));
    line-height: 1.6em;
    font-style: normal;
    font-weight: 300;
    letter-spacing: 0.3em;
    white-space: nowrap;
}

.contact-form {
    grid-column: 3;
    position: relative;
    width: calc(595 * var(--vw-base));
    max-width: 100%;
    height: auto;
    min-height: calc(579 * var(--vw-base));
    margin: 0;
    padding: 0 0 0 calc(115 * var(--vw-base));
    box-sizing: border-box;
    color: #333333;
    font-family: "Noto Serif TC";
    font-size: calc(16 * var(--vw-base));
    line-height: 1.2em;
    font-weight: 300;
    letter-spacing: 0.2em;
}

.form-field {
    position: relative;
    width: 100%;
    height: calc(68 * var(--vw-base));
}

.field-label {
    position: absolute;
    top: calc(8 * var(--vw-base));
    left: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: calc(100 * var(--vw-base));
    color: #333333;
    font-family: "Noto Serif TC";
    font-size: calc(16 * var(--vw-base));
    line-height: 1.1em;
    font-weight: 300;
    letter-spacing: 0.2em;
    pointer-events: none;
    white-space: nowrap;
}

.field-label .required {
    position: relative;
    left: calc(-4*var(--vw-base));
    display: block;
    flex: 0 0 auto;
    width: calc(9 * var(--vw-base));
    height: calc(12 * var(--vw-base));
}

.field-label .field-label-spacer {
    display: block;
    flex: 0 0 auto;
    width: calc(9 * var(--vw-base));
    height: calc(12 * var(--vw-base));
}

.field-label .required img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.field-label-text {
    display: block;
    margin-top: calc(2 * var(--vw-base));
    margin-left: calc(12 * var(--vw-base));
}

.field-control,
.form-field-message textarea {
    display: block;
    width: 100%;
    box-sizing: border-box;
    border: 0;
    border-bottom: 1px solid rgba(51, 51, 51, 0.55);
    border-radius: 0;
    background: transparent;
    color: #555555;
    font-family: "Noto Serif TC";
    font-size: calc(16 * var(--vw-base));
    line-height: 1.4em;
    font-weight: 300;
    letter-spacing: 0.15em;
}

.field-control {
    height: calc(49 * var(--vw-base));
    padding: calc(15 * var(--vw-base)) calc(8 * var(--vw-base)) 0 calc(108 * var(--vw-base));
}

/* Chrome 快速帶入會用 autofill 預設色覆蓋透明輸入框，改回頁面主色 */
.field-control:-webkit-autofill,
.field-control:-webkit-autofill:hover,
.field-control:-webkit-autofill:focus,
.field-control:-webkit-autofill:active {
    -webkit-text-fill-color: #555555;
    -webkit-box-shadow: 0 0 0 1000px #e6e6e6 inset;
    box-shadow: 0 0 0 1000px #e6e6e6 inset;
    caret-color: #555555;
}

.form-field-name .field-control {
    padding-right: calc(150 * var(--vw-base));
}

.field-control:focus,
.form-field-message textarea:focus {
    border-color: #333333;
}

.field-control::placeholder,
.form-field-message textarea::placeholder {
    color: #333333;
    opacity: 1;
}

#guest-phone::placeholder {
    color: #999999;
}

.swal-modal .swal-text {
    white-space: pre-line;
    text-align: left;
}

.form-options {
    position: absolute;
    top: calc(12 * var(--vw-base));
    right: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    gap: calc(19 * var(--vw-base));
}

.check-option {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: calc(7 * var(--vw-base));
    color: #333333;
    font-family: "Noto Serif TC";
    font-size: calc(16 * var(--vw-base));
    line-height: 1.2em;
    font-weight: 300;
    letter-spacing: 0.2em;
    cursor: pointer;
    white-space: nowrap;
}

.check-control {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.check-visual {
    display: block;
    flex: 0 0 auto;
    width: calc(16 * var(--vw-base));
    height: calc(16 * var(--vw-base));
}

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

.check-label {
    display: inline-block;
}

.check-label a {
    color: inherit;
    border-bottom: 1px solid currentColor;
}

.check-control:focus-visible+.check-visual {
    outline: 1px solid #333333;
    outline-offset: calc(3 * var(--vw-base));
}

.select-control {
    padding-right: calc(24 * var(--vw-base));
    background-color: #e6e6e6;
    background-image: url("../img/06/select.png");
    background-repeat: no-repeat;
    background-position: right calc(3 * var(--vw-base)) center;
    background-size: calc(11 * var(--vw-base)) auto;
    cursor: pointer;
}

/* 原生下拉展開時，隱藏 select 底線，避免和選單上緣重疊 */
.select-control:open {
    border-bottom-color: transparent;
}

.select-control option {
    background-color: #e6e6e6;
    color: #555555;
}

.form-field-message {
    height: auto;
    min-height: calc(162 * var(--vw-base));
    padding-top: calc(22 * var(--vw-base));
    box-sizing: border-box;
}

.form-field-message .field-label-text {
    display: none;
}

.form-field-message textarea {
    position: relative;
    top: auto;
    left: auto;
    height: calc(118 * var(--vw-base));
    min-height: calc(118 * var(--vw-base));
    padding: calc(12 * var(--vw-base)) calc(10 * var(--vw-base));
    border: 0;
    border-left: 1px solid rgba(51, 51, 51, 0.5);
    border-bottom: 1px solid rgba(51, 51, 51, 0.5);
    resize: vertical;
}

.form-field-captcha .field-control {
    padding-right: calc(130 * var(--vw-base));
}

.contact-feedback {
    margin: 0 0 calc(18 * var(--vw-base));
    font-size: calc(15 * var(--vw-base));
    line-height: 1.6;
    letter-spacing: 0.08em;
}

.contact-feedback.is-success {
    color: #3f6d4a;
}

.captcha-code {
    position: absolute;
    top: calc(20 * var(--vw-base));
    right: calc(0 * var(--vw-base));
    display: flex;
    align-items: center;
    justify-content: center;
    width: calc(80 * var(--vw-base));
    height: calc(23 * var(--vw-base));
    box-sizing: border-box;
    background: #333333;
    color: #e6e6e6;
    font-family: "Butler_Regular";
    font-size: calc(16 * var(--vw-base));
    line-height: 1;
    letter-spacing: 0.35em;
    text-indent: 0.35em;
    cursor: pointer;
}

.captcha-code:focus-visible {
    outline: 1px solid #333333;
    outline-offset: 2px;
}

.form-agreement {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    width: 100%;
    height: calc(55 * var(--vw-base));
    padding-top: calc(10 * var(--vw-base));
    box-sizing: border-box;
}

.agreement-option {
    gap: calc(8 * var(--vw-base));
    padding-top: calc(1 * var(--vw-base));
}

.submit-btn {
    position: relative;
    display: flex;
    flex: 0 0 calc(72 * var(--vw-base));
    align-items: center;
    justify-content: center;
    width: calc(72 * var(--vw-base));
    height: calc(52 * var(--vw-base));
    margin: calc(-7 * var(--vw-base)) 0 0 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: #333333;
    cursor: pointer;
}

.submit-btn .more-txt {
    position: relative;
    z-index: 2;
    color: #333333;
    font-family: "Butler_Regular";
    font-size: calc(16 * var(--vw-base));
    line-height: 1.15em;
    font-style: italic;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.submit-btn .more-arr {
    position: absolute;
    right: 50%;
    bottom: calc(11 * var(--vw-base));
    z-index: 2;
    width: calc(58*1.4 * var(--vw-base));
    height: calc(3*1.4 * var(--vw-base));
    transform: translateX(50%);
    transition: opacity 0.35s ease, transform 0.35s ease;
}

.submit-btn .more-arr img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.submit-more-circle {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 1;
    width: calc(82 * var(--vw-base));
    height: calc(82 * var(--vw-base));
    box-sizing: border-box;
    border: 1px solid #333333;
    border-radius: 50%;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(1.1);
    transform-origin: center;
    transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.submit-btn:hover .more-arr,
.submit-btn:focus-visible .more-arr {
    opacity: 0;
    transform: translate(calc(50% + 15 * var(--vw-base)), 0);
}

.submit-btn:hover .submit-more-circle,
.submit-btn:focus-visible .submit-more-circle {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}

.submit-btn:focus-visible {
    outline: 1px solid #333333;
    outline-offset: calc(4 * var(--vw-base));
}

.submit-btn:disabled {
    cursor: wait;
    opacity: 0.55;
}

@media (max-width: 900px) {
    .m2.contact-section {
        height: auto;
        min-height: 0;
        padding: calc(120 * var(--vw-base)) calc(40 * var(--vw-base)) calc(80 * var(--vw-base));
    }

    .contact-section>.contain {
        height: auto;
        min-height: 0;
        display: block;
    }

    .contact-title,
    .contact-copy-body,
    .contact-form {
        width: 100%;
    }

    .contact-copy-body {
        margin-top: calc(55 * var(--vw-base));
    }

    .contact-form {
        box-sizing: border-box;
        margin-top: calc(65 * var(--vw-base));
        padding-left: 0;
        height: auto;
        min-height: 0;
    }

    .form-field-message {
        height: auto;
    }
}

@media (prefers-reduced-motion: reduce) {

    .submit-btn .more-arr,
    .submit-more-circle {
        transition: none;
    }
}




/*同意書照片預覽*/

.black {
    display: none;
    width: 100%;
    height: 100%;
    position: fixed;
    left: 0px;
    top: 0px;
    background-color: rgba(0, 0, 0, 0.9);
    z-index: 11111;
    font-family: "Noto Sans TC";
}

.closeBtn {
    width: 30px;
    position: absolute;
    right: 5%;
    top: 4%;
    cursor: pointer;
}

.infoWrap {
    width: 100%;
    margin: 0 auto;
    max-width: 65%;
    position: relative;
    height: 100vh;
    overflow: auto;
}

.infoWrap ul {
    list-style: none;
    font-size: 1vw;
    padding-inline-start: 2vw;
}

.infoWrap ul>li>ul {
    list-style: none;
    font-size: 1vw;
    padding-inline-start: 1vw;
}

.li1::before {
    content: "一、";
    position: absolute;
    left: 0vw;
}

.li2::before {
    content: "二、";
    position: absolute;
    left: 0vw;
}

.li3::before {
    content: "三、";
    position: absolute;
    left: 0vw;
}

.li4::before {
    content: "四、";
    position: absolute;
    left: 0vw;
}

.li5::before {
    content: "五、";
    position: absolute;
    left: 0vw;
}

.li1-li::before {
    content: "（１）";
    position: absolute;
    left: 0vw;
}

.li2-li::before {
    content: "（２）";
    position: absolute;
    left: 0vw;
}

.li3-li::before {
    content: "（３）";
    position: absolute;
    left: 0vw;
}

.li4-li::before {
    content: "（４）";
    position: absolute;
    left: 0vw;
}

.infoBox {
    width: 100%;
    height: calc(100% - 20vw);
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: #fff;
    text-align: left;
}

.infoBox h3 {
    font-size: 1.2vw;
    line-height: 180%;
    margin-bottom: 25px;
    text-align: center;
}

.infoBox h4 {
    font-size: 1vw;
    line-height: 180%;
    margin-bottom: 1vw;
}

.infoBox h5 {
    font-size: 1.2vw;
    line-height: 180%;
    margin-bottom: 1vw;
}

.infoBox p {
    font-size: 1vw;
    line-height: 180%;
}
