/* =========================================================
 * Layout variables
 * ========================================================= */
:root {
    --c-01: #191919; /* 石墨黑 */
    --c-02: #D0D4DA; /* 鈦銀 */
    --c-03: #FAFBFC; /* 冷感白 */
    --c-04: #1C283A; /* 深海藍 */
    --c-05: #475563; /* 煙燻灰藍 */
    --c-06: #8A8B8C; /* 霧面灰 */

    /* === 語意化色系（給表單、會員中心等頁面用） === */
    --brand-primary:        var(--c-05);
    --brand-primary-dark:   var(--c-01);
    --brand-primary-light:  var(--c-02);
    --brand-primary-soft:   #F3F4F6;
    --brand-primary-glow:   rgba(71, 85, 99, 0.15);

    --brand-text:           var(--c-04);
    --brand-text-secondary: var(--c-05);
    --brand-text-muted:     var(--c-06);

    --brand-bg:             var(--c-03);
    --brand-bg-soft:        #F3F4F6;
    --brand-border:         var(--c-02);
    --brand-border-light:   #E5E7EB;
    --brand-white:          #FFFFFF;
    --brand-error:          #DC4A4A;
    --brand-error-light:    #FEF2F2;

    /* === 第三方品牌色 === */
    --line-green: #06C755;

    --spica-text: #26303b;
    --spica-header-height: 72px;
    --spica-mega-height: 224px;

    /* Header cart count */
    --spica-cart-count-size: 16px;
    --spica-cart-count-top: -7px;
    --spica-cart-count-right: -8px;
    --spica-cart-count-bg: #676b76;
    --spica-cart-count-color: #fff;
    --spica-cart-count-font-size: 10px;
}

/* =========================================================
 * Base
 * ========================================================= */
* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body.spica-home {
    margin: 0;
    color: var(--spica-text);
    font-family: "Noto Sans TC", "Microsoft JhengHei", Arial, sans-serif;
    background: #edf2f5;
}

html,
body {
    font-family: "Noto Sans TC", "Microsoft JhengHei", sans-serif;
}

button,
input,
select,
textarea {
    font-family: inherit;
}

a {
    color: inherit;
    text-decoration: none;
}

a:hover {
    color: inherit;
}

img {
    max-width: 100%;
    height: auto;
}

/* =========================================================
 * Shared sections / buttons
 * ========================================================= */
.section-bg {
    position: relative;
    overflow: hidden;
    background-image: linear-gradient(90deg, rgba(236, 243, 247, .92), rgba(236, 243, 247, .48)), var(--section-bg);
    background-repeat: no-repeat;
    background-position: top;
    background-size: cover;
}

.home-section {
    position: relative;
    padding: 6.5vw 0;
    overflow: hidden;
}

.min-vh-section {
    min-height: 720px;
}

.section-kicker {
    margin-bottom: 15px;
    color: var(--spica-text);
    font-size: 4.2rem;
    font-weight: 300;
    line-height: 1.1;
}

.section-title {
    margin-bottom: 24px;
    color: var(--spica-text);
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1.25;
}

.section-desc {
    max-width: 440px;
    color: #51606f;
    font-size: 1.2rem;
    line-height: 1.4;
    letter-spacing: 1px;
}

.section-bottom {
    margin-top: 70px;
}

.title-line {
    width: 1px;
    height: 130px;
    margin: 30px 0;
    background: rgba(38, 48, 59, .55);
}

.spica-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 220px;
    min-height: 58px;
    padding: 14px 38px;
    border: 1px solid rgba(37, 47, 58, .28);
    border-radius: 2px;
    font-size: 1rem;
    transition: transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease;
}

.spica-btn:hover {
    transform: translateY(-2px);
}

.spica-btn-light {
    color: #edf4f7;
    background: rgba(38, 48, 59, .52);
    border-color: rgba(255, 255, 255, .28);
}

.spica-btn-light:hover {
    color: #24303b;
    background: rgba(255, 255, 255, .88);
}

.spica-btn-dark {
    color: #26303b;
    background: rgba(255, 255, 255, .72);
}

.spica-btn-dark:hover {
    color: #fff;
    background: #26303b;
}

/* =========================================================
 * Header
 * ========================================================= */

/* Header shell and scroll states */
.spica-header {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 1000;
    height: var(--spica-header-height);
    color: rgba(255, 255, 255, 1);
    border-bottom: 1px solid rgba(255, 255, 255, 1);
    background: linear-gradient(180deg, rgba(23, 32, 42, .38), rgba(23, 32, 42, 0));
    transition: color .34s ease, background .34s ease, border-color .34s ease, box-shadow .34s ease, backdrop-filter .34s ease;
}

.spica-header.is-scrolled,
.spica-header.is-menu-open,
.spica-header.is-mega-open {
    color: var(--spica-text);
    background: rgba(235, 241, 245, .2);
    box-shadow: 0 12px 36px rgba(32, 44, 58, .12);
    backdrop-filter: blur(34px);
    border-bottom: 1px solid rgba(0, 0, 0, .2);
}

/* Navbar structure and branding */
.spica-navbar {
    min-height: var(--spica-header-height);
    padding: 0;
}

.spica-logo {
    width: 120px;
    height: auto;
    filter: brightness(0) invert(1);
    transition: filter .25s ease;
}

.spica-header.is-scrolled .spica-logo,
.spica-header.is-menu-open .spica-logo,
.spica-header.is-mega-open .spica-logo {
    filter: brightness(0) saturate(100%);
}

.spica-nav-list {
    gap: 34px;
    transition: gap .42s cubic-bezier(.22, 1, .36, 1);
}

.spica-nav-list .nav-link {
    color: currentColor;
    font-size: 1rem;
}

.spica-header.is-mega-open .spica-nav-list {
    gap: 64px;
}

/* Desktop action icons and MENU control */
.spica-header-actions {
    display: flex;
    align-items: center;
    gap: 16px;
}

.spica-icon-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    opacity: .86;
    transition: opacity .25s ease, transform .25s ease;
}

.spica-icon-link img {
    width: 18px;
    height: 18px;
    filter: brightness(0) invert(1);
    transition: filter .25s ease;
}

.spica-menu-pill img,
.spica-navbar-toggler img {
    width: 112px;
    height: auto;
    filter: brightness(0) invert(1);
    transition: filter .25s ease;
}

.spica-header.is-scrolled .spica-icon-link img,
.spica-header.is-scrolled .spica-menu-pill img,
.spica-header.is-scrolled .spica-navbar-toggler img,
.spica-header.is-menu-open .spica-icon-link img,
.spica-header.is-menu-open .spica-menu-pill img,
.spica-header.is-menu-open .spica-navbar-toggler img,
.spica-header.is-mega-open .spica-icon-link img,
.spica-header.is-mega-open .spica-menu-pill img,
.spica-header.is-mega-open .spica-navbar-toggler img {
    filter: brightness(0) saturate(100%);
}

.spica-icon-link:hover {
    opacity: 1;
    transform: translateY(-1px);
}

/* 購物車數量：手機版與桌機版共用，數量為 0 時由 JS 隱藏。 */
.spica-cart-link {
    position: relative;
    overflow: visible;
}

.spica-cart-count {
    position: absolute;
    top: var(--spica-cart-count-top);
    right: var(--spica-cart-count-right);
    display: none;
    min-width: var(--spica-cart-count-size);
    height: var(--spica-cart-count-size);
    padding: 0 4px;
    color: var(--spica-cart-count-color);
    background: var(--spica-cart-count-bg);
    border-radius: 999px;
    font-size: var(--spica-cart-count-font-size);
    font-weight: 500;
    line-height: var(--spica-cart-count-size);
    text-align: center;
    white-space: nowrap;
    box-shadow: 0 2px 6px rgba(24, 34, 44, .2);
    pointer-events: none;
}

.spica-menu-pill,
.spica-navbar-toggler {
    align-items: center;
    gap: 8px;
    padding: 0;
    color: currentColor;
    background: transparent;
    border: 0;
    border-radius: 0;
    font-size: 13px;
    letter-spacing: .08em;
}

.spica-menu-pill span,
.spica-navbar-toggler span {
    display: none;
}

.spica-navbar-toggler {
    display: inline-flex;
    box-shadow: none !important;
}

/* Mega menu structure */
.spica-header > .container {
    position: relative;
    z-index: 2;
}

.spica-header-mega {
    position: absolute;
    top: var(--spica-header-height);
    left: 0;
    width: 100%;
    height: 0;
    padding: 0;
    color: var(--spica-text);
    background: rgba(225, 231, 234, .58);
    border-bottom: 1px solid rgba(38, 48, 59, .12);
    box-shadow: 0 24px 60px rgba(27, 38, 50, .10);
    backdrop-filter: blur(32px) saturate(118%);
    -webkit-backdrop-filter: blur(32px) saturate(118%);
    opacity: 0;
    visibility: hidden;
    overflow: hidden;
    pointer-events: none;
    transition: height .46s cubic-bezier(.22, 1, .36, 1), padding .46s cubic-bezier(.22, 1, .36, 1), opacity .22s ease, visibility 0s linear .46s;
    z-index: 1;
}

.spica-header.is-mega-open .spica-header-mega {
    height: var(--spica-mega-height);
    padding: 22px 0 38px;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: height .46s cubic-bezier(.22, 1, .36, 1), padding .46s cubic-bezier(.22, 1, .36, 1), opacity .18s ease, visibility 0s linear 0s;
}

.spica-header-mega-grid {
    position: relative;
    display: block;
    width: 100%;
    min-height: 132px;
    margin: 0;
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity .26s ease .12s, transform .34s cubic-bezier(.22, 1, .36, 1) .08s;
}

.spica-header.is-mega-open .spica-header-mega-grid {
    opacity: 1;
    transform: translateY(0);
}

/* 主選單下拉欄位：JS 會寫入 --mega-col-left，讓子選單對齊上方主選單中心。 */
.spica-header-mega-col {
    position: absolute;
    top: 0;
    left: var(--mega-col-left, 50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    width: clamp(112px, 9vw, 136px);
    min-height: 132px;
    text-align: center;
    transform: translateX(-50%);
}

/* 子選單文字過長時省略，避免後台資料太長造成重疊。 */
.spica-header-mega-col a {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    color: rgba(38, 48, 59, .92);
    font-size: .96rem;
    font-weight: 400;
    line-height: 1.3;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: color .2s ease, transform .2s ease;
}

.spica-header-mega-col a:hover {
    color: #111820;
    transform: translateY(-1px);
}

/* =========================================================
 * Desktop header / mega menu
 * 毛玻璃層與內容層分離，避免巢狀 backdrop-filter 互相影響。
 * ========================================================= */
@media (min-width: 992px) {
    .spica-header {
        background: transparent;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        overflow: visible;
    }

    .spica-header::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(180deg, rgba(23, 32, 42, .38), rgba(23, 32, 42, 0));
        pointer-events: none;
        z-index: 0;
        transition: background .34s ease, box-shadow .34s ease, backdrop-filter .34s ease, -webkit-backdrop-filter .34s ease;
    }

    .spica-header.is-scrolled,
    .spica-header.is-menu-open,
    .spica-header.is-mega-open {
        background: transparent;
        box-shadow: none;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }

    .spica-header.is-scrolled::before,
    .spica-header.is-menu-open::before,
    .spica-header.is-mega-open::before {
        background: rgba(235, 241, 245, .2);
        box-shadow: 0 12px 36px rgba(32, 44, 58, .12);
        backdrop-filter: blur(34px);
        -webkit-backdrop-filter: blur(34px);
    }

    .spica-header > .container {
        z-index: 3;
    }

    .spica-header-mega {
        position: fixed;
        right: 0;
        background: transparent;
        border-bottom: 0;
        box-shadow: none;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        z-index: 1;
    }

    .spica-header-mega::before {
        content: "";
        position: absolute;
        inset: 0;
        background: rgba(235, 241, 245, .2);
        border-bottom: 1px solid rgba(38, 48, 59, .12);
        box-shadow: 0 24px 60px rgba(27, 38, 50, .10);
        backdrop-filter: blur(34px);
        -webkit-backdrop-filter: blur(34px);
        pointer-events: none;
        z-index: 0;
    }

    .spica-header-mega > .container {
        position: relative;
        z-index: 2;
    }
}

/* ========================================
 * Header 搜尋功能
 * ======================================== */
button.spica-icon-link {
    border: 0;
    background: transparent;
    padding: 0;
    cursor: pointer;
    font: inherit;
}

/* 會員選單 */
.spica-member-wrap {
    display: inline-flex;
    align-items: center;
}

.spica-member-dropdown.dropdown-menu {
    width: 260px;
    margin-top: 16px !important;
    padding: 0;
    overflow: hidden;
    color: var(--spica-text);
    background: rgba(255, 255, 255, .98);
    border: 1px solid rgba(38, 48, 59, .08);
    border-radius: 14px;
    box-shadow: 0 18px 48px rgba(21, 31, 40, .22);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    z-index: 1060;
}

.spica-member-item.dropdown-item {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 14px 42px 14px 20px;
    color: var(--spica-text);
    white-space: normal;
    border-bottom: 1px solid rgba(38, 48, 59, .08);
    transition: color .2s ease, background-color .2s ease, padding-left .2s ease;
}

.spica-member-item.dropdown-item::after {
    content: "\203A";
    position: absolute;
    top: 50%;
    right: 20px;
    color: #8b99a5;
    font-size: 24px;
    font-weight: 300;
    transform: translateY(-52%);
}

.spica-member-item.dropdown-item span {
    font-size: 15px;
    font-weight: 600;
    letter-spacing: .04em;
}

.spica-member-item.dropdown-item small {
    color: #82909c;
    font-size: 12px;
}

.spica-member-item.dropdown-item:hover,
.spica-member-item.dropdown-item:focus {
    padding-left: 24px;
    color: #26303b;
    background: #f1f5f7;
}

.spica-member-item-muted.dropdown-item {
    padding-top: 12px;
    padding-bottom: 12px;
    color: #75838e;
    border-bottom: 0;
}

.spica-member-item-muted.dropdown-item::after {
    display: none;
}

/* 桌機搜尋 */
.spica-search-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.spica-search-dropdown {
    display: none;
    position: absolute;
    top: calc(100% + 18px);
    right: 0;
    z-index: 1000;
    width: 280px;
    padding: 12px;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18);
}

.spica-search-wrap.is-open .spica-search-dropdown,
.spica-search-wrap:focus-within .spica-search-dropdown {
    display: block;
}

/* 搜尋表單 */
.spica-search-form {
    display: flex;
    align-items: center;
    width: 100%;
    margin: 0;
}

.spica-search-form input {
    flex: 1;
    min-width: 0;
    height: 42px;
    padding: 0 14px;
    border: 1px solid #ddd;
    border-right: 0;
    border-radius: 5px 0 0 5px;
    background: #fff;
    color: #26303b;
    font-size: 15px;
    outline: none;
    box-sizing: border-box;
}

.spica-search-form button[type="submit"] {
    display: inline-flex;
    flex: 0 0 46px;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 42px;
    padding: 0;
    border: 1px solid #ddd;
    border-radius: 0 5px 5px 0;
    background: #fff;
    cursor: pointer;
}

.spica-search-form button[type="submit"] img {
    display: none;
}

.spica-search-form button[type="submit"]::before {
    content: "";
    display: block;
    width: 20px;
    height: 20px;
    background-color: var(--spica-text);

    -webkit-mask: url("../images/icon/search.svg") center / contain no-repeat;
    mask: url("../images/icon/search.svg") center / contain no-repeat;
}

/* 手機搜尋面板 */
.spica-mobile-search-panel {
    display: none;
    width: 100%;
    padding: 12px 0;
    background: #fff;
    border-top: 1px solid #eee;
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.08);
}

.spica-mobile-search-panel.active {
    display: block;
}

.spica-mobile-search-inner {
    display: flex;
    align-items: center;
    gap: 10px;
}

.spica-mobile-search-close {
    flex: 0 0 auto;
    padding: 0;
    border: 0;
    background: transparent;
    color: #26303b;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
}

.spica-mobile-search-panel .spica-search-form {
    flex: 1;
}

@media (min-width: 992px) {
    .spica-mobile-search-panel {
        display: none !important;
    }
}

/* =========================================================
 * Footer
 * ========================================================= */
.spica-footer {
    padding: 34px 0;
    color: #fff;
    background: #26303b;
}

.footer-logo {
    width: 96px;
    filter: brightness(0) invert(1);
}

.footer-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
    font-size: .8125rem;
}

/* =========================================================
 * Bootstrap overrides / responsive containers
 * 各尺寸 container breakpoint 需維持分段，不與桌機 header media 合併。
 * ========================================================= */
.navbar-brand {
    display: flex;
    align-items: center;
}

.nav-link {
    transition: unset;
}

@media (min-width: 576px) {
    .container,
    .container-sm {
        max-width: 540px;
    }
}

@media (min-width: 768px) {
    .container,
    .container-md,
    .container-sm {
        max-width: 720px;
    }
}

@media (min-width: 992px) {
    .container,
    .container-lg,
    .container-md,
    .container-sm {
        max-width: 960px;
    }
}

@media (min-width: 1200px) {
    .container,
    .container-lg,
    .container-md,
    .container-sm,
    .container-xl {
        max-width: 1140px;
    }
}

@media (min-width: 1400px) {
    .container,
    .container-lg,
    .container-md,
    .container-sm,
    .container-xl,
    .container-xxl {
        max-width: 1320px;
    }
}

@media (min-width: 1600px) {
    .container,
    .container-lg,
    .container-md,
    .container-sm,
    .container-xl,
    .container-xxl {
        max-width: 1540px;
    }
}

@media (min-width: 1800px) {
    .container,
    .container-lg,
    .container-md,
    .container-sm,
    .container-xl,
    .container-xxl {
        max-width: 1640px;
    }
}

/* =========================================================
 * Mobile layout / controls
 * max-width: 991.98px 集中於此；575.98px 微調依原順序保留在對應區塊。
 * ========================================================= */
@media (max-width: 991.98px) {
    :root {
        /* Mobile header */
        --spica-header-height: 56px;
        --spica-m-header-side-space: 20px;
        --spica-m-header-action-gap: 14px;
        --spica-m-header-icon-box: 28px;
        --spica-m-header-icon-size: 18px;
        --spica-m-header-menu-width: 19px;
        --spica-m-header-logo-width: 108px;

        /* Mobile menu */
        --spica-m-menu-padding-x: var(--spica-m-header-side-space, 20px);
        --spica-m-menu-dark-bg: rgba(37, 47, 60, .50);
        --spica-m-menu-dark-border: rgba(255, 255, 255, .22);
        --spica-m-menu-light-bg: rgba(235, 241, 245, .72);
        --spica-m-menu-light-border: rgba(38, 48, 59, .12);

        /* Mobile submenu */
        --spica-m-submenu-toggle-size: 28px;
        --spica-m-submenu-toggle-offset-right: -7px;
        --spica-m-submenu-arrow-width: 6px;
        --spica-m-submenu-arrow-height: 10px;
        --spica-m-submenu-padding-left: 14px;
        --spica-m-submenu-padding-y: 4px;
        --spica-m-submenu-item-padding-y: 5px;
        --spica-m-submenu-font-size: .875rem;
        --spica-m-submenu-opacity: .78;
    }

    /* ---------------------------------------------------------
     * Mobile Header：基礎狀態與共用結構
     * 控制未滾動／已滾動顏色、Logo 與左右操作區的基本排列。
     * --------------------------------------------------------- */
    .spica-header {
        color: #fff;
        background: linear-gradient(180deg, rgba(23, 32, 42, .44), rgba(23, 32, 42, .12));
        border-bottom-color: rgba(255, 255, 255, .28);
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
    }

    .spica-header.is-scrolled,
    .spica-header.is-menu-open,
    .spica-header.is-mega-open {
        color: var(--spica-text);
        background: rgba(235, 241, 245, .88);
        border-bottom-color: rgba(38, 48, 59, .12);
        backdrop-filter: blur(18px);
        -webkit-backdrop-filter: blur(18px);
    }

    .spica-logo,
    .spica-icon-link img,
    .spica-menu-pill img,
    .spica-navbar-toggler img {
        filter: brightness(0) invert(1);
    }

    .spica-navbar {
        display: grid;
        width: 100%;
        position: relative;
    }

    .spica-mobile-left-actions,
    .spica-mobile-right-actions {
        display: flex !important;
    }

    .spica-mobile-left-actions {
        justify-self: start;
    }

    .spica-mobile-right-actions {
        justify-self: end;
    }

    .spica-navbar .navbar-brand {
        justify-self: center;
        margin: 0;
    }

    .spica-icon-link {
        width: 18px;
        height: 18px;
    }

    .spica-mobile-left-actions .spica-navbar-toggler {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 18px;
        height: 18px;
    }

    .spica-mobile-left-actions .spica-navbar-toggler img {
        display: none;
    }

    .spica-mobile-left-actions .spica-navbar-toggler::before {
        content: "";
        display: block;
        background: currentColor;
    }

    .spica-header.is-mega-open .spica-nav-list {
        gap: 6px;
    }

    .spica-header-mega {
        display: none;
    }

    .spica-nav-list {
        gap: 6px;
        padding-bottom: 0;
    }

    .navbar-collapse .spica-header-actions {
        display: none;
    }

    /* ---------------------------------------------------------
     * Mobile Shared Layout：共用區塊高度與間距
     * --------------------------------------------------------- */
    .home-section {
        padding: 76px 0;
    }

    .min-vh-section {
        min-height: auto;
    }

    @media (max-width: 575.98px) {
        /* -----------------------------------------------------
         * Small Mobile：575.98px 以下共用文字與按鈕
         * ----------------------------------------------------- */
        .section-kicker {
            font-size: 2rem;
        }

        .section-title {
            font-size: 1.625rem;
        }

        .spica-btn {
            width: 100%;
            min-width: auto;
        }
    }

    /* ---------------------------------------------------------
     * Mobile Header：五元素同列與 icon 對齊
     * 左側 MENU／搜尋、中間 Logo、右側會員／購物車。
     * --------------------------------------------------------- */
    .spica-header {
        height: var(--spica-header-height);
    }

    .spica-header > .container {
        width: 100%;
        max-width: none;
        height: 100%;
        padding-right: var(--spica-m-header-side-space);
        padding-left: var(--spica-m-header-side-space);
    }

    .spica-navbar {
        grid-template-columns: minmax(92px, 1fr) auto minmax(92px, 1fr);
        align-items: center;
        height: 100%;
        min-height: var(--spica-header-height);
        padding: 0;
    }

    .spica-mobile-left-actions,
    .spica-mobile-right-actions {
        align-items: center;
        height: 100%;
        gap: var(--spica-m-header-action-gap);
    }

    .spica-navbar .navbar-brand {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        height: 100%;
        padding: 0;
        line-height: 1;
    }

    .spica-logo {
        display: block;
        width: var(--spica-m-header-logo-width);
        max-width: none;
    }

    .spica-icon-link,
    .spica-mobile-left-actions .spica-navbar-toggler {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 var(--spica-m-header-icon-box);
        width: var(--spica-m-header-icon-box);
        height: var(--spica-m-header-icon-box);
        padding: 0;
        line-height: 1;
    }

    .spica-icon-link img {
        display: block;
        width: var(--spica-m-header-icon-size);
        height: var(--spica-m-header-icon-size);
        object-fit: contain;
    }

    .spica-mobile-left-actions .spica-navbar-toggler::before {
        width: var(--spica-m-header-menu-width);
        height: 1px;
        box-shadow: 0 6px currentColor, 0 12px currentColor;
        transform: translate(0, calc(var(--spica-m-header-menu-width) / -3));
    }

    /* ---------------------------------------------------------
     * Mobile Header：深色／淺色毛玻璃狀態
     * 毛玻璃放在 ::before，避免影響下拉選單背景取樣。
     * --------------------------------------------------------- */
    .spica-header,
    .spica-header.is-scrolled,
    .spica-header.is-menu-open,
    .spica-header.is-mega-open {
        background: transparent;
        box-shadow: none;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }

    .spica-header::before {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 0;
        background: linear-gradient(180deg, rgba(23, 32, 42, .44), rgba(23, 32, 42, .12));
        box-shadow: none;
        backdrop-filter: blur(12px) saturate(112%);
        -webkit-backdrop-filter: blur(12px) saturate(112%);
        pointer-events: none;
        transition: background .34s ease, box-shadow .34s ease, backdrop-filter .34s ease, -webkit-backdrop-filter .34s ease;
    }

    .spica-header.is-scrolled::before,
    .spica-header.is-menu-open.is-scrolled::before,
    .spica-header.is-mega-open.is-scrolled::before {
        background: rgba(235, 241, 245, .78);
        box-shadow: 0 12px 36px rgba(32, 44, 58, .12);
        backdrop-filter: blur(18px) saturate(116%);
        -webkit-backdrop-filter: blur(18px) saturate(116%);
    }

    .spica-header.is-menu-open:not(.is-scrolled),
    .spica-header.is-mega-open:not(.is-scrolled) {
        color: #fff;
        border-bottom-color: var(--spica-m-menu-dark-border);
    }

    .spica-header.is-menu-open:not(.is-scrolled)::before,
    .spica-header.is-mega-open:not(.is-scrolled)::before {
        background: linear-gradient(180deg, rgba(23, 32, 42, .48), rgba(23, 32, 42, .18));
        backdrop-filter: blur(16px) saturate(115%);
        -webkit-backdrop-filter: blur(16px) saturate(115%);
    }

    .spica-header.is-menu-open:not(.is-scrolled) .spica-logo,
    .spica-header.is-mega-open:not(.is-scrolled) .spica-logo,
    .spica-header.is-menu-open:not(.is-scrolled) .spica-icon-link img,
    .spica-header.is-menu-open:not(.is-scrolled) .spica-menu-pill img,
    .spica-header.is-menu-open:not(.is-scrolled) .spica-navbar-toggler img,
    .spica-header.is-mega-open:not(.is-scrolled) .spica-icon-link img,
    .spica-header.is-mega-open:not(.is-scrolled) .spica-menu-pill img,
    .spica-header.is-mega-open:not(.is-scrolled) .spica-navbar-toggler img {
        filter: brightness(0) invert(1);
    }

    /* ---------------------------------------------------------
     * Mobile Navigation：下拉選單位置、毛玻璃與選項間距
     * 滾動前使用深色背景，滾動後切換為淺色背景。
     * --------------------------------------------------------- */
    .navbar-collapse {
        position: fixed;
        top: var(--spica-header-height);
        right: 0;
        left: 0;
        width: auto;
        max-width: 100%;
        margin: 0;
        padding: 0 var(--spica-m-menu-padding-x);
        color: currentColor;
        background: var(--spica-m-menu-dark-bg);
        border-bottom: 1px solid var(--spica-m-menu-dark-border);
        box-shadow: 0 18px 36px rgba(8, 18, 30, .16);
        transform: none;
        backdrop-filter: blur(3px) saturate(125%);
        -webkit-backdrop-filter: blur(3px) saturate(125%);
    }

    .spica-header.is-scrolled .navbar-collapse,
    .spica-header.is-menu-open.is-scrolled .navbar-collapse,
    .spica-header.is-mega-open.is-scrolled .navbar-collapse {
        background: var(--spica-m-menu-light-bg);
        border-bottom-color: var(--spica-m-menu-light-border);
        box-shadow: 0 18px 36px rgba(32, 44, 58, .12);
    }

    .navbar-collapse .spica-nav-list {
        gap: 0;
        padding: 15px 0;
        row-gap: 6px;
    }

    .navbar-collapse .spica-nav-list .nav-link {
        padding: 5px 0;
        color: currentColor;
    }

    /* ---------------------------------------------------------
     * Mobile Navigation：子選單
     * 樣式使用專用 class，Bootstrap 只負責 Collapse 展開／收合。
     * --------------------------------------------------------- */
    .spica-mobile-nav-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        width: 100%;
    }

    .spica-mobile-nav-row .nav-link {
        flex: 1 1 auto;
        min-width: 0;
    }

    .spica-mobile-submenu-toggle {
        position: relative;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 var(--spica-m-submenu-toggle-size);
        width: var(--spica-m-submenu-toggle-size);
        height: var(--spica-m-submenu-toggle-size);
        margin-right: var(--spica-m-submenu-toggle-offset-right);
        padding: 0;
        color: currentColor;
        background: transparent;
        border: 0;
        box-shadow: none;
    }

    .spica-mobile-submenu-toggle::before {
        content: "";
        display: block;
        width: 0;
        height: 0;
        border-right: var(--spica-m-submenu-arrow-width) solid transparent;
        border-left: var(--spica-m-submenu-arrow-width) solid transparent;
        border-top: var(--spica-m-submenu-arrow-height) solid currentColor;
        transform: rotate(180deg);
        transition: transform .24s ease;
    }

    .spica-mobile-submenu-toggle.collapsed::before {
        transform: rotate(0deg);
    }

    .spica-mobile-submenu {
        padding-left: var(--spica-m-submenu-padding-left);
    }

    .spica-mobile-submenu-list {
        margin: 0;
        padding: var(--spica-m-submenu-padding-y) 0;
        list-style: none;
    }

    .spica-mobile-submenu-item a {
        display: block;
        padding: var(--spica-m-submenu-item-padding-y) 0;
        color: currentColor;
        font-size: var(--spica-m-submenu-font-size);
        line-height: 1.4;
        opacity: var(--spica-m-submenu-opacity);
    }
}


/* 表單Loading */
.loading {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000000cc;
    z-index: 99999;
}