.xy-contact { color: #35312f; font-family: "Microsoft YaHei", "PingFang SC", sans-serif; }
.xy-contact .header .h_a1, .xy-contact .page_tit { animation: none !important; opacity: 1 !important; visibility: visible !important; }
.xy-contact .banner_page .item { height: 180px; }
.xy-contact .page_about { padding: 24px 0 48px; }
.xy-contact .page_about > .wrap { width: calc(100% - 64px); max-width: 1320px; }
.xy-contact .content147 { padding: 0; margin: 0; }
.xy-contact .ey_content147 { width: 100%; padding: 0; }
.xy-contact .page_tit { margin: 18px 0 34px; }
.xy-contact .page_tit h1 { font-size: 32px; font-weight: 500; line-height: 1.5; color: #35312f; }
.xy-contact .page_tit h1::before, .xy-contact .page_tit h1::after { content: ''; display: inline-block; vertical-align: middle; width: 28px; height: 1px; background: #bfb8b0; margin: 0 22px; }
.xy-contact .contact-layout { display: grid; grid-template-columns: minmax(330px, 0.85fr) minmax(0, 1.5fr); gap: 32px; align-items: center; }
.xy-contact .contact-info { border-right: 1px solid #e5dfd8; padding-right: 28px; }
.xy-contact .contact-info h2 { font-size: 23px; line-height: 1.6; font-weight: 500; margin: 0 0 28px; }
.xy-contact .contact-row { display: flex; align-items: center; gap: 16px; font-size: 18px; line-height: 1.8; margin: 12px 0; overflow-wrap: anywhere; }
.xy-contact .contact-row .iconfont { flex: 0 0 24px; font-size: 25px; color: #574654; text-align: center; }
.xy-contact .contact-row a { color: #35312f; }
.xy-contact .contact-row a:hover { color: #a84b00; text-decoration: underline; text-underline-offset: 4px; }
.xy-contact .contact-caption { display: block; font-size: 16px; color: #706974; }
.xy-contact .contact-primary { align-items: flex-start; margin-bottom: 14px; }
.xy-contact .contact-primary a { display: block; font-size: clamp(26px, 2.5vw, 36px); font-weight: 500; line-height: 1.4; color: #a84b00; }
.xy-contact .contact-primary .iconfont { padding-top: 5px; }
.xy-contact .contact-addresses { margin-top: 22px; }
.xy-contact .contact-addresses .contact-row { font-size: 15px; align-items: flex-start; }
.xy-contact .contact-row p { margin: 0; }
.xy-contact .contact-cta { display: inline-flex; gap: 24px; align-items: center; margin-top: 20px; padding: 12px 26px; min-height: 24px; border-radius: 4px; background: #a84b00; color: #fff; font-size: 18px; font-weight: 600; line-height: 1.5; }
.xy-contact .contact-cta:hover { background: #a84b00; text-decoration: underline; text-underline-offset: 4px; }
.xy-contact .contact-note { font-size: 14px; line-height: 1.8; color: #706974; margin-top: 16px; }
.xy-contact .contact-map { position: relative; width: 100%; aspect-ratio: var(--map-ratio); border: 1px solid #d7d2cc; box-sizing: border-box; border-radius: 4px; background: #d8e6ec; overflow: hidden; }
.xy-contact .contact-map-base { display: block; width: 100%; height: 100%; }
.xy-contact .contact-map-title { position: absolute; top: 18px; right: 18px; margin: 0; font-size: 16px; line-height: 1.5; font-weight: 500; color: #35312f; }
.xy-contact .city-pin { position: absolute; width: 44px; height: 44px; padding: 0; margin: 0; border: 0; border-radius: 50%; background: transparent; color: #35312f; transform: translate(-50%, -50%); cursor: pointer; z-index: 1; font-family: inherit; }
.xy-contact .city-dot { position: absolute; width: 12px; height: 12px; left: 50%; top: 50%; transform: translate(-50%, -50%); border: 3px solid #fff; border-radius: 50%; background: #e98b00; box-shadow: 0 0 0 5px rgba(233,139,0,.09); }
.xy-contact .city-pin[aria-pressed=true] .city-dot { box-shadow: 0 0 0 7px rgba(233,139,0,.12); }
.xy-contact .city-pin[aria-pressed=true]::before { content: ''; position: absolute; inset: 3px; border: 1px solid rgba(233,139,0,.45); border-radius: 50%; animation: contact-pulse 3s ease-out infinite; pointer-events: none; }
.xy-contact .city-label { position: absolute; left: 35px; top: 10px; font-size: 17px; font-weight: 600; white-space: nowrap; line-height: 24px; text-shadow: 0 1px 2px #faf8f5; }
.xy-contact .city-hangzhou .city-label { left: auto; right: 36px; top: -1px; }
.xy-contact .city-ningbo .city-label { left: 39px; top: 22px; }
.xy-contact .city-ningbo .city-label::before { content: ''; position: absolute; width: 20px; height: 1px; background: #a89782; left: -23px; top: 3px; transform: rotate(32deg); transform-origin: right center; }
.xy-contact .city-pin:hover .city-label { color: #86510a; }
.xy-contact .city-pin { pointer-events: none; }
.xy-contact .city-dot, .xy-contact .city-label { pointer-events: auto; }
.xy-contact .city-label { min-width: 44px; padding: 10px 0; margin-top: -10px; }
.xy-contact .mainer :is(a,button):focus-visible { outline: 2px solid #574654; outline-offset: 4px; }
@keyframes contact-pulse { 0% { transform: scale(.65); opacity: .7; } 100% { transform: scale(1.7); opacity: 0; } }
@media (max-width: 1000px) {
 .xy-contact .contact-layout { grid-template-columns: minmax(290px,.9fr) minmax(0,1.1fr); gap: 22px; }
 .xy-contact .contact-info { padding-right: 20px; }
 .xy-contact .contact-info h2 { font-size: 20px; }
 .xy-contact .contact-row { font-size: 16px; }
}
@media (max-width: 760px) {
 .xy-contact .banner_page .item { height: 120px; }
 .xy-contact .page_about > .wrap { width: calc(100% - 36px); }
 .xy-contact .page_tit { margin: 12px 0 24px; }
 .xy-contact .page_tit h1 { font-size: 28px; }
 .xy-contact .contact-layout { display: flex; flex-direction: column; align-items: stretch; gap: 28px; }
 .xy-contact .contact-info { padding: 0; border: 0; }
 .xy-contact .contact-info h2 { margin-bottom: 20px; }
 .xy-contact .contact-primary a { font-size: 32px; }
 .xy-contact .contact-map { min-height: 0; aspect-ratio: var(--map-ratio); }
 .xy-contact .contact-map-title { top: 10px; right: 10px; font-size: 13px; }
 .xy-contact .city-label { font-size: 14px; }
 .xy-contact .city-hangzhou .city-label { right: 32px; top: -2px; }
 .xy-contact .city-ningbo .city-label { left: 32px; top: 21px; }
 .xy-contact .city-dot { width: 10px; height: 10px; border-width: 2px; }
}
@media (prefers-reduced-motion: reduce) { .xy-contact .city-pin[aria-pressed=true]::before { animation: none; opacity: .35; } }
