/* layout-v2.css — Cunnet 导航(PageHeader + 两套 offcanvas) 与页脚(BrandingStudioFooter) 样式
   抽自 branding-studio，商业字体已换回站点标准，Bootstrap 栅格未抽(站内已有)。
   🔴 本文件不带作用域前缀：导航与页脚在 <main> 之外。 */
:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,#ffffff26,#fff0);--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:#0000002d;--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}
@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}
@media (min-width:576px){.navbar-expand-sm .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}
@media (min-width:768px){.navbar-expand-md .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}
@media (min-width:992px){.navbar-expand-lg .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}
@media (min-width:1200px){.navbar-expand-xl .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}
@media (min-width:1400px){.navbar-expand-xxl .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}
.navbar-expand .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}
.navbar-expand .offcanvas .offcanvas-header{display:none}
.navbar-expand .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}
@keyframes progress-bar-stripes{0%{background-position-x:1rem}}
@keyframes spinner-border{to{transform:rotate(360deg)}}
@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}
.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 .125rem .25rem #00000013}
@media (max-width:575.98px){.offcanvas-sm{z-index:var(--bs-offcanvas-zindex);max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;flex-direction:column;transition:transform .3s ease-in-out;display:flex;position:fixed;bottom:0}}
@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}
@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-sm.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}
@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}
@media (max-width:767.98px){.offcanvas-md{z-index:var(--bs-offcanvas-zindex);max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;flex-direction:column;transition:transform .3s ease-in-out;display:flex;position:fixed;bottom:0}}
@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}
@media (max-width:767.98px){.offcanvas-md.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-md.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}
@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}
@media (max-width:991.98px){.offcanvas-lg{z-index:var(--bs-offcanvas-zindex);max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;flex-direction:column;transition:transform .3s ease-in-out;display:flex;position:fixed;bottom:0}}
@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}
@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-lg.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}
@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}
@media (max-width:1199.98px){.offcanvas-xl{z-index:var(--bs-offcanvas-zindex);max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;flex-direction:column;transition:transform .3s ease-in-out;display:flex;position:fixed;bottom:0}}
@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}
@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-xl.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}
@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}
@media (max-width:1399.98px){.offcanvas-xxl{z-index:var(--bs-offcanvas-zindex);max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;flex-direction:column;transition:transform .3s ease-in-out;display:flex;position:fixed;bottom:0}}
@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}
@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-xxl.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}
@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}
.offcanvas{z-index:var(--bs-offcanvas-zindex);max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;flex-direction:column;transition:transform .3s ease-in-out;display:flex;position:fixed;bottom:0}
@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}
.offcanvas.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}
.offcanvas.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}
.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}
.offcanvas.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}
.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}
.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}
.offcanvas-backdrop{z-index:1040;background-color:#000;width:100vw;height:100vh;position:fixed;top:0;left:0}
.offcanvas-backdrop.fade{opacity:0}
.offcanvas-backdrop.show{opacity:.5}
.offcanvas-header{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);justify-content:space-between;align-items:center;display:flex}
.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5)calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-.5*var(--bs-offcanvas-padding-y));margin-right:calc(-.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5*var(--bs-offcanvas-padding-y))}
.offcanvas-title{margin-bottom:0;line-height:1.5}
.offcanvas-body{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);flex-grow:1;overflow-y:auto}
@keyframes placeholder-glow{50%{opacity:.2}}
@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0;mask-position:-200% 0}}
.d-inline{display:inline!important}
.d-inline-block{display:inline-block!important}
.d-block{display:block!important}
.d-grid{display:grid!important}
.d-table{display:table!important}
.d-table-row{display:table-row!important}
.d-table-cell{display:table-cell!important}
.d-flex{display:flex!important}
.d-inline-flex{display:inline-flex!important}
.d-none{display:none!important}
.justify-content-end{justify-content:flex-end!important}
.justify-content-center{justify-content:center!important}
.justify-content-between{justify-content:space-between!important}
.align-items-center{align-items:center!important}
.gap-1{gap:.25rem!important}
.text-center{text-align:center!important}
.text-uppercase{text-transform:uppercase!important}
.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}
@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}}
@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}}
@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.text-lg-end{text-align:right!important}}
@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}}
@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}}
@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
.mt-65{margin-top:65px}
.mb-20{margin-bottom:20px}
.mb-25{margin-bottom:25px}
.mb-30{margin-bottom:30px}
.mb-40{margin-bottom:40px}
.mb-50{margin-bottom:50px}
.ml-10{margin-left:10px}
.pt-30{padding-top:30px}
.pt-105{padding-top:105px}
.pb-10{padding-bottom:10px}
.pb-15{padding-bottom:15px}
.fa-solid{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-variant:normal;text-rendering:auto;font-style:normal;line-height:1}
@keyframes fa-beat{0%,90%{transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}
@keyframes fa-bounce{0%{transform:scale(1)translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9))translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9))translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1))translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1))translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95))translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95))translateY(0)}57%{-webkit-transform:scale(1)translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1)translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1)translateY(0)}to{transform:scale(1)translateY(0)}}
@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}
@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}
@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}
@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}
@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}
.fa-plus:before{content:"+"}
:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}
:root{--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone"}
:root{--fa-font-light:normal 300 1em/1 "Font Awesome 6 Free"}
:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}
:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}
.fa-solid{font-family:"Font Awesome 6 Free";font-weight:900}
:root{--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Free"}
:root{--tp-ff-body:"Inter",sans-serif;--tp-ff-inter:"Inter",sans-serif;--tp-ff-heading:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--tp-ff-p:"Inter",sans-serif;--tp-ff-jost:"Jost",sans-serif;--tp-ff-sequel-medium:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--tp-ff-sequel-roman:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--tp-ff-sequel-bold-head:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--tp-ff-sequel-semi-bold:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--tp-ff-sequel-heavy-disp:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--tp-ff-fontawesome:"Font Awesome 6 Free";--tp-common-white:#fff;--tp-common-black:#1e1e1e;--tp-common-bubbles:#e1eeb7;--tp-grey-1:#5e5959;--tp-grey-2:#f3f3f3;--tp-grey-3:#b6bcc6;--tp-grey-4:#f6f6f6;--tp-grey-5:#d7cdcd;--tp-border-1:#1e1e1e1a;--tp-theme-primary:#fa2837;--tp-gradient-primary:linear-gradient(90deg,#a020f0 0%,#00ffd1 100%)}
.fix{overflow:hidden}
.p-relative{position:relative}
.tp-ff-sequel-roman{font-family:var(--tp-ff-sequel-roman)}
.tp-ff-sequel-heavy-disp{font-family:var(--tp-ff-sequel-heavy-disp)}
@media only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.pt-105{padding-top:65px}}
@keyframes bar_anim{0%,to{clip-path:inset(-2px 0)}42%{clip-path:inset(-2px 0 -2px 100%)}43%{clip-path:inset(-2px 100% -2px 0)}}
@keyframes levitate-lg{0%{transform:translateY(0)scale(1)}50%{transform:translateY(30px)scale(1.01)}to{transform:translateY(0)scale(1)}}
@keyframes rotate-infinite{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes rotate-infinite-2{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}
@keyframes tpshake{10%{transform:translateY(-10px)}50%{transform:skew(15deg)}80%{transform:rotate(10deg)}to{transform:translate(0)}}
@keyframes animate-pulse{0%{box-shadow:0 0 #fff3,0 0 #fff3}40%{box-shadow:0 0 0 50px #ff6d4a00,0 0 #fff3}80%{box-shadow:0 0 0 50px #ff6d4a00,0 0 0 30px #ff6d4a00}to{box-shadow:0 0 #ff6d4a00,0 0 0 30px #ff6d4a00}}
@keyframes arrowLineRotation{to{transform:rotate(180deg)}}
@keyframes arrowLineRotationRev{to{transform:rotate(-180deg)}}
@keyframes preloader{0%{opacity:.5;transform:scale(0)}to{opacity:0;transform:scale(1)}}
@-webkit-keyframes preloader{0%{opacity:.5;-webkit-transform:scale(0)}to{opacity:0;-webkit-transform:scale(1)}}
.tp-order-details-item-wrapper .row [class*=col-]:nth-child(2n) .tp-order-details-item{padding-left:40px}
@media (max-width:574.98px){.tp-order-details-item-wrapper .row [class*=col-]:nth-child(2n) .tp-order-details-item{padding-left:0}}
.tp-header-sidebar-btn{border-radius:50px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;padding-right:10px;display:flex}
.tp-header-sidebar-btn:hover span{animation:.8s cubic-bezier(.44,1.1,.53,.99) forwards bar_anim}
.tp-header-sidebar-btn:hover span:nth-child(2){animation-delay:.1s}
.tp-header-sidebar-btn span{background:var(--tp-common-black);border-radius:20px;width:13px;height:2px;margin:0 0 0 auto;display:inline-block}
.tp-header-sidebar-btn span:nth-child(2){width:20px}
.tp-header-sidebar-btn-bg{background:var(--tp-common-black);border-radius:50px;justify-content:center;width:36px;height:36px;padding-right:9px}
.tp-header-sidebar-btn-bg span{background:var(--tp-common-white)}
.tp-header-sidebar-btn-bg span:nth-child(2){width:18px}
.tp-header-sidebar-btn-bg-white{background:var(--tp-common-white)}
.tp-header-sidebar-btn-bg-white span{background:var(--tp-common-black)}
.tp-header-spacing{padding:20px 0}
.tp-header-logo .logo-2{display:none}
.header-transparent{z-index:9;width:100%;position:absolute;top:0;left:0;right:0}
.cs-header-style .tp-main-menu nav ul li a{color:var(--tp-common-white)}
.cs-header-style .tp-main-menu nav ul li a:hover,.cs-header-style .tp-main-menu nav ul li:hover.has-dropdown>a{color:var(--tp-common-black);background:var(--tp-common-white)}
.cs-header-style .tp-header-sidebar-btn span{background:var(--tp-common-white)}
.cs-header-style .tp-header-search-btn.tp-search-click{color:var(--tp-common-white)}
:root{--basic-ease:cubic-bezier(.625,.05,0,1)}
.tp-title-text span{text-shadow:0 1.05em var(--tp-theme-primary);transition:translate .3s var(--basic-ease),text-shadow .1s .15s ease;display:inline-block}
.tp-title-anim:hover .tp-title-text span{text-shadow:0 1.05em;transition:translate .5s calc((var(--char) - 1)*24ms)var(--basic-ease),text-shadow .175s calc((var(--char) - 1)*24ms + .225s)ease;translate:0 -1.05em}
.tp-title-anim-inner{justify-content:flex-start;align-items:flex-start;display:flex;overflow-y:clip}
.tp-title-text-2 span{text-shadow:0 1.05em var(--tp-theme-primary);transition:translate .3s var(--basic-ease),text-shadow .1s .15s ease;display:inline-block}
.tp-title-anim-2:hover .tp-title-text-2 span{text-shadow:0 1.05em;transition:translate .5s calc((var(--char) - 1)*24ms)var(--basic-ease),text-shadow .175s calc((var(--char) - 1)*24ms + .225s)ease;translate:0 -1.05em}
.tp-header-sticky.tp-header-spacing{padding:14px 0}
@keyframes headerSlideDown{0%{margin-top:-150px}to{margin-top:0}}
.shop-header-right .tp-menu-bar{margin-top:3px}
.shop-header-right .tp-search-click{margin-top:1px}
.tp-main-menu nav ul li{list-style:none;display:inline-block;position:relative}
.tp-main-menu nav ul li:hover>.submenu{visibility:visible;opacity:1;transform:scale(1)}
.tp-main-menu nav ul li:hover.has-dropdown>a{color:var(--tp-common-white);background:var(--tp-common-black)}
.tp-main-menu nav ul li a{font-family:var(--tp-ff-sequel-roman);letter-spacing:-.02em;color:var(--tp-common-black);border-radius:29px;padding:8px 16px;font-size:16px;line-height:1;display:inline-block}
.tp-main-menu nav ul li a:hover{background:var(--tp-common-black);color:var(--tp-common-white)}
.tp-main-menu nav ul li .submenu{z-index:99;opacity:0;text-align:start;visibility:hidden;transform-origin:0 0;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);background:#ffffffe6;border-radius:14px;width:260px;padding:12px 0;transition:all .5s;position:absolute;top:100%;left:0;transform:scaleY(0);box-shadow:0 20px 30px -8px #1313161a}
.tp-main-menu nav ul li .submenu li{border-radius:8px;width:100%;margin:0;padding:0 12px}
.tp-main-menu nav ul li .submenu li a{color:#636368;letter-spacing:-.01em;text-align:start;width:100%;font-size:16px;font-weight:500;line-height:1;font-family:var(--tp-ff-sequel-roman);border-radius:27px;padding:12px 18px;display:inline-block;position:relative}
.tp-main-menu nav ul li .submenu li .submenu{top:0;left:100%}
.tp-main-menu nav ul li .submenu li:hover>a{background:#ededed;color:var(--tp-common-black)!important}
.tp-main-menu nav ul li .tp-megamenu{width:720px;padding:30px}
.tp-main-menu nav ul li .tp-megamenu li{padding:0}
.tp-main-menu nav ul li .tp-megamenu-title{color:var(--tp-common-black);font-size:20px;font-weight:600;font-family:var(--tp-ff-inter);padding-left:18px}
.tp-main-menu nav ul li .tp-megamenu-title-wrap{border-bottom:1px solid #00000014;margin-bottom:10px;padding-bottom:10px;display:block}
.tp-megamenu-title{color:var(--tp-common-black);font-size:20px;font-weight:600;font-family:var(--tp-ff-inter)}
.tp-megamenu-title-wrap{border-bottom:1px solid #00000014;margin-bottom:10px;padding-bottom:10px;display:block}
.tp-offcanvas{background-position:50%;background-repeat:no-repeat;background-size:cover;background-color:var(--tp-common-white);z-index:997;scrollbar-width:none;opacity:0;visibility:hidden;width:450px;padding:50px;transition:all .45s ease-in-out;position:fixed;top:0;bottom:0;right:-100%;overflow-y:scroll;box-shadow:0 16px -32px #000c}
@media (max-width:574.98px){.tp-offcanvas{width:100%;padding:40px 35px}}
@media only screen and (min-width:576px) and (max-width:767px){.tp-offcanvas{width:400px;padding:40px}}
.tp-offcanvas .logo-2{display:none}
.tp-offcanvas.opened{opacity:1;visibility:visible;transition:all .6s cubic-bezier(.785,.135,.15,.86);right:0}
.tp-offcanvas-top{margin-bottom:50px}
.tp-offcanvas-close-btn button{color:#000}
.tp-offcanvas-close-btn button:hover{opacity:1;transform:rotate(90deg)}
.tp-offcanvas-menu .tp-megamenu-box{margin-bottom:30px}
.tp-offcanvas-menu .tp-megamenu-box li a{border-radius:10px;padding:8px 20px;font-size:17px}
.tp-offcanvas-menu .tp-megamenu-box li a:hover{color:var(--tp-common-black);background-color:#f8f8fb}
.tp-offcanvas-menu .tp-megamenu{margin-top:15px}
.tp-offcanvas-social{margin-top:30px}
.tp-offcanvas-social ul{align-items:center;display:flex}
.tp-offcanvas-social ul li{list-style:none}
.tp-offcanvas-social ul li:not(:last-child){margin-right:8px}
.tp-offcanvas-social ul li a{text-align:center;width:40px;height:40px;color:var(--tp-common-black);border:1px solid #020b181a;border-radius:40px;line-height:38px;transition:all .3s;display:inline-block}
.tp-offcanvas-social ul li a:hover{background-color:var(--tp-common-black);border-color:var(--tp-common-black);color:var(--tp-common-white)}
.tp-offcanvas-social ul li a svg{transform:translateY(-1px)}
.tp-offcanvas-title{letter-spacing:-.8px;color:var(--tp-common-black);margin-bottom:15px;font-size:40px;font-weight:500;line-height:1}
.tp-offcanvas-title.sm{text-transform:uppercase;color:var(--tp-common-black);margin-bottom:15px;font-size:20px;font-weight:500}
.tp-offcanvas-contact{margin-bottom:55px}
.tp-offcanvas-contact ul li{list-style:none}
.tp-offcanvas-contact ul li:not(:last-child){margin-bottom:2px}
.tp-offcanvas-contact ul li a{color:#414144;font-size:16px;font-family:var(--tp-ff-inter);display:inline-block;position:relative}
.tp-offcanvas-contact ul li a:after{content:"";background-color:#1e1e1e;width:0;height:1px;transition:all .4s;position:absolute;bottom:2px;right:0}
.tp-offcanvas-contact ul li a:hover{color:var(--tp-common-black)}
.tp-offcanvas-contact ul li a:hover:after{width:100%;left:0;right:auto}
.tp-offcanvas-gallery{margin-bottom:65px}
.tp-offcanvas-gallery-img img{transition:all .9s}
.tp-offcanvas-gallery-img:hover img{transform:scale(1.2)rotate(-2deg)}
.tp-offcanvas-content{margin-bottom:45px}
.tp-offcanvas-content p{color:#414144;font-size:16px;font-weight:400;line-height:24px;font-family:var(--tp-ff-inter)}
.tp-offcanvas-2-wrapper{z-index:2;padding:100px 100px 0;position:relative}
@media only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px){.tp-offcanvas-2-wrapper{padding:80px 60px 0 30px}}
@media only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-offcanvas-2-wrapper{padding:60px 30px 0}}
.tp-offcanvas-2-wrapper .tp-menu-close{top:30px}
@media (max-width:574.98px){.tp-offcanvas-2-wrapper .tp-menu-close{top:13px}}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li{opacity:0;visibility:hidden;overflow:hidden;transition:all 1.5s ease-in-out!important}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li:nth-child(2)>a{transition-delay:1.7s}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li:nth-child(3)>a{transition-delay:1.9s}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li:nth-child(4)>a{transition-delay:2s}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li:nth-child(5)>a{transition-delay:2.1s}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a{letter-spacing:-.04em;color:var(--tp-common-black);font-size:80px;line-height:1.2;font-family:var(--tp-ff-sequel-semi-bold);opacity:0;visibility:hidden;padding:0;transform:translateY(-300px);transition:all 1.5s ease-in-out!important}
@media only screen and (min-width:1200px) and (max-width:1399px){.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a{font-size:80px}}
@media only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px){.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a{font-size:60px}}
@media (max-width:574.98px){.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a{font-size:40px}}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li .tp-menu-close i{color:var(--tp-common-black);font-size:28px}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li .submenu>li>a{color:#717172;letter-spacing:-.02em;font-size:30px;line-height:1;font-family:var(--tp-ff-sequel-semi-bold);transition:all .3s}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li .submenu>li>a:hover{background-color:initial;color:var(--tp-common-black);transform:translate(15px)}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu nav ul li .tp-megamenu{width:auto}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu nav ul li .tp-megamenu .col-xl-4{width:100%}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu nav ul li .tp-megamenu li a{color:#717172;letter-spacing:-.02em;font-size:30px;line-height:1;font-family:var(--tp-ff-sequel-semi-bold);transition:all .3s}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu nav ul li .tp-megamenu li a:hover{background-color:initial;color:var(--tp-common-black);transform:translate(15px)}
.tp-offcanvas-2-wrapper .hamburger-close-btn{color:var(--tp-common-black);cursor:pointer;font-size:40px;transition:all .4s}
.tp-offcanvas-2-wrapper .hamburger-close-btn:hover{transform:rotate(90deg)}
.tp-offcanvas-2-wrapper .hamburger-mobile-close-btn:hover{transform:rotate(0)}
.tp-offcanvas-2-wrapper .hamburger-mobile-close-btn{text-align:center;font-size:20px;position:absolute;bottom:-100px;left:0;right:0}
.tp-offcanvas-2-wrapper .hamburger-mobile-close-btn:hover{color:var(--tp-theme-primary)}
.tp-offcanvas-2-wrapper .tp-header-logo{visibility:hidden;opacity:0;transition-delay:0s;transform:translateY(-80px);transition:all 1.5s ease-in-out!important}
.tp-offcanvas-2-left{opacity:0;animation-delay:1s;transform:translateY(20px)}
.tp-offcanvas-2-left .tp-offcanvas-menu{margin-bottom:105px}
@media only screen and (min-width:1400px) and (max-width:1599px),only screen and (min-width:1200px) and (max-width:1399px){.tp-offcanvas-2-left .tp-offcanvas-menu{margin-bottom:65px}}
@media only screen and (min-width:768px) and (max-width:991px),(max-width:574.98px){.tp-offcanvas-2-left .tp-offcanvas-menu{margin-bottom:0}}
.tp-offcanvas-2-left .tp-offcanvas-menu ul{scrollbar-width:none;max-height:600px;padding-top:10px;overflow:hidden scroll}
.tp-offcanvas-2-area.menu-open,.tp-offcanvas-2-area.menu-open-temp{z-index:10;width:50%;height:100%;transition:all 0s 2s;position:fixed;top:0;right:0}
@media only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-offcanvas-2-area.menu-open,.tp-offcanvas-2-area.menu-open-temp{width:100%}}
.tp-offcanvas-2-area{position:fixed}
.tp-offcanvas-2-area .offcanvas-bg{clip-path:circle(0% at calc(100% - 45px) 45px);z-index:2;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);background:#f7f0f0e6;border-radius:20px;width:50%;margin:20px;transition:clip-path .7s ease-in-out;position:fixed;inset:0 0 0 auto;box-shadow:0 20px 30px -8px #1313161a}
@media only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-offcanvas-2-area .offcanvas-bg{border-radius:0;width:100%;margin:0}}
.tp-offcanvas-2-area.menu-open .offcanvas-bg{clip-path:circle(150% at calc(100% - 45px) 45px)}
.tp-offcanvas-2-area.menu-open .offcanvas-menu{pointer-events:auto}
.tp-offcanvas-2-area.menu-open .tp-offcanvas-menu>nav>ul>li{visibility:visible;opacity:1}
.tp-offcanvas-2-area.menu-open .tp-offcanvas-menu>nav>ul>li a,.tp-offcanvas-2-area.menu-open .tp-header-logo{visibility:visible;opacity:1;transform:translateY(0)}
.tp-offcanvas-2-area.menu-open .tp-offcanvas-2-left{opacity:1;transition-delay:.76s;transform:translateY(0)}
.tp-offcanvas-2-area.menu-open .tp-offcanvas-2-left .tp-offcanvas-menu{opacity:1;transition:opacity .6s cubic-bezier(.2,.8,.2,1) .96s,transform .6s cubic-bezier(.2,.8,.2,1) .96s;transform:translateY(0)}
.tp-offcanvas-2-area:not(.menu-open) .offcanvas-menu{pointer-events:none}
.tp-offcanvas-2-area:not(.menu-open) .tp-offcanvas-2-left{opacity:0;transition-delay:.6s;transform:translateY(30px)}
.tp-offcanvas-2-area:not(.menu-open) .tp-offcanvas-2-left .tp-offcanvas-menu{opacity:0;transition-delay:.4s;transform:translateY(20px)}
.tp-offcanvas-2-area:not(.menu-open) .tp-offcanvas-2-left .tp-offcanvas-2-left-btn-box{opacity:0;transition-delay:.2s;transform:translateY(20px)}
.tp-offcanvas-2-area:not(.menu-open) .offcanvas-bg{clip-path:circle(0% at calc(100% - 45px) 45px);transition-delay:.4s}
.hamburger-sticky-menu{background:var(--tp-theme-primary);z-index:1;opacity:0;visibility:hidden;border-radius:100px;justify-content:center;align-items:center;width:60px;height:60px;padding-right:18px;transition-delay:.4s;display:flex;position:absolute;top:40px;right:40px;transform:scale(.5)}
@media only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.hamburger-sticky-menu{top:20px;right:20px}}
.hamburger-sticky-menu span{background:var(--tp-common-white)}
.tp-offcanvas-menu{margin-bottom:80px}
.tp-offcanvas-menu ul{list-style:none}
.tp-offcanvas-menu ul li{position:relative}
.tp-offcanvas-menu ul li>a{padding:7px 0;font-size:16px;font-weight:500;display:block}
.tp-offcanvas-menu ul li.active>a{color:var(--tp-common-black)}
.tp-offcanvas-menu ul li.active>.tp-menu-close i{top:10px;transform:rotate(90deg)}
.tp-offcanvas-menu ul li .submenu{display:none}
.tp-offcanvas-menu ul li .submenu .submenu{margin-left:30px}
.tp-offcanvas-menu .tp-megamenu-wrapper.megamenu-white-bg{-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;background:0 0}
.tp-offcanvas-menu .mega-menu{opacity:1;visibility:visible;width:auto;transition:none;display:none;position:static;transform:perspective(0)rotateX(0)}
.tp-offcanvas-menu .tp-megamenu-list ul li{padding:0}
.tp-offcanvas-menu .tp-megamenu-list ul li a{padding:12px 20px;font-size:17px}
.tp-offcanvas-menu .tp-submenu>li>a{border-radius:10px;padding:8px 20px;font-size:17px}
.tp-offcanvas-menu .tp-submenu>li>a:hover{color:var(--tp-common-black);background-color:#f8f8fb}
.tp-menu-close{position:absolute;top:12px;right:7px}
.tp-menu-close i{font-size:18px;font-weight:500;transition:all .3s}
.tp-footer-link .tp-hero-social{justify-content:start}
.tp-footer-subtitle{letter-spacing:-.02em;font-size:20px}
.tp-footer-dec{letter-spacing:-.02em;text-align:center;color:var(--tp-common-black);font-size:16px;font-weight:500}
@media only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-footer-widget{margin-left:0}}
.tp-footer-email{letter-spacing:-.02em;font-size:52px}
@media only screen and (min-width:1400px) and (max-width:1599px),only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-footer-email{font-size:46px}}
@media (max-width:574.98px){.tp-footer-email{font-size:38px}}
.tp-footer-email a{text-decoration:underline}
.tp-footer-email a:hover{color:var(--tp-theme-primary);-webkit-text-decoration-color:var(--tp-theme-primary);text-decoration-color:var(--tp-theme-primary)}
.tp-footer-email.fs-82{font-size:82px}
@media only screen and (min-width:1400px) and (max-width:1599px){.tp-footer-email.fs-82{font-size:75px}}
@media only screen and (min-width:1200px) and (max-width:1399px){.tp-footer-email.fs-82{font-size:60px}}
@media only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px){.tp-footer-email.fs-82{font-size:50px}.tp-footer-email.fs-82 svg{transform:translateY(2px)}}
@media (max-width:574.98px){.tp-footer-email.fs-82{font-size:35px}}
.tp-footer-copyright{color:var(--tp-common-black);font-size:18px;font-weight:500}
.tp-footer-copyright-social{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}
@media only screen and (min-width:992px) and (max-width:1199px){.tp-footer-copyright-social{justify-content:end}}
@media only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-footer-copyright-social{justify-content:flex-start}}
.tp-footer-copyright-social a{letter-spacing:-.02em;color:var(--tp-common-black);border:1px solid #2626261a;border-radius:50px;padding:10px 16px;font-size:14px;font-weight:500;line-height:1;display:inline-block}
.tp-footer-copyright-social a:hover{background:var(--tp-common-black);color:var(--tp-common-white)}
.tp-footer-copyright-social a svg{margin-left:3px;transform:translateY(-1px)}
.ca-footer-link .tp-hero-social a{color:var(--tp-common-black);text-transform:uppercase;padding:13px 20px;font-size:14px}
.mp-footer-style .tp-hero-social a{color:var(--tp-common-white);border:1px solid #ffffff1a}
.mp-footer-style .tp-hero-social a:hover{background:var(--tp-common-white);color:var(--tp-common-black)}
.mp-footer-style .tp-footer-copyright{color:var(--tp-common-white)}
.mp-footer-style .tp-footer-copyright-social a{color:var(--tp-common-white);border:1px solid #ffffff1a}
.mp-footer-style .tp-footer-copyright-social a:hover{background:var(--tp-common-white);color:var(--tp-common-black)}
.mp-footer-style .tp-about-border{border-top:1px solid #ffffff1a}
.cs-footer-style .tp-footer-email{font-size:42px}
@media only screen and (min-width:1400px) and (max-width:1599px),only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.cs-footer-style .tp-footer-email{font-size:36px}}
.cs-footer-style .tp-hero-social a{padding:9px 22px}
.cs-footer-widget-1{margin-left:55px}
@media only screen and (min-width:1600px) and (max-width:1700px),only screen and (min-width:1400px) and (max-width:1599px),only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.cs-footer-widget-1{margin-left:0}}
.cs-footer-widget-2{margin-left:35px}
@media only screen and (min-width:1600px) and (max-width:1700px),only screen and (min-width:1400px) and (max-width:1599px),only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.cs-footer-widget-2{margin-left:0}}
.cs-footer-bigtitle{letter-spacing:-.02em;font-size:300px;line-height:.9}
@media only screen and (min-width:1700px) and (max-width:1800px){.cs-footer-bigtitle{font-size:285px}}
@media only screen and (min-width:1600px) and (max-width:1700px){.cs-footer-bigtitle{font-size:275px}}
@media only screen and (min-width:1400px) and (max-width:1599px){.cs-footer-bigtitle{font-size:235px}}
@media only screen and (min-width:1200px) and (max-width:1399px){.cs-footer-bigtitle{font-size:190px}}
@media only screen and (min-width:992px) and (max-width:1199px){.cs-footer-bigtitle{font-size:156px}}
@media only screen and (min-width:768px) and (max-width:991px){.cs-footer-bigtitle{font-size:112px}}
@media only screen and (min-width:576px) and (max-width:767px){.cs-footer-bigtitle{font-size:80px}}
@media (max-width:574.98px){.cs-footer-bigtitle{font-size:52px}}
.mg-footer-main-style .tp-hero-social a{background:var(--tp-common-white);text-transform:uppercase;color:var(--tp-common-black);border:none;padding:13px 20px;font-size:14px;font-weight:600}
.mg-footer-main-style .tp-hero-social a:hover{background:var(--tp-theme-primary);color:var(--tp-common-white)}
.mg-footer-info .tp-offcanvas-social ul li a{background:var(--tp-common-white)}
.mg-footer-info .tp-offcanvas-social ul li a:hover{background:var(--tp-theme-primary);color:var(--tp-common-white)}
.mg-footer-copyright-style a.tp-footer-copyright{color:var(--tp-common-white)}
.mg-footer-copyright-style a.tp-footer-copyright:hover{color:var(--tp-theme-primary)}
.tp-about-border{border-top:1px solid var(--tp-border-1)}
.tp-hero-social{flex-wrap:wrap;justify-content:end;gap:10px;display:flex}
@media only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-hero-social{margin-left:0}}
@media only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.tp-hero-social{justify-content:flex-start}}
.tp-hero-social a{letter-spacing:-.02em;color:var(--tp-grey-1);border:1px solid #2626261a;border-radius:20px;padding:6px 20px;font-size:15px;font-weight:500;line-height:1;display:inline-block}
.tp-hero-social a:hover{background:var(--tp-common-black);border-color:var(--tp-common-black);color:var(--tp-common-white)}
:root{--numOfSlides:5;--slidingAT:1.3s;--controlSize:60px}
.tp-team-details-info-social .tp-offcanvas-social{margin-top:0}
.tp-team-details-info-social .tp-offcanvas-social a{background-color:#0000;border:1px solid #11101314}
.tp-team-details-info-social .tp-offcanvas-social a:hover{border-color:var(--tp-theme-primary);background-color:var(--tp-theme-primary)}
@keyframes zoomInOut{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}
.cunnet-dark .tp-main-menu nav ul li a{color:var(--tp-common-white)}
.cunnet-dark .tp-main-menu nav ul li a:hover,.cunnet-dark .tp-main-menu nav ul li:hover.has-dropdown>a{background:var(--tp-common-white);color:var(--tp-common-black)}
.cunnet-dark .tp-main-menu nav ul li .submenu{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);background:#262528e6;box-shadow:0 20px 30px -8px #1313161a}
.cunnet-dark .tp-main-menu nav ul li .submenu li a{color:var(--tp-common-white)}
.cunnet-dark .tp-main-menu nav ul li .submenu li:hover>a{background:#343434;color:var(--tp-common-white)!important}
.cunnet-dark .tp-header-search-btn{color:var(--tp-common-white)}
.cunnet-dark .tp-header-search-btn:hover{color:var(--tp-theme-primary)}
.cunnet-dark .tp-header-sidebar-btn span{background:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas{background:#1c1d20}
.cunnet-dark .tp-offcanvas .logo-1{display:none}
.cunnet-dark .tp-offcanvas .logo-2{display:block!important}
.cunnet-dark .tp-offcanvas .tp-offcanvas-close-btn,.cunnet-dark .tp-offcanvas .tp-offcanvas-menu ul li>a{color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-menu ul li.active>a{color:var(--tp-theme-primary)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-menu .tp-submenu li a:hover{color:var(--tp-common-white);background-color:#2c2b2e}
.cunnet-dark .tp-offcanvas .tp-menu-close i{color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-megamenu-wrapper.megamenu-black-bg{-webkit-backdrop-filter:initial;backdrop-filter:initial;box-shadow:none;background:0 0}
.cunnet-dark .tp-offcanvas .tp-offcanvas-title.sm{color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-contact ul li a{color:#fffc}
.cunnet-dark .tp-offcanvas .tp-offcanvas-contact ul li a:hover{color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-contact ul li a:after{background-color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-social ul li a{color:var(--tp-common-white);border:1px solid #ffffff1a}
.cunnet-dark .tp-offcanvas .tp-offcanvas-social ul li a:hover{color:var(--tp-common-black);border-color:var(--tp-common-white);background-color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-title{color:var(--tp-common-white)}
.cunnet-dark .tp-offcanvas .tp-offcanvas-content p{color:#fffc}
.cunnet-dark .tp-offcanvas .tp-offcanvas-close-btn button{color:#fff}
.cunnet-dark .tp-header-logo .logo-1{display:none}
.cunnet-dark .tp-header-logo .logo-2{display:block}
.cunnet-dark .tp-hero-social a{color:#fff9;border:1px solid #ffffff14}
.cunnet-dark .tp-hero-social a:hover{color:var(--tp-common-black);background:var(--tp-common-white)}
.cunnet-dark .tp-about-border{border-top:1px solid #ffffff0f}
.cunnet-dark .tp-footer-subtitle,.cunnet-dark .tp-footer-dec,.cunnet-dark .tp-footer-email,.cunnet-dark .tp-footer-copyright{color:var(--tp-common-white)}
.cunnet-dark .tp-footer-copyright-social a{color:var(--tp-common-white);border:1px solid #ffffff14}
.cunnet-dark .tp-footer-copyright-social a:hover{background:var(--tp-common-white);color:var(--tp-common-black)}
.cunnet-dark .tp-offcanvas-2-area .offcanvas-bg{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);background:#262528e6;box-shadow:0 20px 30px -8px #1313161a}
.cunnet-dark .tp-offcanvas-2-wrapper .hamburger-close-btn,.cunnet-dark .tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a,.cunnet-dark .tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li .submenu>li>a:hover,.cunnet-dark .tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li .tp-menu-close i{color:var(--tp-common-white)}
.cunnet-dark .tp-header-sidebar-btn-bg{background:var(--tp-common-white)}
.cunnet-dark .tp-header-sidebar-btn-bg span{background:var(--tp-common-black)}
.cunnet-dark .mg-footer-main-style .tp-hero-social a{color:var(--tp-common-black)}
.cunnet-dark .mg-footer-main-style .tp-hero-social a:hover{background:var(--tp-theme-primary);color:var(--tp-common-white)}
.cunnet-dark .tp-team-details-info-social .tp-offcanvas-social a{color:var(--tp-common-white);border:1px solid #ffffff14}
.cunnet-dark .tp-main-menu nav ul li .tp-megamenu-title{color:var(--tp-common-white)}
.cunnet-dark .tp-main-menu nav ul li .tp-megamenu-title-wrap{border-bottom:1px solid #ffffff1a}
.cunnet-dark .tp-megamenu-title{color:var(--tp-common-white)}
.cunnet-dark .tp-megamenu-title-wrap{border-bottom:1px solid #ffffff14}
.cunnet-dark .tp-offcanvas-2-wrapper .tp-offcanvas-menu nav ul li .tp-megamenu li a:hover{color:var(--tp-common-white)}
.tp-benefit-box .row [class*=col]:nth-child(4n) .tp-benefit-item{border-right:none}
:root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74d3c;--toastify-color-transparent:#ffffffb3;--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-container-width:fit-content;--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-padding:14px;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-toast-shadow:0px 4px 12px #0000001a;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(to right,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:.2}
@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}
@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate(3000px)}60%{opacity:1;transform:translate(-25px)}75%{transform:translate(10px)}90%{transform:translate(-5px)}to{transform:none}}
@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}
@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate(-3000px)}60%{opacity:1;transform:translate(25px)}75%{transform:translate(-10px)}90%{transform:translate(5px)}to{transform:none}}
@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}
@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translateY(3000px)}60%{opacity:1;transform:translateY(-20px)}75%{transform:translateY(10px)}90%{transform:translateY(-5px)}to{transform:translate(0,0)}}
@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translateY(-2000px)}}
@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translateY(-3000px)}60%{opacity:1;transform:translateY(25px)}75%{transform:translateY(-10px)}90%{transform:translateY(5px)}to{transform:none}}
@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translateY(2000px)}}
@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}
@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0)scale3d(.3,.3,.3)}to{opacity:0}}
@keyframes Toastify__flipIn{0%{opacity:0;animation-timing-function:ease-in;transform:perspective(400px)rotateX(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px)rotateX(-20deg)}60%{opacity:1;transform:perspective(400px)rotateX(10deg)}80%{transform:perspective(400px)rotateX(-5deg)}to{transform:perspective(400px)}}
@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0)perspective(400px)}30%{transform:translate3d(0,var(--y),0)perspective(400px)rotate3d(1,0,0,-20deg);opacity:1}to{transform:translate3d(0,var(--y),0)perspective(400px)rotate3d(1,0,0,90deg);opacity:0}}
@keyframes Toastify__slideInRight{0%{visibility:visible;transform:translate(110%)}to{transform:translate3d(0,var(--y),0)}}
@keyframes Toastify__slideInLeft{0%{visibility:visible;transform:translate(-110%)}to{transform:translate3d(0,var(--y),0)}}
@keyframes Toastify__slideInUp{0%{visibility:visible;transform:translateY(110%)}to{transform:translate3d(0,var(--y),0)}}
@keyframes Toastify__slideInDown{0%{visibility:visible;transform:translateY(-110%)}to{transform:translate3d(0,var(--y),0)}}
@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}
@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}
@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translateY(500px)}}
@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translateY(-500px)}}
@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
:root{--color-bg-section:#09090b;--color-bg-hero:#f6f6f6}
.tp-section-bg{background-color:var(--color-bg-section)}
:root{--swiper-theme-color:#007aff}
@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
:root{--swiper-navigation-size:44px}
@keyframes PhotoView__rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}
@keyframes PhotoView__delayIn{0%,50%{opacity:0}to{opacity:1}}
@keyframes PhotoView__fade{0%{opacity:0}to{opacity:1}}
/* ==== 我方补充槽位（build_footer.py 拼入，改 _input_layout-yc.css 后重跑） ==== */
/* 我方在 Cunnet 页脚基础上补的槽位样式（Cunnet 原版没有这几块）。
   由 build_footer.py 拼到 layout-v2.css 末尾，改这里要重跑 build_footer.py。
   全部内容来自后台富文本标签，所以这里主要是把富文本规范化。 */

/* ---- 页脚整体：富文本里的 p 默认 margin 会把间距撑乱 ---- */
/* 🔴 font-weight 必须写在这条里：页面里任何一条 p{font-weight:300} 都赢过从 .yc-footer 的继承
   （继承不参与层叠，斗不过任何一条命中的规则）→ 老模板页的简介会多折一行。 */
.yc-footer .tp-footer-widget p,
.yc-footer .yc-footer-intro p,
.yc-footer .yc-footer-office-text p{
    margin:0 0 6px;
    font-family:"Noto Sans SC","Inter",sans-serif;
    font-size:15px;
    font-weight:400;
    line-height:1.75;
    color:rgba(255,255,255,.62);
}
.yc-footer .yc-footer-intro p:last-child,
.yc-footer .yc-footer-office-text p:last-child{margin-bottom:0}

/* ---- 第一栏：公司简介 ---- */
.yc-footer .yc-footer-intro{max-width:340px}
.yc-footer .yc-footer-intro i,
.yc-footer .yc-footer-intro em{font-style:normal}

/* ---- 快速导航：药丸沿用 Cunnet 的 .tp-hero-social，这里只兜中文长度 ---- */
.yc-footer .tp-hero-social a{white-space:nowrap}

/* ---- 第三栏：大号电话（原版是邮箱位） ---- */
.yc-footer .tp-footer-email a{word-break:break-all}
.yc-footer .tp-footer-email .__cf_email__{font-style:normal}
.yc-footer .my-share{margin-top:18px}

/* ---- 页脚基准字号：钉死，不许继承各页面正文（2026-08-30 实测事故的第二处）----
   现象：同一份页脚在关于我们页是 16px/28px、别的页是 18px/26px，大号电话行高在招聘页只有
   32px、别的页 43.2px → 各页页脚总高 891 / 901 / 905 三种。
   根因 = 页脚这几个元素（div、span、a）没有自己的字号，继承的是各页面 body：
   about-v2.css 给的是 16px/1.75、style.min.css/extend.css 给的是 18px/26px、
   招聘页那个 h4 拿到的是老主题的 h4{line-height:32px}。
   基准取 Cunnet 原版实测：正文 16px/28px、大号电话 36px/43.2px（=1.2）、
   备案行 18px/28px、底部大字 h2 margin-bottom:8px。
   🔴 行高写 28px 绝对值不写 1.75 —— 原版 body 就是绝对值，子元素字号变了行高不跟着变；
      写成比例会让 18px 的备案行变成 31.5px，与原版差 3.5px。
   🔴 关于我们页那一版才是对的，别拿「多数页面」当基准（多数 ≠ 正确）。 */
/* 🔴 字重也得钉：招聘/服务这类老模板页给页脚的是 300 细体，内容页是 400，
   同样的字数就会多折一行（390px 档实测：简介块 129px vs 155px）。原版实测 = 400。 */
.yc-footer{font-size:16px;line-height:28px;font-weight:400;font-family:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif}
.yc-footer .tp-footer-email{line-height:1.2}
/* 小标题：招聘/建站这类老模板页给的是 300，原版实测 500 */
.yc-footer .tp-footer-subtitle{font-weight:500}
/* h2 的默认 margin 来自各页面的 CSS：招聘页什么都没加载 → 0px，别的页 8px。原版是 8px。 */
.yc-footer .cs-footer-bigtitle{margin:0 0 8px}
/* 备案块里的 p/li 行高同样会被各页面的 p{line-height:26px} 之类打到，钉死 */
.yc-footer .yc-footer-beian p,
.yc-footer .yc-footer-beian li,
.yc-footer .yc-footer-beian a{line-height:1.6}

/* ---- 页脚自带栅格：不许再看页面加载了什么（2026-08-30 实测事故）----
   事故现象：同一份页脚在不同页面三栏宽 380 / 480 / 1055 三种，招聘页三栏叠成一竖条、
   整块高 1501px（别的页 891～1123）。根因 = 页脚用 container/row/col-* 却不自带规则：
     · 加载 bootstrap.css 的页 → 站内是 BS4.1.3，无 xxl 断点，容器封到 1140 → 三栏 380
     · 只加载 blog-v2/contact-v2 的页 → 那几份里带了 BS5 栅格 → 三栏 480（与原版一致）
     · 招聘页两样都没加载 → 完全无栅格 → 竖条
   基准取 Cunnet 原版 branding-studio 实测（1440 视口）：容器 1440/左右 15px、
   顶行 480/360/360、gutter 30px、xxl 档容器上限 1750px。
   🔴 全部限定在 .yc-footer 之内：站内 BS4 与页面各自的 -v2.css 一律不受影响。
   选择器都是 (0,2,0)，与下面各 col 规则同级 → 靠书写顺序生效，改动时别把 .row>* 挪到后面。 */
.yc-footer .container{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}
@media (min-width:576px){.yc-footer .container{max-width:540px}}
@media (min-width:768px){.yc-footer .container{max-width:720px}}
@media (min-width:992px){.yc-footer .container{max-width:960px}}
@media (min-width:1200px){.yc-footer .container{max-width:1140px}}
@media (min-width:1400px){.yc-footer .container{max-width:1750px}}

.yc-footer .row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}
.yc-footer .row>*{flex:0 0 auto;width:100%;max-width:100%;padding-right:15px;padding-left:15px}
.yc-footer .col-12{width:100%}
@media (min-width:768px){
    .yc-footer .col-md-4{width:33.333333%}
}
@media (min-width:992px){
    .yc-footer .col-lg-4{width:33.333333%}
    .yc-footer .col-lg-5{width:41.666667%}
    .yc-footer .col-lg-7{width:58.333333%}
    .yc-footer .col-lg-8{width:66.666667%}
    .yc-footer .col-lg-12{width:100%}
}
@media (min-width:1200px){
    .yc-footer .col-xl-3{width:25%}
    .yc-footer .col-xl-4{width:33.333333%}
    .yc-footer .col-xl-6{width:50%}
    .yc-footer .offset-xl-1{margin-left:8.333333%}
}
/* xxl 档：offset-xxl-2 写在 offset-xl-1 之后，同特异性靠顺序接手，与 Bootstrap 原生行为一致 */
@media (min-width:1400px){
    .yc-footer .col-xxl-3{width:25%}
    .yc-footer .col-xxl-4{width:33.333333%}
    .yc-footer .offset-xxl-2{margin-left:16.666667%}
}

/* 页脚用到的通用工具类：招聘页这类「什么都没加载」的页面上它们同样是空的 */
.yc-footer .align-items-center{align-items:center}
.yc-footer .justify-content-center{justify-content:center}
.yc-footer .text-center{text-align:center}
.yc-footer .text-uppercase{text-transform:uppercase}
.yc-footer .text-white{color:#fff}
.yc-footer .fix{overflow:hidden}
.yc-footer .pt-105{padding-top:105px}
.yc-footer .pt-30{padding-top:30px}
.yc-footer .pb-10{padding-bottom:10px}
.yc-footer .pb-15{padding-bottom:15px}
.yc-footer .mt-65{margin-top:65px}
.yc-footer .mb-40{margin-bottom:40px}
.yc-footer .mb-30{margin-bottom:30px}
.yc-footer .mb-25{margin-bottom:25px}
.yc-footer .mb-20{margin-bottom:20px}

/* ---- 办公地点行 ---- */
/* 北京 / 上海 两块并排放在左栏简介下面（2026-08-30 用户截图指定的位置）。
   🔴 北京那块的第 2 段是电话，用户要求不显示 —— 藏在这里，不改后台内容。 */
/* 北京 / 上海 两块放在左栏简介下面，**上下排、各占一行、左对齐**
   （2026-08-30 用户：上海换行排版，左对齐）。原来是并排，改成竖排。 */
.yc-footer .yc-footer-offices{margin-top:32px}
.yc-footer .yc-footer-office{margin-bottom:22px;text-align:left}
.yc-footer .yc-footer-office:last-child{margin-bottom:0}
.yc-footer .yc-footer-office .tp-footer-subtitle{margin-bottom:8px}
.yc-footer .yc-footer-office .yc-footer-office-text{max-width:none}
/* 🔴 只藏「第 2 段」= 电话那一行，不能写 :not(:first-child)：
   线上 dbcon1 是三段（地址 / 电话：13522686309 / 微信：haoyf2017），本地库只有两段，
   写成「除第1段外全藏」会把线上的「微信：haoyf2017」一起藏掉 —— 用户只说不要电话。
   2026-08-30 线上实测抓到，本地无论怎么测都测不出来（数据不同）。 */
.yc-footer .yc-footer-office-bj .yc-footer-office-text p:nth-child(2){display:none}
/* mb-15 是我方槽位自己用的间距类，Cunnet 的 spacing.css 没进抽取范围 → 自己补，
   并且只在页脚内生效，不往全站放一个新的通用工具类。 */
.yc-footer .mb-15{margin-bottom:15px}
.yc-footer .yc-footer-office-text{max-width:330px}

/* 二维码：后台富文本里的 img 不带尺寸约束，不限制会铺满整栏 */
.yc-footer .yc-footer-qr img{
    width:120px;
    height:auto;
    max-width:100%;
    background:#fff;
    padding:6px;
    border-radius:8px;
    display:block;
}

/* ---- 底行：左 Copyright / 中 友情链接 / 右 备案号（2026-08-30 用户指定顺序）----
   🔴 三段文字分属两个后台字段，且是「一个字段里装两样东西」：
        footleft  = 第1段简介 + 第2段公安备案号
        footright = 第1段 Copyright + 后面 <ul> 里的 ICP备案号
      PbootCMS 的 {label:} 只能整段输出、切不开 → 同一个字段在两处各输出一份，
      再用 CSS 各自藏掉不要的那半。这样**不用让用户去后台拆字段**，后台内容一个字不动。
   🔴 依赖的前提只有一条：footleft 的第 1 段是简介、footright 的第 1 段是 Copyright。
      上线后必须抓一次线上页面复核（线上库与本地库内容不同，结构可能也不同）。 */
.yc-footer .yc-footer-intro>p:not(:first-child){display:none}      /* 简介栏只留第1段，公安备案号挪到底行 */
/* 🔴 这两条必须用后代选择器：yc-footer-copy 挂在外层 div 上，标签内容渲染在里层 span 里，
   写成 > 直接子选择器一条都不匹配 → ICP备案号会左右各出一次（2026-08-30 实测踩过）。 */
.yc-footer .yc-footer-copy ul,
.yc-footer .yc-footer-copy p~p{display:none}                       /* 左格只留 Copyright */
.yc-footer .yc-footer-gongan>p:first-child{display:none}           /* 右格第1份只留公安备案号 */
.yc-footer .yc-footer-icp>p:first-child{display:none}              /* 右格第2份只留 ICP 那个 ul */

.yc-footer .yc-footer-copy{display:block}
.yc-footer .yc-footer-gongan,
.yc-footer .yc-footer-icp{display:block}

/* ---- 底行必须是「一行」，三格互相对齐（2026-08-30 用户：下边都是一行，没有对齐）----
   之前左格 Copyright 是 18px、中格「友情链接」标题另起一行、右格公安备案与 ICP 上下两行
   → 三格的文字各在不同高度，看着就是没对齐。
   做法：三格统一字号 14px / 行高 24px，各自内部一律排成一行，行由 align-items:center 对齐。 */
.yc-footer .tp-footer-copyright-area .tp-footer-copyright,
.yc-footer .tp-footer-copyright-area p,
.yc-footer .tp-footer-copyright-area li,
.yc-footer .tp-footer-copyright-area a{font-size:14px;line-height:24px}
.yc-footer .tp-footer-copyright-wrap{margin-bottom:0}
.yc-footer .yc-footer-copy p{margin:0}

/* 中格：「友情链接」这四个字与链接排同一行 */
.yc-footer .yc-footer-links-label{display:inline;margin:0 12px 0 0}
.yc-footer .yc-footer-links-list{display:inline-flex;flex-wrap:wrap;gap:0 16px;vertical-align:middle}

/* 右格：公安备案号 与 ICP备案号 排同一行、整体靠右 */
.yc-footer .yc-footer-beian{text-align:right}
.yc-footer .yc-footer-gongan,
.yc-footer .yc-footer-icp{display:inline}
.yc-footer .yc-footer-gongan p{display:inline;margin:0}
.yc-footer .yc-footer-icp ul{display:inline-flex;flex-wrap:wrap;margin:0 0 0 18px;padding:0;gap:0 12px}
.yc-footer .yc-footer-icp li,
.yc-footer .yc-footer-icp li p{display:inline;margin:0}
/* 公安备案那个警徽图标：后台富文本里不带尺寸，不限制会按原图铺开 */
/* 🔴 底行不能用 12 格栅格：三段文字的实际宽度约 290 / 278 / 363px，凑不成 4:4:4，
   1280 档右格 380px 装不下 363px+间距 → 备案号换行（实测三格高 24/29/68）。
   宽屏改成「按内容宽度、左中右分布」，谁也不挤谁；窄屏 (<1200) 仍回到竖排栅格。 */
@media (min-width:1200px){
    .yc-footer .tp-footer-copyright-area>.row{flex-wrap:nowrap;justify-content:space-between}
    .yc-footer .tp-footer-copyright-area>.row>*{flex:0 0 auto;width:auto;max-width:none}
}
/* 警徽图标压到 16px：行内图片比行高大会把整行的行盒撑高（40px 那一次就是它） */
.yc-footer .yc-footer-gongan img{width:16px;height:16px;vertical-align:-3px;margin-right:4px}

.yc-footer .yc-footer-links{text-align:center}

/* 微信二维码块：已挪进电话那个盒子里，左边线天然与上面文字一致 */
.yc-footer .mt-30{margin-top:30px}

@media (max-width:1199px){
    /* 窄屏三格竖排，右格跟着左对齐，不然一行文字孤零零贴在右边 */
    .yc-footer .yc-footer-beian{text-align:left}
    .yc-footer .yc-footer-icp ul{margin-left:0}
    .yc-footer .yc-footer-links{text-align:left}
    .yc-footer .tp-footer-copyright-wrap{margin-bottom:10px}
}

/* ---- 底行：颜色与列表复位（排版由上面「底行必须是一行」那一节统一负责）----
   🔴 这里过去写过 .yc-footer-beian .tp-footer-copyright{display:block}、
      .yc-footer-links-label{display:block} 之类，排在后面会把上面那节的 inline 顶掉，
      导致中格与右格各自又变回两行（2026-08-30 实测：三格高 24/54/68）。已删，别再加回来。 */
.yc-footer .yc-footer-beian ul{list-style:none}
.yc-footer .yc-footer-beian li{list-style:none;color:rgba(255,255,255,.55)}
.yc-footer .yc-footer-beian p{color:rgba(255,255,255,.55)}
.yc-footer .yc-footer-beian a{color:rgba(255,255,255,.72)}
.yc-footer .yc-footer-beian a:hover{color:#fff}
.yc-footer .yc-footer-copy p{color:rgba(255,255,255,.62)}

/* ---- 底行中间：友情链接（只有首页页脚有） ---- */
.yc-footer .yc-footer-links-label{color:rgba(255,255,255,.55)}
.yc-footer .yc-footer-links-list a{
    color:rgba(255,255,255,.62);
    transition:color .3s;
}
.yc-footer .yc-footer-links-list a:hover{color:#fff}

/* ---- 窄屏 ---- */
@media (max-width:1199px){
    .yc-footer .yc-footer-intro,
    .yc-footer .yc-footer-office-text{max-width:none}
}
@media (max-width:767px){
    .yc-footer .tp-footer-widget p,
    .yc-footer .yc-footer-intro p,
    .yc-footer .yc-footer-office-text p{font-size:14px}
}

/* ---- 底部大字：中文适配（这一条不是发挥，是内容适配）----
   原版 .cs-footer-bigtitle 写死 font-size:300px，配的是英文 "Say Hello!"
   —— 10 个英文字符宽约 0.5em，合计约 1500px，在 1920 视口下占 78%。
   我方是 6 个中文字，中文字宽约 1em → 6 × 300px = 1800px，比 1440 屏还宽，必然横向溢出。
   改成跟视口挂钩：6 字 × 14vw = 84vw，两侧各留 8%；上限 258px 让 1920 档的观感与原版一致。
   特异性 .yc-footer .cs-footer-bigtitle = (0,2,0) > 原规则 (0,1,0)，无需 !important。 */
.yc-footer .cs-footer-bigtitle{
    font-size:min(258px,14vw);
    line-height:.95;
}
.yc-footer .cs-footer-bigtitle a{
    color:#fff;
    display:inline-block;
}
@media (max-width:575px){
    .yc-footer .cs-footer-bigtitle{font-size:min(258px,15vw)}
}


/* ============================================================================
   页头（导航）· Cunnet 页头版式的槽位与补充规则          2026-08-31
   产物 = template/new/comm/header.html，由 build_header.py 生成，别手改。
   16 个模板共用它 → 这一段是全站级，每条都写清出处。
   ============================================================================ */

/* ---- 1. 作用域栅格 ----------------------------------------------------------
   layout-v2.css 抽取时刻意排除了栅格类（Cunnet 是 BS5、本站 BS4，`.row>*` 会顶掉
   `.col-xx`）→ 页头与页脚一样自带一套，作用域 .yc-header。
   出处：原版 assets/css/bootstrap.min.css 的 .container 断点 540/720/960/1140/1750，
   并经 Playwright 在 1920/1600/1440/1200/992/768/390 七档实测复核（1920 档容器 1750、x=85）。
   🔴 col-* 必须排在 .row>* 之后：两者同为 (0,2,0)，靠顺序决定（雷区 30/31）。 */
.yc-header .container{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}
@media (min-width:576px){.yc-header .container{max-width:540px}}
@media (min-width:768px){.yc-header .container{max-width:720px}}
@media (min-width:992px){.yc-header .container{max-width:960px}}
@media (min-width:1200px){.yc-header .container{max-width:1140px}}
@media (min-width:1400px){.yc-header .container{max-width:1750px}}
.yc-header .row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}
.yc-header .row>*{flex:0 0 auto;width:100%;max-width:100%;padding-right:15px;padding-left:15px}
.yc-header .col-6{width:50%}
@media (min-width:1200px){
    .yc-header .col-xl-3{width:25%}
    .yc-header .col-xl-6{width:50%}
}

/* ---- 2. 常驻汉堡「点亮」态 --------------------------------------------------
   🔴 layout-v2.css 里只有隐藏态 .hamburger-sticky-menu{opacity:0;visibility:hidden;
   transform:scale(.5)}，点亮那条原先只存在于 about-v2/blog-v2/contact-v2 三张页面级表
   → 另外 11 个模板（index/case/case2/caselist/job/joblist/page/sevser×4）会让汉堡
   永远 opacity:0 —— 正是铁律七那个「几何全对但看不见」的事故。规则逐字取自
   about-v2.css:863（与 blog-v2.css:1188、contact-v2.css:851 三份一致）。 */
.hamburger-sticky-menu.header-sticky{opacity:1;visibility:visible;position:fixed;transform:scale(1)}

/* ---- 3. 首页浅色变体 -------------------------------------------------------
   原版用 .cs-header-style（branding-studio 首页带、内页不带）做白字变体。
   本站已有的等价机制是 body.home（index.html 是 <body class="home page">，
   extend.css:4528 的 body:not(.home) .header .logo_w 用的就是它）→ 沿用站内写法，
   不新造类名。右侧四条逐条对应 layout-v2.css 里的 .cs-header-style 那四条。
   🔴 2026-08-31 修正：这里原本写的是后代选择器 `nav ul li a`，会连下拉子菜单里的
   链接一起刷白 → 白字压在 #ffffffe6 浅色面板上看不见（用户当场截图指出）。
   已改成子选择器 `nav>ul>li>a` 只命中顶级项，并**删掉了旧的那两行**
   （雷区 31：只加新规则不删旧规则，旧的照样在生效）。 */
body.home .yc-header .tp-main-menu nav>ul>li>a{color:var(--tp-common-white)}
body.home .yc-header .tp-main-menu nav>ul>li>a:hover,
body.home .yc-header .tp-main-menu nav>ul>li:hover.has-dropdown>a{color:var(--tp-common-black);background:var(--tp-common-white)}
body.home .yc-header .tp-header-area .tp-header-sidebar-btn span{background:var(--tp-common-white)}
body.home .yc-header .tp-header-search-btn.tp-search-click{color:var(--tp-common-white)}
/* logo 明暗互换：(0,4,0) 压过 layout-v2.css 的 .tp-header-logo .logo-2 (0,2,0) */
body.home .yc-header .tp-header-logo .logo-1{display:none}
body.home .yc-header .tp-header-logo .logo-2{display:block}

/* ---- 4. 抽屉遮罩 -----------------------------------------------------------
   出处：原版 _next/static/chunks/1a95433235c7d462.css 的 .body-overlay / .apply，
   逐字照抄。原版还有一条 .body-overlay:hover{cursor:url(../media/cross-out.png)}
   —— 那是模板自带的图片素材，我方没有该文件（照抄会得 404 死路径），改用 pointer。 */
.body-overlay{z-index:995;visibility:hidden;opacity:0;background:#18181880;width:100%;height:100%;transition:all .45s ease-in-out;position:fixed;top:0;left:0}
.body-overlay.apply{opacity:1;visibility:visible;cursor:pointer}

/* ---- 5. 裸 button 复位 -----------------------------------------------------
   原版有 `a,button{color:inherit;background:0 0;border:none;outline:none}`
   （1a95433235c7d462.css），抽取脚本按「裸元素」把它排除了 → 汉堡/搜索/关闭键
   会长成系统灰底按钮（站内 BS4 只重置了 border-radius，没清背景）。
   🔴 只在这三个作用域内复位，不做全站一把梭（雷区 19）：老主题的
   .button / [type=submit] 还在用背景色，全站清会把它们一起清掉。 */
.yc-header .tp-header-area button,.yc-offcanvas button,.yc-search-toggle button{background:0 0;border:none;outline:none;color:inherit;padding:0}
/* 🔴 常驻汉堡 #header-sticky 在 .tp-header-area **外面**，故意不吃上面那条复位：
   它自带主题红底（layout-v2.css 的 .hamburger-sticky-menu{background:var(--tp-theme-primary)}
   特异性只有 (0,1,0)，会被 `.yc-header button` 的 (0,1,1) 压掉 → 红底变透明，
   2026-08-31 本地实测抓到，正是雷区 19「中和老主题一把梭把模板自己的样式也清了」）。
   这里只清它的浏览器默认边框，不碰背景。 */
.yc-header #header-sticky{border:none;outline:none}

/* ---- 6. 触摸目标放大 -------------------------------------------------------
   原版搜索键实测只有 20×20（<40px 可点面积，层3b #13e）。放大手法沿用站内已有做法：
   老 header.html 内联样式里 `.header .menu-btn::before{...width:44px;height:44px}`
   —— 用伪元素撑可点面积，不改视觉尺寸、不影响 flex 布局。 */
.yc-header .tp-header-search-btn{position:relative}
.yc-header .tp-header-search-btn::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px}

/* ---- 7. 搜索浮层 -----------------------------------------------------------
   出处：原版 1a95433235c7d462.css 的 .tp-search-form-* 整套，逐字照抄
   （抽取脚本只覆盖 header+footer+offcanvas 两套，这套不在范围内）。
   原版 .tp-search-form-toggle 的 padding-top 被压缩截断，实测取 40px；
   transform 初始态原版靠 translateY(-100%) 收起，一并补上。 */
.yc-search-toggle{background-color:var(--tp-common-white);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;visibility:hidden;transform:translateY(-100%);transition:transform .3s ease-in-out,opacity .3s ease-in-out;z-index:9999;width:100%;padding:40px 0 60px;position:fixed;top:0;left:0}
.yc-search-toggle.active{opacity:1;visibility:visible;transition-delay:0s;transform:translateY(0)}
.yc-search-toggle.active .tp-search-form-input{opacity:1;transition-delay:.3s;transform:translateY(0)}
.yc-search-toggle .container{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}
@media (min-width:576px){.yc-search-toggle .container{max-width:540px}}
@media (min-width:768px){.yc-search-toggle .container{max-width:720px}}
@media (min-width:992px){.yc-search-toggle .container{max-width:960px}}
@media (min-width:1200px){.yc-search-toggle .container{max-width:1140px}}
@media (min-width:1400px){.yc-search-toggle .container{max-width:1750px}}
.yc-search-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:70px}
.tp-search-form-input{opacity:0;height:52px;transition:all .3s ease-in-out .5s;position:relative;transform:translateY(-40px)}
.tp-search-form-input input{width:100%;height:100%;color:var(--tp-common-black);border:0;border-bottom:1px solid #1313161a;background-color:#0000;outline:0;padding:0 40px 0 0;font-size:24px;font-weight:400;font-family:var(--tp-ff-sequel-roman)}
.tp-search-form-input input::placeholder{color:#636368;font-size:24px}
.tp-search-form-input input~.tp-search-focus-border{background-color:var(--tp-common-black);width:0;height:1px;transition:all .5s;position:absolute;bottom:0;left:auto;right:0}
.tp-search-form-input input:focus{border-color:#0000}
.tp-search-form-input input:focus~.tp-search-focus-border{width:100%;transition:all .8s;left:0;right:auto}
.tp-search-form-icon{color:var(--tp-common-black);position:absolute;top:50%;right:0;transform:translateY(-50%);line-height:0}
.tp-search-form-icon:hover{color:var(--tp-theme-primary)}
.tp-search-close{color:var(--tp-common-black);transition:all .3s;line-height:0}
.tp-search-close:hover{color:#636368;transform:rotate(180deg)}
.yc-search-overlay{z-index:9990;width:100%;height:100%;cursor:zoom-out;transition:all .5s ease-in-out;background:#18181880;position:fixed;top:0;left:0;opacity:0;visibility:hidden}
.yc-search-overlay.active{opacity:1;visibility:visible}
@media (max-width:767px){
    .tp-search-form-input input,.tp-search-form-input input::placeholder{font-size:18px}
    .yc-search-top{margin-bottom:40px}
}

/* ---- 8. 抽屉里的联系块/社交块 ----------------------------------------------
   .tp-offcanvas-* 的样式 layout-v2.css 已全带（161 条），这里只补两处：
   a) 抽屉菜单原版是 d-xl-none（只在 <1200 出现，因为原版桌面用的是另一套全屏抽屉）。
      我方只做一套抽屉、两个汉堡共用 → 菜单在所有宽度都要在，故不加 d-xl-none。
   b) 抽屉里复用站内 share.js 的 .my-share 容器（页脚同款），给点上边距。 */
.yc-offcanvas .tp-offcanvas-social .my-share{margin-top:8px}
.yc-offcanvas .tp-offcanvas-contact ul li a{font-family:var(--tp-ff-sequel-roman)}

/* ---- 9. 抽屉里子菜单展开钮的可点面积 -------------------------------------
   实测原版那个 .tp-menu-close 只有 11×28（就是个「+」字形），移动端主要靠它展开
   子栏目，11px 宽点不准（层3b 触摸目标不小于约 40px）。
   放大手法与第 6 条一致：伪元素撑面积，不动视觉尺寸、不影响 absolute 定位。
   🔴 .tp-menu-close 已经是 position:absolute（layout-v2.css: top:12px;right:7px），
   所以这里不能再设 position，只加伪元素。 */
.yc-offcanvas .tp-menu-close::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px}


/* ============================================================================
   页头修订 · 2026-08-31 用户反馈 5 条
   ============================================================================ */

/* ---- 修1. 首页下拉菜单白字看不清 → 已就地改在上面第 3 节 -------------------
   不在这里再写一份：同选择器散落两处正是雷区 31 的成因。
   病根记录：原版 `.cs-header-style .tp-main-menu nav ul li a` 是 (0,2,4)，
   低于管子菜单颜色的 `.tp-main-menu nav ul li .submenu li a` (0,2,5)，所以原版下拉里
   的字仍是 #636368。我为了用站内 body.home 机制，选择器变成 (0,3,5) 反而压过子菜单
   → 下拉里的字被刷白、压在 #ffffffe6 浅色面板上 = 看不见。改用子选择器只命中顶级项。 */

/* ---- 修2. 字太细 → 思源中粗 ------------------------------------------------
   原版菜单 font-weight:400 配的是西文 Sequel Sans Roman Head；换成思源黑体后
   中文在 400 下明显偏细（雷区 5 的反面：字体族换了，视觉重量得跟着调）。
   中粗 = Noto Sans SC Medium 500，站内 Google Fonts 已加载 400;500;700;900。 */
.yc-header .tp-main-menu nav>ul>li>a{font-weight:500}

/* ---- 修3. 常驻红汉堡的 z-index --------------------------------------------
   原版 .hamburger-sticky-menu{z-index:1}，在原版页面里够用；我方首页 hero 轮播的
   .swiper-pagination 是 z-index:10 → 实测 scrollY=800 时汉堡被它盖住点不到
   （2000/4000 处正常，所以只在首屏那一段出问题）。
   取 200 = 站内老页头 .header 用的那个值（站内已有的答案），且低于抽屉 997
   与遮罩 995，抽屉打开时仍会盖住它。 */
.yc-header .hamburger-sticky-menu{z-index:200}

/* ---- 修4. 消失/出现生硬 ----------------------------------------------------
   🔴 系统性根因：原版把过渡挂在**裸元素**规则上 ——
   `.back-to-top-wrapper,a,button,p,input,select,textarea,li,.transition-3{transition:all .3s ease-out}`
   抽取脚本按「裸元素」把整条排除了 → 页头/抽屉里所有 button/a/li 全没有过渡。
   常驻汉堡实测 computed 只剩 `transition-delay:.4s`、duration 0s → 生硬消失
   （原版 computed 是 `0.3s ease-out 0.4s`）。
   只在页头/抽屉/搜索三个作用域内补回，不做全站（老主题不需要）。
   ⚠️ offcanvas-2 里那些 `transition:...!important` 不受影响，仍然赢。 */
.yc-header a,.yc-header button,.yc-header li,
.yc-offcanvas a,.yc-offcanvas button,.yc-offcanvas li,.yc-offcanvas p,
.tp-offcanvas-2-area a,.tp-offcanvas-2-area button,.tp-offcanvas-2-area span,
.yc-search-toggle a,.yc-search-toggle button,.yc-search-toggle input{transition:all .3s ease-out}
/* 🔴 上面那条是 `transition` **简写**，会把 transition-delay 重置成 0 ——
   而 layout-v2.css 里 .hamburger-sticky-menu 原本带 transition-delay:.4s。
   实测：加了简写后 computed 变成 `.3s ease-out 0s`，比原版早 .4s。
   原版 computed 是 `0.3s ease-out 0.4s`，这里按原版补回延迟。 */
.yc-header .hamburger-sticky-menu{transition:all .3s ease-out .4s}

/* ---- 修5. 常驻红汉堡开「全屏菜单」（复刻原版第二套抽屉）------------------
   🔴 这一条是修我自己的发挥：原版有两套抽屉，右上汉堡开侧边抽屉（联系方式），
   常驻红汉堡开全屏菜单（clip-path 圆形揭幕 + 菜单项从上方落下）。我为了少写一份
   JS 合成了一套，把用户点名「很好看」的那套砍掉了 —— 违反「复刻禁止发挥」。
   offcanvas-2 的 47 条规则 layout-v2.css **已经全带**（逐条比对，缺 0 条），
   所以这里只补两件原版靠字体文件承载、换字体后必须显式写出来的字重（雷区 5）：
   原版字体是 Sequel Sans **Semi Bold** Head、CSS 只写 font-weight:500，
   换成思源后 500 = Medium 会比原版轻一档 → 显式给 600，与站内
   .tp-ff-sequel-semi-bold 已在用的 600 保持一致。 */
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a{font-weight:600}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li .submenu>li>a{font-weight:600}
/* 关闭键是 <span> 里放 SVG（原版用 FA Pro 图标字，我方换内联 SVG）→ 归零行高
   🔴 必须排除移动端那个 .hamburger-mobile-close-btn —— 它和 SVG 那个共用
   hamburger-close-btn 类，但里面装的是「CLOSE」**文字**，line-height:0 会让它
   高度变 0、在窄屏看不见也点不到（2026-08-31 实测：@390 时 h=0）。 */
.tp-offcanvas-2-wrapper .hamburger-close-btn:not(.hamburger-mobile-close-btn){line-height:0;display:inline-flex;align-items:center}
.tp-offcanvas-2-wrapper .hamburger-mobile-close-btn{line-height:1.6;letter-spacing:.08em}
/* 抽屉打开时锁滚由 JS 处理；这里保证全屏菜单盖在常驻汉堡之上 */
.tp-offcanvas-2-area.menu-open{z-index:996}

/* ---- 修6. 页头跨页高度不一致（80 vs 88）· 2026-08-31 线上实测抓到 -----------
   🔴 雷区 29 的翻版：共用区块不自带规则 → 靠各页碰巧加载了什么。
   Bootstrap reboot 有 `ul{margin-top:0;margin-bottom:1rem}`。about/blog/contact 那几页
   的页面级 CSS 自带 reset 把它中和了，首页与案例页没有 → 菜单那个 <ul> 多出
   16px 下外边距 → 菜单列高 48（其他页 32）→ row 被顶高 → 页头 88（其他页 80）。
   逐层量出来的：col-xl-6 h=48 / .tp-main-menu h=48 / nav h=48 / ul h=32 且
   margin:0 0 16px，而 <a> 自身两页都是 32px、computed 完全相同（所以不是字号行高问题）。
   ✅ 把 ul / p 的上下外边距钉进四个作用域，不再依赖各页。
   用 margin-top/bottom 与 padding-left 长写法，避免把 layout-v2.css 可能设的
   左右外边距一起清掉；也不动 li 的 margin —— .tp-offcanvas-contact ul li:not(:last-child)
   那条 (0,2,2) 要留着管抽屉里联系项的间距。 */
.yc-header ul,.yc-offcanvas ul,.tp-offcanvas-2-area ul,.yc-search-toggle ul{margin-top:0;margin-bottom:0;padding-left:0;list-style:none}
.yc-header p,.yc-offcanvas p,.tp-offcanvas-2-area p{margin-top:0;margin-bottom:0}

/* ==== CTA 区块 · Cunnet /creative-agency/ 底部那一块 ========== 2026-08-31 ====
   替换老主题的 .get-in-touch（8 个模板），同时干掉 request-link / block 两个类的依赖。
   老版本长这样：h4 细体 + .request-link 48px/900 黑字 + #fc0 黄条 hover 上涨，
   两个变体（.color 是满幅黄底居中）—— Big Drop 味道最重的一处。

   出处（每个值都指得回去，没有我编的）：
     结构  _templates/cunnet/creative-agency/index.html
             .tp-footer-area.pt-145 > .container > .row > .col-xl-7.col-lg-9
               > .tp-footer-title-wrap.mb-55 > h2.tp-section-title
                 ＋内联 span.tp-about-btn-transform.d-inline-block
                    > a.tp-btn.tp-btn-border.tp-ff-inter
     参数  Cunnet 编译产物 _next/static/chunks/1a95433235c7d462.css
     按钮族 站内 contact-v2.css 早有同一份（8-30 联系我们页复刻时抽的）→ 照抄不重抽

   🔴 剥掉 GSAP 钩子：原版 h2 带 tp-text-perspective，站内同类还带 reveal-text。
      全站 16 个模板只有 5 个加载 GSAP（index / sevser×3 / sevser_all），这块要上 8 个，
      case/case2/job/joblist/page/caselist 无 GSAP → 钩子会把文字留在初始态看不见。
      出处 memory frontend-verify-visibility-before-geometry。
   🔴 全部加 .yc-cta 作用域：.tp-section-title 与 .tp-btn 这一族在 about-v2 / blog-v2 /
      contact-v2 / service-ref / service-list / service-branding / service-smallroutine /
      extend 共 8 个文件里已有定义，而 layout-v2.css 在页脚最后加载 ——
      不加作用域会盖掉那些页面已上线的样式。
   🔴 栅格要自己带一份：layout-v2.css 的 .row/.col-* 全挂在 .yc-footer 下（不是全局），
      而 case/case2/job/joblist/page 连 bootstrap 都不加载。照页脚那套写法再来一份。 */
.yc-cta{padding-top:60px}
@media only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.yc-cta{padding-top:40px}}
.yc-cta .row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}
.yc-cta .row>*{flex:0 0 auto;width:100%;max-width:100%;padding-right:15px;padding-left:15px}
.yc-cta .col-12{width:100%}
/* 🔴 对齐方式是用户 2026-08-31 两次裁决的结果，别改回去：
   第一版照原版左对齐 7 列 → 我方标题当时只有 7 个字（「考虑下合作关系？」），
   右边空一大片，他原话「现在很尴尬」，并给了规则「一行就居中，两行就左侧」。
   随后他把文案换成 18 个字的两行版（「携手并肩，一同打造／出色的线上数字作品」）
   → 按他的规则回到**左对齐**，即原版形态 col-xl-7 col-lg-9，不加 text-center。
   🔴 列宽不能照原版的 col-xl-7 —— 实测它在本站容器里只有 635px，而 9 个中文字在
   82px 下要 720px，第一行自己就折了，当时实测排成 **4 行**（原版那句是英文 39 字符，
   7 列刚好两行；中文字宽是英文的两倍多，照抄列宽必崩）→ 一律用 col-12。
   最终定稿（他给了截图）：**标题居中一行 + 按钮居中在下方**，即 col-12 + text-center。 */
/* 强制换行点：原版 Cunnet 的标题就是用 <br> 控制断行的（站内 sevser.html 同样写法），
   配套的「窄屏取消强制断行」也是原版自带的规则，必须一起搬 —— 否则 320px 上
   9 个字一行是 360px，比视窗还宽，直接出横向滚动条。 */
@media only screen and (min-width:992px) and (max-width:1199px),only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px),(max-width:574.98px){.yc-cta .tp-section-title br{display:none}}
/* 按钮到页脚的距离：原版这块下面紧接着页脚自己的内容，用 mb-55；我方页脚是深色整块，
   按钮贴太近显挤 → 用户要求「上下距离」，下侧一并加到 100px（窄屏 64px）。 */
.yc-cta .tp-footer-title-wrap{margin-bottom:40px}
@media (max-width:767.98px){.yc-cta .tp-footer-title-wrap{margin-bottom:30px}}

/* 大标题字号 —— 🔴 不用原版那四档 82/65/50/40。
   原版 82px 是给英文标语的；用户 2026-08-31 看过 82px 的实渲染后要求「字再小点」。
   第一版我砍到 52px，用户当场说「字小的太多了」→ 定在 65px（Cunnet 自己的第二档，
   站内 sevser 系列的 fs-72 在 1200-1399 也是收到 65）。参考基准见
   memory bjucantech-blog-pages-replica-handoff 的排版基准值表，那是博客两页
   上线时逐档量定、用户认可过的）→ 与站内其他页面同一套，不是我拍的数。
   🔴 商业字体只取字重不取族名：原版是 "Sequel Sans Semi Bold Head"，站内铁律全站
   思源黑体 → font-family 走 Noto Sans SC，semi-bold 显式写 600（字体族≠字重）。
   🔴 老主题有裸元素规则 .h2,h2{font-size:36px/48px}+{font-weight:600}+{letter-spacing:-1px}，
   我方 (0,2,0) 压过它 (0,0,1)，但 letter-spacing 必须显式写，否则被它的 -1px 顶掉。
   字号变小后 letter-spacing 也跟着收：-2.1px 是给 82px 的，52px 上会挤，按比例取 -1.2px。 */
.yc-cta .tp-section-title{font-family:var(--yc-ff-cn);font-weight:700;letter-spacing:-1.6px;font-size:65px;line-height:125%;color:#1e1e1e;margin:0}
@media only screen and (min-width:1200px) and (max-width:1399px),only screen and (min-width:992px) and (max-width:1199px){.yc-cta .tp-section-title{font-size:60px}}
@media only screen and (min-width:768px) and (max-width:991px),only screen and (min-width:576px) and (max-width:767px){.yc-cta .tp-section-title{font-size:52px;letter-spacing:-1.2px}}
@media (max-width:574.98px){.yc-cta .tp-section-title{font-size:44px;letter-spacing:-1px}}

/* 标题与按钮之间的距离 —— 用户要求「加个上下距离」。
   模板上挂的是 Cunnet 自己的 .mb-50，这里覆盖成 80px（Cunnet 也有 mb-80 这一档，
   digital-studio 的大标题块用的就是 80）。窄屏收到 48px，免得一屏塞不下。
   ⚠️ 用 .yc-cta 作用域覆盖，不去改全局 .mb-50 —— 那条别的页面在用。 */
.yc-cta .tp-section-title.mb-50{margin-bottom:26px}
@media (max-width:767.98px){.yc-cta .tp-section-title.mb-50{margin-bottom:18px}}

/* 按钮不再内联，改成居中堆在标题下方（用户 2026-08-31 截图定稿）：
   → 原版 .tp-about-btn-transform 那两条（translateY(-10px) 与窄屏 width:100%）
     是为「按钮嵌在文字流里」服务的，现在用不上了，删掉不留死规则。
   → 间距用 Cunnet 自己的 mb-50（digital-studio 那块标题与按钮之间就是 50px），
     .mb-50 与 .text-center 都是 layout-v2.css 里已有的全局工具类。 */
/* 按钮本体 —— 值逐条来自 contact-v2.css（站内已上线那份）。
   🔴 写成 a.tp-btn 而不是 .tp-btn：老主题 .no-touch .content a:hover 是 (0,3,1)
   会把按钮刷成 #fc0 黄底。实测 8 个模板这块都不在 .content 内，但共用区块以后可能被挪，
   所以特异性先垫到 (0,3,1) + layout-v2.css 在页脚最后加载 → 稳赢。
   同理 a 的下划线、老主题 a{transition} 也一并钉死。 */
.yc-cta a.tp-btn{letter-spacing:-.05em;text-transform:capitalize;color:#1e1e1e;background:none;border:1px solid #1e1e1e1a;border-radius:50px;justify-content:center;align-items:center;gap:8px;padding:17px 25px;font-size:16px;font-weight:600;line-height:1;display:inline-flex;font-family:"Inter","Noto Sans SC",sans-serif;text-decoration:none;vertical-align:middle}
.yc-cta a.tp-btn:hover,.yc-cta a.tp-btn:focus{color:#1e1e1e;background:none;border-color:#1e1e1e33;text-decoration:none}
.yc-cta a.tp-btn span{z-index:1;display:inline-block;position:relative;overflow:hidden}
.yc-cta a.tp-btn span span.text-1{transition:all .3s;display:block;position:relative}
.yc-cta a.tp-btn span span.text-2{transition:all .3s;display:block;position:absolute;top:100%}
.yc-cta a.tp-btn:hover span span.text-1{transform:translateY(-150%)}
.yc-cta a.tp-btn:hover span span.text-2{top:50%;transform:translateY(-50%)}
.yc-cta a.tp-btn i{width:16px;height:16px;margin-left:4px;display:inline-flex;position:relative;overflow:hidden}
.yc-cta a.tp-btn i svg{transition:all .2s ease-out;position:absolute;bottom:-1px;left:1px;transform:translateY(-2px)}
.yc-cta a.tp-btn i svg:last-child{opacity:0;bottom:-12px;left:-12px;transform:translate(0)}
.yc-cta a.tp-btn:hover i svg:first-child{transform:translate(16px,-16px)}
.yc-cta a.tp-btn:hover i svg:last-child{opacity:1;visibility:visible;transform:translate(13px,-13px)}

/* ==== 老主题 .main 的规则搬进自有表 ============================ 2026-08-31 ====
   目的：全站 11 个模板对老主题的最后一个依赖就是 .main（index/caselist/sevser_all/
   about/message/news/newslist/search/sevser×3），这一条抄过来它们就归零。
   出处 base/css/style.min.css，逐条核过：
     .main,.wrapper{flex-grow:1}
     .main{padding-top:125px;flex-shrink:0}
     @media(min-width:1200px) .main{padding-top:190px}
     @media(min-width:1800px) .main{padding-top:235px}
   🔴 老主题还有一条 .main{overflow:hidden}，但它在 @media(-ms-high-contrast:none)
   里 —— IE 专属，现代浏览器从来没生效。**不能搬**，搬了等于新增一个裁切，
   可能把 sticky / 溢出装饰件剪掉。（"CSS 里有规则"≠"实际生效"，e94ad2a 那轮的教训。）
   🔴 不加作用域是故意的：这是替换老主题的同名规则，值逐字相同 → 视觉零变化，
   等老主题删掉时它顶上去。 */
/* 🔴🔴 2026-08-31 事故与修正：这几条第一版写成普通 .main{...}（特异性 0,1,0），
   而 layout-v2.css 在页脚最后加载 → 把 contact-v2.css 里
   `.main-contact-v2{padding-top:0}`（同为 0,1,0、加载更早）顶掉了
   → 联系我们页变成「main 235px + 区块自带 192px」双重留白，
   实测 1920 上页头底到正文多出 155px。用户当场发现「距离怎么又变大了」，
   而这一页的留白是他前后调过三遍的，属于最不能碰的地方。
   （关于我们/营销观点没坏，只因为它们的覆盖选择器特异性更高，压得住。）
   ✅ 改用 :where() 把特异性归零 —— 任何页面级覆盖都能压过它，
   而老主题被删掉时它仍能顶上原值。这才是「搬规则」该有的写法：
   **补位，不是抢位。** */
:where(.main,.wrapper){flex-grow:1}
:where(.main){padding-top:125px;flex-shrink:0}
@media (min-width:1200px){:where(.main){padding-top:190px}}
@media (min-width:1800px){:where(.main){padding-top:235px}}

/* ==== 修7. 页脚电话字重跨页不一致 + 导航加粗 ============ 2026-08-31 ====
   用户看截图提出：①「案例作品的导航的字为啥是细的」②「底部的电话我记得以前是粗体」。

   🔴 电话是真 bug，且是页头 80 vs 88 那个病的第三次复发 —— 同一个共用区块，
   字重取决于「这一页碰巧加载了哪张表」。电话的标记是
   <h4 class="tp-footer-email tp-ff-sequel-roman text-white">，实测：
     老主题 style.min.css     .h4,h4{font-weight:600}        ← 最先加载
     extend.css              .tp-ff-sequel-roman{font-weight:500}  ← 压到 500
     about-v2/blog-v2/contact-v2  裸 h1..h6{font-weight:500}       ← 也压到 500
   → index / caselist / 服务页 / 关于 / 观点 / 联系 = 500（细）
     case / case2 / job / joblist / page（这几页不加载上面任何一张）= 600（粗）
   用户记得的粗体 = 600 → 在最后加载的这张表里钉死 600，全站统一。
   ⚠️ 必须同时写 .tp-footer-email 和它里面的 <a>：字重不继承给 a 的 UA 样式没问题，
   但 extend.css 那条命中的是同一个元素，得同等或更高特异性才夺得回来。

   ② 导航字重：实测全站 5 个页面**完全一致**（顶级项字重 500、色 rgb(30,30,30)，
   首页白色），不存在「不统一」。500 是 2026-08-31 页头复刻时用户自己点名定的
   （「原版 400 配西文，中文要中粗」）。这次他说细 → 提到 600。
   🔴 只动顶级项 nav>ul>li>a，不动下拉子项 —— 子项是灰色 rgb(99,99,104) 的次级信息，
   一起加粗会把层级压平（页头那轮就是因为选择器没收窄，把子项一起刷白过一次）。 */
.yc-footer .tp-footer-email,
.yc-footer .tp-footer-email a{font-weight:700}
.yc-header .tp-main-menu nav>ul>li>a{font-weight:700}
.tp-offcanvas-2-wrapper .tp-offcanvas-menu>nav>ul>li>a{font-weight:700}
/* 🔴 600 还是比别处细（用户第二次指出）→ 提到 700，与站内大标题同一档。 */

/* ==== 修8. 案例作品页大标题与营销观点页不一致 ============ 2026-08-31 ====
   用户对比 Cunnet portfolio 原版与我方案例作品页后要求「大标题字体和营销观点的字一样」。
   逐档实测（1920/1400/1200/991/768/390）两边的真值：

     营销观点(blog)  52px / 700 / 行高52 / 字距-1.04px / "Noto Sans SC" / rgb(30,30,30)
                     ≤574 时 44px / -0.88px
     案例作品(caselist) 92px / **500** / 行高90 / 字距-2.76px / **sans-serif** / rgb(12,12,12)
                     响应式 70 / 58 / 42

   🔴 根因是 extend.css 里两条自己打架 + 一条根本没加载（雷区 5「字体族≠字重」）：
     extend.css  .tp-breadcrumb-title{font-weight:700 ...}
     extend.css  .tp-ff-sequel-bold-head{font-weight:500}   ← 同特异性、排在后面 → 700 被压成 500
     而给 .tp-ff-sequel-bold-head 定义 **font-family** 的那条只存在于
     about-v2 / blog-v2 / service-*.css 里，**caselist 一张都不加载**
     → font-family 落空成 sans-serif（所以中文用的是系统默认字，不是思源黑体）
   caselist.html 是**唯一**用 tp-breadcrumb-title 的模板（grep 实测），改它不波及别页。

   → 在最后加载的这张表里按营销观点的实测值钉死。
   ⚠️ 只动「字」：字号/字重/行高/字距/字体族/颜色。**下外边距 40px 保持不动** ——
   营销观点那边是 8px，但它下面紧接着别的区块，间距体系不同；用户这次说的是字，不是间距。 */
.tp-breadcrumb-title{font-family:"Noto Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;font-weight:700;font-size:52px;line-height:1;letter-spacing:-1.04px;color:#1e1e1e}
@media (max-width:574.98px){.tp-breadcrumb-title{font-size:44px;letter-spacing:-.88px}}

/* ==== 修9. 🔴 真凶：字体族链把「残缺的 Noto Sans SC」排在第一位 ==== 2026-08-31 ====
   用户反复说「导航比别的细」「电话比别的细」「改了还是细」。我先后把字重从 500→600→700，
   **一点用都没有** —— 因为问题不在字重，在字体文件里没有粗字面。

   CDP 实测（CSS.getPlatformFontsForNode，问浏览器「你到底用了哪个字体文件」）：
     案例作品 / 案例详情   声明 700 → 实际用 **Noto Sans SC ExtraLight**（≈200）
     营销观点 / 关于我们   声明 700 → 实际用 **Noto Sans SC Thin**（≈100）
   这台机器装的 Noto Sans SC 只有极细字面、没有 Bold；而字体族链
   `"Noto Sans SC","Inter",-apple-system,...` 把它排在第一位 →
   ① 声明多少字重都只能拿到细字面（顶多伪粗）
   ② 不同页面还落到不同的细字面 → 所以「这个粗那个细，而且都偏细」
   站内本来靠 Google Fonts 提供 400/500/700/900，但它在国内常超时；一超时就落到
   访客本机的同名字体 —— 也就是说这个坑对国内访客同样成立，不只是我本机环境。

   ✅ 修法：把**有完整字重的系统中文字排到 Noto 之前**。
      macOS → PingFang SC（苹方，含 Medium/Semibold/Bold）
      Windows → Microsoft YaHei（雅黑，含 Bold）
      旧 macOS → Hiragino Sans GB
      真装了完整思源黑体或 Google Fonts 成功加载的机器 → 仍排在后面可用
   这也正是用户 2026-08-17 拍板的「先用雅黑发布」，不是我另起方案。
   🔴 覆盖全部 --tp-ff-* 变量 + 我自己写死过字体族的三处，一次到位，
      别再一个元素一个元素改字重（那条路走了三轮全是白费）。 */
:root{
  --yc-ff-cn:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Noto Sans SC","Source Han Sans SC","Inter",-apple-system,BlinkMacSystemFont,sans-serif;
  --tp-ff-heading:var(--yc-ff-cn);
  --tp-ff-sequel-bold-head:var(--yc-ff-cn);
  --tp-ff-sequel-heavy-disp:var(--yc-ff-cn);
  --tp-ff-sequel-medium:var(--yc-ff-cn);
  --tp-ff-sequel-roman:var(--yc-ff-cn);
  --tp-ff-sequel-semi-bold:var(--yc-ff-cn);
  --tp-ff-body:var(--yc-ff-cn);
  --tp-ff-p:var(--yc-ff-cn);
}
.yc-header,.yc-footer,.tp-offcanvas-2-wrapper,.yc-cta,
.yc-cta .tp-section-title,.tp-breadcrumb-title,
.yc-footer .tp-footer-email,.yc-footer .tp-footer-email a,
.yc-header .tp-main-menu nav>ul>li>a{font-family:var(--yc-ff-cn)}
