/* 7. style标签：用于在HTML文档内部编写CSS样式（内部样式表），这里存放整个页面的所有样式定义 */

        /* --- 全局颜色与变量 --- */
        :root {
            /* 8. :root选择器：匹配HTML文档的根元素（即<html>标签），通常用于定义CSS自定义属性（变量）
                 定义的变量可以在整个页面的CSS中复用，方便统一修改样式（比如品牌色），提升可维护性 */
            --brand-blue: #004098;  
            /* 9. 定义品牌蓝色变量，用于网站的核心视觉元素（logo、hover效果等），统一品牌视觉风格 */
            --deep-dark: #1a1a1a;   
            /* 10. 定义深黑色变量，用于常规文本颜色，比纯黑色#000更柔和，提升阅读体验 */
            --text-dark: #333333;
            --text-muted: #666666;
            --soft-white: #ffffff;  
            /* 11. 定义纯白色变量，用于背景色、导航栏等浅色区域 */
            --transition: all 0.3s ease; 
            /* 12. 定义过渡效果变量，用于所有需要平滑动画的元素（比如hover、切换状态），统一动画时长和曲线 */
        }

        /* --- 基础页面设置 --- */
        body {
            /* 13. body选择器：匹配<body>标签，设置页面的基础样式，所有子元素会继承这里的部分属性（比如font-family、color） */
            margin: 0; 
            /* 14. 清除body标签的默认外边距（浏览器默认给body设置了8px左右的外边距），避免页面四周出现空白边 */
            font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 
            /* 15. 设置页面的默认字体族：
                 - 优先使用'Helvetica Neue'（苹果系统默认无衬线字体）
                 - 其次使用Helvetica（通用无衬线字体）
                 - 再其次使用Arial（Windows系统默认无衬线字体）
                 - 最后使用sans-serif（浏览器默认无衬线字体）
                 这样设置保证在不同设备上都能显示美观的无衬线字体，提升跨设备兼容性 */
            color: var(--deep-dark); 
            /* 16. 调用之前定义的CSS变量--deep-dark，设置页面默认文本颜色，实现样式复用 */
            background-color: var(--soft-white);
            /* 17. 背景色改为白色，与页面主体保持一致，避免移动端出现灰色横条 */
            -webkit-font-smoothing: antialiased; 
            /* 18. 针对Webkit内核浏览器（Chrome、Safari等）的字体抗锯齿属性，让文字边缘更平滑，提升视觉效果 */
        }

        .page-wrapper {
            max-width: 1800px;
            margin: 0 auto;
            background-color: var(--soft-white);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
        }
        
        /* 确保主要内容区域填充剩余空间 */
        .page-wrapper > *:not(footer) {
            flex-shrink: 0;
        }

        .align-line {
            padding-left: 5%;
            padding-right: 5%;
            box-sizing: border-box;
        }

        .contact-line { margin: 0; }

        .contact-number { white-space: nowrap; }

        /* --- 导航栏设置 --- */
        nav.main-nav {
            /* 19. nav选择器：匹配导航栏标签<nav>，设置导航栏的布局和样式 */
            display: flex; 
            /* 20. 设置导航栏为Flex布局，让内部子元素（logo、菜单、汉堡按钮）可以灵活排列，是现代布局的核心方式 */
            justify-content: space-between; 
            /* 21. Flex布局的主轴对齐方式：让子元素在水平方向上两端对齐（logo居左，菜单/汉堡按钮居右），中间自动填充空白 */
            align-items: center; 
            /* 22. Flex布局的交叉轴对齐方式：让子元素在垂直方向上居中对齐，保证logo和菜单高度一致 */
            padding: 1rem 5%; 
            /* 23. 设置导航栏的内边距：上下1rem（相对字体大小的单位，适配不同字体设置），左右5%（相对父元素宽度，响应式适配） */
            background: var(--soft-white); 
            /* 24. 导航栏背景色为白色，与页面背景一致 */
            border-bottom: 1px solid #eee; 
            /* 25. 导航栏底部添加1px的浅灰色边框，分隔导航栏和下方内容，提升视觉层次感 */
            position: sticky; 
            /* 26. 设置导航栏为粘性定位：滚动页面时，导航栏会在到达顶部（top:0）时固定在屏幕顶部，不随页面滚动消失 */
            top: 0; 
            /* 27. 配合position:sticky使用，指定粘性定位的锚点为屏幕顶部，即滚动到顶部时固定 */
            z-index: 1000; 
            /* 28. 设置z-index值为1000，保证导航栏在页面所有元素的最上层（不会被轮播图、内容等遮挡），z-index越大，层级越高 */
            max-width: 1800px; 
            /* 29. 限制导航栏的最大宽度为1800px，避免在超大屏幕（比如2k/4k显示器）上导航栏过度拉伸，保持布局美观 */
            margin: 0 auto;
            /* 30. 让导航栏水平居中（上下外边距0，左右自动填充），配合max-width实现大屏幕下居中对齐 */
            width: 100%;
            box-sizing: border-box;
        }

        .logo {
            /* 31. .logo类选择器：匹配class="logo"的元素（企业标志文本），设置logo的样式 */
            font-size: 1.2rem; 
            /* 32. 设置logo字体大小为1.2rem，比默认文本稍大，突出品牌标识 */
            font-weight: 800; 
            /* 33. 设置字体粗细为800（超粗体），让logo更醒目，font-weight取值范围100（细）-900（粗） */
            color: var(--brand-blue); 
            /* 34. 调用品牌蓝色变量，设置logo颜色，强化品牌视觉识别 */
            text-transform: uppercase; 
            text-decoration: none;
            letter-spacing: 1px;
            /* 35. 将logo文本转换为全大写字母，符合企业品牌标识的常见设计风格，更显正式 */
        }

        .nav-links {
            /* 36. .nav-links类选择器：匹配导航链接容器，设置导航菜单的布局 */
            display: flex; 
            /* 37. 导航菜单内部使用Flex布局，让导航链接横向排列 */
            gap: 2.5rem; 
            /* 38. 设置Flex子元素（导航链接）之间的间距为2.5rem，避免链接过于拥挤，提升点击体验 */
        }

        .nav-links a {
            /* 39. 匹配.nav-links容器内的所有<a>标签（导航链接），设置链接样式 */
            text-decoration: none; 
            /* 40. 清除<a>标签的默认下划线样式，让导航链接更简洁美观 */
            color: var(--text-dark); 
            /* 41. 导航链接默认颜色为深黑色，与页面文本颜色一致 */
            font-size: 0.9rem; 
            /* 42. 导航链接字体大小为0.9rem，比logo小，突出主次关系 */
            font-weight: 500;
            transition: var(--transition); 
            /* 43. 调用过渡效果变量，让链接的状态变化（比如hover）有0.3s的平滑动画，提升交互体验 */
        }

        .nav-links a:hover { 
            /* 44. 匹配.nav-links内的<a>标签被鼠标悬浮时的状态（hover伪类） */
            color: var(--brand-blue); 
            /* 45. 悬浮时链接颜色变为品牌蓝色，给用户明确的视觉反馈，提示该链接可点击 */
        }

        .menu-toggle {
            /* 46. .menu-toggle类选择器：匹配汉堡菜单按钮，用于移动端导航切换 */
            display: none; 
            /* 47. 桌面端隐藏汉堡菜单（默认不显示），因为桌面端直接展示横向导航链接 */
            flex-direction: column; 
            /* 48. 汉堡菜单内部使用垂直方向的Flex布局（主轴为垂直方向），让3条横线上下排列 */
            gap: 5px; 
            /* 49. 3条横线之间的间距为5px，形成标准的汉堡菜单样式 */
            cursor: pointer; 
            /* 50. 设置鼠标悬浮在汉堡菜单上时，光标变为手型（pointer），提示用户该元素可点击 */
        }

        .menu-toggle span {
            /* 51. 匹配汉堡菜单内的所有<span>标签（3条横线），设置横线样式 */
            width: 25px; 
            /* 52. 横线宽度为25px，保证汉堡菜单有足够的点击区域 */
            height: 3px; 
            /* 53. 横线高度为3px，形成细长的线条样式 */
            background-color: var(--brand-blue); 
            /* 54. 横线颜色为品牌蓝色，与logo颜色一致，保持视觉统一 */
        }

        /* --- 英雄区（大图区）布局 --- */
        .hero {
            /* 55. .hero类选择器：匹配英雄区容器，包裹轮播图、遮罩层和文字内容 */
            position: relative; 
            /* 56. 设置为相对定位：作为内部绝对定位元素（轮播图、遮罩层、文字）的父容器，让子元素的定位相对于该容器，而不是整个页面 */
            width: 100%; 
            /* 57. 英雄区宽度占满整个父容器（页面宽度） */
            max-width: 1800px; 
            /* 58. 限制英雄区最大宽度为1800px，与导航栏保持一致，避免超大屏幕下过度拉伸 */
            margin: 0 auto; 
            /* 59. 英雄区水平居中，与导航栏对齐 */
            overflow: hidden; 
            /* 60. 隐藏超出容器的内容：避免轮播图放大时超出英雄区边界，出现滚动条 */
            background-color: #000; 
            /* 61. 设置默认背景色为黑色：当轮播图图片加载失败时，显示黑色背景，避免出现白色空白，提升容错性 */
        }

        /* --- 轮播图容器 --- */
        .slideshow-container {
            /* 62. .slideshow-container类选择器：匹配轮播图容器，包裹所有幻灯片 */
            position: relative;             
            /* 63. 相对定位：作为内部幻灯片（绝对定位）的父容器 */
            width: 100%;                    
            /* 64. 轮播图容器宽度占满英雄区 */
            height: 55vh;                   
            /* 65. 轮播图高度为55vh（视口高度单位）：占浏览器视口高度的55%，响应式适配不同屏幕高度，比固定像素更灵活 */
            overflow: hidden;               
            /* 66. 隐藏超出容器的内容：避免幻灯片放大时超出容器边界 */
        }

        /* --- 移动端适配 --- */
        @media (max-width: 768px) {
            /* 67. 媒体查询：当屏幕宽度小于等于768px（移动端，手机/平板竖屏）时，执行内部的样式覆盖 */
            .slideshow-container {
                height: 30vh !important;    
                /* 68. 移动端轮播图高度改为30vh，适配移动端较小的屏幕，避免轮播图过高挤压下方内容；
                     !important：强制覆盖之前设置的55vh，确保移动端样式生效（优先级最高） */
            }
        }

        /* --- 单个幻灯片基础样式：解决回弹的终极方案 --- */
        .slide {
            /* 69. .slide类选择器：匹配单个幻灯片（轮播图的每张图片） */
            position: absolute;             
            /* 70. 绝对定位：让所有幻灯片重叠在一起（都相对于父容器.slideshow-container定位），方便实现淡入淡出切换 */
            top: 0;                         
            /* 71. 幻灯片顶部与父容器顶部对齐 */
            left: 0;                        
            /* 72. 幻灯片左侧与父容器左侧对齐 */
            width: 100%;                    
            /* 73. 幻灯片宽度占满父容器 */
            height: 100%;                   
            /* 74. 幻灯片高度占满父容器 */
            background-color: #041427;      
            /* 75. 纯色底作为图片加载前的占位，避免首屏闪白 */
            overflow: hidden;               
            /* 76. 确保内部图片放大时不溢出容器 */
            opacity: 0;                     
            /* 77. 默认透明度为0（完全透明），幻灯片默认隐藏，只有激活状态才显示 */
            /* 使用 3.5s 的长过渡，让切换时的透明度变化极其丝滑，掩盖缩放比例的微小差异 */
            transition: opacity 2.5s ease-in-out; 
            /* 78. 仅对透明度（opacity）设置过渡效果，时长2.5s，过渡曲线为ease-in-out（先慢后快再慢），让淡入淡出更丝滑 */
            z-index: 1;                     
            /* 79. 默认层级为1，处于较低层级，激活状态会提升层级 */
            /* 重点：动画写在 .slide 基础上，而不是 .active。 */
            /* 作用：图片加载后动画就永远在后台运行，不随 active 切换而重置，彻底消除回弹感。 */
            animation: zoomEffect 60s linear infinite; 
            /* 80. 给幻灯片添加无限循环的放大动画：调用@keyframes定义的zoomEffect动画，时长60s，线性速度（匀速），无限循环 */
            will-change: transform; /* 作用：调用硬件加速，优化缩放平滑度 */
            /* 81. 告诉浏览器该元素的transform属性即将发生变化，让浏览器提前开启硬件加速，优化动画性能，避免卡顿 */
        }

        /* --- 幻灯片图片设置 --- */
        .slide picture,
        .slide img {
            width: 100%;
            height: 100%;
            display: block;
        }

        .slide img {
            object-fit: cover;
            filter: saturate(1.05);
        }

        /* --- 激活状态：仅仅负责透明度显现 --- */
        .slide.active {
            /* 82. .slide.active类选择器：匹配处于激活状态的幻灯片（当前显示的轮播图） */
            opacity: 1;                     
            /* 83. 激活状态透明度为1（完全不透明），显示该幻灯片 */
            z-index: 2;                     
            /* 84. 激活状态层级提升为2，确保该幻灯片在其他隐藏幻灯片的上层，避免被遮挡 */
        }

        /* --- 重新定义动画：极慢速单向持续放大 --- */
        @keyframes zoomEffect {
            /* 85. @keyframes定义自定义动画zoomEffect，用于幻灯片的慢速放大效果 */
            0% {
                /* 86. 动画起始状态（0%进度） */
                transform: scale(1);        /* 作用：起始比例 100% */
                /* 87. 元素缩放比例为1（原始大小，不缩放） */
            }
            100% {
                /* 88. 动画结束状态（100%进度） */
                transform: scale(1.2);      /* 作用：60秒内缓慢变大到 1.2，绝不往回缩 */
                /* 89. 元素缩放比例为1.2（放大到原始大小的120%），单向放大不回缩，避免出现回弹感 */
            }
        }

        /* --- 遮罩层 --- */
        .hero-overlay {
            /* 90. .hero-overlay类选择器：匹配英雄区遮罩层，用于覆盖在轮播图上方，提升文字可读性 */
            position: absolute; 
            /* 91. 绝对定位：相对于父容器.hero定位 */
            top: 0; 
            /* 92. 遮罩层顶部与hero容器顶部对齐 */
            left: 0; 
            /* 93. 遮罩层左侧与hero容器左侧对齐 */
            width: 100%; 
            /* 94. 遮罩层宽度占满hero容器 */
            height: 100%; 
            /* 95. 遮罩层高度占满hero容器 */
            background: rgba(0,0,0,0.3); 
            /* 96. 遮罩层背景为半透明黑色：rgba(红,绿,蓝,透明度)，0.3的透明度既可以调暗轮播图，又不会完全遮挡图片内容，同时让白色文字更清晰 */
            z-index: 3; /* 确保遮罩层在图片上方 */
            /* 97. 层级为3，高于幻灯片（z-index:2），确保遮罩层覆盖在轮播图上方 */
        }

        /* --- 英雄区文字容器 --- */
        .hero-content {
            /* 98. .hero-content类选择器：匹配英雄区文字内容容器，包裹标题和描述文本 */
            position: absolute;   
            /* 99. 绝对定位：相对于父容器.hero定位，方便调整文字在轮播图上的位置 */
            left: 5%;             
            /* 100. 文字容器距离hero容器左侧5%，响应式适配 */
            bottom: 8%;           
            /* 101. 文字容器距离hero容器底部8%，放置在轮播图下方，符合视觉习惯 */
            color: white; 
            /* 102. 文字颜色为白色，与半透明遮罩层对比鲜明，提升可读性 */
            text-align: left !important; 
            /* 103. 文字左对齐，!important确保覆盖其他可能的对齐样式 */
            max-width: 800px; 
            /* 104. 限制文字容器的最大宽度为800px，避免文字在超大屏幕上过度拉伸，提升阅读体验 */
            z-index: 4; /* 确保文字在最顶层 */
            /* 105. 层级为4，高于遮罩层（z-index:3），确保文字显示在最顶层，不被其他元素遮挡 */
        }

        .hero-content h1 {
            /* 106. 匹配.hero-content内的<h1>标签（主标题），设置标题样式 */
            font-size: clamp(1.8rem, 5vw, 3.2rem); 
            /* 107. 响应式字体大小：clamp(最小值, 中间值, 最大值)
                 - 最小值1.8rem：屏幕较小时，字体不小于1.8rem
                 - 中间值5vw：屏幕宽度变化时，字体大小随视口宽度（5%）动态调整
                 - 最大值3.2rem：屏幕较大时，字体不大于3.2rem
                 实现不同屏幕下字体大小的自适应，无需额外写媒体查询 */
            margin-bottom: 0.5rem; 
            /* 108. 标题底部外边距为0.5rem，与下方描述文本保持适当间距 */
            font-weight: 300; 
            /* 109. 字体粗细为300（轻量级），让标题更优雅，不显得笨重 */
            letter-spacing: 2px; 
            /* 110. 字符间距为2px，拉开文字之间的距离，提升标题的视觉美感 */
            text-shadow: 0 2px 10px rgba(0,0,0,0.5); 
            /* 111. 给文字添加阴影：水平偏移0，垂直偏移2px，模糊半径10px，半透明黑色阴影
                 提升文字与轮播图的对比度，让文字更清晰易读，同时增加层次感 */
        }

        .hero-content p {
            /* 112. 匹配.hero-content内的<p>标签（描述文本），设置文本样式 */
            color: #d1dce5; 
            /* 113. 文本颜色为浅蓝灰色，比纯白色稍暗，与主标题形成主次对比，同时保持可读性 */
            font-size: clamp(1.1rem, 2.5vw, 1.6rem); 
            /* 114. 响应式字体大小，逻辑同<h1>，适配不同屏幕 */
            margin: 0;
            /* 115. 清除默认外边距，让文本与标题的间距仅由标题的margin-bottom控制 */
            line-height: 1.4; 
            /* 116. 设置行高为1.4，行高是文本可读性的关键，1.4的行高让多行文本不拥挤 */
            font-weight: 400;
            /* 117. 字体粗细为400（正常体重），与标题的轻量级形成对比 */
            text-shadow: 0 1px 5px rgba(0,0,0,0.3); 
            /* 118. 文字阴影，比标题阴影更浅更小，保持层次感，同时提升可读性 */
        }

        /* --- 业务应用网格 --- */
        .section-title {
            /* 119. .section-title类选择器：匹配业务板块的标题，设置标题样式 */
            text-align: center; 
            /* 120. 文字居中对齐，作为板块标题，符合视觉习惯 */
            padding: 2rem 0 0.2rem; 
            /* 121. 内边距：上下4rem，左右0；底部2rem，与下方网格保持适当间距 */
            font-size: 2rem; 
            /* 122. 字体大小为2rem，突出板块标题 */
            color: var(--brand-blue); 
            /* 123. 颜色为品牌蓝色，与logo保持视觉统一，强化品牌风格 */
        }

        .app-grid {
            /* 124. .app-grid类选择器：匹配业务网格容器，包裹4个业务项 */
            display: grid; 
            /* 125. 设置为Grid布局，Grid是二维布局（行+列），适合实现网格状布局，比Flex更便捷 */
            grid-template-columns: repeat(4, 1fr); 
            /* 126. 定义网格的列布局：repeat(4, 1fr) 等价于 1fr 1fr 1fr 1fr
                 - fr是Grid的弹性单位，1fr表示占用剩余空间的1份
                 实现4列等宽的网格布局，响应式适配 */
            gap: 0;
            /* 127. 取消网格缝隙，避免出现浅灰横线 */
            max-width: 1800px; 
            /* 129. 限制网格最大宽度为1800px，与导航栏、英雄区保持一致 */
            margin: 0 auto;
            /* 130. 网格水平居中，与其他板块对齐 */
            border: 1px solid #eee;
            /* 131. 为整个网格添加细边框，保持版块结构感 */
        }

        .app-item {
            /* 131. .app-item类选择器：匹配单个业务项，设置业务项的样式 */
            background: var(--soft-white); 
            /* 132. 业务项背景为白色 */
            padding: 1rem 2rem; 
            /* 133. 内边距：上下4rem，左右2rem，给业务项内的文字足够的空间，提升美观度 */
            text-align: center; 
            /* 134. 业务项内的文字居中对齐，符合网格布局的视觉习惯 */
            border-right: 1px solid #eee;
            border-bottom: 1px solid #eee;
            /* 使用细边框替代网格间隙，整体更干净 */
        }
        .app-item:nth-child(4n) { border-right: none; }
        .app-item:nth-last-child(-n+4) { border-bottom: none; }
        /* 去掉每行最后一个和最后一行的边框，避免双线 */

        /* --- 移动端（手机）适配 --- */
        @media (max-width: 768px) {
            /* 135. 媒体查询：屏幕宽度≤768px时，执行移动端样式覆盖 */
            .menu-toggle { display: flex; }
            /* 136. 移动端显示汉堡菜单（将display:none改为display:flex），用于切换导航链接 */
            .nav-links {
                /* 137. 重新设置移动端导航链接容器的样式 */
                display: none; 
                /* 138. 移动端默认隐藏导航链接，点击汉堡菜单后再显示 */
                flex-direction: column; 
                /* 139. 导航链接改为垂直方向排列，适配移动端竖屏布局 */
                position: absolute; 
                /* 140. 绝对定位：相对于父容器<nav>定位，让导航链接下拉显示在导航栏下方 */
                top: 100%; 
                /* 141. 导航链接容器顶部与导航栏底部对齐（100%表示父容器的高度），实现下拉效果 */
                left: 0; 
                /* 142. 导航链接容器左侧与导航栏左侧对齐 */
                width: 100%; 
                /* 143. 导航链接容器宽度占满整个导航栏（页面宽度），适配移动端屏幕 */
                background: white; 
                /* 144. 背景为白色，与导航栏保持一致，提升视觉统一 */
                padding: 20px 5%; 
                /* 145. 上下内边距20px，左右5%内边距，给导航链接足够的垂直和水平空间 */
                border-bottom: 1px solid #eee;
                /* 146. 添加底部边框，与导航栏保持视觉一致性 */
                gap: 0.8rem;
                /* 147. 设置导航链接之间的间距 */
            }
            .nav-links.active { display: flex; }
            /* 146. 当导航链接容器添加.active类时，显示容器（display:flex），实现汉堡菜单的切换效果 */
            
            .nav-links a {
                font-size: 0.9rem !important;
                /* 移动端汉堡菜单字体大小调整 */
                padding-bottom: 1rem;
                /* 给每个链接底部添加内边距 */
                border-bottom: 1px solid #ddd;
                /* 添加底部分隔线 */
            }
            
            .hero-content {
                left: 20px !important; 
                /* 147. 移动端文字容器左侧距离改为20px（固定像素），比5%更精准，适配小屏幕 */
                bottom: 20px !important; 
                /* 148. 移动端文字容器底部距离改为20px，适配小屏幕 */
                padding: 0 !important; 
                /* 149. 清除移动端文字容器的内边距，避免多余空白 */
            }
            
            .section-title {
                font-size: 1.5rem !important;
                /* 移动端板块标题字体大小调整为1.5rem，适配小屏幕显示 */
            }
            
            .app-item h3 {
                font-size: 1rem !important;
                /* 移动端业务项标题字体大小调整为1.2rem */
            }
            
            .app-item p {
                font-size: 0.8rem !important;
                /* 移动端业务项描述字体大小调整为0.9rem */
            }
            
            .app-grid { grid-template-columns: 1fr 1fr; }
            /* 150. 移动端网格布局改为2列等宽（repeat(2, 1fr)的简写），适配移动端竖屏，避免4列过于拥挤 */

            .app-item:nth-child(2n) { border-right: none; }
            .app-item:nth-last-child(-n+2) { border-bottom: none; }
            /* 根据两列布局重新计算去除右/下边框的规则 */
            
            .app-grid {
                margin-bottom: 0;
                /* 移动端确保网格底部无额外边距 */
            }
            
            .page-wrapper {
                max-width: 100%;
                /* 移动端取消最大宽度限制，让页面占满全宽 */
                box-shadow: none;
                /* 移动端隐藏阴影，避免出现灰色横条 */
                min-height: 100vh;
                /* 移动端确保页面包装器至少占满整个视口高度 */
            }
        }

        /* --- 页脚设置 --- */
        footer {
            /* 151. footer选择器：匹配页脚标签<footer>，设置页脚样式 */
            background: #003366; 
            /* 152. 页脚背景为品牌深蓝色，与页面主体的白色形成对比，分隔页面内容和页脚 */
            color: #b0c4de; 
            /* 153. 页脚文本颜色为柔和的浅蓝，呼应纤维页的视觉风格 */
            padding: 2.5rem 0;
            /* 154. 上下内边距5rem，拉开呼吸感 */
            text-align: center; 
            /* 155. 页脚文字居中对齐，符合页脚的设计习惯 */
            margin-top: auto;
            /* 156. 让页脚在内容较少时依然贴底 */
        }

                /* --- 公司新闻板块 --- */
                .news-hub {
                    margin: 4rem auto;
                    width: 100%;
                    max-width: 1800px;
                    box-sizing: border-box;
                }

                .news-hub.align-line {
                    padding-left: 0;
                    padding-right: 0;
                }

                .blog-column {
                    background: #f7f8fb;
                    border: 1px solid #e4e7f0;
                    border-radius: 18px;
                    padding: 2rem;
                    box-shadow: 0 20px 45px rgba(0,0,0,0.05);
                    display: flex;
                    flex-direction: column;
                    gap: 1.25rem;
                }

                .blog-header h3 {
                    margin: 0;
                    font-size: clamp(1.8rem, 2vw, 3rem);
                    line-height: 1.15;
                }

                .blog-header h3 a {
                    color: var(--deep-dark);
                    text-decoration: none;
                    display: inline-block;
                }

                .blog-header h3 a:hover {
                    color: var(--brand-blue);
                }

                .eyebrow-label {
                    font-size: 0.85rem;
                    letter-spacing: 0.2em;
                    text-transform: uppercase;
                    color: var(--brand-blue);
                    margin: 0 0 0.2rem 0;
                }

                .news-subtitle {
                    margin: 0;
                    color: var(--text-muted);
                }

                .news-subtitle-spacer {
                    height: 0.6rem;
                }

                .blog-card {
                    display: block;
                    background: #fff;
                    border-radius: 16px;
                    padding: 1.2rem 1.4rem;
                    border: 1px solid #e1e5ef;
                    box-shadow: 0 10px 20px rgba(0,0,0,0.04);
                    text-decoration: none;
                    color: inherit;
                    transition: transform 0.25s ease, box-shadow 0.25s ease;
                }

                .blog-card:hover {
                    transform: translateY(-4px);
                    box-shadow: 0 16px 28px rgba(0,0,0,0.08);
                }

                .blog-date {
                    margin: 0;
                    font-size: 0.85rem;
                    color: var(--text-muted);
                }

                .blog-card h4 {
                    margin: 0.4rem 0;
                }

                .blog-card p {
                    margin: 0 0 0.4rem 0;
                    color: var(--text-muted);
                }

                .blog-card .blog-summary {
                    line-height: 1.5;
                    display: -webkit-box;
                    -webkit-line-clamp: 3;
                    -webkit-box-orient: vertical;
                    overflow: hidden;
                    min-height: 0;
                    margin-bottom: 0.35rem;
                }

                .blog-card-cta {
                    font-weight: 600;
                    color: var(--brand-blue);
                }

                .news-hub .blog-column .blog-card:nth-of-type(n+5) {
                    display: none;
                }

                .news-more-link {
                    align-self: flex-start;
                    font-weight: 600;
                    color: var(--brand-blue);
                    text-decoration: none;
                    margin-top: auto;
                    padding-top: 0.25rem;
                }

                .news-more-link:hover {
                    text-decoration: underline;
                }

                @media (max-width: 768px) {
                    .news-hub {
                        margin: 3rem auto;
                        padding-left: 0;
                        padding-right: 0;
                    }

                    .news-hub .blog-column {
                        border-radius: 0;
                        border-left: none;
                        border-right: none;
                        padding-left: 1.25rem;
                        padding-right: 1.25rem;
                    }

                    .blog-card .blog-summary {
                        display: none;
                    }
                }

                /* --- 新闻详情页样式 --- */
                .news-detail-page {
                    max-width: 1100px;
                    margin: 3.5rem auto 4.5rem;
                    padding: 0 5%;
                    box-sizing: border-box;
                }

                .news-detail-hero {
                    background: linear-gradient(120deg, #eaf4ff 0%, #ffffff 60%);
                    border: 1px solid #d9e7ff;
                    border-radius: 20px;
                    padding: 2.5rem;
                    box-shadow: 0 25px 50px rgba(0,0,0,0.05);
                }

                .news-detail-kicker {
                    font-size: 0.95rem;
                    letter-spacing: 0.08em;
                    text-transform: uppercase;
                    color: var(--brand-blue);
                    margin: 0 0 0.6rem 0;
                }

                .news-detail-hero h1 {
                    margin: 0 0 0.8rem 0;
                    font-size: clamp(2rem, 4vw, 3.2rem);
                    color: var(--deep-dark);
                    line-height: 1.2;
                }

                .news-detail-subtitle {
                    margin: 0 0 1.2rem 0;
                    font-size: 1.15rem;
                    color: var(--deep-dark);
                    font-weight: 500;
                }

                .news-detail-body {
                    background: #fff;
                    border-radius: 16px;
                    border: 1px solid #edf0f7;
                    padding: 2rem 2.5rem;
                    box-shadow: 0 20px 40px rgba(0,0,0,0.04);
                }

                .news-detail-body p {
                    margin: 0;
                    color: var(--text-dark);
                    line-height: 1.7;
                }

                .news-detail-body p + p {
                    margin-top: 1rem;
                }

                .news-detail-image {
                    margin: 1.5rem 0;
                    border-radius: 16px;
                    overflow: hidden;
                    border: 1px solid #e1e5ef;
                    background: #f7f8fb;
                    box-shadow: 0 12px 30px rgba(0,0,0,0.06);
                    aspect-ratio: 16 / 9;
                }

                .news-detail-image img {
                    width: 100%;
                    height: 100%;
                    display: block;
                    object-fit: cover;
                    object-position: center;
                }

                .news-detail-image.crop-top img {
                    object-position: center 30%;
                }


                .news-detail-cta {
                    display: inline-flex;
                    margin-top: 1.8rem;
                    text-decoration: none;
                    font-weight: 600;
                    color: var(--brand-blue);
                    border-bottom: 1px solid rgba(0,64,152,0.3);
                    width: fit-content;
                }

                @media (max-width: 768px) {
                    .news-detail-page {
                        padding: 0 1.25rem;
                    }

                    .news-detail-hero,
                    .news-detail-body {
                        padding: 1.5rem;
                    }
                }
