From d2df12b91e746c542b5f0adb0900ef928eb2915d Mon Sep 17 00:00:00 2001 From: chenxing Date: Sat, 19 Sep 2026 20:21:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(theme)!:=20=E4=B8=8B=E7=BA=BF=E7=B2=89/?= =?UTF-8?q?=E7=B4=AB=E4=B8=A4=E5=8C=85=EF=BC=8C=E6=94=B9=E4=BB=A5=E5=AD=A6?= =?UTF-8?q?=E9=99=A2=E8=93=9D=E4=B8=BA=E5=9F=BA=E5=BA=A7=E4=BA=A4=E4=BB=98?= =?UTF-8?q?=20academic-navy/campus-azure=20=E4=B8=A4=E5=A5=97=E9=AB=98?= =?UTF-8?q?=E6=A0=A1=E5=AE=98=E7=BD=91=E9=A3=8E=E7=9A=AE=E8=82=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 线上 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 项通过 --- sql/edge_seed_visual.sql | 6 +- sql/upgrade_theme_academic_skins.sql | 21 + .../templates/themes/academic-navy/README.md | 33 + .../themes/academic-navy/assets/css/main.css | 1497 ++++++++++++++++ .../themes/academic-navy/assets/favicon.png | Bin 0 -> 721 bytes .../themes/academic-navy/assets/favicon.svg | 4 + .../themes/academic-navy/assets/js/main.js | 190 ++ .../academic-navy/assets/screenshot.png | Bin 0 -> 132654 bytes .../themes/academic-navy/detail.html | 76 + .../academic-navy/fragments/footer.html | 59 + .../fragments/head.html | 5 +- .../academic-navy/fragments/header.html | 86 + .../academic-navy/fragments/home-blocks.html | 205 +++ .../templates/themes/academic-navy/home.html | 149 ++ .../templates/themes/academic-navy/list.html | 105 ++ .../themes/academic-navy/single.html | 50 + .../templates/themes/academic-navy/theme.json | 23 + .../templates/themes/campus-azure/README.md | 33 + .../themes/campus-azure/assets/css/main.css | 1535 +++++++++++++++++ .../themes/campus-azure/assets/favicon.png | Bin 0 -> 721 bytes .../themes/campus-azure/assets/favicon.svg | 4 + .../themes/campus-azure/assets/js/main.js | 190 ++ .../themes/campus-azure/assets/screenshot.png | Bin 0 -> 129152 bytes .../templates/themes/campus-azure/detail.html | 76 + .../themes/campus-azure/fragments/footer.html | 59 + .../fragments/head.html | 5 +- .../themes/campus-azure/fragments/header.html | 86 + .../campus-azure/fragments/home-blocks.html | 209 +++ .../templates/themes/campus-azure/home.html | 149 ++ .../templates/themes/campus-azure/list.html | 105 ++ .../templates/themes/campus-azure/single.html | 50 + .../templates/themes/campus-azure/theme.json | 23 + .../templates/themes/cherry-bloom/README.md | 35 - .../themes/cherry-bloom/assets/css/main.css | 616 ------- .../themes/cherry-bloom/assets/favicon.png | Bin 5737 -> 0 bytes .../themes/cherry-bloom/assets/favicon.svg | 8 - .../themes/cherry-bloom/assets/js/main.js | 40 - .../themes/cherry-bloom/assets/screenshot.png | Bin 53359 -> 0 bytes .../templates/themes/cherry-bloom/detail.html | 58 - .../themes/cherry-bloom/fragments/footer.html | 21 - .../themes/cherry-bloom/fragments/header.html | 56 - .../templates/themes/cherry-bloom/home.html | 68 - .../templates/themes/cherry-bloom/list.html | 69 - .../templates/themes/cherry-bloom/single.html | 41 - .../templates/themes/cherry-bloom/theme.json | 22 - .../themes/common/fragments/home-blocks.html | 97 +- .../themes/mint-breeze/assets/css/main.css | 1 + .../themes/scholar-blue/assets/css/main.css | 12 + .../templates/themes/violet-iris/README.md | 35 - .../themes/violet-iris/assets/css/main.css | 616 ------- .../themes/violet-iris/assets/favicon.png | Bin 5084 -> 0 bytes .../themes/violet-iris/assets/favicon.svg | 8 - .../themes/violet-iris/assets/js/main.js | 40 - .../themes/violet-iris/assets/screenshot.png | Bin 52824 -> 0 bytes .../templates/themes/violet-iris/detail.html | 58 - .../themes/violet-iris/fragments/footer.html | 21 - .../themes/violet-iris/fragments/header.html | 56 - .../templates/themes/violet-iris/home.html | 68 - .../templates/themes/violet-iris/list.html | 69 - .../templates/themes/violet-iris/single.html | 41 - .../templates/themes/violet-iris/theme.json | 22 - .../yunhai/cms/portal/PortalHomeLayoutIT.java | 75 +- .../cms/theme/AcademicSkinContractTest.java | 194 +++ .../cms/theme/HomeBlocksCssContractTest.java | 115 ++ .../yunhai/cms/theme/ThemeRegistryTest.java | 21 +- 65 files changed, 5498 insertions(+), 2118 deletions(-) create mode 100644 sql/upgrade_theme_academic_skins.sql create mode 100644 src/main/resources/templates/themes/academic-navy/README.md create mode 100644 src/main/resources/templates/themes/academic-navy/assets/css/main.css create mode 100644 src/main/resources/templates/themes/academic-navy/assets/favicon.png create mode 100644 src/main/resources/templates/themes/academic-navy/assets/favicon.svg create mode 100644 src/main/resources/templates/themes/academic-navy/assets/js/main.js create mode 100644 src/main/resources/templates/themes/academic-navy/assets/screenshot.png create mode 100644 src/main/resources/templates/themes/academic-navy/detail.html create mode 100644 src/main/resources/templates/themes/academic-navy/fragments/footer.html rename src/main/resources/templates/themes/{cherry-bloom => academic-navy}/fragments/head.html (74%) create mode 100644 src/main/resources/templates/themes/academic-navy/fragments/header.html create mode 100644 src/main/resources/templates/themes/academic-navy/fragments/home-blocks.html create mode 100644 src/main/resources/templates/themes/academic-navy/home.html create mode 100644 src/main/resources/templates/themes/academic-navy/list.html create mode 100644 src/main/resources/templates/themes/academic-navy/single.html create mode 100644 src/main/resources/templates/themes/academic-navy/theme.json create mode 100644 src/main/resources/templates/themes/campus-azure/README.md create mode 100644 src/main/resources/templates/themes/campus-azure/assets/css/main.css create mode 100644 src/main/resources/templates/themes/campus-azure/assets/favicon.png create mode 100644 src/main/resources/templates/themes/campus-azure/assets/favicon.svg create mode 100644 src/main/resources/templates/themes/campus-azure/assets/js/main.js create mode 100644 src/main/resources/templates/themes/campus-azure/assets/screenshot.png create mode 100644 src/main/resources/templates/themes/campus-azure/detail.html create mode 100644 src/main/resources/templates/themes/campus-azure/fragments/footer.html rename src/main/resources/templates/themes/{violet-iris => campus-azure}/fragments/head.html (74%) create mode 100644 src/main/resources/templates/themes/campus-azure/fragments/header.html create mode 100644 src/main/resources/templates/themes/campus-azure/fragments/home-blocks.html create mode 100644 src/main/resources/templates/themes/campus-azure/home.html create mode 100644 src/main/resources/templates/themes/campus-azure/list.html create mode 100644 src/main/resources/templates/themes/campus-azure/single.html create mode 100644 src/main/resources/templates/themes/campus-azure/theme.json delete mode 100644 src/main/resources/templates/themes/cherry-bloom/README.md delete mode 100644 src/main/resources/templates/themes/cherry-bloom/assets/css/main.css delete mode 100644 src/main/resources/templates/themes/cherry-bloom/assets/favicon.png delete mode 100644 src/main/resources/templates/themes/cherry-bloom/assets/favicon.svg delete mode 100644 src/main/resources/templates/themes/cherry-bloom/assets/js/main.js delete mode 100644 src/main/resources/templates/themes/cherry-bloom/assets/screenshot.png delete mode 100644 src/main/resources/templates/themes/cherry-bloom/detail.html delete mode 100644 src/main/resources/templates/themes/cherry-bloom/fragments/footer.html delete mode 100644 src/main/resources/templates/themes/cherry-bloom/fragments/header.html delete mode 100644 src/main/resources/templates/themes/cherry-bloom/home.html delete mode 100644 src/main/resources/templates/themes/cherry-bloom/list.html delete mode 100644 src/main/resources/templates/themes/cherry-bloom/single.html delete mode 100644 src/main/resources/templates/themes/cherry-bloom/theme.json delete mode 100644 src/main/resources/templates/themes/violet-iris/README.md delete mode 100644 src/main/resources/templates/themes/violet-iris/assets/css/main.css delete mode 100644 src/main/resources/templates/themes/violet-iris/assets/favicon.png delete mode 100644 src/main/resources/templates/themes/violet-iris/assets/favicon.svg delete mode 100644 src/main/resources/templates/themes/violet-iris/assets/js/main.js delete mode 100644 src/main/resources/templates/themes/violet-iris/assets/screenshot.png delete mode 100644 src/main/resources/templates/themes/violet-iris/detail.html delete mode 100644 src/main/resources/templates/themes/violet-iris/fragments/footer.html delete mode 100644 src/main/resources/templates/themes/violet-iris/fragments/header.html delete mode 100644 src/main/resources/templates/themes/violet-iris/home.html delete mode 100644 src/main/resources/templates/themes/violet-iris/list.html delete mode 100644 src/main/resources/templates/themes/violet-iris/single.html delete mode 100644 src/main/resources/templates/themes/violet-iris/theme.json create mode 100644 src/test/java/com/yunhai/cms/theme/AcademicSkinContractTest.java create mode 100644 src/test/java/com/yunhai/cms/theme/HomeBlocksCssContractTest.java diff --git a/sql/edge_seed_visual.sql b/sql/edge_seed_visual.sql index 93cf330..a023f81 100644 --- a/sql/edge_seed_visual.sql +++ b/sql/edge_seed_visual.sql @@ -21,10 +21,10 @@ WHERE code = 'demo'; UPDATE cms_banner SET status = 0 WHERE id = 5; -- 2) 院系子站(demo 的子站:header 出"专业院系"下拉;不配 public_base_url=按请求派生) --- 主题应用:jdx→cherry-bloom(樱语粉韵)、xxgc→violet-iris(鸢尾紫韵)——两套新皮肤随种子落地可视验收 +-- 主题应用:jdx→academic-navy(学府藏蓝)、xxgc→campus-azure(青蓝校园)——两套高校官网风皮肤随种子落地可视验收 INSERT INTO cms_site (id, code, parent_site_id, sch_id, sch_name, name, theme, config_json, status, create_by, create_time) VALUES -(6, 'jdx', 1, 990001, '云海大学', '机电学院', 'cherry-bloom', '{"copyright": "机电学院"}', 1, 'cmssuper', NOW()), -(7, 'xxgc', 1, 990001, '云海大学', '信息工程学院', 'violet-iris', '{"copyright": "信息工程学院"}', 1, 'cmssuper', NOW()); +(6, 'jdx', 1, 990001, '云海大学', '机电学院', 'academic-navy', '{"copyright": "机电学院"}', 1, 'cmssuper', NOW()), +(7, 'xxgc', 1, 990001, '云海大学', '信息工程学院', 'campus-azure', '{"copyright": "信息工程学院"}', 1, 'cmssuper', NOW()); INSERT INTO cms_category (id, site_id, parent_id, name, type, link_url, content, sort_no, status, create_by, create_time) VALUES (61, 6, 0, '学院概况', 2, NULL, '

机电学院(视觉精修种子)。

', 1, 1, 'cmssuper', NOW()), (62, 6, 0, '学院新闻', 1, NULL, NULL, 2, 1, 'cmssuper', NOW()), diff --git a/sql/upgrade_theme_academic_skins.sql b/sql/upgrade_theme_academic_skins.sql new file mode 100644 index 0000000..cd059fc --- /dev/null +++ b/sql/upgrade_theme_academic_skins.sql @@ -0,0 +1,21 @@ +-- ============================================================ +-- 皮肤升级脚本:粉/紫两包下线 → 高校官网风两包接管(幂等,存量库执行一次即可) +-- 背景:cherry-bloom(樱语粉韵)/ violet-iris(鸢尾紫韵)不符合高校门户视觉,已从模板库删除; +-- 存量站点若仍指向这两个主题,ThemeRegistry 匹配不到会静默回落 default(皮肤全丢), +-- 故必须把 theme 列改到新包:academic-navy(学府藏蓝)/ campus-azure(青蓝校园)。 +-- 目标库:存量 bsch_cms(生产/预发);干净环境无需本脚本 +-- 顺序:备份查询 → 回填 → 校验 +-- ============================================================ + +-- 1) 先看受影响站点(人工确认后再执行第 2 步) +SELECT id, path, name, theme FROM cms_site WHERE theme IN ('cherry-bloom', 'violet-iris'); + +-- 2) 回填:粉韵→学府藏蓝,紫韵→青蓝校园(仅命中旧值,重复执行无副作用) +UPDATE cms_site SET theme = 'academic-navy' WHERE theme = 'cherry-bloom'; +UPDATE cms_site SET theme = 'campus-azure' WHERE theme = 'violet-iris'; + +-- 3) 校验(应返回 0 行) +SELECT id, path, theme FROM cms_site WHERE theme IN ('cherry-bloom', 'violet-iris'); + +-- 备注:站点快照走 Caffeine CacheNames.SITE,TTL 30 分钟(±60s 抖动,见 CacheConfig), +-- 实测改库后 400s 门户仍是旧皮肤——改库后请重启服务,或在管理端重新保存一次站点(换肤会主动清缓存)。 diff --git a/src/main/resources/templates/themes/academic-navy/README.md b/src/main/resources/templates/themes/academic-navy/README.md new file mode 100644 index 0000000..7562bf7 --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/README.md @@ -0,0 +1,33 @@ +# academic-navy(学府藏蓝) + +高校官网风皮肤包:以 `scholar-blue` 为基座派生,配色与首页区块形态按综合类大学官网(浙江理工大学一类)重做。 +配了 `home_layout` 的站点,首页正文区块由本主题 `fragments/home-blocks.html` 渲染——派生包不自带区块形态时, +正文会落到 `themes/common` 的通用骨架,换肤就只剩页头页脚(线上事故根因,见《审计验收清单-20260919》)。 + +## 风格定位 + +- 主色藏蓝 `#0b4a8f` + 加深 `#063161` + 点缀金 `#b8934a`(标题左竖条与居中线脚走金线,区别于基座的全蓝语言)。 +- 圆角收紧到 4/8px、页脚 `#0a2b4d`,行高压到 40px 一档,整体比基座更「机关报」而非「校园活动页」。 +- 全部 11 个颜色参数可在站点 theme_params 微调(`primary/primaryDark/primaryLight/accent/navBg/footerBg/text/textLight/bg/cardBg/border`)。 + +## 首页区块形态(布局模式与回落模式同构) + +| homeStyle | 呈现 | 类名 | +| -- | -- | -- | +| `news_grid` | 双栏要闻:左 3 份图文头条(16:7 封面 + 摘要 + 元信息)、右 2 份紧凑行;区块背景可取站点 `news_bg_image` | `an-split` / `an-feat-*` | +| `compact` | 日期方块行:46px 见方的「日 + 年月」方块,hover 反白 | `an-date-chip` | +| `media_focus` | 媒体聚焦:来源徽标 + 双列密行 | `an-src` / `an-block-list--two` | +| `image_wall` | 四列图片墙:封面 + 底部渐变遮罩标题,hover 抬图 | `an-wall` | +| (空/未知) | 整宽区块卡:头条 + 行式列表 | `an-block--flow` | +| `ticker` | 藏蓝要闻速递横条(单行不换行、超长省略,中文不塌列) | `an-ticker*` | +| `gallery` | 线上展厅:居中双语文区头 + 四列图墙 | `an-gallery` | +| `links` | 友情链接分组(胶囊标签行) | `an-links` | + +## 契约要点 + +- 结构类前缀 `an-`,CSS 变量前缀 `--an-`;`:root` 把 `--an-*` 别名到皮肤契约变量(`--primary`/`--text`/`--card-bg`/`--border`…), + 使 `themes/common` 兜底骨架也能跟随本皮肤着色。 +- 空态文案「栏目暂无内容」只在 `block.items` 为空时出现;守卫必须写在 `th:block` 外层—— + `th:replace`(优先级 100)先于 `th:if`(300)求值,写在同一标签上等于没写。 +- 回归防线:`AcademicSkinContractTest`(自带区块 fragment + 中文不塌列 + 契约变量别名 + 主色必须学术蓝)、 + `PortalHomeLayoutIT#academicNavy_layoutUsesOwnFragments`(布局模式不落通用骨架)、`ThemeContractIT`(7 条路由)。 diff --git a/src/main/resources/templates/themes/academic-navy/assets/css/main.css b/src/main/resources/templates/themes/academic-navy/assets/css/main.css new file mode 100644 index 0000000..4b6886f --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/assets/css/main.css @@ -0,0 +1,1497 @@ +/* ===================================================================== + 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; } +} diff --git a/src/main/resources/templates/themes/academic-navy/assets/favicon.png b/src/main/resources/templates/themes/academic-navy/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac161567d559c4467b04ecbc99af34d157c90c3b GIT binary patch literal 721 zcmV;?0xtcDP) z%TB{U3`Nt375+dF{XP(Upt}Wul&URlUNhrsd+u2`RdSE*Nzy?ahC-g-KEH>KIeoky zN{-)kaPOhll(Fdm247#qst+>wb|S{54>0`wtjTUx0K+e5DZ_^X7=AtGvb-yR;n(L; zrvC&m{C3>S_DTT5Z_jPUi+4e!EoT9&emgF+W(R=z6Ts@XXUd!%0EPm<95{Zkumiw^ z7ohJiLuA4Wh|ZXy`ZaJDgcgv2umUu2)u#}UMMxR}Q3)wPgI0SQ0hz>v6QBV@P9-24 z=>%x74hbbdgN2(;Kt@qv1Zbd8QwqpRS^*lQV?qefAYrBzkeM-a^=p96sk$p7!Ufkr zj$ebz4ybuzUa5VJ&GrRl>jr65T+P;iOx++2uchfCoI!##z6P_ciP1)q7!{A%ZD^!! z5W{mdeGZ5qL5$DQ{6WmK1Oc2IbbGowSr?E+0euxA4!Qw-4r9*&h=T%f^%pW~G?F|7 z@1_H+gYgu;I{`i7N`M-SATM`bE(P=m1%ROdFm42>;cWJ_4!9A}D-;06g#ZPN1TSOA zg@BT$T5nIb-3XA2;3JC&CqQPxjwk^xKsU_dH34tw1`q21T)-OkjF>3h;9h_f1Q}s% zfC|u=5l}O{x$i-bA(tH>4XV~_Cp-;~kj5cR-;b_(mmMI673!%QU_Z)FRVd&v(C5K@ zK}T!>xZ0M|BW~7!UZDUm6aa<-z)%1f3IH>f{y$u@pWp1+0bnS=g8+^pd#23U0btGo z*adc6X3Y)&b0vUX(4O0j|8)Q*wBug3cSjH<)aOyA57z)nsK;EEvx_h#l(UrK;$09W z>}O4On_k56_v3YJDcW6cLMfu&v?zWR-Mfra;p_Y#f*

eT{`!00000NkvXXu0mjf D(ZMnA literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/themes/academic-navy/assets/favicon.svg b/src/main/resources/templates/themes/academic-navy/assets/favicon.svg new file mode 100644 index 0000000..b64acaf --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/assets/favicon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/resources/templates/themes/academic-navy/assets/js/main.js b/src/main/resources/templates/themes/academic-navy/assets/js/main.js new file mode 100644 index 0000000..4d2397b --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/assets/js/main.js @@ -0,0 +1,190 @@ +/* academic-navy 主题脚本:顶栏日期 + 轮播(圆点/箭头/触摸) + 导航吸顶反蓝 + 移动端抽屉与二级手风琴。 + 与 default 同源逻辑,无任何外部依赖。 */ +(function () { + 'use strict'; + + /* ---------- 顶栏日期(本地时间,YYYY年M月D日 星期X) ---------- */ + var dateEl = document.getElementById('siteDate'); + if (dateEl) { + var now = new Date(); + var week = ['日', '一', '二', '三', '四', '五', '六'][now.getDay()]; + dateEl.textContent = now.getFullYear() + '年' + (now.getMonth() + 1) + '月' + + now.getDate() + '日 星期' + week; + } + + /* ---------- 导航吸顶反蓝(桌面端;≤768 不吸顶) ---------- */ + var nav = document.getElementById('anNav'); + var DESKTOP_MIN = 769; + var navBaseTop = 0; + var holder = null; + + function measureNavTop() { + unlockNav(); + navBaseTop = nav.getBoundingClientRect().top + window.pageYOffset; + } + + function lockNav() { + if (!nav.classList.contains('an-nav--fixed')) { + holder = document.createElement('div'); + holder.className = 'an-nav-holder'; + holder.style.height = nav.offsetHeight + 'px'; + nav.parentNode.insertBefore(holder, nav); + nav.classList.add('an-nav--fixed'); + } else if (holder) { + holder.style.height = nav.offsetHeight + 'px'; + } + } + + function unlockNav() { + nav.classList.remove('an-nav--fixed'); + if (holder && holder.parentNode) { + holder.parentNode.removeChild(holder); + } + holder = null; + } + + function onScrollNav() { + if (window.innerWidth < DESKTOP_MIN) { + unlockNav(); + return; + } + if (window.pageYOffset > navBaseTop) { + lockNav(); + } else { + unlockNav(); + } + } + + if (nav) { + measureNavTop(); + window.addEventListener('scroll', onScrollNav, { passive: true }); + var resizeTimer = null; + window.addEventListener('resize', function () { + if (resizeTimer) { window.clearTimeout(resizeTimer); } + resizeTimer = window.setTimeout(function () { + measureNavTop(); + onScrollNav(); + }, 150); + }); + } + + /* ---------- 移动端抽屉 + 二级手风琴 ---------- */ + var navToggle = document.querySelector('.an-nav-toggle'); + var navList = document.querySelector('.an-nav-list'); + + if (navToggle && navList) { + navToggle.addEventListener('click', function () { + var open = navList.classList.toggle('an-open'); + navToggle.setAttribute('aria-expanded', open ? 'true' : 'false'); + }); + } + + /* 窄屏下:点击带二级的项先展开面板,再点才跳转;宽屏交还给 CSS hover */ + if (navList) { + navList.addEventListener('click', function (e) { + if (window.innerWidth >= DESKTOP_MIN) { return; } + var link = e.target.closest ? e.target.closest('a') : null; + if (!link) { return; } + var li = link.parentElement; + if (!li || !li.classList.contains('has-sub')) { return; } + var sub = li.querySelector('.an-sub'); + if (!sub) { return; } + if (!li.classList.contains('an-sub-open')) { + e.preventDefault(); + li.classList.add('an-sub-open'); + } + }); + } + + /* ---------- 首页轮播 ---------- */ + var root = document.querySelector('.an-banner'); + var slides = document.querySelectorAll('.an-banner-slide'); + var dots = document.querySelectorAll('.an-banner-dots button'); + var prevBtn = document.querySelector('.an-banner-arrow.prev'); + var nextBtn = document.querySelector('.an-banner-arrow.next'); + if (!slides.length || !root) { + return; + } + var current = 0; + var timer = null; + var INTERVAL = 5000; + + function show(index) { + slides[current].classList.remove('active'); + if (dots[current]) { + dots[current].classList.remove('active'); + } + current = (index + slides.length) % slides.length; + slides[current].classList.add('active'); + if (dots[current]) { + dots[current].classList.add('active'); + } + } + + function start() { + stop(); + if (slides.length > 1) { + timer = window.setInterval(function () { + show(current + 1); + }, INTERVAL); + } + } + + function stop() { + if (timer) { + window.clearInterval(timer); + timer = null; + } + } + + dots.forEach(function (dot, index) { + dot.addEventListener('click', function () { + show(index); + start(); + }); + }); + if (prevBtn) { + prevBtn.addEventListener('click', function () { + show(current - 1); + start(); + }); + } + if (nextBtn) { + nextBtn.addEventListener('click', function () { + show(current + 1); + start(); + }); + } + root.addEventListener('mouseenter', stop); + root.addEventListener('mouseleave', start); + root.addEventListener('focusin', stop); + root.addEventListener('focusout', start); + root.setAttribute('tabindex', '-1'); + root.addEventListener('keydown', function (e) { + if (e.key === 'ArrowLeft') { + show(current - 1); + start(); + } else if (e.key === 'ArrowRight') { + show(current + 1); + start(); + } + }); + + /* 触摸滑动切页 */ + var touchX = null; + root.addEventListener('touchstart', function (e) { + touchX = e.changedTouches[0].clientX; + stop(); + }, { passive: true }); + root.addEventListener('touchend', function (e) { + if (touchX === null) { return; } + var dx = e.changedTouches[0].clientX - touchX; + if (Math.abs(dx) > 40) { + show(dx < 0 ? current + 1 : current - 1); + } + touchX = null; + start(); + }, { passive: true }); + + start(); +})(); diff --git a/src/main/resources/templates/themes/academic-navy/assets/screenshot.png b/src/main/resources/templates/themes/academic-navy/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..8f21f4614af2bbacbcd4a467214425db399013db GIT binary patch literal 132654 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/themes/academic-navy/detail.html b/src/main/resources/templates/themes/academic-navy/detail.html new file mode 100644 index 0000000..de38ed3 --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/detail.html @@ -0,0 +1,76 @@ + + + + +

+ +
+
+ + + +
+ + +
+

文章标题

+ + +
正文
+
+ + +
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/academic-navy/fragments/footer.html b/src/main/resources/templates/themes/academic-navy/fragments/footer.html new file mode 100644 index 0000000..867ca6a --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/fragments/footer.html @@ -0,0 +1,59 @@ + + + +
+ + + + + + + +
+ diff --git a/src/main/resources/templates/themes/cherry-bloom/fragments/head.html b/src/main/resources/templates/themes/academic-navy/fragments/head.html similarity index 74% rename from src/main/resources/templates/themes/cherry-bloom/fragments/head.html rename to src/main/resources/templates/themes/academic-navy/fragments/head.html index 1809482..a01c179 100644 --- a/src/main/resources/templates/themes/cherry-bloom/fragments/head.html +++ b/src/main/resources/templates/themes/academic-navy/fragments/head.html @@ -1,6 +1,6 @@ - + @@ -8,16 +8,13 @@ - - - diff --git a/src/main/resources/templates/themes/academic-navy/fragments/header.html b/src/main/resources/templates/themes/academic-navy/fragments/header.html new file mode 100644 index 0000000..f25584e --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/fragments/header.html @@ -0,0 +1,86 @@ + + + +
+ + + +
+
+ 加载日期… +
+
+ + 专业院系 + + + +
+
+
+
+ + +
+
+
+ + + + + 站点名称 +
+ +
+
+ + + +
+ diff --git a/src/main/resources/templates/themes/academic-navy/fragments/home-blocks.html b/src/main/resources/templates/themes/academic-navy/fragments/home-blocks.html new file mode 100644 index 0000000..79f1992 --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/fragments/home-blocks.html @@ -0,0 +1,205 @@ + + +
+
+
+
+

校园要闻

+ 更多 › +
+ + +
+
+
+
+ + +
+
+
+

栏目名

+ 更多 › +
+ + + +
+
+
+
+ + +
+
+
+

通知公告

+ 更多 › +
+ + +
+
+
+
+ + +
+
+
+

媒体聚焦

+ 更多 › +
+ + +
+
+
+
+ + +
+
+

图片新闻

+ 更多 › +
+ + +
+
+
+ + +
+
+ 要闻速递 + +
+
+ + + + + +
+
+
+

友情链接

+
+ + + + +
+
+ + +
+

栏目暂无内容

+

内容发布后将在此展示

+
diff --git a/src/main/resources/templates/themes/academic-navy/home.html b/src/main/resources/templates/themes/academic-navy/home.html new file mode 100644 index 0000000..9860bb0 --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/home.html @@ -0,0 +1,149 @@ + + + + +
+ +
+ +
+ + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

头条推荐

+ +
+ +
+ +
+
+ + +
+
+
+
+

栏目名

+ 更多 › +
+ +
+

栏目暂无内容

+

内容发布后将在此展示

+
+
+
+
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/academic-navy/list.html b/src/main/resources/templates/themes/academic-navy/list.html new file mode 100644 index 0000000..71f8a4a --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/list.html @@ -0,0 +1,105 @@ + + + + +
+ +
+
+ + + +
+ + + +

栏目名

+

搜索词

+ + +
+

未找到相关内容

+

栏目暂无内容

+

换个关键词试试

+

内容发布后将在此展示

+
+ + + +
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/academic-navy/single.html b/src/main/resources/templates/themes/academic-navy/single.html new file mode 100644 index 0000000..64c413f --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/single.html @@ -0,0 +1,50 @@ + + + + +
+ +
+
+ + + +
+ + +
+

栏目名

+ +
单页内容
+
+

页面暂无内容

+

内容编辑后将在此展示

+
+
+
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/academic-navy/theme.json b/src/main/resources/templates/themes/academic-navy/theme.json new file mode 100644 index 0000000..2e47990 --- /dev/null +++ b/src/main/resources/templates/themes/academic-navy/theme.json @@ -0,0 +1,23 @@ +{ + "specVersion": 1, + "name": "academic-navy", + "title": "学府藏蓝(academic-navy)", + "version": "1.0.0", + "author": "yunhai", + "description": "学府藏蓝·高校官网门户:藏蓝顶栏+白底主导航+金线标题+日期方块列表+双栏要闻(左图右列)+深色三段页脚。基座 scholar-blue,配色与首页区块形态按综合类高校官网重做。", + "screenshot": "assets/screenshot.png", + "bannerSize": "1920x560", + "params": [ + { "key": "primary", "cssVar": "--an-primary", "label": "主色", "type": "color", "default": "#0b4a8f" }, + { "key": "primaryDark", "cssVar": "--an-primary-dark", "label": "主色加深", "type": "color", "default": "#063161" }, + { "key": "primaryLight", "cssVar": "--an-primary-light","label": "主色提亮", "type": "color", "default": "#1a6cb5" }, + { "key": "accent", "cssVar": "--an-accent", "label": "点缀金", "type": "color", "default": "#b8934a" }, + { "key": "navBg", "cssVar": "--an-nav-bg", "label": "导航条底色", "type": "color", "default": "#ffffff" }, + { "key": "footerBg", "cssVar": "--an-footer-bg", "label": "页脚底色", "type": "color", "default": "#0a2b4d" }, + { "key": "text", "cssVar": "--an-text", "label": "正文文字色", "type": "color", "default": "#2b3644" }, + { "key": "textLight", "cssVar": "--an-text-light", "label": "次要文字色", "type": "color", "default": "#6b7889" }, + { "key": "bg", "cssVar": "--an-bg", "label": "页面底色", "type": "color", "default": "#f1f4f9" }, + { "key": "cardBg", "cssVar": "--an-card-bg", "label": "卡片底色", "type": "color", "default": "#ffffff" }, + { "key": "border", "cssVar": "--an-border", "label": "边框色", "type": "color", "default": "#dbe3ee" } + ] +} diff --git a/src/main/resources/templates/themes/campus-azure/README.md b/src/main/resources/templates/themes/campus-azure/README.md new file mode 100644 index 0000000..e36338f --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/README.md @@ -0,0 +1,33 @@ +# campus-azure(青蓝校园) + +高校官网风皮肤包:以 `scholar-blue` 为基座派生,配色与首页区块形态按师范/农林类院校官网(信阳师范学院、 +信阳农林学院一类)重做。配了 `home_layout` 的站点,首页正文区块由本主题 `fragments/home-blocks.html` 渲染, +不落 `themes/common` 通用骨架(否则换肤只剩页头页脚)。 + +## 风格定位 + +- 主色青蓝 `#0d6a9e` + 加深 `#084c73` + 点缀青绿 `#2b9c8f`(列表圆点、标题线脚、速递标签走青绿)。 +- 圆角放宽到 6/12px、页面底 `#eef3f6`,比 academic-navy 更松更「校园」;区块头统一走居中双线 + 右置「更多」。 +- 全部 11 个颜色参数可在站点 theme_params 微调(`primary/primaryDark/primaryLight/accent/navBg/footerBg/text/textLight/bg/cardBg/border`)。 + +## 首页区块形态(布局模式与回落模式同构) + +| homeStyle | 呈现 | 类名 | +| -- | -- | -- | +| `news_grid` | 图文要闻:全宽封面头条(底部渐变遮罩标题 + 元信息)+ 双列圆点密行;区块背景可取站点 `news_bg_image` | `cz-hero*` / `cz-block-list--two` | +| `compact` | 圆点密行:青绿圆点 + 标题 + 右对齐完整日期 | `cz-item-bullet` / `cz-item-date` | +| `media_focus` | 媒体聚焦:胶囊来源徽标 + 双列密行 | `cz-src` | +| `image_wall` | 三列大格图墙:圆角卡 + 底部遮罩标题 | `cz-wall` | +| (空/未知) | 整宽区块卡:左 2 份图文头条 + 右 3 份圆点行 | `cz-block--flow` / `cz-split` | +| `ticker` | 青蓝要闻速递横条,标签为青绿胶囊(单行不换行、超长省略,中文不塌列) | `cz-ticker*` | +| `gallery` | 线上展厅:居中双语文区头 + 四列图墙 | `cz-gallery` | +| `links` | 友情链接分组(胶囊标签行) | `cz-links` | + +## 契约要点 + +- 结构类前缀 `cz-`,CSS 变量前缀 `--cz-`;`:root` 把 `--cz-*` 别名到皮肤契约变量(`--primary`/`--text`/`--card-bg`/`--border`…), + 使 `themes/common` 兜底骨架也能跟随本皮肤着色。 +- 空态文案「栏目暂无内容」只在 `block.items` 为空时出现;守卫必须写在 `th:block` 外层—— + `th:replace`(优先级 100)先于 `th:if`(300)求值,写在同一标签上等于没写。 +- 回归防线:`AcademicSkinContractTest`(自带区块 fragment + 中文不塌列 + 契约变量别名 + 主色必须学术蓝)、 + `PortalHomeLayoutIT#campusAzure_fallbackAndAssets`(回落分支 + 资产通道)、`ThemeContractIT`(7 条路由)。 diff --git a/src/main/resources/templates/themes/campus-azure/assets/css/main.css b/src/main/resources/templates/themes/campus-azure/assets/css/main.css new file mode 100644 index 0000000..5bea869 --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/assets/css/main.css @@ -0,0 +1,1535 @@ +/* ===================================================================== + campus-azure · 青蓝校园(基座 scholar-blue,参考语言:师范/农林类高校官网门户) + 设计语言:青蓝顶栏/品牌行 + 白底主导航(吸顶反蓝) + 青绿描边双线标题 + + 布局模式全宽封面头条 + 圆点密行 + 胶囊速递标签 + 深色圆环页脚 + 色彩令牌全部走 CSS 变量,theme.json color 参数经 :root 覆盖真实生效。 + ===================================================================== */ + +/* --------------------------------------------------------------------- + 1. 设计令牌(与 theme.json params 一一对应,禁止出现未消费的声明) + --------------------------------------------------------------------- */ +:root { + --cz-primary: #0d6a9e; /* 主色:青蓝,顶栏/品牌行/标题/强调 */ + --cz-primary-dark: #084c73; /* 主色加深:hover/渐变端/页脚深端 */ + --cz-primary-light: #1d87bd; /* 主色提亮:亮线条/hover 链接/角标 */ + --cz-accent: #2b9c8f; /* 点缀青绿:标题下划细线/日期方块描边(农林院校常见) */ + --cz-nav-bg: #ffffff; /* 主导航条底色(白条学院风) */ + --cz-footer-bg: #0b3348; /* 页脚主底 */ + --cz-text: #303c46; /* 正文 */ + --cz-text-light: #6e7d88; /* 次要文字 */ + --cz-bg: #eef3f6; /* 页面底色 */ + --cz-card-bg: #ffffff; /* 卡片底 */ + --cz-border: #d9e5ec; /* 边框/分隔线 */ + + --cz-ink-on-dark: #ffffff; /* 深底主文字 */ + --cz-ink-on-dark-soft: rgba(255,255,255,.75); /* 深底次要文字 */ + --cz-ink-on-dark-faint: rgba(255,255,255,.47); + --cz-panel: rgba(13,106,158,.95); /* 下拉面板(主色半透明) */ + --cz-shadow-sm: 0 1px 4px rgba(8,76,115,.08); + --cz-shadow-md: 0 6px 18px rgba(8,76,115,.12); + --cz-shadow-lg: 0 14px 34px rgba(8,76,115,.18); + --cz-radius: 6px; + --cz-radius-lg: 12px; + --cz-speed: .28s; + --cz-font: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif; + + /* 皮肤契约别名:站点配了 home_layout 时首页走 common/fragments/home-blocks 骨架, + 该骨架只认契约变量(--primary/--text/…)。不别名过去,换肤就只换了页头页脚、正文区块仍是骨架内置色。 */ + --primary: var(--cz-primary); + --primary-dark: var(--cz-primary-dark); + --primary-light: var(--cz-primary-light); + --text: var(--cz-text); + --text-light: var(--cz-text-light); + --bg: var(--cz-bg); + --card-bg: var(--cz-card-bg); + --border: var(--cz-border); + --radius: var(--cz-radius-lg); +} + +/* --------------------------------------------------------------------- + 2. Reset 与基础 + --------------------------------------------------------------------- */ +* { margin: 0; padding: 0; box-sizing: border-box; } + +html { -webkit-text-size-adjust: 100%; } + +body { + font-family: var(--cz-font); + font-size: 14px; + line-height: 1.7; + color: var(--cz-text); + background: var(--cz-bg); + word-break: break-word; +} + +ul, ol { list-style: none; } + +a { color: var(--cz-primary); text-decoration: none; transition: color var(--cz-speed) ease; } +a:hover { color: var(--cz-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(--cz-primary); color: #fff; } + +/* 跳转链接:仅键盘聚焦时可见 */ +.skip-link { + position: absolute; left: -999px; top: 0; z-index: 300; + background: var(--cz-primary-dark); color: #fff; + padding: 8px 18px; border-radius: 0 0 var(--cz-radius) 0; +} +.skip-link:focus { left: 0; color: #fff; } + +/* 通用容器 */ +.cz-container { + width: 1200px; max-width: calc(100% - 40px); + margin: 0 auto; +} + +/* 屏幕阅读器专用 */ +.cz-visually-hidden { + position: absolute; width: 1px; height: 1px; + margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; +} + +/* 置顶徽章 */ +.cz-top-badge { + display: inline-block; flex: none; + padding: 0 7px; line-height: 18px; + font-size: 12px; color: #fff; + background: var(--cz-primary-light); + border-radius: 2px; + letter-spacing: 1px; +} + +/* 空状态 */ +.cz-empty { + padding: 56px 20px; + text-align: center; + color: var(--cz-text-light); +} +.cz-empty p:first-child { font-size: 16px; margin-bottom: 8px; } +.cz-empty-hint { font-size: 13px; color: var(--cz-text-light); opacity: .75; } + +/* --------------------------------------------------------------------- + 3. 顶栏(深蓝细条:日期 + 院系切换) + --------------------------------------------------------------------- */ +.cz-topbar { + background: linear-gradient(90deg, var(--cz-primary-dark), var(--cz-primary)); + color: var(--cz-ink-on-dark-soft); + font-size: 13px; +} + +.cz-topbar-inner { + width: 1200px; max-width: calc(100% - 40px); + margin: 0 auto; + display: flex; align-items: center; justify-content: space-between; + min-height: 36px; +} + +.cz-topbar-date { letter-spacing: .5px; } + +.cz-topbar-side { position: relative; } + +/* 院系切换:细字 + 箭头,展开为深蓝面板 */ +.cz-colleges { position: relative; } + +.cz-colleges-toggle { + display: inline-flex; align-items: center; gap: 6px; + padding: 4px 2px; + cursor: pointer; +} +.cz-colleges-toggle a { color: var(--cz-ink-on-dark-soft); } +.cz-colleges-toggle a:hover { color: #fff; } + +.cz-colleges-arrow { + font-style: normal; font-size: 10px; + transition: transform var(--cz-speed) ease; +} +.cz-colleges:hover .cz-colleges-arrow { transform: rotate(180deg); } + +.cz-colleges-menu { + position: absolute; right: 0; top: calc(100% + 6px); + min-width: 180px; max-height: 280px; overflow: auto; + background: var(--cz-panel); + backdrop-filter: blur(4px); + border-top: 2px solid var(--cz-primary-light); + border-radius: 0 0 var(--cz-radius) var(--cz-radius); + box-shadow: var(--cz-shadow-lg); + padding: 6px 0; + opacity: 0; visibility: hidden; transform: translateY(-6px); + transition: opacity var(--cz-speed) ease, transform var(--cz-speed) ease, visibility var(--cz-speed); + z-index: 120; +} +.cz-colleges:hover .cz-colleges-menu, +.cz-colleges:focus-within .cz-colleges-menu { + opacity: 1; visibility: visible; transform: translateY(0); +} + +.cz-colleges-menu li a { + display: block; + padding: 7px 16px; + color: var(--cz-ink-on-dark); + font-size: 13px; + border-left: 2px solid transparent; + transition: background var(--cz-speed) ease, border-color var(--cz-speed) ease, padding-left var(--cz-speed) ease; +} +.cz-colleges-menu li a:hover { + background: var(--cz-primary-dark); + border-left-color: var(--cz-primary-light); + padding-left: 20px; + color: #fff; +} +.cz-colleges-menu li.active a { + background: rgba(255,255,255,.08); + border-left-color: var(--cz-primary-light); + color: #fff; +} + +/* --------------------------------------------------------------------- + 4. 品牌行(深蓝主区:徽标 + 站名 + 圆角搜索) + --------------------------------------------------------------------- */ +.cz-brandbar { + background: linear-gradient(100deg, var(--cz-primary-dark) 0%, var(--cz-primary) 62%, var(--cz-primary-light) 130%); + color: var(--cz-ink-on-dark); + position: relative; + overflow: hidden; +} +/* 品牌行右侧淡圆环装饰(CSS 绘制,无图片依赖) */ +.cz-brandbar::before, +.cz-brandbar::after { + content: ""; + position: absolute; + border-radius: 50%; + border: 26px solid rgba(255,255,255,.05); + pointer-events: none; +} +.cz-brandbar::before { width: 320px; height: 320px; right: -80px; top: -170px; } +.cz-brandbar::after { width: 200px; height: 200px; right: 180px; bottom: -140px; border-width: 16px; } + +.cz-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; +} + +.cz-brand { + display: flex; align-items: center; gap: 14px; + min-width: 0; +} + +/* 徽标容器:白衬圆角方块,校徽任何底色都干净 */ +.cz-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(--cz-radius); + box-shadow: 0 2px 8px rgba(8,76,115,.35); + overflow: hidden; +} +.cz-brand-badge--plain { color: var(--cz-primary); } +.cz-logo { width: 100%; height: 100%; object-fit: contain; } + +.cz-site-name { + color: var(--cz-ink-on-dark); + font-size: 27px; + font-weight: 700; + letter-spacing: 2px; + line-height: 1.3; + text-shadow: 0 2px 6px rgba(8,76,115,.4); + white-space: nowrap; + overflow: hidden; text-overflow: ellipsis; + max-width: 560px; +} +.cz-site-name:hover { color: #fff; } + +/* 搜索:白色胶囊(学院风记忆点) */ +.cz-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(8,76,115,.28); +} +.cz-search input { + flex: 1; min-width: 0; + border: 0; outline: none; + background: transparent; + font-size: 13px; color: var(--cz-text); + line-height: 30px; +} +.cz-search input::placeholder { color: #a9b3c0; } +.cz-search button { + flex: none; + width: 32px; height: 32px; + border: 0; border-radius: 50%; + background: var(--cz-primary); + color: #fff; + display: inline-flex; align-items: center; justify-content: center; + transition: background var(--cz-speed) ease, transform var(--cz-speed) ease; +} +.cz-search button:hover { background: var(--cz-primary-light); transform: scale(1.06); } + +/* --------------------------------------------------------------------- + 5. 主导航(白底条 + 主蓝半透明下拉面板 + 吸顶反蓝) + --------------------------------------------------------------------- */ +.cz-nav { + background: var(--cz-nav-bg); + box-shadow: var(--cz-shadow-sm); + position: relative; + z-index: 100; +} +/* 顶部主蓝细线:把导航条与品牌行缝在一起 */ +.cz-nav::before { + content: ""; + display: block; height: 3px; + background: linear-gradient(90deg, var(--cz-primary), var(--cz-primary-light)); +} + +.cz-nav-inner { + width: 1200px; max-width: calc(100% - 40px); + margin: 0 auto; + position: relative; +} + +.cz-nav-toggle { display: none; } + +.cz-nav-list { + display: flex; + justify-content: space-between; +} + +.cz-nav-list > li { position: relative; flex: 1 1 auto; text-align: center; } + +.cz-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(--cz-primary-dark); + white-space: nowrap; + transition: color var(--cz-speed) ease, background var(--cz-speed) ease; +} +/* 底部指示条:hover/当前项 */ +.cz-nav-list > li > a::after { + content: ""; + position: absolute; left: 50%; bottom: 0; + width: 0; height: 3px; + background: var(--cz-primary); + transform: translateX(-50%); + transition: width var(--cz-speed) ease; +} +.cz-nav-list > li:hover > a, +.cz-nav-list > li.active > a { + color: var(--cz-primary); + background: rgba(13,106,158,.06); +} +.cz-nav-list > li:hover > a::after, +.cz-nav-list > li.active > a::after { width: 56%; } + +.cz-caret { + font-style: normal; font-size: 11px; + opacity: .65; + transition: transform var(--cz-speed) ease; +} +.cz-nav-list > li:hover .cz-caret { transform: rotate(180deg); } + +/* —— 下拉面板:主蓝半透明、顶部亮线、项 hover 加深 + 左亮条(红线第一优先级) —— */ +.cz-sub { + position: absolute; left: 50%; top: 100%; + transform: translate(-50%, 10px); + min-width: 176px; + background: var(--cz-panel); + backdrop-filter: blur(6px); + border-top: 3px solid var(--cz-primary-light); + border-radius: 0 0 var(--cz-radius) var(--cz-radius); + box-shadow: var(--cz-shadow-lg); + padding: 6px 0; + text-align: left; + opacity: 0; visibility: hidden; + transition: opacity var(--cz-speed) ease, transform var(--cz-speed) ease, visibility var(--cz-speed); + z-index: 110; +} +.cz-nav-list > li:hover .cz-sub, +.cz-nav-list > li:focus-within .cz-sub { + opacity: 1; visibility: visible; + transform: translate(-50%, 0); +} + +/* 面板小尖角 */ +.cz-sub::before { + content: ""; + position: absolute; left: 50%; top: -8px; + width: 12px; height: 12px; + background: var(--cz-primary); + transform: translateX(-50%) rotate(45deg); + border-radius: 2px 0 0 0; +} + +.cz-sub li a { + display: block; + position: relative; + margin: 2px 8px; + padding: 9px 14px 9px 22px; + font-size: 14px; + color: var(--cz-ink-on-dark); + border-radius: 4px; + white-space: nowrap; + transition: background var(--cz-speed) ease, padding-left var(--cz-speed) ease, color var(--cz-speed) ease; +} +/* 项前细刻度线 */ +.cz-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(--cz-speed) ease, box-shadow var(--cz-speed) ease; +} +.cz-sub li a:hover { + background: var(--cz-primary-dark); + padding-left: 26px; + color: #fff; +} +.cz-sub li a:hover::before { + background: var(--cz-primary-light); + box-shadow: 0 0 6px var(--cz-primary-light); +} + +/* —— 吸顶反蓝(.cz-nav--fixed 由 main.js 滚动加挂) —— */ +.cz-nav--fixed { + position: fixed; left: 0; right: 0; top: 0; + background: linear-gradient(90deg, var(--cz-primary-dark), var(--cz-primary)); + box-shadow: var(--cz-shadow-md); + animation: cz-nav-drop var(--cz-speed) ease; +} +@keyframes cz-nav-drop { + from { transform: translateY(-100%); } + to { transform: translateY(0); } +} +.cz-nav--fixed::before { height: 0; } +.cz-nav--fixed .cz-nav-list > li > a { color: var(--cz-ink-on-dark); } +.cz-nav--fixed .cz-nav-list > li:hover > a, +.cz-nav--fixed .cz-nav-list > li.active > a { + color: #fff; + background: rgba(255,255,255,.1); +} +.cz-nav--fixed .cz-nav-list > li > a::after { background: var(--cz-primary-light); } +/* 吸顶态下拉:底色更沉,与蓝条衔接 */ +.cz-nav--fixed .cz-sub { background: rgba(8,76,115,.96); } +.cz-nav--fixed .cz-sub::before { background: var(--cz-primary-dark); } + +/* 吸顶占位,防跳变(main.js 加挂时同步高度,解锁即移除) */ +.cz-nav-holder { display: block; } + +/* --------------------------------------------------------------------- + 6. 首页 banner(通栏轮播 + 圆形箭头 + 底部圆点) + --------------------------------------------------------------------- */ +.cz-banner { + position: relative; + overflow: hidden; + background: var(--cz-primary-dark); +} +.cz-banner-slides { position: relative; height: 520px; } + +.cz-banner-slide { + position: absolute; inset: 0; + opacity: 0; visibility: hidden; + transition: opacity .8s ease, visibility .8s ease; +} +.cz-banner-slide.active { opacity: 1; visibility: visible; z-index: 1; } + +.cz-banner-slide img { + width: 100%; height: 100%; + object-fit: cover; +} +/* 底部渐隐遮罩上承标题 */ +.cz-banner-slide::after { + content: ""; + position: absolute; left: 0; right: 0; bottom: 0; + height: 120px; + background: linear-gradient(180deg, transparent, rgba(8,76,115,.66)); + pointer-events: none; +} +.cz-banner-slide.active img { animation: cz-banner-zoom 6.5s ease forwards; } +@keyframes cz-banner-zoom { + from { transform: scale(1); } + to { transform: scale(1.045); } +} + +.cz-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(8,76,115,.6); + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} + +/* 圆形半透明箭头(建平语言) */ +.cz-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(8,76,115,.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(--cz-speed) ease, background var(--cz-speed) ease, border-color var(--cz-speed) ease; +} +.cz-banner:hover .cz-banner-arrow { opacity: 1; } +.cz-banner-arrow:hover { background: var(--cz-primary); border-color: #fff; } +.cz-banner-arrow.prev { left: 26px; } +.cz-banner-arrow.next { right: 26px; } + +/* 圆点指示器 */ +.cz-banner-dots { + position: absolute; left: 0; right: 0; bottom: 18px; + z-index: 3; + display: flex; justify-content: center; gap: 10px; +} +.cz-banner-dots button { + width: 10px; height: 10px; + border: 0; border-radius: 50%; + background: rgba(255,255,255,.55); + transition: background var(--cz-speed) ease, transform var(--cz-speed) ease; +} +.cz-banner-dots button:hover { background: #fff; } +.cz-banner-dots button.active { + background: #fff; + transform: scale(1.25); + box-shadow: 0 0 0 3px rgba(255,255,255,.25); +} + +/* --------------------------------------------------------------------- + 7. 区块标题(居中双线 + 下短横)与区块通用 + --------------------------------------------------------------------- */ +.cz-section { margin-top: 40px; } + +.cz-block-head { + position: relative; + text-align: center; + padding: 14px 0 12px; + border-top: 1px solid var(--cz-border); + border-bottom: 1px solid var(--cz-border); +} +.cz-block-head h2 { + display: inline-block; + position: relative; + font-size: 22px; + font-weight: 700; + letter-spacing: 3px; + color: var(--cz-primary-dark); +} +/* 标题下短横:主蓝 3px */ +.cz-block-tick { + position: absolute; left: 50%; bottom: -2px; + width: 42px; height: 3px; + transform: translateX(-50%); + background: var(--cz-primary); + border-radius: 2px; +} + +/* 栏目卡头变体:左右布局(标题居左 + 更多居右) */ +.cz-block-head--bar { + text-align: left; + padding: 0 0 10px; + border-top: 0; + border-bottom: 2px solid var(--cz-primary); + display: flex; align-items: baseline; justify-content: space-between; +} +.cz-block-head--bar h2 { + font-size: 19px; + letter-spacing: 1px; + padding-left: 12px; + position: relative; +} +/* 标题左侧竖条 */ +.cz-block-head--bar h2::before { + content: ""; + position: absolute; left: 0; top: 6px; bottom: 6px; + width: 4px; + background: var(--cz-primary); + border-radius: 2px; +} +.cz-block-head--bar .cz-block-tick { display: none; } + +.cz-more { + font-size: 13px; + font-weight: 400; + color: var(--cz-text-light); + letter-spacing: 0; + transition: color var(--cz-speed) ease, transform var(--cz-speed) ease; +} +.cz-more:hover { color: var(--cz-primary); transform: translateX(3px); } + +/* --------------------------------------------------------------------- + 8. 头条区(左:头条推荐列表 / 右:图片新闻) + --------------------------------------------------------------------- */ +.cz-headline { + display: grid; + grid-template-columns: 7fr 5fr; + gap: 28px; +} +/* grid 项允许收缩到轨道内:否则 nowrap 省略文本会把 auto 最小宽撑破容器(移动端横向溢出) */ +.cz-headline > * { min-width: 0; } + +.cz-headline-card, +.cz-focus-card { + background: var(--cz-card-bg); + border-radius: var(--cz-radius-lg); + box-shadow: var(--cz-shadow-sm); + padding: 6px 22px 18px; +} + +/* 头条推荐 */ +.cz-headline-list li { + display: flex; align-items: center; gap: 10px; + padding: 10px 2px; + border-bottom: 1px dashed var(--cz-border); +} +.cz-headline-list li:last-child { border-bottom: 0; } +.cz-headline-list li a { + flex: 1; min-width: 0; + color: var(--cz-text); + font-size: 15px; + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + transition: color var(--cz-speed) ease, padding-left var(--cz-speed) ease; +} +.cz-headline-list li a:hover { color: var(--cz-primary); padding-left: 4px; } +.cz-headline-list time { flex: none; color: var(--cz-text-light); font-size: 13px; } + +/* 头条头条:大标题 + 元信息 */ +.cz-headline-lead { + display: block !important; + padding: 14px 2px 16px !important; +} +.cz-lead-title { + display: block; + font-size: 19px !important; + font-weight: 700; + color: var(--cz-primary-dark) !important; + line-height: 1.5; + white-space: normal !important; + overflow: hidden; + max-height: 3em; +} +.cz-lead-title:hover { color: var(--cz-primary) !important; padding-left: 0 !important; } +.cz-lead-meta { + display: flex; align-items: center; gap: 10px; + margin-top: 8px; + font-size: 13px; color: var(--cz-text-light); +} + +/* 图片新闻 */ +.cz-focus-lead { + display: block; + margin-top: 14px; + border-radius: var(--cz-radius); + overflow: hidden; + position: relative; +} +.cz-focus-cover { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--cz-bg); } +.cz-focus-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } +.cz-focus-lead:hover .cz-focus-cover img { transform: scale(1.05); } +.cz-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(8,76,115,.82)); + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} + +.cz-focus-rows { margin-top: 10px; } +.cz-focus-rows li a { + display: flex; align-items: center; gap: 12px; + padding: 8px 0; +} +.cz-row-cover { + flex: none; + width: 104px; height: 66px; + border-radius: 4px; + overflow: hidden; + background: var(--cz-bg); +} +.cz-row-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } +.cz-focus-rows li a:hover .cz-row-cover img { transform: scale(1.06); } +.cz-row-title { + flex: 1; min-width: 0; + color: var(--cz-text); + font-size: 14px; + line-height: 1.55; + max-height: 3.1em; + overflow: hidden; + transition: color var(--cz-speed) ease; +} +.cz-focus-rows li a:hover .cz-row-title { color: var(--cz-primary); } + +/* --------------------------------------------------------------------- + 9. 栏目区块(白卡三列 + 日期方块行) + --------------------------------------------------------------------- */ +.cz-blocks { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 24px; + margin-top: 14px; +} + +.cz-block { + background: var(--cz-card-bg); + border-radius: var(--cz-radius-lg); + box-shadow: var(--cz-shadow-sm); + padding: 18px 20px 14px; + display: flex; flex-direction: column; + min-width: 0; + transition: box-shadow var(--cz-speed) ease, transform var(--cz-speed) ease; +} +.cz-block:hover { box-shadow: var(--cz-shadow-md); transform: translateY(-2px); } + +.cz-block-list { flex: 1; } + +/* 区块头条(有封面图文 / 无封面纯文) */ +.cz-block-featured { border-bottom: 1px solid var(--cz-border); } +.cz-block-featured > a { + display: block; + padding: 12px 0 14px; +} +.cz-feat-cover { + display: block; + aspect-ratio: 16/9; + border-radius: var(--cz-radius); + overflow: hidden; + background: var(--cz-bg); + margin-bottom: 10px; +} +.cz-feat-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } +.cz-block-featured > a:hover .cz-feat-cover img { transform: scale(1.04); } + +.cz-feat-title { + display: block; + font-size: 16px; font-weight: 700; + color: var(--cz-primary-dark); + line-height: 1.5; + max-height: 3em; + overflow: hidden; + transition: color var(--cz-speed) ease; +} +.cz-block-featured > a:hover .cz-feat-title { color: var(--cz-primary); } +.cz-feat-summary { + display: block; + margin-top: 6px; + font-size: 13px; color: var(--cz-text-light); + line-height: 1.65; + max-height: 3.3em; + overflow: hidden; +} +.cz-feat-meta { + display: flex; align-items: center; gap: 10px; + margin-top: 8px; + font-size: 12px; color: var(--cz-text-light); +} + +/* 列表行:日期方块 + 标题(建平通知公告语言) */ +.cz-block-item { + display: flex; align-items: center; gap: 12px; + padding: 8px 0; + border-bottom: 1px dashed var(--cz-border); +} +.cz-block-item:last-child { border-bottom: 0; } + +.cz-date-chip { + flex: none; + width: 46px; + text-align: center; + border-radius: 4px; + overflow: hidden; + background: var(--cz-bg); + border: 1px solid var(--cz-border); + transition: background var(--cz-speed) ease, border-color var(--cz-speed) ease; +} +.cz-date-chip b { + display: block; + font-size: 17px; line-height: 24px; + font-weight: 700; + color: var(--cz-primary); + background: rgba(13,106,158,.08); + transition: color var(--cz-speed) ease; +} +.cz-date-chip i { + display: block; + font-style: normal; + font-size: 10px; line-height: 16px; + color: var(--cz-text-light); + transform: scale(.92); +} +.cz-block-item:hover .cz-date-chip { + background: var(--cz-primary); + border-color: var(--cz-primary); +} +.cz-block-item:hover .cz-date-chip b { color: #fff; background: transparent; } +.cz-block-item:hover .cz-date-chip i { color: rgba(255,255,255,.8); } + +.cz-block-item-title { + flex: 1; min-width: 0; + font-size: 14px; + color: var(--cz-text); + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + transition: color var(--cz-speed) ease; +} +.cz-block-item:hover .cz-block-item-title { color: var(--cz-primary); } + +/* --------------------------------------------------------------------- + 10. 列表/详情/单页公共:页面卡 + 面包屑 + 页题 + --------------------------------------------------------------------- */ +.cz-page { padding: 28px 0 48px; } + +.cz-page-card { + background: var(--cz-card-bg); + border-radius: var(--cz-radius-lg); + box-shadow: var(--cz-shadow-sm); + padding: 26px 32px 34px; + min-height: 420px; +} + +.cz-crumb { + display: flex; align-items: center; flex-wrap: wrap; gap: 8px; + font-size: 13px; + color: var(--cz-text-light); + padding-bottom: 14px; + border-bottom: 1px solid var(--cz-border); + margin-bottom: 20px; +} +.cz-crumb a { color: var(--cz-text-light); } +.cz-crumb a:hover { color: var(--cz-primary); } +.cz-crumb-sep { color: #c3cad4; } +.cz-crumb-current { color: var(--cz-primary); } + +.cz-page-title { + position: relative; + font-size: 23px; + font-weight: 700; + letter-spacing: 1px; + color: var(--cz-primary-dark); + padding-left: 16px; + margin-bottom: 22px; +} +.cz-page-title::before { + content: ""; + position: absolute; left: 0; top: 5px; bottom: 5px; + width: 5px; + border-radius: 3px; + background: linear-gradient(180deg, var(--cz-primary), var(--cz-primary-light)); +} + +/* --------------------------------------------------------------------- + 11. 列表页:图文行 + 行式列表 + 分页 + --------------------------------------------------------------------- */ +.cz-article-list > li { border-bottom: 1px solid var(--cz-border); } +.cz-article-list > li:last-child { border-bottom: 0; } + +/* 图文行 */ +.cz-article-row { + display: flex; gap: 20px; + padding: 18px 2px; +} +.cz-item-cover { + flex: none; + width: 216px; aspect-ratio: 3/2; + border-radius: var(--cz-radius); + overflow: hidden; + background: var(--cz-bg); +} +.cz-item-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } +.cz-article-row:hover .cz-item-cover img { transform: scale(1.05); } + +.cz-item-body { flex: 1; min-width: 0; padding-top: 4px; } +.cz-item-title a { + font-size: 17px; font-weight: 600; + color: var(--cz-text); + line-height: 1.5; + transition: color var(--cz-speed) ease; +} +.cz-item-title a:hover { color: var(--cz-primary); } +.cz-item-summary { + margin-top: 8px; + font-size: 13px; color: var(--cz-text-light); + line-height: 1.7; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} +.cz-item-meta { + display: flex; align-items: center; gap: 12px; + margin-top: 10px; + font-size: 12px; color: var(--cz-text-light); +} + +/* 行式(无封面):刻度符号 + 标题 + 右侧日期 */ +.cz-article-line { + display: flex; align-items: center; gap: 12px; + padding: 13px 2px; +} +.cz-line-tick { + flex: none; + width: 6px; height: 6px; + background: var(--cz-primary); + transform: rotate(45deg); + opacity: .85; + transition: transform var(--cz-speed) ease; +} +.cz-article-line:hover .cz-line-tick { transform: rotate(45deg) scale(1.35); } + +.cz-line-main { flex: 1; min-width: 0; } +.cz-line-title { + display: block; + font-size: 15px; + color: var(--cz-text); + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + transition: color var(--cz-speed) ease, padding-left var(--cz-speed) ease; +} +.cz-article-line:hover .cz-line-title { color: var(--cz-primary); padding-left: 4px; } +.cz-article-line .cz-item-summary { margin-top: 4px; -webkit-line-clamp: 1; } + +.cz-line-side { + flex: none; + display: flex; align-items: center; gap: 10px; + font-size: 13px; color: var(--cz-text-light); +} + +/* 分页 */ +.cz-pagination { + display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; + margin-top: 30px; +} +.cz-pagination a { + min-width: 36px; height: 36px; + display: inline-flex; align-items: center; justify-content: center; + padding: 0 10px; + font-size: 14px; + color: var(--cz-text); + background: var(--cz-bg); + border: 1px solid var(--cz-border); + border-radius: 4px; + transition: all var(--cz-speed) ease; +} +.cz-pagination a:hover { + color: #fff; + background: var(--cz-primary); + border-color: var(--cz-primary); +} +.cz-pagination a.active { + color: #fff; + background: var(--cz-primary); + border-color: var(--cz-primary); + font-weight: 700; + box-shadow: 0 3px 8px rgba(13,106,158,.35); +} +.cz-pagination a.disabled { + opacity: .45; pointer-events: none; +} + +/* --------------------------------------------------------------------- + 12. 详情/单页:文章排版 + --------------------------------------------------------------------- */ +.cz-article-title { + text-align: center; + font-size: 24px; + font-weight: 700; + color: var(--cz-primary-dark); + line-height: 1.5; + padding: 6px 20px 0; +} + +.cz-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(--cz-text-light); + border-bottom: 1px solid var(--cz-border); + position: relative; +} +/* 标题下居中短横(与区块标题语言呼应) */ +.cz-article-meta::before { + content: ""; + position: absolute; left: 50%; top: -12px; + width: 42px; height: 3px; + transform: translateX(-50%); + background: var(--cz-primary); + border-radius: 2px; +} + +.cz-article-content { + font-size: 15px; + line-height: 1.9; + color: var(--cz-text); +} +.cz-article-content p { margin: 0 0 14px; } +.cz-article-content h1, .cz-article-content h2, +.cz-article-content h3, .cz-article-content h4 { + margin: 22px 0 12px; + color: var(--cz-primary-dark); + font-weight: 700; +} +.cz-article-content h2 { font-size: 19px; } +.cz-article-content h3 { font-size: 17px; } +.cz-article-content h4 { font-size: 15px; } +.cz-article-content img { + max-width: 100%; + height: auto; + border-radius: var(--cz-radius); + margin: 6px auto 14px; + box-shadow: var(--cz-shadow-sm); +} +.cz-article-content ul, .cz-article-content ol { + margin: 0 0 14px; padding-left: 26px; +} +.cz-article-content ul li { list-style: disc; } +.cz-article-content ol li { list-style: decimal; } +.cz-article-content li { margin-bottom: 6px; } +.cz-article-content blockquote { + margin: 14px 0; + padding: 12px 18px; + background: rgba(13,106,158,.05); + border-left: 4px solid var(--cz-primary); + border-radius: 0 var(--cz-radius) var(--cz-radius) 0; + color: var(--cz-text-light); +} +.cz-article-content table { + width: 100%; + border-collapse: collapse; + margin: 14px 0; + font-size: 14px; +} +.cz-article-content th, .cz-article-content td { + border: 1px solid var(--cz-border); + padding: 8px 12px; + text-align: left; +} +.cz-article-content th { + background: rgba(13,106,158,.06); + color: var(--cz-primary-dark); + font-weight: 600; +} +.cz-article-content a { color: var(--cz-primary-light); text-decoration: underline; } +.cz-article-content hr { + border: 0; height: 1px; + background: var(--cz-border); + margin: 20px 0; +} +.cz-article-content video, .cz-article-content audio { max-width: 100%; } + +/* 上下篇 */ +.cz-sibling { + display: grid; grid-template-columns: 1fr 1fr; gap: 16px; + margin-top: 34px; + padding-top: 22px; + border-top: 1px solid var(--cz-border); +} +.cz-sib, .cz-sib-none { + display: block; + padding: 12px 16px; + border: 1px solid var(--cz-border); + border-radius: var(--cz-radius); + background: var(--cz-bg); + min-width: 0; + transition: border-color var(--cz-speed) ease, background var(--cz-speed) ease, box-shadow var(--cz-speed) ease; +} +.cz-sib:hover { + border-color: var(--cz-primary); + background: var(--cz-card-bg); + box-shadow: var(--cz-shadow-sm); +} +.cz-sib.next { text-align: right; } +.cz-sib-label { + display: block; + font-size: 12px; + color: var(--cz-primary); + letter-spacing: 2px; + margin-bottom: 4px; +} +.cz-sib-title { + display: block; + font-size: 14px; + color: var(--cz-text); + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} +.cz-sib-none { opacity: .6; } +.cz-sib-none .cz-sib-label { color: var(--cz-text-light); } + +/* --------------------------------------------------------------------- + 13. 页脚(深蓝渐变 + 同心圆环纹理 + 三栏 + 底条) + --------------------------------------------------------------------- */ +.cz-footer { + position: relative; + margin-top: 56px; + color: var(--cz-ink-on-dark); + background: linear-gradient(160deg, var(--cz-footer-bg) 0%, var(--cz-primary-dark) 100%); + overflow: hidden; +} + +/* 同心圆环纹理(CSS 绘制,呼应校徽环形语言) */ +.cz-ring { + position: absolute; + border-radius: 50%; + border: 2px solid rgba(255,255,255,.06); + pointer-events: none; +} +.cz-ring--1 { width: 460px; height: 460px; right: -140px; top: -160px; border-width: 30px; } +.cz-ring--2 { width: 300px; height: 300px; right: -60px; top: -80px; border-width: 18px; } +.cz-ring--3 { width: 520px; height: 520px; left: -200px; bottom: -300px; border-width: 34px; } + +.cz-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; +} +.cz-footer-inner > * { min-width: 0; } + +.cz-footer-brand { + display: flex; align-items: center; gap: 14px; +} +.cz-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(--cz-radius); + overflow: hidden; + box-shadow: 0 2px 10px rgba(8,76,115,.4); +} +.cz-footer-badge--plain { color: var(--cz-primary); } +.cz-footer-logo { width: 100%; height: 100%; object-fit: contain; } +.cz-footer-site { + font-size: 21px; + font-weight: 700; + letter-spacing: 1.5px; + line-height: 1.45; + text-shadow: 0 2px 6px rgba(8,76,115,.4); +} + +.cz-footer-info { padding-top: 6px; } +.cz-footer-line { + display: flex; align-items: baseline; gap: 10px; + margin-bottom: 10px; + font-size: 13px; + color: var(--cz-ink-on-dark-soft); + line-height: 1.7; +} +.cz-dot { + flex: none; + width: 6px; height: 6px; + background: var(--cz-primary-light); + border-radius: 50%; + transform: translateY(-2px); + box-shadow: 0 0 6px rgba(17,103,187,.9); +} + +.cz-footer-links { + padding-top: 6px; + display: grid; grid-template-columns: 1fr 1fr; gap: 8px 28px; +} +.cz-group-name { + display: inline-block; + font-size: 13px; font-weight: 600; + color: #fff; + padding-bottom: 4px; + margin-bottom: 6px; + border-bottom: 2px solid var(--cz-primary-light); +} +.cz-links-row { + display: flex; flex-wrap: wrap; gap: 4px 14px; + margin-bottom: 10px; +} +.cz-links-row a { + font-size: 13px; + color: var(--cz-ink-on-dark-soft); + transition: color var(--cz-speed) ease, padding-left var(--cz-speed) ease; +} +.cz-links-row a:hover { color: #fff; padding-left: 2px; } + +.cz-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(--cz-ink-on-dark-faint); + letter-spacing: 1px; +} + +/* --------------------------------------------------------------------- + 14. 响应式:1200 / 992 / 768 三档 + --------------------------------------------------------------------- */ +@media (max-width: 1240px) { + .cz-container, .cz-topbar-inner, .cz-brandbar-inner, .cz-nav-inner { max-width: calc(100% - 40px); } +} + +@media (max-width: 992px) { + .cz-site-name { font-size: 22px; max-width: 380px; } + .cz-search { width: 240px; } + + .cz-nav-list { flex-wrap: wrap; justify-content: flex-start; } + .cz-nav-list > li { flex: 0 0 auto; } + .cz-nav-list > li > a { height: 46px; font-size: 15px; padding: 0 12px; } + + .cz-headline { grid-template-columns: 1fr; } + .cz-blocks { grid-template-columns: repeat(2, 1fr); } + + .cz-banner-slides { height: 380px; } + .cz-banner-title { font-size: 19px; bottom: 28px; } + + .cz-footer-inner { grid-template-columns: 1fr 1fr; } +} + +@media (max-width: 768px) { + /* —— 品牌行收纳 —— */ + .cz-brandbar-inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 0; } + .cz-site-name { font-size: 19px; max-width: none; white-space: normal; } + .cz-brand { justify-content: center; } + .cz-search { width: 100%; max-width: none; } + + /* —— 移动端导航:抽屉展开 —— */ + .cz-nav-toggle { + display: inline-flex; flex-direction: column; justify-content: center; gap: 5px; + width: 44px; height: 40px; + padding: 8px; + border: 1px solid var(--cz-border); + border-radius: var(--cz-radius); + background: var(--cz-card-bg); + } + .cz-nav-toggle span { + display: block; height: 2px; + background: var(--cz-primary); + border-radius: 2px; + transition: transform var(--cz-speed) ease, opacity var(--cz-speed) ease; + } + .cz-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); } + .cz-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; } + .cz-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); } + + .cz-nav-inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; } + /* 吸顶在移动端直接融入文档流配色 */ + .cz-nav--fixed { position: sticky; animation: none; } + + .cz-nav-list { + display: none; + position: absolute; left: -20px; right: -20px; top: 100%; + flex-direction: column; + background: var(--cz-card-bg); + box-shadow: var(--cz-shadow-md); + border-top: 1px solid var(--cz-border); + padding: 6px 16px 12px; + max-height: 68vh; overflow: auto; + } + .cz-nav-list.cz-open { display: flex; } + .cz-nav-list > li { text-align: left; border-bottom: 1px solid var(--cz-border); } + .cz-nav-list > li:last-child { border-bottom: 0; } + .cz-nav-list > li > a { height: 46px; justify-content: flex-start; } + .cz-nav-list > li > a::after { display: none; } + + /* 移动端二级:手风琴内联展开(.cz-sub-open 由 main.js 控制) */ + .cz-sub { + position: static; + display: none; + transform: none; + opacity: 1; visibility: visible; + background: var(--cz-bg); + border-top: 0; + box-shadow: none; + border-radius: 0; + margin: 0 -8px 8px; + padding: 4px 0; + } + .cz-sub::before { display: none; } + .cz-sub li a { color: var(--cz-text); margin: 0 8px; } + .cz-sub li a:hover { background: rgba(13,106,158,.08); color: var(--cz-primary); } + .cz-sub li a::before { background: var(--cz-primary); opacity: .5; } + .cz-nav-list li.cz-sub-open .cz-sub { display: block; } + .cz-nav-list li.has-sub > a { cursor: pointer; } + + /* —— 内容收纳 —— */ + .cz-banner-slides { height: 240px; } + .cz-banner-title { font-size: 15px; left: 16px; bottom: 20px; max-width: 85%; } + .cz-banner-arrow { display: none; } + + .cz-section { margin-top: 28px; } + .cz-blocks { grid-template-columns: 1fr; } + .cz-block-head h2 { font-size: 19px; } + + .cz-article-row { flex-direction: column; gap: 12px; } + .cz-item-cover { width: 100%; } + .cz-article-line { flex-wrap: wrap; } + .cz-line-side { width: 100%; padding-left: 18px; } + + .cz-page-card { padding: 18px 16px 24px; } + .cz-article-title { font-size: 20px; padding: 0; } + .cz-article-meta { gap: 4px 14px; } + .cz-sibling { grid-template-columns: 1fr; } + .cz-sib-title { white-space: normal; } + + .cz-footer-inner { grid-template-columns: 1fr; gap: 26px; padding: 32px 0 26px; } + .cz-footer-links { grid-template-columns: 1fr; } + .cz-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, +.cz-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):有二级节点的模块,栏目/文章页左侧展示兄弟目录 ===== */ +.cz-cols { display: flex; align-items: flex-start; gap: 28px; } +.cz-cols .cz-page-card { flex: 1; min-width: 0; } +.cz-side-nav { + flex: none; + width: 230px; + background: var(--cz-card-bg); + border: 1px solid var(--cz-border); + border-top: 3px solid var(--cz-primary); + box-shadow: var(--cz-shadow-md); +} +.cz-side-nav-head { + background: var(--cz-primary); + color: #fff; + font-size: 20px; + font-weight: 700; + text-align: center; + padding: 18px 12px; + letter-spacing: 3px; +} +.cz-side-nav-list { list-style: none; margin: 0; padding: 0; } +.cz-side-nav-item + .cz-side-nav-item { border-top: 1px solid var(--cz-border); } +.cz-side-nav-item a { + display: block; + padding: 13px 18px; + color: var(--cz-text); + text-decoration: none; + font-size: 15px; + border-left: 3px solid transparent; + transition: background .15s ease, color .15s ease, border-color .15s ease; +} +.cz-side-nav-item a:hover { color: var(--cz-primary); background: var(--cz-panel); } +.cz-side-nav-item.active a { + background: var(--cz-primary); + color: #fff; + font-weight: 600; + text-decoration: none; + border-left-color: var(--cz-primary-light); +} +/* 顶导航二级下拉当前项高亮(docs/11 顺带) */ +.cz-nav-list ul.cz-sub li.active a { color: var(--cz-primary-light); } +@media (max-width: 768px) { + .cz-cols { flex-direction: column; gap: 16px; } + .cz-side-nav { width: 100%; } + .cz-side-nav-list { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; } + .cz-side-nav-item { flex: none; } + .cz-side-nav-item + .cz-side-nav-item { border-top: none; border-left: 1px solid var(--cz-border); } + .cz-side-nav-item a { white-space: nowrap; border-left: none; } +} +@media print { + .cz-side-nav { display: none; } + .cz-cols { display: block; } +} + +/* --------------------------------------------------------------------- + 16. 首页布局模式区块(fragments/home-blocks.html) + 站点配了 home_layout 时首页正文由本主题渲染:整宽区块卡 + 全宽封面头条 + 圆点密行。 + --------------------------------------------------------------------- */ +/* 青蓝配青绿:标题竖条/线脚与列表圆点走 accent,圆角比基座更大(卡片更柔和) */ +.cz-block-head--bar h2::before { background: var(--cz-accent); } +.cz-block-tick { background: var(--cz-accent); } +/* 居中双线标题下的「更多」钉在标题行右端(师范/农林官网惯例:标题居中、更多右置) */ +.cz-block-head .cz-more { + position: absolute; right: 0; bottom: 13px; + font-size: 13px; +} + +.cz-section { position: relative; } +.cz-sec-bg { + position: absolute; inset: 0; z-index: 0; + background-size: cover; background-position: center; + opacity: .45; pointer-events: none; +} +/* 定位元素默认画在普通流之上:不抬 z-index,背景带会糊在卡片正面(截图实测整卡泛色)。 + 带图时卡片转半透明白,让底图若隐若现——高校官网新闻带的通行做法 */ +.cz-sec-bg + .cz-block { position: relative; z-index: 1; background: rgba(255, 255, 255, .88); } +.cz-block--flow { padding: 20px 26px 14px; } +.cz-block--flow:hover { transform: none; box-shadow: var(--cz-shadow-sm); } +/* grid 轨道用 minmax(0,1fr):否则 nowrap 省略行的 min-content 会撑破轨道(中文标题尤其明显) */ +.cz-split { + display: grid; + grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); + gap: 26px; + padding-top: 14px; +} +.cz-split > * { min-width: 0; } +.cz-hero { + position: relative; + display: block; + margin-top: 14px; + border-radius: var(--cz-radius-lg); + overflow: hidden; + background: var(--cz-bg); +} +.cz-hero img { width: 100%; height: 300px; object-fit: cover; transition: transform .5s ease; } +.cz-hero:hover img { transform: scale(1.03); } +.cz-hero-plain { display: block; height: 8px; background: var(--cz-accent); } +.cz-hero-mask { + position: absolute; left: 0; right: 0; bottom: 0; + padding: 40px 22px 16px; + background: linear-gradient(transparent, rgba(8, 76, 115, .88)); + color: #fff; +} +.cz-hero-plain + .cz-hero-mask { + position: static; + padding: 16px 22px; + background: var(--cz-card-bg); + color: var(--cz-text); +} +.cz-hero-title { + display: block; + font-size: 20px; font-weight: 700; line-height: 1.5; + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} +.cz-hero-meta { display: flex; align-items: center; gap: 10px; margin-top: 6px; font-size: 12px; opacity: .9; } +.cz-block-list--two { columns: 2; column-gap: 34px; } +.cz-block-list--two .cz-block-item { break-inside: avoid; } +.cz-item-bullet { + flex: none; + width: 5px; height: 5px; + border-radius: 50%; + background: var(--cz-accent); +} +.cz-item-date { + flex: none; + font-size: 12px; color: var(--cz-text-light); + font-variant-numeric: tabular-nums; +} +.cz-src { + flex: none; + font-size: 11px; line-height: 18px; padding: 0 6px; + color: var(--cz-primary); border: 1px solid var(--cz-primary); + border-radius: 999px; +} +.cz-wall { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 16px; + margin: 16px 0 0; +} +.cz-wall--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } +.cz-wall-item { + position: relative; + border-radius: var(--cz-radius-lg); + overflow: hidden; + box-shadow: var(--cz-shadow-sm); +} +.cz-wall-item img { width: 100%; height: 168px; object-fit: cover; transition: transform .5s ease; } +.cz-wall-item:hover img { transform: scale(1.05); } +.cz-wall-cap { + position: absolute; left: 0; right: 0; bottom: 0; + padding: 28px 12px 10px; + font-size: 13px; color: #fff; + background: linear-gradient(transparent, rgba(11, 51, 72, .85)); + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; +} +.cz-gallery-sub { + margin: -4px 0 4px; + text-align: center; + font-size: 12px; letter-spacing: .18em; text-transform: uppercase; + color: var(--cz-text-light); +} +/* 速递条:flex 项自动最小尺寸 = min-content,中文可按字断行 → 不锁 nowrap/不收缩就会塌成一字一列 */ +.cz-ticker { + position: relative; + background: var(--cz-primary); + color: #fff; + padding: 11px 0; + font-size: 14px; +} +.cz-ticker-inner { display: flex; align-items: center; gap: 16px; min-width: 0; } +.cz-ticker-label { + flex: none; + font-weight: 700; letter-spacing: .06em; + padding: 2px 14px; + border-radius: 999px; + background: var(--cz-accent); +} +.cz-ticker-list { + display: flex; gap: 28px; + flex: 1; min-width: 0; + overflow: hidden; white-space: nowrap; +} +.cz-ticker-list li { flex: none; min-width: 0; } +.cz-ticker-item { + display: block; flex: none; + max-width: 320px; + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + color: #fff; opacity: .92; +} +.cz-ticker-item:hover { opacity: 1; text-decoration: underline; } +.cz-links-group { + margin: 12px 0 0; + font-size: 13px; letter-spacing: .08em; + color: var(--cz-text-light); +} +.cz-links { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 0; } +.cz-links a { + font-size: 13px; color: var(--cz-text-light); + padding: 4px 14px; + background: var(--cz-card-bg); + border: 1px solid var(--cz-border); + border-radius: 999px; +} +.cz-links a:hover { color: var(--cz-primary); border-color: var(--cz-primary); } + +@media (max-width: 992px) { + .cz-split { grid-template-columns: minmax(0, 1fr); } + .cz-wall, .cz-wall--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .cz-block-list--two { columns: 1; } + .cz-hero img { height: 190px; } + .cz-ticker-item { max-width: 180px; } + .cz-block--flow { padding: 16px 16px 8px; } +} diff --git a/src/main/resources/templates/themes/campus-azure/assets/favicon.png b/src/main/resources/templates/themes/campus-azure/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac161567d559c4467b04ecbc99af34d157c90c3b GIT binary patch literal 721 zcmV;?0xtcDP) z%TB{U3`Nt375+dF{XP(Upt}Wul&URlUNhrsd+u2`RdSE*Nzy?ahC-g-KEH>KIeoky zN{-)kaPOhll(Fdm247#qst+>wb|S{54>0`wtjTUx0K+e5DZ_^X7=AtGvb-yR;n(L; zrvC&m{C3>S_DTT5Z_jPUi+4e!EoT9&emgF+W(R=z6Ts@XXUd!%0EPm<95{Zkumiw^ z7ohJiLuA4Wh|ZXy`ZaJDgcgv2umUu2)u#}UMMxR}Q3)wPgI0SQ0hz>v6QBV@P9-24 z=>%x74hbbdgN2(;Kt@qv1Zbd8QwqpRS^*lQV?qefAYrBzkeM-a^=p96sk$p7!Ufkr zj$ebz4ybuzUa5VJ&GrRl>jr65T+P;iOx++2uchfCoI!##z6P_ciP1)q7!{A%ZD^!! z5W{mdeGZ5qL5$DQ{6WmK1Oc2IbbGowSr?E+0euxA4!Qw-4r9*&h=T%f^%pW~G?F|7 z@1_H+gYgu;I{`i7N`M-SATM`bE(P=m1%ROdFm42>;cWJ_4!9A}D-;06g#ZPN1TSOA zg@BT$T5nIb-3XA2;3JC&CqQPxjwk^xKsU_dH34tw1`q21T)-OkjF>3h;9h_f1Q}s% zfC|u=5l}O{x$i-bA(tH>4XV~_Cp-;~kj5cR-;b_(mmMI673!%QU_Z)FRVd&v(C5K@ zK}T!>xZ0M|BW~7!UZDUm6aa<-z)%1f3IH>f{y$u@pWp1+0bnS=g8+^pd#23U0btGo z*adc6X3Y)&b0vUX(4O0j|8)Q*wBug3cSjH<)aOyA57z)nsK;EEvx_h#l(UrK;$09W z>}O4On_k56_v3YJDcW6cLMfu&v?zWR-Mfra;p_Y#f*

eT{`!00000NkvXXu0mjf D(ZMnA literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/themes/campus-azure/assets/favicon.svg b/src/main/resources/templates/themes/campus-azure/assets/favicon.svg new file mode 100644 index 0000000..b64acaf --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/assets/favicon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/resources/templates/themes/campus-azure/assets/js/main.js b/src/main/resources/templates/themes/campus-azure/assets/js/main.js new file mode 100644 index 0000000..3ef9a19 --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/assets/js/main.js @@ -0,0 +1,190 @@ +/* campus-azure 主题脚本:顶栏日期 + 轮播(圆点/箭头/触摸) + 导航吸顶反蓝 + 移动端抽屉与二级手风琴。 + 与 default 同源逻辑,无任何外部依赖。 */ +(function () { + 'use strict'; + + /* ---------- 顶栏日期(本地时间,YYYY年M月D日 星期X) ---------- */ + var dateEl = document.getElementById('siteDate'); + if (dateEl) { + var now = new Date(); + var week = ['日', '一', '二', '三', '四', '五', '六'][now.getDay()]; + dateEl.textContent = now.getFullYear() + '年' + (now.getMonth() + 1) + '月' + + now.getDate() + '日 星期' + week; + } + + /* ---------- 导航吸顶反蓝(桌面端;≤768 不吸顶) ---------- */ + var nav = document.getElementById('czNav'); + var DESKTOP_MIN = 769; + var navBaseTop = 0; + var holder = null; + + function measureNavTop() { + unlockNav(); + navBaseTop = nav.getBoundingClientRect().top + window.pageYOffset; + } + + function lockNav() { + if (!nav.classList.contains('cz-nav--fixed')) { + holder = document.createElement('div'); + holder.className = 'cz-nav-holder'; + holder.style.height = nav.offsetHeight + 'px'; + nav.parentNode.insertBefore(holder, nav); + nav.classList.add('cz-nav--fixed'); + } else if (holder) { + holder.style.height = nav.offsetHeight + 'px'; + } + } + + function unlockNav() { + nav.classList.remove('cz-nav--fixed'); + if (holder && holder.parentNode) { + holder.parentNode.removeChild(holder); + } + holder = null; + } + + function onScrollNav() { + if (window.innerWidth < DESKTOP_MIN) { + unlockNav(); + return; + } + if (window.pageYOffset > navBaseTop) { + lockNav(); + } else { + unlockNav(); + } + } + + if (nav) { + measureNavTop(); + window.addEventListener('scroll', onScrollNav, { passive: true }); + var resizeTimer = null; + window.addEventListener('resize', function () { + if (resizeTimer) { window.clearTimeout(resizeTimer); } + resizeTimer = window.setTimeout(function () { + measureNavTop(); + onScrollNav(); + }, 150); + }); + } + + /* ---------- 移动端抽屉 + 二级手风琴 ---------- */ + var navToggle = document.querySelector('.cz-nav-toggle'); + var navList = document.querySelector('.cz-nav-list'); + + if (navToggle && navList) { + navToggle.addEventListener('click', function () { + var open = navList.classList.toggle('cz-open'); + navToggle.setAttribute('aria-expanded', open ? 'true' : 'false'); + }); + } + + /* 窄屏下:点击带二级的项先展开面板,再点才跳转;宽屏交还给 CSS hover */ + if (navList) { + navList.addEventListener('click', function (e) { + if (window.innerWidth >= DESKTOP_MIN) { return; } + var link = e.target.closest ? e.target.closest('a') : null; + if (!link) { return; } + var li = link.parentElement; + if (!li || !li.classList.contains('has-sub')) { return; } + var sub = li.querySelector('.cz-sub'); + if (!sub) { return; } + if (!li.classList.contains('cz-sub-open')) { + e.preventDefault(); + li.classList.add('cz-sub-open'); + } + }); + } + + /* ---------- 首页轮播 ---------- */ + var root = document.querySelector('.cz-banner'); + var slides = document.querySelectorAll('.cz-banner-slide'); + var dots = document.querySelectorAll('.cz-banner-dots button'); + var prevBtn = document.querySelector('.cz-banner-arrow.prev'); + var nextBtn = document.querySelector('.cz-banner-arrow.next'); + if (!slides.length || !root) { + return; + } + var current = 0; + var timer = null; + var INTERVAL = 5000; + + function show(index) { + slides[current].classList.remove('active'); + if (dots[current]) { + dots[current].classList.remove('active'); + } + current = (index + slides.length) % slides.length; + slides[current].classList.add('active'); + if (dots[current]) { + dots[current].classList.add('active'); + } + } + + function start() { + stop(); + if (slides.length > 1) { + timer = window.setInterval(function () { + show(current + 1); + }, INTERVAL); + } + } + + function stop() { + if (timer) { + window.clearInterval(timer); + timer = null; + } + } + + dots.forEach(function (dot, index) { + dot.addEventListener('click', function () { + show(index); + start(); + }); + }); + if (prevBtn) { + prevBtn.addEventListener('click', function () { + show(current - 1); + start(); + }); + } + if (nextBtn) { + nextBtn.addEventListener('click', function () { + show(current + 1); + start(); + }); + } + root.addEventListener('mouseenter', stop); + root.addEventListener('mouseleave', start); + root.addEventListener('focusin', stop); + root.addEventListener('focusout', start); + root.setAttribute('tabindex', '-1'); + root.addEventListener('keydown', function (e) { + if (e.key === 'ArrowLeft') { + show(current - 1); + start(); + } else if (e.key === 'ArrowRight') { + show(current + 1); + start(); + } + }); + + /* 触摸滑动切页 */ + var touchX = null; + root.addEventListener('touchstart', function (e) { + touchX = e.changedTouches[0].clientX; + stop(); + }, { passive: true }); + root.addEventListener('touchend', function (e) { + if (touchX === null) { return; } + var dx = e.changedTouches[0].clientX - touchX; + if (Math.abs(dx) > 40) { + show(dx < 0 ? current + 1 : current - 1); + } + touchX = null; + start(); + }, { passive: true }); + + start(); +})(); diff --git a/src/main/resources/templates/themes/campus-azure/assets/screenshot.png b/src/main/resources/templates/themes/campus-azure/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e278e48699e63e4953a4957dfc64e09215f128c1 GIT binary patch literal 129152 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�+^gr(7b*BS^JaBjs%;Y4mI+1bL^7hvs&M7&H2%LNd=N8GEb)d4 zJhB&>zwz?^q+W$1Lq5&hB<$l6;%iT8&7C^MDX(qq2%MSt%Je0gt_qm-_nW+a$0Z;e zt1ZyKO?j^Crbuc<`B7putSnThwsinS{(HPuq4OqUFZxaDXdlZzLmRlN z-;lx=QvvUFRetP!&T6z|j;I+87#p(#DX;#%&DH-aWabv4=O1k+C^O8W{@p6G@fu4D z89V(A9g|)$h1z5Cxe>)=$*V?xalJ0~@CtmGqvjiShO6K!==R-mCh1Y>*pWrNYw-nA z^_1JT@X7s`EC{y~wTRj^+8PzND-1{iw}6ivt^I9haAr6kefl%m6J@PqbC6SsRS*a(x>vY(Hm?0Di6nfh_ph! zKnmls#HC)iYT7YUNWRd5?T>#J9-u=T1<^OsO(SCHssJGD?=r`30|h?OQ%I&Pef zKV>5~xlUA!zn9KZjaFPicwa((^tpESa#^ZIBZiluxR0r;ZUGE1aiR|YQ=R8jH*l|p ztPm13RCmYtBC7t``}BCwc)a;Q%dr>rWF*TIare;LN7YM4O+7&Ry>7EsnV-CRjsKGD$eeWgG&#Iq??7MOl+8du= zr!Cu75cpm@&nQ#*CBywz@i&R-_u}O4Dx`N%iD*}wSxjE>jZNkR$-M}w-AJT)6U|ve z;7ypzC-ZZlYX^B$+ddWS?_eSv)9~vO!7OuF{H%k|0lZ`^Jixd;yBsR0n#lY z7jP`JCobt(b2*6+Q!qJz;j$gNq2UF zNwuGIcbg7KKNJ&$I{Nl7PRRUmv#&cp^Ed!z~2-14n7Sl=v+T*%z7Doez+ zLeKUYy3SY|G)w~q-Ht)Y@!2*2rUUMWoW5{}C+2+s!HEf;Xck#}b z?cWsTnZa-rIK4&a*6a9HsqY)95O|Jp%g7gwL3fvO-H&Xxnwf3Op@J@5g|d!$Mu+72 z%W@sxDFRX@Q^K>4q1I6`W;qdO*H!f2aL%~TT)q91t{3EfrH^%7uZuB9m&KXCg{DX+ zd)^W~LS-A9zXTidP!eK44WqPe1?rq~8d03lsP+>BVf)K3?RYo9@d-f2`L7jn;p(2U znqq)Ul0O}@`p{h_T+w79af{$CX>`!z8RH?aS5&)4kDbG4OP>X4V1vsx2Zy3#WrvDo zR&KS7g}(iCAos??U1fb#1ABm_cTP`8y=tTBw4;g$jwk6Uxk9{wk0!m3bKAr;EmBBT zAI-D5TPrx4@pnxiq9H z#F#45{uh8+K5VymyhtyrDbj*!T!Kcj%}mqIgxVy^{p)J6#DB_+i2_*v*3pIc-h<;Z z$uj3G6{tw4&fZR3)jis;YyZ=B%BQl0*5^61SU7!K(=s#Rw2nzRXDU=h0N}4?f3n2n z0DekfJfcdGLuJ*UTrg)D*Sv{aw|yQ4XzgS`ce2=ivm*aDvsKuAXT_Ae&V9I~*!-2N zIKoqGh&4v+znT>*QU6?*!$r1xB?+uItCbmzrc_P>^vK{*(6tf!e1jFR23-N$@xSh)cD9WY7mF#z0_zZ=j++eL1JSDjcAOVSH`Xw#<4=xet(GbX>vMuXxjW9+0IY`cNG>7YO|IZo zGDJ*~78QQtR=tBAw!PB_4|SwGy7JX++l4+*$10qz`t}7QOp|qX%K&TPig=uKD?{+3 z7Cx@jotVO}zhbBD*(;VP1Ze!_#6_E$V0}PdzBp4AAC%JyuaJ6lOyj92bF5+=$}?oE zhqN0=dq*oqw0}TX&3}>IoJpv5;YZH0%EQr$tS&?dvX5B++#d96#a!}2w6O-eIcBy! zN5?LmK0R#1(8H7eeYlRWWWi0zCQZ~!O*xb240qd_md#!CctbL#Bt)eLk#9ysx*1H% z#hOm}E82paY)nyQFBq?J8ax)OA9wxsPwRQv36#0t1g)8;!M` zS*krWvUIf;yH5LMuYETuaj0}d3qZu!VI-kCH)U&Bo%4U3HJU0O5|%Fy*+-4dGQ<}FNnGDb~iS*wBN)V02_ z{rtY0{qq8=Kf7I0YFqn7{K%wjEoa*kZQQCY?W5h2X5S=35@%S=>z>!I8eUG%Mdcr3JFn#-+#STJVBrbyYkzP- zN}>sV+u%ggQIQ0wHmI#s27A5s!u5sKk=240vLRuyvTBtD#*|k|Pzly;l9tK-N=Lc{r3x9x}(!Bk3wG7m#ff}A!lAS)jsPbJ>Ee~)ZyU#`sja;<=m@y0y& z)`;cu!_q>y`iqo{_6;eN2bM2`wTy#1kuDo`?b;T~ZfONAMFDH`)_W8F3c1EjP0J>p z+sVJUGoD{GYIu?Up|@*8p|fd+p|gom*x%U;`)kR1X4t*)f^o=99K~o;audl<(k{i>W62Q zDnEE-=sD0GnW=L%yg~x~6$7uqRZd45xtWWD>N>nyp>#sc2@+3TwRmP-6Z7M9t*E`N z^QMLsps>fi&6_kvUTS>4R`2u_q+sP`JbLs$uQ~9uzqzDVDWTP5Olhq!h;e(>53RvU z7rO=}TaC?m2CvMW z*`*b(Xh#L`9JcDE2^+v!JZ}iN*$K5(Pny+@^RG(AwNKG)+m1hmABI{!nsH}*A#2(y zo!xTWlGtNw955%;uEuTWCTpH}vcAy`ro!vShj9bzaTCLy<_zqjHV%msi#6I_a*Kj_A_X{&S`yN_vOkt*3hz+R zgKUh&B^dgr#=!F`(b2zEcYiY-1bj|j9XSpm8=01d21Is2^{&hnG(FaNjvZE$`!?;P z%vE8p-NcA}B$=W8JCb&m70a>YD;JzDdw|+j;a~pN+}>&JOYhTNrc)P0AJ97LDTVQ8 zsTI2?6{1G3$Vm)?NcPIitlGcKXrgWS(PhNtV&Zr7h@@#4G26~))F9H!?aw<%U;6;izQ)b@P}Fb2BIOAVzyj zq`#kwQ~NpNfC!QGN;k{i!#lR@!1dl{cAiS9JVtgpabls;78As5i5sgS>69Cb0|j29;v=_kbfK1prICmPxt;XXQEGjcZQR^Wwp(ufX+i-Ff{xGlm@GWE))3Z=78}QaFd&>EQl166 zwlX|S%+UJs?O#R&=~gY39Q>vI((@a%PeicR(KcWuh^&_d*;b}%AOUL}=aHt$zL*ck z%$7Q!kBWqrl8I*ggJjZ0=cAEo=sX z(iZf&T&iD>H$cbz*>gBu^6WUQ!&MQ;K~lDJT<-D(T(>@(Gu^mUvPhR)1lW2R9C7?b zpK8O(r9-`PD_OY16-`Gt2fexsi5JK>{RJzR&RfkuZ#B=#1YN@5%%FeZoHh< zfrFU+aWab&Kai4H=HPa>#;=_89r*UpKLpP?HpvLeBET3jd^8;1 zE!lj1L3=A%rcVaA<))k63rSQPvm(7kHXh2oAR0jG>T)d;aFhDQr}?;UfS)+iiL_N{ zKC&vfMITu$nZuef*>!qExxo5qMv};_ELJrnp5YKx-R(zt6shUT7zgZhXJX;1t*OkD zV`!jSKx{g&E-gZ^2`B;*Hl-CXosASZ+lrwXT_fYc$9pACC{6OuNozY^T3un z`8-+8amG6SHp{(~2TC3UzF(4vlo5XBPtBb;*J63Sf&D%ux2JVE_;av8#9o+Y(?+4D zJg`N2KErwq+K!HoG#_msJPRj+a(ELY`sk!%^&cIvxyXFM2=h`~MLjOcUPjyWf2cyPSt zqp*t4gxBM;71(+K8sd1pXpNxfoK}k6e{zLl<}H*UKvMxF0FdcTy+DNpJcQG9jV(B? zQ(Tk?M6BT>(38m|r|)%fs}~dC5mpiX>GaruRy${oJiAPgLzM^J;T=;93Sn;*@jM*@ z-BP_ml#4YH2&693ReA?Bq3g6@fW6rPg6FA8c52~Tlk~DzF2#8$zYv?^4F1%#5^t>9 zl{Gy(rU=6+INXnZY3H_h?e+1;hXeQBf2*R|wD<4(C%-@&JUiWepgVes<_(tIp|MV| zDRhBj+ENuGhinGuQI<%E6d+=$uCTk%T_!$vguDjQ!1j~_Hzj_JV&zl;O2~5*A=U!w z(bHNlA1U+2g&w6AMP-Xh?k{lG#iA5|(7p(J=>+&KN>bWh&kJ@Ua6{DnK(jQZeknu8 zd>@V@)}k_jcn#)-s2*&|5?!mgJ!d&xen{Q90Be+KEj5S|D+c;xBJHkPb{o62jTzGI zuD8ex1mx#Zb8z^2p~ z5c3GhkY{JJOk)+3+r>dME;YNU*RpCPhYe7({B|xmX2W$6_G@%#L^&6`wIe3Cz|A2l z@yyTWO87o7hf)k=*3i#GD4}4cYEJnriPQOfra{ve7zKI3C%0$P1A;GB^Q_S z^7J54jL@$fZnARFzy=nVJew}G^);@y%|R1CUPutR={>d$NDPGbGgU;~ht(}D4i~!5 zAKdVx;H$xsf$>A@9~Oco5pIRsOP%}Jl_cQplrhPmORyFRAlD)te5mf#ksdZcFL&-e zq$6Da&Fh4rKny9jQ`)oG-`*DQOAq)m=sphkQVu+-IBqEt6L^m)ukf?ZNaYKa-7?Qc%LwUUybeS6Je*vgBvH4CVLj{^ox|67? zl^C=jd=J^3Uha%FUvTP*$QSDteJS&cl|nt=BY$F zTz4PVi}k&uwAJEp=5z=c1Z-eYgwq<`RUnVK&4v3C*qs9CRo=~N1u+g3IB_(BCVGo@ zjePiCHC%84f2K5YNK3^E_g&-EP79V^GEd-m&KTcv_$ccdzI`qB8h!xqh@^o+FvQj0 z>7sWY*88>eS4R?x58|!?fY#FhXp=U6h?U<4D(8KvEUXdIW}=NJZm7Is)aG!x{0tg+ zq4tcm$UV^p5am*_kUFEl3o!f@E|-!SaiW=KN_-d;YAaE^SMBPlt4V12tI%qcq^dUMDoZs2@;OA9@K z57DP8nplh&QWB^=5e{xIEKqR%6wbMlHvRi$TG64sFkHTOuI>(!6#$cztJ1jz@F#b) z!F?H&=3|6rSrsctS~HxI4jo`D#Z?Tjg>xs(2^jXOjqiS)Q+yCx=tRZ7bkYHzP7x() zaSfR#+GMiiIlg5eV1P;kGcS>yR*yCNU#N;DM$XH#kit`m;R=fj`zQIU2fU(yiKV-@ zC%2cLLZHz26jlAGo94PT=p<_Y-8`GKjZx5i5v{=^@bTCkON5sd&@|49!?#Bhs8qxU zO3yKFuHeIZfu?^AWc$3j0SlFCU)k*RC>$(UAXEiYb8jg9Vju`eb^@>zOxK!a`#++b zUV0R$5=Q^mD&a~wAN#GN@o(t@!`1&Vft5NSvo2Cug|pd1(pNVx6OnJg!0p$bVfjSP z&BP5-l~T=Hdgzw#WAI#o=4C1)JQT3!9?BBEM+IEqXw|*2{_{hwcXb8sNvuQ2%=^Bt z?|})dN3^rxL_f=s$r*e+{=Gcl@T?w248D1FhvRAWJNB86ZuSB@5782$3)v3*dT#t@ z``}U`aK?i^5-qMyoI;dcr1`q;oI@SM9~RN#ZEk$zk^bi3Uk^bcZP zi59?W(H6fO46tU_b7*`N*2Z(51rC_R6*nog$N5>%>fO8L=C0}#C1xH`efE@N0@FIM zBUJBmy^4bl^!u%BHkgb2`!Uz2OtljM$A>!ySZ_B$fhV*S{JFoj|E3~p=|v^_Ye9t_ zdxpR|2@af z$2o3&zP6gA&qe}8QL2ddTgzy`8nV3~(B;{1*}nk-&Lm)P^_&IN1xF;<7-TPBnELx^ z=qFI8gJI3UbRQUD?T!f8PvaqCQeR!FVP#fC?&_LZi7F%FP|uHa zSX@%F>w0bjVk zh5Z0q19hnu1W%yEtJZ&_8n1(1ei`5dm1ens2Z)WUi9Uevs zHO@XGDvIH0zzL|>gCCQles^Hz@m=EJPDlU0=?*ROn`N9^Ich58vzBe&Pd1g~wJX2P z&h~(Spp%hWWZ9n%Y4VQCWhEH`hZmtc&+HILbuS>7buS+f679kCRW4wCpvD39#N6jd z1!NsC7$+==SgPBu1t==D_cwVVPixfZV1bi9CUMJ>wkebYc7-l?@HM zqW_3dJKxF1)Tn-mDORE_J1`|-Ujnf#+6qNx*#Mhd)O$d zcpszs;=B!^2KLf=w2@$w%trD680+&B@vcMFefRepQ?y3)RL6@bp|0?9cIUQw)`=%m z(D&_}_S|#i(yu8D` zF*jS#6d;Kkf)e;|V}@D1&DM&nMSJCU=0VhJj6~gZ?>dv)Dho{pys& z;Y^1Os9AK%nCYgpfBa`dkDJOG*G@52RcIJM*P0Fp4+534KphCbL%_Y)F9z#phfTRB zcJ5DXoFTk1VXtPr5*%^wuYZ-ROt~X9euZjCCi%O)BPY+9%D(B}LfLz=_3>5&z1=qQ`092x;4eL>{mwd&fkwJM1zKu9rSPNgq*Cabg z{V2l~4wp1QN1sQDOfn^aD#@T~zzIm^VbjCRHcI+b4GVmgqg9`y`M$M_JN$)CkseAp zH|m^HY_NYW*@cHZFKZcAxoDxo;#?$FE9HRvj6IbT9T&*c$Z@fAXc-JVt>$qacV6}q zUnvcATo@O52^)ggIB_^iTI&_AYJUqEmb$jX|MdPpr_5EupA_N^D0%pb(yd_mjGmsE zDDVgR6XwTU4;=*G&6a($HZ;GtVTE&tq&dTl2<5c&UypAc=$XKuYzUC?_6Gx7;L(@f z7&BvwSa=Mbliw5c5-{aIy*Vr^7+>ftyaC7gehYyX+!QenjR$nsC|Jyz>*I-hAF!vU z_0R@ESfiPtJ;n@Ysdi4~@bLnYLmZ^tG0!*MAez`~TgmWmn_bEFK@7s1AD9Y); z<9;ayZ;zIfM#~>0u}oyp?)B7v{kVXWT?OjSMA-$ln?6r*c%#ExUgaNjK4qrg=C(kiV!~u+=zAiL$5ZgO0&V+H{VKW zFO|q7M9es2{U3}$q7G;-X>YyPSXh;8{ENg@vbYH3EnWf!e7S-12f~6-ZKDMZB!Hfb zB_(>rsGs8@Mz|yogh!=Yj>`&p6!)|`_zN3)gW|`77YSMk3*X_ zf`L|AwpWbU|J0Rf?*YjS7ixszAUys+D=jXV#{lzR)Ls|M)&ti0vPFvVES>+kKyessb;x?~4O|(P7#hnqK^}aOYqdn2FN`eowltNViBJ zMCZ3EtRwgVLA+a{{S08}FYwE_x+PZLt<(+eTy1bTAmpJ}3*i^?=5$FLg@pB=3fo|& zRCXtzy13z23qEB{<5zR+)R`!Z>Y;#H2U9THJ?Fnpxtt`BIgI$7hlJyC=FgkIgq-## zJ3>q%uMpeMSWlvSsEdyO7=bl@t!3^WF<-{*3{jv%>W_9a=SnJui9u7o=-aSz)r$fV zF)}Om{;KS?y^!y9Eua`@ca{|-N^Zq0L`H2%l>TDaPR6wrMk6odcwWgj@%JxI#<#uv zn4H^J8cccO%}%wJY6+AqQCVt;(L_Nu(% zPgOiR`sip^_cOK6O`i*v-<05qDKrY~7_-%tNSzVr+FPh$9!Zzkrt+#I6P_G7qD6Zi9>V?NI?lhq&DVK z^FFY1AORl^3g!yl@pfB2;HTFhB*$qa%cC+O^sNnL+(eP4<^FMB)Onw@VU3B?-uE}=Ssa!3jiy>H z?Ts20bBzaX3`)M>Gmk=@imfvc+GM$_XJg&ey|sjmJ8o3+An$FbAC}5}d3ZG)!0rS^ zUbRmz3^^tH42`317lJ~}dEb8#LtwsD+C1;v<%n%AX6Od^XmbY0o$u#>jRfG0)8)D7 zg{uaDj~^0b0O#(}>t_=v7@fWx8U3muU9xcu#oft6GGt8yT#i>VC576OaQx zva8uSiD86PE72C7)HdZgwe83fElvLfvo_oGQ6%~`CXdQ1X>R?EC%v+^ASGSgBDXI| zlG^Pj$ZxvnE4;o`WPNPpjcVHSExK7Pps+bdBXH+BXJA8GpCNuSZcCCRyJs|0Vd`a5 zGaV$lVjiiaHXQ|y+8zFhKKqiZjj0!#I=Pcn#x^c19dAvg@?as=jYX!vZEatDmphb? zLzQ~idamwJc%e{mbjqFbIKtmoKE0`G9xHap9hv5|Aimwy&X;QEnpV9%Znt`-;KV0V z5E8$-B{C9hy>QVzGwhcc8U@8|bK;5#nO}y$HPezIr_T#iZ`^)ymj4{Jah{3)i-Tc| z$yb8bV;!Q_#$;$-pDjU3xdA^9Fr;DHfB{6T0NjmX#k}oJnA-&4nb8B{HBJ~mkO~z2 z79q+7dLSc#$ICLHbk7}PfMc5ps;{0`(U6UFYrlWaSrw$4z_T-+l4+muRP z_Lq%!@Rvzk_LE7P{Od?wmd+e}zQatheZm}2?7$=7Tgs?xJ>a~a?@fE!^BiIxb5UXQ zJy^oSqu)yGvd%~+*Dn4Ha`{2FJn=+b2Hv5y`MDVUbYn_%DD=K4jYE$66gQ-j zZ&OE~27M`P%P6#ld|F<8EOa|^+hFgt&f6!tTr6Lnjpo!WjgF^xl#Ck^02&d**NoJdq5R}N7`Gq z7k?E~?M15!ZglMBNuvQuIs8e_!nmUOGl>RqZ{4qx=WXi#yXo!g?&ND{9U;!Zq%dkv z5)dclLn_5rdOMaOoz180Lj9sd89MRBwrsAUt|tE1$8UnY?n{%cs+Hp?C0F5N(F37E zQcaDvfIftJPU@((-9aTFP$|1oodSAAzcvyZ2Q=Nk$*n@{%;WgUvs!j-sxPT*&qp|$ zH!qNn4Z05{2*5*^d4NU`!Ja)e!ib$>JJKWeB&h+{2;swbSR{nNoHrCOO%gAzHGbwp zcn#vl8y~uB^V&T$^RbEmJ`-?K#a;$>-^avL6&-^td~;g_1Mz)4_6*#Y3)E*OWncaH zS8?{y$)9c|W8a}>Q#fh`T6E*NcxlwBAUbs70Vzd%aPRjEP@vYH*lADov_fa~Dtl+e zie+cdeuUwVStfx%;K?Ms8dW&oU)?BaE6jmBBp@Z=DRoL6Bt<${iwBN9Ao)w!hF!Ac zR^bY4#17brvdPq`T>u_HfbuMckoT{_T8eTr+48=onR~z9H)45utXKV#ID2HE`P1`; z>-PR@v`u^rI_3(i4`2MWq<7pc>_H`;v$a3${g^%E=d7NV)I5C|Unk$Mw|4Z25@GT5 zh=9ia+|^1)apLgFuY~pKd9D4tEwGKHAk;HiHhHp?3QgCW)M|dR0$<%4{o)mi!kVca zEU}gfCfaDCqGTe+f5tACq{nxy&1+X@xbJeGAoT=q-4V=N_^4eatDk*lkt)^MVa2)f zA&1-lozd`{j`5`X_8GB~_@hL%h&r{C?#4g`Y6bYVB#8F8rXiIKjTozES$lWgr`U}->S=sG5tRun@PJ=*eGLG%s zsS+0>f`>R<)H5i?6B|Lw)2oJAAorc()8S9APcBZ^X2y+JbUf@cds?KuadP{n&H<0? zfL>UOQ2hw^n1w7abhVE|_(A-hTVJ^S(YxKkj271!a^{fx@q=Bll|>d${Dvj0%8($_ z+uHZ@BD_51{7f=z_ziuH+gmu$NM~fqTsQi|J;k)Ma9Dg=z%=}I?#mAGc zu$4t03bkcd4nPRPw@-WOkBx--5^JU7{3S`uo{2Be{^?@7=mS;4Jtuk}c@NgfM~fU? zq?6@Z*|@E7(^yHPb)uD62V$L%~m4ikj65#~qu8jOB&owgUX$#M>V>g|#W-)Xv`2SH%|OyS8}EO-I$pUp zv!#7|#{TkAFnmgp^ZDm-I?hd*vZ-Sh?@u50n`nw^o1p$`(==Zs>_77-up`r5FHfBK zn08O%o8^0zj{UF;LQ?p{yMy}nUqnV2Va-&NKY|!mkB^`s{<9ZDbXK>hu{!`5!--TT~@=-h~o%24I^YG6JHjQc8l< z!+-n$7i;2>wb)R2Z8uU{MmoNNy0VB+g*zatXc+Sy-ccq&WGxZp= zAZr+JWZ9kz8m}jsBFFc*AnCV}pfvVfs%)ChYW^80(}j(kT5L6v-gb?*LMaAPen_&Q za~{&xI6FG1%so5)alI%5W-9xIKDh3E|LEC;ugo7j3y#mm8T2c$!#vXp!?zp<63gO+ zO7o05Od~+M3JtZg@+MhQe=Y3k2wo=W!yh`*4L&OZHv<%+MCUfkwD@+jY(P#3_o=po zrkW8e*35voTc&*|WXYcmhZpr=dnINV?#Az0o+~CQ{Kaw|l5S-k#azGpi5PU7EzrA! zk$-uItZ3nFG)Z|hn0^t(vRHH162-FGS^(Qc^azy%m}Q~mcmf#Tx}Ti$DEUZnmyScE zbT8y;Qne<^v!ot+_S22|2X_O_+tM(qz2;q-kdwnKe8cHI!;+il&2M>t(C@q6Xl1*%-(k9r#SlR^j$p#mqAM>#Sw)!NLp z`rAx33t&z%MxvcORSv|9$F_Mw#D8{f%=GwOJzo-{b`V_HgTJ=Xf!|sjUa_ojkx?Fh zz%XfCLRTR3l87^Un>Si^YqSwx>vgr|oi@*Gut9=DzVWvTRBwlHy~69d;r<3atp_f10Byey4;qVF9= z%8=quc9*1UoT(|?N5^aweg&mpzl8Om(00B7`#^Lt&J@k;d;^3EXz4T65kMF*E2ly9 zI)K8Q`ck9EU-t*RtZGMLT{VcT-3S-iV2 zY_w_7v@N0RlK@t0&~|ryB=5m6s;+Q}^!MdPIpwbb;wR0+lm}Kx9r&&WgzZG$z?vG_ zdWF+5EB@!AwfXVk{3UQ*kO1ljm4~nrZ7KW}iSM9vu0vO=*VQGi(W=Ez_>kjs0qhZv z&E2yQ=Y^m6l)X7z>P|V{D>!4-OevJ>L{5McWm;WmR-s=evQ}T?#s2E6?2BFg;^3|Z z^^Uv|y4Gz0R_wMpB6oB2%~vMpv?l83_a!32YSf7@ePb{6kYsqZtjPXqSxOg=RQ5|M z7cpAIaQ$I>PTf(Kp&NR|K}vbbUFxLTRw9Jv)b_|4;n|*Pu(uYw^2&v3r1~ZGwBc-5 zZQjxEXBd}1!IDn1b_bpxAKX2AP z@lMaW4E>vCmB~p5sm7Ep#l2P?$#PPvtTHcAxC@a{M5mG4NEPXt^qk|rGv{uz^#=M@Wt{kOGZA3p%4)!19%N;yrW z<6-4^ax8z-qfwH?t>s5$FB5bDho%T-VFpFnK3I){ZeLbKWUy`naIUACMk2d zdhP`aUx7l+R#52jn2(5Enivvw?n zm(=52VZ0P4GXfP&BvRQ@wXvVKzWpf?X`>LxrF!t&{^0Dl(ZN>VfXzlxS^ETUsF14J z>CCYNE^?rmvAy|dhh+3{Ie2!R(nJBa(eg(%k0pY0(x8^?`6Y7bgzIgMLdOGx&CIr99>h*hw1mnA(J$lBa3clij!d{2I zu14UWBHmoXmG_!HOVi{O;-LRf;?_$xqxrL3ZP+bob>+sXKca2&L3lNf%TE!{*84Xu zwtjYZd<`9_$Wk(>6?a<@X^s*qp~&kl6UWL`&6PsAi6|w-9$ctrX6PsP(zhlw;_W*Mya>wtA;uq}V)t<)GC zJ2$gQs*-m<#ly>fX;ad9fjEn(%K=?dq`25If(UgssEVlSip!LBNtD@D`^NDmEA!Yd zVq4EQ_GsI$J+0aT*W*DoV}EQpR}gCFwfy7K!J*>Q!+Y$|Wp0T)jh7(iOK05itI?XbtI{uLrR!4Jo`33x5 zy2DdmXKh5?N8HM9xHXkk6{7#z+{(wsO|yUzo{P}BYjl?#MiCp2=EPn!KzIiF!yP{w zL@&C%I}PZH!{Cfv2X-H=AH*KM_k&}f;F_KUz>g!i$^4ti!RZiI{66tnCBv`AU6PX1 zh?Ew2KIlPQCW&EMtj4cp5)8Y+a;BRa6yeuIyfLFYl2U6%=>*er+e*No`SRQ%Mr@;)o)-@l3Jz_c6xv5Ao9$ zJI3PR!*h-Mha+B28y;rcTg39{Q%>Y0Y^7!$Ef)MUiuaRoL0GtfS^%f)x-wK}fmcve z?F_H7I$2I4yB5m%GiX~7a!vinU5H zS&x=e?KPggKR2DCdP=Dp^vB(-I*>Kw%b!cKLakD$ZNBnF)3f0I+j5-iYf`M*rD{a( z4xW*(`uwi8U$Oube(6>qd9HtX_=#Hr{8em|L(a68Lv|ce+~Vz^X~?o>M%-04gPtkAzD0yE9BX7y>Yomb@A;EH7&yQXXCrw{=>aN(56 zI@dsixW@a$lyG@5PhbL|@>+d4%uBurz^)2P<^DuZA7YdLcjOIh3aLq=%?wQD;XEP* z*FuCmh*_i(fP+dD3_RuATzf=Q9}ywV_(?iTeo_ti{3On3_!0poYaqaynNXy{`k{vC z%+m8R7fQ|VeONWHMtv*>zMXtrr|B6ZzsfvxQEgaaQ(luQ6adC)#*cQ%G)LfosLlxxEIhu3wH3D#eYk%KV{ zbG3Au9kwDf87Z6dbA=LleJ7vse6rK1IpcR2=N`pukguMM9$m>%ZBjcpI({15w>0g85Cq}O;@|$s_v3jo_S!A2-#7a1}u{O$4=iEs2C&iTpP zlwM`SSNYa>Z=7E%ABNAni@rM@c>DF?T((`mmj#-t`X#iA^YD9UtnC-lyMCwAuX0bx zyIRypr$d4vC`Dfe)Th-WnUA*XH;-_0!2z$uDA%Q5=5?lL*)C4xXw-L};*PYXaoN0K zG5&jNQQ7e|=qt)I$cvfkVO0CFpBDG0YvA~oe4bjyC?khcn-0_0J??BbBZ)q0jnDz9 z;D8b{L`&D}HaTWZn{FCDZh{91Vc-oT4}5c%AdCScYLhUbmwJldKUz>X-=#Vq&0L9_i0T30{CvXrwJm62Hj+HZR%am4}gAE0!meypc#9N_;`daL4(` zUOHqbv65d?d|EKHX5%MacI`%_*u;MO44qn}>Hd27ZW&iZq-Qftu(b-LZ1!oEA9ut+ z7^Wr>`#vAz-Jv*&nx_)!^qxK5z(pD~qfP17qN^vYW9iCIJ4V#7tT~NT*)_cAH6=RS zCSBVXm4oAe4u{dR;V%5traiu=FsC)uUoE2Pn69;1fVWLfjjMfnYER>auCBAx8ti&e zoZ9q`Cp0esxocGpz)3C8!4Jtym93|esJear2U<>t8?tI=iB{o%I%!c(?z%w*(+qX* zY?JF`1{dJ1rstD?ABl%2>$*B!*~}m()-JZ-s|UV%5i;>uZQ{37jy*zOtPh1IA)-$1 zYn;tBQ>zDv*G4GVXmhed_L_aU6epoMZTu0_N{{R*6|?KjTg*qep@uK~PFTAqfQYo7qJ6qAoXq#N!Zoe$!Y`K1R4P zXq6e)c+gC3S;u%b<;VGBNe0H@%S$9@EI@1xjsEZ@R&B%zT6Rc|Uu9JVJ=!l=o%=9L z-A;WfxC<|PxyOkfAQr;EmK!M5<E>x%X{bl~N|yab~}e%F-}x zZ_f{tD{}Ks8FTt`$F(^j;&mA((E^om%8uK~OGJwq%aFj{ov4;-4!V^4iP2J_wc~S# zQo-HI2L{KR`0GWfj|;DpPR;{4`^{&cXy=vT>uK8vzX%J%yG@Wu`j~O)UaGgnXdUSb zSm~*^kDehT##0=AVNW85sWD8rYi;8RfArWokF(23HAK}Kv#dD3A70Hm@DS!NU z(Xq`^%uCGKLK9{)I?Hx*Sq$U$9d*!q6vCt$yg}|3;!LNvjXKa44LoC4J^C#WaJrUa zGxFsn#;KhrV7n>h@c^!9KrPZY+aF7%wAX$lret&2nPoFG&h0gyz>AwGYhkHu@#G35 z8Fm||2%bJ6Qa#*K62M*(zpq{DMc60?{5&QgR7%|XgnZymDPgM=` z0{T{l--zXKS1^1jljA9Ma-i~>WVc}&zGhfp8Vxo30{L#74eTaHnHo>9@e?emM3oH1 zl$Z#y)}2w!0BR%!2$(yBU&>_dd|hNv2}E&q5UkjwV8ErH2PQ(`IU)@CFsb*lA{lY~ zvOF_G<@ZO1YBYL$Ke5_t@Xv}E!OZ4;T6anAXI}lEDMA+JuTirS1?gY-k96L>1X2qK z^czAzrn&^}ogJ@&4a7HbG#oGo6r3Uqo4T$z4dzQw;&0VecS7KI?(>|y|DwrcQ+|8s zcC+g8AJ*Enr(#|`mF+VzxAJF}XYFx6Kb+>0P~z7XDs!*yIUtF@SiBXnw0J15Jmk)x z{M}huIbD_K0@n%fM3tB2Ip_2kD!6hdT33+1>g6Iy@qa}=;PVo?FSAY+Xn5~?{C(`g z&@ndDy{k35%Why}^jrR{_O4HvYD4cut0lAaIb^GS2^nrqF)sM1Rzexifj9$~KGV3+>gg z)FI6+5-*9JQ*d>Kc=-;+HnDi3gg2kx1Zkd8!kaTDA(row__1~rK5`);a%`JvzB9#= zTB6}7sSDVyy^ZMUtYx}wwF2MS7WM695?rst!|)3a3{ZY-D5M9u{y4%f5u(r98l=d` zvsz7WkCx$-)f}r2z81XN`580rNVW4TtLD+Z$RBedEGm$>_8@JvVULJR6S&Vqy#SsP zI1Ll48%`8Ti9~L#=;Q*wnWWP#PIKU{O%ncC`r<;(gStj|Lz~*Hu4?OhLKnywXjUpOhV?KhId9JIGuUL;#6v?^As+2WTtjKLd`Kui={8aH~ z8*Z#4ll7P&5gBPAqB25fc}$WabFkCzFE+;{fg0IS$0%r88JfMhr{Q<=CAp z$>Ha8k8XG{A1>Y)etS(~sMFmG`m`>0&+MIyt$>ep9V2SmfkS!NlcIm}?1JTYH-`C= zST*FHe1nb2&!9P*3Hp`Bg`V&}9E1V)>-(1%L?Q}0=(QtM4&Gx`|LXE zex>%xg}SyCI&l2V^YyI`8T?KVHTAP5ZoQyAA`6HmM$@0kJiT#o{OWj1c3aLz(dd1H zugJ|OUp>3omG^bW#EQ%gjbo>aaWkGp;P;i49BS8fidz(leL(X zj>3~dT$BHFBz-~+7A-Vk)BoY6r1y;8fz{BS*A1#0XvAQJBg6DhNJGlTp^#F-{l0Z} zn~;|svDkT)%)sUV9C`m(5D|-8@Q|&l)M7LV{)_*x^>n$)Ls4Q6X>)S?qLSa$e2ta0 zqT3|JW=#|gr2$ivCOb*m0f2Rd#CKCDtZK&p3hN@ zeksHUa8RqY2LlSq6JT(awOth9TJ%MIC!GuY~U+i5SUL(Ur(y5`V;qNw3 zn%`*EFXTi=9#TM=)FJMS#CvBI8pRdtI#WT#aL zv#_9o|5Z5Mn$p$M)nX8A+f}qNJ3T&!ab5H?tMcOnSMK@7s$jXsx_$S96V6~o_LK*| zzw!hu86UUXie5C}iZoFDL%K2t|AcJo$+?NWm=nr=GpR@!K6?eD-OGoJI2Z}ixwV;Q5$|mNAim|Ce!>QuBF7Zb>l-n7^mHgj?lWG+1dsyAChOYI;G;z zNWw}L81?+EVUdgLvEEiDSmx;1b{ZjV?3;n4n6xD6JflJnFW+xQl40L%;X_%hHVxz~ zR_8?4mTK^^dzHAP4QH19i%%sV$`+i~rkcf1*nQ)BATj=AI*ejrd{2k?%eBkv!VVr1 z#j2DwU!!(=4DwpPYRwAwP1JgXXD_Ej-q`p-|5*m8w4#5(RKyo7N^#TZTHA4Rotuhrp!>MpnP;A^^OiQ#DM??@slH`X;G z|C;_7An!!B46oBIGOysecWQYDvz zJt&=C5P02QGMrg|^VYnFyJ(Q@0hwHGYqSx-d3@V#&onm$$UbZXAaD1I)~H0R#EMm+ zfG_XsCt1ONX!*zpoHr#(-j54)cIYVYw+cOp;6GYgM7C2ruq{I34mKI_Q~NqI z(*2=_Yqj_xf1R1pZ@f6FOQjVrPUxFY*Mkp^vORIJjC(w`MmO8CkonYen<+e}Jk3XY zWb%Q_Od)@!YVqF+kyzI0yIqG%pXl(dI!J8oUI+F4xX&kdY0R@3n!cWfNEBzUJrc8m zJJlKGs)W!>J$cZzI;c!c5x?+pUH;>R{RXb>BryVNSz_soWt?-NxNbo!|Wl4+%i(n}r$q%ok(7s}sP>UfpM?*VYFGx163GS|WF&+om$){MOTcW1l| zKF{D&8U%1TyP{{t{%j|e>xKu8FZu8`B^q9y)n{I&(LeDcdQCWqjHC7>A)U5ep_ulJ zXdU%R+Ru5{zqjIJ_3UR#Qkr9CRSN6Cd>bhST3%b<@MFdP=%#72u*qrFEe@uY$FP)p zgVqzG0k0=QMh~A=?;jMUOt&qnBXW$i6Yk|+8GsGe2q^ihzyFf`iB0i+z{(sD!99ON z%)vcp&>XYzscW_nx1B_sSDR^`TVuG`i(B1+j@e}4;VT;`FGA{G*tV!uk z4*!1UaeHRz=9riBn0{T}n-rqCV}B!dWz>TZD}&ld*X$b=>pCH`+yPOYD$gjwHa=>H zkmKhrdbWki;H$INX%B^W)PpFtOfe2moO8VI8inYO@p$ow6>1ZsCNhJC5m};?pbIkszp7I;4PV_IsnDSa!4)i;KMXKvs1*l+j8cx+hU z*ZmLXQ73H6wEYoe&lAHH=SrTXx#q;zvfN@6IOLdS z-$0a^sQYN3=q0Rg-+bbUqSz#b^JrLLWe*%%MJC^GoGWIOl$dU5;d5X70v3*W`jJ#C zoq$9@ABJMBdy>d>F=n($T@M{1d?~a+cxAK!o*CfA&rsZ3*1hS?8FQXkbumjlHWQal z>E-HJ=BWpKP*Vq$&BDMH4}9SrvedwhPZ-|ZH))F}cnCM~-4c1a?r=jNfb7r-$an$b zO@{Y?^+P+=s+K7Deik^pq9@v8PCeUxo#tH4b3x?Z9f|w;&XumNhW{+GOp?yU_cuwI zs5ptlfCSluo3%IG^>PY)4&U3BCTVZ!TUXtGu5L#meNnF|FLd9;%eCIfuS9%CWz>GhHW73sED?lKqWjTpkc-1JRV(048rx>|qC9rC@?NFXVgkq*@Id)xHcT#lS#-)@qmH*>aKB#9T=^ zFU%q_pUUZ*y`pBGEaMD`G1{3$fk26X-)YgWYC7%u|owVQ@-Mlu908BW+zNMJQWtwj%g zGu8XbbOu*QQuV`K;OWt#AH`hX%zy{-70XJ!Ww#=*G6;|Lhe>Y*o=dHQL$hsW#Y7g> z!D<+$v2*XX655uhNVsUq4)h2t(}#!WiD^HVDUuWu((s(26jcll2UmLYyRU^a+N7G! zsvA1Y=}KnnJOfE7a03f$5IaCeJ;riy zx1sRi8KoiE%w78iqScIZpmcH^us_c73}@eMpeKcAUI+e7w%vvY{!@JTGR4T59ADD5 z78g2n*zj`7PGs27GS&W_HL?*_UeYXOX$VJ^C+)%nHM;K=JH(#lt|s$`P-kCQ@=EI#hD*P5XI|E9Xn^DiaO9 zTBS5EGn1}vI=-g?{6%;(_^arpOyy7;T&DlbE}d$ue@nSTirQogV`*q<(&IrT#r`Nc zx0H#k**-7NH4n{O+uzdM=1=U{4Kc&l*~*6+wzl?pxx-^Qzfy~=aj%E_XpODVRU%pU zA>O?;G@Q5!J8m4m;?3w+v$8sez5D3xcz?9T_|2MEY9Zu*Tra`uF2?&f!ezD}|2FFT za>D}moZ%p-cQ+!_H3chCh>E()9ix7?r!*eFS02|<^+J)?+dA%x7vlK+aPzbrGWOW% zna|kzW7cW^^0I?x`T>4h#GBRk4u9i4>Z(H&3x;}Q6g)%8%9?joi^m_3$4HEmFMKqJ zAR`rxP}y@kI;;Ijzh61|r+Jsh?M;Hs%)`DvMWW#~FxmTHR<@C9%?z%0Nr-4U$cGS+ z18##L+D;B4%^<$-r3)h2;b3WrURk_wT~I&Jxvu+w6t{7gP(6!a+k10}dmkt|glJ*^ z2sM(uw#r;Rps})Mn!W1H@npgYkVReq;7TntC9=`C6MO&Qm51s{-ofep_)B+KR)aW8 zT@-cuq2H;?j;BAsK0^wPd1;tCi=%T4;!}$9mg{zhS3SS?%u;>@sH+z{AK(y97Gsn# zW6_6wHvu67p420FQwdXs7ZDF?0c0Q8{La zelYsIzU8)}CGvrIdjC^Wu?GK$Y13D3yLj%2=~9!Y;5r5{y< zxQQ;(ON=dwPr2IJmZ4So__CK)s*#s*D!tcIr2wv6@nx=a;hy2U9e4oLz@_=Hv`Q10@Z{6$s64iWXC|*Dd)yu2at;dV>ynVI^yNo8Xf+vL zvfVCGjnoYZ@$(t1DLJgj{Xn4x&5mMUN%!xnPb)mg3LGV(f|vK1Z(Z*z`%dZDHmx)e zX<}YEbL&J-{n$x2WIMl@Qg{cwjj-Wq(N0BC;Zifk-Ev;DjVS)Sz@Eo8rohzM5a39-%^VTbrWG`YI6T8}@zJB8zCvfy}V`^>|u zZ~KXD_XpGSoGH>FnZ)<*$n4&>V-&3TvXrk(zbNwyj z3!5Cd2k5pj*7nG{H)mdT6?XoJOa!jwrQ>Gstx)*Rs5e`t+c>m#2)pt9$ulq4N*E?! zKl|(bHp`H;BlpKY{wvklKA^z#>(SGK~-97vyPfPvL0q@S=X z2mmry>8%hb5J&vmt*AUW2d@wYF`u^oG%MB`kD}6VbCz{qh-bo$ieeh5pIgrz%ILJM zm0WBW@$51od1lv3$PwHUFi8k)sp`rqrCmeYogCMEx9xr&y61#W43uaOyy7}}kHPY% zTYS?=prYl?zMQep7U9f-yIu;U+9>Pq* zY7{-;*?l+A*?q~e*}eA!>}TE%ntR#5|2FF~AeYV-N6jkTBG^KAXNmT+VolVsYf^YZ z&Tp#95nd+b;vz6-K6y^mwMX<_3uCyfmw%6W<-9l~gKXmP`jOk#%u07`O8y9+LqNjo zlh^m+%}4D7yPv^R11yitd^&!e*kwM+t zu4t&$174f-u9Jn}_(moi1YWzC)wWphQv}FGTd+^fmY1-=5E;a!d!@&Zr{A1Eo*|)H zMkFEhb5Fc8&f3ZZg`E9TF zp6L^7AUau%ZgDUJN>y%L85Cyv1+opIzJy5(L;%|(5#9-~BPd`L0zs+&fRw;v=)j%+ zln~4EnoIrh|G+V#uLG5eP?R?a3Sp|j@rBPNvVh5;~ruKr9qdwqd z+w@xX3w--D;{Nv)UX9~=iK}BquDJ(zV?!lJM*W}}$&ldw2J0RjtgzKfOwvsVdMF|E{lO+LMO94Lf1{Si>fSH2Tf%G(GU9-21ePy z848=U;td-!eo1DmlpLk~QW3kB(bb+IRM?hu-w3U;rPP@=otAlGZGI1G8L@Tjw02Vy z^~XB+%6wR{L_vyqLYEqBn){CtImVx~uIMocVyHovnUA?mncr$72w(+AYxv#`0jC z-X{^R$wrrQ!T`YS(FJ!RF0VE1^cHIg5@*he0QSdH`4>@175|Ww-_2OoVGbJBTynLk zF#35n6fS#!GL1FT^scwIBj1@uUHuE z3z)Vp5DTk?FCY36SaTuNL(wmeiMzt*M@pyqa*b2pm<>cnI%Md2*_+1fQA$#5(fAnu zt~q#G6F=`w*iQf$MIe-H24o@%f?i>LSe>bQ(H~3!;$dd-o){vX^Ej6QfGl$W^d6xL zqT+`_@&xLE>n#YEIwfpWg(OiE@O*Ni6Sn{@4htToeFmrAq6gHqK;m*h`z&%NrJvuXaWaqTDkqHqYNzN1IS$uEOGEj+f6L zRdFQ#!X6Ur#xBd)|>+~dRCNjSs%`i`?8{W0gP1o*t){#URUwr!* zxT;%$HO&kJGc7{64ZUsyKj~ixp`pza1{+>rB4r|gIqGcH!xy}I#K|NYn&Fi#Jro!Q z>A`FOmi|D<_WsMm<(?x9c9)oJ7)--kpt0Iu!rOXXA59;mG8@_(1375YFH(gJexQvl z${C0uQ~Z35&zf9|RJ?|*N{~S-lzh3;%;l>6eNJ|_{F*1EEj-zD?NSMRqdb~2I)=Rb zJOj7;$qGH+C4IN%v43RDYWz@@siXXjc5#%qfT^ZAO>YKgHA8R8UD%rk{rRD+?JwD- z&m&LWt{2IWZq2m3?90}V=zD(CBvV!A*{P7BUA_&XEV+#6wwmgC4CWa9lHDehy~@-< zKv!~YspEO3CNkkQ#{?OG$`D(fqw4CIqFPM@n;yoY5>d>e*h^55)9mXAXT*KFmnCos zV0aKgw+R7V^fqC&-6oVxD>IVWnme5>oJU$vh+sV;u0ha$z#WD26Qq5U3ETfha|x`F z>wa|jikGq6#20SPgelR6QT}mO)Uh0p3G znE~TgT#ihzX558mvnDz|)r(stWRFx@vec${8xp69x(q{7{_IGHBz0XNers_-b;{ft z#*uSd0TH1B5xr*GMgef2)=wVe)Scd%glB<1^s6F6VmW`qu&BGJpM75mulSO&EkM@r z)YDM?!$&4gl0M+@44dzk_|-(9M1a;5zGZ>wG$fX&+f;w{=C0KlmubAwy*Yx{R7bO@ zraf2Jy}*J$4>Yl|A66T@2>>}38$Jvh6&K+p`U_pWC4n_MpLZJ%%yjU`f8)xU)n$mA zKy&g*!<~t;6}u2R;0!1`kD>ztTGf^3_vA~KB|j#s%fM8Usr2N@dKCCToRHz50qVk; zH&WEL5W@Z@x9j?i{-J`qown>Hxm`x7#{u^zdUIm=Er`N?Qp$eXPzn7*;UY5M#Wkfe zbE0_QnXh_Q463=l=la(+-Mp2fNKppHubspgf#5>!&KCRq3R+ISHzQ z2CY*KXN0{WLQtSKDmQX>!Q9>AO^=t=k}e@deq|~#jtw4G@|<>tn+xFQLL%1rW3kZ9hOhYG$<(}rW9HH>6ha_VS`l@;fK_Q0g!3a7LgGj6aB z&h)E2*?O>zhSZmZ$kYL3`}S!?-IXhQ6+W<_mKSFI!xtg@O}BH4`~|WOacfukGI0Aj zE=SfMw<2_JW*?O~tFn8z$S`~Cgddf*UG@nt>Jzl<%qrb;`+Rh_?^VV#q?O+oKs&yT z1A2A*G_|Dd?m$F#q(^K)pTsXzO7$P9-;W+G^t&kQh(^~$jW}MYBhllgbejdi;8ue4 zohCl>&!^F{%;03<6Z*Ifthz{U>3;@H8HAWS0EFT>8EjmiN!P#{<_Tv408c7_Q$hL4 zoF3!_U6;`f)7zy=cFpH-jA}2Lq^qDk%W*kj+M%a}@FA3g&Wemq_9?MkdQUiKpFVm* zI5AR5I4OEUCM42SZFWqm8K&54>C$s9hSGBCez}pE7c@|MDDFJutF)7^wV8)Tak{6LC_;oHImzus<5EgDHXgEO$ zzpDKFdW<$b@{$Sw=Ox0Vl4nBPgLsY}x?Y!QmOX5^+QNGI0rhf1IRCo{yX$uA86EH5 zZN!GqU8zzHD;Knb=x)5^pmLJE!Vs^o2mt(7s*NUSpIm(a^R{1E^199WDm!(>;s$G9 zw#3zUnTVHf4hGW}>!e#A0F2(D4ON*baEu-beKHGi!$~<=q1~O>cdFr~!%|L~sX#6} z)S4HSe88=m1G+HNi1!=X&tbnlnWp_Eet2h6NP;z2nJ2F@2wrbOu5~!g(fQBET1ZK~)!PcJynBg1 ztknVBASATPAWQzeC2V_T!vOoMi5FY<<~VnwDl2d5Y0_8c6Baf_N3wqNFml=!$EiqD zmOyIAAJ$+rUE@Bx^3?s;QpcPE%|tpNA^=nt4W|l`uUj98s01Z?{*>OGBr zTu~s%CM5QS8WS(jS~`wOhCit&NpQ*axubH@e2K-|bj#w!8c^?M6UxsULo5@$7Ed%D`~}?x3TE|PdIzy=>l6SHz5WKMS$LlU zcr7$Ckg2z$Gq+q;$tcSzPM#51VJ=qgup1#_qVI3qLBE0KAeBkZhVQ|ZhnypDJ;~P# zH)+#FCf)hdS5;toyU+NS8Jf-&Blcd!*S|MxT)Y?X7D1a_*rf;m5?-jZhz*mjm>G9z zI$y$uGPrWM3xK?Uj0i7=2!WF|nZNGABXC?}DZrFldct*&Xyssm-UOX*lTemq>T^mU zEXpu#RzEfk8zv~t0>M1Jv%wL=D zQZbmw)M)TAch^`UFKmN<9eEO8ToVPX*6^b_yis<|-j{FwNLKn~7dh8VwafEOp-pDf zU}scyhPjphqQqfyXAUzf1g42bE;cCJj6xQ#l_8 z5@ULzRy)G2R7iRaNQkczRZ9N_NUw_&ehcvq0^H-DwPsASiD@r&z$-!fYyyz4-h|AU zAE_Aui+9WRe%4h=vAixyfW4dX)%9Yt+Y-rAD+IfpQjx9{S0oxV%#OjG{)EXtrtx6% zd;Ht0;}6~W*2etI7=LKLxce)A@aKnws#q$$+2Gf45>qW%Sx8Oharl461%2XFdS!nY ze#13E4ME`rPF-dKJQpyUB898LqE4D#H>OX;5<~yyNYVfD)CGFzuw8Z=@hHvb-AHqgUhQL1*?P+h^Yf`ePf!B@G0gE@Wh zyfTC{5n&gJ?{-yYG6Gi5U8&+Sca^KxOCMX)^fH>}y&JSIp5QRAX0p!O`3sEDvKf0p zC)iB=Vb%L_BSUjvt~p4Y-J}n)6ox&WH{OeW2D{L6-!U9;z43o1WH&Dn;+}mHZSiie z!A2jBno&Yv1`cXYDBD9GP)!Kp}|9FE>=O6$3O3(erwVK{k1b1C9*s%h*G9WnjepkQ{B<0wy zya!AfFkQ>AGPnsKlz_ea%clpp1T3#v&iAr_WmEqcqypHd{vE)utPudnPTlV01^pMq zv3i^f!(qeVEaYG@0bdK;k;clP7y`Uw3xWHyt^)H?8Q`XH{y%HNBq_trH5B zjThIfZWCL2h|^vzEC=`OOd2>%EWz4l;5=*SkV_=`F69(5wFw=~sD##?>ujyPHoF-w z5&k;9`?Aj)=apt`BheEsWD0-KFId3OCF1*_pE)FK&lRbNOG^iV``6u`AE1C3Osbm! zzVQD=L-{{ESHQCELYYBCJNA7jL3ZD3PIEA>x`A5pLWTYp;)M*76lUI|=a)B`w?t;8 zeRm!E71D}od?zb70b&LM4*h+ik9_numl&K<7ol=IAHE7lrP*kC0bG8je4vF*el8_O za7Pp)Rxb>%O9p~X80fM{`C6`}A#!2=w@C_ob5CA@UyI5>MzBuSQ zTm1n=9N_V;5$+nWQc(SYFLqQ29AockX7wq(1jLe|ltrrcBHN&WAcp9dze=F$6^?yu zw(1WyErCk_F2$K0mjsC~B6)Hfmem)Caj*yJo|&`>Ny&;L4MbL%_Sg?XhVtNUx|XA- z#Ki`3CC1fmH)RmhpUE=CE-s)qjiEIFM9jylW9sMEQzr0{E0gHEHEzX7GMb1nex5X< zO=SOUnIXiOvn`%#<{>^C_V(oSs3$j-(1-zAD;e})L}0aO|v|={0?qk_4Oggt3aNAei2Hb4CGK%L-s|J;12br~5$g&gPIfZH71T&6qo2p7??6 zP0AAs1rXjikbwnoSdKWnl{xNHKg=Hg%rYwy2jYSD50-(U$HLmmM)d;LV@#;n9I5h( zVq|88(VJ5P-64u;l#t*y0FQoD)$$g?tWEgn0oP}Irv>R+16!tWGbDZV&Kj{prfSX< zB(ZI|zMJ{ifHrYvfhIc40+9>;<2hr#pU2L4Mn-{QFF)49r+&ek8UXIx5cQu6tJ)c# zjGrt>vQ$TW_ncZ8=_LbU6@U^Ztau>MjtzxOQ)CQ%RDj2n@Wh&>T7)ebYrLo7{~rrP zyz4mtX#z=qYVo|Jh;$?klO<{xY`T^OFwdYY^%a63qf1yH@ox!4IAP9Q^&gh5WB;cd$oKLR_e%5lOLhsCeeX3Z^6 zZ;C6R2Dq*cFk@uKeurEX#g!+|!nXvwxA;xP33Nd4bYo+*nUT?w0DO4s5!KQ@)C7#F z6DTmQEb^3;#JHI_9v);4H$go#uE>&>!B#p&8xv?2ikZyGqZn+idlS#>jn99 zOe5zF-JAm}EdB<)(frFlc7X~2SrkwpcP8T*Kh4Q<HJ=8SxK zm{BK4pij{Q@pc9_ii}?l= zZh%<^C8nTskQNHU4yjfsLTvff|F(@J@s4P?w$UjwOr8T?BrF~`^hmIElEDek(H!zO z{s@6imQXn%d;rI)MAI;b|Knx5K-a_VMC=$ca8qPs%dxEq`ke3|#WZqFJ#T?r;N#B| z{kn$FqUmGxHSg$Q`87>`eTOuaqan{)5j0Y(cj+3m6m@0q(nIoTnKG zUEO2ZcAVp}AxoP!gy`osdcSM?%K+qmL*U)T^eK#jK{z=22`FDFS11@L{ztTVa^Owy zvi{vglI*AD#54w+8c|Uu?ydpAt{21vr8zWk*EYq8kW%yZm~AU&#)k2S`OU0 zCf;Yc7*c}DJXwKwAi5};;uq&`RZ8Rdnu$A7nUUcZA!4h_@tZR6N>iXL$4|hwKG=voNp7J&Qe?V~;*|ts?g#T( zHZZm>=lbqzPuB>t)!*!y%~)uw5uV&j<2hDcy z@+go^N^vo;hII@_rY&AGn>VskIapwp|F+xrQ9W)K9hkKE zYENn$!@Vk>&Xzw4V3_e`G)WKaZiKA8XrxI?IM2>* z7Eo1o-`*%7A>E;rba!`2w{({@NH-ghPC>d;x}~MNq`ONxHr;VI>Z|{A&U?P^-ZAbN zj0J;dubT0jvDdR^rw$(cW*q2dd``Itz6Y#Ia$nta@q8jlA<2fZs5e?DKpd|>#Ag@2iO2X|Lk`<;&yT9g5rt_Dm8tTnaZM?`pr zR{rM_)mlDhyfdEGy0NWI0b0V#+bA`cqf#P6RENauUv=u)rb9->R==|k))q((AI`oQ za6l0*BRgaaQos+nL^^-mRO*v|B{A@+Ev*p+(3JK4MF zQqA^VrQNJa1js&w`_^f?N9b= z82za-!fLPy8^bbXFt#?mwP=%-a`FS#Vu`OX?H8P^IfL?wUXxrWb&acFPG7x*OtM*B zCS+JRPI;L=Cv_?cg>RdQ`wPRu;OX#n?9&V7z=hW0#@fV!N^_B) z#8pi>%Iim4CBwErK`j>1QF^oR!(8CJOXXX2a2PexQ|RKW6qTvY(u@&v3R+ahAfvoME-ZlZSEa_BG@2+6!)6UvgD;TG>l`%p{6A z86o@@m8IDH+^EHkgWpjIVt&eEx8TtTJW-Zqnj-CF5-X4kMg`aRb}ET6`7(_pi5QT~ zyUi8uduH)Qnc}+{ZcV8ojYdybzB9&GVLLDXO1nbzfJ)e?!_bkdoDa?tJppZ|+RblY z+2qt>?y+#eUfeLZOTP$%_ieMY(hcaT@7e6i&x)9LPQ(!`dFuF*^nPr|k!f!5j34rX zPe8PgWOOzoEY;nDHJP$zC_w5in|vZV$NXhi{VwchamG$DYmy?CT_ZSLkDKnjxh}8Th|lR8e7m4ntp=~i7+=BTg+Sm?Ccf`LB7`8on&u$`XR8P z7U4kYfs|%5w5*?uCBq$y>34oqKfZ0>2AzdWl78sdw}(rZEjS!?R1fUq zhQLqg%w3uh(Ofg2nZbJ13=4;>m0K|{ikh~@PdbmC#P(WS4s8-U2$kEC?L3vO%uK@2 zXokF3g3$MtxKge&jfVVHZq{ZfwY75-!~RL-zNodqCMVp6g9nmcUD%ooJ;pw3iMBy} zO(lB^`#M*nszZzas~F}T0G#-kB5vk&VnlEWm+!3{i$-DY+i7w{`a0NNcL!P{!11~D zr_Z7_@eZhy+ak4rX$-HT>y1tly+&s?PO-FD>$UeN+2l-%19qwwBqVe3JNbH$A1hyP zu+^uM7L0VlvuhI)-KpH4N-_&=ixOV9jQe6A+_FaJv~N0U8|j8h5J#Tm%V^iaO38O= z`f%l!ZXAX2Z6PpAiVVg%xhCa?Lnpw${|cQjVHYu1X0SQ%b@j~XZ0y8Khhw@PU%@#P z(kQ=l`(d>wKixjMFgoo+p1P9;s^x=o1{6MWZzUywQ?=LWdwo-O`zGx=p!9S?_aqlD zCQO_-l1jiDd&Ciu-i17|ase?RM#j{hI5&&%>kGEChVzngx#?w1u*4Mli&C#KhzvysP3b|PO#?<9cvRC$Spp}(6S z@rIDIvDzx1(yw2&a9Q-H5OM7QzFbZGGs^RL_R>rcR#IiuVm?YisQUjghrQPS?+;94 zz`VWhDL9?>u&>v;f^RaakeYqvx;ocseT={bX_5kS$Djg#UCxanDca zJJR|f^kc{M)Ku=lj=THbDhaLmpz|u;E54&CL!AE>0;y@^@qq#!0F)zEwf1TyQ`+&! zY6+UmYh|LT#kYObE!>Pi77%ap_S@P1oC#czr;twuhEe6EZvEoNMdk3X=DI#13Jtv%vG~q@jpfuzc}N5G2$1KKz5u zo$)gQfg7&x2JoL`>}p|;^Yy%8kn8Z^95{dK-*jt1*m z;iQkdHjnQzgd5ViMjd)Ac33RwCOdk=)tf}|W@6QEwt|c*&NuyRNm@qE)1#ZFU-7<3 zUiC=%T!mqLfosP+>%3@4xxfcgdmsSOiT%O%^R@0YJ}W-x=&coDKQ++v6lzhkruYmT zMlIC&HT;7~c@>Eg8dZ7A9W3v>JI>?1j32fh09W;h6S7Vf2& z(xpvg2)cc+ycyoRbOt8=0}thGe#rv3d>tVy;AGqAA$=z6Vm3g*V-$gM%DQRCdwZfh zlmC$?GlS(;Be$i8WJ|clODR)j8sd83(Y7nrHsI}kQur97B&L%?bkoHu*CjX*GPmxs}!A8R&1fRG2NmEw_LG$`-<%9yex2-98GpJE}>mtaCo zD2(YWi}3OA4R{`MQ2g3PRYEh^)SZ05-iy3;2mBtvk=^38QhCt*ozWK_rTdeZ3YAx+ ziJ<~oomkes7S}H3W72nrs33fiq7DN=g}n+F59Bq4>rG!i=qM*o#a`RpaZq^D@j>Qh zh2e@vg(I-B0&kz8MF7dh>yoZy@ri&nsTQ-$iW&7Qdkfr|t{Z%9_WgJX(-49~uYgjj zEQIHISETDYFXm$q#o^G&`$)MjxQH2k6!9>GxSa!hIN7t0KQLlS6^>7MAk>f94 ztgc{35#&)Q%I1)O-j{5Xc#QaubDoUpKJSGphvyU)u*|rbvSN}nT*sdpsdc(eB)>*J zT*q*_S$(1iQn{0>%!r`+Ix1tm`vJX6k`-{x_`Y4N{^{oNIFNZzmr%ZMaP`Un<&#Fk z8A?efx>z=J`pfB#s|=HDUG8)C&?#^`UpMJZdf_N4FWAj+xdHQ@E3#P2+m>TXdihSEG99Il)-N$k<7rXUkw^MscBDoH=&?K=vnrXKZl)~ieX5#*A zJNar{SYY5*PWuN9rZidiCDBTPVzLuC(=t_rJdf^yJ> zjL&|7BFl(!P<11M? zgO))Npg`}2DL?F?!_o`lkNTExAaDXsTw0Kc$x3mu9rn028dUKtQG3573K#O)BlhRn zt)#PBk!>iR%&}OyC@yavnMHRT3)$J1xJUrX^!*(~m^B7`)6S+e8=;lWMuP$AauL7& zl(jK0>8=)od6DnWpv4Y*eB~-E$Wq6uRD;kR%*O*Kl1TgyB%NIQ7ZEn^V2s2%`t%xL^I%CYZ$Gj?b1#y}kX-ay~8<1PB#XR-LY-g<~LpP+H z2`Ee|LtS1`oH}Md9wPUyPFv_0fDI@P7bUE@s5A!0yhYnuQ9Fdw^Y+F7y#$H>D){%_xcL2(kopCR&D1?sw!7(kN1_!^ijyuV{f}L*+K|9P<0O8 z;BmUS;_TuolRo{&gw;%R!e!_53!C;HzVgnk2l1{Vcy5D?CKH}}La&wNPw5mbz`1L{ zu7GJ;B5aPZbUvXC2SjL=S*z_a9n*pg%i}qC4;Y>)e_gQZ&YfzLG`rR89dx+R81=^$ z4$V2?)|K?`tLvZ*idBJYo-i-*cUj1+KdyY?npY-fS|P63_96wsjJkoX_I&oMsP_N~ zLd`Lz@6!-2S>D^{LgqC09Ls1=&ZD7O;#$bPR~3Yg8MRVY2<=boNME}+iuSfx!bMUttpB>hi?i(Z-r{KLms71HjYC^An=ZB+om0b1l?muTw|ax>@CML#AHWeH90^Sc$8 za7Co;jkAChbR3iLbXnw7IdgPMivcDDW)1rQ#Jdn=f}I~JCh(Fn=JC#*=^O{2-_$}_ zwPn!U66EtOwgePMnd~4s)aEr%q&D`C8OK8MB8l)2Wwjhf>*2;^SXkB^kXB!boWbQG&B-EyQUu@ zT~EU90`B?8Eefuet>&-tIH6(Ha+hO>9M+j#p<7|jvtS-@GcmEx+b2UZhRas2TAj1_ zCeK?Y@j3A|!_ygBU|8>@pQZ~(gW%3>;`nj0y|2!N2z7#dO?G!hl&H_w_TOTxuBaTs z&C%#$tnl2v%EY86?E-E9`#erePez1V}1d&Bc6VnKsY=@it+Pz1`{jp<~#? zaz`B$tn#zKo~RtK!k0i_)Ru|N90iHr(Fe-6@Ikxe(3W#u^MCiek-e4&ii-Kv2veAl z*3&pQQOmLKKyK_YzcOrP7*ZGu5V;-Jg`bHV#JCeNchf5@+c4-Kgz17sI9$taE+B0g zLCzqF7rjcYgqFAE4_r_C3cBMIENyfmS{JRtP3tl=Mml-v3tt2)u6bzP=v`cZy;POd zInj$|ASu_mfsnCBPwKJ_T8_Ib^9-hFz0Reu8J{!ixv)?!@P&?9hzS4}A%%>;J`=Fu zcq%~=<2WusXsCR|qTyL_;&^M;r}6NWlOB`Xj$z!c#Pk(wTI>;EpXB6Y2-T4=5Oe5u z90p6inlOOkU>XLQLwN`6if@I``zW%rR}T=j?kITwee7`=<~8V5vKk!X_o0yc#lXl= z6?AiXwgBqu=B!t`(SGDPTOF;*h-i1A=2{Te9GMwYNw_XquCl(baCL>o(vcocOk;cY zH`C->5f+~wwCGtapL$;}b<^@Zc(Qe8z-SUI;H~K0GKRnbf(3yO9oUzl$Up)yaNXb) zm}Is*;ns=t{Y0`BmvfH@{`+eVugD&H57cxiLSsmE8kiGcr;)XIu=mCV^aw_={G(=T zr23}t3XG?{ht8ZVF_E-=9SwOk^nF}%wFh7m`s&MRGkItdGWVRv zSsNn+)ou1^?&HR+{|V%CIpv{7AwpD0+W%fsN( zf)_RN6U<`j$Dk_Apolta%8*!DRDp$mWFe_7QI_WIu7m(A_I^%=z+0uqWuDxhCAu z4fWeAS?|c{RbVkD4^l|0G>M|s?sgbGf;i#nqC!^AwXH9|cDAq!bEY+sBO;WF4=!Sg zHT|_|C{=zTC{!g=i>s0Z71-N3!99GnN>WBP>WC&)C#mVZ^P+&)8Q%)9VMNp+kEjj( zpmu;-Cwxl~+4;*csh}mTJP+Z~iHqltn2~

y{aIgy(ukVpo}dXL*U@;j-K12M5@b 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 + + + +

+ +
+
+ + + +
+ + +
+

文章标题

+ + +
正文
+
+ + +
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/campus-azure/fragments/footer.html b/src/main/resources/templates/themes/campus-azure/fragments/footer.html new file mode 100644 index 0000000..2a9e163 --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/fragments/footer.html @@ -0,0 +1,59 @@ + + + +
+ + + + + + + +
+ diff --git a/src/main/resources/templates/themes/violet-iris/fragments/head.html b/src/main/resources/templates/themes/campus-azure/fragments/head.html similarity index 74% rename from src/main/resources/templates/themes/violet-iris/fragments/head.html rename to src/main/resources/templates/themes/campus-azure/fragments/head.html index 1809482..f9395a0 100644 --- a/src/main/resources/templates/themes/violet-iris/fragments/head.html +++ b/src/main/resources/templates/themes/campus-azure/fragments/head.html @@ -1,6 +1,6 @@ - + @@ -8,16 +8,13 @@ - - - diff --git a/src/main/resources/templates/themes/campus-azure/fragments/header.html b/src/main/resources/templates/themes/campus-azure/fragments/header.html new file mode 100644 index 0000000..b2a9883 --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/fragments/header.html @@ -0,0 +1,86 @@ + + + +
+ + + +
+
+ 加载日期… +
+
+ + 专业院系 + + + +
+
+
+
+ + +
+
+
+ + + + + 站点名称 +
+ +
+
+ + + +
+ diff --git a/src/main/resources/templates/themes/campus-azure/fragments/home-blocks.html b/src/main/resources/templates/themes/campus-azure/fragments/home-blocks.html new file mode 100644 index 0000000..a252e1a --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/fragments/home-blocks.html @@ -0,0 +1,209 @@ + + +
+
+
+
+

校园要闻

+ +
+ + + + + 头条标题 + + 置顶 + + + + + + +
+
+
+
+ + +
+
+
+

栏目名

+ 更多 › + +
+ + +
+
+
+
+ + +
+
+
+

通知公告

+ 更多 › + +
+ + +
+
+
+
+ + +
+
+
+

媒体聚焦

+ 更多 › + +
+ + +
+
+
+
+ + +
+
+

图片新闻

+ 更多 › + +
+ + +
+
+
+ + +
+
+ 要闻速递 + +
+
+ + + + + +
+
+
+

友情链接

+ +
+ + + + +
+
+ + +
+

栏目暂无内容

+

内容发布后将在此展示

+
diff --git a/src/main/resources/templates/themes/campus-azure/home.html b/src/main/resources/templates/themes/campus-azure/home.html new file mode 100644 index 0000000..037a873 --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/home.html @@ -0,0 +1,149 @@ + + + + +
+ +
+ +
+ + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

头条推荐

+ +
+ +
+ +
+
+ + +
+
+
+
+

栏目名

+ 更多 › +
+ +
+

栏目暂无内容

+

内容发布后将在此展示

+
+
+
+
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/campus-azure/list.html b/src/main/resources/templates/themes/campus-azure/list.html new file mode 100644 index 0000000..1a58292 --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/list.html @@ -0,0 +1,105 @@ + + + + +
+ +
+
+ + + +
+ + + +

栏目名

+

搜索词

+ + +
+

未找到相关内容

+

栏目暂无内容

+

换个关键词试试

+

内容发布后将在此展示

+
+ + + +
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/campus-azure/single.html b/src/main/resources/templates/themes/campus-azure/single.html new file mode 100644 index 0000000..86422bf --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/single.html @@ -0,0 +1,50 @@ + + + + +
+ +
+
+ + + +
+ + +
+

栏目名

+ +
单页内容
+
+

页面暂无内容

+

内容编辑后将在此展示

+
+
+
+
+
+ +
+ + + diff --git a/src/main/resources/templates/themes/campus-azure/theme.json b/src/main/resources/templates/themes/campus-azure/theme.json new file mode 100644 index 0000000..e72758d --- /dev/null +++ b/src/main/resources/templates/themes/campus-azure/theme.json @@ -0,0 +1,23 @@ +{ + "specVersion": 1, + "name": "campus-azure", + "title": "青蓝校园(campus-azure)", + "version": "1.0.0", + "author": "yunhai", + "description": "青蓝校园·师范/农林类官网门户:青蓝顶栏+白底主导航+青绿描边标题+大日期数字列表+图文左列右栏+圆角卡片区块+深色页脚带二维码位。基座 scholar-blue,配色与首页区块形态按师范/农林类高校官网重做。", + "screenshot": "assets/screenshot.png", + "bannerSize": "1920x560", + "params": [ + { "key": "primary", "cssVar": "--cz-primary", "label": "主色", "type": "color", "default": "#0d6a9e" }, + { "key": "primaryDark", "cssVar": "--cz-primary-dark", "label": "主色加深", "type": "color", "default": "#084c73" }, + { "key": "primaryLight", "cssVar": "--cz-primary-light","label": "主色提亮", "type": "color", "default": "#1d87bd" }, + { "key": "accent", "cssVar": "--cz-accent", "label": "点缀青绿", "type": "color", "default": "#2b9c8f" }, + { "key": "navBg", "cssVar": "--cz-nav-bg", "label": "导航条底色", "type": "color", "default": "#ffffff" }, + { "key": "footerBg", "cssVar": "--cz-footer-bg", "label": "页脚底色", "type": "color", "default": "#0b3348" }, + { "key": "text", "cssVar": "--cz-text", "label": "正文文字色", "type": "color", "default": "#303c46" }, + { "key": "textLight", "cssVar": "--cz-text-light", "label": "次要文字色", "type": "color", "default": "#6e7d88" }, + { "key": "bg", "cssVar": "--cz-bg", "label": "页面底色", "type": "color", "default": "#eef3f6" }, + { "key": "cardBg", "cssVar": "--cz-card-bg", "label": "卡片底色", "type": "color", "default": "#ffffff" }, + { "key": "border", "cssVar": "--cz-border", "label": "边框色", "type": "color", "default": "#d9e5ec" } + ] +} diff --git a/src/main/resources/templates/themes/cherry-bloom/README.md b/src/main/resources/templates/themes/cherry-bloom/README.md deleted file mode 100644 index ebf6e2e..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# cherry-bloom 皮肤包 - -由 mint-breeze 派生的温柔樱粉风皮肤(docs/10 契约 §5 工作流)。**升级随版本发布,不在站点间复制目录**。 - - -## 风格定位 - -温柔、甜美,适合幼儿园与小学门户:樱花粉品牌色、大圆角 16px、卡片纯白+暖粉柔和阴影、细线顶栏+居中 logo(桌面吸顶,移动端取消)、列表卡片网格(一行 3 张)、花瓣式圆点装饰与暖白留白;无纹理、无通栏大图、无复杂动效。 - -## 数据契约(模板可取用的 model 属性全集,契约 §3) - -| 页面 | 属性 | -| --- | --- | -| 全部 | `site`(快照:config/分类树/轮播/友链组/院系子站)、`url`(PortalUrlHelper:home/category/article/asset/search/siteHome)、`themeBase`(=`themes/cherry-bloom`)、`navCategories`、`pageTitle`、`seoDescription`、`canonical`、`themeParams`(微调参数,仅 theme.json 声明过的 key)、`themeVarsCss`(服务端预构建 `:root{}` 覆盖串,无参数为空) | -| home | `banners`(时间窗内 home 位)、`topArticles`(置顶+最新 6)、`categoryBlocks`(LIST 型根栏目块,各 top 8) | -| list / search | `listData`(分页)、`category`(list)、`q` + `searchMode`(search) | -| detail | `article`、`prevArticle`、`nextArticle`、`currentCategoryId` | -| single | `category`(含 `content`)、`currentCategoryId` | - -原则:皮肤不得假设"首页一定有轮播",对空集合优雅降级。 - -## 轮播图尺寸约定(bannerSize) - -1920x560(管理端上传端按此引导裁剪,D2 决策点)。 - -## 可调参数 - -见 `theme.json` 的 `params`: - -- **color**(进 CSS 变量):`primary` 主色 / `primaryDark` 主色加深(即强调色,用于品牌文字与悬停加深)/ `primaryLight` 主色提亮 / `bg` 页面底色 / `cardBg` 卡片底色 / `border` 边框色 / `text` 正文文字 / `textLight` 次要文字。 -- **select**:`listLayout` = `grid`(默认,卡片网格一行 3 张)或 `row`(传统行列表)。 - -换色建议:主色系三值同步调整(primary / primaryDark / primaryLight),bg 与 border、primaryLight 保持同族浅色调,避免底色与卡片对比失衡。 - -优先级:`custom_css` > `themeVarsCss` > `main.css`。 diff --git a/src/main/resources/templates/themes/cherry-bloom/assets/css/main.css b/src/main/resources/templates/themes/cherry-bloom/assets/css/main.css deleted file mode 100644 index 3362d07..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/assets/css/main.css +++ /dev/null @@ -1,616 +0,0 @@ -/* ============================================================ - * cherry-bloom 皮肤包样式(mint-breeze 派生,docs/10 皮肤包契约 §5) - * 温柔樱粉风:樱花粉品牌色 + 大圆角 16px + 柔和暖粉阴影 + 卡片网格列表 - * + 花瓣式圆点装饰与暖白留白;无纹理、无通栏大图、无复杂动效。 - * 轮播图设计尺寸约定:1920×560(管理端上传端按此引导裁剪)。 - * ============================================================ */ -:root { - --primary: #DB5A8B; - --primary-dark: #B23A68; - --primary-light: #FDECF3; - --text: #43333B; - --text-light: #9C828C; - --bg: #FFFAFB; - --card-bg: #FFFFFF; - --border: #F7DDE7; - --radius: 16px; - --radius-sm: 10px; - --radius-pill: 999px; - --shadow-soft: 0 6px 18px rgba(178, 58, 104, .08); - --shadow-hover: 0 12px 28px rgba(178, 58, 104, .14); - --max-width: 1200px; -} - -* { box-sizing: border-box; } -body { - margin: 0; - font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; - color: var(--text); - background: var(--bg); -} -a { color: inherit; text-decoration: none; transition: color .15s ease; } -a:hover { color: var(--primary); } -img { max-width: 100%; } -time, .item-meta { color: var(--text-light); font-size: 13px; } -.empty { color: var(--text-light); text-align: center; padding: 32px 0; } - -/* ===== 头部:细线顶栏 + 居中品牌行 + 白底导航(桌面吸顶) ===== */ -.site-header { - position: sticky; - top: 0; - z-index: 90; - background: var(--card-bg); - box-shadow: var(--shadow-soft); -} -/* 细线顶栏:院系切换在左、站内搜索在右;院系未配置时搜索仍靠右 */ -.top-bar { - display: flex; - align-items: center; - justify-content: flex-end; - gap: 16px; - padding: 7px max(16px, calc((100% - var(--max-width)) / 2 + 16px)); - border-bottom: 1px solid var(--border); - font-size: 13px; -} -.top-bar .site-colleges { margin-right: auto; } -/* 居中品牌行:两侧几何圆点装饰(纯 CSS,无纹理) */ -.brand-row { - position: relative; - display: flex; - justify-content: center; - padding: 18px 16px 14px; -} -.brand-row::before, .brand-row::after { - content: ""; - position: absolute; - top: 50%; - transform: translateY(-50%); - width: 46px; - height: 10px; - opacity: .45; - background-image: - radial-gradient(circle, var(--primary) 2.2px, transparent 2.8px), - radial-gradient(circle, var(--primary) 1.6px, transparent 2.2px), - radial-gradient(circle, var(--primary) 1.1px, transparent 1.7px); - background-repeat: no-repeat; - background-position: left center, center center, right center; -} -.brand-row::before { left: 6%; } -.brand-row::after { right: 6%; } -.site-brand { display: flex; align-items: center; gap: 14px; } -.site-logo { height: 52px; } -.site-name { - font-size: 28px; - font-weight: 600; - letter-spacing: .02em; - color: var(--primary-dark); -} -.site-name:hover { color: var(--primary); } -.site-search { display: flex; align-items: center; } -.site-search input { - border: 1px solid var(--border); - border-right: none; - border-radius: var(--radius-pill) 0 0 var(--radius-pill); - padding: 7px 16px; - width: 220px; - outline: none; - background: var(--card-bg); - color: var(--text); - transition: border-color .15s ease, box-shadow .15s ease; -} -.site-search input:focus { - border-color: var(--primary); - box-shadow: 0 0 0 3px var(--primary-light); -} -.site-search button { - border: none; - background: var(--primary); - color: #fff; - padding: 7px 20px; - border-radius: 0 var(--radius-pill) var(--radius-pill) 0; - cursor: pointer; - transition: background .15s ease; -} -.site-search button:hover { background: var(--primary-dark); } - -/* ===== 专业院系下拉(院系子站切换):胶囊开关 + 圆角白卡面板 ===== */ -.site-colleges { position: relative; } -.site-colleges .colleges-toggle { - display: inline-flex; - align-items: center; - gap: 6px; - border: 1px solid var(--border); - border-radius: var(--radius-pill); - padding: 5px 14px; - cursor: pointer; - color: var(--primary-dark); - font-weight: 600; - white-space: nowrap; - transition: border-color .15s ease, background .15s ease; -} -.site-colleges:hover .colleges-toggle { - border-color: var(--primary); - background: var(--primary-light); -} -.site-colleges .colleges-arrow { font-style: normal; font-size: 12px; color: var(--primary); } -.site-colleges .colleges-menu { - display: none; - position: absolute; - top: 100%; - left: 0; - min-width: 200px; - max-height: 420px; - overflow-y: auto; - margin: 0; - padding: 8px 0; - list-style: none; - background: var(--card-bg); - border: 1px solid var(--border); - border-radius: var(--radius); - box-shadow: var(--shadow-hover); - z-index: 110; -} -.site-colleges:hover .colleges-menu { display: block; } -.site-colleges .colleges-menu li a { - display: block; - margin: 0 8px; - padding: 9px 12px; - border-radius: var(--radius-sm); - color: var(--text); - white-space: nowrap; -} -.site-colleges .colleges-menu li a:hover { background: var(--primary-light); color: var(--primary-dark); } -.site-colleges .colleges-menu li.active a { color: var(--primary); font-weight: 600; } - -/* ===== 主导航:白底 + 柔和文字层级,当前项圆点标记 ===== */ -.site-nav { background: var(--card-bg); border-top: 1px solid var(--border); } -.site-nav ul { - max-width: var(--max-width); - margin: 0 auto; - padding: 0 16px; - list-style: none; - display: flex; - justify-content: center; - flex-wrap: wrap; -} -.site-nav li a { - position: relative; - display: block; - padding: 13px 20px; - color: var(--text); - font-weight: 500; -} -.site-nav li a:hover { color: var(--primary); } -.site-nav li.active a { color: var(--primary); font-weight: 600; } -/* 几何圆点:当前栏目下方的小圆点 */ -.site-nav li.active > a::before { - content: ""; - position: absolute; - left: 50%; - bottom: 5px; - width: 5px; - height: 5px; - transform: translateX(-50%); - border-radius: 50%; - background: var(--primary); -} - -/* ===== 二级下拉导航:圆角白卡面板 ===== */ -.site-nav > ul > li { position: relative; } -.site-nav li.has-sub > a::after { content: " ▾"; font-size: 12px; opacity: .7; } -.site-nav ul.sub-nav { - display: none; - position: absolute; - top: 100%; - left: 0; - min-width: 168px; - max-width: none; - margin: 0; - padding: 8px 0; - list-style: none; - background: var(--card-bg); - border: 1px solid var(--border); - border-radius: var(--radius); - box-shadow: var(--shadow-hover); - z-index: 100; -} -.site-nav li:hover > .sub-nav { display: block; } -.site-nav .sub-nav li a { - margin: 0 8px; - padding: 9px 12px; - border-radius: var(--radius-sm); - color: var(--text); - font-weight: 400; - white-space: nowrap; - background: none; -} -.site-nav .sub-nav li a:hover { background: var(--primary-light); color: var(--primary-dark); } -.site-nav .sub-nav li.active a { color: var(--primary); font-weight: 600; } - -/* ===== 首页轮播:容器内圆角卡片(非通栏),几何圆点指示器 ===== */ -.banner { - position: relative; - width: min(var(--max-width), calc(100% - 32px)); - margin: 24px auto 0; - border-radius: var(--radius); - overflow: hidden; - box-shadow: var(--shadow-soft); -} -.banner-slides { position: relative; height: 400px; } -.banner-slide { display: none; position: absolute; inset: 0; } -.banner-slide.active { display: block; } -.banner-slide img { width: 100%; height: 100%; object-fit: cover; } -.banner-title { - position: absolute; - left: 0; right: 0; bottom: 0; - padding: 14px 20px; - color: #fff; - font-weight: 500; - background: linear-gradient(transparent, rgba(20, 63, 61, .62)); -} -.banner-dots { - position: absolute; - bottom: 14px; right: 20px; - display: flex; gap: 8px; -} -.banner-dots button { - width: 9px; height: 9px; - border-radius: 50%; - border: none; - background: rgba(255, 255, 255, .55); - cursor: pointer; - transition: background .15s ease, transform .15s ease; -} -.banner-dots button.active { background: #fff; transform: scale(1.25); } - -/* ===== 首页区块:卡片网格(头条通栏 + 栏目块一行 3 张) ===== */ -.home-main { - max-width: var(--max-width); - margin: 0 auto; - padding: 28px 16px 56px; - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 24px; -} -.top-strip, .category-block { - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 24px; -} -.top-strip { grid-column: 1 / -1; } -/* 栏目标题:几何圆点标记(环形点),标题中等粗细、层级柔和 */ -.section-title, .block-head h2 { - margin: 0 0 14px; - font-size: 19px; - font-weight: 600; - letter-spacing: .02em; - display: flex; - align-items: center; - gap: 10px; -} -.section-title::before, .block-head h2::before { - content: ""; - flex: none; - width: 9px; - height: 9px; - border-radius: 50%; - background: var(--primary); - box-shadow: 0 0 0 3.5px var(--primary-light); -} -.block-head { display: flex; align-items: center; justify-content: space-between; } -.more { - flex: none; - font-size: 13px; - color: var(--text-light); - padding: 4px 12px; - border: 1px solid var(--border); - border-radius: var(--radius-pill); - transition: color .15s ease, border-color .15s ease, background .15s ease; -} -.more:hover { - color: var(--primary-dark); - border-color: var(--primary); - background: var(--primary-light); -} -.top-strip ul, .block-list { list-style: none; margin: 0; padding: 0; } -.top-strip li, .block-list li { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - padding: 10px 0; - border-bottom: 1px dashed var(--border); -} -.top-strip li:last-child, .block-list li:last-child { border-bottom: none; } -.top-strip li a, .block-list li a { - flex: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.top-badge { - flex: none; - color: var(--primary-dark); - background: var(--primary-light); - font-size: 12px; - font-weight: 500; - padding: 2px 10px; - border-radius: var(--radius-pill); -} - -/* ===== 列表页:卡片网格(默认一行 3 张;listLayout=row 切换行列表) ===== */ -.list-main { - max-width: var(--max-width); - margin: 0 auto; - padding: 28px 16px 56px; -} -.breadcrumb { color: var(--text-light); font-size: 13px; margin-bottom: 14px; } -.breadcrumb a { margin-right: 8px; } -.breadcrumb span { margin-left: 8px; } -.page-title { - font-size: 24px; - font-weight: 600; - letter-spacing: .02em; - margin: 0 0 22px; - display: flex; - align-items: center; - gap: 10px; -} -.page-title::before { - content: ""; - flex: none; - width: 9px; - height: 9px; - border-radius: 50%; - background: var(--primary); - box-shadow: 0 0 0 3.5px var(--primary-light); -} -.article-list { - list-style: none; - margin: 0; - padding: 0; - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 20px; -} -.article-list li { - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 22px 20px; - display: flex; - flex-direction: column; - gap: 10px; - transition: transform .18s ease, box-shadow .18s ease; -} -.article-list li:hover { transform: translateY(-3px); box-shadow: var(--shadow-hover); } -.item-title { - font-size: 16px; - font-weight: 600; - line-height: 1.55; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} -.article-list li:hover .item-title { color: var(--primary); } -.item-summary { - color: var(--text-light); - font-size: 13.5px; - line-height: 1.7; - margin: 0; - flex: 1; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; -} -.item-meta { - display: flex; - gap: 10px; - align-items: center; - margin-top: auto; - padding-top: 10px; - border-top: 1px dashed var(--border); -} -/* 布局变体:传统行列表(themeParams listLayout=row,见 list.html classappend) */ -.list-rows .article-list { display: block; } -.list-rows .article-list li { display: block; margin-bottom: 16px; } -.list-rows .item-summary { -webkit-line-clamp: 2; flex: none; } -.list-rows .item-meta { border-top: none; padding-top: 0; margin-top: 6px; } - -/* ===== 分页:胶囊页码 ===== */ -.pagination { - display: flex; - gap: 8px; - justify-content: center; - flex-wrap: wrap; - padding: 28px 0 4px; -} -.pagination a { - min-width: 36px; - text-align: center; - padding: 6px 12px; - border: 1px solid var(--border); - border-radius: var(--radius-pill); - background: var(--card-bg); - font-size: 14px; - transition: color .15s ease, border-color .15s ease, background .15s ease; -} -.pagination a:hover { color: var(--primary-dark); border-color: var(--primary); } -.pagination a.active { background: var(--primary); color: #fff; border-color: var(--primary); } - -/* ===== 详情/单页:整卡承载,正文舒适行距 ===== */ -.detail-main { - max-width: var(--max-width); - margin: 0 auto; - padding: 28px 16px 56px; -} -.detail-main .article { - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 36px 40px; -} -.article-title { - margin: 4px 0 14px; - font-size: 26px; - font-weight: 600; - letter-spacing: .02em; - text-align: center; -} -.article-meta { - display: flex; - gap: 18px; - justify-content: center; - flex-wrap: wrap; - color: var(--text-light); - font-size: 13px; - padding-bottom: 18px; - border-bottom: 1px solid var(--border); -} -.article-content { line-height: 1.9; font-size: 16px; padding-top: 22px; word-break: break-word; } -.article-content img { height: auto; border-radius: var(--radius-sm); } -.article-content table { border-collapse: collapse; width: 100%; } -.article-content table td, .article-content table th { border: 1px solid var(--border); padding: 6px 10px; } -.article-sibling { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; font-size: 14px; } -.article-sibling a { - flex: 1 1 320px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 14px 18px; - transition: transform .18s ease, box-shadow .18s ease, color .15s ease; -} -.article-sibling a:hover { - color: var(--primary-dark); - transform: translateY(-2px); - box-shadow: var(--shadow-hover); -} - -/* ===== 页脚:浅樱粉底 + 圆点分隔条(三态渲染逻辑不动) ===== */ -.site-footer { - margin-top: 40px; - background: var(--primary-light); - color: var(--text); - border-top: 1px solid var(--border); -} -.site-footer::before { - content: ""; - display: block; - height: 8px; - width: min(var(--max-width), calc(100% - 32px)); - margin: 18px auto 0; - background-image: radial-gradient(circle, var(--primary) 1.6px, transparent 2.2px); - background-size: 16px 8px; - background-repeat: repeat-x; - opacity: .4; -} -.footer-links { - max-width: var(--max-width); - margin: 0 auto; - padding: 18px 16px 0; - display: flex; - flex-direction: column; - gap: 10px; -} -.links-group { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; font-size: 13px; } -.group-name { font-weight: 600; margin-right: 4px; color: var(--primary-dark); } -.links-group a { - padding: 3px 10px; - border-radius: var(--radius-pill); - transition: background .15s ease, color .15s ease; -} -.links-group a:hover { background: rgba(255, 255, 255, .75); color: var(--primary-dark); } -.footer-info { - max-width: var(--max-width); - margin: 0 auto; - padding: 14px 16px 24px; - text-align: center; - font-size: 13px; - color: var(--text-light); -} -.footer-info p { margin: 4px 0; } - -/* B4 友链 Logo:与名称并排小图(高度 ~20px,垂直居中;过宽截断不撑破页脚) */ -.links-group a .link-logo { - height: 20px; - width: auto; - max-width: 64px; - object-fit: contain; - vertical-align: middle; - margin-right: 4px; - border-radius: 4px; -} - -/* ===== 平板(≤992px):网格降为两列,隐藏品牌行圆点装饰 ===== */ -@media (max-width: 992px) { - .home-main { grid-template-columns: repeat(2, minmax(0, 1fr)); } - .article-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } - .brand-row::before, .brand-row::after { display: none; } -} - -/* ===== 移动端(≤768px):取消吸顶,网格单列,导航横向滑动 ===== */ -@media (max-width: 768px) { - .site-header { position: static; } - .top-bar { padding: 8px 14px; justify-content: flex-start; flex-wrap: wrap; } - .top-bar .site-colleges { margin-right: 0; } - .site-search { flex: 1; } - .site-search input { flex: 1; width: auto; min-width: 0; } - .brand-row { padding: 14px 16px 10px; } - .site-logo { height: 40px; } - .site-name { font-size: 22px; } - .site-nav ul { - justify-content: flex-start; - flex-wrap: nowrap; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .banner-slides { height: 200px; } - .home-main { grid-template-columns: minmax(0, 1fr); padding: 18px 14px 40px; } - .article-list { grid-template-columns: minmax(0, 1fr); } - .detail-main .article { padding: 22px 16px; } - .article-title { font-size: 21px; } - /* 触屏无 hover:子菜单静态平铺(缩进列表),不做浮层 */ - .site-nav ul.sub-nav { - display: block; - position: static; - border: none; - box-shadow: none; - background: transparent; - min-width: 0; - padding: 0 0 6px; - } - .site-nav .sub-nav li a { margin: 0; padding: 8px 16px 8px 34px; border-radius: 0; color: var(--text-light); } - .site-nav .sub-nav li a:hover { background: var(--primary-light); color: var(--primary-dark); } -} - - -/* ===== 左侧栏目导航(docs/11):有二级节点的模块,栏目/文章页左侧展示兄弟目录 ===== */ -.list-main.has-sidenav, .detail-main.has-sidenav { display: flex; align-items: flex-start; gap: 24px; } -.has-sidenav .list-body { flex: 1; min-width: 0; } -.side-nav { flex: none; width: 220px; background: var(--card-bg, #fff); border: 1px solid var(--border); overflow: hidden; } -.side-nav-head { background: var(--primary); color: #fff; font-size: 20px; font-weight: 700; text-align: center; padding: 18px 12px; letter-spacing: 2px; } -.side-nav-list { list-style: none; margin: 0; padding: 0; } -.side-nav-item + .side-nav-item { border-top: 1px dashed var(--border); } -.side-nav-item a { display: block; padding: 12px 16px; color: var(--text); text-decoration: none; font-size: 15px; transition: background .15s ease, color .15s ease; } -.side-nav-item a:hover { color: var(--primary); background: var(--bg); } -.side-nav-item.active a { background: var(--primary); color: #fff; font-weight: 600; text-decoration: none; } -/* 顶导航二级下拉当前项高亮(docs/11 顺带) */ -.site-nav ul.sub-nav li.active a { color: var(--primary); } -@media (max-width: 768px) { - .list-main.has-sidenav, .detail-main.has-sidenav { flex-direction: column; gap: 12px; } - .side-nav { width: 100%; } - .side-nav-list { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; } - .side-nav-item { flex: none; } - .side-nav-item + .side-nav-item { border-top: none; border-left: 1px dashed var(--border); } - .side-nav-item a { white-space: nowrap; } -} -@media print { - .side-nav { display: none; } - .list-main.has-sidenav, .detail-main.has-sidenav { display: block; } -} diff --git a/src/main/resources/templates/themes/cherry-bloom/assets/favicon.png b/src/main/resources/templates/themes/cherry-bloom/assets/favicon.png deleted file mode 100644 index e451454b4b28f9a0ad5332c19315f37a5da7e274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5737 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 b)sFuK9UNi+aHc5e00000NkvXXu0mjf?T-9- diff --git a/src/main/resources/templates/themes/cherry-bloom/assets/favicon.svg b/src/main/resources/templates/themes/cherry-bloom/assets/favicon.svg deleted file mode 100644 index 56ed83c..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/assets/favicon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/main/resources/templates/themes/cherry-bloom/assets/js/main.js b/src/main/resources/templates/themes/cherry-bloom/assets/js/main.js deleted file mode 100644 index a077c85..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/assets/js/main.js +++ /dev/null @@ -1,40 +0,0 @@ -/* cherry-bloom 皮肤包脚本:仅首页轮播自动播放与圆点切换,无任何外部依赖 */ -(function () { - var slides = document.querySelectorAll('.banner-slide'); - var dots = document.querySelectorAll('.banner-dots button'); - if (!slides.length) { - return; - } - var current = 0; - var timer = null; - - function show(index) { - slides[current].classList.remove('active'); - if (dots[current]) { - dots[current].classList.remove('active'); - } - current = (index + slides.length) % slides.length; - slides[current].classList.add('active'); - if (dots[current]) { - dots[current].classList.add('active'); - } - } - - function start() { - if (slides.length > 1) { - timer = window.setInterval(function () { - show(current + 1); - }, 5000); - } - } - - dots.forEach(function (dot, index) { - dot.addEventListener('click', function () { - window.clearInterval(timer); - show(index); - start(); - }); - }); - - start(); -})(); diff --git a/src/main/resources/templates/themes/cherry-bloom/assets/screenshot.png b/src/main/resources/templates/themes/cherry-bloom/assets/screenshot.png deleted file mode 100644 index 8f58dfbd3b83f3a3becae54ef963751d8305c9d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53359 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 - - - -
- -
- -
- - diff --git a/src/main/resources/templates/themes/cherry-bloom/fragments/footer.html b/src/main/resources/templates/themes/cherry-bloom/fragments/footer.html deleted file mode 100644 index 1f3f83d..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/fragments/footer.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -
- - -
- diff --git a/src/main/resources/templates/themes/cherry-bloom/fragments/header.html b/src/main/resources/templates/themes/cherry-bloom/fragments/header.html deleted file mode 100644 index 903691c..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/fragments/header.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - diff --git a/src/main/resources/templates/themes/cherry-bloom/home.html b/src/main/resources/templates/themes/cherry-bloom/home.html deleted file mode 100644 index 8d4f072..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/home.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - -
- -
- - - - - - - - - - - - - - -
-

头条推荐

- -
- - -
-
-

栏目名

- 更多 > -
- -

暂无内容

-
-
-
- -
- - - diff --git a/src/main/resources/templates/themes/cherry-bloom/list.html b/src/main/resources/templates/themes/cherry-bloom/list.html deleted file mode 100644 index 14c47c4..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/list.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -
- - -
- - -
- - - -

栏目名

-

搜索词

- - -

暂无内容

- - - -
-
- -
- - - diff --git a/src/main/resources/templates/themes/cherry-bloom/single.html b/src/main/resources/templates/themes/cherry-bloom/single.html deleted file mode 100644 index 65292dc..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/single.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - -
- -
- - -
- - -
-

栏目名

- -
单页内容
-

暂无内容

-
-
-
- -
- - diff --git a/src/main/resources/templates/themes/cherry-bloom/theme.json b/src/main/resources/templates/themes/cherry-bloom/theme.json deleted file mode 100644 index 5d24a11..0000000 --- a/src/main/resources/templates/themes/cherry-bloom/theme.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "specVersion": 1, - "name": "cherry-bloom", - "title": "樱语粉韵", - "version": "1.0.0", - "author": "yunhai", - "description": "温柔樱粉风门户:细线顶栏+居中 logo 吸顶、樱花粉品牌色、大圆角 16px 卡片网格列表、花瓣式圆点装饰与暖白留白,甜美亲和,适合幼儿园与小学门户。", - "screenshot": "assets/screenshot.png", - "bannerSize": "1920x560", - "params": [ - { "key": "primary", "cssVar": "--primary", "label": "主色", "type": "color", "default": "#DB5A8B" }, - { "key": "primaryDark", "cssVar": "--primary-dark", "label": "主色加深(强调色)", "type": "color", "default": "#B23A68" }, - { "key": "primaryLight", "cssVar": "--primary-light", "label": "主色提亮", "type": "color", "default": "#FDECF3" }, - { "key": "bg", "cssVar": "--bg", "label": "页面底色", "type": "color", "default": "#FFFAFB" }, - { "key": "cardBg", "cssVar": "--card-bg", "label": "卡片底色", "type": "color", "default": "#FFFFFF" }, - { "key": "border", "cssVar": "--border", "label": "边框色", "type": "color", "default": "#F7DDE7" }, - { "key": "text", "cssVar": "--text", "label": "正文文字色", "type": "color", "default": "#43333B" }, - { "key": "textLight", "cssVar": "--text-light", "label": "次要文字色", "type": "color", "default": "#9C828C" }, - { "key": "listLayout", "label": "列表布局", "type": "select", "default": "grid", - "options": [ { "value": "grid", "label": "卡片网格(一行 3 张)" }, { "value": "row", "label": "传统行列表" } ] } - ] -} diff --git a/src/main/resources/templates/themes/common/fragments/home-blocks.html b/src/main/resources/templates/themes/common/fragments/home-blocks.html index 952b001..54dd804 100644 --- a/src/main/resources/templates/themes/common/fragments/home-blocks.html +++ b/src/main/resources/templates/themes/common/fragments/home-blocks.html @@ -8,56 +8,76 @@ --> @@ -92,7 +112,7 @@ 更多 > - +

该区块暂无内容

@@ -121,7 +141,9 @@ -
+ +
+
@@ -138,7 +160,9 @@ -
+ +
+
@@ -158,7 +182,9 @@ 置顶 -
+ +
+
@@ -176,7 +202,10 @@ -
+ + +
+
@@ -193,7 +222,9 @@ -
+ +
+
diff --git a/src/main/resources/templates/themes/mint-breeze/assets/css/main.css b/src/main/resources/templates/themes/mint-breeze/assets/css/main.css index e65d638..73fc718 100644 --- a/src/main/resources/templates/themes/mint-breeze/assets/css/main.css +++ b/src/main/resources/templates/themes/mint-breeze/assets/css/main.css @@ -230,6 +230,7 @@ time, .item-meta { color: var(--text-light); font-size: 13px; } /* ===== 首页轮播:容器内圆角卡片(非通栏),几何圆点指示器 ===== */ .banner { position: relative; + grid-column: 1 / -1; /* .home-main 是三列网格,轮播必须跨满整行,否则被塞进首列变窄条 */ width: min(var(--max-width), calc(100% - 32px)); margin: 24px auto 0; border-radius: var(--radius); diff --git a/src/main/resources/templates/themes/scholar-blue/assets/css/main.css b/src/main/resources/templates/themes/scholar-blue/assets/css/main.css index 7822fa6..cc02a36 100644 --- a/src/main/resources/templates/themes/scholar-blue/assets/css/main.css +++ b/src/main/resources/templates/themes/scholar-blue/assets/css/main.css @@ -31,6 +31,18 @@ --sp-radius-lg: 10px; --sp-speed: .28s; --sp-font: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif; + + /* 皮肤契约别名:站点配了 home_layout 时首页走 common/fragments/home-blocks 骨架, + 该骨架只认契约变量(--primary/--text/…)。不别名过去,换肤就只换了页头页脚、正文区块仍是骨架内置色。 */ + --primary: var(--sp-primary); + --primary-dark: var(--sp-primary-dark); + --primary-light: var(--sp-primary-light); + --text: var(--sp-text); + --text-light: var(--sp-text-light); + --bg: var(--sp-bg); + --card-bg: var(--sp-card-bg); + --border: var(--sp-border); + --radius: var(--sp-radius-lg); } /* --------------------------------------------------------------------- diff --git a/src/main/resources/templates/themes/violet-iris/README.md b/src/main/resources/templates/themes/violet-iris/README.md deleted file mode 100644 index 747398a..0000000 --- a/src/main/resources/templates/themes/violet-iris/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# violet-iris 皮肤包 - -由 mint-breeze 派生的雅致鸢尾紫皮肤(docs/10 契约 §5 工作流)。**升级随版本发布,不在站点间复制目录**。 - - -## 风格定位 - -沉静、书卷气,适合高校与教科研机构门户:鸢尾紫品牌色、圆角 12px、卡片纯白+淡紫柔和阴影、细线顶栏+居中 logo(桌面吸顶,移动端取消)、列表卡片网格(一行 3 张)、几何圆点装饰与大留白;无纹理、无通栏大图、无复杂动效。 - -## 数据契约(模板可取用的 model 属性全集,契约 §3) - -| 页面 | 属性 | -| --- | --- | -| 全部 | `site`(快照:config/分类树/轮播/友链组/院系子站)、`url`(PortalUrlHelper:home/category/article/asset/search/siteHome)、`themeBase`(=`themes/violet-iris`)、`navCategories`、`pageTitle`、`seoDescription`、`canonical`、`themeParams`(微调参数,仅 theme.json 声明过的 key)、`themeVarsCss`(服务端预构建 `:root{}` 覆盖串,无参数为空) | -| home | `banners`(时间窗内 home 位)、`topArticles`(置顶+最新 6)、`categoryBlocks`(LIST 型根栏目块,各 top 8) | -| list / search | `listData`(分页)、`category`(list)、`q` + `searchMode`(search) | -| detail | `article`、`prevArticle`、`nextArticle`、`currentCategoryId` | -| single | `category`(含 `content`)、`currentCategoryId` | - -原则:皮肤不得假设"首页一定有轮播",对空集合优雅降级。 - -## 轮播图尺寸约定(bannerSize) - -1920x560(管理端上传端按此引导裁剪,D2 决策点)。 - -## 可调参数 - -见 `theme.json` 的 `params`: - -- **color**(进 CSS 变量):`primary` 主色 / `primaryDark` 主色加深(即强调色,用于品牌文字与悬停加深)/ `primaryLight` 主色提亮 / `bg` 页面底色 / `cardBg` 卡片底色 / `border` 边框色 / `text` 正文文字 / `textLight` 次要文字。 -- **select**:`listLayout` = `grid`(默认,卡片网格一行 3 张)或 `row`(传统行列表)。 - -换色建议:主色系三值同步调整(primary / primaryDark / primaryLight),bg 与 border、primaryLight 保持同族浅色调,避免底色与卡片对比失衡。 - -优先级:`custom_css` > `themeVarsCss` > `main.css`。 diff --git a/src/main/resources/templates/themes/violet-iris/assets/css/main.css b/src/main/resources/templates/themes/violet-iris/assets/css/main.css deleted file mode 100644 index 8fffbe5..0000000 --- a/src/main/resources/templates/themes/violet-iris/assets/css/main.css +++ /dev/null @@ -1,616 +0,0 @@ -/* ============================================================ - * violet-iris 皮肤包样式(mint-breeze 派生,docs/10 皮肤包契约 §5) - * 雅致鸢尾紫风:鸢尾紫品牌色 + 圆角 12px + 柔和紫阴影 + 卡片网格列表 - * + 几何圆点装饰与淡薰衣草留白;无纹理、无通栏大图、无复杂动效。 - * 轮播图设计尺寸约定:1920×560(管理端上传端按此引导裁剪)。 - * ============================================================ */ -:root { - --primary: #6552D9; - --primary-dark: #4A39B0; - --primary-light: #EFECFC; - --text: #332F45; - --text-light: #847E9C; - --bg: #F8F7FD; - --card-bg: #FFFFFF; - --border: #E4DFF6; - --radius: 12px; - --radius-sm: 8px; - --radius-pill: 999px; - --shadow-soft: 0 6px 18px rgba(74, 57, 176, .08); - --shadow-hover: 0 12px 28px rgba(74, 57, 176, .14); - --max-width: 1200px; -} - -* { box-sizing: border-box; } -body { - margin: 0; - font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; - color: var(--text); - background: var(--bg); -} -a { color: inherit; text-decoration: none; transition: color .15s ease; } -a:hover { color: var(--primary); } -img { max-width: 100%; } -time, .item-meta { color: var(--text-light); font-size: 13px; } -.empty { color: var(--text-light); text-align: center; padding: 32px 0; } - -/* ===== 头部:细线顶栏 + 居中品牌行 + 白底导航(桌面吸顶) ===== */ -.site-header { - position: sticky; - top: 0; - z-index: 90; - background: var(--card-bg); - box-shadow: var(--shadow-soft); -} -/* 细线顶栏:院系切换在左、站内搜索在右;院系未配置时搜索仍靠右 */ -.top-bar { - display: flex; - align-items: center; - justify-content: flex-end; - gap: 16px; - padding: 7px max(16px, calc((100% - var(--max-width)) / 2 + 16px)); - border-bottom: 1px solid var(--border); - font-size: 13px; -} -.top-bar .site-colleges { margin-right: auto; } -/* 居中品牌行:两侧几何圆点装饰(纯 CSS,无纹理) */ -.brand-row { - position: relative; - display: flex; - justify-content: center; - padding: 18px 16px 14px; -} -.brand-row::before, .brand-row::after { - content: ""; - position: absolute; - top: 50%; - transform: translateY(-50%); - width: 46px; - height: 10px; - opacity: .45; - background-image: - radial-gradient(circle, var(--primary) 2.2px, transparent 2.8px), - radial-gradient(circle, var(--primary) 1.6px, transparent 2.2px), - radial-gradient(circle, var(--primary) 1.1px, transparent 1.7px); - background-repeat: no-repeat; - background-position: left center, center center, right center; -} -.brand-row::before { left: 6%; } -.brand-row::after { right: 6%; } -.site-brand { display: flex; align-items: center; gap: 14px; } -.site-logo { height: 52px; } -.site-name { - font-size: 28px; - font-weight: 600; - letter-spacing: .02em; - color: var(--primary-dark); -} -.site-name:hover { color: var(--primary); } -.site-search { display: flex; align-items: center; } -.site-search input { - border: 1px solid var(--border); - border-right: none; - border-radius: var(--radius-pill) 0 0 var(--radius-pill); - padding: 7px 16px; - width: 220px; - outline: none; - background: var(--card-bg); - color: var(--text); - transition: border-color .15s ease, box-shadow .15s ease; -} -.site-search input:focus { - border-color: var(--primary); - box-shadow: 0 0 0 3px var(--primary-light); -} -.site-search button { - border: none; - background: var(--primary); - color: #fff; - padding: 7px 20px; - border-radius: 0 var(--radius-pill) var(--radius-pill) 0; - cursor: pointer; - transition: background .15s ease; -} -.site-search button:hover { background: var(--primary-dark); } - -/* ===== 专业院系下拉(院系子站切换):胶囊开关 + 圆角白卡面板 ===== */ -.site-colleges { position: relative; } -.site-colleges .colleges-toggle { - display: inline-flex; - align-items: center; - gap: 6px; - border: 1px solid var(--border); - border-radius: var(--radius-pill); - padding: 5px 14px; - cursor: pointer; - color: var(--primary-dark); - font-weight: 600; - white-space: nowrap; - transition: border-color .15s ease, background .15s ease; -} -.site-colleges:hover .colleges-toggle { - border-color: var(--primary); - background: var(--primary-light); -} -.site-colleges .colleges-arrow { font-style: normal; font-size: 12px; color: var(--primary); } -.site-colleges .colleges-menu { - display: none; - position: absolute; - top: 100%; - left: 0; - min-width: 200px; - max-height: 420px; - overflow-y: auto; - margin: 0; - padding: 8px 0; - list-style: none; - background: var(--card-bg); - border: 1px solid var(--border); - border-radius: var(--radius); - box-shadow: var(--shadow-hover); - z-index: 110; -} -.site-colleges:hover .colleges-menu { display: block; } -.site-colleges .colleges-menu li a { - display: block; - margin: 0 8px; - padding: 9px 12px; - border-radius: var(--radius-sm); - color: var(--text); - white-space: nowrap; -} -.site-colleges .colleges-menu li a:hover { background: var(--primary-light); color: var(--primary-dark); } -.site-colleges .colleges-menu li.active a { color: var(--primary); font-weight: 600; } - -/* ===== 主导航:白底 + 柔和文字层级,当前项圆点标记 ===== */ -.site-nav { background: var(--card-bg); border-top: 1px solid var(--border); } -.site-nav ul { - max-width: var(--max-width); - margin: 0 auto; - padding: 0 16px; - list-style: none; - display: flex; - justify-content: center; - flex-wrap: wrap; -} -.site-nav li a { - position: relative; - display: block; - padding: 13px 20px; - color: var(--text); - font-weight: 500; -} -.site-nav li a:hover { color: var(--primary); } -.site-nav li.active a { color: var(--primary); font-weight: 600; } -/* 几何圆点:当前栏目下方的小圆点 */ -.site-nav li.active > a::before { - content: ""; - position: absolute; - left: 50%; - bottom: 5px; - width: 5px; - height: 5px; - transform: translateX(-50%); - border-radius: 50%; - background: var(--primary); -} - -/* ===== 二级下拉导航:圆角白卡面板 ===== */ -.site-nav > ul > li { position: relative; } -.site-nav li.has-sub > a::after { content: " ▾"; font-size: 12px; opacity: .7; } -.site-nav ul.sub-nav { - display: none; - position: absolute; - top: 100%; - left: 0; - min-width: 168px; - max-width: none; - margin: 0; - padding: 8px 0; - list-style: none; - background: var(--card-bg); - border: 1px solid var(--border); - border-radius: var(--radius); - box-shadow: var(--shadow-hover); - z-index: 100; -} -.site-nav li:hover > .sub-nav { display: block; } -.site-nav .sub-nav li a { - margin: 0 8px; - padding: 9px 12px; - border-radius: var(--radius-sm); - color: var(--text); - font-weight: 400; - white-space: nowrap; - background: none; -} -.site-nav .sub-nav li a:hover { background: var(--primary-light); color: var(--primary-dark); } -.site-nav .sub-nav li.active a { color: var(--primary); font-weight: 600; } - -/* ===== 首页轮播:容器内圆角卡片(非通栏),几何圆点指示器 ===== */ -.banner { - position: relative; - width: min(var(--max-width), calc(100% - 32px)); - margin: 24px auto 0; - border-radius: var(--radius); - overflow: hidden; - box-shadow: var(--shadow-soft); -} -.banner-slides { position: relative; height: 400px; } -.banner-slide { display: none; position: absolute; inset: 0; } -.banner-slide.active { display: block; } -.banner-slide img { width: 100%; height: 100%; object-fit: cover; } -.banner-title { - position: absolute; - left: 0; right: 0; bottom: 0; - padding: 14px 20px; - color: #fff; - font-weight: 500; - background: linear-gradient(transparent, rgba(20, 63, 61, .62)); -} -.banner-dots { - position: absolute; - bottom: 14px; right: 20px; - display: flex; gap: 8px; -} -.banner-dots button { - width: 9px; height: 9px; - border-radius: 50%; - border: none; - background: rgba(255, 255, 255, .55); - cursor: pointer; - transition: background .15s ease, transform .15s ease; -} -.banner-dots button.active { background: #fff; transform: scale(1.25); } - -/* ===== 首页区块:卡片网格(头条通栏 + 栏目块一行 3 张) ===== */ -.home-main { - max-width: var(--max-width); - margin: 0 auto; - padding: 28px 16px 56px; - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 24px; -} -.top-strip, .category-block { - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 24px; -} -.top-strip { grid-column: 1 / -1; } -/* 栏目标题:几何圆点标记(环形点),标题中等粗细、层级柔和 */ -.section-title, .block-head h2 { - margin: 0 0 14px; - font-size: 19px; - font-weight: 600; - letter-spacing: .02em; - display: flex; - align-items: center; - gap: 10px; -} -.section-title::before, .block-head h2::before { - content: ""; - flex: none; - width: 9px; - height: 9px; - border-radius: 50%; - background: var(--primary); - box-shadow: 0 0 0 3.5px var(--primary-light); -} -.block-head { display: flex; align-items: center; justify-content: space-between; } -.more { - flex: none; - font-size: 13px; - color: var(--text-light); - padding: 4px 12px; - border: 1px solid var(--border); - border-radius: var(--radius-pill); - transition: color .15s ease, border-color .15s ease, background .15s ease; -} -.more:hover { - color: var(--primary-dark); - border-color: var(--primary); - background: var(--primary-light); -} -.top-strip ul, .block-list { list-style: none; margin: 0; padding: 0; } -.top-strip li, .block-list li { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - padding: 10px 0; - border-bottom: 1px dashed var(--border); -} -.top-strip li:last-child, .block-list li:last-child { border-bottom: none; } -.top-strip li a, .block-list li a { - flex: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.top-badge { - flex: none; - color: var(--primary-dark); - background: var(--primary-light); - font-size: 12px; - font-weight: 500; - padding: 2px 10px; - border-radius: var(--radius-pill); -} - -/* ===== 列表页:卡片网格(默认一行 3 张;listLayout=row 切换行列表) ===== */ -.list-main { - max-width: var(--max-width); - margin: 0 auto; - padding: 28px 16px 56px; -} -.breadcrumb { color: var(--text-light); font-size: 13px; margin-bottom: 14px; } -.breadcrumb a { margin-right: 8px; } -.breadcrumb span { margin-left: 8px; } -.page-title { - font-size: 24px; - font-weight: 600; - letter-spacing: .02em; - margin: 0 0 22px; - display: flex; - align-items: center; - gap: 10px; -} -.page-title::before { - content: ""; - flex: none; - width: 9px; - height: 9px; - border-radius: 50%; - background: var(--primary); - box-shadow: 0 0 0 3.5px var(--primary-light); -} -.article-list { - list-style: none; - margin: 0; - padding: 0; - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 20px; -} -.article-list li { - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 22px 20px; - display: flex; - flex-direction: column; - gap: 10px; - transition: transform .18s ease, box-shadow .18s ease; -} -.article-list li:hover { transform: translateY(-3px); box-shadow: var(--shadow-hover); } -.item-title { - font-size: 16px; - font-weight: 600; - line-height: 1.55; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} -.article-list li:hover .item-title { color: var(--primary); } -.item-summary { - color: var(--text-light); - font-size: 13.5px; - line-height: 1.7; - margin: 0; - flex: 1; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; -} -.item-meta { - display: flex; - gap: 10px; - align-items: center; - margin-top: auto; - padding-top: 10px; - border-top: 1px dashed var(--border); -} -/* 布局变体:传统行列表(themeParams listLayout=row,见 list.html classappend) */ -.list-rows .article-list { display: block; } -.list-rows .article-list li { display: block; margin-bottom: 16px; } -.list-rows .item-summary { -webkit-line-clamp: 2; flex: none; } -.list-rows .item-meta { border-top: none; padding-top: 0; margin-top: 6px; } - -/* ===== 分页:胶囊页码 ===== */ -.pagination { - display: flex; - gap: 8px; - justify-content: center; - flex-wrap: wrap; - padding: 28px 0 4px; -} -.pagination a { - min-width: 36px; - text-align: center; - padding: 6px 12px; - border: 1px solid var(--border); - border-radius: var(--radius-pill); - background: var(--card-bg); - font-size: 14px; - transition: color .15s ease, border-color .15s ease, background .15s ease; -} -.pagination a:hover { color: var(--primary-dark); border-color: var(--primary); } -.pagination a.active { background: var(--primary); color: #fff; border-color: var(--primary); } - -/* ===== 详情/单页:整卡承载,正文舒适行距 ===== */ -.detail-main { - max-width: var(--max-width); - margin: 0 auto; - padding: 28px 16px 56px; -} -.detail-main .article { - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 36px 40px; -} -.article-title { - margin: 4px 0 14px; - font-size: 26px; - font-weight: 600; - letter-spacing: .02em; - text-align: center; -} -.article-meta { - display: flex; - gap: 18px; - justify-content: center; - flex-wrap: wrap; - color: var(--text-light); - font-size: 13px; - padding-bottom: 18px; - border-bottom: 1px solid var(--border); -} -.article-content { line-height: 1.9; font-size: 16px; padding-top: 22px; word-break: break-word; } -.article-content img { height: auto; border-radius: var(--radius-sm); } -.article-content table { border-collapse: collapse; width: 100%; } -.article-content table td, .article-content table th { border: 1px solid var(--border); padding: 6px 10px; } -.article-sibling { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; font-size: 14px; } -.article-sibling a { - flex: 1 1 320px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - background: var(--card-bg); - border-radius: var(--radius); - box-shadow: var(--shadow-soft); - padding: 14px 18px; - transition: transform .18s ease, box-shadow .18s ease, color .15s ease; -} -.article-sibling a:hover { - color: var(--primary-dark); - transform: translateY(-2px); - box-shadow: var(--shadow-hover); -} - -/* ===== 页脚:浅鸢尾底 + 圆点分隔条(三态渲染逻辑不动) ===== */ -.site-footer { - margin-top: 40px; - background: var(--primary-light); - color: var(--text); - border-top: 1px solid var(--border); -} -.site-footer::before { - content: ""; - display: block; - height: 8px; - width: min(var(--max-width), calc(100% - 32px)); - margin: 18px auto 0; - background-image: radial-gradient(circle, var(--primary) 1.6px, transparent 2.2px); - background-size: 16px 8px; - background-repeat: repeat-x; - opacity: .4; -} -.footer-links { - max-width: var(--max-width); - margin: 0 auto; - padding: 18px 16px 0; - display: flex; - flex-direction: column; - gap: 10px; -} -.links-group { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; font-size: 13px; } -.group-name { font-weight: 600; margin-right: 4px; color: var(--primary-dark); } -.links-group a { - padding: 3px 10px; - border-radius: var(--radius-pill); - transition: background .15s ease, color .15s ease; -} -.links-group a:hover { background: rgba(255, 255, 255, .75); color: var(--primary-dark); } -.footer-info { - max-width: var(--max-width); - margin: 0 auto; - padding: 14px 16px 24px; - text-align: center; - font-size: 13px; - color: var(--text-light); -} -.footer-info p { margin: 4px 0; } - -/* B4 友链 Logo:与名称并排小图(高度 ~20px,垂直居中;过宽截断不撑破页脚) */ -.links-group a .link-logo { - height: 20px; - width: auto; - max-width: 64px; - object-fit: contain; - vertical-align: middle; - margin-right: 4px; - border-radius: 4px; -} - -/* ===== 平板(≤992px):网格降为两列,隐藏品牌行圆点装饰 ===== */ -@media (max-width: 992px) { - .home-main { grid-template-columns: repeat(2, minmax(0, 1fr)); } - .article-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } - .brand-row::before, .brand-row::after { display: none; } -} - -/* ===== 移动端(≤768px):取消吸顶,网格单列,导航横向滑动 ===== */ -@media (max-width: 768px) { - .site-header { position: static; } - .top-bar { padding: 8px 14px; justify-content: flex-start; flex-wrap: wrap; } - .top-bar .site-colleges { margin-right: 0; } - .site-search { flex: 1; } - .site-search input { flex: 1; width: auto; min-width: 0; } - .brand-row { padding: 14px 16px 10px; } - .site-logo { height: 40px; } - .site-name { font-size: 22px; } - .site-nav ul { - justify-content: flex-start; - flex-wrap: nowrap; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .banner-slides { height: 200px; } - .home-main { grid-template-columns: minmax(0, 1fr); padding: 18px 14px 40px; } - .article-list { grid-template-columns: minmax(0, 1fr); } - .detail-main .article { padding: 22px 16px; } - .article-title { font-size: 21px; } - /* 触屏无 hover:子菜单静态平铺(缩进列表),不做浮层 */ - .site-nav ul.sub-nav { - display: block; - position: static; - border: none; - box-shadow: none; - background: transparent; - min-width: 0; - padding: 0 0 6px; - } - .site-nav .sub-nav li a { margin: 0; padding: 8px 16px 8px 34px; border-radius: 0; color: var(--text-light); } - .site-nav .sub-nav li a:hover { background: var(--primary-light); color: var(--primary-dark); } -} - - -/* ===== 左侧栏目导航(docs/11):有二级节点的模块,栏目/文章页左侧展示兄弟目录 ===== */ -.list-main.has-sidenav, .detail-main.has-sidenav { display: flex; align-items: flex-start; gap: 24px; } -.has-sidenav .list-body { flex: 1; min-width: 0; } -.side-nav { flex: none; width: 220px; background: var(--card-bg, #fff); border: 1px solid var(--border); overflow: hidden; } -.side-nav-head { background: var(--primary); color: #fff; font-size: 20px; font-weight: 700; text-align: center; padding: 18px 12px; letter-spacing: 2px; } -.side-nav-list { list-style: none; margin: 0; padding: 0; } -.side-nav-item + .side-nav-item { border-top: 1px dashed var(--border); } -.side-nav-item a { display: block; padding: 12px 16px; color: var(--text); text-decoration: none; font-size: 15px; transition: background .15s ease, color .15s ease; } -.side-nav-item a:hover { color: var(--primary); background: var(--bg); } -.side-nav-item.active a { background: var(--primary); color: #fff; font-weight: 600; text-decoration: none; } -/* 顶导航二级下拉当前项高亮(docs/11 顺带) */ -.site-nav ul.sub-nav li.active a { color: var(--primary); } -@media (max-width: 768px) { - .list-main.has-sidenav, .detail-main.has-sidenav { flex-direction: column; gap: 12px; } - .side-nav { width: 100%; } - .side-nav-list { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; } - .side-nav-item { flex: none; } - .side-nav-item + .side-nav-item { border-top: none; border-left: 1px dashed var(--border); } - .side-nav-item a { white-space: nowrap; } -} -@media print { - .side-nav { display: none; } - .list-main.has-sidenav, .detail-main.has-sidenav { display: block; } -} diff --git a/src/main/resources/templates/themes/violet-iris/assets/favicon.png b/src/main/resources/templates/themes/violet-iris/assets/favicon.png deleted file mode 100644 index 5fa2755c0129904b0c80f5f4824d5d2e6e36270b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5084 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 - - - - - - - diff --git a/src/main/resources/templates/themes/violet-iris/assets/js/main.js b/src/main/resources/templates/themes/violet-iris/assets/js/main.js deleted file mode 100644 index 8261c6b..0000000 --- a/src/main/resources/templates/themes/violet-iris/assets/js/main.js +++ /dev/null @@ -1,40 +0,0 @@ -/* violet-iris 皮肤包脚本:仅首页轮播自动播放与圆点切换,无任何外部依赖 */ -(function () { - var slides = document.querySelectorAll('.banner-slide'); - var dots = document.querySelectorAll('.banner-dots button'); - if (!slides.length) { - return; - } - var current = 0; - var timer = null; - - function show(index) { - slides[current].classList.remove('active'); - if (dots[current]) { - dots[current].classList.remove('active'); - } - current = (index + slides.length) % slides.length; - slides[current].classList.add('active'); - if (dots[current]) { - dots[current].classList.add('active'); - } - } - - function start() { - if (slides.length > 1) { - timer = window.setInterval(function () { - show(current + 1); - }, 5000); - } - } - - dots.forEach(function (dot, index) { - dot.addEventListener('click', function () { - window.clearInterval(timer); - show(index); - start(); - }); - }); - - start(); -})(); diff --git a/src/main/resources/templates/themes/violet-iris/assets/screenshot.png b/src/main/resources/templates/themes/violet-iris/assets/screenshot.png deleted file mode 100644 index 908a26e2779a1e82b749ccde2d9046e26fb29e04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52824 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 U#XC_0zu+i6SASM1_v+pM0=@M80ssI2 diff --git a/src/main/resources/templates/themes/violet-iris/detail.html b/src/main/resources/templates/themes/violet-iris/detail.html deleted file mode 100644 index 8eab71f..0000000 --- a/src/main/resources/templates/themes/violet-iris/detail.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - -
- -
- - -
- - -
-

文章标题

- - -
正文
-
- - -
-
- -
- - diff --git a/src/main/resources/templates/themes/violet-iris/fragments/footer.html b/src/main/resources/templates/themes/violet-iris/fragments/footer.html deleted file mode 100644 index 1f3f83d..0000000 --- a/src/main/resources/templates/themes/violet-iris/fragments/footer.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -
- - -
- diff --git a/src/main/resources/templates/themes/violet-iris/fragments/header.html b/src/main/resources/templates/themes/violet-iris/fragments/header.html deleted file mode 100644 index 462364e..0000000 --- a/src/main/resources/templates/themes/violet-iris/fragments/header.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - diff --git a/src/main/resources/templates/themes/violet-iris/home.html b/src/main/resources/templates/themes/violet-iris/home.html deleted file mode 100644 index 8d4f072..0000000 --- a/src/main/resources/templates/themes/violet-iris/home.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - -
- -
- - - - - - - - - - - - - - -
-

头条推荐

- -
- - -
-
-

栏目名

- 更多 > -
- -

暂无内容

-
-
-
- -
- - - diff --git a/src/main/resources/templates/themes/violet-iris/list.html b/src/main/resources/templates/themes/violet-iris/list.html deleted file mode 100644 index 14c47c4..0000000 --- a/src/main/resources/templates/themes/violet-iris/list.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -
- - -
- - -
- - - -

栏目名

-

搜索词

- - -

暂无内容

- - - -
-
- -
- - - diff --git a/src/main/resources/templates/themes/violet-iris/single.html b/src/main/resources/templates/themes/violet-iris/single.html deleted file mode 100644 index 65292dc..0000000 --- a/src/main/resources/templates/themes/violet-iris/single.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - -
- -
- - -
- - -
-

栏目名

- -
单页内容
-

暂无内容

-
-
-
- -
- - diff --git a/src/main/resources/templates/themes/violet-iris/theme.json b/src/main/resources/templates/themes/violet-iris/theme.json deleted file mode 100644 index 607917f..0000000 --- a/src/main/resources/templates/themes/violet-iris/theme.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "specVersion": 1, - "name": "violet-iris", - "title": "鸢尾紫韵", - "version": "1.0.0", - "author": "yunhai", - "description": "雅致鸢尾紫门户:细线顶栏+居中 logo 吸顶、鸢尾紫品牌色、圆角 12px 卡片网格列表、几何圆点装饰与淡薰衣草留白,沉静书卷气,适合高校与教科研机构。", - "screenshot": "assets/screenshot.png", - "bannerSize": "1920x560", - "params": [ - { "key": "primary", "cssVar": "--primary", "label": "主色", "type": "color", "default": "#6552D9" }, - { "key": "primaryDark", "cssVar": "--primary-dark", "label": "主色加深(强调色)", "type": "color", "default": "#4A39B0" }, - { "key": "primaryLight", "cssVar": "--primary-light", "label": "主色提亮", "type": "color", "default": "#EFECFC" }, - { "key": "bg", "cssVar": "--bg", "label": "页面底色", "type": "color", "default": "#F8F7FD" }, - { "key": "cardBg", "cssVar": "--card-bg", "label": "卡片底色", "type": "color", "default": "#FFFFFF" }, - { "key": "border", "cssVar": "--border", "label": "边框色", "type": "color", "default": "#E4DFF6" }, - { "key": "text", "cssVar": "--text", "label": "正文文字色", "type": "color", "default": "#332F45" }, - { "key": "textLight", "cssVar": "--text-light", "label": "次要文字色", "type": "color", "default": "#847E9C" }, - { "key": "listLayout", "label": "列表布局", "type": "select", "default": "grid", - "options": [ { "value": "grid", "label": "卡片网格(一行 3 张)" }, { "value": "row", "label": "传统行列表" } ] } - ] -} diff --git a/src/test/java/com/yunhai/cms/portal/PortalHomeLayoutIT.java b/src/test/java/com/yunhai/cms/portal/PortalHomeLayoutIT.java index b55deec..fe46edf 100644 --- a/src/test/java/com/yunhai/cms/portal/PortalHomeLayoutIT.java +++ b/src/test/java/com/yunhai/cms/portal/PortalHomeLayoutIT.java @@ -35,12 +35,13 @@ class PortalHomeLayoutIT extends CmsIntegrationTestBase { private Integer catNews; private Integer catNotice; + private Integer siteId; @BeforeEach void seed() { purgeTables(); CmsSite site = persistSite("layhome", 1, "布局测试门户"); - Integer siteId = site.getId(); + siteId = site.getId(); catNews = persistCategory(siteId, 0, "校园时讯", CategoryTypeEnum.LIST).getId(); catNotice = persistCategory(siteId, 0, "通知公告", CategoryTypeEnum.LIST).getId(); persistCategory(siteId, 0, "学校概况", CategoryTypeEnum.SINGLE); @@ -118,7 +119,7 @@ class PortalHomeLayoutIT extends CmsIntegrationTestBase { assertThat(html).doesNotContain("headline-list").doesNotContain("category-block"); // ticker:置顶优先+发布时间倒序取 size=2 条(无置顶 → 最新两篇) assertThat(html).contains("plb-ticker").contains("要闻速递"); - assertThat(count(html, "plb-ticker-item")).as("ticker 取 size=2 条").isEqualTo(2); + assertThat(count(html, " { + s.setTheme("academic-navy"); + siteRepository.saveAndFlush(s); + }); + clearCaches(); + + String html = body(mockMvc.perform(get("/portal/layhome/")).andExpect(status().isOk()).andReturn()); + + // 皮肤自有区块:an-* 结构类;news_grid/compact 不再落 plb 骨架 + assertThat(html).contains("an-ticker").contains("an-split").contains("an-date-chip"); + assertThat(html).as("已实现形态不得回落通用骨架").doesNotContain("plb-"); + assertThat(html).contains("校园要闻").contains("通知公告").contains("要闻速递"); + assertThat(count(html, " { + s.setTheme("campus-azure"); + siteRepository.saveAndFlush(s); + }); + clearCaches(); + + String html = body(mockMvc.perform(get("/portal/layhome/")).andExpect(status().isOk()).andReturn()); + assertThat(html).contains("cz-header").contains("cz-footer").contains("校园时讯"); + assertThat(html).as("无 home_layout 时不得出现布局骨架").doesNotContain("plb-section"); + + String css = body(mockMvc.perform(get("/portal/layhome/assets/campus-azure/css/main.css")) + .andExpect(status().isOk()).andReturn()); + // CSS 里是 "--primary: var(--cz-primary);",声明带空格,断言前先去空白 + assertThat(css.replaceAll("\\s+", "")) + .as("资产通道按主题名服务 CSS,且私有变量已别名到契约变量") + .contains("--cz-primary").contains("--primary:var(--cz-primary)"); + } + + @Test + @DisplayName("空态守卫:有内容的区块不得渲染「该区块暂无内容」,空区块恰渲染一次") + void emptyState_onlyForEmptyBlocks() throws Exception { + Integer emptyCat = persistCategory(siteId, 0, "空置栏目", CategoryTypeEnum.LIST).getId(); + clearCaches(); + setConfig("layhome", "{\"home_layout\":{\"version\":1,\"blocks\":[" + + "{\"id\":\"b1\",\"type\":\"article_list\",\"title\":\"校园时讯\",\"categoryIds\":[" + catNews + "],\"style\":\"compact\",\"size\":3}," + + "{\"id\":\"b2\",\"type\":\"article_list\",\"title\":\"校园要闻\",\"categoryIds\":[" + catNews + "],\"style\":\"news_grid\",\"size\":3}," + + "{\"id\":\"b3\",\"type\":\"article_list\",\"title\":\"空置栏目\",\"categoryIds\":[" + emptyCat + "],\"style\":\"compact\",\"size\":3}" + + "]}}"); + + String html = body(mockMvc.perform(get("/portal/layhome/")).andExpect(status().isOk()).andReturn()); + + // th:replace(优先级 100)先于 th:if(300)求值:守卫写在同一标签上等于没写, + // 空态块会被无条件插入——线上表现为每个有内容的栏目卡下面都挂一句「该区块暂无内容」。 + assertThat(count(html, "该区块暂无内容")) + .as("三块中仅空置栏目该显示空态") + .isEqualTo(1); + assertThat(html).contains("校园时讯").contains("校园要闻"); + } } diff --git a/src/test/java/com/yunhai/cms/theme/AcademicSkinContractTest.java b/src/test/java/com/yunhai/cms/theme/AcademicSkinContractTest.java new file mode 100644 index 0000000..c80e882 --- /dev/null +++ b/src/test/java/com/yunhai/cms/theme/AcademicSkinContractTest.java @@ -0,0 +1,194 @@ +package com.yunhai.cms.theme; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 高校官网风皮肤契约(academic-navy / campus-azure,以 scholar-blue 为基座派生)。 + * + * 线上事故复盘:站点配了 home_layout 时首页走 common 骨架,派生包若只改色不改区块形态, + * 首页正文就是骨架内置的蓝灰卡片——用户看到的"皮肤"只剩页头页脚,且中文标题被 flex 压塌。 + * 故这里要求派生包必须自带 home-blocks fragment,并钉住三条渲染不变量。 + */ +@DisplayName("高校官网风皮肤契约 - 自带首页区块 + 学术蓝配色") +class AcademicSkinContractTest { + + /** 皮肤名:结构类名前缀,两处必须一致(拷贝忘改前缀会让两套皮肤互相串样式)。 */ + private static final String[] SKINS = {"academic-navy:an", "campus-azure:cz"}; + + private static String skin(String spec) { + return spec.substring(0, spec.indexOf(':')); + } + + private static String prefix(String spec) { + return spec.substring(spec.indexOf(':') + 1); + } + + private static String text(String classpath) { + try (InputStream in = AcademicSkinContractTest.class.getResourceAsStream(classpath)) { + assertThat(in).as("classpath 资源必须存在:%s", classpath).isNotNull(); + return new String(readAll(in), StandardCharsets.UTF_8); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private static byte[] readAll(InputStream in) throws IOException { + java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream(); + byte[] buf = new byte[8192]; + int n; + while ((n = in.read(buf)) > 0) { + out.write(buf, 0, n); + } + return out.toByteArray(); + } + + private static String ruleOf(String css, String selector) { + Matcher m = Pattern.compile(Pattern.quote(selector) + "\\s*\\{([^}]*)\\}").matcher(css); + assertThat(m.find()).as("main.css 应含选择器 %s 的规则", selector).isTrue(); + return m.group(1).replaceAll("\\s+", ""); + } + + /** 抽出所有含 marker 的开始标签,用于检查同一标签上的属性组合。 */ + private static java.util.List tagsContaining(String html, String marker) { + java.util.List tags = new java.util.ArrayList<>(); + Matcher m = Pattern.compile("<[a-zA-Z][^>]*>").matcher(html); + while (m.find()) { + if (m.group().contains(marker)) { + tags.add(m.group()); + } + } + return tags; + } + + @Test + @DisplayName("派生包自带首页区块 fragment:布局模式下区块由皮肤渲染,不落通用骨架") + void skinOwnsHomeBlockFragments() { + for (String spec : SKINS) { + String html = text("/templates/themes/" + skin(spec) + "/fragments/home-blocks.html"); + for (String fragment : new String[] {"news_grid", "media_focus", "compact", "image_wall", + "card", "ticker", "gallery", "links", "empty"}) { + assertThat(html).as("%s 区块 fragment 必须自带", fragment) + .contains("th:fragment=\"" + fragment + "(block)\""); + } + // 空态:th:replace(优先级 100)先于 th:if(300),守卫写在同一标签上等于没写 + for (String tag : tagsContaining(html, ":: empty(")) { + assertThat(tag).as("%s 的空态守卫必须在外层 th:block 上", skin(spec)).doesNotContain("th:if"); + } + assertThat(html).contains("th:block th:if=\"${#lists.isEmpty(block.items)}\""); + } + } + + @Test + @DisplayName("home.html 把布局区块分发到本皮肤 fragment,区块头带右置「更多」") + void homeDispatchesToOwnFragments() { + for (String spec : SKINS) { + String html = text("/templates/themes/" + skin(spec) + "/home.html"); + assertThat(html).as("须按 layoutBlocks 分支渲染").contains("layoutBlocks != null"); + for (String style : new String[] {"news_grid", "media_focus", "compact", "image_wall"}) { + assertThat(html).as("%s 形态 %s 应走本皮肤 fragment", skin(spec), style) + .contains("'/fragments/home-blocks' :: " + style + "(${block})"); + } + assertThat(html).as("区块标题行须有右侧「更多」样式钩子").contains(prefix(spec) + "-more"); + } + } + + @Test + @DisplayName("中文行不被压塌:速递条单行可收缩、列表标题超长省略") + void rowsMustNotCollapseCjkText() { + for (String spec : SKINS) { + String css = text("/templates/themes/" + skin(spec) + "/assets/css/main.css"); + String p = prefix(spec); + String list = ruleOf(css, "." + p + "-ticker-list"); + assertThat(list).as("flex 列表须让出收缩权并锁单行").contains("min-width:0").contains("white-space:nowrap"); + String item = ruleOf(css, "." + p + "-ticker-item"); + assertThat(item).as("条目不被压缩且超长省略").contains("flex:none").contains("text-overflow:ellipsis"); + String title = ruleOf(css, "." + p + "-block-item-title"); + assertThat(title).contains("min-width:0").contains("overflow:hidden").contains("text-overflow:ellipsis"); + } + } + + @Test + @DisplayName("皮肤变量别名到主题契约变量,供 common 兜底骨架继承") + void skinAliasesContractVars() { + for (String spec : SKINS) { + String css = text("/templates/themes/" + skin(spec) + "/assets/css/main.css"); + String p = prefix(spec); + String root = ruleOf(css, ":root"); + assertThat(root).contains("--primary:var(--" + p + "-primary)") + .contains("--text:var(--" + p + "-text)") + .contains("--card-bg:var(--" + p + "-card-bg)") + .contains("--border:var(--" + p + "-border)"); + } + } + + @Test + @DisplayName("新闻背景带画在卡片之下:绝对定位层必须压 z-index,卡片抬起来") + void newsBandMustPaintBehindCard() { + for (String spec : SKINS) { + String css = text("/templates/themes/" + skin(spec) + "/assets/css/main.css"); + String p = prefix(spec); + // 定位元素默认绘制在普通流之上:不带 z-index 的背景带会糊在卡片正面(实测整卡泛绿) + assertThat(ruleOf(css, "." + p + "-sec-bg")).as("%s 背景带须压到卡片之下", p).contains("z-index:0"); + assertThat(ruleOf(css, "." + p + "-sec-bg + ." + p + "-block")) + .as("%s 卡片须抬到背景带之上,否则新闻带图片盖住正文", p).contains("z-index:1"); + } + } + + @Test + @DisplayName("皮肤预览图必须是实拍图,不得沿用基座 scholar-blue 的截图") + void screenshotMustBeOwnCapture() { + byte[] base = bytes("/templates/themes/scholar-blue/assets/screenshot.png"); + for (String spec : SKINS) { + String path = "/templates/themes/" + skin(spec) + "/assets/screenshot.png"; + byte[] shot = bytes(path); + assertThat(shot).as("%s 的预览图与基座雷同,等于没换肤", skin(spec)).isNotEqualTo(base); + assertThat(shot.length).as("%s 预览图不能是空文件", skin(spec)).isGreaterThan(20 * 1024); + } + } + + private static byte[] bytes(String classpath) { + try (InputStream in = AcademicSkinContractTest.class.getResourceAsStream(classpath)) { + assertThat(in).as("classpath 资源必须存在:%s", classpath).isNotNull(); + return readAll(in); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Test + @DisplayName("配色必须是学术蓝:主色蓝通道主导、明度落在深蓝区间,不得回落粉紫") + void primaryMustBeAcademicBlue() throws IOException { + for (String spec : SKINS) { + JsonNode root = new ObjectMapper() + .readTree(text("/templates/themes/" + skin(spec) + "/theme.json")); + assertThat(root.path("name").asText()).as("name 必须等于目录名").isEqualTo(skin(spec)); + String primary = null; + for (JsonNode p : root.path("params")) { + if ("primary".equals(p.path("key").asText())) { + primary = p.path("default").asText(); + } + } + assertThat(primary).as("%s theme.json 须声明 primary 颜色参数", skin(spec)).isNotNull(); + Matcher m = Pattern.compile("#([0-9a-fA-F]{6})").matcher(primary); + assertThat(m.matches()).as("primary 需为 6 位 hex,实际 %s", primary).isTrue(); + int rgb = Integer.parseInt(m.group(1), 16); + int r = (rgb >> 16) & 0xFF, g = (rgb >> 8) & 0xFF, b = rgb & 0xFF; + assertThat(b).as("主色须蓝通道主导(粉/紫已被否决),实际 %s", primary).isGreaterThan(r); + assertThat(b).as("主色须蓝通道主导,实际 %s", primary).isGreaterThan(g); + double lightness = (Math.max(r, Math.max(g, b)) + Math.min(r, Math.min(g, b))) / 255d / 2d; + assertThat(lightness).as("官网主色应为深蓝/藏蓝而非浅粉彩,实际 %s", primary) + .isBetween(0.18d, 0.52d); + } + } +} diff --git a/src/test/java/com/yunhai/cms/theme/HomeBlocksCssContractTest.java b/src/test/java/com/yunhai/cms/theme/HomeBlocksCssContractTest.java new file mode 100644 index 0000000..911be80 --- /dev/null +++ b/src/test/java/com/yunhai/cms/theme/HomeBlocksCssContractTest.java @@ -0,0 +1,115 @@ +package com.yunhai.cms.theme; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 通用兜底区块骨架(themes/common/fragments/home-blocks.html)的 CSS 契约。 + * + * 该片段带内联 style,任何配了 home_layout 的站点都用它渲染区块,是门户首页的实际门面; + * 它出问题时十套皮肤一起坏,且只在"站点配了首页布局"时才暴露——回落分支看不到。 + * 故把三条易被改坏的不变量钉在这里:不被中文压塌、颜色穿透皮肤、全宽区块不被网格切列。 + */ +@DisplayName("home-blocks 共享骨架 CSS 契约") +class HomeBlocksCssContractTest { + + private static final String FRAGMENT = "/templates/themes/common/fragments/home-blocks.html"; + + /** 取 ::style 片段里的 CSS 正文(第一个 ", Pattern.DOTALL).matcher(html); + assertThat(m.find()).as("片段应携带内联
- - -
- - -
-

文章标题

- - -
正文
-
- - -
-