/* Match the source site's desktop header and left contact rail. */
body:has(.source-home-main) .utility-bar { background:#2c5b91; }
body:has(.source-home-main) .utility-bar__inner { display:flex; align-items:center; justify-content:space-between; }
body:has(.source-home-main) .utility-bar__welcome { display:block; flex:0 0 auto; margin:0; color:#fff; font-size:0; line-height:45px; }
body:has(.source-home-main) .utility-bar__welcome::before { content:'科研之路 · 研远相伴'; color:#fff; font-size:14px; letter-spacing:.08em; }
body:has(.source-home-main) .utility-bar__phone::before { content:'◷  9:00am-6:00pm'; color:#fff; }
body:has(.source-home-main) .primary-nav { left:0; right:0; }
body:has(.source-home-main) .primary-nav > .shell { max-width:1200px; margin:0 auto; padding:0 0 0 260px; box-sizing:border-box; }
body:has(.source-home-main) .primary-nav__list { color:#111; }
body:has(.source-home-main) .primary-nav__item > a { color:#111 !important; font-weight:600; }
body:has(.source-home-main) .primary-nav__item:hover > a { color:#25538a !important; background:transparent; }

@media (max-width:900px) {
  body:has(.source-home-main) .utility-bar__inner { justify-content:flex-end; }
  body:has(.source-home-main) .utility-bar__welcome { display:none; }
}
/* Keep the homepage primary navigation identical to the source header. */
body:has(.source-home-main) .primary-nav__item:nth-child(4),
body:has(.source-home-main) .primary-nav__item:nth-child(7) { display:none; }
body:has(.source-home-main) .primary-nav__item:nth-child(n+11) { display:none; }
body:has(.source-home-main) .contact-dock { left:0; right:auto; top:170px; transform:none; gap:1px; box-shadow:0 1px 4px rgb(0 0 0 / 22%); }
body:has(.source-home-main) .contact-dock__item { width:132px; min-height:46px; display:flex; justify-content:flex-start; gap:12px; padding:8px 14px; border:1px dashed #fff; color:#25538a; background:#fff; }
body:has(.source-home-main) .contact-dock__item:hover { color:#fff; background:#25538a; }
body:has(.source-home-main) .contact-dock__icon { width:22px; text-align:center; font-size:18px; }
body:has(.source-home-main) .contact-dock__text { font-size:15px; }
body:has(.source-home-main) .contact-dock__top { color:#fff; background:#25538a; }
/* Compact source rail: keep only official WeChat, phone consultation and top. */
body:has(.source-home-main) .contact-dock { top:0; width:132px; height:211px; display:block; gap:0; box-shadow:none; pointer-events:none; }
body:has(.source-home-main) .contact-dock { z-index:1200; }
body:has(.source-home-main) .contact-dock__panel { left:calc(100% + 10px); right:auto; top:0; z-index:1201; pointer-events:auto; color:#25538a; background:#fff; }
body:has(.source-home-main) .contact-dock__panel img { width:130px; height:130px; object-fit:contain; }
body:has(.source-home-main) .contact-dock__phone-link { display:block; padding:18px 14px; color:#25538a; font-size:18px; font-weight:700; white-space:nowrap; }
body:has(.source-home-main) .contact-dock__phone-link:hover { color:#25538a; background:#f2f7fb; }
body:has(.source-home-main) .contact-dock__phone-panel{top:50%;transform:translateY(-50%);width:auto;min-width:150px;padding:0;border-radius:3px;}
body:has(.source-home-main) .contact-dock__phone-link{display:block;padding:10px 16px;line-height:24px;text-align:center;color:#25538a;font-size:18px;font-weight:700;white-space:nowrap;}
body:has(.source-home-main) .contact-dock__item:focus-visible { outline:2px solid #f6b83f; outline-offset:2px; }
body:has(.source-home-main) .contact-dock__item:hover .contact-dock__panel{display:block!important;}
body:has(.source-home-main) .source-contact-rail--compact { position:absolute; left:0; top:0; width:132px; height:211px; display:block; pointer-events:none; }
body:has(.source-home-main) .source-contact-rail__piece { position:absolute; left:0; width:132px; background-image:url('../source-assets/img/flex_left.png'); background-repeat:no-repeat; background-size:132px auto; }
body:has(.source-home-main) .source-contact-rail__piece--hero { top:0; height:98px; background-position:0 0; }
body:has(.source-home-main) .source-contact-rail__piece--wechat { top:98px; height:37px; background-position:0 -169px; }
body:has(.source-home-main) .source-contact-rail__piece--phone { top:135px; height:36px; background-position:0 -206px; }
body:has(.source-home-main) .source-contact-rail__piece--top { top:171px; height:40px; background-position:0 -280px; }
body:has(.source-home-main) .contact-dock__item { position:absolute; left:0; width:132px; height:37px; min-height:37px; padding:0; border:0; background:transparent; color:transparent; pointer-events:auto; z-index:2; }
body:has(.source-home-main) .contact-dock__item:nth-child(2) { top:98px; }
body:has(.source-home-main) .contact-dock__item:nth-child(3) { top:135px; }
body:has(.source-home-main) .contact-dock__item:nth-child(4) { top:171px; height:40px; }
body:has(.source-home-main) .contact-dock__icon,
body:has(.source-home-main) .contact-dock__text { visibility:hidden; }
body:has(.source-home-main) .contact-dock__item:hover { color:transparent; background:transparent; }

/* Keep the seven visible source-navigation entries on one row when a desktop
   browser is narrowed (for example by docking DevTools). The WAP theme uses
   separate files, so this only affects the desktop template. */
@media (max-width: 1200px) {
  body:has(.source-home-main) .brand-row { padding-inline: 16px; }
  body:has(.source-home-main) .brand-row .brand img { max-width: 185px; max-height: 56px; }
  body:has(.source-home-main) .primary-nav > .shell { padding: 0 10px 0 205px; }
  body:has(.source-home-main) .primary-nav__item > a {
    height: 84px;
    padding: 0 5px;
    font-size: 14px;
    line-height: 1.2;
    white-space: nowrap;
    word-break: keep-all;
  }
}

/* source-header.css supplies the desktop match after responsive.css. Restore
   the compact menu rules here so a desktop UA below the breakpoint does not
   keep a squeezed horizontal navigation. */
@media (max-width: 992px) {
  body:has(.source-home-main) .brand-row { min-height: 72px; padding-inline: 16px; }
  body:has(.source-home-main) .brand-row .brand img { max-width: 160px; max-height: 54px; }
  body:has(.source-home-main) .menu-toggle {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 4px;
    margin-left: auto;
  }
  body:has(.source-home-main) .primary-nav {
    position: fixed;
    inset: 117px 0 0;
    overflow-y: auto;
    visibility: hidden;
    opacity: 0;
    background: var(--yy-blue);
    transform: translateX(100%);
    transition: .25s ease;
  }
  body:has(.source-home-main) .primary-nav.is-open { visibility: visible; opacity: 1; transform: none; }
  body:has(.source-home-main) .primary-nav > .shell { width: 100%; max-width: none; padding: 0; }
  body:has(.source-home-main) .primary-nav__list { min-height: 0; display: block; }
  body:has(.source-home-main) .primary-nav__item { display: block; border-bottom: 1px solid rgb(255 255 255 / 15%); }
  body:has(.source-home-main) .primary-nav__item > a {
    height: 52px;
    justify-content: flex-start;
    padding: 0 56px 0 20px;
    color: #fff !important;
    font-size: 15px;
    white-space: normal;
    word-break: keep-all;
  }
  body:has(.source-home-main) .primary-nav__item:hover > a { color: #fff !important; }
  body:has(.source-home-main) .primary-nav__item:focus-within > a { color: #fff !important; }
  body:has(.source-home-main) .contact-dock {
    right: 0;
    bottom: 0;
    left: 0;
    top: auto;
    width: auto;
    height: auto;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1px;
    pointer-events: auto;
    transform: none;
  }
  body:has(.source-home-main) .source-contact-rail--compact { display: none; }
  body:has(.source-home-main) .contact-dock__item {
    position: relative;
    left: auto;
    top: auto;
    width: auto;
    height: auto;
    min-height: 54px;
    display: grid;
    place-items: center;
    align-content: center;
    justify-content: center;
    gap: 2px;
    padding: 6px;
    color: #fff;
    background: var(--yy-blue);
    pointer-events: auto;
  }
  body:has(.source-home-main) .contact-dock__item:nth-child(2),
  body:has(.source-home-main) .contact-dock__item:nth-child(3),
  body:has(.source-home-main) .contact-dock__item:nth-child(4) { top: auto; height: auto; }
  body:has(.source-home-main) .contact-dock__icon,
  body:has(.source-home-main) .contact-dock__text { visibility: visible; }
  body:has(.source-home-main) .contact-dock__item:hover { color: #fff; background: var(--yy-blue-mid); }
  body:has(.source-home-main) .contact-dock__panel {
    right: 8px;
    bottom: calc(100% + 8px);
    left: auto;
    top: auto;
  }
  body:has(.source-home-main) .contact-dock__phone-panel { top: auto; transform: none; }
}
