|
@@ -13,30 +13,99 @@
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
align-items: center;
|
|
- padding: 1rem 2rem;
|
|
|
|
- background-color: #fff;
|
|
|
|
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
+ padding: 1.5rem 2rem;
|
|
|
|
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
|
|
+ color: white;
|
|
|
|
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
|
|
position: relative;
|
|
position: relative;
|
|
z-index: 10;
|
|
z-index: 10;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+.header-left {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ gap: 4px;
|
|
|
|
+}
|
|
|
|
+
|
|
.header-left h1 {
|
|
.header-left h1 {
|
|
margin: 0;
|
|
margin: 0;
|
|
- font-size: 1.5rem;
|
|
|
|
- color: #1a73e8;
|
|
|
|
|
|
+ font-size: 1.8rem;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ color: white;
|
|
}
|
|
}
|
|
|
|
|
|
-.nav-button {
|
|
|
|
|
|
+.header-subtitle {
|
|
|
|
+ font-size: 0.9rem;
|
|
|
|
+ color: rgba(255, 255, 255, 0.8);
|
|
|
|
+ font-weight: 400;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.header-right {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 1rem;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.user-info {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 0.8rem;
|
|
padding: 0.5rem 1rem;
|
|
padding: 0.5rem 1rem;
|
|
- background-color: #f5f7fa;
|
|
|
|
- border: 1px solid #ddd;
|
|
|
|
- border-radius: 4px;
|
|
|
|
|
|
+ background: rgba(255, 255, 255, 0.1);
|
|
|
|
+ border-radius: 12px;
|
|
|
|
+ backdrop-filter: blur(10px);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.welcome-text {
|
|
|
|
+ font-size: 0.9rem;
|
|
|
|
+ color: rgba(255, 255, 255, 0.9);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.user-avatar {
|
|
|
|
+ width: 32px;
|
|
|
|
+ height: 32px;
|
|
|
|
+ background: rgba(255, 255, 255, 0.2);
|
|
|
|
+ border-radius: 50%;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ font-size: 1.2rem;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.nav-button {
|
|
|
|
+ padding: 0.75rem 1.5rem;
|
|
|
|
+ background: rgba(255, 255, 255, 0.1);
|
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
|
+ border-radius: 12px;
|
|
|
|
+ color: white;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
transition: all 0.3s ease;
|
|
transition: all 0.3s ease;
|
|
|
|
+ font-weight: 500;
|
|
|
|
+ backdrop-filter: blur(10px);
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ background: rgba(255, 255, 255, 0.2);
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
-.nav-button:hover {
|
|
|
|
- background-color: #e8eaed;
|
|
|
|
|
|
+.logout-button {
|
|
|
|
+ padding: 0.75rem 1.5rem;
|
|
|
|
+ background: rgba(239, 68, 68, 0.8);
|
|
|
|
+ border: 1px solid rgba(239, 68, 68, 0.3);
|
|
|
|
+ border-radius: 12px;
|
|
|
|
+ color: white;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
+ font-weight: 500;
|
|
|
|
+ backdrop-filter: blur(10px);
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ background: rgba(239, 68, 68, 1);
|
|
|
|
+ transform: translateY(-2px);
|
|
|
|
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// 主体内容布局
|
|
// 主体内容布局
|
|
@@ -48,10 +117,11 @@
|
|
|
|
|
|
// 侧边栏样式
|
|
// 侧边栏样式
|
|
.dashboard-sidebar {
|
|
.dashboard-sidebar {
|
|
- width: 200px;
|
|
|
|
- background-color: #fff;
|
|
|
|
- box-shadow: 2px 0 4px rgba(0, 0, 0, 0.05);
|
|
|
|
- padding: 1rem 0;
|
|
|
|
|
|
+ width: 220px;
|
|
|
|
+ background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
|
|
|
|
+ box-shadow: 4px 0 12px rgba(0, 0, 0, 0.05);
|
|
|
|
+ padding: 1.5rem 0;
|
|
|
|
+ border-right: 1px solid #e2e8f0;
|
|
}
|
|
}
|
|
|
|
|
|
.nav-list {
|
|
.nav-list {
|
|
@@ -63,29 +133,58 @@
|
|
.nav-item {
|
|
.nav-item {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
- padding: 0.8rem 1.5rem;
|
|
|
|
|
|
+ padding: 1rem 1.5rem;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
- transition: all 0.3s ease;
|
|
|
|
- border-left: 3px solid transparent;
|
|
|
|
-}
|
|
|
|
|
|
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
+ border-left: 4px solid transparent;
|
|
|
|
+ margin: 0.25rem 0;
|
|
|
|
+ position: relative;
|
|
|
|
|
|
-.nav-item:hover {
|
|
|
|
- background-color: #f8f9fa;
|
|
|
|
|
|
+ &::before {
|
|
|
|
+ content: '';
|
|
|
|
+ position: absolute;
|
|
|
|
+ left: 0;
|
|
|
|
+ top: 0;
|
|
|
|
+ bottom: 0;
|
|
|
|
+ width: 0;
|
|
|
|
+ background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
|
|
|
|
+ transition: width 0.3s ease;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ background: linear-gradient(90deg, rgba(79, 70, 229, 0.05) 0%, transparent 100%);
|
|
|
|
+ transform: translateX(4px);
|
|
|
|
+
|
|
|
|
+ &::before {
|
|
|
|
+ width: 4px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ &.active {
|
|
|
|
+ background: linear-gradient(90deg, rgba(79, 70, 229, 0.1) 0%, transparent 100%);
|
|
|
|
+ border-left-color: #4f46e5;
|
|
|
|
+ color: #4f46e5;
|
|
|
|
+ font-weight: 600;
|
|
|
|
+
|
|
|
|
+ &::before {
|
|
|
|
+ width: 4px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
-.nav-item.active {
|
|
|
|
- background-color: #e8f0fe;
|
|
|
|
- border-left-color: #1a73e8;
|
|
|
|
- color: #1a73e8;
|
|
|
|
|
|
+.nav-icon {
|
|
|
|
+ margin-right: 1rem;
|
|
|
|
+ font-size: 1.3rem;
|
|
|
|
+ transition: transform 0.3s ease;
|
|
}
|
|
}
|
|
|
|
|
|
-.nav-icon {
|
|
|
|
- margin-right: 0.8rem;
|
|
|
|
- font-size: 1.2rem;
|
|
|
|
|
|
+.nav-item:hover .nav-icon {
|
|
|
|
+ transform: scale(1.1);
|
|
}
|
|
}
|
|
|
|
|
|
.nav-text {
|
|
.nav-text {
|
|
- font-size: 0.95rem;
|
|
|
|
|
|
+ font-size: 1rem;
|
|
|
|
+ font-weight: 500;
|
|
}
|
|
}
|
|
|
|
|
|
// 主内容区域样式
|
|
// 主内容区域样式
|
|
@@ -115,39 +214,75 @@
|
|
// 仪表盘卡片样式
|
|
// 仪表盘卡片样式
|
|
.dashboard-cards {
|
|
.dashboard-cards {
|
|
display: grid;
|
|
display: grid;
|
|
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
|
|
- gap: 1.5rem;
|
|
|
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
|
|
+ gap: 2rem;
|
|
margin-bottom: 2rem;
|
|
margin-bottom: 2rem;
|
|
}
|
|
}
|
|
|
|
|
|
.dashboard-card {
|
|
.dashboard-card {
|
|
- background-color: #fff;
|
|
|
|
- border-radius: 8px;
|
|
|
|
- padding: 1.5rem;
|
|
|
|
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
|
|
- transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
|
|
-}
|
|
|
|
|
|
+ background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
|
|
|
|
+ border-radius: 16px;
|
|
|
|
+ padding: 2rem;
|
|
|
|
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
|
|
|
|
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
+ border: 1px solid rgba(226, 232, 240, 0.5);
|
|
|
|
+ position: relative;
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
|
-.dashboard-card:hover {
|
|
|
|
- transform: translateY(-2px);
|
|
|
|
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
+ &::before {
|
|
|
|
+ content: '';
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 0;
|
|
|
|
+ left: 0;
|
|
|
|
+ right: 0;
|
|
|
|
+ height: 4px;
|
|
|
|
+ background: linear-gradient(90deg, #4f46e5 0%, #7c3aed 100%);
|
|
|
|
+ transform: scaleX(0);
|
|
|
|
+ transition: transform 0.3s ease;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ transform: translateY(-8px);
|
|
|
|
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
|
|
|
|
+
|
|
|
|
+ &::before {
|
|
|
|
+ transform: scaleX(1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.card-icon {
|
|
.card-icon {
|
|
- font-size: 2rem;
|
|
|
|
- margin-bottom: 1rem;
|
|
|
|
|
|
+ font-size: 2.5rem;
|
|
|
|
+ margin-bottom: 1.5rem;
|
|
|
|
+ display: block;
|
|
|
|
+ animation: float 3s ease-in-out infinite;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+@keyframes float {
|
|
|
|
+ 0%, 100% { transform: translateY(0px); }
|
|
|
|
+ 50% { transform: translateY(-5px); }
|
|
}
|
|
}
|
|
|
|
|
|
.card-content h3 {
|
|
.card-content h3 {
|
|
- margin: 0 0 0.5rem 0;
|
|
|
|
- font-size: 1.1rem;
|
|
|
|
- color: #202124;
|
|
|
|
|
|
+ margin: 0 0 0.8rem 0;
|
|
|
|
+ font-size: 1.2rem;
|
|
|
|
+ color: #1e293b;
|
|
|
|
+ font-weight: 600;
|
|
}
|
|
}
|
|
|
|
|
|
.card-content p {
|
|
.card-content p {
|
|
margin: 0;
|
|
margin: 0;
|
|
- color: #5f6368;
|
|
|
|
- font-size: 0.9rem;
|
|
|
|
|
|
+ color: #64748b;
|
|
|
|
+ font-size: 1rem;
|
|
|
|
+ line-height: 1.5;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.click-hint {
|
|
|
|
+ font-size: 0.85rem;
|
|
|
|
+ color: #4f46e5;
|
|
|
|
+ margin-top: 0.8rem;
|
|
|
|
+ font-weight: 500;
|
|
|
|
+ opacity: 0.8;
|
|
}
|
|
}
|
|
|
|
|
|
// 健康建议区域样式
|
|
// 健康建议区域样式
|
|
@@ -185,55 +320,85 @@
|
|
left: 0;
|
|
left: 0;
|
|
right: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
bottom: 0;
|
|
- background-color: rgba(0, 0, 0, 0.5);
|
|
|
|
|
|
+ background: rgba(0, 0, 0, 0.6);
|
|
|
|
+ backdrop-filter: blur(8px);
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: center;
|
|
justify-content: center;
|
|
align-items: center;
|
|
align-items: center;
|
|
z-index: 1000;
|
|
z-index: 1000;
|
|
|
|
+ animation: fadeIn 0.3s ease-out;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+@keyframes fadeIn {
|
|
|
|
+ from { opacity: 0; }
|
|
|
|
+ to { opacity: 1; }
|
|
}
|
|
}
|
|
|
|
|
|
.modal-content {
|
|
.modal-content {
|
|
- background-color: white;
|
|
|
|
- border-radius: 12px;
|
|
|
|
|
|
+ background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
|
|
|
|
+ border-radius: 20px;
|
|
width: 90%;
|
|
width: 90%;
|
|
- max-width: 700px;
|
|
|
|
- max-height: 80vh;
|
|
|
|
|
|
+ max-width: 800px;
|
|
|
|
+ max-height: 85vh;
|
|
overflow-y: auto;
|
|
overflow-y: auto;
|
|
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
|
|
|
|
|
|
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
|
|
|
|
+ animation: slideUp 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
+ border: 1px solid rgba(226, 232, 240, 0.5);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+@keyframes slideUp {
|
|
|
|
+ from {
|
|
|
|
+ opacity: 0;
|
|
|
|
+ transform: translateY(30px) scale(0.95);
|
|
|
|
+ }
|
|
|
|
+ to {
|
|
|
|
+ opacity: 1;
|
|
|
|
+ transform: translateY(0) scale(1);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.modal-header {
|
|
.modal-header {
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
align-items: center;
|
|
- padding: 1.5rem 2rem;
|
|
|
|
- border-bottom: 1px solid #e8eaed;
|
|
|
|
|
|
+ padding: 2rem 2.5rem;
|
|
|
|
+ border-bottom: 1px solid rgba(226, 232, 240, 0.5);
|
|
|
|
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
|
|
|
|
+ border-radius: 20px 20px 0 0;
|
|
}
|
|
}
|
|
|
|
|
|
.modal-header h3 {
|
|
.modal-header h3 {
|
|
margin: 0;
|
|
margin: 0;
|
|
- font-size: 1.3rem;
|
|
|
|
- color: #202124;
|
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
+ color: #1e293b;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ background: linear-gradient(135deg, #1e293b 0%, #4f46e5 100%);
|
|
|
|
+ -webkit-background-clip: text;
|
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
|
+ background-clip: text;
|
|
}
|
|
}
|
|
|
|
|
|
.close-button {
|
|
.close-button {
|
|
- background: none;
|
|
|
|
- border: none;
|
|
|
|
- font-size: 1.5rem;
|
|
|
|
|
|
+ background: rgba(239, 68, 68, 0.1);
|
|
|
|
+ border: 1px solid rgba(239, 68, 68, 0.2);
|
|
|
|
+ font-size: 1.2rem;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
- color: #5f6368;
|
|
|
|
|
|
+ color: #ef4444;
|
|
padding: 0;
|
|
padding: 0;
|
|
- width: 30px;
|
|
|
|
- height: 30px;
|
|
|
|
|
|
+ width: 36px;
|
|
|
|
+ height: 36px;
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
justify-content: center;
|
|
justify-content: center;
|
|
border-radius: 50%;
|
|
border-radius: 50%;
|
|
- transition: background-color 0.2s ease;
|
|
|
|
-}
|
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
|
-.close-button:hover {
|
|
|
|
- background-color: #f5f7fa;
|
|
|
|
|
|
+ &:hover {
|
|
|
|
+ background: rgba(239, 68, 68, 0.2);
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.modal-body {
|
|
.modal-body {
|