diff --git a/web-ui/css/modern-dashboard.css b/web-ui/css/modern-dashboard.css index 94c1c78..90a32ee 100644 --- a/web-ui/css/modern-dashboard.css +++ b/web-ui/css/modern-dashboard.css @@ -411,19 +411,20 @@ display: flex; flex-direction: column; align-items: center; - gap: var(--space-3); - padding: var(--space-6); - background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-tertiary) 100%); - border-radius: var(--radius-xl); + gap: var(--space-4); + padding: var(--space-8); + background: linear-gradient(145deg, #ffffff 0%, #f8fafc 50%, #f1f5f9 100%); + border-radius: var(--radius-2xl); text-decoration: none; color: var(--text-primary); - transition: var(--transition-normal); - border: 1px solid var(--border-light); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + border: 2px solid transparent; position: relative; overflow: hidden; text-align: center; - min-height: 160px; + min-height: 180px; justify-content: center; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .quick-action-card::before { @@ -432,41 +433,91 @@ top: 0; left: 0; right: 0; - height: 3px; - background: linear-gradient(90deg, var(--primary-500), var(--primary-600)); + height: 4px; + background: linear-gradient(90deg, #3b82f6, #8b5cf6, #06b6d4, #10b981); + background-size: 300% 100%; + animation: gradientShift 3s ease-in-out infinite; opacity: 0; - transition: var(--transition-normal); + transition: opacity 0.3s ease; } -.quick-action-card:hover::before { +.quick-action-card::after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: radial-gradient(circle at 50% 50%, rgba(59, 130, 246, 0.05) 0%, transparent 70%); + opacity: 0; + transition: opacity 0.3s ease; +} + +@keyframes gradientShift { + 0%, 100% { background-position: 0% 50%; } + 50% { background-position: 100% 50%; } +} + +.quick-action-card:hover::before, +.quick-action-card:hover::after { opacity: 1; } .quick-action-card:hover { - background: linear-gradient(135deg, var(--bg-primary) 0%, var(--primary-50) 100%); - box-shadow: var(--shadow-lg); - transform: translateY(-4px); - border-color: var(--primary-200); + background: linear-gradient(145deg, #ffffff 0%, #f0f9ff 50%, #e0f2fe 100%); + box-shadow: + 0 20px 25px -5px rgba(0, 0, 0, 0.1), + 0 10px 10px -5px rgba(0, 0, 0, 0.04), + 0 0 0 1px rgba(59, 130, 246, 0.1); + transform: translateY(-8px) scale(1.02); + border-color: rgba(59, 130, 246, 0.2); } .action-icon-large { - width: 64px; - height: 64px; - background: linear-gradient(135deg, var(--primary-100), var(--primary-200)); + width: 80px; + height: 80px; + background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 50%, #93c5fd 100%); border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; - font-size: var(--text-3xl); + font-size: 2.5rem; flex-shrink: 0; - transition: var(--transition-normal); - box-shadow: var(--shadow-sm); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -1px rgba(0, 0, 0, 0.06), + inset 0 1px 0 rgba(255, 255, 255, 0.1); + position: relative; + overflow: hidden; +} + +.action-icon-large::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(147, 197, 253, 0.1) 100%); + border-radius: inherit; + opacity: 0; + transition: opacity 0.3s ease; } .quick-action-card:hover .action-icon-large { - background: linear-gradient(135deg, var(--primary-200), var(--primary-300)); - transform: scale(1.1); - box-shadow: var(--shadow-md); + background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 50%, #1e40af 100%); + transform: scale(1.15) rotate(5deg); + box-shadow: + 0 10px 15px -3px rgba(0, 0, 0, 0.1), + 0 4px 6px -2px rgba(0, 0, 0, 0.05), + 0 0 0 3px rgba(59, 130, 246, 0.1), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + color: white; +} + +.quick-action-card:hover .action-icon-large::before { + opacity: 1; } .action-content { @@ -477,34 +528,55 @@ } .action-content h3 { - font-size: var(--text-base); - font-weight: var(--font-semibold); + font-size: 1.125rem; + font-weight: 700; margin: 0; - color: var(--text-primary); + color: #1f2937; line-height: 1.3; + transition: color 0.3s ease; } .action-content p { - font-size: var(--text-sm); - color: var(--text-secondary); + font-size: 0.875rem; + color: #6b7280; margin: 0; - line-height: 1.4; + line-height: 1.5; + transition: color 0.3s ease; +} + +.quick-action-card:hover .action-content h3 { + color: #1e40af; +} + +.quick-action-card:hover .action-content p { + color: #374151; } .action-arrow { position: absolute; - top: var(--space-3); - right: var(--space-3); - font-size: var(--text-lg); - color: var(--primary-500); + top: var(--space-4); + right: var(--space-4); + width: 32px; + height: 32px; + background: linear-gradient(135deg, #f3f4f6, #e5e7eb); + border-radius: var(--radius-full); + display: flex; + align-items: center; + justify-content: center; + font-size: 1rem; + color: #6b7280; opacity: 0; - transition: var(--transition-normal); - transform: translateX(-10px); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + transform: translateX(-10px) scale(0.8); + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.1); } .quick-action-card:hover .action-arrow { opacity: 1; - transform: translateX(0); + transform: translateX(0) scale(1); + background: linear-gradient(135deg, #3b82f6, #1d4ed8); + color: white; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); } .admin-only { @@ -528,30 +600,42 @@ .quick-actions-grid-full, .quick-actions-grid { grid-template-columns: 1fr; + gap: var(--space-3); } .quick-action-card { - min-height: 120px; - padding: var(--space-4); + min-height: 140px; + padding: var(--space-6); + gap: var(--space-3); } .action-icon-large { - width: 48px; - height: 48px; - font-size: var(--text-2xl); + width: 60px; + height: 60px; + font-size: 2rem; + } + + .quick-action-card:hover .action-icon-large { + transform: scale(1.1) rotate(3deg); } .action-content h3 { - font-size: var(--text-sm); + font-size: 1rem; } .action-content p { - font-size: var(--text-xs); + font-size: 0.8rem; } .work-status-container-enhanced { min-height: 300px; } + + .action-arrow { + width: 28px; + height: 28px; + font-size: 0.875rem; + } } /* ========== 작업자 섹션 ========== */