/* Custom styles for EmployeeHub Pro */ :root { --primary-color: #6366f1; --secondary-color: #8b5cf6; --success-color: #10b981; --warning-color: #f59e0b; --danger-color: #ef4444; --dark-color: #1f2937; --light-color: #f3f4f6; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background-color: var(--light-color); } /* Scrollbar styles */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } ::-webkit-scrollbar-thumb { background: var(--primary-color); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: var(--secondary-color); } /* Animation classes */ @keyframes slideInUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .animate-slide-in { animation: slideInUp 0.3s ease-out; } /* Pulse animation for notifications */ @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7); } 70% { box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); } 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); } } .pulse { animation: pulse 2s infinite; } /* Hover effects */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15); } /* Gradient text */ .gradient-text { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Loading spinner */ .spinner { border: 2px solid #f3f3f3; border-top: 2px solid var(--primary-color); border-radius: 50%; width: 20px; height: 20px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Excel table styles */ .excel-cell { min-width: 100px; position: relative; transition: background-color 0.2s ease; } .excel-cell:hover { background-color: #f9fafb; } .excel-cell.editing { background-color: #fef3c7 !important; outline: 2px solid var(--primary-color); } .excel-cell input { width: 100%; border: none; background: transparent; padding: 8px; font-family: inherit; font-size: 14px; } .excel-header { background: linear-gradient(to bottom, #f8fafc, #f1f5f9); font-weight: 600; color: #374151; position: sticky; top: 0; z-index: 10; } /* Status badges */ .status-badge { padding: 4px 12px; border-radius: 12px; font-size: 12px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; } .status-onsite { background-color: #d1fae5; color: #065f46; } .status-remote { background-color: #ddd6fe; color: #4c1d95; } .status-vacation { background-color: #fed7aa; color: #92400e; } .status-leave { background-color: #fee2e2; color: #991b1b; } /* Upload area styles */ .upload-area { border: 2px dashed #cbd5e1; transition: all 0.3s ease; } .upload-area:hover { border-color: var(--primary-color); background-color: #f8fafc; } .upload-area.dragover { border-color: var(--primary-color); background-color: #eef2ff; } /* Modal styles */ .modal-backdrop { backdrop-filter: blur(4px); } /* Responsive adjustments */ @media (max-width: 768px) { .mobile-hidden { display: none; } .mobile-full { width: 100% !important; } } /* Form input focus effects */ .form-input { transition: all 0.3s ease; } .form-input:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } /* Table row hover */ .table-row-hover { transition: background-color 0.2s ease; } .table-row-hover:hover { background-color: #f9fafb; } /* Custom checkbox */ .custom-checkbox { width: 20px; height: 20px; cursor: pointer; accent-color: var(--primary-color); } /* Floating action button */ .fab { position: fixed; bottom: 2rem; right: 2rem; width: 56px; height: 56px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); cursor: pointer; transition: all 0.3s ease; z-index: 40; } .fab:hover { transform: scale(1.1); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2); } /* Toast notification */ .toast { position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%); padding: 1rem 2rem; border-radius: 8px; color: white; font-weight: 500; z-index: 50; animation: slideInUp 0.3s ease-out; } .toast-success { background-color: var(--success-color); } .toast-error { background-color: var(--danger-color); } .toast-warning { background-color: var(--warning-color); } /* Data Status Indicators */ .data-status { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; } .status-active { background-color: #d1fae5; color: #065f46; } .status-updating { background-color: #fed7aa; color: #92400e; } .status-protected { background-color: #fee2e2; color: #991b1b; } .status-settings { background-color: #f3f4f6; color: #374151; } /* Integration Cards */ .integration-card { background: white; border-radius: 0.75rem; padding: 1.5rem; box-shadow: 0 10px 25px rgba(0,0,0,0.1); transition: all 0.3s ease; position: relative; overflow: hidden; } .integration-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); } .integration-card:hover { transform: translateY(-3px); box-shadow: 0 20px 40px rgba(0,0,0,0.15); } /* Upload Zone */ .upload-zone { border: 2px dashed #cbd5e1; border-radius: 0.5rem; padding: 3rem; text-align: center; transition: all 0.3s ease; cursor: pointer; } .upload-zone:hover { border-color: var(--primary-color); background-color: #f8fafc; } .upload-zone.dragover { border-color: var(--primary-color); background-color: #eef2ff; } /* Report Template Card */ .report-template-card { background: white; border-radius: 0.75rem; padding: 1.5rem; box-shadow: 0 10px 25px rgba(0,0,0,0.1); transition: all 0.3s ease; position: relative; } .report-template-card:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(0,0,0,0.15); } .report-progress { height: 0.5rem; background-color: #e5e7eb; border-radius: 0.25rem; overflow: hidden; margin-top: 0.5rem; } .report-progress-fill { height: 100%; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); transition: width 0.3s ease; } /* Integration Status */ .integration-status { display: flex; align-items: center; justify-content: space-between; padding: 1rem; border-radius: 0.5rem; transition: all 0.2s ease; } .integration-status:hover { background-color: #f9fafb; } .status-icon { width: 1.25rem; height: 1.25rem; margin-right: 0.75rem; flex-shrink: 0; } /* Report Type Badge */ .report-type-badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; } .type-monthly { background-color: #dbeafe; color: #1e40af; } .type-quarterly { background-color: #e9d5ff; color: #6b21a8; } .type-yearly { background-color: #fed7aa; color: #92400e; } .type-custom { background-color: #e5e7eb; color: #374151; } /* Data Preview Table */ .preview-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; } .preview-table th { background-color: #f8fafc; padding: 0.75rem; text-align: left; font-weight: 600; color: #475569; border-bottom: 1px solid #e2e8f0; } .preview-table td { padding: 0.75rem; border-bottom: 1px solid #e2e8f0; } .preview-table tr:hover { background-color: #f8fafc; } /* Key Management */ .key-item { display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1rem; border: 1px solid #e5e7eb; border-radius: 0.5rem; transition: all 0.2s ease; } .key-item:hover { border-color: #d1d5db; background-color: #f9fafb; } .key-info { flex: 1; } .key-name { font-weight: 500; font-size: 0.875rem; } .key-description { color: #6b7280; font-size: 0.75rem; } /* Configuration Form */ .config-form { display: grid; gap: 1rem; } .config-group { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; } .config-label { display: block; font-size: 0.875rem; font-weight: 500; color: #374151; margin-bottom: 0.25rem; } .config-input { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.875rem; transition: all 0.2s ease; } .config-input:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } /* Integration Guide Steps */ .guide-step { padding: 1rem; border-radius: 0.5rem; margin-bottom: 1rem; } .guide-step-blue { background-color: #eff6ff; border-left: 4px solid #3b82f6; } .guide-step-green { background-color: #f0fdf4; border-left: 4px solid #22c55e; } .guide-step-purple { background-color: #faf5ff; border-left: 4px solid #a855f7; } .guide-step-orange { background-color: #fff7ed; border-left: 4px solid #ea580c; } /* Progress bar */ .progress-bar { height: 8px; background-color: #e5e7eb; border-radius: 4px; overflow: hidden; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); transition: width 0.3s ease; } /* Tooltip */ .tooltip { position: relative; } .tooltip::after { content: attr(data-tooltip); position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); background-color: var(--dark-color); color: white; padding: 0.5rem 0.75rem; border-radius: 6px; font-size: 0.875rem; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .tooltip:hover::after { opacity: 1; }