@charset "UTF-8";
/* ==========================================================================
   门户公共 UI（所有 portalweb 页面共用）
   文件：static/pattern/css/portal-ui.css
   引入：include.html :: bootstrap-portalweb-js（每个门户页都会加载）

   这里放"跨页面共享"的部分：
   1) 设计令牌（品牌色 / 中性色 / 圆角 / 阴影 / 动效）
   2) 基础排版（body、a、选区、滚动条）
   3) 顶部登录条与右侧入口按钮（include.html :: portalweb-top-bg 片段）
   4) 吸顶导航 .site-header（首页与各二级页共用同一套头部）
   5) 回到顶部按钮（由 modern-portal.js 动态创建）
   6) 大屏容器宽度（原 Bootstrap 固定 1104px，在 1920 屏上左右各空 408px）

   加载顺序：本文件在 style.css 之后、页面专属样式（modern-portal.css /
   portal-page.css）之前，页面专属规则会覆盖这里的同名声明。
   ========================================================================== */

/* ==========================================================================
   1. 设计令牌
   ========================================================================== */
:root {
    /* 品牌蓝 */
    --brand-900: #0a3355;
    --brand-800: #0f4670;
    --brand-700: #12557f;
    --brand-600: #1a6fa0;
    --brand-500: #2b87bd;
    --brand-100: #e3f0f9;
    --brand-050: #f2f8fc;

    /* 强调色（仅用于 NEW / 置顶，全站唯一红） */
    --accent: #c0392b;
    --accent-050: #fbedeb;

    /* 中性色 */
    --ink-1: #1b2733;
    --ink-2: #4d5f70;
    --ink-3: #8a99a8;
    --line: #e4ebf2;
    --line-strong: #d3dee8;
    --surface: #ffffff;
    --surface-2: #f7fafd;

    /* 圆角 */
    --r-xs: 3px;
    --r-sm: 6px;
    --r-md: 10px;

    /* 阴影 */
    --sh-1: 0 1px 2px rgba(12, 44, 72, .06), 0 1px 3px rgba(12, 44, 72, .08);
    --sh-2: 0 4px 14px rgba(12, 44, 72, .09), 0 2px 6px rgba(12, 44, 72, .05);
    --sh-3: 0 14px 32px rgba(12, 44, 72, .14);

    /* 动效 */
    --ease: cubic-bezier(.22, .61, .36, 1);
    --t-fast: .16s var(--ease);
    --t-base: .26s var(--ease);

    /* 兼容旧变量名（其他样式片段可能引用） */
    --primary-color: var(--brand-700);
    --secondary-color: var(--brand-600);
    --text-primary: var(--ink-1);
    --text-secondary: var(--ink-2);
    --border-color: var(--line);
    --transition: var(--t-base);
}

/* ==========================================================================
   2. 基础排版
   ========================================================================== */
body {
    font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
                 "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: var(--ink-1);
    background: var(--surface-2);
    -webkit-text-size-adjust: 100%;
}

a {
    color: var(--ink-1);
    text-decoration: none;
    transition: color var(--t-fast);
}

a:hover,
a:focus {
    color: var(--brand-600);
    text-decoration: none;
}

/* 只给键盘操作显示焦点框，鼠标点击不显示 */
:focus-visible {
    outline: 2px solid var(--brand-500);
    outline-offset: 2px;
}

::selection {
    background: var(--brand-700);
    color: #fff;
}

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: #c6d3de;
    border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
    background: #a9bccd;
}

/* ==========================================================================
   3. 顶部登录条
   ========================================================================== */
.top_bg {
    height: 48px;
    line-height: 48px;
    font-size: 13px;
    color: rgba(255, 255, 255, .9);
    /* 渐变方向与按钮位置相反：左亮右暗，让右侧入口坐在最深的底色上。
       原先是左暗右亮，按钮恰好压在渐变最亮的一端，半透明白底被背景吃掉了 */
    background: linear-gradient(90deg, var(--brand-700) 0%, var(--brand-800) 52%, var(--brand-900) 100%);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.top_bg .container {
    position: relative;
}

/* Bootstrap .row 的 ±15px 负边距会让顶部条内容比下面的 logo 左移 15px，
   这里归零，让欢迎语与 logo、右侧按钮与导航右边缘对齐 */
.top_bg .row {
    margin-left: 0;
    margin-right: 0;
}

/* 左侧欢迎语 */
/* 左侧欢迎语：图标 + 弱提示 + 平台名 + 日期。
   原来是 19×19 位图 HI 气泡 + 一行同字重同亮度的长句，整条只有一个层级，
   在深色底上显得糊且单调；拆成"弱 / 强 / 弱"三段后有了视线落点。 */
.top_bg .top-bg-welcome {
    float: left;
    display: flex;
    align-items: center;
    gap: 8px;
    height: 48px;
}

.top_bg .top-bg-icon {
    flex: none;
    width: 15px;
    height: 15px;
    color: rgba(255, 255, 255, .72);
}

.top_bg .top-bg-greet {
    font-size: 12.5px;
    color: rgba(255, 255, 255, .6);
    letter-spacing: .2px;
}

.top_bg .top-bg-brand {
    font-size: 13.5px;
    font-weight: 500;
    color: #fff;
    letter-spacing: .2px;
}

/* 细竖线分隔：比文字更轻，只起到分组作用 */
.top_bg .top-bg-sep {
    flex: none;
    width: 1px;
    height: 11px;
    margin: 0 4px;
    background: rgba(255, 255, 255, .28);
}

.top_bg .top-bg-date {
    font-size: 12.5px;
    color: rgba(255, 255, 255, .58);
    font-variant-numeric: tabular-nums;
}

/* ==========================================================================
   4. 右侧入口按钮
   原先是 13px 纯文字 + 竖线分隔，在深色条上对比度低、没有可点暗示。
   改成胶囊按钮：半透明白底 + 描边，hover 提亮；"专家聘用"作为唯一的
   实心按钮承担引导注册的视觉重心。
   ========================================================================== */
.top_bg .top-entries {
    float: right;
    display: flex;
    align-items: center;
    gap: 10px;
    height: 48px;
}

.top_bg .top-entry {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 30px;
    padding: 0 15px;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: .3px;
    color: #fff;
    white-space: nowrap;
    text-decoration: none;
    background: rgba(255, 255, 255, .14);
    border: 1px solid rgba(255, 255, 255, .42);
    border-radius: 999px;
    /* 内顶高光，让按钮有"凸起"的质感，而不是一块平色 */
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12);
    transition: background .18s ease, border-color .18s ease, color .18s ease,
                transform .18s ease, box-shadow .18s ease;
}

/* 图标：随文字同色，尺寸固定，colSvg 不参与压缩 */
.top_bg .top-entry > svg {
    flex: none;
    width: 14px;
    height: 14px;
    opacity: .95;
}

/* 悬停只提亮，不反白——反白会和右侧主按钮撞成同一个视觉重量 */
.top_bg .top-entry:hover,
.top_bg .top-entry:focus-visible {
    color: #fff;
    background: rgba(255, 255, 255, .28);
    border-color: rgba(255, 255, 255, .85);
    transform: translateY(-1px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 3px 10px rgba(0, 0, 0, .22);
    outline: none;
}

/* 唯一实心按钮：专家聘用 */
.top_bg .top-entry--primary {
    font-weight: 700;
    color: var(--brand-900);
    background: #fff;
    border-color: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .28);
}

.top_bg .top-entry--primary:hover,
.top_bg .top-entry--primary:focus-visible {
    color: #fff;
    background: var(--brand-500);
    border-color: var(--brand-500);
    box-shadow: 0 3px 12px rgba(0, 0, 0, .3);
}

/* 平板档：按钮收窄一档，保证 768~991px 不挤压左title、不换行 */
@media (max-width: 991px) {
    /* 768~991px 之间左侧文案加上日期会和右侧按钮相撞（实测 820px 重叠 120px），
       保留品牌名、去掉日期与分隔线 */
    .top_bg .top-bg-sep,
    .top_bg .top-bg-date {
        display: none;
    }

    .top_bg .top-entries {
        gap: 8px;
    }

    .top_bg .top-entry {
        height: 28px;
        padding: 0 11px;
        font-size: 12.5px;
        letter-spacing: 0;
    }

    .top_bg .top-entry > svg {
        width: 13px;
        height: 13px;
    }
}

@media (max-width: 768px) {
    /* style.css 在 768px 以下直接 display:none 顶部条（只留 logo 导航）。
       入口按钮是供应商/专家/代理登录的唯一入口，窄屏更需要保留，
       这里统一恢复显示；欢迎语在窄屏没有空间，隐藏。
       断点用 768 而不是 767：style.css 的隐藏是 max-width:768px，
       写成 767 会漏掉正好 768px 的平板竖屏。 */
    .top_bg {
        display: block;
        height: auto;
        padding: 10px 0;
        line-height: normal;
    }

    /* 窄屏只留入口按钮，欢迎语整块让位（否则按钮被挤成单列或换行溢出） */
    .top_bg .top-bg-welcome {
        display: none;
    }

    .top_bg .top-entries {
        float: none;
        height: auto;
        /* 窄屏 .container 左右留白被压成 0，按钮会贴屏幕边缘，这里补回来 */
        padding: 0 12px;
        flex-wrap: wrap;
        justify-content: center;
        gap: 6px;
    }

    .top_bg .top-entry {
        height: 27px;
        padding: 0 10px;
        font-size: 12px;
        gap: 5px;
    }
}

/* 窄屏按 2×2 排布：自然换行会出现"3 个在上、白色主按钮单独掉一行"的失衡布局 */
@media (max-width: 560px) {
    .top_bg .top-entry {
        flex: 0 0 calc(50% - 3px);
        justify-content: center;
        padding: 0 8px;
    }
}

/* ==========================================================================
   5. 吸顶导航（首页与二级页共用）
   注意：.site-header 必须是 body 的直接子级，sticky 才有滚动空间
   ========================================================================== */
.site-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    background: rgba(255, 255, 255, .97);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--line);
    transition: box-shadow var(--t-base);
}

.site-header.is-stuck {
    box-shadow: var(--sh-2);
}

/* Bootstrap .row 的 ±15px 负边距会让内容超出容器，header 内归零 */
.site-header .row {
    margin-left: 0;
    margin-right: 0;
}

.log_nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 14px 0;
    transition: padding var(--t-base);
}

.site-header.is-stuck .log_nav {
    padding: 8px 0;
}

/* Logo */
.log_nav .log-brand {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

.log_nav .log-brand img {
    display: block;
    max-height: 56px;
    width: auto;
    transition: max-height var(--t-base);
}

.site-header.is-stuck .log_nav .log-brand img {
    max-height: 42px;
}

/* 导航容器：解除 style.css 里的绝对定位与固定宽度 */
.log_nav .nav_right {
    flex: 1 1 auto;
    display: flex;
    justify-content: flex-end;
    min-width: 0;
}

.log_nav .nav_right .nav {
    position: static;
    display: flex;
    align-items: center;
    gap: 2px;
    width: auto;
    height: auto;
    margin: 0;
    float: none;
}

.log_nav .nav_right .nav li {
    display: block;
    float: none;
    height: auto;
    margin: 0;
    line-height: normal;
    background: none !important;
}

.log_nav .nav_right .nav li a {
    position: relative;
    display: block;
    float: none;
    height: auto;
    padding: 0 15px;
    font-size: 15px;
    font-weight: 500;
    line-height: 38px;
    color: var(--ink-2);
    border-radius: var(--r-sm);
    transition: color var(--t-fast), background var(--t-fast);
}

/* 解除 style.css 给 span 设的分隔竖线 */
.log_nav .nav_right .nav li a span {
    display: inline;
    height: auto;
    margin: 0;
    padding: 0;
    line-height: inherit;
    vertical-align: baseline;
    border: 0;
}

.log_nav .nav_right .nav li.now a {
    font-weight: 600;
    color: var(--brand-700);
    background: var(--brand-050);
}

.log_nav .nav_right .nav li:hover a {
    color: var(--brand-700);
    background: var(--brand-050);
}

/* 下划线指示器 */
.log_nav .nav_right .nav li a::after {
    content: '';
    position: absolute;
    left: 15px;
    right: 15px;
    bottom: 4px;
    height: 2px;
    border-radius: 1px;
    background: var(--brand-700);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform var(--t-base);
}

.log_nav .nav_right .nav li.now a::after,
.log_nav .nav_right .nav li:hover a::after {
    transform: scaleX(1);
}

/* 窄屏：logo 与导航上下排列，导航可横向滚动 */
@media (max-width: 767px) {
    .log_nav {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
        padding: 12px 0;
    }

    .log_nav .log-brand img {
        max-height: 44px;
    }

    .log_nav .nav_right {
        width: 100%;
        justify-content: flex-start;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .log_nav .nav_right::-webkit-scrollbar {
        display: none;
    }

    .log_nav .nav_right .nav {
        flex-wrap: nowrap;
    }

    .log_nav .nav_right .nav li a {
        padding: 0 10px;
        font-size: 14px;
        line-height: 34px;
        white-space: nowrap;
    }
}

/* ==========================================================================
   6. 回到顶部
   ========================================================================== */
.back-to-top {
    position: fixed;
    right: 28px;
    bottom: 120px;
    z-index: 9999;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    font-weight: 600;
    color: #fff;
    background: var(--brand-700);
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: 50%;
    box-shadow: var(--sh-2);
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px);
    transition: opacity var(--t-base), transform var(--t-base), visibility var(--t-base), background var(--t-fast);
    outline: none;
    -webkit-tap-highlight-color: transparent;
}

.back-to-top.show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.back-to-top:hover {
    background: var(--brand-600);
    box-shadow: var(--sh-3);
}

@media (max-width: 767px) {
    .back-to-top {
        right: 16px;
        bottom: 90px;
        width: 40px;
        height: 40px;
    }
}

/* ==========================================================================
   7. 大屏容器宽度
   Bootstrap 在 ≥1200px 固定 1104px，1920 屏上两侧各浪费 408px。
   按屏幕宽度分两档放宽，避免一次性拉伸导致内容行长过长。
   ========================================================================== */
@media (min-width: 1500px) {
    .container {
        width: 1240px;
    }
}

@media (min-width: 1800px) {
    .container {
        width: 1400px;
    }
}

/* ==========================================================================
   8. 打印（隐藏纯装饰区域）
   ========================================================================== */
@media print {
    .top_bg,
    .site-header,
    .back-to-top,
    .copy_bg {
        display: none !important;
    }

    body {
        background: #fff;
    }
}
