@@ -1,399 +1,101 @@
< template >
< div class = "page-container " >
< div class = "pag e-header " >
< div class = "home-page " >
< main class = "hom e-s hell " >
< section class = "hero-card" >
< div class = "hero-copy" >
< span class = "eyebrow" > MRLEE · 生产运营中心 < / span >
< h1 > 让每一道工序 , 都清晰可追溯 < / h1 >
< p > 从订单录入 、 生产执行到异常闭环 , 集中掌握现场进度与质量状态 。 < / p >
< div class = "hero-actions" >
< NuxtLink to = "/produce/data-entry" > < el-button type = "primary" size = "large" > < el-icon > < Plus / > < / el-icon > 开始生产录入 < / el-button > < / NuxtLink >
< NuxtLink to = "/produce/query" > < el-button size = "large" plain > 查看订单全流程 < / el-button > < / NuxtLink >
< / div >
< / div >
<!-- 轮播图区域 -- >
< section class = "hero-section" >
< el-carousel height = "500px" arrow = "never" indicator -position = " none " >
< el-carousel-item >
< div class = "hero-background" > < / div >
< / el-carousel-item >
< / el-carousel >
< / section >
<!-- 主要内容区域 -- >
< section class = "content-section" >
< div class = "content-container" >
<!-- 标题区域 -- >
< div class = "section-header" >
< h1 class = "section-title" > 文档管理 < / h1 >
< p class = "section-subtitle" > 无论是快速上手 , 还是深入了解框架 , 这里都是最好的地点 < / p >
< / div >
<!-- 功能卡片区域 -- >
< div class = "features-grid" >
< div class = "feature-card" >
< div class = "feature-header" >
< div class = "feature-icon" >
< img src = "@/assets/images/index/course.jpg" alt = "官方教程" / >
< / div >
< h3 class = "feature-title" > 官方教程 < / h3 >
< / div >
< p class = "feature-description" > 详尽细致的逐步官方教程 , 帮助您系统全面地接触Madong , 建议在使用前阅读 。 < / p >
< NuxtLink to = "https://madong.tech/docs" target = "_blank" class = "feature-link" >
< el-button type = "primary" class = "w-full" >
< span > 前往教程 < / span >
< el-icon class = "ml-2" > < ArrowRight / > < / el-icon >
< / el-button >
< / NuxtLink >
< / div >
< div class = "feature-card" >
< div class = "feature-header" >
< div class = "feature-icon" >
< img src = "@/assets/images/index/api.jpg" alt = "API文档" / >
< / div >
< h3 class = "feature-title" > API文档 < / h3 >
< / div >
< p class = "feature-description" > 通过API文档了解Madong的正确使用方法 , 深入理解其运行逻辑和接口规范 。 < / p >
< NuxtLink to = "https://demo.madong.tech/adminapi/openapi" target = "_blank" class = "feature-link" >
< el-button type = "primary" class = "w-full" >
< span > 前往API文档 < / span >
< el-icon class = "ml-2" > < ArrowRight / > < / el-icon >
< / el-button >
< / NuxtLink >
<!-- < div class = "feature-link" >
< el-button type = "primary" class = "w-full" >
< span > 前往API文档 < / span >
< el-icon class = "ml-2" > < ArrowRight / > < / el-icon >
< / el-button >
< / div > -- >
< / div >
< div class = "feature-card" >
< div class = "feature-header" >
< div class = "feature-icon" >
< img src = "@/assets/images/index/community.jpg" alt = "问答社区" / >
< / div >
< h3 class = "feature-title" > 问答社区 < / h3 >
< / div >
< p class = "feature-description" > 浏览其他用户的问题和解答 , 获取使用技巧 , 遇到问题也可以随时提问交流 。 < / p >
< NuxtLink to = "https://madong.tech/ask" target = "_blank" class = "feature-link" >
< el-button type = "primary" class = "w-full" >
< span > 前往问答社区 < / span >
< el-icon class = "ml-2" > < ArrowRight / > < / el-icon >
< / el-button >
< / NuxtLink >
< / div >
< div class = "feature-card" >
< div class = "feature-header" >
< div class = "feature-icon" >
< img src = "@/assets/images/index/wx.jpg" alt = "关注公众号" / >
< / div >
< h3 class = "feature-title" > 关注公众号 < / h3 >
< / div >
< p class = "feature-description" > 您可以扫描页面底部的二维码来关注我们的官方公众号 , 获得一手咨询及使用技巧 。 < / p >
< div class = "feature-link" >
< el-button type = "info" class = "w-full" plain >
< span > 查看二维码 < / span >
< el-icon class = "ml-2" > < ChatDotRound / > < / el-icon >
< / el-button >
< / div >
< / div >
< / div >
< / div >
< / section >
< div class = "hero-visual" aria -hidden = " true " >
< div class = "orb orb-one" > < / div > < div class = "orb orb-two" > < / div >
< div class = "hero-panel" >
< div class = "panel-topline" > < span > 今日生产概览 < / span > < span class = "live-dot" > 实时 < / span > < / div >
< strong > 92.8 < span > % < / span > < / strong >
< div class = "progress-track" > < i style = "width: 92.8%" > < / i > < / div >
< div class = "panel-footer" > < span > 计划达成率 < / span > < span > 较昨日 + 6.4 % < / span > < / div >
< / div >
< / div >
< / section >
<!-- 右侧悬浮广告 -- >
< Advertisement
type = "simple"
:offset = "0"
:limit = "5"
/ >
< / div >
< section class = "metric-grid" aria -label = " 生产指标 " >
< article v-for = "metric in metrics" :key="metric.label" class="metric-card" >
< div class = "metric-icon" :class = "metric.tone" > < Icon :icon = "metric.icon" / > < / div >
< div class = "metric-content" > < span > { { metric . label } } < / span > < strong > { { metric . value } } < / strong > < small :class = "metric.trendTone" > { { metric . trend } } < / small > < / div >
< / article >
< / section >
< section class = "section-block" >
< div class = "section-heading" > < div > < span class = "section-kicker" > QUICK ACCESS < / span > < h2 > 快捷工作入口 < / h2 > < / div > < span class = "section-hint" > 常用功能 , 一键直达 < / span > < / div >
< div class = "quick-grid" >
< NuxtLink v-for = "item in quickLinks" :key="item.title" :to="item.to" class="quick-card" >
< div class = "quick-icon" :class = "item.tone" > < Icon :icon = "item.icon" / > < / div >
< div > < strong > { { item . title } } < / strong > < span > { { item . description } } < / span > < / div > < el-icon class = "arrow" > < ArrowRight / > < / el-icon >
< / NuxtLink >
< / div >
< / section >
< section class = "dashboard-grid" >
< article class = "surface-card process-card" >
< div class = "card-heading" > < div > < span class = "section-kicker" > ORDER FLOW < / span > < h2 > 订单流程进度 < / h2 > < / div > < NuxtLink to = "/produce/query" > 查看全部 < el-icon > < ArrowRight / > < / el-icon > < / NuxtLink > < / div >
< div class = "process-list" > < div v-for = "order in orders" :key="order.number" class="process-row"><div class="order-title"><strong>{{ order.number }}</strong><span>{{ order.product }}</span></div><div class="process-track"><i :style="{ width: `${order.progress}%` }"></i></div><div class="process-meta" > < span > { { order . stage } } < / span > < b > { { order . progress } } % < / b > < / div > < / div > < / div >
< / article >
< article class = "surface-card activity-card" >
< div class = "card-heading" > < div > < span class = "section-kicker" > RECENT ACTIVITY < / span > < h2 > 现场动态 < / h2 > < / div > < NuxtLink to = "/produce/query" > 更多 < el-icon > < ArrowRight / > < / el-icon > < / NuxtLink > < / div >
< div class = "activity-list" > < div v-for = "activity in activities" :key="activity.time + activity.title" class="activity-row"><span class="activity-dot" :class="activity.tone" > < / span > < div > < strong > { { activity . title } } < / strong > < span > { { activity . description } } < / span > < / div > < time > { { activity . time } } < / time > < / div > < / div >
< / article >
< / section >
< section class = "insight-banner" > < div > < span class = "section-kicker" > DATA INSIGHT < / span > < h2 > 用数据发现现场的下一步 < / h2 > < p > 按日 、 按月查看工序与步骤统计 , 及时识别瓶颈并优化产能 。 < / p > < / div > < NuxtLink to = "/produce/statistics/monthly" > < el-button type = "primary" > 进入生产统计 < el-icon > < ArrowRight / > < / el-icon > < / el-button > < / NuxtLink > < / section >
< / main >
< Advertisement type = "float" position = "bottom" :offset = "0" :limit = "1" :closable = "true" / >
< / div >
< / template >
< script lang = "ts" setup >
import { ArrowRight , ChatDotRound } from '@element-plus/icons-vue'
import Advertisement from '~/components/advertisement '
< script setup lang = "ts" >
import { ArrowRight , Plus } from '@element-plus/icons-vue'
import { Icon } from '~/components/icon '
import Advertisement from '~/components/advertisement/index.vue'
const metrics = [
{ label : '今日完成订单' , value : '128' , trend : '+12.6% 较昨日' , icon : 'ri:archive-stack-line' , tone : 'blue' , trendTone : 'up' } ,
{ label : '生产中订单' , value : '36' , trend : '进行中' , icon : 'ri:loader-4-line' , tone : 'violet' , trendTone : 'neutral' } ,
{ label : '待处理异常' , value : '08' , trend : '需及时关注' , icon : 'ri:error-warning-line' , tone : 'orange' , trendTone : 'warning' } ,
{ label : '设备运行率' , value : '96.4%' , trend : '+2.1% 较昨日' , icon : 'ri:settings-5-line' , tone : 'green' , trendTone : 'up' } ,
]
const quickLinks = [
{ title : '生产录入' , description : '录入订单与生产数据' , to : '/produce/data-entry' , icon : 'ri:scan-2-line' , tone : 'blue' } ,
{ title : '异常提报' , description : '快速记录现场异常' , to : '/produce/exception' , icon : 'ri:alarm-warning-line' , tone : 'orange' } ,
{ title : '维修记录' , description : '跟进维修与备件使用' , to : '/produce/repair' , icon : 'ri:tools-line' , tone : 'violet' } ,
{ title : '订单查询' , description : '追踪订单全流程' , to : '/produce/query' , icon : 'ri:search-eye-line' , tone : 'green' } ,
]
const orders = [
{ number : 'MO-20260902-018' , product : '精密控制模块' , stage : '装配工序' , progress : 86 } ,
{ number : 'MO-20260902-021' , product : '智能传感器组件' , stage : '功能测试' , progress : 64 } ,
{ number : 'MO-20260902-024' , product : '工业连接器' , stage : '来料检验' , progress : 32 } ,
]
const activities = [
{ title : '异常提报已处理' , description : '订单 MO-20260902-018 · 贴合不良' , time : '10:42' , tone : 'green' } ,
{ title : '维修记录已提交' , description : '设备 SMT-03 · 更换送料器' , time : '10:18' , tone : 'violet' } ,
{ title : '生产录入完成' , description : '订单 MO-20260902-021 · 功能测试' , time : '09:56' , tone : 'blue' } ,
{ title : '新异常待确认' , description : '订单 MO-20260902-024 · 外观瑕疵' , time : '09:31' , tone : 'orange' } ,
]
< / script >
< style lang = "scss" scoped >
. page - container {
min - height : 100 vh ;
background : # ffffff ;
}
. hero - section {
width : 100 % ;
. el - carousel {
border - radius : 0 ;
}
. hero - background {
height : 500 px ;
background - image : url ( '@/assets/images/index/index_carousel.jpeg' ) ;
background - position : center center ;
background - repeat : no - repeat ;
background - size : cover ;
}
}
. content - section {
background - image : url ( '@/assets/images/index/section.png' ) ;
background - size : 100 % ;
background - repeat : no - repeat ;
padding : 60 px 0 200 px ;
}
. ad - section {
width : 100 % ;
background : linear - gradient ( 135 deg , # f8f9ff 0 % , # fff5f7 100 % ) ;
position : relative ;
overflow : hidden ;
// 装饰性背景
& : : before {
content : '' ;
position : absolute ;
top : 0 ;
left : 0 ;
right : 0 ;
bottom : 0 ;
background - image :
radial - gradient ( circle at 20 % 50 % , rgba ( 102 , 126 , 234 , 0.05 ) 0 % , transparent 50 % ) ,
radial - gradient ( circle at 80 % 50 % , rgba ( 118 , 75 , 162 , 0.05 ) 0 % , transparent 50 % ) ;
pointer - events : none ;
}
. ad - container {
max - width : 1400 px ;
margin : 0 auto ;
padding : 40 px 40 px ;
position : relative ;
z - index : 1 ;
}
& . ad - section - top {
padding : 32 px 0 ;
}
& . ad - section - middle {
padding : 48 px 0 ;
margin : 60 px 0 ;
}
& . ad - section - bottom {
padding : 48 px 0 ;
}
}
. content - container {
max - width : 1400 px ; // 增加整体宽度以容纳4个容器
margin : 0 auto ;
padding : 0 40 px ; // 增加边距以适应更宽的内容
}
. section - header {
text - align : center ;
margin - bottom : 100 px ;
. section - title {
font - size : 40 px ;
font - weight : bold ;
color : # 666666 ;
margin - bottom : 20 px ;
line - height : 1.2 ;
}
. section - subtitle {
font - size : 16 px ;
color : # 666666 ;
line - height : 1.5 ;
}
}
. features - grid {
display : grid ;
grid - template - columns : repeat ( 4 , 1 fr ) ; // PC端固定4列
gap : 30 px ; // 调整间距以适应4列布局
justify - content : center ;
}
. feature - card {
background : # ffffff ;
border - radius : 12 px ;
padding : 25 px ; // 调整内边距以适应更小的容器
box - shadow : 0 4 px 20 px rgba ( 0 , 0 , 0 , 0.08 ) ;
transition : all 0.3 s ease ;
border : 1 px solid # f0f0f0 ;
& : hover {
transform : translateY ( - 4 px ) ;
box - shadow : 0 8 px 30 px rgba ( 0 , 0 , 0 , 0.12 ) ;
}
}
. feature - header {
display : flex ;
align - items : center ;
margin - bottom : 20 px ; // 调整间距
. feature - icon {
width : 28 px ; // 稍微缩小图标
height : 28 px ;
margin - right : 10 px ;
img {
width : 100 % ;
height : 100 % ;
object - fit : cover ;
border - radius : 4 px ;
}
}
. feature - title {
font - size : 18 px ; // 稍微缩小标题字体
font - weight : bold ;
color : # 666666 ;
margin : 0 ;
}
}
. feature - description {
font - size : 13 px ; // 稍微缩小描述字体
color : # 666666 ;
line - height : 20 px ;
margin - bottom : 25 px ;
min - height : 80 px ; // 调整最小高度
}
. feature - link {
display : block ;
. el - button {
border - radius : 6 px ;
height : 36 px ; // 调整按钮高度
font - size : 13 px ; // 调整按钮字体
: deep ( . el - icon ) {
font - size : 14 px ; // 调整图标大小
}
}
}
// 平板端适配 (768px - 1024px)
@ media ( max - width : 1024 px ) and ( min - width : 769 px ) {
. content - container {
max - width : 100 % ;
padding : 0 30 px ;
}
. features - grid {
grid - template - columns : repeat ( 2 , 1 fr ) ; // 平板端显示2列
gap : 25 px ;
}
. section - header {
margin - bottom : 80 px ;
. section - title {
font - size : 36 px ;
}
}
}
// 移动端适配 (768px以下)
@ media ( max - width : 768 px ) {
. content - container {
max - width : 100 % ;
padding : 0 20 px ;
}
. section - header {
margin - bottom : 60 px ;
. section - title {
font - size : 32 px ;
}
}
. features - grid {
grid - template - columns : 1 fr ; // 移动端显示1列
gap : 20 px ;
}
. feature - card {
padding : 20 px ;
}
. hero - section . hero - background {
height : 300 px ;
}
. content - section {
padding : 40 px 0 120 px ;
}
. feature - header {
. feature - icon {
width : 30 px ;
height : 30 px ;
}
. feature - title {
font - size : 18 px ;
}
}
. feature - description {
font - size : 14 px ;
min - height : auto ; // 移动端取消固定高度
}
. ad - section {
. ad - container {
padding : 24 px 20 px ;
}
& . ad - section - top {
padding : 24 px 0 ;
}
& . ad - section - middle {
padding : 32 px 0 ;
margin : 32 px 0 ;
}
& . ad - section - bottom {
padding : 32 px 0 ;
}
}
}
// 超大屏幕适配 (1400px以上)
@ media ( min - width : 1400 px ) {
. content - container {
max - width : 1400 px ;
}
}
// 小屏幕手机适配 (480px以下)
@ media ( max - width : 480 px ) {
. content - container {
padding : 0 16 px ;
}
. section - header {
margin - bottom : 40 px ;
. section - title {
font - size : 28 px ;
}
. section - subtitle {
font - size : 14 px ;
}
}
. features - grid {
gap : 16 px ;
}
. feature - card {
padding : 16 px ;
}
}
< / style >
. home - page { min - height : 100 % ; background : # f5f7fb ; color : # 18243 a ; }
. home - shell { max - width : 1440 px ; margin : 0 auto ; padding : 32 px 40 px 72 px ; }
. hero - card { position : relative ; display : flex ; min - height : 330 px ; overflow : hidden ; border - radius : 24 px ; background : linear - gradient ( 120 deg , # 132 d5b 0 % , # 1 d4c87 60 % , # 2875 a7 100 % ) ; color : # fff ; box - shadow : 0 16 px 40 px rgba ( 21 , 52 , 97 , .16 ) ; }
. hero - copy { position : relative ; z - index : 1 ; max - width : 650 px ; padding : 52 px 56 px ; } . eyebrow , . section - kicker { font - size : 11 px ; letter - spacing : .18 em ; font - weight : 700 ; color : # 78 c8ff ; } . hero - copy h1 { margin : 18 px 0 14 px ; font - size : clamp ( 30 px , 4 vw , 48 px ) ; line - height : 1.15 ; letter - spacing : - .03 em ; } . hero - copy p { max - width : 510 px ; margin : 0 ; color : rgba ( 255 , 255 , 255 , .72 ) ; font - size : 16 px ; line - height : 1.8 ; } . hero - actions { display : flex ; gap : 12 px ; margin - top : 32 px ; } . hero - actions : deep ( . el - button ) { border - radius : 10 px ; padding : 0 20 px ; } . hero - actions : deep ( . el - button -- default ) { color : # fff ; border - color : rgba ( 255 , 255 , 255 , .28 ) ; background : rgba ( 255 , 255 , 255 , .08 ) ; }
. hero - visual { position : absolute ; inset : 0 0 0 54 % ; } . orb { position : absolute ; border - radius : 50 % ; } . orb - one { width : 330 px ; height : 330 px ; top : - 70 px ; right : 70 px ; background : rgba ( 121 , 213 , 255 , .14 ) ; } . orb - two { width : 220 px ; height : 220 px ; right : - 30 px ; bottom : - 80 px ; background : rgba ( 255 , 255 , 255 , .1 ) ; } . hero - panel { position : absolute ; top : 76 px ; right : 12 % ; width : 260 px ; padding : 24 px ; border : 1 px solid rgba ( 255 , 255 , 255 , .16 ) ; border - radius : 18 px ; background : rgba ( 8 , 33 , 75 , .42 ) ; backdrop - filter : blur ( 12 px ) ; } . panel - topline , . panel - footer { display : flex ; justify - content : space - between ; align - items : center ; color : rgba ( 255 , 255 , 255 , .66 ) ; font - size : 12 px ; } . live - dot { color : # 8 df0bb ; } . live - dot : : before { content : '' ; display : inline - block ; width : 6 px ; height : 6 px ; margin - right : 5 px ; border - radius : 50 % ; background : # 62 e7a4 ; } . hero - panel strong { display : block ; margin : 24 px 0 14 px ; font - size : 52 px ; letter - spacing : - .06 em ; } . hero - panel strong span { margin - left : 3 px ; font - size : 24 px ; } . progress - track { height : 7 px ; overflow : hidden ; border - radius : 5 px ; background : rgba ( 255 , 255 , 255 , .14 ) ; } . progress - track i { display : block ; height : 100 % ; border - radius : inherit ; background : # 75 d5ff ; } . panel - footer { margin - top : 12 px ; } . panel - footer span : last - child { color : # 8 df0bb ; }
. metric - grid { display : grid ; grid - template - columns : repeat ( 4 , 1 fr ) ; gap : 16 px ; margin - top : 18 px ; } . metric - card , . quick - card , . surface - card , . insight - banner { border : 1 px solid # e7ebf3 ; background : # fff ; box - shadow : 0 5 px 18 px rgba ( 28 , 50 , 86 , .04 ) ; } . metric - card { display : flex ; align - items : center ; gap : 14 px ; padding : 20 px ; border - radius : 16 px ; } . metric - icon , . quick - icon { display : grid ; place - items : center ; flex : 0 0 auto ; border - radius : 12 px ; } . metric - icon { width : 44 px ; height : 44 px ; font - size : 21 px ; } . metric - content { display : grid ; gap : 4 px ; } . metric - content > span { color : # 8490 a5 ; font - size : 12 px ; } . metric - content strong { font - size : 26 px ; line - height : 1 ; letter - spacing : - .04 em ; } . metric - content small { font - size : 11 px ; } . up { color : # 20 aa6a ; } . warning { color : # e88b2b ; } . neutral { color : # 8792 a8 ; } . blue { color : # 3 a86f7 ; background : # eaf3ff ; } . violet { color : # 8063 e8 ; background : # f0edff ; } . orange { color : # e99532 ; background : # fff2df ; } . green { color : # 24 a873 ; background : # e6f8f0 ; }
. section - block { margin - top : 42 px ; } . section - heading , . card - heading { display : flex ; align - items : end ; justify - content : space - between ; } . section - heading h2 , . card - heading h2 , . insight - banner h2 { margin : 7 px 0 0 ; font - size : 22 px ; letter - spacing : - .02 em ; } . section - hint { color : # 98 a3b5 ; font - size : 13 px ; } . quick - grid { display : grid ; grid - template - columns : repeat ( 4 , 1 fr ) ; gap : 16 px ; margin - top : 18 px ; } . quick - card { position : relative ; display : flex ; align - items : center ; gap : 14 px ; padding : 18 px ; border - radius : 15 px ; transition : transform .2 s ease , box - shadow .2 s ease ; } . quick - card : hover { transform : translateY ( - 3 px ) ; box - shadow : 0 12 px 26 px rgba ( 28 , 50 , 86 , .1 ) ; } . quick - icon { width : 42 px ; height : 42 px ; font - size : 20 px ; } . quick - card strong , . quick - card span { display : block ; } . quick - card strong { font - size : 15 px ; } . quick - card span { margin - top : 5 px ; color : # 8 a95a8 ; font - size : 12 px ; } . arrow { margin - left : auto ; color : # aab4c4 ; }
. dashboard - grid { display : grid ; grid - template - columns : 1.1 fr .9 fr ; gap : 16 px ; margin - top : 18 px ; } . surface - card { padding : 24 px ; border - radius : 16 px ; } . card - heading a { display : inline - flex ; align - items : center ; gap : 3 px ; color : # 4 b8bf5 ; font - size : 12 px ; } . process - list , . activity - list { margin - top : 22 px ; } . process - row + . process - row { margin - top : 22 px ; } . order - title { display : flex ; justify - content : space - between ; align - items : center ; margin - bottom : 10 px ; } . order - title strong { font - size : 13 px ; } . order - title span { color : # 8 a95a8 ; font - size : 12 px ; } . process - track { height : 8 px ; overflow : hidden ; border - radius : 6 px ; background : # edf1f6 ; } . process - track i { display : block ; height : 100 % ; border - radius : inherit ; background : linear - gradient ( 90 deg , # 4 b8bf5 , # 71 c9f5 ) ; } . process - meta { display : flex ; justify - content : space - between ; margin - top : 7 px ; color : # 8 a95a8 ; font - size : 11 px ; } . process - meta b { color : # 4 b8bf5 ; } . activity - row { display : flex ; align - items : flex - start ; gap : 11 px ; } . activity - row + . activity - row { margin - top : 19 px ; } . activity - dot { width : 8 px ; height : 8 px ; margin - top : 5 px ; border - radius : 50 % ; box - shadow : 0 0 0 4 px currentColor ; opacity : .75 ; } . activity - row div { flex : 1 ; } . activity - row strong , . activity - row span { display : block ; } . activity - row strong { font - size : 13 px ; } . activity - row span { margin - top : 4 px ; color : # 8 a95a8 ; font - size : 12 px ; } . activity - row time { color : # a5afbd ; font - size : 11 px ; }
. insight - banner { display : flex ; align - items : center ; justify - content : space - between ; gap : 24 px ; margin - top : 18 px ; padding : 28 px 32 px ; border - radius : 16 px ; background : linear - gradient ( 100 deg , # f2f7ff , # fbfcff ) ; } . insight - banner p { margin : 9 px 0 0 ; color : # 8490 a5 ; font - size : 13 px ; } . insight - banner : deep ( . el - button ) { border - radius : 9 px ; }
@ media ( max - width : 1100 px ) { . home - shell { padding : 24 px ; } . hero - card { min - height : 360 px ; } . hero - visual { opacity : .75 ; right : - 80 px ; } . metric - grid , . quick - grid { grid - template - columns : repeat ( 2 , 1 fr ) ; } . dashboard - grid { grid - template - columns : 1 fr ; } }
@ media ( max - width : 640 px ) { . home - shell { padding : 16 px 12 px 48 px ; } . hero - card { min - height : 440 px ; } . hero - copy { padding : 34 px 26 px ; } . hero - copy h1 { font - size : 32 px ; } . hero - copy p { font - size : 14 px ; } . hero - actions { flex - direction : column ; align - items : flex - start ; } . hero - visual { inset : auto 0 20 px ; height : 150 px ; opacity : .9 ; } . hero - panel { top : 10 px ; right : 26 px ; width : 220 px ; padding : 17 px ; } . hero - panel strong { margin : 13 px 0 9 px ; font - size : 38 px ; } . metric - grid , . quick - grid { grid - template - columns : 1 fr ; } . metric - card { padding : 16 px ; } . section - block { margin - top : 32 px ; } . section - heading h2 , . card - heading h2 { font - size : 19 px ; } . section - hint { display : none ; } . surface - card { padding : 18 px ; } . insight - banner { align - items : flex - start ; flex - direction : column ; padding : 22 px ; } }
< / style >