/* ==========================================================================
   西安弘雅技工学校 官网 — 基础样式
   主色沿用参考模板蓝 #075FB9；断点：≥992 桌面 / 768–991 平板 / <768 手机
   ========================================================================== */

:root {
    --brand: #075FB9;
    --brand-dark: #054C93;
    --brand-deep: #063B72;
    --brand-tint: #E8F1FB;
    --ink: #333333;
    --ink-light: #6B7280;
    --line: #E4E8EE;

    /* 门户版式专用色：深蓝头部/导航、橙色日期点缀 */
    --portal-blue: #1B5FA8;
    --portal-blue-dark: #0F3F78;
    --portal-blue-light: #3E8FD0;
    --portal-tint: #EEF4FB;
    --accent: #E8731A;
}

/* 让 Bootstrap 的 btn-primary 等组件跟随品牌色 */
:root {
    --bs-primary: #075FB9;
    --bs-primary-rgb: 7, 95, 185;
}

.btn-primary {
    --bs-btn-bg: var(--brand);
    --bs-btn-border-color: var(--brand);
    --bs-btn-hover-bg: var(--brand-dark);
    --bs-btn-hover-border-color: var(--brand-dark);
    --bs-btn-active-bg: var(--brand-dark);
    --bs-btn-active-border-color: var(--brand-dark);
}

html {
    position: relative;
    min-height: 100%;
}

body {
    font-family: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", Arial, sans-serif;
    font-size: 16px;
    line-height: 1.75;
    color: var(--ink);
    margin: 0;
}

a {
    color: var(--brand);
    text-decoration: none;
}

a:hover {
    color: var(--brand-dark);
}

img {
    max-width: 100%;
}

/* ---------- 顶部信息条：深藏蓝细条，右侧放登录/注册与站内搜索 ---------- */
.portal-topbar {
    background: var(--portal-blue-dark);
    color: rgba(255, 255, 255, .85);
    font-size: 13px;
}

.portal-topbar .inner {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 12px;
    height: 36px;
}

.portal-topbar a {
    color: rgba(255, 255, 255, .85);
}

.portal-topbar a:hover {
    color: #fff;
}

.portal-topbar .sep {
    color: rgba(255, 255, 255, .32);
}

.portal-search {
    display: flex;
    align-items: stretch;
    height: 26px;
    background: #fff;
    border-radius: 2px;
    overflow: hidden;
}

.portal-search input {
    width: 150px;
    border: 0;
    outline: 0;
    padding: 0 10px;
    font-size: 13px;
    color: var(--ink);
}

.portal-search button {
    border: 0;
    /* 图标按钮：固定宽度并居中，避免文字按钮在窄屏换行导致按钮高度跳变 */
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    padding: 0;
    background: var(--brand);
    color: #fff;
    cursor: pointer;
}

/* 放大镜图标：描边跟随按钮文字色，尺寸固定 */
.portal-search button svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* 手机端紧凑搜索：与导航折叠按钮同一行，宽度自适应但不超上限 */
.portal-search-compact {
    flex: 1 1 auto;
    max-width: 240px;
    height: 30px;
    margin-left: 12px;
}

.portal-search-compact input {
    width: 100%;
    min-width: 0;
}

/* ---------- 主头部：深蓝底 + 城市剪影纹理，居中校徽与校名 ---------- */
.portal-brand {
    position: relative;
    padding: 24px 0;
    text-align: center;
    background-color: var(--portal-blue);
    /* 剪影用内联 SVG 生成（低对比度建筑轮廓），不依赖外部图片资源 */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 150' preserveAspectRatio='none'%3E%3Cg fill='%23ffffff' opacity='0.1'%3E%3Crect x='0' y='96' width='60' height='54'/%3E%3Crect x='64' y='72' width='46' height='78'/%3E%3Crect x='114' y='104' width='70' height='46'/%3E%3Crect x='188' y='56' width='40' height='94'/%3E%3Crect x='232' y='88' width='58' height='62'/%3E%3Crect x='294' y='40' width='34' height='110'/%3E%3Crect x='332' y='76' width='64' height='74'/%3E%3Crect x='400' y='98' width='52' height='52'/%3E%3Crect x='456' y='64' width='44' height='86'/%3E%3Crect x='504' y='30' width='30' height='120'/%3E%3Crect x='538' y='84' width='76' height='66'/%3E%3Crect x='618' y='66' width='42' height='84'/%3E%3Crect x='664' y='100' width='58' height='50'/%3E%3Crect x='726' y='52' width='36' height='98'/%3E%3Crect x='766' y='80' width='68' height='70'/%3E%3Crect x='838' y='94' width='50' height='56'/%3E%3Crect x='892' y='58' width='38' height='92'/%3E%3Crect x='934' y='74' width='62' height='76'/%3E%3Crect x='1000' y='104' width='56' height='46'/%3E%3Crect x='1060' y='48' width='34' height='102'/%3E%3Crect x='1098' y='86' width='70' height='64'/%3E%3Crect x='1172' y='68' width='44' height='82'/%3E%3Crect x='1220' y='98' width='60' height='52'/%3E%3Crect x='1284' y='60' width='36' height='90'/%3E%3Crect x='1324' y='82' width='58' height='68'/%3E%3Crect x='1386' y='100' width='54' height='50'/%3E%3C/g%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center bottom;
    background-size: 100% 100%;
}

/* 校徽与校名合一的白色版 logo，深蓝底上直接使用 */
.portal-brand .brand-logo {
    height: 72px;
    width: auto;
}

/* ---------- 主导航：深蓝横条 + 白色文字 + 当前栏目浅蓝高亮块 ---------- */
.site-nav {
    padding: 0;
    background: var(--portal-blue);
    border-top: 1px solid rgba(255, 255, 255, .14);
}

/* 导航项整体居中，贴近门户站版式（手机端折叠菜单同样适用） */
.site-nav .navbar-nav {
    margin: 0 auto;
}

/* 桌面端：导航项均分整行宽度，与参考站的满宽导航一致
   （用媒体查询限定 ≥992px，避免影响手机端折叠后的竖排菜单） */
@media (min-width: 992px) {
    .site-nav .navbar-collapse {
        flex-grow: 1;
    }

    .site-nav .navbar-nav {
        width: 100%;
        margin: 0;
    }

    .site-nav .nav-item {
        flex: 1 1 0;
    }

    .site-nav .nav-link {
        display: block;
        text-align: center;
    }
}

.site-nav .nav-link {
    position: relative;
    padding: 13px 22px;
    color: #fff;
    font-size: 16px;
    white-space: nowrap;
}

.site-nav .nav-link:hover {
    color: #fff;
    background: rgba(62, 143, 208, .55);
}

/* 当前栏目：浅蓝高亮块 + 顶部白色强调线 */
.site-nav .nav-link.active {
    color: #fff;
    background: var(--portal-blue-light);
}

.site-nav .nav-link.active::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 3px;
    background: #fff;
}

.site-nav .navbar-toggler {
    border-color: rgba(255, 255, 255, .5);
    margin: 6px 0;
}

.site-nav .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.9%29' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

/* ---------- 通用区块 ---------- */
.section {
    padding: 48px 0;
}

.section-tint {
    background: #F7F9FC;
}

/* ---------- 首页区块滚动淡入（由 site.js 触发；脚本未执行时不生效，内容始终可见） ---------- */
.reveal-ready .reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity .7s ease, transform .7s ease;
}

.reveal-ready .reveal.is-visible {
    opacity: 1;
    transform: none;
}

.section-title {
    text-align: center;
    margin-bottom: 32px;
}

.section-title h2 {
    font-size: 28px;
    font-weight: 700;
    margin: 0 0 6px;
}

.section-title p {
    color: var(--ink-light);
    margin: 0;
    font-size: 14px;
    letter-spacing: 1px;
    text-transform: uppercase;
}

/* 区块标题左侧的品牌色短横 */
.section-title h2::after {
    content: "";
    display: block;
    width: 48px;
    height: 3px;
    background: var(--brand);
    margin: 12px auto 0;
    border-radius: 2px;
}

/* ---------- 快捷入口 ---------- */
.quick-entry {
    display: block;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 24px 16px;
    text-align: center;
    height: 100%;
    transition: .2s;
}

.quick-entry:hover {
    border-color: var(--brand);
    box-shadow: 0 6px 18px rgba(7, 95, 185, .12);
    transform: translateY(-2px);
}

.quick-entry .title {
    font-size: 18px;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 4px;
}

.quick-entry .desc {
    font-size: 13px;
    color: var(--ink-light);
}

/* ---------- 卡片 ---------- */
.card-soft {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 6px;
    overflow: hidden;
    transition: .2s;
}

/* 等高档位：仅当卡片是所在栅格列的唯一内容时才撑满列高。
   若列内还有其它内容（面包屑、正文、或同列堆叠多张卡片），
   百分比高度会按整列高度解析，导致卡片被拉高并向下溢出（盖住页脚等），
   因此这些场景保持内容高度。
   注意：Bootstrap 列的类名是 col-6 / col-lg-4 这类，并不存在单独的 .col 类，
   故这里用 [class*="col-"] 匹配列容器 */
[class*="col-"] > .card-soft:only-child {
    height: 100%;
}

.card-soft:hover {
    box-shadow: 0 8px 22px rgba(0, 0, 0, .08);
}

.card-soft .card-body {
    padding: 16px;
}

.card-soft h3 {
    font-size: 17px;
    font-weight: 700;
    margin: 0 0 8px;
}

.card-soft p {
    font-size: 14px;
    color: var(--ink-light);
    margin: 0;
}

.aspect-16x9 {
    aspect-ratio: 16 / 9;
    width: 100%;
    object-fit: cover;
    display: block;
}

.aspect-4x3 {
    aspect-ratio: 4 / 3;
    width: 100%;
    object-fit: cover;
    display: block;
}

/* ---------- 新闻列表 ---------- */
.news-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.news-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px dashed var(--line);
}

.news-list li:last-child {
    border-bottom: 0;
}

.news-list .title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.news-list .date {
    color: var(--ink-light);
    font-size: 14px;
    flex: none;
}

/* ---------- 轮播：小屏降低高度 ---------- */
.hero-carousel {
    height: 420px;
    overflow: hidden;
}

.hero-carousel .carousel-item img {
    height: 420px;
    width: 100%;
    object-fit: cover;
}

@media (max-width: 767.98px) {
    .hero-carousel,
    .hero-carousel .carousel-item img {
        height: 190px;
    }
}

/* ---------- 页脚：深蓝门户风格 ---------- */
.site-footer {
    background: var(--portal-blue-dark);
    color: rgba(255, 255, 255, .78);
    font-size: 14px;
    padding: 36px 0 0;
    margin-top: 32px;
}

.site-footer h4 {
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    margin-bottom: 14px;
}

.site-footer a {
    color: rgba(255, 255, 255, .78);
}

.site-footer a:hover {
    color: #fff;
}

/* 页脚快捷链接行 */
.site-footer .quick-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 6px 22px;
    margin-top: 28px;
    padding: 12px 0;
    border-top: 1px solid rgba(255, 255, 255, .16);
    border-bottom: 1px solid rgba(255, 255, 255, .16);
    font-size: 13px;
}

.site-footer .quick-links .label {
    color: rgba(255, 255, 255, .55);
}

.site-footer .copyright {
    padding: 14px 0 18px;
    font-size: 13px;
    text-align: center;
    color: rgba(255, 255, 255, .6);
}

/* 页脚微信公众号栏：手机 / 平板端纵向排布、靠右上对齐，填满学校信息栏右侧的空白；
   桌面端（≥992px）恢复为「二维码 + 扫码关注」并排一行 */
.site-footer .foot-qr {
    flex-direction: column;
    align-items: flex-end;
    justify-content: flex-start;
}

.site-footer .foot-qr img {
    width: 100%;
    height: auto;
    max-width: 80px;
}

@media (min-width: 992px) {
    .site-footer .foot-qr {
        flex-direction: row;
        align-items: center;
    }

    .site-footer .foot-qr img {
        max-width: 96px;
    }
}

/* ---------- 移动端底部固定操作条 ---------- */
.mobile-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1030;
    display: flex;
    background: #fff;
    border-top: 1px solid var(--line);
    box-shadow: 0 -2px 10px rgba(0, 0, 0, .06);
}

.mobile-bar a {
    flex: 1;
    text-align: center;
    padding: 12px 0;
    font-size: 16px;
    font-weight: 700;
}

.mobile-bar a.primary {
    background: var(--brand);
    color: #fff;
}

/* 底部固定条占位，避免遮住页脚内容（仅手机端显示固定条，故断点与 d-md-none 保持一致） */
@media (max-width: 767.98px) {
    body {
        padding-bottom: 52px;
    }
}

/* ==========================================================================
   内页样式（M2）：页头 / 富文本 / 列表 / 表单 / 图片墙
   ========================================================================== */

/* ---------- 内页横幅 ---------- */
.page-header {
    position: relative;
    background-size: cover;
    background-position: center;
    padding: 64px 0 28px;
    color: #fff;
}

.page-header-mask {
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, rgba(6, 59, 114, .86), rgba(7, 95, 185, .72));
}

.page-header-inner {
    position: relative;
    z-index: 1;
}

.page-header h1,
.page-header-title {
    font-size: 30px;
    font-weight: 700;
    margin: 0 0 4px;
}

.page-header .subtitle {
    font-size: 14px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .72);
    margin: 0 0 12px;
}

/* ---------- 内页正文区面包屑（随正文主区移到左侧，左对齐） ---------- */
.crumb-bar {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: center;
    gap: 2px;
    margin-bottom: 16px;
    font-size: 14px;
    color: var(--ink-light);
}

.crumb-bar a {
    color: var(--ink-light);
}

.crumb-bar a:hover {
    color: var(--brand);
}

.crumb-bar .sep {
    margin: 0 8px;
    color: var(--line);
}

.crumb-bar .current {
    color: var(--brand);
}

@media (max-width: 767.98px) {
    .page-header {
        padding: 40px 0 20px;
    }

    .page-header h1,
    .page-header-title {
        font-size: 24px;
    }
}

/* ---------- 首页轮播文案 ---------- */
.hero-carousel .carousel-caption {
    left: 0;
    right: 0;
    bottom: 0;
    padding: 48px 24px 24px;
    text-align: left;
    background: linear-gradient(0deg, rgba(6, 59, 114, .78), rgba(6, 59, 114, 0));
}

.hero-carousel .carousel-caption h2 {
    font-size: 26px;
    font-weight: 700;
    margin: 0 0 4px;
}

.hero-carousel .carousel-caption p {
    margin: 0;
    font-size: 15px;
    color: rgba(255, 255, 255, .85);
}

/* ---------- 富文本正文 ---------- */
.richtext {
    font-size: 16px;
    line-height: 1.9;
    color: var(--ink);
    /* 中文正文两端对齐：不这么做时每行右边缘参差不齐，观感像是"没排满" */
    text-align: justify;
    text-justify: inter-ideograph;
}

.richtext h2 {
    font-size: 22px;
    font-weight: 700;
    margin: 28px 0 12px;
    padding-left: 12px;
    border-left: 4px solid var(--brand);
}

.richtext h2:first-child,
.richtext h3:first-child {
    margin-top: 0;
}

.richtext h3 {
    font-size: 18px;
    font-weight: 700;
    margin: 22px 0 10px;
}

.richtext p {
    margin: 0 0 1em;
    /* 中文段落首行缩进两格，符合中文阅读惯例 */
    text-indent: 2em;
}

.richtext ul,
.richtext ol {
    padding-left: 22px;
    margin: 0 0 12px;
}

.richtext li {
    margin-bottom: 6px;
}

.richtext img {
    max-width: 100%;
    height: auto;
    border-radius: 4px;
    margin: 8px 0;
}

/* 段落里只有一张图时让它独立成块并居中。
   图片转为块级后不再参与行盒，上面 .richtext p 的 text-indent 也就不会把图片推偏 */
.richtext p > img:only-child {
    display: block;
    margin: 18px auto;
}

.richtext table {
    width: 100%;
    border-collapse: collapse;
    margin: 12px 0;
}

.richtext table th,
.richtext table td {
    border: 1px solid var(--line);
    padding: 8px 12px;
}

.richtext table th {
    background: var(--brand-tint);
}

/* ---------- 专业参数表 ---------- */
.spec-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 8px;
    font-size: 15px;
}

.spec-table th,
.spec-table td {
    border-bottom: 1px solid var(--line);
    padding: 10px 12px;
    text-align: left;
}

.spec-table th {
    width: 110px;
    font-weight: 400;
    color: var(--ink-light);
    background: #FAFBFD;
}

.spec-table tr:last-child th,
.spec-table tr:last-child td {
    border-bottom: 0;
}

/* ---------- 专业卡片补充信息 ---------- */
.program-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 8px;
    font-size: 13px;
}

.program-meta span {
    background: var(--brand-tint);
    color: var(--brand);
    padding: 1px 8px;
    border-radius: 10px;
}

/* ---------- 分类筛选 ---------- */
.filter-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.filter-tabs a {
    padding: 6px 16px;
    border: 1px solid var(--line);
    border-radius: 20px;
    font-size: 14px;
    color: var(--ink-light);
    background: #fff;
}

.filter-tabs a:hover {
    border-color: var(--brand);
    color: var(--brand);
}

.filter-tabs a.active {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
}

/* ---------- 图文列表 ---------- */
.article-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.article-list li {
    display: flex;
    gap: 16px;
    padding: 18px 0;
    border-bottom: 1px dashed var(--line);
}

.article-list li:last-child {
    border-bottom: 0;
}

.article-list .thumb {
    flex: none;
    width: 180px;
}

.article-list .thumb img {
    width: 180px;
    height: 110px;
    object-fit: cover;
    border-radius: 4px;
    display: block;
}

.article-list .body {
    flex: 1;
    min-width: 0;
}

.article-list h3 {
    font-size: 17px;
    font-weight: 700;
    margin: 0 0 6px;
}

.article-list .summary {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 14px;
    color: var(--ink-light);
    margin: 0 0 8px;
}

.article-list .meta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    font-size: 13px;
    color: var(--ink-light);
}

@media (max-width: 575.98px) {
    .article-list li {
        flex-direction: column;
        gap: 10px;
    }

    .article-list .thumb,
    .article-list .thumb img {
        width: 100%;
        height: 170px;
    }
}

.badge-top {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 3px;
    background: #E4572E;
    color: #fff;
    font-size: 12px;
    font-weight: 400;
    vertical-align: middle;
}

/* ---------- 文章详情 ---------- */
.article-detail h1 {
    font-size: 24px;
    font-weight: 700;
    line-height: 1.5;
    margin: 0 0 12px;
}

.article-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    font-size: 13px;
    color: var(--ink-light);
}

.prev-next {
    margin-top: 24px;
    padding-top: 16px;
    border-top: 1px solid var(--line);
    font-size: 14px;
}

.prev-next .item {
    padding: 4px 0;
}

.prev-next .label {
    color: var(--ink-light);
}

/* ---------- 侧栏链接列表 ---------- */
.link-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.link-list li {
    padding: 7px 0;
    border-bottom: 1px dashed var(--line);
    font-size: 14px;
}

.link-list li:last-child {
    border-bottom: 0;
}

.link-list a {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---------- 须知与步骤列表 ---------- */
.note-list,
.step-list {
    margin: 0;
    padding-left: 20px;
    font-size: 15px;
    color: var(--ink-light);
}

.note-list li,
.step-list li {
    margin-bottom: 8px;
}

/* ---------- 分页 ---------- */
.pagination {
    --bs-pagination-color: var(--ink);
    --bs-pagination-hover-color: var(--brand);
    --bs-pagination-active-bg: var(--brand);
    --bs-pagination-active-border-color: var(--brand);
}

.pagination .page-link {
    min-width: 38px;
    text-align: center;
}

/* ---------- 图片墙 ---------- */
.gallery-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

@media (max-width: 991.98px) {
    .gallery-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575.98px) {
    .gallery-grid {
        grid-template-columns: 1fr;
    }
}

.gallery-item {
    position: relative;
    display: block;
    margin: 0;              /* figure 默认带 1em 外边距，会顶开栅格间距 */
    overflow: hidden;
    border-radius: 6px;
}

/* 缩略图不可点击，因此不做 hover 缩放：光标移上去不该出现「可点开看大图」的暗示 */
.gallery-item img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    display: block;
}

.gallery-item .caption {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 8px 12px;
    font-size: 14px;
    color: #fff;
    background: linear-gradient(0deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, 0));
}

/* ---------- 错误页与提交结果页 ---------- */
.error-code {
    font-size: 88px;
    font-weight: 700;
    line-height: 1;
    color: var(--brand);
    opacity: .18;
}

.result-icon {
    width: 72px;
    height: 72px;
    line-height: 72px;
    margin: 0 auto;
    border-radius: 50%;
    background: var(--brand-tint);
    color: var(--brand);
    font-size: 36px;
}

/* ---------- 招生引导文案 ---------- */
.admission-intro {
    font-size: 16px;
    color: var(--ink-light);
}

/* ---------- 主导航下拉菜单 ---------- */
.site-nav .dropdown-toggle::after {
    border-top-color: rgba(255, 255, 255, .85);
}

.site-nav .dropdown-menu {
    margin-top: 0;
    border: 0;
    border-radius: 0;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .12);
}

.site-nav .dropdown-item {
    padding: 9px 20px;
    font-size: 15px;
}

.site-nav .dropdown-item:hover,
.site-nav .dropdown-item:focus {
    background: var(--brand-tint);
    color: var(--brand);
}

/* ==========================================================================
   在线报名：整页海报式版式
   跳出内页三栏结构：首屏为全宽深蓝色块，正文为无卡片、无四边框的填写面，
   字段只保留底框线，层级靠字号、字重与留白建立（不靠边框和阴影）
   ========================================================================== */

/* ---------- 首屏：全宽深蓝色块 ---------- */
.signup-hero {
    position: relative;
    overflow: hidden;
    background: var(--brand-deep);
    color: #fff;
}

.signup-hero-bg {
    position: absolute;
    inset: 0;
}

.signup-hero-bg img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 左重右轻的斜向蒙版：压住照片保证白字对比度，同时让画面有方向感 */
.signup-hero-mask {
    position: absolute;
    inset: 0;
    background: linear-gradient(100deg, rgba(6, 59, 114, .95) 0%, rgba(6, 59, 114, .84) 42%, rgba(7, 95, 185, .46) 100%);
}

.signup-hero .container {
    position: relative;
    z-index: 1;
}

.signup-hero-inner {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 48px;
    padding: 80px 0 64px;
}

.signup-hero-text {
    max-width: 560px;
}

.signup-hero .eyebrow {
    font-size: 13px;
    letter-spacing: 3px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .68);
    margin: 0 0 12px;
}

.signup-hero h1 {
    font-size: 46px;
    font-weight: 700;
    line-height: 1.12;
    margin: 0 0 16px;
}

.signup-hero .lede {
    font-size: 16px;
    line-height: 1.8;
    color: rgba(255, 255, 255, .86);
    margin: 0;
    max-width: 460px;
}

/* 首屏引导：细下划线的白字链接，避免在色块里再塞一个按钮 */
.signup-hero-cta {
    display: inline-block;
    margin-top: 26px;
    padding-bottom: 4px;
    font-size: 16px;
    font-weight: 700;
    color: #fff;
    border-bottom: 1px solid rgba(255, 255, 255, .45);
}

.signup-hero-cta:hover {
    color: #fff;
    border-bottom-color: #fff;
}

.signup-trust {
    list-style: none;
    margin: 0;
    padding: 0 0 6px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.signup-trust li {
    position: relative;
    padding-left: 24px;
    font-size: 15px;
    color: rgba(255, 255, 255, .92);
    white-space: nowrap;
}

/* 对勾用两条边框旋转绘制，避免引入图标字体或额外图片 */
.signup-trust li::before {
    content: "";
    position: absolute;
    left: 2px;
    top: 8px;
    width: 6px;
    height: 11px;
    border-right: 2px solid #8CC6FF;
    border-bottom: 2px solid #8CC6FF;
    transform: rotate(40deg);
}

/* 首屏入场：文案与信任点依次上浮淡入，仅在允许动效时启用 */
@media (prefers-reduced-motion: no-preference) {
    .signup-hero-text,
    .signup-trust {
        animation: signup-rise .7s cubic-bezier(.2, .7, .3, 1) both;
    }

    .signup-trust {
        animation-delay: .14s;
    }
}

@keyframes signup-rise {
    from {
        opacity: 0;
        transform: translateY(18px);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

/* ---------- 流程条：横排四步，细线 + 圆点 ---------- */
.signup-steps {
    background: var(--brand-tint);
}

.signup-steps ol {
    list-style: none;
    margin: 0;
    padding: 26px 0 28px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
}

.signup-steps li {
    position: relative;
    padding-right: 24px;
}

.signup-steps li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 4px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--brand);
    box-shadow: 0 0 0 4px rgba(7, 95, 185, .12);
}

/* 步骤连接线：两端都落在圆点中心，起点被本步圆点覆盖、
   终点被下一步圆点覆盖（下一步的圆点在文档后面，绘制在上层） */
.signup-steps li:not(:last-child)::after {
    content: "";
    position: absolute;
    left: 12px;
    right: -6px;
    top: 9px;
    height: 1px;
    background: rgba(7, 95, 185, .2);
}

.signup-steps li .tx {
    display: block;
    padding-top: 28px;
    font-size: 15px;
    font-weight: 700;
    color: var(--brand-deep);
}

/* ---------- 表单主体 ---------- */
.signup-body {
    padding: 64px 0 80px;
}

/* 首屏引导锚点：避免被吸顶导航遮住 */
#signup-form {
    scroll-margin-top: 90px;
}

.sk-group + .sk-group {
    margin-top: 64px;
}

/* 分组标题：序号 + 标题 + 一句话说明，靠字号与留白分层，不用分隔线或卡片 */
.sk-group-head {
    margin-bottom: 28px;
}

.sk-no {
    display: block;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 2px;
    color: var(--brand);
    margin-bottom: 8px;
}

.sk-group-head h2 {
    font-size: 22px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
}

.sk-group-head p {
    font-size: 14px;
    color: var(--ink-light);
    margin: 8px 0 0;
}

.sk-fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 40px;
    row-gap: 30px;
}

.sk-wide {
    grid-column: 1 / -1;
}

.sk-label {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 6px;
}

.sk-label .req {
    color: #D93025;
    font-weight: 400;
}

/* 输入控件只保留底框线：聚焦时用 box-shadow 叠出 2px 品牌色，
   避免改动边框宽度引起 1px 布局跳动 */
.sk-input {
    display: block;
    width: 100%;
    padding: 10px 2px;
    font-size: 16px;
    line-height: 1.5;
    color: var(--ink);
    background-color: transparent;
    border: 0;
    border-bottom: 1px solid var(--line);
    border-radius: 0;
    transition: border-color .18s ease, box-shadow .18s ease;
}

.sk-input::placeholder {
    color: #A7AFBB;
}

.sk-input:hover {
    border-bottom-color: #C8D1DC;
}

.sk-input:focus {
    outline: 0;
    border-bottom-color: var(--brand);
    box-shadow: 0 1px 0 0 var(--brand);
}

/* 下拉框沿用 Bootstrap 的箭头图标，只把四边框改成底框线 */
.signup-body .form-select {
    padding-right: 34px;
    background-position: right 2px center;
}

textarea.sk-input {
    resize: vertical;
    min-height: 108px;
}

/* 性别：与输入框同一套「底框线」语言，选中项切换为品牌色，不引入胶囊按钮 */
.sk-seg-field {
    border: 0;
    padding: 0;
    margin: 0;
    min-inline-size: 0;
}

.sk-seg {
    display: flex;
    gap: 36px;
}

.sk-seg-label {
    position: relative;
    cursor: pointer;
}

/* 隐藏原生圆点但保留键盘可达性，选中态由紧随其后的文字标签承担 */
.sk-seg-input {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 1px;
    opacity: 0;
}

.sk-seg-text {
    display: inline-block;
    padding: 6px 2px 8px;
    font-size: 16px;
    color: var(--ink-light);
    border-bottom: 1px solid var(--line);
    transition: color .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.sk-seg-label:hover .sk-seg-text {
    border-bottom-color: #C8D1DC;
}

.sk-seg-input:checked + .sk-seg-text {
    color: var(--brand);
    font-weight: 700;
    border-bottom-color: var(--brand);
    box-shadow: 0 1px 0 0 var(--brand);
}

.sk-seg-input:focus-visible + .sk-seg-text {
    outline: 2px solid var(--brand);
    outline-offset: 4px;
}

.sk-error {
    display: block;
    font-size: 13px;
    color: #D93025;
    margin-top: 6px;
}

/* 校验占位标签在无错误时是空节点，隐藏以免撑出间距 */
.sk-error:empty {
    display: none;
}

.signup-alert {
    margin: 0 0 40px;
    font-size: 15px;
    color: #D93025;
}

.signup-alert ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

/* 单招培训专属字段：收起时不占高度（用负上间距抵消栅格行间距 30px），展开时平滑过渡 */
.recruit-extra {
    margin-top: -30px;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height .3s ease, opacity .24s ease, margin-top .3s ease;
}

.recruit-extra.is-open {
    margin-top: 0;
    max-height: 420px;
    opacity: 1;
}

/* ---------- 提交区：靠留白与表单分离，不加分隔线 ---------- */
.sk-submit {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-top: 64px;
}

.sk-privacy {
    font-size: 14px;
    color: var(--ink-light);
    margin: 0;
}

.sk-actions {
    display: flex;
    align-items: center;
    gap: 16px;
}

.sk-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 0 40px;
    font-size: 16px;
    font-weight: 700;
    color: #fff;
    background: var(--brand);
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    transition: background-color .18s ease, transform .18s ease;
}

.sk-btn:hover {
    color: #fff;
    background: var(--brand-dark);
    transform: translateY(-1px);
}

.sk-btn-ghost {
    color: var(--brand);
    background: transparent;
    box-shadow: inset 0 0 0 1px var(--line);
}

.sk-btn-ghost:hover {
    color: var(--brand);
    background: var(--brand-tint);
    box-shadow: inset 0 0 0 1px var(--brand-tint);
}

/* ---------- 侧栏：纯文字信息区，不使用卡片 ---------- */
.signup-rail h2 {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 12px;
}

.signup-rail p {
    font-size: 14px;
    line-height: 1.8;
    color: var(--ink-light);
    margin: 0 0 20px;
}

.signup-phone {
    display: block;
    font-size: 26px;
    font-weight: 700;
    letter-spacing: .5px;
    margin-bottom: 20px;
}

.signup-rail .more {
    font-size: 15px;
    font-weight: 700;
}

/* ---------- 响应式 ---------- */
@media (max-width: 991.98px) {
    .signup-hero-inner {
        flex-direction: column;
        align-items: flex-start;
        gap: 32px;
        padding: 56px 0 48px;
    }

    .signup-hero h1 {
        font-size: 36px;
    }

    .signup-rail {
        margin-top: 48px;
    }
}

@media (max-width: 767.98px) {
    .signup-hero-inner {
        padding: 40px 0 36px;
    }

    .signup-hero h1 {
        font-size: 30px;
    }

    .signup-hero .lede {
        font-size: 15px;
    }

    .signup-steps ol {
        grid-template-columns: 1fr 1fr;
        row-gap: 20px;
        padding: 22px 0 24px;
    }

    /* 两列排布时竖向不再成线，隐藏步骤连接线 */
    .signup-steps li:not(:last-child)::after {
        display: none;
    }

    .signup-body {
        padding: 44px 0 56px;
    }

    .sk-group + .sk-group {
        margin-top: 48px;
    }

    .sk-fields {
        grid-template-columns: 1fr;
    }

    .sk-submit {
        flex-direction: column;
        align-items: stretch;
        margin-top: 48px;
    }

    .sk-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .sk-btn {
        width: 100%;
    }

    .sk-privacy {
        text-align: center;
    }
}


/* ==========================================================================
   联系我们：整页海报式版式（与在线报名页同一套语言：深蓝首屏 + 无边框信息区）
   ========================================================================== */

.contact-hero {
    position: relative;
    overflow: hidden;
    background: var(--brand-deep);
    color: #fff;
}

.contact-hero-bg {
    position: absolute;
    inset: 0;
}

.contact-hero-bg img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 左侧压深、右侧透出照片：文字始终落在稳定的深色区，保证对比度 */
.contact-hero-mask {
    position: absolute;
    inset: 0;
    background: linear-gradient(100deg, rgba(6, 59, 114, .95) 0%, rgba(6, 59, 114, .86) 48%, rgba(7, 95, 185, .5) 100%);
}

.contact-hero-inner {
    position: relative;
    padding: 96px 0 84px;
    max-width: 720px;
}

.contact-hero .eyebrow {
    margin: 0 0 12px;
    font-size: 13px;
    letter-spacing: 3px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .68);
}

.contact-hero h1 {
    margin: 0 0 16px;
    font-size: 46px;
    font-weight: 700;
    line-height: 1.12;
}

.contact-hero .lede {
    margin: 0;
    max-width: 560px;
    font-size: 16px;
    line-height: 1.8;
    color: rgba(255, 255, 255, .86);
}

/* 首屏两个动作：实心=打电话，描边=导航 */
.ct-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 30px;
}

.ct-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 0 34px;
    font-size: 16px;
    font-weight: 700;
    color: #fff;
    background: var(--brand);
    border-radius: 999px;
    transition: background-color .18s ease, transform .18s ease;
}

.ct-btn:hover {
    color: #fff;
    background: var(--brand-dark);
    transform: translateY(-1px);
}

.ct-btn-ghost {
    background: transparent;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .45);
}

.ct-btn-ghost:hover {
    background: rgba(255, 255, 255, .14);
}

/* 首屏入场：复用报名页定义的关键帧，仅平移淡入，不做高度动画 */
@media (prefers-reduced-motion: no-preference) {
    .contact-hero-inner .eyebrow,
    .contact-hero-inner h1,
    .contact-hero-inner .lede,
    .contact-hero-inner .ct-actions {
        animation: signup-rise .7s cubic-bezier(.2, .7, .3, 1) both;
    }

    .contact-hero-inner h1 { animation-delay: .08s; }
    .contact-hero-inner .lede { animation-delay: .16s; }
    .contact-hero-inner .ct-actions { animation-delay: .24s; }
}

/* 到校信息：两列纯文字，无卡片无边框，靠字号、颜色与间距分层 */
.ct-info {
    padding: 56px 0 0;
}

.ct-info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 40px 48px;
    margin: 0;
}

.ct-info-grid dt {
    margin-bottom: 10px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--brand);
}

.ct-info-grid dd {
    margin: 0;
}

.ct-value {
    display: block;
    font-size: 26px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--ink);
}

.ct-value-sm {
    font-size: 19px;
}

.ct-note {
    display: block;
    margin-top: 6px;
    font-size: 14px;
    color: var(--ink-light);
}

.ct-copy {
    margin: 12px 0 0;
    padding: 0 0 3px;
    font-size: 14px;
    font-weight: 700;
    color: var(--brand);
    background: none;
    border: 0;
    border-bottom: 1px solid var(--brand-tint);
    cursor: pointer;
    transition: border-color .18s ease;
}

.ct-copy:hover {
    border-bottom-color: var(--brand);
}

/* 到校导航带：未接入嵌入式地图时，整条深蓝色块就是导航入口本身 */
.ct-nav {
    margin-top: 64px;
    background: var(--brand-deep);
}

.ct-nav-band {
    display: block;
    padding: 42px 0 44px;
    color: #fff;
    transition: background-color .2s ease;
}

/* hover 不再把底色压暗（压暗读作「已按下」），改为提亮一档到品牌蓝，读作「可点击」；
   底色变的是 .ct-nav-band 自身，它是通栏 <a>，所以整条带子一起变色，不留两侧缝隙 */
.ct-nav-band:hover {
    color: #fff;
    background: var(--brand);
}

.ct-nav-eyebrow {
    display: block;
    margin-bottom: 10px;
    font-size: 13px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .68);
}

.ct-nav-addr {
    display: block;
    max-width: 760px;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.5;
}

.ct-nav-go {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 18px;
    padding-bottom: 3px;
    font-size: 15px;
    font-weight: 700;
    border-bottom: 1px solid rgba(255, 255, 255, .45);
    transition: border-bottom-color .2s ease;
}

.ct-nav-go .arrow {
    transition: transform .18s ease, color .2s ease;
}

/* 强调色只落在下划线与箭头上：橙 #E8731A 在品牌蓝 #075FB9 上对比度仅约 2.1:1，
   若把「点击进入导航」文字也改成橙色会读不清，因此文字在 hover 时保持白色 */
.ct-nav-band:hover .ct-nav-go {
    border-bottom-color: var(--accent);
}

.ct-nav-band:hover .ct-nav-go .arrow {
    color: var(--accent);
    transform: translateX(4px);
}

/* 后台可编辑正文：窄栏，避免长行 */
.ct-content {
    padding: 56px 0 0;
}

.ct-content-inner {
    max-width: 760px;
}

/* 结尾：只留一个动作 */
.ct-cta {
    margin-top: 64px;
    padding: 54px 0;
    background: var(--brand-tint);
}

.ct-cta-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
}

.ct-cta h2 {
    margin: 0 0 6px;
    font-size: 24px;
    font-weight: 700;
    color: var(--ink);
}

.ct-cta p {
    margin: 0;
    color: var(--ink-light);
}

@media (max-width: 991.98px) {
    .ct-info-grid {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .ct-cta-inner {
        flex-direction: column;
        align-items: flex-start;
    }
}

@media (max-width: 767.98px) {
    .contact-hero-inner {
        padding: 40px 0 36px;
    }

    .contact-hero h1 {
        font-size: 30px;
    }

    .contact-hero .lede {
        font-size: 15px;
    }

    .ct-actions .ct-btn {
        width: 100%;
    }

    .ct-info {
        padding: 40px 0 0;
    }

    .ct-nav {
        margin-top: 48px;
    }

    .ct-nav-band {
        padding: 30px 0 32px;
    }

    .ct-nav-addr {
        font-size: 18px;
    }

    .ct-content {
        padding: 40px 0 0;
    }

    .ct-cta {
        margin-top: 48px;
        padding: 40px 0;
    }

    .ct-cta .ct-btn {
        width: 100%;
    }
}


/* ==========================================================================
   门户版式组件（B 方案复刻）：区块标题 / 日期块 / 图文卡片 / 数据块 /
   校园环境拼贴 / 专题专栏 / 左栏栏目菜单 / 右侧固定工具条
   ========================================================================== */

/* ---------- 区块标题：左侧蓝色标题 + 右侧「更多>>」 ---------- */
.sec-title {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    padding-bottom: 10px;
    margin-bottom: 20px;
    border-bottom: 2px solid var(--portal-tint);
}

.sec-title .t {
    position: relative;
    margin: 0;
    padding-left: 14px;
    font-size: 22px;
    font-weight: 700;
    color: var(--brand);
    line-height: 1;
}

/* 标题左侧的品牌色竖块 */
.sec-title .t::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 5px;
    height: 20px;
    margin-top: -10px;
    background: var(--brand);
    border-radius: 2px;
}

/* 居中变体：用于「专题专栏」这类整幅区块 */
.sec-title.center {
    position: relative;
    justify-content: center;
}

.sec-title.center .t {
    padding-left: 0;
}

.sec-title.center .t::before {
    display: none;
}

.sec-title.center .t::after {
    content: "";
    display: block;
    width: 46px;
    height: 3px;
    margin: 10px auto 0;
    background: var(--brand);
    border-radius: 2px;
}

.sec-title.center .more-link {
    position: absolute;
    right: 0;
    bottom: 10px;
}

.more-link {
    padding: 2px 10px;
    border: 1px solid var(--line);
    border-left: 3px solid var(--brand);
    font-size: 13px;
    color: var(--ink-light);
    white-space: nowrap;
}

.more-link:hover {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
}

/* ---------- 日期块：橙色大号「日」+ 年月，右侧细分隔线 ---------- */
.date-block {
    flex: none;
    width: 78px;
    padding-right: 12px;
    text-align: center;
    border-right: 1px solid var(--line);
    color: var(--accent);
    line-height: 1.15;
}

.date-block .day {
    display: block;
    font-size: 28px;
    font-weight: 700;
}

.date-block .ym {
    display: block;
    font-size: 12px;
}

/* 蓝色变体：特色专业列表用序号 + 学制代替日期 */
.date-block.is-num {
    color: var(--brand);
}

/* ---------- 门户列表：日期块 + 标题 + 两行摘要 ---------- */
.portal-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.portal-list li {
    display: flex;
    gap: 14px;
    padding: 14px 0;
    border-bottom: 1px solid var(--line);
}

.portal-list li:last-child {
    border-bottom: 0;
}

.portal-list .content {
    flex: 1;
    min-width: 0;
}

.portal-list h3 {
    margin: 0 0 6px;
    font-size: 15px;
    font-weight: 400;
    line-height: 1.5;
}

.portal-list h3 a {
    color: var(--ink);
}

.portal-list h3 a:hover {
    color: var(--brand);
}

.portal-list .summary {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
    font-size: 13px;
    color: var(--ink-light);
}

/* ---------- 头条：大号橙色日期 + 蓝色加粗标题 + 摘要 ---------- */
.headline {
    display: flex;
    gap: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--line);
}

.headline .big-date {
    flex: none;
    min-width: 96px;
    padding-right: 16px;
    text-align: center;
    border-right: 1px solid var(--line);
    color: var(--accent);
    line-height: 1.05;
}

.headline .big-date .day {
    display: block;
    font-size: 44px;
    font-weight: 700;
}

.headline .big-date .ym {
    display: block;
    font-size: 13px;
}

.headline .body {
    flex: 1;
    min-width: 0;
}

.headline h3 {
    margin: 0 0 8px;
    font-size: 18px;
    font-weight: 700;
}

.headline h3 a {
    color: var(--brand);
}

.headline h3 a:hover {
    color: var(--brand-dark);
}

.headline p {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
    font-size: 13px;
    color: var(--ink-light);
}

/* ---------- 分隔线标题列表（头条下方） ---------- */
.headline-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.headline-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 1px dashed var(--line);
    font-size: 14px;
}

.headline-list li:last-child {
    border-bottom: 0;
}

.headline-list a {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--ink);
}

.headline-list a:hover {
    color: var(--brand);
}

.headline-list .date {
    flex: none;
    font-size: 13px;
    color: var(--ink-light);
}

/* ---------- 图文卡片：上图下文 ---------- */
.news-card {
    height: 100%;
    background: #fff;
    border: 1px solid var(--line);
}

.news-card img {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
}

.news-card .body {
    padding: 12px 14px 14px;
}

.news-card h3 {
    margin: 0 0 6px;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.5;
}

.news-card h3 a {
    color: var(--ink);
}

.news-card h3 a:hover {
    color: var(--brand);
}

.news-card p {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
    font-size: 13px;
    color: var(--ink-light);
}

/* ---------- 学校数据：深蓝底数字统计块 ---------- */
.stat-block {
    background: var(--portal-blue);
    color: #fff;
}

.stat-block .stat-item {
    padding: 30px 0;
    text-align: center;
    border-right: 1px solid rgba(255, 255, 255, .18);
}

.stat-block .stat-item:last-child {
    border-right: 0;
}

.stat-block .num {
    font-size: 40px;
    font-weight: 700;
    line-height: 1.1;
}

.stat-block .num small {
    margin-left: 4px;
    font-size: 16px;
    font-weight: 400;
}

.stat-block .label {
    margin-top: 6px;
    font-size: 14px;
    color: rgba(255, 255, 255, .8);
}

@media (max-width: 767.98px) {
    .stat-block .stat-item {
        padding: 18px 0;
        border-right: 0;
        border-bottom: 1px solid rgba(255, 255, 255, .18);
    }

    /* 两列排布时，奇数列保留右侧分隔线，最后一行去掉下边线 */
    .stat-block .stat-item:nth-child(odd) {
        border-right: 1px solid rgba(255, 255, 255, .18);
    }

    .stat-block .stat-item:nth-child(n+3) {
        border-bottom: 0;
    }
}

/* ---------- 校园环境：图片拼贴网格（左大图 + 中列 + 右列） ---------- */
.campus-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, 150px);
    gap: 10px;
}

.campus-grid .cell {
    position: relative;
    display: block;
    overflow: hidden;
}

.campus-grid .cell img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s;
}

.campus-grid .cell:hover img {
    transform: scale(1.05);
}

.campus-grid .cell .cap {
    position: absolute;
    left: 0;
    bottom: 0;
    padding: 6px 12px;
    font-size: 14px;
    color: #fff;
    background: linear-gradient(0deg, rgba(0, 0, 0, .55), rgba(0, 0, 0, 0));
}

/* 位置布局：左侧通栏大图、中部两张上下叠放、中右通栏大图、右侧两张上下叠放 */
.campus-grid .cell.a {
    grid-column: 1 / 2;
    grid-row: 1 / 3;
}

.campus-grid .cell.b {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
}

.campus-grid .cell.c {
    grid-column: 2 / 3;
    grid-row: 2 / 3;
}

.campus-grid .cell.d {
    grid-column: 3 / 4;
    grid-row: 1 / 3;
}

.campus-grid .cell.e {
    grid-column: 4 / 5;
    grid-row: 1 / 2;
}

.campus-grid .cell.f {
    grid-column: 4 / 5;
    grid-row: 2 / 3;
}

@media (max-width: 991.98px) {
    .campus-grid {
        grid-template-columns: repeat(2, 1fr);
        grid-template-rows: repeat(3, 140px);
    }

    .campus-grid .cell.a,
    .campus-grid .cell.b,
    .campus-grid .cell.c,
    .campus-grid .cell.d,
    .campus-grid .cell.e,
    .campus-grid .cell.f {
        grid-column: auto;
        grid-row: auto;
    }
}

@media (max-width: 575.98px) {
    .campus-grid {
        grid-template-rows: repeat(3, 110px);
    }
}

/* ---------- 专题专栏：一行四张横幅 ---------- */
.topic-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.topic-grid a {
    display: block;
    overflow: hidden;
}

.topic-grid img {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 7;
    object-fit: cover;
    transition: transform .3s;
}

.topic-grid a:hover img {
    transform: scale(1.04);
}

@media (max-width: 991.98px) {
    .topic-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575.98px) {
    .topic-grid {
        grid-template-columns: 1fr;
    }
}

/* ---------- 左栏栏目菜单 ---------- */
.side-menu {
    background: #fff;
    border: 1px solid var(--line);
}

.side-menu .head {
    padding: 14px 10px;
    background: var(--portal-blue);
    color: #fff;
    text-align: center;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 2px;
}

.side-menu ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.side-menu li {
    border-bottom: 1px solid var(--line);
}

.side-menu li:last-child {
    border-bottom: 0;
}

.side-menu a {
    display: block;
    padding: 11px 16px;
    font-size: 15px;
    color: var(--ink);
}

.side-menu a:hover {
    background: var(--portal-tint);
    color: var(--brand);
}

.side-menu a.active {
    background: var(--brand);
    color: #fff;
}

/* 侧栏「相关推荐」模块：沿用栏目菜单外壳，条目为文章标题并最多显示两行 */
.side-menu.side-links {
    margin-top: 18px;
}

.side-menu.side-links li {
    padding: 0 14px;
    border-bottom: 1px dashed var(--line);
}

.side-menu.side-links li:last-child {
    border-bottom: 0;
}

.side-menu.side-links a {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    padding: 9px 0;
    font-size: 14px;
    line-height: 1.6;
}

/* ---------- 内页主体区 ---------- */
.inner-main {
    padding: 26px 0 52px;
}

/* ---------- 右侧竖向固定工具条 ---------- */
.float-tools {
    position: fixed;
    right: 14px;
    bottom: 120px;
    z-index: 1035;
    flex-direction: column;
    gap: 2px;
}

.float-tools > a,
.float-tools > button {
    display: block;
    width: 56px;
    padding: 10px 4px;
    border: 0;
    border-radius: 4px;
    background: var(--portal-blue);
    color: #fff;
    font-size: 12px;
    line-height: 1.35;
    text-align: center;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .15);
}

.float-tools > a:hover,
.float-tools > button:hover {
    background: var(--brand);
    color: #fff;
}

/* 微信二维码弹层：鼠标悬停时显示 */
.float-tools .qr {
    position: relative;
}

.float-tools .qr-pop {
    position: absolute;
    right: 66px;
    top: 0;
    display: none;
    padding: 8px;
    background: #fff;
    border: 1px solid var(--line);
    box-shadow: 0 6px 20px rgba(0, 0, 0, .15);
}

.float-tools .qr:hover .qr-pop {
    display: block;
}

.float-tools .qr-pop img {
    display: block;
    width: 108px;
    height: 108px;
}

.float-tools .qr-pop span {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    text-align: center;
    color: var(--ink-light);
}

@media (max-width: 991.98px) {
    .float-tools {
        display: none !important;
    }
}

/* ---------- 快捷入口门户化微调 ---------- */
.quick-entry {
    border-radius: 0;
    border-top: 3px solid var(--brand);
}

.quick-entry .title {
    color: var(--brand);
}
