/* V3 governance: the only authoritative typography layer for public pages. */
@font-face{font-family:"GQ V3 Text";src:url("fonts/SourceHanSansSC-VF.woff2") format("woff2-variations");font-style:normal;font-weight:300 900;font-display:swap;unicode-range:U+2E80-2EFF,U+3000-303F,U+31C0-31EF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE10-FE1F,U+FE30-FE4F,U+FF00-FFEF}
@font-face{font-family:"GQ V3 Text";src:url("fonts/FiraCode-Light.woff2") format("woff2");font-style:normal;font-weight:300;font-display:swap;unicode-range:U+0000-024F}
@font-face{font-family:"GQ V3 Text";src:url("fonts/FiraCode-Regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0000-024F}
@font-face{font-family:"GQ V3 Text";src:url("fonts/FiraCode-Medium.woff2") format("woff2");font-style:normal;font-weight:500;font-display:swap;unicode-range:U+0000-024F}
@font-face{font-family:"GQ V3 Text";src:url("fonts/FiraCode-Bold.woff2") format("woff2");font-style:normal;font-weight:700;font-display:swap;unicode-range:U+0000-024F}

:root{--gq-v3-font:"GQ V3 Text","Source Han Sans SC",sans-serif;--gq-v3-ink:#1a1a2e;--gq-v3-body:#374151;--gq-v3-muted:#6b7280;--gq-v3-line:#d9dee5;--gq-v3-red:var(--gq-primary);--gq-v3-red-hover:var(--gq-primary-hover);--gq-v3-surface:#fff;--gq-v3-soft:#f5f7fa;--gq-v3-radius:0;--gq-v3-motion:160ms ease}
body[data-genre],body[data-genre] *,body[data-genre] *::before,body[data-genre] *::after{font-family:var(--gq-v3-font)!important}
html body[data-genre]{color:var(--gq-v3-body);font-weight:400}
html body[data-genre] :is(h1,h2,h3,h4,h5,h6,.gq-button,.gq-nav a){font-weight:500}
html body[data-genre] :is(strong,b,.gq-button--light){font-weight:700}
html body[data-genre] :is(input,textarea,select)::placeholder{font-weight:300;opacity:1}
html body[data-genre] :is(button,a,input,textarea,select):focus-visible{outline:2px solid var(--gq-v3-red);outline-offset:2px}
html body[data-genre] :is(.gq-card,.gq-product-page__card,.gq-solution-page__card,.gq-case-card,.gq-news-card,.gq-contact-card,.gq-content-detail__sidebar section){border-radius:var(--gq-v3-radius)}
html body[data-genre] :is(.gq-button,.gq-pagination a,.gq-pagination button,.gq-product-page__pagination a,.gq-solution-page__pagination a,.gq-case-pagination a,.gq-news-pagination a){border-radius:var(--gq-v3-radius)}
html body[data-genre] :is(.gq-card,.gq-product-page__card,.gq-solution-page__card,.gq-case-card,.gq-news-card){transition:border-color var(--gq-v3-motion),background-color var(--gq-v3-motion),transform var(--gq-v3-motion)}
html body[data-genre] :is(.gq-card,.gq-product-page__card,.gq-solution-page__card,.gq-case-card,.gq-news-card):hover{border-color:var(--gq-v3-red)}
html body[data-genre] .gq-cta>.gq-shell>p{font-weight:400;letter-spacing:.04em}
html body[data-genre] .gq-icon{font-family:inherit!important}
/* One CTA contract for home, archives, details and single pages. */
html body[data-genre] .gq-cta,html body[data-genre] .gq-cta *{font-family:"Alibaba PuHuiTi",sans-serif!important}
html body[data-genre] .gq-cta>div>p{font-size:12px!important;font-weight:500!important;line-height:1.4!important}
html body[data-genre] .gq-cta h2{max-width:900px!important;margin:12px auto 30px!important;font-size:30px!important;font-weight:500!important;line-height:1.35!important}
html body[data-genre] .gq-cta .gq-actions{display:flex!important;justify-content:center!important;gap:14px!important;flex-wrap:wrap!important}
html body[data-genre] .gq-cta .gq-button{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:44px!important;padding:12px 24px!important;font-size:12px!important;font-weight:500!important;line-height:1.4!important}
html body[data-genre] .gq-cta__phone{display:block!important;margin-top:24px!important;font-size:12px!important;font-weight:300!important;line-height:1.4!important}
@media(max-width:760px){html body[data-genre] .gq-cta h2{font-size:26px!important}}
/* The two article-style single pages lacked the shared hotline node; restore the same CTA rhythm. */
html body[data-genre="aboutus"] .gq-about-profile-detail #contact .gq-shell::after,html body[data-genre="sitecontent"] .gq-single-page #contact .gq-shell::after{display:block;margin-top:24px;color:#fff;content:"服务热线：400-880-3216";font-size:12px;font-weight:300;line-height:1.4}
html body[data-genre] .gq-v3-social{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}html body[data-genre] .gq-v3-social__icon{display:block;width:20px;height:20px;object-fit:contain}.gq-v3-profile-more{display:inline-flex;margin-top:6px;color:var(--gq-v3-red);font-size:13px;text-decoration:none}.gq-v3-profile-more:hover{color:var(--gq-v3-red-hover)}
html body[data-genre] .gq-v3-banner{background-image:linear-gradient(90deg,rgba(12,18,30,.62),rgba(12,18,30,.18)),var(--gq-v3-banner-image)!important;background-position:center!important;background-size:cover!important}
@media (max-width:760px){html body[data-genre] .gq-v3-banner[data-v3-banner-mobile="true"]{background-image:linear-gradient(90deg,rgba(12,18,30,.62),rgba(12,18,30,.18)),var(--gq-v3-banner-mobile-image)!important}}
html body[data-genre="aboutus"] .gq-about-profile .gq-about-copy{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}html body[data-genre="aboutus"] .gq-about-profile .gq-about-copy p{display:inline;margin:0}html body[data-genre="aboutus"] .gq-about-profile .gq-about-copy p+p::before{content:" "}
html body[data-genre="aboutus"] .gq-about-hero.gq-v3-managed-page-banner{background:linear-gradient(90deg,rgba(7,10,14,.34) 0%,rgba(7,10,14,.72) 28%,rgba(7,10,14,.88) 50%,rgba(7,10,14,.72) 72%,rgba(7,10,14,.34) 100%),var(--gq-v3-content-banner-image) center center/cover no-repeat!important}
/* Product detail is a standalone legacy route: keep rich text and media within its article shell. */
.gq-product-detail__body{min-width:0!important;max-width:100%!important}
.gq-product-detail__richtext{width:100%!important;max-width:100%!important;min-width:0!important;overflow-wrap:anywhere;word-break:break-word}
.gq-product-detail__richtext :is(img,picture>img,video){display:block!important;width:min(800px,100%)!important;max-width:100%!important;height:auto!important;box-sizing:border-box;margin:1.8em auto!important;object-fit:contain}
.gq-product-detail__richtext :is(figure,picture,iframe,.gq-video-embed,table,pre){max-width:100%!important;box-sizing:border-box}
.gq-product-detail__richtext :is(iframe,.gq-video-embed){display:block;width:min(800px,100%)!important;margin-inline:auto!important}
.gq-product-detail__richtext :is(table,pre){width:100%!important;overflow-x:auto}
/* Shared archive-card image interaction, aligned with the homepage solution cards. */
:is(.gq-product-page__image,.gq-product-card__image,.gq-solution-page__image,.gq-case-card__image,.gq-news-card__image){position:relative;isolation:isolate;overflow:hidden}
:is(.gq-product-page__image,.gq-product-card__image,.gq-solution-page__image,.gq-case-card__image,.gq-news-card__image)::after{position:absolute;z-index:2;inset:0;pointer-events:none;content:"";background:linear-gradient(0deg,rgba(218,53,55,.72),rgba(20,20,30,.05));opacity:0;transition:opacity .25s ease}
:is(.gq-product-page__card,.gq-product-card,.gq-solution-page__card,.gq-case-card,.gq-news-card):is(:hover,:focus-within) :is(.gq-product-page__image,.gq-product-card__image,.gq-solution-page__image,.gq-case-card__image,.gq-news-card__image)::after{opacity:1}
:is(.gq-product-page__image,.gq-product-card__image,.gq-solution-page__image,.gq-case-card__image,.gq-news-card__image) img{transition:transform .25s ease!important}
:is(.gq-product-page__card,.gq-product-card,.gq-solution-page__card,.gq-case-card,.gq-news-card):is(:hover,:focus-within) :is(.gq-product-page__image,.gq-product-card__image,.gq-solution-page__image,.gq-case-card__image,.gq-news-card__image) img{transform:scale(1.04)}
@media (prefers-reduced-motion:reduce){html body[data-genre] *,html body[data-genre] *::before,html body[data-genre] *::after{scroll-behavior:auto!important;transition-duration:0.01ms!important;animation-duration:0.01ms!important;animation-iteration-count:1!important}}

/* Final typography authority: Alibaba PuHuiTi Light/Medium across every public module. */
@font-face{font-family:"Alibaba PuHuiTi";src:url("fonts/AlibabaPuHuiTi-3-45-Light.ttf") format("truetype");font-style:normal;font-weight:300;font-display:swap}
@font-face{font-family:"Alibaba PuHuiTi";src:url("fonts/AlibabaPuHuiTi-3-55-Regular.ttf") format("truetype");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Alibaba PuHuiTi";src:url("fonts/AlibabaPuHuiTi-3-65-Medium.ttf") format("truetype");font-style:normal;font-weight:500;font-display:swap}
:root{--gq-v3-font:"Alibaba PuHuiTi",sans-serif;--gq-font-text:"Alibaba PuHuiTi",sans-serif;--gq-font-sans:"Alibaba PuHuiTi",sans-serif;--gq-font-cjk:"Alibaba PuHuiTi",sans-serif;--gq-font-cjk-light:"Alibaba PuHuiTi",sans-serif;--gq-font-cjk-normal:"Alibaba PuHuiTi",sans-serif;--gq-font-mono:"Alibaba PuHuiTi",sans-serif}
html body[data-genre],html body[data-genre] *{font-family:"Alibaba PuHuiTi",sans-serif!important}
html body[data-genre] .gq-icon{font-family:inherit!important}
