官网改版上线:关于我们与联系我们页重构、首页AI主视觉v4、品牌标识与导航交互;同步测试与设计文档

这个提交包含在:
wikiboss
2026-11-05 16:04:20 +08:00
父节点 96a3f8b672
当前提交 e924c8d872
共有 39 个文件被更改,包括 2742 次插入 和 2591 次删除

查看文件

@@ -0,0 +1,11 @@
.about-nhc{--ab-blue:#2563eb;--ab-ink:#0f172a;--ab-copy:#475569;--ab-muted:#64748b;--ab-line:#dce4ed;--ab-soft:#f8fafc;background:#fff;color:var(--ab-ink);font-family:var(--font-sans,"Microsoft YaHei",sans-serif);font-size:16px;line-height:1.8;overflow-wrap:break-word}.about-nhc *{box-sizing:border-box}.about-nhc :where(h1,h2,h3,p,ul,ol,dl,dd,figure){margin:0}.about-nhc :where(ul,ol){list-style:none;padding:0}.about-nhc :where(h1,h2){font-family:var(--font-serif,"SimSun",serif);font-weight:600;color:var(--ab-ink);line-height:1.5}.about-nhc h3{font-size:20px;line-height:1.5;color:var(--ab-ink);font-weight:600}.about-nhc a{color:inherit;text-decoration:none}.about-nhc a:focus-visible,.about-nhc summary:focus-visible{outline:3px solid var(--ab-blue);outline-offset:4px}.about-nhc nav{height:auto;line-height:inherit;background:transparent;color:inherit;box-shadow:none}.about-nhc [id]{scroll-margin-top:100px}.ab-wrap{max-width:1280px;width:100%;padding:0 32px;margin:auto}.ab-eyebrow{color:var(--ab-blue);font-size:12px;letter-spacing:1px}.ab-skip{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.ab-skip:focus{position:fixed;top:80px;left:20px;z-index:1100;width:auto;height:auto;clip-path:none;background:#fff;padding:12px 20px}.about-nhc .ab-text-link{display:inline-flex;align-items:center;gap:16px;min-height:44px;color:var(--ab-copy);font-size:13px}.about-nhc .ab-text-link:hover{color:var(--ab-blue)}
.ab-hero{padding:92px 0 0}.ab-crumb{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ab-copy);margin-bottom:22px}.ab-crumb a{display:inline-flex;align-items:center;min-height:44px}.ab-hero-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:9%;align-items:end;margin-bottom:28px}.about-nhc h1{font-size:43px;letter-spacing:.5px;margin-top:12px}.ab-hero-name{font-size:19px;font-weight:500;color:var(--ab-ink);margin-bottom:9px!important}.ab-lead{font-size:15px;color:var(--ab-copy);line-height:1.95;max-width:460px}.ab-hero-grid .ab-text-link{margin-top:9px}.ab-panorama{position:relative;background:#f1efec;overflow:hidden;border-radius:4px}.ab-panorama picture{display:block}.ab-panorama img{display:block;width:100%;height:auto;aspect-ratio:3/1;object-fit:cover}.ab-panorama figcaption{position:absolute;left:0;bottom:0;width:100%;display:flex;justify-content:space-between;gap:20px;padding:19px 24px;font-size:11px;color:var(--ab-copy);background:linear-gradient(transparent,#f8fafcf2)}.ab-panorama figcaption>span:last-child{font-size:10px}.ab-index{border-bottom:1px solid var(--ab-line);background:#fff}.ab-index nav{display:flex;justify-content:space-between;align-items:center;gap:20px}.ab-index a{display:flex;align-items:center;gap:16px;min-height:62px;font-size:13px}.ab-index a:hover{color:var(--ab-blue)}.ab-index a>span{font-size:11px;color:var(--ab-muted)}
.ab-section{padding:42px 0}.ab-soft{background:var(--ab-soft);border-top:1px solid var(--ab-line);border-bottom:1px solid var(--ab-line)}.about-nhc h2{font-size:30px;letter-spacing:.2px}.ab-heading{display:flex;align-items:end;justify-content:space-between;gap:45px;margin-bottom:26px}.ab-heading h2{margin-top:9px}.ab-heading>p{font-size:14px;line-height:1.9;color:var(--ab-copy);max-width:370px}.ab-company{display:grid;grid-template-columns:1fr 1.65fr;gap:65px}.ab-company h2{margin-top:10px}.ab-location{color:var(--ab-copy);font-size:13px;margin-top:21px!important;display:flex;flex-direction:column;gap:5px}.ab-location>span{font-size:10px;letter-spacing:2px;color:var(--ab-muted)}.ab-company-copy>p{font-size:14px;line-height:1.95;color:var(--ab-copy)}.ab-company-copy>.ab-intro{font-size:17px;color:var(--ab-ink);margin-bottom:15px}.ab-facts{margin-top:22px!important;border-top:1px solid var(--ab-line)}.ab-facts>div{display:grid;grid-template-columns:90px 1fr;gap:23px;padding-top:13px;font-size:13px}.ab-facts dt{color:var(--ab-muted)}.ab-facts dd{color:var(--ab-copy)}
.ab-services{border-top:1px solid var(--ab-line)}.ab-services>a{display:grid;grid-template-columns:35px 1fr 270px 24px;align-items:center;gap:25px;min-height:113px;padding:22px 0;border-bottom:1px solid var(--ab-line);transition:background .2s}.ab-services>a:hover{background:#eef3fa}.ab-number{color:var(--ab-blue);font-size:12px}.ab-services h3{font-size:20px;margin-bottom:7px}.ab-services p{font-size:14px;line-height:1.9;color:var(--ab-copy)}.ab-service-note{font-size:12px;color:var(--ab-muted)}.ab-arrow{font-size:22px;color:var(--ab-blue);justify-self:end}.ab-services>a:hover .ab-arrow{color:#1d4ed8}
.ab-team-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:50px;align-items:center}.ab-courtyard picture{display:block}.ab-courtyard img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:4px}.ab-courtyard figcaption{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--ab-copy);padding-top:13px}.ab-courtyard figcaption>span{font-size:10px;color:var(--ab-muted)}.ab-roles li{display:grid;grid-template-columns:25px 1fr;gap:18px;padding:17px 0;border-top:1px solid var(--ab-line)}.ab-roles li:first-child{border-top:0;padding-top:0}.ab-roles li:last-child{padding-bottom:0}.ab-roles li>span{font-size:12px;color:var(--ab-blue);padding-top:3px}.ab-roles h3{font-size:17px;margin-bottom:7px}.ab-roles p{font-size:14px;line-height:1.9;color:var(--ab-copy)}
.ab-records{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.ab-records article{border-top:1px solid var(--ab-line);padding-top:19px}.ab-records h3{font-size:18px;margin:12px 0 10px}.ab-records p{font-size:14px;color:var(--ab-copy);line-height:1.95}.ab-working{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}.ab-working li{position:relative;border-top:1px solid var(--ab-line);padding:19px 0 0 36px}.ab-working li>span{position:absolute;left:0;top:20px;color:var(--ab-blue);font-size:12px}.ab-working h3{font-size:18px;margin-bottom:10px}.ab-working p{font-size:14px;color:var(--ab-copy);line-height:1.9}.ab-contact{padding:32px 0;background:var(--ab-soft);border-top:1px solid var(--ab-line)}.ab-contact>.ab-wrap{display:flex;align-items:center;justify-content:space-between;gap:50px}.ab-contact h2{margin:10px 0}.ab-contact p:not(.ab-eyebrow){font-size:14px;color:var(--ab-copy)}.ab-contact>.ab-wrap>div:last-child{display:flex;flex-direction:column;align-items:flex-start;gap:10px;flex-shrink:0}.about-nhc .ab-button{display:inline-flex;align-items:center;justify-content:center;gap:28px;min-height:50px;padding:12px 23px;color:#fff;background:var(--ab-blue);font-size:14px;border-radius:4px;transition:background .2s}.about-nhc .ab-button:hover{background:#1d4ed8}.about-nhc .ab-button:active{background:#1e40af}.ab-button>span{font-size:20px;line-height:1}.ab-contact .ab-text-link{font-size:12px}
.ab-mobile-header{position:fixed;top:0;left:0;width:100%;height:68px;z-index:1000;display:flex;align-items:center;gap:24px;padding:0 22px;background:#fffffff5;border-bottom:1px solid var(--ab-line)}.about-nhc .ab-brand{font-size:23px;line-height:1.2;font-weight:600;letter-spacing:2px;display:flex;flex-direction:column;justify-content:center;min-height:44px;margin-right:auto}.ab-brand>span{font-size:8px;letter-spacing:1.5px;font-weight:500;color:var(--ab-muted);margin-top:5px}.about-nhc .ab-header-contact{min-height:44px;display:flex;align-items:center;color:var(--ab-blue);font-size:12px}.ab-menu summary{display:flex;align-items:center;gap:7px;min-height:44px;list-style:none;cursor:pointer;font-size:12px}.ab-menu summary::-webkit-details-marker{display:none}.ab-menu svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.5;fill:none}.about-nhc .ab-menu nav{position:absolute;top:67px;left:0;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding:14px 22px 22px;background:#fff;border-bottom:1px solid var(--ab-line);box-shadow:0 18px 30px #0f172a0d}.ab-menu nav a{display:flex;align-items:center;min-height:52px;border-bottom:1px solid var(--ab-line);font-size:15px;color:var(--ab-copy)}.about-nhc .ab-menu nav a[aria-current]{color:var(--ab-blue)}
@media(max-width:1023px){.ab-hero-grid{gap:35px}.about-nhc h1{font-size:35px}.ab-hero-name{font-size:17px}.about-nhc h2{font-size:27px}.ab-heading{gap:30px}.ab-heading>p{max-width:300px}.ab-company{gap:35px;grid-template-columns:1fr 1.5fr}.ab-services>a{grid-template-columns:28px 1fr 24px;gap:20px}.ab-service-note{display:none}.ab-team-grid{gap:30px}.ab-records{gap:25px}.ab-working{gap:27px}.ab-contact>.ab-wrap{gap:30px}}
@media(max-width:767px){.ab-wrap{padding:0 22px}.about-nhc [id]{scroll-margin-top:85px}.ab-hero{padding:84px 0 0}.ab-crumb{margin-bottom:16px}.ab-eyebrow{font-size:11px}.ab-hero-grid{grid-template-columns:1fr;gap:20px;margin-bottom:23px}.about-nhc h1{font-size:32px;margin-top:11px;letter-spacing:0;line-height:1.5}.ab-hero-name{font-size:17px;margin-bottom:9px!important}.ab-lead{font-size:16px;line-height:1.85;max-width:none}.ab-hero-grid .ab-text-link{margin-top:7px}.ab-panorama img{aspect-ratio:1.65;object-fit:cover;object-position:center}.ab-panorama figcaption{padding:13px 16px;font-size:10px}.ab-panorama figcaption>span:last-child{display:none}.ab-index nav{justify-content:flex-start;flex-wrap:wrap;gap:0 22px;padding-top:7px;padding-bottom:7px}.ab-index a{font-size:12px;min-height:44px;gap:8px}.ab-index a>span{font-size:10px}.ab-section{padding:29px 0}.about-nhc h2{font-size:26px}.ab-heading{display:block;margin-bottom:22px}.ab-heading>p{max-width:none;font-size:16px;line-height:1.85;margin-top:13px}.ab-heading>.ab-text-link{margin-top:12px}.ab-company{grid-template-columns:1fr;gap:20px}.ab-company h2 br{display:none}.ab-location{display:none}.ab-company-copy>.ab-intro{font-size:17px;line-height:1.9;margin-bottom:14px}.ab-company-copy>p{font-size:16px;line-height:1.85}.ab-facts{margin-top:20px!important}.ab-facts>div{grid-template-columns:65px 1fr;gap:18px;font-size:14px;padding-top:13px}.ab-services>a{grid-template-columns:22px 1fr 18px;gap:13px;padding:21px 0;min-height:0}.ab-services h3{font-size:19px}.ab-services p{font-size:16px;line-height:1.85}.ab-arrow{font-size:20px}.ab-team-grid{grid-template-columns:1fr;gap:25px}.ab-courtyard figcaption{font-size:11px}.ab-roles li{gap:14px;padding:18px 0}.ab-roles h3{font-size:18px}.ab-roles p{font-size:16px;line-height:1.85}.ab-records{grid-template-columns:1fr;gap:23px}.ab-records article{padding-top:17px}.ab-records h3{font-size:19px;margin:10px 0}.ab-records p{font-size:16px;line-height:1.85}.ab-working{grid-template-columns:1fr;gap:23px}.ab-working h3{font-size:19px}.ab-working p{font-size:16px;line-height:1.85}.ab-contact{padding:28px 0}.ab-contact>.ab-wrap{display:block}.ab-contact h2{font-size:26px}.ab-contact p:not(.ab-eyebrow){font-size:16px;line-height:1.85}.ab-contact>.ab-wrap>div:last-child{margin-top:20px}.ab-contact .ab-text-link{font-size:13px}}
@media(max-width:374px){.ab-wrap{padding:0 18px}.about-nhc h1{font-size:29px}.ab-index nav{gap:0 16px}.ab-mobile-header{gap:20px}}
@media(prefers-reduced-motion:reduce){html:has(.about-nhc){scroll-behavior:auto}.about-nhc *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

查看文件

@@ -0,0 +1,12 @@
.contact-nhc{--ct-blue:#2563eb;--ct-ink:#0f172a;--ct-copy:#475569;--ct-muted:#64748b;--ct-line:#dce4ed;--ct-soft:#f8fafc;--ct-error:#b91c1c;background:#fff;color:var(--ct-ink);font-size:16px;line-height:1.8;overflow-wrap:break-word}.contact-nhc *{box-sizing:border-box}.contact-nhc :where(h1,h2,h3,p,figure,ol,dl,dd,fieldset){margin:0}.contact-nhc :where(h1,h2){font-family:var(--font-serif,"SimSun",serif);font-weight:600;line-height:1.5;color:var(--ct-ink)}.contact-nhc h3{font-size:18px;line-height:1.5;font-weight:600;color:var(--ct-ink)}.contact-nhc a{color:inherit;text-decoration:none}.contact-nhc :where(a,button,input,textarea,summary):focus-visible{outline:3px solid var(--ct-blue);outline-offset:4px}.contact-nhc nav{height:auto;line-height:inherit;box-shadow:none;background:transparent;color:inherit}.contact-nhc [hidden]{display:none!important}.contact-nhc [id]{scroll-margin-top:100px}.ct-wrap{max-width:1280px;width:100%;margin:auto;padding:0 32px}.ct-eyebrow{font-size:12px;letter-spacing:1px;color:var(--ct-blue)}.ct-skip,.ct-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.ct-skip:focus{position:fixed;top:80px;left:20px;width:auto;height:auto;clip-path:none;background:#fff;padding:12px 20px;z-index:1100}.contact-nhc .ct-button{display:inline-flex;align-items:center;justify-content:center;gap:25px;min-height:50px;padding:12px 22px;border:1px solid var(--ct-blue);border-radius:4px;background:var(--ct-blue);color:#fff;font-size:14px;line-height:1.7;cursor:pointer;transition:background .2s;box-shadow:none;text-transform:none;letter-spacing:0}.ct-button>span{font-size:20px;line-height:1}.contact-nhc .ct-button:hover{background:#1d4ed8}.contact-nhc .ct-button:disabled{background:#64748b;border-color:#64748b;color:#fff;cursor:wait}.contact-nhc .ct-text-link{display:inline-flex;align-items:center;gap:15px;min-height:44px;color:var(--ct-copy);font-size:13px}.contact-nhc .ct-text-link:hover{color:var(--ct-blue)}
.ct-hero{padding:92px 0 30px}.ct-crumb{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ct-copy);margin-bottom:20px}.ct-crumb a{display:inline-flex;align-items:center;min-height:44px}.ct-hero-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:70px;align-items:center}.contact-nhc h1{font-size:39px;margin:12px 0 19px;letter-spacing:.3px}.ct-lead{font-size:16px;line-height:1.95;color:var(--ct-copy);max-width:480px}.ct-actions{display:flex;flex-wrap:wrap;align-items:center;gap:15px 25px;margin-top:25px}.ct-art{border:1px solid #e8e6e2;border-radius:4px;overflow:hidden;background:#f2efea}.ct-art picture{display:block}.ct-art img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}.ct-art figcaption{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--ct-copy);padding:11px 16px;background:#fff;border-top:1px solid #e8e6e2}.ct-art figcaption>span:last-child{font-size:10px;color:var(--ct-muted)}
.ct-section{padding:38px 0}.ct-soft{background:var(--ct-soft);border-top:1px solid var(--ct-line);border-bottom:1px solid var(--ct-line)}.ct-main-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:70px}.ct-form-panel{min-width:0}.ct-section-intro h2{font-size:29px;margin:9px 0 11px}.ct-section-intro>p:last-child{font-size:14px;color:var(--ct-copy);line-height:1.9}.ct-form{margin-top:23px}.contact-nhc .ct-direction{border:0;padding:0;margin:0 0 20px;min-width:0}.ct-direction legend{font-size:14px;font-weight:500;color:var(--ct-ink);padding:0;margin-bottom:10px}.ct-direction legend>span{font-size:12px;color:var(--ct-muted);margin-left:9px;font-weight:400}.ct-topics{display:flex;gap:8px;flex-wrap:wrap}.ct-topics button{min-height:44px;border:1px solid var(--ct-line);border-radius:4px;background:#fff;color:var(--ct-copy);padding:8px 13px;font:inherit;font-size:12px;cursor:pointer;transition:background .2s,color .2s,border-color .2s;box-shadow:none;text-transform:none;letter-spacing:0}.ct-topics button:hover{border-color:var(--ct-blue);color:var(--ct-blue)}.ct-topics button[aria-pressed=true]{background:#eff6ff;border-color:var(--ct-blue);color:#1d4ed8}.ct-field{margin-bottom:19px;min-width:0}.ct-field-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.contact-nhc .ct-field label{display:block;position:static;transform:none;font-size:14px;color:var(--ct-ink);font-weight:500;margin:0 0 8px;line-height:1.6}.ct-field label>span{color:var(--ct-error);margin-left:3px}.contact-nhc .ct-field input,.contact-nhc .ct-field textarea{display:block;width:100%;height:48px;box-sizing:border-box;min-width:0;border:1px solid #cbd5e1;border-radius:4px;background:#fff;color:var(--ct-ink);padding:11px 13px;margin:0;font:inherit;font-size:15px;line-height:1.6;box-shadow:none;transition:border-color .2s}.contact-nhc .ct-field textarea{height:auto;min-height:125px;resize:vertical}.contact-nhc .ct-field input:focus,.contact-nhc .ct-field textarea:focus{border-color:var(--ct-blue);box-shadow:0 0 0 1px var(--ct-blue)}.contact-nhc .ct-field :where(input,textarea)[aria-invalid=true]{border-color:var(--ct-error)}.contact-nhc :where(input,textarea)::placeholder{color:var(--ct-muted);opacity:1}.ct-hint{font-size:12px;color:var(--ct-muted);line-height:1.8;margin-top:7px!important}.ct-field-error{font-size:13px;color:var(--ct-error);line-height:1.8;margin-top:7px!important}.ct-captcha{display:flex;align-items:center;gap:15px}.contact-nhc .ct-captcha input{max-width:210px;flex:1}.ct-captcha-refresh{display:inline-flex;align-items:center;gap:10px;min-height:48px;border:0;padding:0;background:#fff;cursor:pointer;font-size:12px;color:var(--ct-copy);box-shadow:none;text-transform:none;letter-spacing:0}.ct-captcha-refresh img{width:110px;height:44px;object-fit:contain;display:block}.ct-submit-status{font-size:14px;line-height:1.9;padding:12px 15px;border:1px solid var(--ct-line);background:var(--ct-soft);color:var(--ct-copy);border-radius:4px;margin:0 0 17px!important}.ct-submit-status[data-state=error]{color:var(--ct-error);border-color:#fecaca;background:#fff7f7}.ct-submit-status[data-state=success]{color:#166534;border-color:#bbf7d0;background:#f0fdf4}.ct-submit-line{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.ct-submit-line>p{font-size:12px;color:var(--ct-muted)}.ct-form-note,.ct-noscript{font-size:12px;color:var(--ct-copy);line-height:1.9;margin-top:16px!important}.ct-direct{align-self:start;background:var(--ct-soft);border:1px solid var(--ct-line);border-radius:4px;padding:28px}.ct-direct h2{font-size:24px;margin-top:10px}.ct-contact-list{margin-top:19px!important}.ct-contact-list>div{padding:16px 0;border-bottom:1px solid var(--ct-line)}.ct-contact-list dt{font-size:12px;color:var(--ct-muted);margin-bottom:4px}.ct-contact-list dd{font-size:14px;color:var(--ct-copy)}.ct-contact-list a{min-height:44px;display:inline-flex;align-items:center}.ct-contact-list .ct-phone{font-size:27px;letter-spacing:.5px;color:var(--ct-ink)}.ct-contact-list a:hover{color:var(--ct-blue)}.ct-prepare{padding-top:23px}.ct-prepare h3,.ct-next h3{font-size:16px}.ct-prepare ol{padding:0;list-style:none;margin-top:13px}.ct-prepare li{display:flex;gap:15px;font-size:13px;color:var(--ct-copy);margin-top:9px}.ct-prepare li>span{font-size:11px;color:var(--ct-blue);padding-top:2px}.ct-prepare p,.ct-next p{font-size:13px;color:var(--ct-copy);line-height:1.9;margin-top:13px}.ct-next{padding-top:20px;margin-top:21px;border-top:1px solid var(--ct-line)}
.ct-heading{display:flex;align-items:end;justify-content:space-between;gap:50px;margin-bottom:25px}.contact-nhc h2{font-size:29px}.ct-heading h2{margin-top:9px}.ct-heading>p{font-size:14px;line-height:1.9;color:var(--ct-copy);max-width:400px}.ct-offices{display:grid;grid-template-columns:1fr 1fr;gap:50px}.ct-offices article{border-top:1px solid var(--ct-line);padding-top:21px}.ct-offices h3{font-size:21px;margin:11px 0}.ct-offices address{font-style:normal;font-size:14px;line-height:1.95;color:var(--ct-copy);max-width:460px}.ct-offices .ct-text-link{margin-top:8px}.ct-faq-layout{display:grid;grid-template-columns:1fr 1.65fr;gap:65px}.ct-faq-layout h2{margin-top:10px}.ct-faq details{border-top:1px solid var(--ct-line)}.ct-faq details:last-child{border-bottom:1px solid var(--ct-line)}.ct-faq summary{display:flex;align-items:center;justify-content:space-between;gap:25px;min-height:63px;padding:14px 0;font-size:15px;font-weight:500;cursor:pointer;list-style:none}.ct-faq summary::-webkit-details-marker{display:none}.ct-faq summary>span{position:relative;width:16px;height:16px;flex-shrink:0}.ct-faq summary>span:before,.ct-faq summary>span:after{content:"";position:absolute;left:2px;top:8px;width:12px;height:1px;background:var(--ct-blue)}.ct-faq summary>span:after{transform:rotate(90deg);transition:transform .2s}.ct-faq details[open] summary>span:after{transform:rotate(0)}.ct-faq details>p{padding:0 25px 20px 0;font-size:14px;color:var(--ct-copy);line-height:1.95}
.ct-mobile-header{position:fixed;top:0;left:0;width:100%;height:68px;z-index:1000;background:#fffffff5;border-bottom:1px solid var(--ct-line);display:flex;align-items:center;gap:24px;padding:0 22px}.contact-nhc .ct-brand{font-size:23px;line-height:1.2;font-weight:600;letter-spacing:2px;display:flex;flex-direction:column;justify-content:center;min-height:44px;margin-right:auto}.ct-brand>span{font-size:8px;font-weight:500;letter-spacing:1.5px;margin-top:5px;color:var(--ct-muted)}.contact-nhc .ct-header-contact{min-height:44px;display:flex;align-items:center;font-size:12px;color:var(--ct-blue)}.ct-menu summary{display:flex;align-items:center;gap:7px;min-height:44px;font-size:12px;cursor:pointer;list-style:none}.ct-menu summary::-webkit-details-marker{display:none}.ct-menu svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.5;fill:none}.contact-nhc .ct-menu nav{position:absolute;top:67px;left:0;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding:14px 22px 22px;background:#fff;border-bottom:1px solid var(--ct-line);box-shadow:0 18px 30px #0f172a0d}.ct-menu nav a{display:flex;align-items:center;min-height:52px;border-bottom:1px solid var(--ct-line);font-size:15px;color:var(--ct-copy)}.contact-nhc .ct-menu nav a[aria-current]{color:var(--ct-blue)}
@media(max-width:1023px){.ct-hero-grid{gap:35px}.contact-nhc h1{font-size:34px}.ct-main-grid{gap:35px;grid-template-columns:1.4fr 1fr}.ct-direct{padding:22px}.contact-nhc h2{font-size:26px}.ct-direct h2{font-size:22px}.ct-captcha{gap:10px}.ct-captcha-refresh{gap:7px}.ct-captcha-refresh>span{display:none}.ct-faq-layout{gap:35px}}
@media(max-width:767px){.ct-wrap{padding:0 22px}.contact-nhc [id]{scroll-margin-top:85px}.ct-hero{padding:84px 0 24px}.ct-crumb{margin-bottom:16px}.ct-eyebrow{font-size:11px}.ct-hero-grid{grid-template-columns:1fr;gap:25px}.contact-nhc h1{font-size:30px;margin:11px 0 16px;letter-spacing:0}.ct-lead{font-size:16px;line-height:1.85}.ct-actions{gap:10px 20px;margin-top:20px}.ct-art figcaption{font-size:10px;padding:10px 13px;gap:15px}.ct-section{padding:28px 0}.ct-main-grid{grid-template-columns:1fr;gap:28px}.contact-nhc h2{font-size:26px}.ct-section-intro>p:last-child{font-size:16px;line-height:1.85}.ct-form{margin-top:20px}.ct-direction legend{font-size:15px}.ct-topics{gap:8px}.ct-topics button{font-size:12px;padding:8px 11px}.ct-field-row{grid-template-columns:1fr;gap:0}.contact-nhc .ct-field label{font-size:15px}.contact-nhc .ct-field input,.contact-nhc .ct-field textarea{font-size:16px;min-height:48px}.ct-field{margin-bottom:18px}.ct-hint{font-size:12px}.ct-field-error{font-size:14px}.ct-captcha-refresh>span{display:inline}.ct-captcha-refresh{flex-shrink:0}.contact-nhc .ct-captcha input{max-width:none;flex:1;min-width:80px}.ct-submit-line{gap:12px}.ct-submit-line>p{font-size:12px}.ct-submit-status{font-size:16px}.ct-form-note{font-size:12px}.ct-direct{padding:23px}.ct-direct h2{font-size:24px}.ct-contact-list dd{font-size:16px}.ct-contact-list .ct-phone{font-size:29px}.ct-prepare h3,.ct-next h3{font-size:17px}.ct-prepare li,.ct-prepare p,.ct-next p{font-size:16px;line-height:1.85}.ct-prepare li>span{font-size:12px}.ct-heading{display:block;margin-bottom:22px}.ct-heading>p{font-size:16px;line-height:1.85;max-width:none;margin-top:13px}.ct-offices{grid-template-columns:1fr;gap:23px}.ct-offices h3{font-size:20px}.ct-offices address{font-size:16px;line-height:1.85}.ct-faq-layout{grid-template-columns:1fr;gap:22px}.ct-faq-layout h2 br{display:none}.ct-faq summary{font-size:16px;gap:20px}.ct-faq details>p{font-size:16px;line-height:1.85;padding:0 0 20px}}
@media(max-width:374px){.ct-wrap{padding:0 18px}.contact-nhc h1{font-size:27px}.ct-captcha-refresh>span{display:none}.ct-mobile-header{gap:20px}.ct-topics button{padding:8px 10px}}
/* The legacy mobile stylesheet forces form styles with !important. */
.contact-nhc .ct-field input,.contact-nhc .ct-field textarea{box-sizing:border-box!important;border:1px solid #cbd5e1!important;background:#fff!important;padding:11px 13px!important;font-size:16px!important;margin:0!important;box-shadow:none!important;color:var(--ct-ink)!important}
.contact-nhc .ct-field input{height:48px!important}.contact-nhc .ct-field textarea{height:auto!important;min-height:125px!important}.contact-nhc .ct-field :where(input,textarea)[aria-invalid=true]{border-color:var(--ct-error)!important}.contact-nhc .ct-field :where(input,textarea):focus{border-color:var(--ct-blue)!important;box-shadow:0 0 0 1px var(--ct-blue)!important}.contact-nhc .ct-field label{color:var(--ct-ink)!important}
@media(prefers-reduced-motion:reduce){html:has(.contact-nhc){scroll-behavior:auto}.contact-nhc *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

查看文件

@@ -0,0 +1,70 @@
/* Shared brand masthead. Text follows the site-wide YaHei typography. */
.nhc-header{background:#fffffff7;border-bottom:1px solid #dce5f0;box-shadow:0 2px 12px #0f172a04}
.nhc-header>.nhc-container{max-width:1360px;padding:0 40px}
.nhc-header .nhc-nav-inner{position:relative;height:80px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:30px}
.nhc-header .nhc-logo{gap:0;min-width:0;white-space:nowrap}
.nhc-header .nhc-brand-home{display:flex;align-items:center;gap:12px;min-height:48px;color:#0f172a}
.nhc-header .nhc-brand-symbol{display:block;width:36px;height:48px;flex-shrink:0;background:url('../images/brand/nhc-official-logo.png') center/auto 100% no-repeat}
.nhc-header .nhc-logo-brand{gap:3px;display:flex;flex-direction:column}
.nhc-header .nhc-logo-text{font-size:25px;line-height:1.2;letter-spacing:3px;font-weight:700;color:#0f172a}
.nhc-header .nhc-logo-sub{font-size:10px;line-height:1.3;letter-spacing:2px;color:#475569;font-weight:500}
.nhc-header .nhc-brand-descriptor{display:flex;flex-direction:column;gap:5px;margin-left:20px;padding-left:20px;border-left:1px solid #d7e0eb;color:#334155;font-size:12px;line-height:1.5;letter-spacing:1px}
.nhc-brand-descriptor small{font-size:9px;color:#64748b;letter-spacing:1px}
.nhc-header .nhc-main-nav{display:flex;align-items:center;height:80px}
.nhc-header .nhc-nav-menu{display:flex;align-items:center;gap:27px;margin:0;padding:0;height:100%}
.nhc-header .nhc-nav-menu>li{position:static;height:100%;display:flex;align-items:center}
.nhc-header .nhc-nav-link{font-size:14px;line-height:1.5;letter-spacing:.3px;display:inline-flex;align-items:center;gap:5px;min-height:80px;padding:0;white-space:nowrap}
.nhc-header .nhc-nav-link::after{bottom:16px;height:2px;border-radius:1px}
.nhc-header .nhc-nav-link:hover::after,.nhc-header .nhc-nav-link.active::after,.nhc-header .nhc-nav-link:focus-visible::after{width:18px}
.nhc-header .nhc-caret{width:11px;height:11px;opacity:.85}
.nhc-header .nhc-nav-actions{justify-self:end;padding-left:24px;border-left:1px solid #e2e8f0;gap:0}
.nhc-header .nhc-nav-actions .nhc-btn{min-height:42px;padding:9px 17px;border-radius:4px;font-size:12px;gap:15px;box-shadow:none;white-space:nowrap}
.nhc-header .nhc-mega-panel{top:100%;left:50%;width:1100px;max-width:100%;border-radius:0 0 6px 6px;padding:28px 30px}
.nhc-header .nhc-has-dropdown:focus-within .nhc-mega-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.nhc-header .nhc-has-dropdown:focus-within>.nhc-nav-link{color:#2563eb}
.nhc-header .nhc-compact-menu{display:none}
/* The supplied official logo is shared by desktop and mobile headers. */
body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header){gap:18px;background:#fffffff7;border-bottom:1px solid #dce5f0;box-shadow:0 2px 12px #0f172a04}
body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand){position:relative;padding-left:36px;font-size:22px!important;letter-spacing:2px;font-weight:700!important;line-height:1.2}
body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand)::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:26px;height:36px;background:url('../images/brand/nhc-official-logo.png') center/auto 100% no-repeat}
body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand)>span{display:none!important}
@media(max-width:1200px){.nhc-header .nhc-brand-descriptor{display:none}.nhc-header .nhc-nav-inner{gap:24px}.nhc-header .nhc-nav-menu{gap:24px}}
@media(min-width:769px) and (max-width:1000px){.nhc-header>.nhc-container{padding-inline:28px}.nhc-header .nhc-nav-inner{gap:18px}.nhc-header .nhc-nav-menu{gap:18px}.nhc-header .nhc-logo-text{font-size:23px}.nhc-header .nhc-logo-sub{font-size:8px;letter-spacing:1.5px}.nhc-header .nhc-brand-symbol{width:30px;height:42px}.nhc-header .nhc-brand-home{gap:10px}.nhc-header .nhc-nav-link{font-size:13px}.nhc-header .nhc-nav-actions{padding-left:18px}.nhc-header .nhc-nav-actions .nhc-btn{padding-inline:13px;gap:10px}}
@media(max-width:768px){.nhc-header>.nhc-container{padding-inline:22px}.nhc-header .nhc-nav-inner{height:68px;grid-template-columns:1fr auto;gap:18px}.nhc-header .nhc-main-nav,.nhc-header .nhc-nav-actions{display:none}.nhc-header .nhc-brand-symbol{width:26px;height:36px}.nhc-header .nhc-brand-home{gap:10px}.nhc-header .nhc-logo-text{font-size:22px;letter-spacing:2px}.nhc-header .nhc-logo-sub{font-size:7px;letter-spacing:1.1px}.nhc-header .nhc-compact-menu{display:block}.nhc-compact-menu summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;list-style:none;font-size:12px;color:#334155}.nhc-compact-menu summary::-webkit-details-marker{display:none}.nhc-compact-menu summary svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.5}.nhc-header .nhc-compact-menu nav{position:absolute;top:68px;left:-22px;width:calc(100% + 44px);height:auto;line-height:1.5;background:#fff;border-bottom:1px solid #dce5f0;box-shadow:0 12px 20px #0f172a0a;display:grid;grid-template-columns:1fr 1fr;padding:12px 22px 20px;gap:0 24px}.nhc-compact-menu nav a{display:flex;align-items:center;min-height:50px;border-bottom:1px solid #e2e8f0;color:#334155;font-size:14px}.nhc-compact-menu :is(a,summary):focus-visible{outline:2px solid #2563eb;outline-offset:3px}}
@media(max-width:360px){body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header){gap:12px;padding-inline:18px}body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand){padding-left:34px;font-size:20px!important}body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand)::before{width:24px;height:34px}}
/* Scrolled masthead: navy ground, light type, original logo on a white tile. */
html.nhc-nav-scrolled .nhc-header,
html.nhc-nav-scrolled body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header),
html.nhc-nav-scrolled body>.navbar {
background:#0f172af7;
border-bottom-color:#2d3b51;
box-shadow:0 5px 20px #02061726;
}
html.nhc-nav-scrolled .nhc-header :is(.nhc-brand-home,.nhc-logo-text){color:#fff}
html.nhc-nav-scrolled .nhc-header .nhc-logo-sub{color:#cbd5e1}
html.nhc-nav-scrolled .nhc-header .nhc-nav-link,
html.nhc-nav-scrolled .nhc-header .nhc-nav-link:visited{color:#e2e8f0}
html.nhc-nav-scrolled .nhc-header .nhc-nav-link:is(:hover,:focus-visible,.active),
html.nhc-nav-scrolled .nhc-header .nhc-nav-link.active:visited,
html.nhc-nav-scrolled .nhc-header .nhc-has-dropdown:focus-within>.nhc-nav-link{color:#93c5fd}
html.nhc-nav-scrolled .nhc-header .nhc-nav-link::after{background:#93c5fd}
html.nhc-nav-scrolled .nhc-header .nhc-nav-actions{border-left-color:#334155}
html.nhc-nav-scrolled .nhc-header .nhc-compact-menu summary{color:#e2e8f0}
html.nhc-nav-scrolled .nhc-header .nhc-brand-symbol,
html.nhc-nav-scrolled body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand)::before{background-color:#fff;background-size:auto 90%;border-radius:3px}
html.nhc-nav-scrolled body :is(.hn-mobile-brand,.sw2-brand,.sw-brand,.ap-brand,.av-brand,.cs-brand){color:#fff!important}
html.nhc-nav-scrolled body :is(.hn-mobile-contact,.sw2-header-contact,.sw-header-contact,.ap-header-contact,.av-header-contact,.cs-header-contact){color:#dbeafe!important}
html.nhc-nav-scrolled body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header) summary{color:#e2e8f0}
html.nhc-nav-scrolled body>.navbar :is(.content-left a,.content-center h1,.content-right a){color:#fff}
/* Expanded mobile panels stay white, including when the masthead is dark. */
body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header,.ab-mobile-header,.ct-mobile-header,.nhc-header) details nav{color:#334155;background:#fff}
body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header,.ab-mobile-header,.ct-mobile-header,.nhc-header) details nav a,
body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header,.ab-mobile-header,.ct-mobile-header,.nhc-header) details nav a:visited{color:#334155}
body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header,.ab-mobile-header,.ct-mobile-header,.nhc-header) details nav a:is([aria-current],:hover,:focus-visible){color:#2563eb}
/* Mobile dropdowns retain their white panels and dark menu text. */
html.nhc-nav-scrolled body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header) nav,
html.nhc-nav-scrolled body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header) nav a{color:#334155}
html.nhc-nav-scrolled body :is(.hn-mobile-header,.sw2-mobile-header,.sw-mobile-header,.ap-mobile-header,.av-mobile-header,.cs-mobile-header) nav a:is([aria-current],:hover,:focus-visible){color:#2563eb}

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 175 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 81 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 112 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 51 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 28 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 148 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 65 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 148 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 81 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 183 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 102 KiB

查看文件

@@ -0,0 +1,108 @@
(function () {
'use strict';
var form = document.querySelector('.ct-form');
if (!form) return;
var submit = form.querySelector('.ct-submit');
var status = form.querySelector('.ct-submit-status');
var topics = Array.from(form.querySelectorAll('[data-topic]'));
var refresh = form.querySelector('.ct-captcha-refresh');
var fields = Array.from(form.querySelectorAll('input[required],textarea[required]'));
var pending = false;
var messages = {title: '请填写需求主题。', name: '请填写您的称呼。', phone: '请填写联系电话。', content: '请简要说明您的需求。', captcha: '请填写图片验证码。'};
function showStatus(message, state) {
status.textContent = message;
status.dataset.state = state;
status.hidden = false;
}
function validate(field) {
var value = field.value.trim();
var message = value ? '' : messages[field.name];
if (!message && field.name === 'phone' && (!/^[+\d\s().-]+$/.test(value) || value.replace(/\D/g, '').length < 7)) {
message = '请填写可联系的手机或固定电话,固定电话请包含区号。';
}
var error = document.getElementById(field.id + '-error');
field.setAttribute('aria-invalid', String(!!message));
error.textContent = message;
error.hidden = !message;
return !message;
}
function resetCaptcha() {
if (!refresh) return;
var url = refresh.dataset.captchaUrl;
refresh.querySelector('img').src = url + (url.indexOf('?') === -1 ? '?' : '&') + 'r=' + Date.now();
form.elements.captcha.value = '';
}
async function request(url, options) {
var controller = new AbortController();
var timer = setTimeout(function () { controller.abort(); }, 20000);
try {
var response = await fetch(url, Object.assign({credentials: 'same-origin', cache: 'no-store', signal: controller.signal}, options));
if (!response.ok) throw new Error('http');
return await response.json();
} finally { clearTimeout(timer); }
}
topics.forEach(function (button) {
button.addEventListener('click', function () {
if (pending) return;
form.elements.title.value = button.dataset.topic;
topics.forEach(function (item) { item.setAttribute('aria-pressed', String(item === button)); });
validate(form.elements.title);
});
});
form.elements.title.addEventListener('input', function () {
topics.forEach(function (item) { item.setAttribute('aria-pressed', String(item.dataset.topic === form.elements.title.value)); });
});
fields.forEach(function (field) {
field.addEventListener('blur', function () { validate(field); });
field.addEventListener('input', function () { if (field.getAttribute('aria-invalid') === 'true') validate(field); });
});
if (refresh) refresh.addEventListener('click', function () { if (!pending) resetCaptcha(); });
form.addEventListener('submit', async function (event) {
event.preventDefault();
if (pending) return;
var invalid = fields.filter(function (field) { return !validate(field); });
if (invalid.length) {
showStatus('请检查标注的必填内容后再提交。', 'error');
invalid[0].focus();
return;
}
pending = true;
fields.forEach(function (field) { field.readOnly = true; });
submit.disabled = true;
form.setAttribute('aria-busy', 'true');
submit.textContent = '正在提交…';
showStatus('正在提交您的项目需求,请稍候。', 'pending');
var payload = new URLSearchParams();
fields.forEach(function (field) { payload.set(field.name, field.value.trim()); });
var submitted = false;
try {
// Token is single-use; obtain one for each attempt, including retries.
var token = await request(form.dataset.tokenUrl);
if (Number(token.code) !== 1 || !token.data) throw new Error('token');
form.elements.__token__.value = token.data;
payload.set('__token__', token.data);
submitted = true;
var result = await request(form.action, {method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest'}, body: payload.toString()});
if (Number(result.code) === 1) {
form.reset();
topics.forEach(function (item) { item.setAttribute('aria-pressed', 'false'); });
fields.forEach(function (field) { field.removeAttribute('aria-invalid'); document.getElementById(field.id + '-error').hidden = true; });
showStatus('您的需求已提交。我们将根据您留下的联系方式与您沟通,请保持电话畅通。', 'success');
} else {
var message = result.msg === '请先登录!' ? '页面校验已失效,请重试提交。' : String(result.msg || '暂未提交成功,请稍后重试或通过电话联系。');
showStatus(message, 'error');
}
resetCaptcha();
} catch (error) {
showStatus(submitted ? '暂时无法确认提交结果。为避免重复提交,请稍后通过电话或邮箱确认;您填写的内容已保留。' : '暂时无法连接提交服务,请稍后重试或通过电话、邮箱联系。您填写的内容已保留。', 'error');
} finally {
pending = false;
fields.forEach(function (field) { field.readOnly = false; });
submit.disabled = false;
submit.textContent = '提交项目需求 ↗';
form.setAttribute('aria-busy', 'false');
status.focus();
}
});
})();

查看文件

@@ -0,0 +1,22 @@
/* Keep the public navigation readable while content passes beneath it. */
(function () {
'use strict';
var root = document.documentElement;
var pending = false;
function update() {
root.classList.toggle('nhc-nav-scrolled', window.scrollY > 40);
pending = false;
}
function onScroll() {
if (!pending) {
pending = true;
window.requestAnimationFrame(update);
}
}
update();
window.addEventListener('scroll', onScroll, { passive: true });
window.addEventListener('pageshow', update);
}());