/* platform chrome artifact — imports expanded; source keeps import list */
@charset "UTF-8";

/**
 * Platform system-page content rail.
 *
 * Aligns with theme chrome rails (head / foot ≈ 1380 / 94% / centered).
 * Markup: sitemap · search · success · e404 · custom_static all wrap body in `.cet`.
 *
 * `--page-max` / `--page-width`: system pages load Default body CSS, not theme
 * `page.css`; define tokens here so theme `style.css` shell rules that consume
 * these vars (`.footJz` / `.headbottomJz` / …) still resolve.
 *
 * Page CSS MUST NOT reintroduce:
 *   float:left · width:96% · margin-left:2% · fixed px width on `.cet`
 */
:root {
    --page-max: 1380px;
    --page-width: 94%;
}

.cet {
    max-width: var(--page-max);
    width: var(--page-width);
    margin-left: auto;
    margin-right: auto;
    float: none;
    box-sizing: border-box;
}



/* When whole-card <a> is the body: stretch inside grid/list li */
li:has(> a.content-card-body) {
    display: flex !important;
    flex-direction: column !important;
    min-height: 0;
}

li:has(> a.content-card-body) > a.content-card-body {
    flex: 1 1 auto !important;
    width: 100% !important;
    min-height: 100% !important;
    align-self: stretch !important;
}

.content-card-body {
    display: flex !important;
    flex-direction: column !important;
    box-sizing: border-box;
    min-height: 0;
    height: 100%;
    flex: 1 1 auto;
}

a.content-card-body {
    height: 100% !important;
}

.content-card-title {
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
    line-clamp: 2 !important;
    overflow: hidden !important;
}

.content-card-excerpt {
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 3 !important;
    line-clamp: 3 !important;
    overflow: hidden !important;
}

.content-card-excerpt > p {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.content-card-cta {
    margin-top: auto !important;
    flex-shrink: 0 !important;
}

@media (max-width: 767px) {
    .content-card-excerpt {
        -webkit-line-clamp: 2 !important;
        line-clamp: 2 !important;
    }
}


/**
 * Platform Contact Chrome — ABI base (behavior / structure hooks).
 * Default look: contact_chrome.default.css
 * Loaded via contact_chrome.css aggregator (single public entry).
 *
 * MUST NOT: template design classes (con-sf / butww3 / …) · blueprint brand tokens.
 */

/* Inquiry open trigger (bootstrap bindContactModal). Sidebar + theme CTAs. */
[ael="al-fix-w-conus"] {
    cursor: pointer;
}

@font-face {
    font-family: "platform-contact-chrome-icons";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/font_4831218_dgrole4vuu.woff2") format("woff2");
}

.platform-contact-chrome .iconfont {
    font-family: "platform-contact-chrome-icons" !important;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.platform-contact-chrome .icon-youxiang:before {
    content: "\e62e";
}

.platform-contact-chrome .icon-skype-fill:before {
    content: "\e883";
}

.platform-contact-chrome .icon-weixin:before {
    content: "\e602";
}

.platform-contact-chrome .icon-dianhua:before {
    content: "\e613";
}

.platform-contact-chrome .icon-email:before {
    content: "";
    display: block;
    width: 1.05em;
    height: 1.05em;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z'/%3E%3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

.platform-contact-chrome .icon-whatsapp:before {
    content: "";
    display: block;
    width: 1.05em;
    height: 1.05em;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.435 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.435 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z'/%3E%3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

.platform-contact-chrome .icon-xiangshangjiantou:before {
    content: "\e65d";
}

.platform-contact-chrome .icon-guanbi:before {
    content: "\e644";
}

.platform-contact-chrome .platform-contact-sidebar {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.platform-contact-chrome .platform-contact-sidebar.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.platform-contact-chrome .platform-contact-cover,
.platform-contact-chrome #id-jump-send-cover {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    inset: 0;
    /* Above site chrome (.head ~1111) and platform mobile_nav (~11111). */
    z-index: 20000;
    overflow: auto;
    box-sizing: border-box;
    padding: 1.5rem 0;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.4s ease, visibility 0s linear 0.6s;
}

.platform-contact-chrome .platform-contact-cover.is-open,
.platform-contact-chrome #id-jump-send-cover.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 0.2s ease, visibility 0s linear 0s;
}

.platform-contact-chrome .platform-contact-panel,
.platform-contact-chrome #id-jump-send-f {
    transform: translate3d(0, calc(-50vh - 50% - 24px), 0);
    transition: transform 0.6s ease;
}

.platform-contact-chrome .platform-contact-cover.is-open .platform-contact-panel.is-settled,
.platform-contact-chrome #id-jump-send-cover.is-open #id-jump-send-f.is-settled {
    transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
    .platform-contact-chrome .platform-contact-cover,
    .platform-contact-chrome #id-jump-send-cover,
    .platform-contact-chrome .platform-contact-panel,
    .platform-contact-chrome #id-jump-send-f {
        transition: none;
    }
}

.platform-contact-chrome button.platform-contact-action {
    border: none;
    padding: 0;
    /* 禁止 font: inherit — 会冲掉 .platform-contact-action 的 icon font-size（邮箱钮变小） */
    appearance: none;
    cursor: pointer;
}

.platform-contact-chrome .platform-contact-field {
    position: relative;
}

.platform-contact-chrome .platform-contact-error,
.platform-contact-chrome .semin-send-error,
.platform-contact-chrome .semin-send-error-2 {
    display: none;
}

/**
 * Platform Contact Chrome — default visual skin (shared by all sites).
 * Not a blueprint override. Special blueprints may later override tokens/selectors.
 *
 * Uses platform-* classes only — never con-sf / butww3 / template1 contact-page classes.
 *
 * Brand accent via --platform-contact-accent / --platform-contact-accent-hover
 * (blueprint :root may override; same pattern as --platform-search-accent).
 */

.platform-contact-chrome {
    --platform-contact-surface: #fff;
    --platform-contact-muted: #f7f7f7;
    --platform-contact-border: #e5e5e5;
    --platform-contact-text: #1a1a1a;
}

.platform-contact-chrome .platform-contact-sidebar {
    position: fixed;
    top: calc(50% - 80px);
    right: 0;
    width: 48px;
    /* Above page content stacking (e.g. .cus z-index:11); below .ftets (998). */
    z-index: 900;
    transform: translateY(12px);
    transition: opacity .24s ease, transform .24s ease, visibility .24s ease;
}

.platform-contact-chrome .platform-contact-sidebar.is-visible {
    transform: translateY(0);
}

.platform-contact-chrome .platform-contact-action {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    background-color: var(--platform-contact-accent, #c22622);
    border-radius: 8px;
    margin-top: 5px;
    cursor: pointer;
    transition: background-color .24s ease, transform .24s ease;
    color: #fff;
    font-size: 22px;
    text-decoration: none;
}

.platform-contact-chrome .platform-contact-action:hover {
    background-color: var(--platform-contact-accent-hover, #9e1e1b);
}

.platform-contact-chrome .platform-contact-scroll-top {
    width: 48px;
    height: 48px;
    background-color: var(--platform-contact-accent, #c22622);
    border-radius: 8px;
    cursor: pointer;
    position: fixed;
    right: 0;
    top: 80%;
    z-index: 900;
    color: #fff;
    font-size: 22px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: rgba(0, 0, 0, 0.12) 0 2px 8px;
    transition: background-color .24s ease;
}

.platform-contact-chrome .platform-contact-scroll-top:hover {
    background-color: var(--platform-contact-accent-hover, #9e1e1b);
}

.platform-contact-chrome .platform-contact-cover {
    background: rgba(0, 0, 0, 0.65);
}

.platform-contact-chrome .platform-contact-panel {
    width: min(700px, 94vw);
    margin: 0 auto;
    position: relative;
    background: var(--platform-contact-surface);
    border-radius: 12px;
    padding: 1.5rem 1.25rem 1.75rem;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);
    max-height: calc(100vh - 3rem);
    overflow: auto;
    box-sizing: border-box;
}

.platform-contact-chrome .platform-contact-close {
    position: absolute;
    right: 12px;
    top: 12px;
    cursor: pointer;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #333;
    font-size: 20px;
}

.platform-contact-chrome .platform-contact-title {
    text-align: left;
    margin-bottom: 12px;
    font-size: 26px;
    font-weight: 700;
    color: var(--platform-contact-text);
}

.platform-contact-chrome .platform-contact-form {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

.platform-contact-chrome .inquiry-form-error,
.platform-contact-chrome .global-error {
    flex: 1 1 100%;
    width: 100%;
}

.platform-contact-chrome .platform-contact-field {
    margin-top: 0;
    width: auto;
    box-sizing: border-box;
    flex: 1 1 100%;
}

.platform-contact-chrome .platform-contact-field.is-half {
    flex: 1 1 calc(50% - 8px);
    width: auto;
    margin-left: 0;
}

.platform-contact-chrome .platform-contact-form button {
    flex: 1 1 100%;
}

.platform-contact-chrome .platform-contact-error,
.platform-contact-chrome .semin-send-error,
.platform-contact-chrome .semin-send-error-2 {
    position: absolute;
    padding: 6px 8px;
    font-size: 12px;
    border: 1px solid var(--platform-contact-accent, #c22622);
    color: var(--platform-contact-accent, #c22622);
    right: 5px;
    top: 5px;
    border-radius: 8px;
    background: #fff;
    z-index: 2;
}

.platform-contact-chrome .semin-send-error-2 {
    top: auto;
    bottom: 5px;
}

.platform-contact-chrome .platform-contact-input {
    border: 1px solid var(--platform-contact-border);
    background: var(--platform-contact-muted);
    display: block;
    width: 100%;
    padding: 10px 12px;
    font-size: 16px;
    color: #333;
    border-radius: 6px;
    box-sizing: border-box;
}

.platform-contact-chrome input.platform-contact-input {
    height: 45px;
}

.platform-contact-chrome textarea.platform-contact-input {
    min-height: 120px;
    resize: vertical;
}

.platform-contact-chrome .platform-contact-submit {
    cursor: pointer;
    font-size: 14px;
    padding: 0 26px;
    height: 42px;
    border: none;
    border-radius: 6px;
    background-color: var(--platform-contact-accent, #c22622);
    color: #fff;
    margin-top: 0;
    transition: background-color .24s ease, transform .24s ease;
}

.platform-contact-chrome .platform-contact-submit:hover {
    background-color: var(--platform-contact-accent-hover, #9e1e1b);
    transform: translateY(-1px);
}

.platform-contact-chrome .platform-contact-action--wechat {
    position: relative;
}

.platform-contact-chrome .platform-contact-wechat-qr {
    position: absolute;
    right: 52px;
    top: 50%;
    transform: translateY(-50%);
    display: none;
    padding: 8px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}

.platform-contact-chrome .platform-contact-action--wechat:hover .platform-contact-wechat-qr,
.platform-contact-chrome .platform-contact-action--wechat:focus-within .platform-contact-wechat-qr {
    display: block;
}

.platform-contact-chrome .platform-contact-wechat-img {
    max-width: 120px;
    height: auto;
    display: block;
}

@media (max-width: 980px) {
    .platform-contact-chrome .platform-contact-action,
    .platform-contact-chrome .platform-contact-scroll-top {
        width: 40px;
        height: 40px;
        font-size: 18px;
    }

    .platform-contact-chrome .platform-contact-sidebar {
        width: 40px;
    }

    .platform-contact-chrome .platform-contact-field.is-half {
        flex: 1 1 100%;
        width: auto;
        margin-left: 0;
    }
}

.platform-contact-chrome .platform-contact-quote-bar {
    display: none;
}

@media screen and (max-width: 850px) {
    .platform-contact-chrome .platform-contact-sidebar {
        display: none !important;
    }

    body {
        padding-bottom: 70px;
    }

    .platform-contact-chrome .platform-contact-scroll-top {
        top: auto;
        bottom: 82px;
    }

    .platform-contact-chrome .platform-contact-quote-bar {
        display: flex;
        justify-content: center;
        align-items: center;
        box-sizing: border-box;
        width: 100%;
        padding: 15px 0;
        position: fixed;
        left: 0;
        bottom: 0;
        z-index: 99;
        background-color: rgba(255, 255, 255, 0.8);
    }

    .platform-contact-chrome .platform-contact-quote {
        margin: 0;
        z-index: 9;
        width: fit-content;
        overflow: hidden;
        cursor: pointer;
        font-weight: 500;
        font-size: 14px;
        line-height: 1.4;
        color: #fff;
        background-color: var(--MainColor, var(--platform-contact-accent, #333333));
        padding: 8px 25px;
        border-radius: 30px;
    }
}




[data-video-lightbox] {
    cursor: pointer;
}

.platform-video-lightbox {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 20010;
    align-items: center;
    justify-content: center;
    padding: 40px 8px;
    box-sizing: border-box;
}

.platform-video-lightbox.is-open {
    display: flex;
}

.platform-video-lightbox__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    cursor: pointer;
}

.platform-video-lightbox__panel {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 900px;
    margin: 0 auto;
}

.platform-video-lightbox__close {
    position: absolute;
    top: -40px;
    right: -6px;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #fff;
    font-size: 28px;
    line-height: 44px;
    text-align: right;
    cursor: pointer;
}

.platform-video-lightbox__scaler {
    position: relative;
    width: 100%;
    height: 0;
    padding-top: 56.25%;
    overflow: hidden;
    background: #000;
}

.platform-video-lightbox__frame {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
    background: #000;
}

@media screen and (max-width: 850px) {
    .platform-video-lightbox__panel {
        max-width: 90%;
    }
}

/**
 * Inquiry contract — field / global error ABI (site chrome).
 *
 * Owned by platform: default hidden state + absolute field tips + Send cursor.
 * Blueprint keeps layout / skin; do not re-copy these rules per theme.
 */
.inquiry-form *:has(> .semin-send-error),
.inquiry-form *:has(> .semin-send-error-2) {
    position: relative;
    overflow: visible;
}

.inquiry-form .semin-send-error,
.inquiry-form .semin-send-error-2 {
    position: absolute;
    padding: 6px 8px;
    font-size: 12px;
    border: 1px solid #c22622;
    color: #c22622;
    right: 5px;
    top: 5px;
    border-radius: 8px;
    display: none;
    background: #fff;
    z-index: 2;
}

.inquiry-form .semin-send-error-2 {
    top: auto;
    bottom: 5px;
}

/*
 * Global inquiry banner — MUST default to display:none.
 * Empty in-flow banner can still occupy layout (e.g. grid tracks); runtime toggles display.
 */
.inquiry-form .inquiry-form-error.global-error {
    display: none;
    margin: 0 0 16px;
    padding: 12px 16px;
    border-radius: 6px;
    background-color: #fef2f2;
    border: 1px solid #fca5a5;
    color: #991b1b;
    font-size: 14px;
    line-height: 1.5;
    word-break: break-word;
}

.inquiry-form .inquiry-form-error.global-error:empty {
    display: none !important;
}

/*
 * Send affordance — pointer cursor is platform ABI (not theme skin).
 * Themes MAY keep decorative classes (e.g. cuxlvBian); MUST NOT omit SendMessage.
 */
button.SendMessage[data-action="inquiry"],
.SendMessage[data-action="inquiry"] {
    cursor: pointer;
}

/**
 * Header search panel chrome — site-wide open/close + form shell.
 *
 * Contract siblings (checkbox must precede mask/panel):
 *   #search-toggle.site-control ~ .searchMask ~ .searchPanel
 *
 * Accent via --platform-search-accent (blueprint may override).
 */

/*
 * Search Submit ABI: [data-action="search"] (not Toggle).
 * Search Toggle ABI: [data-action="search-toggle"] or CSS #search-toggle — open UI only.
 * Text buttons often wrap copy in an inner node; text-align covers that.
 * justify-content helps when the trigger is also display:flex|inline-flex.
 * Icon-only Submit (.souxcb / .searchPanelSubmit) are unaffected visually.
 */
[data-action="search"] {
    text-align: center;
    justify-content: center;
}

[data-action="search"] > * {
    text-align: center;
}

.site-control {
    position: fixed;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
    /* CSS checkbox 由 label 操作；勿进 Tab 序（配合 HTML tabindex="-1"） */
}

.searchMask {
    position: fixed;
    inset: 0;
    z-index: 1200;
    background: rgba(8, 6, 8, 0.62);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.28s ease, visibility 0.28s ease;
}

.searchPanel {
    position: fixed;
    left: 50%;
    top: 26%;
    z-index: 1201;
    width: min(720px, 92vw);
    padding: 44px;
    background-color: rgba(255, 255, 255, 0.96);
    box-shadow: 0 28px 80px rgba(0, 0, 0, 0.22);
    transform: translate(-50%, -28px) scale(0.98);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: transform 0.32s ease, opacity 0.32s ease, visibility 0.32s ease;
}

#search-toggle:checked ~ .searchMask,
#search-toggle:checked ~ .searchPanel {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

#search-toggle:checked ~ .searchPanel {
    transform: translate(-50%, 0) scale(1);
}

.searchClose {
    position: absolute;
    right: 18px;
    top: 12px;
    font-size: 36px;
    line-height: 1;
    color: #080608;
    cursor: pointer;
}

.searchClose:hover {
    color: var(--platform-search-accent, #333333);
    transform: rotate(90deg);
}

.searchPanelTitle {
    color: #080608;
    font-size: 32px;
    font-weight: 800;
    margin-bottom: 22px;
}

.searchPanelBox {
    height: 58px;
    border: 1px solid #ddd;
    display: flex;
    align-items: center;
    padding-right: 18px;
    transition: border-color 0.24s ease, box-shadow 0.24s ease;
}

.searchPanelBox:focus-within {
    border-color: var(--platform-search-accent, #333333);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--platform-search-accent, #333333) 12%, transparent);
}

.searchPanelBox input {
    flex: 1;
    min-width: 0;
    height: 100%;
    border: none;
    outline: none;
    background: transparent;
    padding: 0 18px;
    font: inherit;
    color: #080608;
}

.searchPanelBox .searchPanelSubmit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    color: var(--platform-search-accent, #333333);
    cursor: pointer;
    font: inherit;
}

.searchPanelBox .searchPanelSubmit i,
.searchPanelBox i {
    color: inherit;
    font-size: 24px;
}

@media (max-width: 850px) {
    .searchPanel {
        top: 18%;
        padding: 34px 22px;
    }

    .searchPanelTitle {
        font-size: 26px;
    }
}

@media (max-width: 640px) {
    .searchPanelBox {
        height: 52px;
    }
}



@font-face {
    font-family: "platform-mobile-nav-icons";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/font_4831218_dgrole4vuu.woff2") format("woff2");
}

/*
 * 仅壳内 Platform 字形包强制字体。
 * MUST NOT 覆盖整棵 .platform-mobile-nav .iconfont —
 * .mobile-nav-social 消费 Theme social_icon_map → 主题 iconfont；
 * 一刀切会把 Facebook/YouTube 等渲成错字/空框。
 * 对标 platform/blog_meta.css（按 class 点名，不整包劫持）。
 */
.platform-mobile-nav .iconfont.icon-liebiao2,
.platform-mobile-nav .iconfont.icon-guanbi,
.platform-mobile-nav .iconfont.icon-sousuo,
.platform-mobile-nav .iconfont.icon-dianhua,
.platform-mobile-nav .iconfont.icon-youxiang,
.platform-mobile-nav .iconfont.icon-whatsapp,
.platform-mobile-nav .iconfont.icon-down {
    font-family: "platform-mobile-nav-icons" !important;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.platform-mobile-nav .icon-liebiao2:before {
    content: "\e6e7";
}

.platform-mobile-nav .icon-guanbi:before {
    content: "\e644";
}

.platform-mobile-nav .icon-sousuo:before {
    content: "\e70a";
}

/* Down chevron (CSS) — matches W4 .icon-down; no glyph dependency on icon font */
.platform-mobile-nav .icon-down:before {
    content: "";
    display: block;
    width: 8px;
    height: 8px;
    margin: 8px auto 0;
    box-sizing: border-box;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
}

.platform-mobile-nav .icon-dianhua:before {
    content: "\e613";
}

/* W4 / text5 .mob-contact-btn — WhatsApp glyph via mask（同 contact_chrome） */
.platform-mobile-nav .icon-whatsapp:before {
    content: "";
    display: block;
    width: 1em;
    height: 1em;
    margin: 0 auto;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.435 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.435 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z'/%3E%3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

.platform-mobile-nav .icon-youxiang:before {
    content: "\e62e";
}

.platform-mobile-nav.head_jz1 {
    display: none;
}

html.platform-mobile-nav-lock,
body.platform-mobile-nav-lock {
    overflow: hidden;
}

@media screen and (max-width: 850px) {
    /*
     * Hide Blueprint PC header when platform mobile chrome is present.
     * Mount shapes (docs/theme: head 底部 @include mobile_nav，无传参):
     *   - sibling: .head + .platform-mobile-nav
     *   - wrapped: .gjs-header > (.head + .platform-mobile-nav)
     * Chrome 切换 SSOT = 本断点 only；Theme MUST NOT 另套藏头断点。
     */
    .head:has(+ .platform-mobile-nav),
    .gjs-header:has(> .platform-mobile-nav) > .head {
        display: none !important;
    }

    .platform-mobile-nav.head_jz1 {
        display: block;
        width: 100%;
        /*
         * In-flow reserve for fixed .ftets (RF-MH).
         * Platform owns clearance — Theme MUST NOT margin-patch .platform-* /
         * invent Theme offset for this bar. Bar stays fixed; wrapper keeps document flow.
         */
        --platform-mobile-nav-bar-height: 60px;
        height: var(--platform-mobile-nav-bar-height);
        box-sizing: border-box;
    }

    .platform-mobile-nav .ftets {
        box-sizing: border-box;
        /* 对标 W4 .mobile-tool-center: width 94% ≈ 两侧 3% */
        padding: 0 3%;
        width: 100%;
        height: var(--platform-mobile-nav-bar-height);
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: 998;
        display: flex;
        align-items: center;
        /*
         * 顶栏底色：开放 token → 主题色（MainColor / contact accent）。
         * MUST NOT 默认 transparent（白底页会露白、白图标不可见）。
         * Theme MAY 设 --platform-mobile-nav-bar-bg 覆盖。
         */
        background-color: var(
            --platform-mobile-nav-bar-bg,
            var(--MainColor, var(--platform-contact-accent, #1a1a2e))
        );
        color: var(--platform-mobile-nav-bar-fg, #ffffff);
        justify-content: space-between;
        box-shadow: none;
    }

    /* 下滚后仍跟主题色（可另开 --platform-mobile-nav-bar-bg-scrolled）。状态复用 .head.headidv。 */
    .head.headidv + .platform-mobile-nav .ftets {
        background-color: var(
            --platform-mobile-nav-bar-bg-scrolled,
            var(--platform-mobile-nav-bar-bg, var(--MainColor, var(--platform-contact-accent, #1a1a2e)))
        );
    }

    /* Logo：限制在 60px 栏内垂直居中，禁止 margin-top 撑出栏外 */
    .platform-mobile-nav .jz_logo {
        width: var(--platform-mobile-nav-logo-width, 120px);
        max-height: 100%;
        height: 100%;
        margin-top: 0;
        padding: 0;
        display: flex;
        align-items: center;
        align-self: stretch;
        overflow: hidden;
        white-space: nowrap;
        background-color: var(--platform-mobile-nav-logo-bg, transparent);
        box-sizing: border-box;
    }

    .platform-mobile-nav .jz_logo a {
        display: flex;
        align-items: center;
        max-width: 100%;
        max-height: 100%;
        height: 100%;
    }

    .platform-mobile-nav .jz_logo img {
        width: auto;
        max-width: 100%;
        max-height: calc(var(--platform-mobile-nav-bar-height) - 12px);
        height: auto;
        aspect-ratio: auto;
        display: block;
        object-fit: contain;
    }

    .platform-mobile-nav .jz_logo_right {
        display: flex;
        align-items: center;
        gap: 25px;
        padding-right: 0;
        height: 100%;
    }

    /* Tool slots — W4 .mob-search-btn / .mob-contact-btn / .mobile-menu · .toolRight gap */
    .platform-mobile-nav .shouci {
        width: 30px;
        margin-right: 0;
        cursor: pointer;
        color: inherit;
        display: flex;
        align-items: center;
        justify-content: center;
        float: none;
        height: 60px;
        text-align: center;
        line-height: 60px;
        flex: 0 0 30px;
    }

    /* 图标度量对标 text5：search/contact 25px · hamburger 30px · 白 currentColor */
    .platform-mobile-nav .ftets .shouso .iconfont {
        display: block;
        font-size: 25px;
        font-weight: 400;
        color: inherit;
        line-height: 60px;
    }

    .platform-mobile-nav .ftets .contact-entry .iconfont {
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 25px;
        font-weight: 400;
        color: inherit;
        line-height: 60px;
        width: 30px;
        height: 60px;
    }

    .platform-mobile-nav .ftets .contact-entry .icon-whatsapp:before {
        width: 25px;
        height: 25px;
    }

    .platform-mobile-nav .ftets .tttada .iconfont {
        display: block;
        font-size: 30px;
        font-weight: 400;
        color: inherit;
        line-height: 60px;
    }

    /* Full-screen menu overlay — covers .ftets / head_jz1 when open */
    .platform-mobile-nav .xiala {
        z-index: 11111;
        position: fixed;
        inset: 0;
        font-weight: 500;
        background-color: #ffffff;
        transform: translateY(-100%);
        visibility: hidden;
        pointer-events: none;
        transition: transform 0.28s ease, visibility 0.28s;
        display: flex;
        flex-direction: column;
        overflow-x: hidden;
        overflow-y: auto;
        padding: 15px 20px;
        box-sizing: border-box;
    }

    .platform-mobile-nav .xiala.is-open {
        transform: translateY(0);
        visibility: visible;
        pointer-events: auto;
    }

    .platform-mobile-nav .cheon {
        flex: 0 0 auto;
        z-index: 555;
        position: relative;
        padding: 0;
        background-color: transparent;
        min-height: 30px;
        height: 30px;
        display: flex;
        align-items: center;
        justify-content: flex-end;
        box-shadow: none;
        margin-bottom: 0;
    }

    .platform-mobile-nav .searchImgsss,
    .platform-mobile-nav .searchImg {
        width: 30px;
        height: 30px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .platform-mobile-nav .cheon .iconfont {
        font-size: 22px;
        color: #1c1c1c;
        line-height: 30px;
    }

    /* 勿 flex-grow：否则短导航会把 .mobile-nav-social 顶到面板底（合同是紧跟 nav + margin-top 30px） */
    .platform-mobile-nav .xiala_ul {
        flex: 0 0 auto;
        background: #fff;
        margin: 0;
        padding: 0;
        list-style: none;
    }

    .platform-mobile-nav .nav-acc-item {
        list-style: none;
        width: 100%;
        position: relative;
    }

    .platform-mobile-nav .nav-acc-row {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 0;
        padding: 0;
        min-height: 42px;
        width: 100%;
        position: relative;
        border-bottom: 1px solid #d6d6d6;
        box-sizing: border-box;
    }

    .platform-mobile-nav .nav-acc-link {
        flex: 1 1 auto;
        color: #1c1c1c;
        text-decoration: none;
        font-size: 14px;
        line-height: normal;
        padding: 13px 0 10px;
    }

    .platform-mobile-nav .nav-acc-link.is-active {
        color: var(--platform-mobile-nav-active, var(--platform-contact-accent, #333333));
        font-weight: 600;
    }

    .platform-mobile-nav .nav-acc-toggle {
        flex: 0 0 30px;
        width: 30px;
        height: 30px;
        margin-top: 7px;
        border: 0;
        background: transparent;
        padding: 0;
        cursor: pointer;
        color: #363636;
        line-height: 1;
        position: relative;
    }

    .platform-mobile-nav .nav-acc-toggle .iconfont {
        display: block;
        font-size: 12px;
        line-height: 30px;
        text-align: center;
        transition: transform 0.2s ease;
        color: inherit;
    }

    /* 下拉箭头展开后朝上（对标 W4 .icon-down，非右箭头转 90°） */
    .platform-mobile-nav .nav-acc-toggle[aria-expanded="true"] .iconfont {
        transform: rotate(180deg);
    }

    .platform-mobile-nav .nav-acc-toggle[aria-expanded="true"] .icon-down:before {
        margin-top: 14px;
    }

    .platform-mobile-nav .nav-acc-panel {
        list-style: none;
        margin: 0;
        padding: 0;
        overflow: hidden;
        max-height: 0;
        background: #fff;
        transition: max-height 0.28s ease;
        width: 100%;
    }

    .platform-mobile-nav .nav-acc-panel.is-open {
        /* max-height set by JS to scrollHeight */
    }

    /* L2+: indent ≈ Akoe margin-left 6% from parent content width */
    .platform-mobile-nav .nav-acc-item[data-nav-depth="2"] > .nav-acc-row {
        border-bottom: 1px solid #d6d6d6;
    }

    .platform-mobile-nav .nav-acc-item[data-nav-depth="2"] > .nav-acc-row > .nav-acc-link {
        margin-left: 6%;
        padding-top: 10px;
        padding-bottom: 10px;
        text-transform: none;
    }

    .platform-mobile-nav .nav-acc-item[data-nav-depth="3"] > .nav-acc-row > .nav-acc-link,
    .platform-mobile-nav .nav-acc-item[data-nav-depth="4"] > .nav-acc-row > .nav-acc-link {
        margin-left: 12%;
        padding-top: 10px;
        padding-bottom: 10px;
        text-transform: none;
        font-size: 14px;
    }

    .platform-mobile-nav .mobile-nav-social {
        flex: 0 0 auto;
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
        justify-content: flex-start;
        margin-top: 30px;
        padding: 0 0 20px;
        border-top: 0;
    }

    .platform-mobile-nav .mobile-nav-social-link {
        width: 25px;
        height: 25px;
        border-radius: 50%;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: var(--platform-mobile-nav-social-bg, var(--platform-contact-accent, #333333));
        color: var(--platform-mobile-nav-social-fg, #ffffff);
        text-decoration: none;
    }

    .platform-mobile-nav .mobile-nav-social-link .iconfont {
        font-size: 14px;
    }

    /*
     * Full-screen search overlay — Akoe metric (akoetech.com mob-search-cover):
     * MainColor 全屏底 · 右上关闭 · 垂直居中胶囊输入 + 圆形搜索钮
     * 底色走 token；禁止写死 Akoe 黄
     */
    .platform-mobile-nav .sep-search-mb {
        transition: opacity 0.8s ease, visibility 0.8s;
        position: fixed;
        inset: 0;
        width: 100%;
        height: 100%;
        background: var(--platform-mobile-search-bg, var(--MainColor, var(--platform-contact-accent, #333333)));
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        z-index: 12000;
        overflow: hidden;
        box-sizing: border-box;
    }

    .platform-mobile-nav .sep-search-mb.is-open {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

    .platform-mobile-nav .searchImgDim {
        position: absolute;
        right: 50px;
        top: 50px;
        width: 50px;
        height: 50px;
        z-index: 1;
    }

    .platform-mobile-nav .sep-search-mb .searchImg {
        width: 50px;
        height: 50px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .platform-mobile-nav .sep-search-mb .searchImg .iconfont {
        font-size: 30px;
        color: #ffffff;
        line-height: 50px;
    }

    .platform-mobile-nav .sep-search-mb-panel {
        position: absolute;
        width: 350px;
        max-width: calc(100% - 40px);
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
    }

    .platform-mobile-nav .sep-search-mb form {
        margin: 0;
        width: 100%;
        display: flex;
        align-items: center;
    }

    .platform-mobile-nav .sep-search-mb-input {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
        height: 55px;
        box-sizing: border-box;
        border: none;
        border-radius: 27.5px;
        background: #ffffff;
        padding: 0 20px;
        font-size: 14px;
        color: #1c1c1c;
        outline: none;
        -webkit-appearance: none;
        appearance: none;
    }

    .platform-mobile-nav .sep-search-mb-submit {
        flex: 0 0 55px;
        width: 55px;
        height: 55px;
        margin: 0 0 0 15px;
        padding: 0;
        border: none;
        border-radius: 50%;
        background: #ffffff;
        color: #202020;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .platform-mobile-nav .sep-search-mb-submit .iconfont {
        font-size: 20px;
        line-height: 1;
        color: inherit;
    }

    /*
     * Contact drawer — W4 .mob-con-cover + .mob-contact-det-f（4-0.globalsir.cn）:
     * 全屏 MainColor 底 · 右侧 320px 白面板 · 关闭 21px · 行间距 35px · 图标 26px 主色 · 文案 18px
     */
    .platform-mobile-nav .contact-drawer-mask {
        position: fixed;
        inset: 0;
        z-index: 11990;
        background: var(--platform-mobile-contact-bg, var(--MainColor, var(--platform-contact-accent, #333333)));
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity 0.8s ease, visibility 0.8s;
    }

    .platform-mobile-nav .contact-drawer-mask.is-open {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

    .platform-mobile-nav .contact-drawer {
        position: fixed;
        top: 0;
        right: 0;
        z-index: 12010;
        width: 320px;
        max-width: 86vw;
        height: 100%;
        background: #fff;
        transform: translateX(100%);
        visibility: hidden;
        pointer-events: none;
        transition: transform 0.8s ease, visibility 0.8s;
        display: flex;
        flex-direction: column;
        box-shadow: none;
        box-sizing: border-box;
    }

    .platform-mobile-nav .contact-drawer.is-open {
        transform: translateX(0);
        visibility: visible;
        pointer-events: auto;
    }

    .platform-mobile-nav .contact-drawer-head {
        flex: 0 0 auto;
        position: relative;
        min-height: 0;
        height: auto;
        display: block;
        padding: 30px 25px 0;
        border-bottom: 0;
        box-sizing: border-box;
    }

    .platform-mobile-nav .contact-drawer-close {
        position: absolute;
        right: 25px;
        top: 30px;
        cursor: pointer;
        width: 21px;
        height: 21px;
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 1;
    }

    .platform-mobile-nav .contact-drawer-close .iconfont {
        font-size: 21px;
        line-height: 21px;
        color: #1c1c1c;
    }

    .platform-mobile-nav .contact-drawer-body {
        flex: 1 1 auto;
        padding: 10px 25px 30px;
        display: flex;
        flex-direction: column;
        gap: 0;
        box-sizing: border-box;
        width: 100%;
    }

    .platform-mobile-nav .contact-drawer-row {
        display: flex;
        align-items: flex-start;
        gap: 4%;
        margin-top: 35px;
        color: #333333;
        text-decoration: none;
        font-size: 18px;
        line-height: 1.4;
        min-height: 0;
        width: 100%;
        box-sizing: border-box;
    }

    .platform-mobile-nav .contact-drawer-row .iconfont {
        flex: 0 0 auto;
        font-size: 26px;
        line-height: 1;
        margin-top: 10px;
        color: var(--platform-mobile-contact-icon, var(--MainColor, var(--platform-contact-accent, #333333)));
    }

    .platform-mobile-nav .contact-drawer-row > span {
        flex: 1 1 auto;
        min-width: 0;
        margin-top: 10px;
        word-break: break-word;
    }
}



.platform-nav-flyout {
    --platform-nav-flyout-min-width: 8rem;
    --platform-nav-flyout-ink: #1a1a1a;
    --platform-nav-flyout-surface: #ffffff;
    --platform-nav-flyout-edge: rgba(0, 0, 0, 0.08);

    position: absolute;
    /* Slight overlap keeps hover chain stable and avoids a visual “gap” to L4 */
    left: calc(100% - 4px);
    top: 0;
    z-index: 40;
    display: none;
    width: max-content;
    min-width: var(--platform-nav-flyout-min-width);
    max-width: 16rem;
    margin: 0;
    padding: 0.5rem 0;
    list-style: none;
    color: var(--platform-nav-flyout-ink);
    background-color: var(--platform-nav-flyout-surface);
    border-radius: 4px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}

.platform-nav-flyout > li[data-nav-depth] {
    position: relative;
}

.platform-nav-flyout a[data-nav-intent="navigate"] {
    display: block;
    padding: 0.55rem 1rem;
    white-space: nowrap;
    color: inherit;
    text-decoration: none;
}

.platform-nav-flyout a[data-nav-intent="navigate"]:hover,
.platform-nav-flyout a[data-nav-intent="navigate"]:focus-visible {
    background-color: rgba(0, 0, 0, 0.04);
}

li[data-nav-depth]:hover > .platform-nav-flyout,
li[data-nav-depth]:focus-within > .platform-nav-flyout {
    display: block;
}

/**
 * Platform language switcher — structural chrome + flag sprite.
 *
 * ABI (matches bootstrap bindLanguageSelector):
 * - root: [data-module-key="mod_header_language_switcher"]
 * - open: .is-open on root
 * - dropdown: .lang-selector-dropdown · .lang-selector-item[hreflang]
 * - trigger current: .lang-selector-flag[data-lang]
 *
 * Blueprint may wrap with layout slot class (e.g. .eng / .wencvEnglish);
 * open/close + flags stay platform-owned — do not reimplement in theme CSS.
 *
 * Stacking (SSOT here — do not paper over in themes):
 * - Root z-index creates the stacking context; dropdown z-index alone cannot
 *   escape a low root (historical bug: root 50 trapped dropdown 1150 under
 *   theme headBottom / nav often ~999).
 * - Language switcher > theme head/nav chrome & header search (1200+)；
 *   still below mobile_nav (11111) & contact cover (20000).
 *
 * Codes = website.language ISO 639-1 keys (see config/languages.php · LanguageCatalog).
 * Flag CSS keys ISO only (ja/zh/ko…); sprite tile order is design asset, not code authority.
 * Image: ../images/clang.png (27×N, stride 23px; visible flag ~18px).
 * Coverage MUST track LanguageCatalog::codes() — see LangSelectorFlagCoverageTest.
 */

[data-module-key="mod_header_language_switcher"] {
    position: relative;
    /* Root MUST be high — this is the competing layer vs theme .head / nav */
    z-index: 1300;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    user-select: none;
}

[data-module-key="mod_header_language_switcher"].is-single {
    cursor: default;
}

[data-module-key="mod_header_language_switcher"] .lang-selector-dropdown {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    min-width: 140px;
    padding: 6px 0;
    border-radius: 8px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14);
    display: none;
    /* Within root context; keep > in-root chrome. Floor set by root 1300. */
    z-index: 1;
}

[data-module-key="mod_header_language_switcher"].is-open .lang-selector-dropdown {
    display: block;
}

[data-module-key="mod_header_language_switcher"] .lang-selector-item {
    display: block;
    padding: 8px 12px;
    line-height: 1.2;
    color: #222;
    text-decoration: none;
    white-space: nowrap;
}

[data-module-key="mod_header_language_switcher"] .lang-selector-item:hover {
    background: #f5f7fa;
}

[data-module-key="mod_header_language_switcher"] .icondownwe {
    transition: transform 0.2s ease;
}

[data-module-key="mod_header_language_switcher"].is-open .icondownwe {
    transform: rotate(180deg);
}

/**
 * Flag sprite — data-lang / hreflang = ISO 639-1 only (LanguageCatalog / website.language).
 * Sprite tile order is design asset (historical layout + Catalog expansion append); codes are not sprite filenames.
 */
.lang-selector-flag[data-lang="af"]::before,
.lang-selector-flag[data-lang="ar"]::before,
.lang-selector-flag[data-lang="az"]::before,
.lang-selector-flag[data-lang="bg"]::before,
.lang-selector-flag[data-lang="bn"]::before,
.lang-selector-flag[data-lang="ca"]::before,
.lang-selector-flag[data-lang="cs"]::before,
.lang-selector-flag[data-lang="da"]::before,
.lang-selector-flag[data-lang="de"]::before,
.lang-selector-flag[data-lang="el"]::before,
.lang-selector-flag[data-lang="en"]::before,
.lang-selector-flag[data-lang="es"]::before,
.lang-selector-flag[data-lang="et"]::before,
.lang-selector-flag[data-lang="fa"]::before,
.lang-selector-flag[data-lang="fi"]::before,
.lang-selector-flag[data-lang="fr"]::before,
.lang-selector-flag[data-lang="gu"]::before,
.lang-selector-flag[data-lang="he"]::before,
.lang-selector-flag[data-lang="hi"]::before,
.lang-selector-flag[data-lang="hr"]::before,
.lang-selector-flag[data-lang="hu"]::before,
.lang-selector-flag[data-lang="hy"]::before,
.lang-selector-flag[data-lang="id"]::before,
.lang-selector-flag[data-lang="it"]::before,
.lang-selector-flag[data-lang="ja"]::before,
.lang-selector-flag[data-lang="ka"]::before,
.lang-selector-flag[data-lang="kk"]::before,
.lang-selector-flag[data-lang="km"]::before,
.lang-selector-flag[data-lang="ko"]::before,
.lang-selector-flag[data-lang="lt"]::before,
.lang-selector-flag[data-lang="lv"]::before,
.lang-selector-flag[data-lang="mn"]::before,
.lang-selector-flag[data-lang="mr"]::before,
.lang-selector-flag[data-lang="ms"]::before,
.lang-selector-flag[data-lang="my"]::before,
.lang-selector-flag[data-lang="ne"]::before,
.lang-selector-flag[data-lang="nl"]::before,
.lang-selector-flag[data-lang="no"]::before,
.lang-selector-flag[data-lang="pa"]::before,
.lang-selector-flag[data-lang="pl"]::before,
.lang-selector-flag[data-lang="pt"]::before,
.lang-selector-flag[data-lang="ro"]::before,
.lang-selector-flag[data-lang="ru"]::before,
.lang-selector-flag[data-lang="si"]::before,
.lang-selector-flag[data-lang="sk"]::before,
.lang-selector-flag[data-lang="sl"]::before,
.lang-selector-flag[data-lang="sq"]::before,
.lang-selector-flag[data-lang="sr"]::before,
.lang-selector-flag[data-lang="sv"]::before,
.lang-selector-flag[data-lang="sw"]::before,
.lang-selector-flag[data-lang="ta"]::before,
.lang-selector-flag[data-lang="te"]::before,
.lang-selector-flag[data-lang="th"]::before,
.lang-selector-flag[data-lang="tl"]::before,
.lang-selector-flag[data-lang="tr"]::before,
.lang-selector-flag[data-lang="uk"]::before,
.lang-selector-flag[data-lang="ur"]::before,
.lang-selector-flag[data-lang="uz"]::before,
.lang-selector-flag[data-lang="vi"]::before,
.lang-selector-flag[data-lang="zh"]::before,
.lang-selector-item[hreflang="af"]::before,
.lang-selector-item[hreflang="ar"]::before,
.lang-selector-item[hreflang="az"]::before,
.lang-selector-item[hreflang="bg"]::before,
.lang-selector-item[hreflang="bn"]::before,
.lang-selector-item[hreflang="ca"]::before,
.lang-selector-item[hreflang="cs"]::before,
.lang-selector-item[hreflang="da"]::before,
.lang-selector-item[hreflang="de"]::before,
.lang-selector-item[hreflang="el"]::before,
.lang-selector-item[hreflang="en"]::before,
.lang-selector-item[hreflang="es"]::before,
.lang-selector-item[hreflang="et"]::before,
.lang-selector-item[hreflang="fa"]::before,
.lang-selector-item[hreflang="fi"]::before,
.lang-selector-item[hreflang="fr"]::before,
.lang-selector-item[hreflang="gu"]::before,
.lang-selector-item[hreflang="he"]::before,
.lang-selector-item[hreflang="hi"]::before,
.lang-selector-item[hreflang="hr"]::before,
.lang-selector-item[hreflang="hu"]::before,
.lang-selector-item[hreflang="hy"]::before,
.lang-selector-item[hreflang="id"]::before,
.lang-selector-item[hreflang="it"]::before,
.lang-selector-item[hreflang="ja"]::before,
.lang-selector-item[hreflang="ka"]::before,
.lang-selector-item[hreflang="kk"]::before,
.lang-selector-item[hreflang="km"]::before,
.lang-selector-item[hreflang="ko"]::before,
.lang-selector-item[hreflang="lt"]::before,
.lang-selector-item[hreflang="lv"]::before,
.lang-selector-item[hreflang="mn"]::before,
.lang-selector-item[hreflang="mr"]::before,
.lang-selector-item[hreflang="ms"]::before,
.lang-selector-item[hreflang="my"]::before,
.lang-selector-item[hreflang="ne"]::before,
.lang-selector-item[hreflang="nl"]::before,
.lang-selector-item[hreflang="no"]::before,
.lang-selector-item[hreflang="pa"]::before,
.lang-selector-item[hreflang="pl"]::before,
.lang-selector-item[hreflang="pt"]::before,
.lang-selector-item[hreflang="ro"]::before,
.lang-selector-item[hreflang="ru"]::before,
.lang-selector-item[hreflang="si"]::before,
.lang-selector-item[hreflang="sk"]::before,
.lang-selector-item[hreflang="sl"]::before,
.lang-selector-item[hreflang="sq"]::before,
.lang-selector-item[hreflang="sr"]::before,
.lang-selector-item[hreflang="sv"]::before,
.lang-selector-item[hreflang="sw"]::before,
.lang-selector-item[hreflang="ta"]::before,
.lang-selector-item[hreflang="te"]::before,
.lang-selector-item[hreflang="th"]::before,
.lang-selector-item[hreflang="tl"]::before,
.lang-selector-item[hreflang="tr"]::before,
.lang-selector-item[hreflang="uk"]::before,
.lang-selector-item[hreflang="ur"]::before,
.lang-selector-item[hreflang="uz"]::before,
.lang-selector-item[hreflang="vi"]::before,
.lang-selector-item[hreflang="zh"]::before {
    content: "";
    display: inline-block;
    vertical-align: middle;
    width: 27px;
    height: 18px;
    margin-right: 8px;
    background-image: url("../images/clang.png");
    background-repeat: no-repeat;
    background-size: 27px auto;
}

.lang-selector-flag[data-lang="ko"]::before,
.lang-selector-item[hreflang="ko"]::before { background-position: 0 0; }
.lang-selector-flag[data-lang="ar"]::before,
.lang-selector-item[hreflang="ar"]::before { background-position: 0 -23px; }
.lang-selector-flag[data-lang="en"]::before,
.lang-selector-item[hreflang="en"]::before { background-position: 0 -46px; }
.lang-selector-flag[data-lang="es"]::before,
.lang-selector-item[hreflang="es"]::before { background-position: 0 -69px; }
.lang-selector-flag[data-lang="fr"]::before,
.lang-selector-item[hreflang="fr"]::before { background-position: 0 -92px; }
.lang-selector-flag[data-lang="el"]::before,
.lang-selector-item[hreflang="el"]::before { background-position: 0 -115px; }
.lang-selector-flag[data-lang="hi"]::before,
.lang-selector-item[hreflang="hi"]::before { background-position: 0 -138px; }
.lang-selector-flag[data-lang="id"]::before,
.lang-selector-item[hreflang="id"]::before { background-position: 0 -161px; }
.lang-selector-flag[data-lang="it"]::before,
.lang-selector-item[hreflang="it"]::before { background-position: 0 -184px; }
.lang-selector-flag[data-lang="ja"]::before,
.lang-selector-item[hreflang="ja"]::before { background-position: 0 -207px; }
.lang-selector-flag[data-lang="de"]::before,
.lang-selector-item[hreflang="de"]::before { background-position: 0 -230px; }
.lang-selector-flag[data-lang="ms"]::before,
.lang-selector-item[hreflang="ms"]::before { background-position: 0 -253px; }
.lang-selector-flag[data-lang="nl"]::before,
.lang-selector-item[hreflang="nl"]::before { background-position: 0 -276px; }
.lang-selector-flag[data-lang="pl"]::before,
.lang-selector-item[hreflang="pl"]::before { background-position: 0 -299px; }
.lang-selector-flag[data-lang="pt"]::before,
.lang-selector-item[hreflang="pt"]::before { background-position: 0 -322px; }
.lang-selector-flag[data-lang="ru"]::before,
.lang-selector-item[hreflang="ru"]::before { background-position: 0 -345px; }
.lang-selector-flag[data-lang="sv"]::before,
.lang-selector-item[hreflang="sv"]::before { background-position: 0 -368px; }
.lang-selector-flag[data-lang="th"]::before,
.lang-selector-item[hreflang="th"]::before { background-position: 0 -391px; }
.lang-selector-flag[data-lang="tr"]::before,
.lang-selector-item[hreflang="tr"]::before { background-position: 0 -414px; }
.lang-selector-flag[data-lang="vi"]::before,
.lang-selector-item[hreflang="vi"]::before { background-position: 0 -437px; }
.lang-selector-flag[data-lang="zh"]::before,
.lang-selector-item[hreflang="zh"]::before { background-position: 0 -460px; }
.lang-selector-flag[data-lang="bn"]::before,
.lang-selector-item[hreflang="bn"]::before { background-position: 0 -483px; }
.lang-selector-flag[data-lang="fa"]::before,
.lang-selector-item[hreflang="fa"]::before { background-position: 0 -506px; }
.lang-selector-flag[data-lang="af"]::before,
.lang-selector-item[hreflang="af"]::before { background-position: 0 -529px; }
.lang-selector-flag[data-lang="az"]::before,
.lang-selector-item[hreflang="az"]::before { background-position: 0 -552px; }
.lang-selector-flag[data-lang="bg"]::before,
.lang-selector-item[hreflang="bg"]::before { background-position: 0 -575px; }
.lang-selector-flag[data-lang="ca"]::before,
.lang-selector-item[hreflang="ca"]::before { background-position: 0 -598px; }
.lang-selector-flag[data-lang="cs"]::before,
.lang-selector-item[hreflang="cs"]::before { background-position: 0 -621px; }
.lang-selector-flag[data-lang="da"]::before,
.lang-selector-item[hreflang="da"]::before { background-position: 0 -644px; }
.lang-selector-flag[data-lang="et"]::before,
.lang-selector-item[hreflang="et"]::before { background-position: 0 -667px; }
.lang-selector-flag[data-lang="fi"]::before,
.lang-selector-item[hreflang="fi"]::before { background-position: 0 -690px; }
.lang-selector-flag[data-lang="gu"]::before,
.lang-selector-item[hreflang="gu"]::before { background-position: 0 -713px; }
.lang-selector-flag[data-lang="he"]::before,
.lang-selector-item[hreflang="he"]::before { background-position: 0 -736px; }
.lang-selector-flag[data-lang="hr"]::before,
.lang-selector-item[hreflang="hr"]::before { background-position: 0 -759px; }
.lang-selector-flag[data-lang="hu"]::before,
.lang-selector-item[hreflang="hu"]::before { background-position: 0 -782px; }
.lang-selector-flag[data-lang="hy"]::before,
.lang-selector-item[hreflang="hy"]::before { background-position: 0 -805px; }
.lang-selector-flag[data-lang="ka"]::before,
.lang-selector-item[hreflang="ka"]::before { background-position: 0 -828px; }
.lang-selector-flag[data-lang="kk"]::before,
.lang-selector-item[hreflang="kk"]::before { background-position: 0 -851px; }
.lang-selector-flag[data-lang="km"]::before,
.lang-selector-item[hreflang="km"]::before { background-position: 0 -874px; }
.lang-selector-flag[data-lang="lt"]::before,
.lang-selector-item[hreflang="lt"]::before { background-position: 0 -897px; }
.lang-selector-flag[data-lang="lv"]::before,
.lang-selector-item[hreflang="lv"]::before { background-position: 0 -920px; }
.lang-selector-flag[data-lang="mn"]::before,
.lang-selector-item[hreflang="mn"]::before { background-position: 0 -943px; }
.lang-selector-flag[data-lang="mr"]::before,
.lang-selector-item[hreflang="mr"]::before { background-position: 0 -966px; }
.lang-selector-flag[data-lang="my"]::before,
.lang-selector-item[hreflang="my"]::before { background-position: 0 -989px; }
.lang-selector-flag[data-lang="ne"]::before,
.lang-selector-item[hreflang="ne"]::before { background-position: 0 -1012px; }
.lang-selector-flag[data-lang="no"]::before,
.lang-selector-item[hreflang="no"]::before { background-position: 0 -1035px; }
.lang-selector-flag[data-lang="pa"]::before,
.lang-selector-item[hreflang="pa"]::before { background-position: 0 -1058px; }
.lang-selector-flag[data-lang="ro"]::before,
.lang-selector-item[hreflang="ro"]::before { background-position: 0 -1081px; }
.lang-selector-flag[data-lang="si"]::before,
.lang-selector-item[hreflang="si"]::before { background-position: 0 -1104px; }
.lang-selector-flag[data-lang="sk"]::before,
.lang-selector-item[hreflang="sk"]::before { background-position: 0 -1127px; }
.lang-selector-flag[data-lang="sl"]::before,
.lang-selector-item[hreflang="sl"]::before { background-position: 0 -1150px; }
.lang-selector-flag[data-lang="sq"]::before,
.lang-selector-item[hreflang="sq"]::before { background-position: 0 -1173px; }
.lang-selector-flag[data-lang="sr"]::before,
.lang-selector-item[hreflang="sr"]::before { background-position: 0 -1196px; }
.lang-selector-flag[data-lang="sw"]::before,
.lang-selector-item[hreflang="sw"]::before { background-position: 0 -1219px; }
.lang-selector-flag[data-lang="ta"]::before,
.lang-selector-item[hreflang="ta"]::before { background-position: 0 -1242px; }
.lang-selector-flag[data-lang="te"]::before,
.lang-selector-item[hreflang="te"]::before { background-position: 0 -1265px; }
.lang-selector-flag[data-lang="tl"]::before,
.lang-selector-item[hreflang="tl"]::before { background-position: 0 -1288px; }
.lang-selector-flag[data-lang="uk"]::before,
.lang-selector-item[hreflang="uk"]::before { background-position: 0 -1311px; }
.lang-selector-flag[data-lang="ur"]::before,
.lang-selector-item[hreflang="ur"]::before { background-position: 0 -1334px; }
.lang-selector-flag[data-lang="uz"]::before,
.lang-selector-item[hreflang="uz"]::before { background-position: 0 -1357px; }

/**
 * Platform Consent UI Polish v1 — Banner / Preference Center chrome.
 * Visual reference: CookieYes GDPR banner examples（classic light bottom bar / box）.
 * https://www.cookieyes.com/blog/gdpr-cookie-consent-banner-examples/
 * Token SSOT = --consent-*（本文件）. Theme MAY override tokens only.
 * MUST NOT rely on this file for consent decisions（JS → PlatformConsent.save）.
 */

.platform-consent {
  /* CookieYes classic light template tokens */
  --consent-bg: #ffffff;
  --consent-text: #2d3436;
  --consent-muted: #636e72;
  --consent-accent: var(--platform-contact-accent, #1e6feb);
  --consent-accent-fg: #ffffff;
  --consent-border: #e1e4e8;
  --consent-radius: 12px;
  --consent-shadow: 0 8px 28px rgba(45, 52, 54, 0.16);
  --consent-panel-bg: #ffffff;
  --consent-panel-text: #2d3436;
  --consent-btn-bg: #ffffff;
  --consent-btn-text: #2d3436;
  --consent-btn-border: #cfd4da;
  --consent-btn-hover: #f5f6f8;
  --consent-badge-bg: #e8f8ef;
  --consent-badge-text: #0f7a43;
  --consent-backdrop: rgba(45, 52, 54, 0.48);
  --consent-switch-track: #dfe3e8;
  --consent-switch-track-on: var(--consent-accent);
  --consent-switch-thumb: #ffffff;
  --consent-space: 18px;
  --consent-space-sm: 10px;
  --consent-inset: 16px;
  --consent-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --consent-font-size: 14px;
  --consent-touch-min: 44px;
  --consent-z-banner: 2147483000;
  --consent-z-modal: 2147483010;

  /* Legacy aliases */
  --platform-consent-bg: var(--consent-bg);
  --platform-consent-fg: var(--consent-text);
  --platform-consent-muted: var(--consent-muted);
  --platform-consent-accent: var(--consent-accent);
  --platform-consent-accent-fg: var(--consent-accent-fg);
  --platform-consent-panel: var(--consent-panel-bg);
  --platform-consent-panel-fg: var(--consent-panel-text);
  --platform-consent-border: var(--consent-border);
  --platform-consent-z-banner: var(--consent-z-banner);
  --platform-consent-z-modal: var(--consent-z-modal);

  font-family: var(--consent-font);
  font-size: var(--consent-font-size);
  line-height: 1.55;
  color: var(--consent-text);
  -webkit-font-smoothing: antialiased;
}

.platform-consent[hidden],
.platform-consent__banner[hidden],
.platform-consent__modal[hidden] {
  display: none !important;
}

/* —— Banner：CookieYes classic = 底部浅色浮层盒 —— */
.platform-consent__banner {
  position: fixed;
  left: var(--consent-inset);
  right: var(--consent-inset);
  bottom: calc(var(--consent-inset) + env(safe-area-inset-bottom, 0px));
  z-index: var(--consent-z-banner);
  background: var(--consent-bg);
  color: var(--consent-text);
  border: 1px solid var(--consent-border);
  border-radius: var(--consent-radius);
  box-shadow: var(--consent-shadow);
}

.platform-consent__banner-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: var(--consent-space) 22px;
  display: flex;
  flex-wrap: wrap;
  gap: var(--consent-space);
  align-items: center;
  justify-content: space-between;
}

.platform-consent__copy {
  margin: 0;
  flex: 1 1 300px;
  color: var(--consent-muted);
  max-width: 52rem;
  font-size: 14px;
  line-height: 1.55;
}

.platform-consent__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--consent-space-sm);
  align-items: stretch;
}

.platform-consent__btn {
  appearance: none;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--consent-touch-min);
  min-width: 8rem;
  padding: 10px 18px;
  margin: 0;
  border: 1px solid var(--consent-btn-border);
  border-radius: 6px;
  background: var(--consent-btn-bg);
  color: var(--consent-btn-text);
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0;
  text-align: center;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.platform-consent__btn:focus-visible {
  outline: 2px solid var(--consent-accent);
  outline-offset: 2px;
}

.platform-consent__btn--reject:hover,
.platform-consent__btn--preferences:hover,
.platform-consent__btn--save:hover {
  background: var(--consent-btn-hover);
  border-color: #b8bec6;
}

/* CookieYes classic：Accept 实心主色；Reject / Customise 同高描边 —— 等权发现 */
.platform-consent__btn--accept {
  background: var(--consent-accent);
  color: var(--consent-accent-fg);
  border-color: var(--consent-accent);
  box-shadow: 0 1px 2px rgba(30, 111, 235, 0.22);
}

.platform-consent__btn--accept:hover {
  filter: brightness(1.06);
}

.platform-consent__btn--reject,
.platform-consent__btn--preferences,
.platform-consent__btn--save {
  background: var(--consent-btn-bg);
  color: var(--consent-btn-text);
  border-color: var(--consent-btn-border);
}

/* —— Preference Center（CookieYes 二层偏好盒）—— */
.platform-consent__modal {
  position: fixed;
  inset: 0;
  z-index: var(--consent-z-modal);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  padding-bottom: max(16px, env(safe-area-inset-bottom, 0px));
}

.platform-consent__backdrop {
  position: absolute;
  inset: 0;
  background: var(--consent-backdrop);
}

.platform-consent__dialog {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  width: min(560px, calc(100vw - 32px));
  max-height: min(86vh, 720px);
  background: var(--consent-panel-bg);
  color: var(--consent-panel-text);
  border-radius: var(--consent-radius);
  border: 1px solid var(--consent-border);
  box-shadow: 0 18px 48px rgba(45, 52, 54, 0.22);
  overflow: hidden;
}

.platform-consent__dialog-body {
  flex: 1 1 auto;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  padding: 22px 22px 14px;
}

.platform-consent__title {
  margin: 0 0 18px;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--consent-panel-text);
  letter-spacing: -0.01em;
}

.platform-consent__categories {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 12px;
}

.platform-consent__category {
  border: 1px solid var(--consent-border);
  border-radius: 8px;
  padding: 14px;
  background: #fafbfc;
}

.platform-consent__category-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: var(--consent-touch-min);
}

.platform-consent__category-name {
  font-weight: 650;
  color: var(--consent-panel-text);
}

.platform-consent__badge {
  flex-shrink: 0;
  font-size: 12px;
  font-weight: 650;
  color: var(--consent-badge-text);
  background: var(--consent-badge-bg);
  border-radius: 999px;
  padding: 4px 10px;
}

.platform-consent__category-desc {
  margin: 8px 0 0;
  color: var(--consent-muted);
  font-size: 13px;
  line-height: 1.5;
}

.platform-consent__switch {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
  width: 48px;
  height: 28px;
  align-items: center;
}

.platform-consent__switch-input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
  z-index: 2;
}

.platform-consent__switch-ui {
  display: block;
  width: 48px;
  height: 28px;
  border-radius: 999px;
  background: var(--consent-switch-track);
  border: 1px solid var(--consent-border);
  transition: background 0.15s ease;
  pointer-events: none;
}

.platform-consent__switch-ui::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--consent-switch-thumb);
  box-shadow: 0 1px 3px rgba(45, 52, 54, 0.28);
  transition: transform 0.15s ease;
}

.platform-consent__switch-input:checked + .platform-consent__switch-ui {
  background: var(--consent-switch-track-on);
  border-color: var(--consent-switch-track-on);
}

.platform-consent__switch-input:checked + .platform-consent__switch-ui::after {
  transform: translateX(20px);
}

.platform-consent__switch-input:focus-visible + .platform-consent__switch-ui {
  outline: 2px solid var(--consent-accent);
  outline-offset: 2px;
}

.platform-consent__actions--modal {
  flex: 0 0 auto;
  margin: 0;
  padding: 14px 22px;
  padding-bottom: max(14px, env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--consent-border);
  background: var(--consent-panel-bg);
  justify-content: flex-end;
  position: sticky;
  bottom: 0;
  z-index: 1;
  gap: var(--consent-space-sm);
}

.platform-consent__actions--modal .platform-consent__btn--reject,
.platform-consent__actions--modal .platform-consent__btn--save,
.platform-consent__actions--modal .platform-consent__btn--preferences {
  background: var(--consent-btn-bg);
  color: var(--consent-panel-text);
  border-color: var(--consent-btn-border);
}

/* —— Mobile：同组件变形（CookieYes responsive）—— */
@media (max-width: 640px) {
  .platform-consent {
    --consent-touch-min: 48px;
    --consent-inset: 10px;
  }

  .platform-consent__banner {
    left: var(--consent-inset);
    right: var(--consent-inset);
    bottom: calc(var(--consent-inset) + env(safe-area-inset-bottom, 0px));
  }

  .platform-consent__banner-inner {
    flex-direction: column;
    align-items: stretch;
    padding: 16px;
  }

  .platform-consent__actions {
    width: 100%;
    flex-direction: column;
  }

  .platform-consent__btn {
    width: 100%;
    min-width: 0;
    flex: 0 0 auto;
  }

  .platform-consent__modal {
    align-items: flex-end;
    padding: 0;
    padding-bottom: 0;
  }

  .platform-consent__dialog {
    width: 100%;
    max-height: 92vh;
    margin: 0;
    border-radius: var(--consent-radius) var(--consent-radius) 0 0;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
  }

  .platform-consent__actions--modal {
    flex-direction: column;
    justify-content: stretch;
  }

  .platform-consent__actions--modal .platform-consent__btn {
    width: 100%;
  }
}

@media (max-width: 640px) and (orientation: landscape) {
  .platform-consent__banner {
    max-height: 45vh;
    overflow: auto;
  }

  .platform-consent__dialog {
    max-height: 85vh;
  }
}
