/* GEO 悬浮客服：独立类名，不影响后台与前台原有布局 */
.geo-contact-widget { position: fixed; right: 18px; top: 50%; z-index: 9990; width: 98px; transform: translateY(-45%); font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif; }
.geo-contact-widget *, .geo-contact-widget *:before, .geo-contact-widget *:after { box-sizing: border-box; }
.geo-contact-avatar { position: relative; width: 52px; height: 52px; margin: 0 auto 8px; padding: 3px; background: #fff; border: 2px solid #ffb129; border-radius: 50%; box-shadow: 0 4px 16px rgba(0,0,0,.12); }
.geo-contact-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.geo-contact-avatar svg { width: 100%; height: 100%; padding: 7px; fill: none; stroke: #2674e8; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.geo-contact-avatar > span { position: absolute; right: -1px; bottom: 1px; width: 11px; height: 11px; background: #20bf6b; border: 2px solid #fff; border-radius: 50%; }
.geo-contact-actions { overflow: hidden; background: rgba(255,255,255,.98); border: 1px solid #e5eaf2; border-radius: 11px; box-shadow: 0 7px 24px rgba(30,55,90,.14); }
.geo-contact-item { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; min-height: 80px; margin: 0; padding: 9px 4px; background: transparent; border: 0; border-bottom: 1px solid #edf0f4; color: #454b56; font: inherit; font-size: 11px; line-height: 1.4; text-align: center; text-decoration: none; cursor: pointer; transition: background .2s, color .2s; }
.geo-contact-item:last-child { border-bottom: 0; }
.geo-contact-item:hover, .geo-contact-item:focus, .geo-contact-wechat[aria-expanded="true"] { background: #edf5ff; color: #176fd4; outline: none; }
.geo-contact-item svg { width: 23px; height: 23px; margin-bottom: 5px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }
.geo-contact-item small { display: block; max-width: 100%; margin-top: 3px; color: #176fd4; font-size: 9px; line-height: 1.35; letter-spacing: 0; overflow-wrap: anywhere; word-break: break-all; }
.geo-contact-qr { position: absolute; right: 110px; top: 50%; display: none; width: 190px; padding: 14px; transform: translateY(-50%); background: #fff; border: 1px solid #e4e9f0; border-radius: 10px; box-shadow: 0 8px 30px rgba(20,45,80,.17); text-align: center; }
.geo-contact-qr:before { position: absolute; right: -7px; top: 50%; width: 12px; height: 12px; margin-top: -6px; transform: rotate(45deg); background: #fff; border-top: 1px solid #e4e9f0; border-right: 1px solid #e4e9f0; content: ""; }
.geo-contact-qr strong { display: block; margin-bottom: 10px; color: #30343b; font-size: 14px; }
.geo-contact-qr img { display: block; width: 158px; height: 158px; object-fit: contain; }
.geo-contact-qr small { display: block; margin-top: 8px; color: #9a9fa8; font-size: 10px; }
.geo-contact-widget:hover .geo-contact-qr, .geo-contact-widget.is-qr-open .geo-contact-qr { display: block; }
@media (min-width: 1600px) { .geo-contact-widget { right: 28px; } }
@media (max-width: 768px) {
    .geo-contact-widget { right: 10px; width: 82px; }
    .geo-contact-avatar { width: 44px; height: 44px; }
    .geo-contact-item { min-height: 72px; font-size: 10px; }
    .geo-contact-item svg { width: 20px; height: 20px; }
    .geo-contact-qr { right: 94px; }
}
@media (max-width: 640px) {
    .geo-contact-widget { top: auto; right: 0; bottom: 0; left: 0; width: 100%; transform: none; }
    .geo-contact-avatar { display: none; }
    .geo-contact-actions { display: flex; min-height: 72px; border: 0; border-top: 1px solid #e2e7ee; border-radius: 0; box-shadow: 0 -4px 18px rgba(25,45,70,.10); }
    .geo-contact-item { min-width: 0; min-height: 72px; padding: 7px 5px; border-right: 1px solid #edf0f4; border-bottom: 0; flex: 1; font-size: 11px; }
    .geo-contact-item:last-child { border-right: 0; }
    .geo-contact-item svg { margin-bottom: 3px; }
    .geo-contact-qr { top: auto; right: 50%; bottom: 84px; width: 180px; transform: translateX(50%); }
    .geo-contact-qr:before { display: none; }
    .geo-contact-qr img { width: 150px; height: 150px; }
    .geo-contact-widget:hover .geo-contact-qr { display: none; }
    .geo-contact-widget.is-qr-open .geo-contact-qr { display: block; }
    body { padding-bottom: 72px; }
}
@media (prefers-reduced-motion: reduce) { .geo-contact-item { transition: none; } }
