Files
YschcmsService/src/main/resources/templates/themes/academic-navy/assets/css/main.css
T
chenxing d2df12b91e
build / build-push (push) Successful in 51s
feat(theme)!: 下线粉/紫两包,改以学院蓝为基座交付 academic-navy/campus-azure 两套高校官网风皮肤
线上 10027 首页配了 home_layout 后走 themes/common 通用骨架,派生皮肤只换了页头页脚,
正文仍是骨架内置蓝灰卡(外加 cherry-bloom 的粉紫配色),用户判定"完全不能用"。

- 新增 academic-navy(学府藏蓝,an-)/campus-azure(青蓝校园,cz-):以 scholar-blue 为基座,
  各自自带 fragments/home-blocks.html 与 home.html 分发,news_grid/media_focus/compact/
  image_wall/card/ticker/gallery/links 八种区块形态全部由皮肤渲染,未知类型才回落通用骨架
- 两套皮肤 :root 把私有变量别名到 --primary/--text/--card-bg/--border/--radius 契约变量;
  中文行锁 nowrap+min-width:0+ellipsis,grid 轨道用 minmax(0,1fr) 防窄视口压塌
- 新闻背景带 .an-sec-bg/.cz-sec-bg 压 z-index:0、卡片抬到 1:绝对定位层默认画在普通流之上,
  不抬起会整张卡片泛成底图色(无头截图实测)
- common 骨架空态守卫改包 th:block(th:replace 优先级 100 先于 th:if 300)
- 删除 cherry-bloom/violet-iris;sql/upgrade_theme_academic_skins.sql 幂等改指存量站点
  (站点缓存 CacheNames.SITE TTL 30 分钟,改库后需重启或在管理端重存站点)
- 测试:AcademicSkinContractTest(区块自带/分发/CJK 行/变量别名/主色必须学术蓝/背景带层级/
  预览图不得沿用基座)、HomeBlocksCssContractTest、PortalHomeLayoutIT 端到端断言零 plb- 输出;
  全量 383 项通过
2026-09-19 20:21:30 +08:00

1498 lines
47 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* =====================================================================
academic-navy · 学府藏蓝(基座 scholar-blue,参考语言:综合类高校官网门户)
设计语言:藏蓝顶栏/品牌行 + 白底主导航(吸顶反蓝) + 金线标题 + 日期方块行
+ 布局模式双栏要闻(左图文右密行)+ 藏蓝要闻速递条 + 深色圆环页脚
色彩令牌全部走 CSS 变量,theme.json color 参数经 :root 覆盖真实生效。
===================================================================== */
/* ---------------------------------------------------------------------
1. 设计令牌(与 theme.json params 一一对应,禁止出现未消费的声明)
--------------------------------------------------------------------- */
:root {
--an-primary: #0b4a8f; /* 主色:藏蓝,顶栏/品牌行/标题/强调 */
--an-primary-dark: #063161; /* 主色加深:hover/渐变端/页脚深端 */
--an-primary-light: #1a6cb5; /* 主色提亮:亮线条/hover 链接/角标 */
--an-accent: #b8934a; /* 点缀金:标题下划细线/日期方块描边(高校官网常见金线) */
--an-nav-bg: #ffffff; /* 主导航条底色(白条学院风) */
--an-footer-bg: #0a2b4d; /* 页脚主底 */
--an-text: #2b3644; /* 正文 */
--an-text-light: #6b7889; /* 次要文字 */
--an-bg: #f1f4f9; /* 页面底色 */
--an-card-bg: #ffffff; /* 卡片底 */
--an-border: #dbe3ee; /* 边框/分隔线 */
--an-ink-on-dark: #ffffff; /* 深底主文字 */
--an-ink-on-dark-soft: rgba(255,255,255,.74); /* 深底次要文字 */
--an-ink-on-dark-faint: rgba(255,255,255,.46);
--an-panel: rgba(11,74,143,.95); /* 下拉面板(主色半透明) */
--an-shadow-sm: 0 1px 4px rgba(6,49,97,.08);
--an-shadow-md: 0 6px 18px rgba(6,49,97,.12);
--an-shadow-lg: 0 14px 34px rgba(6,49,97,.18);
--an-radius: 4px;
--an-radius-lg: 8px;
--an-speed: .28s;
--an-font: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif;
/* 皮肤契约别名:站点配了 home_layout 时首页走 common/fragments/home-blocks 骨架,
该骨架只认契约变量(--primary/--text/…)。不别名过去,换肤就只换了页头页脚、正文区块仍是骨架内置色。 */
--primary: var(--an-primary);
--primary-dark: var(--an-primary-dark);
--primary-light: var(--an-primary-light);
--text: var(--an-text);
--text-light: var(--an-text-light);
--bg: var(--an-bg);
--card-bg: var(--an-card-bg);
--border: var(--an-border);
--radius: var(--an-radius-lg);
}
/* ---------------------------------------------------------------------
2. Reset 与基础
--------------------------------------------------------------------- */
* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
font-family: var(--an-font);
font-size: 14px;
line-height: 1.7;
color: var(--an-text);
background: var(--an-bg);
word-break: break-word;
}
ul, ol { list-style: none; }
a { color: var(--an-primary); text-decoration: none; transition: color var(--an-speed) ease; }
a:hover { color: var(--an-primary-light); }
img { max-width: 100%; display: block; border: 0; }
button { font-family: inherit; cursor: pointer; }
input, button, select, textarea { font-size: inherit; color: inherit; }
::selection { background: var(--an-primary); color: #fff; }
/* 跳转链接:仅键盘聚焦时可见 */
.skip-link {
position: absolute; left: -999px; top: 0; z-index: 300;
background: var(--an-primary-dark); color: #fff;
padding: 8px 18px; border-radius: 0 0 var(--an-radius) 0;
}
.skip-link:focus { left: 0; color: #fff; }
/* 通用容器 */
.an-container {
width: 1200px; max-width: calc(100% - 40px);
margin: 0 auto;
}
/* 屏幕阅读器专用 */
.an-visually-hidden {
position: absolute; width: 1px; height: 1px;
margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
/* 置顶徽章 */
.an-top-badge {
display: inline-block; flex: none;
padding: 0 7px; line-height: 18px;
font-size: 12px; color: #fff;
background: var(--an-primary-light);
border-radius: 2px;
letter-spacing: 1px;
}
/* 空状态 */
.an-empty {
padding: 56px 20px;
text-align: center;
color: var(--an-text-light);
}
.an-empty p:first-child { font-size: 16px; margin-bottom: 8px; }
.an-empty-hint { font-size: 13px; color: var(--an-text-light); opacity: .75; }
/* ---------------------------------------------------------------------
3. 顶栏(深蓝细条:日期 + 院系切换)
--------------------------------------------------------------------- */
.an-topbar {
background: linear-gradient(90deg, var(--an-primary-dark), var(--an-primary));
color: var(--an-ink-on-dark-soft);
font-size: 13px;
}
.an-topbar-inner {
width: 1200px; max-width: calc(100% - 40px);
margin: 0 auto;
display: flex; align-items: center; justify-content: space-between;
min-height: 36px;
}
.an-topbar-date { letter-spacing: .5px; }
.an-topbar-side { position: relative; }
/* 院系切换:细字 + 箭头,展开为深蓝面板 */
.an-colleges { position: relative; }
.an-colleges-toggle {
display: inline-flex; align-items: center; gap: 6px;
padding: 4px 2px;
cursor: pointer;
}
.an-colleges-toggle a { color: var(--an-ink-on-dark-soft); }
.an-colleges-toggle a:hover { color: #fff; }
.an-colleges-arrow {
font-style: normal; font-size: 10px;
transition: transform var(--an-speed) ease;
}
.an-colleges:hover .an-colleges-arrow { transform: rotate(180deg); }
.an-colleges-menu {
position: absolute; right: 0; top: calc(100% + 6px);
min-width: 180px; max-height: 280px; overflow: auto;
background: var(--an-panel);
backdrop-filter: blur(4px);
border-top: 2px solid var(--an-primary-light);
border-radius: 0 0 var(--an-radius) var(--an-radius);
box-shadow: var(--an-shadow-lg);
padding: 6px 0;
opacity: 0; visibility: hidden; transform: translateY(-6px);
transition: opacity var(--an-speed) ease, transform var(--an-speed) ease, visibility var(--an-speed);
z-index: 120;
}
.an-colleges:hover .an-colleges-menu,
.an-colleges:focus-within .an-colleges-menu {
opacity: 1; visibility: visible; transform: translateY(0);
}
.an-colleges-menu li a {
display: block;
padding: 7px 16px;
color: var(--an-ink-on-dark);
font-size: 13px;
border-left: 2px solid transparent;
transition: background var(--an-speed) ease, border-color var(--an-speed) ease, padding-left var(--an-speed) ease;
}
.an-colleges-menu li a:hover {
background: var(--an-primary-dark);
border-left-color: var(--an-primary-light);
padding-left: 20px;
color: #fff;
}
.an-colleges-menu li.active a {
background: rgba(255,255,255,.08);
border-left-color: var(--an-primary-light);
color: #fff;
}
/* ---------------------------------------------------------------------
4. 品牌行(深蓝主区:徽标 + 站名 + 圆角搜索)
--------------------------------------------------------------------- */
.an-brandbar {
background: linear-gradient(100deg, var(--an-primary-dark) 0%, var(--an-primary) 62%, var(--an-primary-light) 130%);
color: var(--an-ink-on-dark);
position: relative;
overflow: hidden;
}
/* 品牌行右侧淡圆环装饰(CSS 绘制,无图片依赖) */
.an-brandbar::before,
.an-brandbar::after {
content: "";
position: absolute;
border-radius: 50%;
border: 26px solid rgba(255,255,255,.05);
pointer-events: none;
}
.an-brandbar::before { width: 320px; height: 320px; right: -80px; top: -170px; }
.an-brandbar::after { width: 200px; height: 200px; right: 180px; bottom: -140px; border-width: 16px; }
.an-brandbar-inner {
width: 1200px; max-width: calc(100% - 40px);
margin: 0 auto;
display: flex; align-items: center; justify-content: space-between;
gap: 24px;
padding: 22px 0;
position: relative; z-index: 1;
}
.an-brand {
display: flex; align-items: center; gap: 14px;
min-width: 0;
}
/* 徽标容器:白衬圆角方块,校徽任何底色都干净 */
.an-brand-badge {
flex: none;
width: 58px; height: 58px;
display: inline-flex; align-items: center; justify-content: center;
background: rgba(255,255,255,.94);
border-radius: var(--an-radius);
box-shadow: 0 2px 8px rgba(6,49,97,.35);
overflow: hidden;
}
.an-brand-badge--plain { color: var(--an-primary); }
.an-logo { width: 100%; height: 100%; object-fit: contain; }
.an-site-name {
color: var(--an-ink-on-dark);
font-size: 27px;
font-weight: 700;
letter-spacing: 2px;
line-height: 1.3;
text-shadow: 0 2px 6px rgba(6,49,97,.4);
white-space: nowrap;
overflow: hidden; text-overflow: ellipsis;
max-width: 560px;
}
.an-site-name:hover { color: #fff; }
/* 搜索:白色胶囊(学院风记忆点) */
.an-search {
flex: none;
display: flex; align-items: center;
width: 300px; max-width: 36%;
background: #fff;
border-radius: 999px;
padding: 3px 4px 3px 18px;
box-shadow: 0 3px 10px rgba(6,49,97,.28);
}
.an-search input {
flex: 1; min-width: 0;
border: 0; outline: none;
background: transparent;
font-size: 13px; color: var(--an-text);
line-height: 30px;
}
.an-search input::placeholder { color: #a9b3c0; }
.an-search button {
flex: none;
width: 32px; height: 32px;
border: 0; border-radius: 50%;
background: var(--an-primary);
color: #fff;
display: inline-flex; align-items: center; justify-content: center;
transition: background var(--an-speed) ease, transform var(--an-speed) ease;
}
.an-search button:hover { background: var(--an-primary-light); transform: scale(1.06); }
/* ---------------------------------------------------------------------
5. 主导航(白底条 + 主蓝半透明下拉面板 + 吸顶反蓝)
--------------------------------------------------------------------- */
.an-nav {
background: var(--an-nav-bg);
box-shadow: var(--an-shadow-sm);
position: relative;
z-index: 100;
}
/* 顶部主蓝细线:把导航条与品牌行缝在一起 */
.an-nav::before {
content: "";
display: block; height: 3px;
background: linear-gradient(90deg, var(--an-primary), var(--an-primary-light));
}
.an-nav-inner {
width: 1200px; max-width: calc(100% - 40px);
margin: 0 auto;
position: relative;
}
.an-nav-toggle { display: none; }
.an-nav-list {
display: flex;
justify-content: space-between;
}
.an-nav-list > li { position: relative; flex: 1 1 auto; text-align: center; }
.an-nav-list > li > a {
display: flex; align-items: center; justify-content: center; gap: 5px;
position: relative;
padding: 0 10px;
height: 52px;
font-size: 16px;
font-weight: 600;
letter-spacing: 1px;
color: var(--an-primary-dark);
white-space: nowrap;
transition: color var(--an-speed) ease, background var(--an-speed) ease;
}
/* 底部指示条:hover/当前项 */
.an-nav-list > li > a::after {
content: "";
position: absolute; left: 50%; bottom: 0;
width: 0; height: 3px;
background: var(--an-primary);
transform: translateX(-50%);
transition: width var(--an-speed) ease;
}
.an-nav-list > li:hover > a,
.an-nav-list > li.active > a {
color: var(--an-primary);
background: rgba(11,74,143,.06);
}
.an-nav-list > li:hover > a::after,
.an-nav-list > li.active > a::after { width: 56%; }
.an-caret {
font-style: normal; font-size: 11px;
opacity: .65;
transition: transform var(--an-speed) ease;
}
.an-nav-list > li:hover .an-caret { transform: rotate(180deg); }
/* —— 下拉面板:主蓝半透明、顶部亮线、项 hover 加深 + 左亮条(红线第一优先级) —— */
.an-sub {
position: absolute; left: 50%; top: 100%;
transform: translate(-50%, 10px);
min-width: 176px;
background: var(--an-panel);
backdrop-filter: blur(6px);
border-top: 3px solid var(--an-primary-light);
border-radius: 0 0 var(--an-radius) var(--an-radius);
box-shadow: var(--an-shadow-lg);
padding: 6px 0;
text-align: left;
opacity: 0; visibility: hidden;
transition: opacity var(--an-speed) ease, transform var(--an-speed) ease, visibility var(--an-speed);
z-index: 110;
}
.an-nav-list > li:hover .an-sub,
.an-nav-list > li:focus-within .an-sub {
opacity: 1; visibility: visible;
transform: translate(-50%, 0);
}
/* 面板小尖角 */
.an-sub::before {
content: "";
position: absolute; left: 50%; top: -8px;
width: 12px; height: 12px;
background: var(--an-primary);
transform: translateX(-50%) rotate(45deg);
border-radius: 2px 0 0 0;
}
.an-sub li a {
display: block;
position: relative;
margin: 2px 8px;
padding: 9px 14px 9px 22px;
font-size: 14px;
color: var(--an-ink-on-dark);
border-radius: 4px;
white-space: nowrap;
transition: background var(--an-speed) ease, padding-left var(--an-speed) ease, color var(--an-speed) ease;
}
/* 项前细刻度线 */
.an-sub li a::before {
content: "";
position: absolute; left: 10px; top: 50%;
width: 4px; height: 4px;
margin-top: -2px;
background: rgba(255,255,255,.5);
border-radius: 50%;
transition: background var(--an-speed) ease, box-shadow var(--an-speed) ease;
}
.an-sub li a:hover {
background: var(--an-primary-dark);
padding-left: 26px;
color: #fff;
}
.an-sub li a:hover::before {
background: var(--an-primary-light);
box-shadow: 0 0 6px var(--an-primary-light);
}
/* —— 吸顶反蓝(.an-nav--fixed 由 main.js 滚动加挂) —— */
.an-nav--fixed {
position: fixed; left: 0; right: 0; top: 0;
background: linear-gradient(90deg, var(--an-primary-dark), var(--an-primary));
box-shadow: var(--an-shadow-md);
animation: an-nav-drop var(--an-speed) ease;
}
@keyframes an-nav-drop {
from { transform: translateY(-100%); }
to { transform: translateY(0); }
}
.an-nav--fixed::before { height: 0; }
.an-nav--fixed .an-nav-list > li > a { color: var(--an-ink-on-dark); }
.an-nav--fixed .an-nav-list > li:hover > a,
.an-nav--fixed .an-nav-list > li.active > a {
color: #fff;
background: rgba(255,255,255,.1);
}
.an-nav--fixed .an-nav-list > li > a::after { background: var(--an-primary-light); }
/* 吸顶态下拉:底色更沉,与蓝条衔接 */
.an-nav--fixed .an-sub { background: rgba(6,49,97,.96); }
.an-nav--fixed .an-sub::before { background: var(--an-primary-dark); }
/* 吸顶占位,防跳变(main.js 加挂时同步高度,解锁即移除) */
.an-nav-holder { display: block; }
/* ---------------------------------------------------------------------
6. 首页 banner(通栏轮播 + 圆形箭头 + 底部圆点)
--------------------------------------------------------------------- */
.an-banner {
position: relative;
overflow: hidden;
background: var(--an-primary-dark);
}
.an-banner-slides { position: relative; height: 520px; }
.an-banner-slide {
position: absolute; inset: 0;
opacity: 0; visibility: hidden;
transition: opacity .8s ease, visibility .8s ease;
}
.an-banner-slide.active { opacity: 1; visibility: visible; z-index: 1; }
.an-banner-slide img {
width: 100%; height: 100%;
object-fit: cover;
}
/* 底部渐隐遮罩上承标题 */
.an-banner-slide::after {
content: "";
position: absolute; left: 0; right: 0; bottom: 0;
height: 120px;
background: linear-gradient(180deg, transparent, rgba(6,49,97,.66));
pointer-events: none;
}
.an-banner-slide.active img { animation: an-banner-zoom 6.5s ease forwards; }
@keyframes an-banner-zoom {
from { transform: scale(1); }
to { transform: scale(1.045); }
}
.an-banner-title {
position: absolute; left: 6%; bottom: 34px;
z-index: 2;
max-width: 70%;
color: #fff;
font-size: 24px;
font-weight: 600;
letter-spacing: 1px;
text-shadow: 0 2px 8px rgba(6,49,97,.6);
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* 圆形半透明箭头(建平语言) */
.an-banner-arrow {
position: absolute; top: 50%; z-index: 3;
width: 52px; height: 52px; margin-top: -26px;
border: 2px solid rgba(255,255,255,.75);
border-radius: 50%;
background: rgba(6,49,97,.25);
color: #fff;
font-size: 26px; line-height: 1;
display: inline-flex; align-items: center; justify-content: center;
padding-bottom: 4px;
opacity: 0;
transition: opacity var(--an-speed) ease, background var(--an-speed) ease, border-color var(--an-speed) ease;
}
.an-banner:hover .an-banner-arrow { opacity: 1; }
.an-banner-arrow:hover { background: var(--an-primary); border-color: #fff; }
.an-banner-arrow.prev { left: 26px; }
.an-banner-arrow.next { right: 26px; }
/* 圆点指示器 */
.an-banner-dots {
position: absolute; left: 0; right: 0; bottom: 18px;
z-index: 3;
display: flex; justify-content: center; gap: 10px;
}
.an-banner-dots button {
width: 10px; height: 10px;
border: 0; border-radius: 50%;
background: rgba(255,255,255,.55);
transition: background var(--an-speed) ease, transform var(--an-speed) ease;
}
.an-banner-dots button:hover { background: #fff; }
.an-banner-dots button.active {
background: #fff;
transform: scale(1.25);
box-shadow: 0 0 0 3px rgba(255,255,255,.25);
}
/* ---------------------------------------------------------------------
7. 区块标题(居中双线 + 下短横)与区块通用
--------------------------------------------------------------------- */
.an-section { margin-top: 40px; }
.an-block-head {
position: relative;
text-align: center;
padding: 14px 0 12px;
border-top: 1px solid var(--an-border);
border-bottom: 1px solid var(--an-border);
}
.an-block-head h2 {
display: inline-block;
position: relative;
font-size: 22px;
font-weight: 700;
letter-spacing: 3px;
color: var(--an-primary-dark);
}
/* 标题下短横:主蓝 3px */
.an-block-tick {
position: absolute; left: 50%; bottom: -2px;
width: 42px; height: 3px;
transform: translateX(-50%);
background: var(--an-primary);
border-radius: 2px;
}
/* 栏目卡头变体:左右布局(标题居左 + 更多居右) */
.an-block-head--bar {
text-align: left;
padding: 0 0 10px;
border-top: 0;
border-bottom: 2px solid var(--an-primary);
display: flex; align-items: baseline; justify-content: space-between;
}
.an-block-head--bar h2 {
font-size: 19px;
letter-spacing: 1px;
padding-left: 12px;
position: relative;
}
/* 标题左侧竖条 */
.an-block-head--bar h2::before {
content: "";
position: absolute; left: 0; top: 6px; bottom: 6px;
width: 4px;
background: var(--an-primary);
border-radius: 2px;
}
.an-block-head--bar .an-block-tick { display: none; }
.an-more {
font-size: 13px;
font-weight: 400;
color: var(--an-text-light);
letter-spacing: 0;
transition: color var(--an-speed) ease, transform var(--an-speed) ease;
}
.an-more:hover { color: var(--an-primary); transform: translateX(3px); }
/* ---------------------------------------------------------------------
8. 头条区(左:头条推荐列表 / 右:图片新闻)
--------------------------------------------------------------------- */
.an-headline {
display: grid;
grid-template-columns: 7fr 5fr;
gap: 28px;
}
/* grid 项允许收缩到轨道内:否则 nowrap 省略文本会把 auto 最小宽撑破容器(移动端横向溢出) */
.an-headline > * { min-width: 0; }
.an-headline-card,
.an-focus-card {
background: var(--an-card-bg);
border-radius: var(--an-radius-lg);
box-shadow: var(--an-shadow-sm);
padding: 6px 22px 18px;
}
/* 头条推荐 */
.an-headline-list li {
display: flex; align-items: center; gap: 10px;
padding: 10px 2px;
border-bottom: 1px dashed var(--an-border);
}
.an-headline-list li:last-child { border-bottom: 0; }
.an-headline-list li a {
flex: 1; min-width: 0;
color: var(--an-text);
font-size: 15px;
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
transition: color var(--an-speed) ease, padding-left var(--an-speed) ease;
}
.an-headline-list li a:hover { color: var(--an-primary); padding-left: 4px; }
.an-headline-list time { flex: none; color: var(--an-text-light); font-size: 13px; }
/* 头条头条:大标题 + 元信息 */
.an-headline-lead {
display: block !important;
padding: 14px 2px 16px !important;
}
.an-lead-title {
display: block;
font-size: 19px !important;
font-weight: 700;
color: var(--an-primary-dark) !important;
line-height: 1.5;
white-space: normal !important;
overflow: hidden;
max-height: 3em;
}
.an-lead-title:hover { color: var(--an-primary) !important; padding-left: 0 !important; }
.an-lead-meta {
display: flex; align-items: center; gap: 10px;
margin-top: 8px;
font-size: 13px; color: var(--an-text-light);
}
/* 图片新闻 */
.an-focus-lead {
display: block;
margin-top: 14px;
border-radius: var(--an-radius);
overflow: hidden;
position: relative;
}
.an-focus-cover { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--an-bg); }
.an-focus-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.an-focus-lead:hover .an-focus-cover img { transform: scale(1.05); }
.an-focus-title {
position: absolute; left: 0; right: 0; bottom: 0;
padding: 26px 14px 10px;
color: #fff; font-size: 15px; font-weight: 600;
background: linear-gradient(180deg, transparent, rgba(6,49,97,.82));
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.an-focus-rows { margin-top: 10px; }
.an-focus-rows li a {
display: flex; align-items: center; gap: 12px;
padding: 8px 0;
}
.an-row-cover {
flex: none;
width: 104px; height: 66px;
border-radius: 4px;
overflow: hidden;
background: var(--an-bg);
}
.an-row-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.an-focus-rows li a:hover .an-row-cover img { transform: scale(1.06); }
.an-row-title {
flex: 1; min-width: 0;
color: var(--an-text);
font-size: 14px;
line-height: 1.55;
max-height: 3.1em;
overflow: hidden;
transition: color var(--an-speed) ease;
}
.an-focus-rows li a:hover .an-row-title { color: var(--an-primary); }
/* ---------------------------------------------------------------------
9. 栏目区块(白卡三列 + 日期方块行)
--------------------------------------------------------------------- */
.an-blocks {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
margin-top: 14px;
}
.an-block {
background: var(--an-card-bg);
border-radius: var(--an-radius-lg);
box-shadow: var(--an-shadow-sm);
padding: 18px 20px 14px;
display: flex; flex-direction: column;
min-width: 0;
transition: box-shadow var(--an-speed) ease, transform var(--an-speed) ease;
}
.an-block:hover { box-shadow: var(--an-shadow-md); transform: translateY(-2px); }
.an-block-list { flex: 1; }
/* 区块头条(有封面图文 / 无封面纯文) */
.an-block-featured { border-bottom: 1px solid var(--an-border); }
.an-block-featured > a {
display: block;
padding: 12px 0 14px;
}
.an-feat-cover {
display: block;
aspect-ratio: 16/9;
border-radius: var(--an-radius);
overflow: hidden;
background: var(--an-bg);
margin-bottom: 10px;
}
.an-feat-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.an-block-featured > a:hover .an-feat-cover img { transform: scale(1.04); }
.an-feat-title {
display: block;
font-size: 16px; font-weight: 700;
color: var(--an-primary-dark);
line-height: 1.5;
max-height: 3em;
overflow: hidden;
transition: color var(--an-speed) ease;
}
.an-block-featured > a:hover .an-feat-title { color: var(--an-primary); }
.an-feat-summary {
display: block;
margin-top: 6px;
font-size: 13px; color: var(--an-text-light);
line-height: 1.65;
max-height: 3.3em;
overflow: hidden;
}
.an-feat-meta {
display: flex; align-items: center; gap: 10px;
margin-top: 8px;
font-size: 12px; color: var(--an-text-light);
}
/* 列表行:日期方块 + 标题(建平通知公告语言) */
.an-block-item {
display: flex; align-items: center; gap: 12px;
padding: 8px 0;
border-bottom: 1px dashed var(--an-border);
}
.an-block-item:last-child { border-bottom: 0; }
.an-date-chip {
flex: none;
width: 46px;
text-align: center;
border-radius: 4px;
overflow: hidden;
background: var(--an-bg);
border: 1px solid var(--an-border);
transition: background var(--an-speed) ease, border-color var(--an-speed) ease;
}
.an-date-chip b {
display: block;
font-size: 17px; line-height: 24px;
font-weight: 700;
color: var(--an-primary);
background: rgba(11,74,143,.08);
transition: color var(--an-speed) ease;
}
.an-date-chip i {
display: block;
font-style: normal;
font-size: 10px; line-height: 16px;
color: var(--an-text-light);
transform: scale(.92);
}
.an-block-item:hover .an-date-chip {
background: var(--an-primary);
border-color: var(--an-primary);
}
.an-block-item:hover .an-date-chip b { color: #fff; background: transparent; }
.an-block-item:hover .an-date-chip i { color: rgba(255,255,255,.8); }
.an-block-item-title {
flex: 1; min-width: 0;
font-size: 14px;
color: var(--an-text);
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
transition: color var(--an-speed) ease;
}
.an-block-item:hover .an-block-item-title { color: var(--an-primary); }
/* ---------------------------------------------------------------------
10. 列表/详情/单页公共:页面卡 + 面包屑 + 页题
--------------------------------------------------------------------- */
.an-page { padding: 28px 0 48px; }
.an-page-card {
background: var(--an-card-bg);
border-radius: var(--an-radius-lg);
box-shadow: var(--an-shadow-sm);
padding: 26px 32px 34px;
min-height: 420px;
}
.an-crumb {
display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
font-size: 13px;
color: var(--an-text-light);
padding-bottom: 14px;
border-bottom: 1px solid var(--an-border);
margin-bottom: 20px;
}
.an-crumb a { color: var(--an-text-light); }
.an-crumb a:hover { color: var(--an-primary); }
.an-crumb-sep { color: #c3cad4; }
.an-crumb-current { color: var(--an-primary); }
.an-page-title {
position: relative;
font-size: 23px;
font-weight: 700;
letter-spacing: 1px;
color: var(--an-primary-dark);
padding-left: 16px;
margin-bottom: 22px;
}
.an-page-title::before {
content: "";
position: absolute; left: 0; top: 5px; bottom: 5px;
width: 5px;
border-radius: 3px;
background: linear-gradient(180deg, var(--an-primary), var(--an-primary-light));
}
/* ---------------------------------------------------------------------
11. 列表页:图文行 + 行式列表 + 分页
--------------------------------------------------------------------- */
.an-article-list > li { border-bottom: 1px solid var(--an-border); }
.an-article-list > li:last-child { border-bottom: 0; }
/* 图文行 */
.an-article-row {
display: flex; gap: 20px;
padding: 18px 2px;
}
.an-item-cover {
flex: none;
width: 216px; aspect-ratio: 3/2;
border-radius: var(--an-radius);
overflow: hidden;
background: var(--an-bg);
}
.an-item-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.an-article-row:hover .an-item-cover img { transform: scale(1.05); }
.an-item-body { flex: 1; min-width: 0; padding-top: 4px; }
.an-item-title a {
font-size: 17px; font-weight: 600;
color: var(--an-text);
line-height: 1.5;
transition: color var(--an-speed) ease;
}
.an-item-title a:hover { color: var(--an-primary); }
.an-item-summary {
margin-top: 8px;
font-size: 13px; color: var(--an-text-light);
line-height: 1.7;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.an-item-meta {
display: flex; align-items: center; gap: 12px;
margin-top: 10px;
font-size: 12px; color: var(--an-text-light);
}
/* 行式(无封面):刻度符号 + 标题 + 右侧日期 */
.an-article-line {
display: flex; align-items: center; gap: 12px;
padding: 13px 2px;
}
.an-line-tick {
flex: none;
width: 6px; height: 6px;
background: var(--an-primary);
transform: rotate(45deg);
opacity: .85;
transition: transform var(--an-speed) ease;
}
.an-article-line:hover .an-line-tick { transform: rotate(45deg) scale(1.35); }
.an-line-main { flex: 1; min-width: 0; }
.an-line-title {
display: block;
font-size: 15px;
color: var(--an-text);
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
transition: color var(--an-speed) ease, padding-left var(--an-speed) ease;
}
.an-article-line:hover .an-line-title { color: var(--an-primary); padding-left: 4px; }
.an-article-line .an-item-summary { margin-top: 4px; -webkit-line-clamp: 1; }
.an-line-side {
flex: none;
display: flex; align-items: center; gap: 10px;
font-size: 13px; color: var(--an-text-light);
}
/* 分页 */
.an-pagination {
display: flex; justify-content: center; flex-wrap: wrap; gap: 8px;
margin-top: 30px;
}
.an-pagination a {
min-width: 36px; height: 36px;
display: inline-flex; align-items: center; justify-content: center;
padding: 0 10px;
font-size: 14px;
color: var(--an-text);
background: var(--an-bg);
border: 1px solid var(--an-border);
border-radius: 4px;
transition: all var(--an-speed) ease;
}
.an-pagination a:hover {
color: #fff;
background: var(--an-primary);
border-color: var(--an-primary);
}
.an-pagination a.active {
color: #fff;
background: var(--an-primary);
border-color: var(--an-primary);
font-weight: 700;
box-shadow: 0 3px 8px rgba(11,74,143,.35);
}
.an-pagination a.disabled {
opacity: .45; pointer-events: none;
}
/* ---------------------------------------------------------------------
12. 详情/单页:文章排版
--------------------------------------------------------------------- */
.an-article-title {
text-align: center;
font-size: 24px;
font-weight: 700;
color: var(--an-primary-dark);
line-height: 1.5;
padding: 6px 20px 0;
}
.an-article-meta {
display: flex; justify-content: center; flex-wrap: wrap; gap: 6px 22px;
padding: 14px 0 18px;
margin-bottom: 24px;
font-size: 13px; color: var(--an-text-light);
border-bottom: 1px solid var(--an-border);
position: relative;
}
/* 标题下居中短横(与区块标题语言呼应) */
.an-article-meta::before {
content: "";
position: absolute; left: 50%; top: -12px;
width: 42px; height: 3px;
transform: translateX(-50%);
background: var(--an-primary);
border-radius: 2px;
}
.an-article-content {
font-size: 15px;
line-height: 1.9;
color: var(--an-text);
}
.an-article-content p { margin: 0 0 14px; }
.an-article-content h1, .an-article-content h2,
.an-article-content h3, .an-article-content h4 {
margin: 22px 0 12px;
color: var(--an-primary-dark);
font-weight: 700;
}
.an-article-content h2 { font-size: 19px; }
.an-article-content h3 { font-size: 17px; }
.an-article-content h4 { font-size: 15px; }
.an-article-content img {
max-width: 100%;
height: auto;
border-radius: var(--an-radius);
margin: 6px auto 14px;
box-shadow: var(--an-shadow-sm);
}
.an-article-content ul, .an-article-content ol {
margin: 0 0 14px; padding-left: 26px;
}
.an-article-content ul li { list-style: disc; }
.an-article-content ol li { list-style: decimal; }
.an-article-content li { margin-bottom: 6px; }
.an-article-content blockquote {
margin: 14px 0;
padding: 12px 18px;
background: rgba(11,74,143,.05);
border-left: 4px solid var(--an-primary);
border-radius: 0 var(--an-radius) var(--an-radius) 0;
color: var(--an-text-light);
}
.an-article-content table {
width: 100%;
border-collapse: collapse;
margin: 14px 0;
font-size: 14px;
}
.an-article-content th, .an-article-content td {
border: 1px solid var(--an-border);
padding: 8px 12px;
text-align: left;
}
.an-article-content th {
background: rgba(11,74,143,.06);
color: var(--an-primary-dark);
font-weight: 600;
}
.an-article-content a { color: var(--an-primary-light); text-decoration: underline; }
.an-article-content hr {
border: 0; height: 1px;
background: var(--an-border);
margin: 20px 0;
}
.an-article-content video, .an-article-content audio { max-width: 100%; }
/* 上下篇 */
.an-sibling {
display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
margin-top: 34px;
padding-top: 22px;
border-top: 1px solid var(--an-border);
}
.an-sib, .an-sib-none {
display: block;
padding: 12px 16px;
border: 1px solid var(--an-border);
border-radius: var(--an-radius);
background: var(--an-bg);
min-width: 0;
transition: border-color var(--an-speed) ease, background var(--an-speed) ease, box-shadow var(--an-speed) ease;
}
.an-sib:hover {
border-color: var(--an-primary);
background: var(--an-card-bg);
box-shadow: var(--an-shadow-sm);
}
.an-sib.next { text-align: right; }
.an-sib-label {
display: block;
font-size: 12px;
color: var(--an-primary);
letter-spacing: 2px;
margin-bottom: 4px;
}
.an-sib-title {
display: block;
font-size: 14px;
color: var(--an-text);
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.an-sib-none { opacity: .6; }
.an-sib-none .an-sib-label { color: var(--an-text-light); }
/* ---------------------------------------------------------------------
13. 页脚(深蓝渐变 + 同心圆环纹理 + 三栏 + 底条)
--------------------------------------------------------------------- */
.an-footer {
position: relative;
margin-top: 56px;
color: var(--an-ink-on-dark);
background: linear-gradient(160deg, var(--an-footer-bg) 0%, var(--an-primary-dark) 100%);
overflow: hidden;
}
/* 同心圆环纹理(CSS 绘制,呼应校徽环形语言) */
.an-ring {
position: absolute;
border-radius: 50%;
border: 2px solid rgba(255,255,255,.06);
pointer-events: none;
}
.an-ring--1 { width: 460px; height: 460px; right: -140px; top: -160px; border-width: 30px; }
.an-ring--2 { width: 300px; height: 300px; right: -60px; top: -80px; border-width: 18px; }
.an-ring--3 { width: 520px; height: 520px; left: -200px; bottom: -300px; border-width: 34px; }
.an-footer-inner {
width: 1200px; max-width: calc(100% - 40px);
margin: 0 auto;
position: relative; z-index: 1;
display: grid;
grid-template-columns: 1.1fr 1.2fr 1.4fr;
gap: 40px;
padding: 44px 0 36px;
}
.an-footer-inner > * { min-width: 0; }
.an-footer-brand {
display: flex; align-items: center; gap: 14px;
}
.an-footer-badge {
flex: none;
width: 66px; height: 66px;
display: inline-flex; align-items: center; justify-content: center;
background: rgba(255,255,255,.94);
border-radius: var(--an-radius);
overflow: hidden;
box-shadow: 0 2px 10px rgba(6,49,97,.4);
}
.an-footer-badge--plain { color: var(--an-primary); }
.an-footer-logo { width: 100%; height: 100%; object-fit: contain; }
.an-footer-site {
font-size: 21px;
font-weight: 700;
letter-spacing: 1.5px;
line-height: 1.45;
text-shadow: 0 2px 6px rgba(6,49,97,.4);
}
.an-footer-info { padding-top: 6px; }
.an-footer-line {
display: flex; align-items: baseline; gap: 10px;
margin-bottom: 10px;
font-size: 13px;
color: var(--an-ink-on-dark-soft);
line-height: 1.7;
}
.an-dot {
flex: none;
width: 6px; height: 6px;
background: var(--an-primary-light);
border-radius: 50%;
transform: translateY(-2px);
box-shadow: 0 0 6px rgba(17,103,187,.9);
}
.an-footer-links {
padding-top: 6px;
display: grid; grid-template-columns: 1fr 1fr; gap: 8px 28px;
}
.an-group-name {
display: inline-block;
font-size: 13px; font-weight: 600;
color: #fff;
padding-bottom: 4px;
margin-bottom: 6px;
border-bottom: 2px solid var(--an-primary-light);
}
.an-links-row {
display: flex; flex-wrap: wrap; gap: 4px 14px;
margin-bottom: 10px;
}
.an-links-row a {
font-size: 13px;
color: var(--an-ink-on-dark-soft);
transition: color var(--an-speed) ease, padding-left var(--an-speed) ease;
}
.an-links-row a:hover { color: #fff; padding-left: 2px; }
.an-footer-bottom {
position: relative; z-index: 1;
border-top: 1px solid rgba(255,255,255,.14);
text-align: center;
padding: 16px 0;
font-size: 13px;
color: var(--an-ink-on-dark-faint);
letter-spacing: 1px;
}
/* ---------------------------------------------------------------------
14. 响应式:1200 / 992 / 768 三档
--------------------------------------------------------------------- */
@media (max-width: 1240px) {
.an-container, .an-topbar-inner, .an-brandbar-inner, .an-nav-inner { max-width: calc(100% - 40px); }
}
@media (max-width: 992px) {
.an-site-name { font-size: 22px; max-width: 380px; }
.an-search { width: 240px; }
.an-nav-list { flex-wrap: wrap; justify-content: flex-start; }
.an-nav-list > li { flex: 0 0 auto; }
.an-nav-list > li > a { height: 46px; font-size: 15px; padding: 0 12px; }
.an-headline { grid-template-columns: 1fr; }
.an-blocks { grid-template-columns: repeat(2, 1fr); }
.an-banner-slides { height: 380px; }
.an-banner-title { font-size: 19px; bottom: 28px; }
.an-footer-inner { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
/* —— 品牌行收纳 —— */
.an-brandbar-inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 0; }
.an-site-name { font-size: 19px; max-width: none; white-space: normal; }
.an-brand { justify-content: center; }
.an-search { width: 100%; max-width: none; }
/* —— 移动端导航:抽屉展开 —— */
.an-nav-toggle {
display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
width: 44px; height: 40px;
padding: 8px;
border: 1px solid var(--an-border);
border-radius: var(--an-radius);
background: var(--an-card-bg);
}
.an-nav-toggle span {
display: block; height: 2px;
background: var(--an-primary);
border-radius: 2px;
transition: transform var(--an-speed) ease, opacity var(--an-speed) ease;
}
.an-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.an-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.an-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.an-nav-inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; }
/* 吸顶在移动端直接融入文档流配色 */
.an-nav--fixed { position: sticky; animation: none; }
.an-nav-list {
display: none;
position: absolute; left: -20px; right: -20px; top: 100%;
flex-direction: column;
background: var(--an-card-bg);
box-shadow: var(--an-shadow-md);
border-top: 1px solid var(--an-border);
padding: 6px 16px 12px;
max-height: 68vh; overflow: auto;
}
.an-nav-list.an-open { display: flex; }
.an-nav-list > li { text-align: left; border-bottom: 1px solid var(--an-border); }
.an-nav-list > li:last-child { border-bottom: 0; }
.an-nav-list > li > a { height: 46px; justify-content: flex-start; }
.an-nav-list > li > a::after { display: none; }
/* 移动端二级:手风琴内联展开(.an-sub-open 由 main.js 控制) */
.an-sub {
position: static;
display: none;
transform: none;
opacity: 1; visibility: visible;
background: var(--an-bg);
border-top: 0;
box-shadow: none;
border-radius: 0;
margin: 0 -8px 8px;
padding: 4px 0;
}
.an-sub::before { display: none; }
.an-sub li a { color: var(--an-text); margin: 0 8px; }
.an-sub li a:hover { background: rgba(11,74,143,.08); color: var(--an-primary); }
.an-sub li a::before { background: var(--an-primary); opacity: .5; }
.an-nav-list li.an-sub-open .an-sub { display: block; }
.an-nav-list li.has-sub > a { cursor: pointer; }
/* —— 内容收纳 —— */
.an-banner-slides { height: 240px; }
.an-banner-title { font-size: 15px; left: 16px; bottom: 20px; max-width: 85%; }
.an-banner-arrow { display: none; }
.an-section { margin-top: 28px; }
.an-blocks { grid-template-columns: 1fr; }
.an-block-head h2 { font-size: 19px; }
.an-article-row { flex-direction: column; gap: 12px; }
.an-item-cover { width: 100%; }
.an-article-line { flex-wrap: wrap; }
.an-line-side { width: 100%; padding-left: 18px; }
.an-page-card { padding: 18px 16px 24px; }
.an-article-title { font-size: 20px; padding: 0; }
.an-article-meta { gap: 4px 14px; }
.an-sibling { grid-template-columns: 1fr; }
.an-sib-title { white-space: normal; }
.an-footer-inner { grid-template-columns: 1fr; gap: 26px; padding: 32px 0 26px; }
.an-footer-links { grid-template-columns: 1fr; }
.an-ring--1 { width: 300px; height: 300px; border-width: 20px; }
}
/* ---------------------------------------------------------------------
15. 动效偏好:尊重系统减弱动态设置
--------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: .01ms !important;
animation-iteration-count: 1 !important;
transition-duration: .01ms !important;
}
}
/* B4 友链 Logo:与名称并排小图(高度 ~20px,垂直居中;过宽截断不撑破页脚) */
.links-group a .link-logo,
.an-links-row a .link-logo {
height: 20px;
width: auto;
max-width: 64px;
object-fit: contain;
vertical-align: middle;
margin-right: 4px;
border-radius: 2px;
}
/* ===== 左侧栏目导航(docs/11):有二级节点的模块,栏目/文章页左侧展示兄弟目录 ===== */
.an-cols { display: flex; align-items: flex-start; gap: 28px; }
.an-cols .an-page-card { flex: 1; min-width: 0; }
.an-side-nav {
flex: none;
width: 230px;
background: var(--an-card-bg);
border: 1px solid var(--an-border);
border-top: 3px solid var(--an-primary);
box-shadow: var(--an-shadow-md);
}
.an-side-nav-head {
background: var(--an-primary);
color: #fff;
font-size: 20px;
font-weight: 700;
text-align: center;
padding: 18px 12px;
letter-spacing: 3px;
}
.an-side-nav-list { list-style: none; margin: 0; padding: 0; }
.an-side-nav-item + .an-side-nav-item { border-top: 1px solid var(--an-border); }
.an-side-nav-item a {
display: block;
padding: 13px 18px;
color: var(--an-text);
text-decoration: none;
font-size: 15px;
border-left: 3px solid transparent;
transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.an-side-nav-item a:hover { color: var(--an-primary); background: var(--an-panel); }
.an-side-nav-item.active a {
background: var(--an-primary);
color: #fff;
font-weight: 600;
text-decoration: none;
border-left-color: var(--an-primary-light);
}
/* 顶导航二级下拉当前项高亮(docs/11 顺带) */
.an-nav-list ul.an-sub li.active a { color: var(--an-primary-light); }
@media (max-width: 768px) {
.an-cols { flex-direction: column; gap: 16px; }
.an-side-nav { width: 100%; }
.an-side-nav-list { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.an-side-nav-item { flex: none; }
.an-side-nav-item + .an-side-nav-item { border-top: none; border-left: 1px solid var(--an-border); }
.an-side-nav-item a { white-space: nowrap; border-left: none; }
}
@media print {
.an-side-nav { display: none; }
.an-cols { display: block; }
}
/* ---------------------------------------------------------------------
16. 首页布局模式区块(fragments/home-blocks.html)
站点配了 home_layout 时首页正文由本主题渲染:整宽区块卡 + 双栏要闻 + 藏蓝速递条。
--------------------------------------------------------------------- */
/* 藏蓝配金线:标题左竖条与居中线脚改用点缀金,区别于基座 scholar-blue 的全蓝语言 */
.an-block-head--bar h2::before { background: var(--an-accent); }
.an-block-tick { background: var(--an-accent); }
.an-section { position: relative; }
.an-sec-bg {
position: absolute; inset: 0; z-index: 0;
background-size: cover; background-position: center;
opacity: .45; pointer-events: none;
}
/* 定位元素默认画在普通流之上:不抬 z-index,背景带会糊在卡片正面(截图实测整卡泛绿)。
带图时卡片转半透明白,让底图若隐若现——高校官网新闻带的通行做法 */
.an-sec-bg + .an-block { position: relative; z-index: 1; background: rgba(255, 255, 255, .88); }
.an-block--flow { padding: 20px 26px 12px; }
.an-block--flow:hover { transform: none; box-shadow: var(--an-shadow-sm); }
/* grid 轨道用 minmax(0,1fr):否则 nowrap 省略行的 min-content 会撑破轨道(中文标题尤其明显) */
.an-split {
display: grid;
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
gap: 26px;
padding-top: 14px;
}
.an-split > * { min-width: 0; }
/* 头条图限高 + 右列行均分:否则左图按 16/9 撑到 400px,右列 5 行挤在顶部留大片空白 */
.an-split .an-feat-cover { max-height: 300px; }
.an-split .an-block-list { display: flex; flex-direction: column; justify-content: space-between; }
.an-split .an-block-item { padding: 12px 0; }
.an-block-list--two { columns: 2; column-gap: 34px; }
.an-block-list--two .an-block-item { break-inside: avoid; }
.an-feat-cover--row { aspect-ratio: 16 / 7; }
.an-item-date {
flex: none;
font-size: 12px; color: var(--an-text-light);
font-variant-numeric: tabular-nums;
}
.an-src {
flex: none;
font-size: 11px; line-height: 18px; padding: 0 6px;
color: var(--an-primary); border: 1px solid var(--an-primary);
border-radius: 2px;
}
.an-wall {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 14px;
margin: 16px 0 0;
}
.an-wall-item {
position: relative;
border-radius: var(--an-radius);
overflow: hidden;
box-shadow: var(--an-shadow-sm);
}
.an-wall-item img { width: 100%; height: 158px; object-fit: cover; transition: transform .5s ease; }
.an-wall-item:hover img { transform: scale(1.05); }
.an-wall-cap {
position: absolute; left: 0; right: 0; bottom: 0;
padding: 26px 10px 9px;
font-size: 13px; color: #fff;
background: linear-gradient(transparent, rgba(6, 49, 97, .85));
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.an-gallery-sub {
margin: -4px 0 4px;
text-align: center;
font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
color: var(--an-text-light);
}
/* 速递条:flex 项自动最小尺寸 = min-content,中文可按字断行 → 不锁 nowrap/不收缩就会塌成一字一列 */
.an-ticker {
position: relative;
background: var(--an-primary);
color: #fff;
padding: 11px 0;
font-size: 14px;
}
.an-ticker-inner { display: flex; align-items: center; gap: 16px; min-width: 0; }
.an-ticker-label {
flex: none;
font-weight: 700; letter-spacing: .06em;
padding-right: 14px;
border-right: 1px solid rgba(255, 255, 255, .35);
}
.an-ticker-list {
display: flex; gap: 28px;
flex: 1; min-width: 0;
overflow: hidden; white-space: nowrap;
}
.an-ticker-list li { flex: none; min-width: 0; }
.an-ticker-item {
display: block; flex: none;
max-width: 320px;
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
color: #fff; opacity: .92;
}
.an-ticker-item:hover { opacity: 1; text-decoration: underline; }
.an-links-group {
margin: 12px 0 0;
font-size: 13px; letter-spacing: .08em;
color: var(--an-text-light);
}
.an-links { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 0; }
.an-links a {
font-size: 13px; color: var(--an-text-light);
padding: 4px 14px;
background: var(--an-card-bg);
border: 1px solid var(--an-border);
border-radius: 999px;
}
.an-links a:hover { color: var(--an-primary); border-color: var(--an-primary); }
@media (max-width: 992px) {
.an-split { grid-template-columns: minmax(0, 1fr); }
.an-wall { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.an-block-list--two { columns: 1; }
.an-ticker-item { max-width: 180px; }
.an-block--flow { padding: 16px 16px 8px; }
}