Spaces:
Sleeping
Sleeping
| /* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| LeadFlow Dashboard β Claymorphism Design v1 | |
| Soft, Extruded, Plastic-like UI with Pastel Palette | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* ββββββββββββ CSS Variables / Design Tokens ββββββββββββ */ | |
| :root { | |
| /* Backgrounds */ | |
| --bg-primary: #F0EBE3; | |
| --bg-secondary: #F7F3EE; | |
| --bg-tertiary: #EDE7DD; | |
| --bg-card: #F5F0E8; | |
| --bg-surface: #F7F3EE; | |
| --bg-sidebar: #E8E0D4; | |
| --bg-input: #EDE8E0; | |
| --bg-input-focus: #E8E2D8; | |
| --bg-hover: rgba(195, 177, 225, 0.12); | |
| --bg-active: rgba(195, 177, 225, 0.2); | |
| /* Borders */ | |
| --border-subtle: rgba(0, 0, 0, 0.04); | |
| --border-medium: rgba(0, 0, 0, 0.08); | |
| --border-focus: rgba(195, 177, 225, 0.6); | |
| /* Text */ | |
| --text-primary: #3D3535; | |
| --text-secondary: #6B5E5E; | |
| --text-muted: #9E8F8F; | |
| --text-link: #7B68AE; | |
| /* Accent β Lavender */ | |
| --accent-primary: #C3B1E1; | |
| --accent-secondary: #A78BCA; | |
| --accent-tertiary: #8B6FB0; | |
| --accent-glow: rgba(195, 177, 225, 0.25); | |
| --accent-gradient: linear-gradient(135deg, #C3B1E1, #A78BCA, #D4A5E5); | |
| /* Status Colors β Pastel */ | |
| --status-new: #7BB8D9; | |
| --status-new-bg: rgba(167, 199, 231, 0.25); | |
| --status-new-surface: #D6EAF5; | |
| --status-contacted: #B39DDB; | |
| --status-contacted-bg: rgba(179, 157, 219, 0.2); | |
| --status-contacted-surface: #E8DEFA; | |
| --status-replied: #E6C06B; | |
| --status-replied-bg: rgba(255, 229, 160, 0.3); | |
| --status-replied-surface: #FFF3D6; | |
| --status-closed: #7CC9A0; | |
| --status-closed-bg: rgba(168, 230, 207, 0.25); | |
| --status-closed-surface: #D2F5E3; | |
| /* Semantic Colors */ | |
| --success: #7CC9A0; | |
| --success-bg: rgba(168, 230, 207, 0.25); | |
| --danger: #E88F8F; | |
| --danger-bg: rgba(255, 183, 178, 0.2); | |
| --warning: #E6C06B; | |
| --whatsapp: #4CAF76; | |
| --whatsapp-bg: rgba(76, 175, 118, 0.12); | |
| --whatsapp-surface: #D5F0E0; | |
| /* Radii β Generous clay curves */ | |
| --radius-xs: 10px; | |
| --radius-sm: 14px; | |
| --radius-md: 18px; | |
| --radius-lg: 22px; | |
| --radius-xl: 26px; | |
| --radius-2xl: 30px; | |
| --radius-full: 9999px; | |
| /* Clay Shadows β The magic formula */ | |
| --clay-shadow: | |
| 8px 8px 16px rgba(0, 0, 0, 0.07), | |
| -6px -6px 14px rgba(255, 255, 255, 0.7), | |
| inset 0 2px 3px rgba(255, 255, 255, 0.6); | |
| --clay-shadow-hover: | |
| 12px 12px 24px rgba(0, 0, 0, 0.09), | |
| -8px -8px 18px rgba(255, 255, 255, 0.85), | |
| inset 0 2px 4px rgba(255, 255, 255, 0.7); | |
| --clay-shadow-active: | |
| 4px 4px 8px rgba(0, 0, 0, 0.05), | |
| -3px -3px 6px rgba(255, 255, 255, 0.5), | |
| inset 0 1px 2px rgba(255, 255, 255, 0.4); | |
| --clay-shadow-sm: | |
| 5px 5px 10px rgba(0, 0, 0, 0.05), | |
| -4px -4px 8px rgba(255, 255, 255, 0.6), | |
| inset 0 1px 2px rgba(255, 255, 255, 0.5); | |
| --clay-inset: | |
| inset 4px 4px 8px rgba(0, 0, 0, 0.06), | |
| inset -3px -3px 6px rgba(255, 255, 255, 0.6); | |
| --clay-inset-focus: | |
| inset 5px 5px 10px rgba(0, 0, 0, 0.07), | |
| inset -4px -4px 8px rgba(255, 255, 255, 0.7), | |
| 0 0 0 3px rgba(195, 177, 225, 0.25); | |
| /* Legacy shadow compat */ | |
| --shadow-sm: var(--clay-shadow-sm); | |
| --shadow-md: var(--clay-shadow); | |
| --shadow-lg: var(--clay-shadow-hover); | |
| --shadow-xl: 16px 16px 32px rgba(0, 0, 0, 0.1), -10px -10px 24px rgba(255, 255, 255, 0.8); | |
| --shadow-inset: var(--clay-inset); | |
| /* Transitions */ | |
| --transition-fast: 180ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-base: 280ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-spring: 500ms cubic-bezier(0.34, 1.56, 0.64, 1); | |
| /* Layout */ | |
| --sidebar-width: 240px; | |
| --sidebar-collapsed-width: 64px; | |
| --top-bar-height: 56px; | |
| } | |
| /* ββββββββββββ Reset & Base ββββββββββββ */ | |
| *, *::before, *::after { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| html { | |
| font-size: 16px; | |
| scroll-behavior: smooth; | |
| } | |
| body { | |
| font-family: 'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| min-height: 100vh; | |
| overflow-x: hidden ; | |
| line-height: 1.6; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| /* Soft warm gradient background */ | |
| body::before { | |
| content: ''; | |
| position: fixed; | |
| top: 0; left: 0; right: 0; bottom: 0; | |
| background: | |
| radial-gradient(ellipse 70% 50% at 10% 10%, rgba(195, 177, 225, 0.12), transparent), | |
| radial-gradient(ellipse 50% 40% at 90% 90%, rgba(168, 230, 207, 0.1), transparent), | |
| radial-gradient(ellipse 60% 50% at 50% 50%, rgba(255, 229, 160, 0.08), transparent); | |
| pointer-events: none; | |
| z-index: 0; | |
| } | |
| /* Remove dark noise texture β claymorphism uses clean surfaces */ | |
| body::after { | |
| display: none; | |
| } | |
| /* ββββββββββββ Scrollbar ββββββββββββ */ | |
| ::-webkit-scrollbar { width: 8px; height: 8px; } | |
| ::-webkit-scrollbar-track { background: rgba(0,0,0,0.02); border-radius: 4px; } | |
| ::-webkit-scrollbar-thumb { | |
| background: rgba(195, 177, 225, 0.35); | |
| border-radius: 8px; | |
| border: 2px solid var(--bg-primary); | |
| } | |
| ::-webkit-scrollbar-thumb:hover { background: rgba(195, 177, 225, 0.55); } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| SIDEBAR β Clay Panel | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .sidebar { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: var(--sidebar-width); | |
| height: 100vh; | |
| background: var(--bg-sidebar); | |
| border-right: none; | |
| box-shadow: | |
| 6px 0 16px rgba(0, 0, 0, 0.05), | |
| inset -1px 0 0 rgba(255, 255, 255, 0.5), | |
| inset 0 2px 4px rgba(255, 255, 255, 0.4); | |
| z-index: 100; | |
| display: flex; | |
| flex-direction: column; | |
| transition: width var(--transition-base), transform var(--transition-base); | |
| overflow: hidden; | |
| } | |
| .sidebar.collapsed { | |
| width: var(--sidebar-collapsed-width); | |
| } | |
| .sidebar.collapsed .sidebar-logo-text, | |
| .sidebar.collapsed .sidebar-link span, | |
| .sidebar.collapsed .sidebar-kbd-hint span, | |
| .sidebar.collapsed .sidebar-kbd-hint kbd { | |
| opacity: 0; | |
| pointer-events: none; | |
| width: 0; | |
| overflow: hidden; | |
| } | |
| .sidebar-brand { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 18px 16px; | |
| border-bottom: 1px solid rgba(0, 0, 0, 0.05); | |
| min-height: 60px; | |
| } | |
| .sidebar-logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| overflow: hidden; | |
| } | |
| .sidebar-logo-icon { | |
| width: 40px; | |
| height: 40px; | |
| background: var(--accent-gradient); | |
| border-radius: var(--radius-sm); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 18px; | |
| flex-shrink: 0; | |
| box-shadow: var(--clay-shadow-sm); | |
| position: relative; | |
| } | |
| .sidebar-logo-icon::after { | |
| content: ''; | |
| position: absolute; | |
| inset: -4px; | |
| border-radius: var(--radius-md); | |
| border: 2px solid var(--accent-primary); | |
| opacity: 0; | |
| animation: logoPulse 4s ease-in-out infinite; | |
| } | |
| .sidebar-logo-text { | |
| font-size: 1.2rem; | |
| font-weight: 800; | |
| letter-spacing: -0.3px; | |
| color: var(--accent-tertiary); | |
| white-space: nowrap; | |
| transition: opacity var(--transition-fast); | |
| } | |
| .sidebar-toggle { | |
| background: var(--bg-card); | |
| border: none; | |
| color: var(--text-muted); | |
| cursor: pointer; | |
| padding: 8px; | |
| border-radius: var(--radius-xs); | |
| transition: var(--transition-fast); | |
| display: flex; | |
| align-items: center; | |
| flex-shrink: 0; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .sidebar-toggle:hover { | |
| background: var(--bg-secondary); | |
| color: var(--text-primary); | |
| transform: translateY(-1px); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .sidebar-toggle:active { | |
| transform: translateY(1px); | |
| box-shadow: var(--clay-shadow-active); | |
| } | |
| .sidebar-menu { | |
| flex: 1; | |
| padding: 14px 10px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| overflow-y: auto; | |
| } | |
| .sidebar-link { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 11px 14px; | |
| border-radius: var(--radius-sm); | |
| color: var(--text-secondary); | |
| text-decoration: none; | |
| font-size: 0.87rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| white-space: nowrap; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .sidebar-link svg { | |
| flex-shrink: 0; | |
| } | |
| .sidebar-link:hover { | |
| background: var(--bg-card); | |
| color: var(--text-primary); | |
| box-shadow: var(--clay-shadow-sm); | |
| transform: translateX(2px); | |
| } | |
| .sidebar-link.active { | |
| background: var(--bg-card); | |
| color: var(--accent-tertiary); | |
| box-shadow: var(--clay-shadow-sm); | |
| font-weight: 600; | |
| } | |
| .sidebar-link.active::before { | |
| content: ''; | |
| position: absolute; | |
| left: 0; | |
| top: 8px; | |
| bottom: 8px; | |
| width: 4px; | |
| border-radius: 0 4px 4px 0; | |
| background: var(--accent-gradient); | |
| } | |
| .sidebar-footer { | |
| padding: 12px 10px; | |
| border-top: 1px solid rgba(0, 0, 0, 0.05); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| } | |
| .sidebar-divider { | |
| height: 1px; | |
| background: rgba(0, 0, 0, 0.05); | |
| margin: 4px 8px; | |
| } | |
| .sidebar-kbd-hint { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 8px 14px; | |
| font-size: 0.78rem; | |
| color: var(--text-muted); | |
| cursor: pointer; | |
| border-radius: var(--radius-xs); | |
| transition: var(--transition-fast); | |
| } | |
| .sidebar-kbd-hint:hover { | |
| background: var(--bg-card); | |
| color: var(--text-secondary); | |
| } | |
| .sidebar-kbd-hint kbd { | |
| background: var(--bg-card); | |
| padding: 3px 8px; | |
| border-radius: 8px; | |
| font-size: 0.72rem; | |
| font-family: inherit; | |
| border: none; | |
| box-shadow: var(--clay-shadow-sm); | |
| color: var(--text-secondary); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| MAIN CONTENT | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .main-content { | |
| margin-left: var(--sidebar-width); | |
| min-height: 100vh; | |
| position: relative; | |
| z-index: 1; | |
| padding: 0 28px 40px; | |
| transition: margin-left var(--transition-base); | |
| } | |
| .sidebar.collapsed ~ .main-content { | |
| margin-left: var(--sidebar-collapsed-width); | |
| } | |
| /* ββββββββββββ Top Bar β Floating Clay + Glass Combo ββββββββββββ */ | |
| .top-bar { | |
| position: sticky; | |
| top: 0; | |
| z-index: 50; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 12px 0; | |
| margin-bottom: 24px; | |
| background: rgba(240, 235, 227, 0.75); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| } | |
| .top-bar-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .mobile-menu-btn { | |
| display: none; | |
| background: var(--bg-card); | |
| border: none; | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| padding: 8px; | |
| border-radius: var(--radius-xs); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .breadcrumb { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 0.85rem; | |
| color: var(--text-muted); | |
| } | |
| .breadcrumb-icon { | |
| font-size: 1rem; | |
| } | |
| .breadcrumb-sep { | |
| color: var(--text-muted); | |
| opacity: 0.4; | |
| } | |
| .breadcrumb-current { | |
| color: var(--text-secondary); | |
| font-weight: 600; | |
| } | |
| .top-bar-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| } | |
| .live-clock { | |
| font-size: 0.82rem; | |
| color: var(--text-muted); | |
| font-variant-numeric: tabular-nums; | |
| font-weight: 500; | |
| } | |
| .connection-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| padding: 7px 14px; | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-full); | |
| font-size: 0.76rem; | |
| color: var(--text-muted); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .connection-dot { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: var(--success); | |
| box-shadow: 0 0 8px rgba(124, 201, 160, 0.5); | |
| animation: statusPulse 2s ease-in-out infinite; | |
| } | |
| .connection-status.disconnected .connection-dot { | |
| background: var(--danger); | |
| box-shadow: 0 0 8px rgba(232, 143, 143, 0.5); | |
| } | |
| .connection-text { | |
| letter-spacing: 0.3px; | |
| font-weight: 500; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| STATS SECTION β Clay Tiles | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .stats-grid { | |
| display: grid; | |
| grid-template-columns: repeat(5, 1fr); | |
| gap: 18px; | |
| margin-bottom: 24px; | |
| } | |
| .stat-card { | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-xl); | |
| padding: 22px 24px; | |
| position: relative; | |
| overflow: hidden; | |
| cursor: default; | |
| transition: all var(--transition-base); | |
| box-shadow: var(--clay-shadow); | |
| animation: statPop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) backwards; | |
| } | |
| .stat-card:nth-child(1) { animation-delay: 0.05s; } | |
| .stat-card:nth-child(2) { animation-delay: 0.1s; } | |
| .stat-card:nth-child(3) { animation-delay: 0.15s; } | |
| .stat-card:nth-child(4) { animation-delay: 0.2s; } | |
| .stat-card:nth-child(5) { animation-delay: 0.25s; } | |
| .stat-card:hover { | |
| transform: translateY(-4px) scale(1.01); | |
| box-shadow: var(--clay-shadow-hover); | |
| } | |
| .stat-card-top { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 14px; | |
| } | |
| .stat-card .stat-icon { | |
| width: 44px; | |
| height: 44px; | |
| border-radius: var(--radius-md); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 18px; | |
| transition: var(--transition-base); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .stat-card:hover .stat-icon { | |
| transform: scale(1.1) rotate(-3deg); | |
| } | |
| .stat-card .stat-trend { | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| padding: 4px 10px; | |
| border-radius: var(--radius-full); | |
| display: flex; | |
| align-items: center; | |
| gap: 3px; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .stat-card .stat-value { | |
| font-size: 2.2rem; | |
| font-weight: 800; | |
| line-height: 1; | |
| margin-bottom: 4px; | |
| letter-spacing: -1px; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .stat-card .stat-label { | |
| font-size: 0.72rem; | |
| color: var(--text-muted); | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| } | |
| /* Stat card color variants β soft pastel tints */ | |
| .stat-card.total { background: linear-gradient(135deg, #F0EAF7, #F5F0E8); } | |
| .stat-card.total .stat-icon { background: rgba(195, 177, 225, 0.25); color: var(--accent-tertiary); } | |
| .stat-card.total .stat-value { color: var(--accent-tertiary); } | |
| .stat-card.total .stat-trend { background: rgba(195, 177, 225, 0.2); color: var(--accent-tertiary); } | |
| .stat-card.new-stat { background: linear-gradient(135deg, #E5F2F8, #F5F0E8); } | |
| .stat-card.new-stat .stat-icon { background: var(--status-new-bg); color: var(--status-new); } | |
| .stat-card.new-stat .stat-value { color: var(--status-new); } | |
| .stat-card.contacted { background: linear-gradient(135deg, #EDE4F7, #F5F0E8); } | |
| .stat-card.contacted .stat-icon { background: var(--status-contacted-bg); color: var(--status-contacted); } | |
| .stat-card.contacted .stat-value { color: var(--status-contacted); } | |
| .stat-card.replied { background: linear-gradient(135deg, #FFF5E0, #F5F0E8); } | |
| .stat-card.replied .stat-icon { background: var(--status-replied-bg); color: var(--status-replied); } | |
| .stat-card.replied .stat-value { color: var(--status-replied); } | |
| .stat-card.closed { background: linear-gradient(135deg, #E5F5EC, #F5F0E8); } | |
| .stat-card.closed .stat-icon { background: var(--status-closed-bg); color: var(--status-closed); } | |
| .stat-card.closed .stat-value { color: var(--status-closed); } | |
| /* Progress bar under each stat card */ | |
| .stat-bar { | |
| margin-top: 16px; | |
| height: 6px; | |
| background: rgba(0, 0, 0, 0.04); | |
| border-radius: var(--radius-full); | |
| overflow: hidden; | |
| box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.04), inset -1px -1px 2px rgba(255, 255, 255, 0.5); | |
| } | |
| .stat-bar-fill { | |
| height: 100%; | |
| border-radius: var(--radius-full); | |
| transition: width 1s cubic-bezier(0.4, 0, 0.2, 1); | |
| min-width: 0; | |
| } | |
| .stat-card.total .stat-bar-fill { background: var(--accent-gradient); } | |
| .stat-card.new-stat .stat-bar-fill { background: linear-gradient(90deg, rgba(123, 184, 217, 0.4), var(--status-new)); } | |
| .stat-card.contacted .stat-bar-fill { background: linear-gradient(90deg, rgba(179, 157, 219, 0.4), var(--status-contacted)); } | |
| .stat-card.replied .stat-bar-fill { background: linear-gradient(90deg, rgba(230, 192, 107, 0.4), var(--status-replied)); } | |
| .stat-card.closed .stat-bar-fill { background: linear-gradient(90deg, rgba(124, 201, 160, 0.4), var(--status-closed)); } | |
| /* Decorative glow β subtle pastel circle */ | |
| .stat-card::after { | |
| content: ''; | |
| position: absolute; | |
| top: -20px; right: -20px; | |
| width: 90px; height: 90px; | |
| border-radius: 50%; | |
| filter: blur(40px); | |
| opacity: 0.15; | |
| pointer-events: none; | |
| transition: opacity var(--transition-base); | |
| } | |
| .stat-card:hover::after { opacity: 0.25; } | |
| .stat-card.total::after { background: var(--accent-primary); } | |
| .stat-card.new-stat::after { background: var(--status-new); } | |
| .stat-card.contacted::after { background: var(--status-contacted); } | |
| .stat-card.replied::after { background: var(--status-replied); } | |
| .stat-card.closed::after { background: var(--status-closed); } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| CONVERSION FUNNEL | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .funnel-panel { | |
| margin-bottom: 24px; | |
| } | |
| .funnel-legend { | |
| display: flex; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| } | |
| .funnel-legend-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 0.78rem; | |
| color: var(--text-muted); | |
| font-weight: 500; | |
| } | |
| .funnel-legend-item .dot { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.8); | |
| } | |
| .dot.new { background: var(--status-new); } | |
| .dot.contacted { background: var(--status-contacted); } | |
| .dot.replied { background: var(--status-replied); } | |
| .dot.closed { background: var(--status-closed); } | |
| .funnel-bars { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 14px; | |
| margin-top: 10px; | |
| } | |
| .funnel-step { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| } | |
| .funnel-bar-track { | |
| flex: 1; | |
| height: 32px; | |
| background: var(--bg-input); | |
| border-radius: var(--radius-sm); | |
| overflow: hidden; | |
| position: relative; | |
| box-shadow: inset 3px 3px 6px rgba(0, 0, 0, 0.04), inset -2px -2px 4px rgba(255, 255, 255, 0.5); | |
| } | |
| .funnel-bar-fill { | |
| height: 100%; | |
| border-radius: var(--radius-sm); | |
| transition: width 1s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| min-width: 0; | |
| } | |
| .funnel-bar-fill.new { background: linear-gradient(90deg, var(--status-new-surface), var(--status-new)); } | |
| .funnel-bar-fill.contacted { background: linear-gradient(90deg, var(--status-contacted-surface), var(--status-contacted)); } | |
| .funnel-bar-fill.replied { background: linear-gradient(90deg, var(--status-replied-surface), var(--status-replied)); } | |
| .funnel-bar-fill.closed { background: linear-gradient(90deg, var(--status-closed-surface), var(--status-closed)); } | |
| .funnel-step-info { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: flex-end; | |
| min-width: 80px; | |
| } | |
| .funnel-step-label { | |
| font-size: 0.72rem; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| font-weight: 600; | |
| } | |
| .funnel-step-value { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| font-variant-numeric: tabular-nums; | |
| color: var(--text-primary); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| SECTION PANELS β Clay Cards | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .panel { | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-xl); | |
| padding: 24px 28px; | |
| margin-bottom: 24px; | |
| animation: panelReveal 0.6s cubic-bezier(0.16, 1, 0.3, 1) backwards; | |
| box-shadow: var(--clay-shadow); | |
| position: relative; | |
| } | |
| .panel:nth-of-type(1) { animation-delay: 0.1s; } | |
| .panel:nth-of-type(2) { animation-delay: 0.15s; } | |
| .panel:nth-of-type(3) { animation-delay: 0.2s; } | |
| .panel:nth-of-type(4) { animation-delay: 0.25s; } | |
| .panel-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 20px; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| } | |
| .panel-title { | |
| font-size: 1.05rem; | |
| font-weight: 700; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| letter-spacing: -0.2px; | |
| color: var(--text-primary); | |
| } | |
| .panel-title svg { | |
| opacity: 0.5; | |
| color: var(--accent-tertiary); | |
| } | |
| /* Collapsible panels */ | |
| .collapsible-panel .panel-header.clickable { | |
| cursor: pointer; | |
| margin-bottom: 0; | |
| transition: margin-bottom var(--transition-base); | |
| } | |
| .collapsible-panel.expanded .panel-header.clickable { | |
| margin-bottom: 20px; | |
| } | |
| .panel-collapse-icon { | |
| color: var(--text-muted); | |
| transition: transform var(--transition-base); | |
| display: flex; | |
| background: var(--bg-input); | |
| padding: 6px; | |
| border-radius: var(--radius-xs); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .collapsible-panel.expanded .panel-collapse-icon { | |
| transform: rotate(180deg); | |
| } | |
| .panel-collapsible-body { | |
| max-height: 0; | |
| overflow: hidden; | |
| transition: max-height var(--transition-slow), opacity var(--transition-base); | |
| opacity: 0; | |
| } | |
| .collapsible-panel.expanded .panel-collapsible-body { | |
| max-height: 600px; | |
| opacity: 1; | |
| } | |
| .lead-count-badge { | |
| background: var(--accent-glow); | |
| color: var(--accent-tertiary); | |
| padding: 3px 12px; | |
| border-radius: var(--radius-full); | |
| font-size: 0.76rem; | |
| font-weight: 700; | |
| letter-spacing: 0.3px; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| SCRAPER SECTION | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .scraper-form { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| } | |
| .form-row { | |
| display: flex; | |
| gap: 14px; | |
| flex-wrap: wrap; | |
| align-items: flex-end; | |
| } | |
| .form-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 7px; | |
| flex: 1; | |
| min-width: 180px; | |
| } | |
| .form-group label { | |
| font-size: 0.72rem; | |
| color: var(--text-secondary); | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.7px; | |
| } | |
| .hint-text { | |
| font-weight: 400; | |
| color: var(--text-muted); | |
| text-transform: none; | |
| letter-spacing: 0; | |
| font-size: 0.72rem; | |
| } | |
| /* ββββ Inputs β Clay Inset (Pressed-in) ββββ */ | |
| .form-group input, | |
| .form-group select, | |
| .form-group textarea { | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| padding: 12px 16px; | |
| color: var(--text-primary); | |
| font-family: inherit; | |
| font-size: 0.88rem; | |
| transition: all var(--transition-fast); | |
| outline: none; | |
| box-shadow: var(--clay-inset); | |
| } | |
| .form-group input:focus, | |
| .form-group select:focus, | |
| .form-group textarea:focus { | |
| background: var(--bg-input-focus); | |
| box-shadow: var(--clay-inset-focus); | |
| } | |
| .form-group input::placeholder, | |
| .form-group textarea::placeholder { | |
| color: var(--text-muted); | |
| } | |
| .input-with-icon { | |
| position: relative; | |
| } | |
| .input-with-icon svg { | |
| position: absolute; | |
| left: 14px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| color: var(--text-muted); | |
| pointer-events: none; | |
| } | |
| .input-with-icon input { | |
| padding-left: 40px; | |
| width: 100%; | |
| } | |
| /* Toggle switch β Clay style */ | |
| .toggle-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| cursor: pointer; | |
| font-size: 0.84rem; | |
| color: var(--text-secondary); | |
| user-select: none; | |
| } | |
| .toggle-switch { | |
| position: relative; | |
| width: 42px; | |
| height: 24px; | |
| flex-shrink: 0; | |
| } | |
| .toggle-switch input { | |
| opacity: 0; | |
| width: 0; | |
| height: 0; | |
| } | |
| .toggle-slider { | |
| position: absolute; | |
| inset: 0; | |
| cursor: pointer; | |
| background: var(--bg-input); | |
| border-radius: var(--radius-full); | |
| transition: var(--transition-fast); | |
| box-shadow: inset 3px 3px 6px rgba(0, 0, 0, 0.06), inset -2px -2px 4px rgba(255, 255, 255, 0.5); | |
| } | |
| .toggle-slider::before { | |
| content: ''; | |
| position: absolute; | |
| width: 16px; | |
| height: 16px; | |
| left: 4px; | |
| top: 4px; | |
| background: var(--text-muted); | |
| border-radius: 50%; | |
| transition: var(--transition-fast); | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); | |
| } | |
| .toggle-switch input:checked + .toggle-slider { | |
| background: rgba(195, 177, 225, 0.3); | |
| } | |
| .toggle-switch input:checked + .toggle-slider::before { | |
| transform: translateX(18px); | |
| background: var(--accent-secondary); | |
| box-shadow: 2px 2px 6px rgba(167, 139, 202, 0.3); | |
| } | |
| /* Scrape status with progress bar */ | |
| .scrape-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| margin-top: 16px; | |
| padding: 16px 20px; | |
| background: var(--bg-input); | |
| border-radius: var(--radius-md); | |
| font-size: 0.84rem; | |
| color: var(--text-secondary); | |
| border: none; | |
| animation: fadeIn 0.3s ease; | |
| box-shadow: var(--clay-inset); | |
| } | |
| .scrape-status.running { | |
| background: linear-gradient(135deg, rgba(195, 177, 225, 0.1), rgba(167, 199, 231, 0.1)); | |
| box-shadow: var(--clay-inset); | |
| } | |
| .scrape-status.completed { | |
| background: linear-gradient(135deg, rgba(168, 230, 207, 0.15), rgba(124, 201, 160, 0.1)); | |
| box-shadow: var(--clay-inset); | |
| } | |
| .scrape-status.failed { | |
| background: rgba(255, 183, 178, 0.15); | |
| box-shadow: var(--clay-inset); | |
| } | |
| .scrape-progress-wrap { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| } | |
| .scrape-progress-bar { | |
| height: 6px; | |
| background: rgba(0, 0, 0, 0.04); | |
| border-radius: var(--radius-full); | |
| overflow: hidden; | |
| box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.04); | |
| } | |
| .scrape-progress-fill { | |
| height: 100%; | |
| background: var(--accent-gradient); | |
| border-radius: var(--radius-full); | |
| transition: width 0.5s ease; | |
| position: relative; | |
| } | |
| .scrape-status.running .scrape-progress-fill::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; left: 0; right: 0; bottom: 0; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent); | |
| animation: shimmer 1.5s infinite; | |
| } | |
| .spinner { | |
| width: 20px; | |
| height: 20px; | |
| border: 2.5px solid rgba(0, 0, 0, 0.06); | |
| border-top: 2.5px solid var(--accent-secondary); | |
| border-radius: 50%; | |
| animation: spin 0.7s linear infinite; | |
| flex-shrink: 0; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| TOOLBAR & SEARCH | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .toolbar { | |
| display: flex; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| } | |
| .search-box { | |
| position: relative; | |
| flex: 1; | |
| min-width: 200px; | |
| } | |
| .search-box input { | |
| width: 100%; | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: var(--radius-full); | |
| padding: 11px 60px 11px 42px; | |
| color: var(--text-primary); | |
| font-family: inherit; | |
| font-size: 0.84rem; | |
| transition: var(--transition-fast); | |
| outline: none; | |
| box-shadow: var(--clay-inset); | |
| } | |
| .search-box input:focus { | |
| background: var(--bg-input-focus); | |
| box-shadow: var(--clay-inset-focus); | |
| } | |
| .search-box input::placeholder { | |
| color: var(--text-muted); | |
| } | |
| .search-box .search-icon { | |
| position: absolute; | |
| left: 15px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| color: var(--text-muted); | |
| pointer-events: none; | |
| } | |
| .search-kbd { | |
| position: absolute; | |
| right: 12px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| background: var(--bg-card); | |
| padding: 3px 9px; | |
| border-radius: 8px; | |
| font-size: 0.68rem; | |
| font-family: inherit; | |
| color: var(--text-muted); | |
| font-weight: 600; | |
| border: none; | |
| pointer-events: none; | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.04), -1px -1px 2px rgba(255, 255, 255, 0.5); | |
| } | |
| /* View toggle buttons */ | |
| .view-toggles { | |
| display: flex; | |
| background: var(--bg-input); | |
| border-radius: var(--radius-sm); | |
| border: none; | |
| overflow: hidden; | |
| box-shadow: var(--clay-inset); | |
| } | |
| .view-toggle-btn { | |
| background: transparent; | |
| border: none; | |
| padding: 9px 14px; | |
| color: var(--text-muted); | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all var(--transition-fast); | |
| } | |
| .view-toggle-btn:hover { | |
| color: var(--text-secondary); | |
| background: rgba(255, 255, 255, 0.4); | |
| } | |
| .view-toggle-btn.active { | |
| background: var(--bg-card); | |
| color: var(--accent-tertiary); | |
| box-shadow: var(--clay-shadow-sm); | |
| border-radius: var(--radius-xs); | |
| margin: 3px; | |
| } | |
| .filter-select { | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: var(--radius-full); | |
| padding: 10px 34px 10px 16px; | |
| color: var(--text-primary); | |
| font-family: inherit; | |
| font-size: 0.84rem; | |
| cursor: pointer; | |
| outline: none; | |
| transition: var(--transition-fast); | |
| min-width: 130px; | |
| -webkit-appearance: none; | |
| appearance: none; | |
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239E8F8F' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); | |
| background-repeat: no-repeat; | |
| background-position: right 12px center; | |
| box-shadow: var(--clay-inset); | |
| } | |
| .filter-select:focus { | |
| box-shadow: var(--clay-inset-focus); | |
| } | |
| .filter-select option { | |
| background: var(--bg-secondary); | |
| color: var(--text-primary); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| BUTTONS β Pill-shaped Clay 3D | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 7px; | |
| padding: 10px 22px; | |
| border: none; | |
| border-radius: var(--radius-full); | |
| font-family: inherit; | |
| font-size: 0.82rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| white-space: nowrap; | |
| text-decoration: none; | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .btn:active { | |
| transform: translateY(1px) scale(0.97); | |
| box-shadow: var(--clay-shadow-active); | |
| } | |
| .btn-primary { | |
| background: var(--accent-gradient); | |
| color: #fff; | |
| box-shadow: | |
| 6px 6px 12px rgba(167, 139, 202, 0.3), | |
| -4px -4px 8px rgba(255, 255, 255, 0.6), | |
| inset 0 2px 3px rgba(255, 255, 255, 0.4); | |
| } | |
| .btn-primary::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: linear-gradient(135deg, rgba(255,255,255,0.2), transparent); | |
| opacity: 0; | |
| transition: var(--transition-fast); | |
| border-radius: inherit; | |
| } | |
| .btn-primary:hover { | |
| box-shadow: | |
| 8px 8px 18px rgba(167, 139, 202, 0.35), | |
| -6px -6px 12px rgba(255, 255, 255, 0.7), | |
| inset 0 2px 4px rgba(255, 255, 255, 0.5); | |
| transform: translateY(-3px); | |
| } | |
| .btn-primary:hover::before { | |
| opacity: 1; | |
| } | |
| .btn-primary:active { | |
| transform: translateY(1px) scale(0.97); | |
| box-shadow: | |
| 3px 3px 6px rgba(167, 139, 202, 0.2), | |
| -2px -2px 4px rgba(255, 255, 255, 0.4), | |
| inset 0 1px 2px rgba(255, 255, 255, 0.3); | |
| } | |
| .btn-primary:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| transform: none; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .btn-secondary { | |
| background: var(--bg-card); | |
| color: var(--text-primary); | |
| } | |
| .btn-secondary:hover { | |
| background: var(--bg-secondary); | |
| } | |
| .btn-success { | |
| background: var(--status-closed-surface); | |
| color: #4A9A72; | |
| } | |
| .btn-success:hover { | |
| box-shadow: var(--clay-shadow), 0 0 16px rgba(124, 201, 160, 0.2); | |
| } | |
| .btn-danger { | |
| background: rgba(255, 183, 178, 0.3); | |
| color: #C75050; | |
| } | |
| .btn-danger:hover { | |
| box-shadow: var(--clay-shadow), 0 0 16px rgba(232, 143, 143, 0.2); | |
| } | |
| .btn-whatsapp { | |
| background: var(--whatsapp-surface); | |
| color: #3A8A5C; | |
| } | |
| .btn-whatsapp:hover { | |
| box-shadow: var(--clay-shadow), 0 0 16px rgba(76, 175, 118, 0.2); | |
| } | |
| .btn-sm { | |
| padding: 7px 14px; | |
| font-size: 0.76rem; | |
| border-radius: var(--radius-full); | |
| } | |
| .btn-icon { | |
| padding: 8px; | |
| border-radius: var(--radius-sm); | |
| font-size: 0.9rem; | |
| } | |
| .btn-ghost { | |
| background: transparent; | |
| color: var(--text-secondary); | |
| box-shadow: none; | |
| padding: 7px 12px; | |
| } | |
| .btn-ghost:hover { | |
| background: var(--bg-input); | |
| color: var(--text-primary); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .btn-ghost-accent { | |
| background: transparent; | |
| color: var(--text-secondary); | |
| box-shadow: none; | |
| } | |
| .btn-ghost-accent:hover { | |
| background: rgba(195, 177, 225, 0.15); | |
| color: var(--accent-tertiary); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .btn-scrape-start { | |
| padding: 14px 32px; | |
| font-size: 0.9rem; | |
| border-radius: var(--radius-full); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| BULK ACTIONS BAR | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .bulk-bar { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| padding: 12px 20px; | |
| background: linear-gradient(135deg, rgba(195, 177, 225, 0.12), rgba(212, 165, 229, 0.08)); | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| margin-bottom: 16px; | |
| animation: slideDown 0.3s ease; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .bulk-bar .bulk-count { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 0.84rem; | |
| font-weight: 600; | |
| color: var(--accent-tertiary); | |
| min-width: 120px; | |
| } | |
| .bulk-bar .bulk-count svg { | |
| opacity: 0.7; | |
| } | |
| .bulk-bar .bulk-actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| LEADS TABLE β Clay Rows | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .table-wrapper { | |
| overflow-x: auto; | |
| border-radius: var(--radius-lg); | |
| margin-top: 4px; | |
| } | |
| .leads-table { | |
| width: 100%; | |
| border-collapse: separate; | |
| border-spacing: 0 6px; | |
| font-size: 0.85rem; | |
| } | |
| .leads-table thead { | |
| position: sticky; | |
| top: 0; | |
| z-index: 2; | |
| } | |
| .leads-table th { | |
| background: var(--bg-tertiary); | |
| padding: 12px 16px; | |
| text-align: left; | |
| font-weight: 600; | |
| font-size: 0.7rem; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.8px; | |
| border-bottom: none; | |
| white-space: nowrap; | |
| user-select: none; | |
| } | |
| .leads-table th:first-child { border-radius: var(--radius-sm) 0 0 var(--radius-sm); } | |
| .leads-table th:last-child { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; } | |
| .leads-table td { | |
| padding: 14px 16px; | |
| border-bottom: none; | |
| vertical-align: middle; | |
| transition: var(--transition-fast); | |
| background: var(--bg-card); | |
| } | |
| .leads-table td:first-child { border-radius: var(--radius-sm) 0 0 var(--radius-sm); } | |
| .leads-table td:last-child { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; } | |
| .leads-table tbody tr { | |
| transition: all var(--transition-fast); | |
| animation: rowSlideIn 0.35s ease backwards; | |
| cursor: pointer; | |
| } | |
| .leads-table tbody tr:nth-child(1) { animation-delay: 0.02s; } | |
| .leads-table tbody tr:nth-child(2) { animation-delay: 0.04s; } | |
| .leads-table tbody tr:nth-child(3) { animation-delay: 0.06s; } | |
| .leads-table tbody tr:nth-child(4) { animation-delay: 0.08s; } | |
| .leads-table tbody tr:nth-child(5) { animation-delay: 0.1s; } | |
| .leads-table tbody tr:nth-child(6) { animation-delay: 0.12s; } | |
| .leads-table tbody tr:nth-child(7) { animation-delay: 0.14s; } | |
| .leads-table tbody tr:nth-child(8) { animation-delay: 0.16s; } | |
| .leads-table tbody tr:nth-child(9) { animation-delay: 0.18s; } | |
| .leads-table tbody tr:nth-child(10) { animation-delay: 0.2s; } | |
| .leads-table tbody tr:hover td { | |
| background: var(--bg-secondary); | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); | |
| } | |
| .leads-table tbody tr:hover { | |
| transform: translateY(-1px); | |
| } | |
| .leads-table tbody tr.selected td { | |
| background: rgba(195, 177, 225, 0.1); | |
| } | |
| /* Checkbox column */ | |
| .leads-table .checkbox-cell { | |
| width: 40px; | |
| text-align: center; | |
| } | |
| .checkbox-cell input[type="checkbox"] { | |
| appearance: none; | |
| -webkit-appearance: none; | |
| width: 18px; | |
| height: 18px; | |
| border: none; | |
| border-radius: 6px; | |
| background: var(--bg-input); | |
| cursor: pointer; | |
| transition: var(--transition-fast); | |
| position: relative; | |
| vertical-align: middle; | |
| box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.06), inset -1px -1px 2px rgba(255, 255, 255, 0.5); | |
| } | |
| .checkbox-cell input[type="checkbox"]:checked { | |
| background: var(--accent-primary); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .checkbox-cell input[type="checkbox"]:checked::after { | |
| content: 'β'; | |
| position: absolute; | |
| top: 50%; left: 50%; | |
| transform: translate(-50%, -50%); | |
| color: #fff; | |
| font-size: 11px; | |
| font-weight: 800; | |
| } | |
| .checkbox-cell input[type="checkbox"]:hover { | |
| background: rgba(195, 177, 225, 0.2); | |
| } | |
| /* Lead name with avatar */ | |
| .lead-name-cell { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .lead-avatar { | |
| width: 34px; | |
| height: 34px; | |
| border-radius: var(--radius-sm); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 0.72rem; | |
| font-weight: 700; | |
| color: #fff; | |
| flex-shrink: 0; | |
| text-transform: uppercase; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .lead-name { | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| font-size: 0.86rem; | |
| } | |
| .lead-phone { | |
| font-family: 'Poppins', 'Inter', monospace; | |
| color: var(--text-secondary); | |
| font-size: 0.82rem; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .lead-address { | |
| color: var(--text-muted); | |
| font-size: 0.8rem; | |
| max-width: 180px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .lead-website a { | |
| color: var(--text-link); | |
| text-decoration: none; | |
| font-size: 0.8rem; | |
| transition: var(--transition-fast); | |
| } | |
| .lead-website a:hover { | |
| text-decoration: underline; | |
| color: var(--accent-tertiary); | |
| } | |
| .lead-notes { | |
| font-size: 0.8rem; | |
| color: var(--text-muted); | |
| max-width: 140px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| cursor: pointer; | |
| transition: var(--transition-fast); | |
| padding: 5px 10px; | |
| border-radius: var(--radius-xs); | |
| } | |
| .lead-notes:hover { | |
| color: var(--text-secondary); | |
| background: var(--bg-input); | |
| box-shadow: var(--clay-inset); | |
| } | |
| /* Status Badges β Soft pills */ | |
| .status-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 5px 14px; | |
| border-radius: var(--radius-full); | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| border: none; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .status-badge::before { | |
| content: ''; | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 50%; | |
| flex-shrink: 0; | |
| animation: statusPulse 2s ease-in-out infinite; | |
| } | |
| .status-badge.new { | |
| background: var(--status-new-surface); | |
| color: #4A8BAD; | |
| } | |
| .status-badge.new::before { background: var(--status-new); } | |
| .status-badge.contacted { | |
| background: var(--status-contacted-surface); | |
| color: #7B5EA8; | |
| } | |
| .status-badge.contacted::before { background: var(--status-contacted); } | |
| .status-badge.replied { | |
| background: var(--status-replied-surface); | |
| color: #B8943A; | |
| } | |
| .status-badge.replied::before { background: var(--status-replied); } | |
| .status-badge.closed { | |
| background: var(--status-closed-surface); | |
| color: #4A9A72; | |
| } | |
| .status-badge.closed::before { background: var(--status-closed); } | |
| .status-badge:hover { | |
| transform: translateY(-2px) scale(1.04); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| /* Actions column */ | |
| .actions-cell { | |
| display: flex; | |
| gap: 5px; | |
| flex-wrap: nowrap; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| PAGINATION β Clay Buttons | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .pagination { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-top: 18px; | |
| padding-top: 18px; | |
| border-top: 1px solid rgba(0, 0, 0, 0.05); | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| } | |
| .pagination-info { | |
| font-size: 0.82rem; | |
| color: var(--text-muted); | |
| } | |
| .pagination-info span { | |
| color: var(--text-secondary); | |
| font-weight: 600; | |
| } | |
| .pagination-controls { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .pagination-controls button { | |
| width: 36px; | |
| height: 36px; | |
| border: none; | |
| background: var(--bg-card); | |
| color: var(--text-secondary); | |
| border-radius: var(--radius-sm); | |
| cursor: pointer; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| font-family: inherit; | |
| transition: var(--transition-fast); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .pagination-controls button:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| box-shadow: var(--clay-shadow); | |
| color: var(--text-primary); | |
| } | |
| .pagination-controls button:active:not(:disabled) { | |
| transform: translateY(1px); | |
| box-shadow: var(--clay-shadow-active); | |
| } | |
| .pagination-controls button.active { | |
| background: var(--accent-gradient); | |
| color: #fff; | |
| box-shadow: | |
| 5px 5px 10px rgba(167, 139, 202, 0.25), | |
| -3px -3px 6px rgba(255, 255, 255, 0.6), | |
| inset 0 1px 2px rgba(255, 255, 255, 0.3); | |
| } | |
| .pagination-controls button:disabled { | |
| opacity: 0.3; | |
| cursor: not-allowed; | |
| box-shadow: none; | |
| } | |
| .page-size-select { | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| padding: 7px 12px; | |
| color: var(--text-primary); | |
| font-family: inherit; | |
| font-size: 0.8rem; | |
| cursor: pointer; | |
| outline: none; | |
| box-shadow: var(--clay-inset); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| EMPTY STATE | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .empty-state { | |
| text-align: center; | |
| padding: 50px 20px; | |
| color: var(--text-muted); | |
| } | |
| .empty-illustration { | |
| margin-bottom: 20px; | |
| animation: float 4s ease-in-out infinite; | |
| } | |
| .empty-illustration svg circle { | |
| fill: rgba(195, 177, 225, 0.08); | |
| stroke: rgba(195, 177, 225, 0.2); | |
| } | |
| .empty-illustration svg path, | |
| .empty-illustration svg line { | |
| stroke: rgba(195, 177, 225, 0.45); | |
| } | |
| .empty-state h3 { | |
| font-size: 1.1rem; | |
| color: var(--text-secondary); | |
| font-weight: 700; | |
| margin-bottom: 6px; | |
| } | |
| .empty-state .hint { | |
| font-size: 0.84rem; | |
| color: var(--text-muted); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| LEAD DETAIL DRAWER β Clay Slide Panel | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .drawer-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(61, 53, 53, 0.25); | |
| backdrop-filter: blur(4px); | |
| -webkit-backdrop-filter: blur(4px); | |
| z-index: 200; | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: var(--transition-base); | |
| } | |
| .drawer-overlay.active { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |
| .lead-drawer { | |
| position: fixed; | |
| top: 0; | |
| right: 0; | |
| width: 420px; | |
| max-width: 100%; | |
| height: 100vh; | |
| background: var(--bg-secondary); | |
| border-left: none; | |
| z-index: 210; | |
| transform: translateX(100%); | |
| transition: transform var(--transition-slow); | |
| display: flex; | |
| flex-direction: column; | |
| overflow-y: auto; | |
| box-shadow: -12px 0 32px rgba(0, 0, 0, 0.08); | |
| } | |
| .lead-drawer.open { | |
| transform: translateX(0); | |
| } | |
| .drawer-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 22px 26px; | |
| border-bottom: 1px solid rgba(0, 0, 0, 0.05); | |
| position: sticky; | |
| top: 0; | |
| background: var(--bg-secondary); | |
| z-index: 1; | |
| } | |
| .drawer-header h3 { | |
| font-size: 1.05rem; | |
| font-weight: 700; | |
| } | |
| .drawer-close { | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| color: var(--text-secondary); | |
| padding: 7px; | |
| cursor: pointer; | |
| display: flex; | |
| transition: var(--transition-fast); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .drawer-close:hover { | |
| background: rgba(255, 183, 178, 0.25); | |
| color: var(--danger); | |
| transform: rotate(90deg); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .drawer-body { | |
| padding: 26px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| } | |
| .drawer-section-title { | |
| font-size: 0.72rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.8px; | |
| color: var(--text-muted); | |
| margin-bottom: 8px; | |
| } | |
| .drawer-info-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 12px; | |
| } | |
| .drawer-info-item { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| padding: 12px 14px; | |
| background: var(--bg-input); | |
| border-radius: var(--radius-sm); | |
| box-shadow: var(--clay-inset); | |
| } | |
| .drawer-info-label { | |
| font-size: 0.72rem; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| font-weight: 600; | |
| } | |
| .drawer-info-value { | |
| font-size: 0.88rem; | |
| color: var(--text-primary); | |
| font-weight: 500; | |
| } | |
| .drawer-info-value a { | |
| color: var(--text-link); | |
| text-decoration: none; | |
| } | |
| .drawer-info-value a:hover { | |
| text-decoration: underline; | |
| } | |
| .drawer-actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| MODALS β Clay Dialogs | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .modal-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(61, 53, 53, 0.3); | |
| backdrop-filter: blur(8px); | |
| -webkit-backdrop-filter: blur(8px); | |
| z-index: 1000; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 20px; | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: var(--transition-base); | |
| } | |
| .modal-overlay.active { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |
| .modal { | |
| background: var(--bg-secondary); | |
| border: none; | |
| border-radius: var(--radius-2xl); | |
| padding: 30px; | |
| width: 100%; | |
| max-width: 520px; | |
| max-height: 90vh; | |
| overflow-y: auto; | |
| transform: scale(0.92) translateY(20px); | |
| transition: var(--transition-spring); | |
| box-shadow: var(--shadow-xl); | |
| position: relative; | |
| } | |
| .modal-wide { | |
| max-width: 600px; | |
| } | |
| .modal::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; left: 0; right: 0; | |
| height: 3px; | |
| background: var(--accent-gradient); | |
| border-radius: var(--radius-2xl) var(--radius-2xl) 0 0; | |
| } | |
| .modal-overlay.active .modal { | |
| transform: scale(1) translateY(0); | |
| } | |
| .modal-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 22px; | |
| } | |
| .modal-header h2 { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| } | |
| .modal-close { | |
| width: 34px; | |
| height: 34px; | |
| border: none; | |
| background: var(--bg-card); | |
| border-radius: var(--radius-sm); | |
| color: var(--text-secondary); | |
| font-size: 1.1rem; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: var(--transition-fast); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .modal-close:hover { | |
| background: rgba(255, 183, 178, 0.25); | |
| color: var(--danger); | |
| transform: rotate(90deg); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .modal-body { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| } | |
| .modal-body textarea { | |
| min-height: 110px; | |
| resize: vertical; | |
| } | |
| .modal-footer { | |
| display: flex; | |
| justify-content: flex-end; | |
| gap: 10px; | |
| margin-top: 22px; | |
| } | |
| /* WhatsApp recipient card in modal */ | |
| .wa-recipient-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| padding: 14px 18px; | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| margin-bottom: 4px; | |
| box-shadow: var(--clay-inset); | |
| } | |
| .wa-recipient-avatar { | |
| width: 44px; | |
| height: 44px; | |
| border-radius: var(--radius-sm); | |
| background: var(--whatsapp-surface); | |
| color: #3A8A5C; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 700; | |
| font-size: 1.1rem; | |
| flex-shrink: 0; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .wa-recipient-name { | |
| font-weight: 600; | |
| font-size: 0.92rem; | |
| } | |
| .wa-recipient-phone { | |
| font-size: 0.8rem; | |
| color: var(--text-link); | |
| font-variant-numeric: tabular-nums; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| KEYBOARD SHORTCUTS MODAL | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .shortcuts-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 10px; | |
| } | |
| .shortcut-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 12px 16px; | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| font-size: 0.84rem; | |
| color: var(--text-secondary); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .shortcut-item kbd { | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: 8px; | |
| padding: 3px 10px; | |
| font-size: 0.76rem; | |
| font-family: inherit; | |
| color: var(--text-primary); | |
| font-weight: 600; | |
| min-width: 30px; | |
| text-align: center; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .shortcut-item span:last-child { | |
| margin-left: auto; | |
| color: var(--text-muted); | |
| font-size: 0.8rem; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| TEMPLATES PANEL | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .templates-list { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); | |
| gap: 14px; | |
| } | |
| .template-card { | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| padding: 18px 20px; | |
| transition: all var(--transition-fast); | |
| position: relative; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .template-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .template-card:active { | |
| transform: translateY(1px); | |
| box-shadow: var(--clay-shadow-active); | |
| } | |
| .template-card-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 10px; | |
| } | |
| .template-card-name { | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .template-card-content { | |
| color: var(--text-muted); | |
| font-size: 0.82rem; | |
| line-height: 1.55; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 3; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| } | |
| .template-card-actions { | |
| display: flex; | |
| gap: 4px; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| TOAST NOTIFICATIONS β Clay Pills | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .toast-container { | |
| position: fixed; | |
| bottom: 24px; | |
| right: 24px; | |
| z-index: 2000; | |
| display: flex; | |
| flex-direction: column-reverse; | |
| gap: 10px; | |
| pointer-events: none; | |
| } | |
| .toast { | |
| background: var(--bg-secondary); | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| padding: 16px 20px; | |
| min-width: 300px; | |
| max-width: 400px; | |
| box-shadow: var(--clay-shadow); | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| animation: toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); | |
| pointer-events: auto; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .toast.removing { | |
| animation: toastOut 0.3s ease forwards; | |
| } | |
| .toast::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| height: 3px; | |
| border-radius: 0 0 var(--radius-lg) var(--radius-lg); | |
| animation: toastProgress 4s linear forwards; | |
| } | |
| .toast-icon { | |
| font-size: 1rem; | |
| flex-shrink: 0; | |
| } | |
| .toast-message { | |
| font-size: 0.84rem; | |
| color: var(--text-secondary); | |
| flex: 1; | |
| line-height: 1.4; | |
| } | |
| .toast.success { border-left: 4px solid var(--success); } | |
| .toast.success .toast-icon { color: var(--success); } | |
| .toast.success::after { background: var(--success); } | |
| .toast.error { border-left: 4px solid var(--danger); } | |
| .toast.error .toast-icon { color: var(--danger); } | |
| .toast.error::after { background: var(--danger); } | |
| .toast.info { border-left: 4px solid var(--accent-secondary); } | |
| .toast.info .toast-icon { color: var(--accent-secondary); } | |
| .toast.info::after { background: var(--accent-secondary); } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| STATUS DROPDOWN | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .status-dropdown { | |
| position: fixed; | |
| background: var(--bg-secondary); | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| padding: 8px; | |
| box-shadow: var(--shadow-xl); | |
| z-index: 100; | |
| min-width: 160px; | |
| animation: dropdownPop 0.2s cubic-bezier(0.34, 1.56, 0.64, 1); | |
| } | |
| .status-dropdown button { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| width: 100%; | |
| padding: 10px 14px; | |
| border: none; | |
| background: transparent; | |
| color: var(--text-primary); | |
| font-family: inherit; | |
| font-size: 0.82rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| border-radius: var(--radius-sm); | |
| transition: var(--transition-fast); | |
| } | |
| .status-dropdown button:hover { | |
| background: var(--bg-input); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| DATE INPUT & MISC | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| input[type="date"] { | |
| background: var(--bg-input); | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| padding: 10px 14px; | |
| color: var(--text-primary); | |
| font-family: inherit; | |
| font-size: 0.85rem; | |
| outline: none; | |
| transition: var(--transition-fast); | |
| box-shadow: var(--clay-inset); | |
| } | |
| input[type="date"]:focus { | |
| box-shadow: var(--clay-inset-focus); | |
| } | |
| input[type="date"]::-webkit-calendar-picker-indicator { | |
| filter: none; | |
| cursor: pointer; | |
| opacity: 0.5; | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| KANBAN BOARD β Clay Columns & Cards | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .kanban-board { | |
| display: flex; | |
| gap: 16px; | |
| overflow-x: auto; | |
| padding-bottom: 8px; | |
| min-height: 400px; | |
| } | |
| .kanban-column { | |
| flex: 1; | |
| min-width: 260px; | |
| background: var(--bg-tertiary); | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| display: flex; | |
| flex-direction: column; | |
| transition: var(--transition-fast); | |
| box-shadow: var(--clay-inset); | |
| } | |
| .kanban-column.drag-over { | |
| background: rgba(195, 177, 225, 0.08); | |
| box-shadow: var(--clay-inset), inset 0 0 20px rgba(195, 177, 225, 0.1); | |
| } | |
| .kanban-col-header { | |
| padding: 16px 18px; | |
| font-weight: 700; | |
| font-size: 0.84rem; | |
| border-bottom: 1px solid rgba(0, 0, 0, 0.05); | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| .kanban-col-header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .kanban-col-dot { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| flex-shrink: 0; | |
| box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.8); | |
| } | |
| .kanban-col-dot.new { background: var(--status-new); } | |
| .kanban-col-dot.contacted { background: var(--status-contacted); } | |
| .kanban-col-dot.replied { background: var(--status-replied); } | |
| .kanban-col-dot.closed { background: var(--status-closed); } | |
| .kanban-col-header.new { color: #4A8BAD; } | |
| .kanban-col-header.contacted { color: #7B5EA8; } | |
| .kanban-col-header.replied { color: #B8943A; } | |
| .kanban-col-header.closed { color: #4A9A72; } | |
| .col-count { | |
| background: var(--bg-card); | |
| padding: 3px 10px; | |
| border-radius: var(--radius-full); | |
| font-size: 0.74rem; | |
| color: var(--text-muted); | |
| font-weight: 600; | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .kanban-col-body { | |
| padding: 12px; | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| overflow-y: auto; | |
| } | |
| .kanban-card { | |
| background: var(--bg-card); | |
| border: none; | |
| border-radius: var(--radius-md); | |
| padding: 16px; | |
| cursor: grab; | |
| position: relative; | |
| transition: all var(--transition-fast); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .kanban-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .kanban-card:active { cursor: grabbing; } | |
| .kanban-card.dragging { opacity: 0.4; } | |
| .kanban-card-title { | |
| font-weight: 600; | |
| font-size: 0.88rem; | |
| margin-bottom: 6px; | |
| } | |
| .kanban-card-info { | |
| font-size: 0.78rem; | |
| color: var(--text-secondary); | |
| margin-bottom: 6px; | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .social-links { | |
| display: flex; | |
| gap: 6px; | |
| margin-top: 4px; | |
| } | |
| .social-icon { | |
| width: 28px; | |
| height: 28px; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: var(--bg-input); | |
| border-radius: var(--radius-xs); | |
| text-decoration: none; | |
| font-size: 0.75rem; | |
| transition: var(--transition-fast); | |
| box-shadow: var(--clay-shadow-sm); | |
| } | |
| .social-icon:hover { | |
| transform: translateY(-2px) scale(1.1); | |
| box-shadow: var(--clay-shadow); | |
| } | |
| .social-icon.email { color: var(--danger); } | |
| .social-icon.instagram { color: #C06090; } | |
| .social-icon.linkedin { color: #5B8DB8; } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| ANIMATIONS | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @keyframes statPop { | |
| from { opacity: 0; transform: scale(0.85) translateY(12px); } | |
| to { opacity: 1; transform: scale(1) translateY(0); } | |
| } | |
| @keyframes panelReveal { | |
| from { opacity: 0; transform: translateY(16px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes rowSlideIn { | |
| from { opacity: 0; transform: translateX(-6px); } | |
| to { opacity: 1; transform: translateX(0); } | |
| } | |
| @keyframes dropdownPop { | |
| from { opacity: 0; transform: scale(0.85); } | |
| to { opacity: 1; transform: scale(1); } | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| @keyframes slideDown { | |
| from { opacity: 0; transform: translateY(-10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes spin { | |
| to { transform: rotate(360deg); } | |
| } | |
| @keyframes shimmer { | |
| from { transform: translateX(-100%); } | |
| to { transform: translateX(200%); } | |
| } | |
| @keyframes logoPulse { | |
| 0%, 100% { opacity: 0; transform: scale(1); } | |
| 50% { opacity: 0.35; transform: scale(1.15); } | |
| } | |
| @keyframes statusPulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.5; } | |
| } | |
| @keyframes float { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-10px); } | |
| } | |
| @keyframes toastIn { | |
| from { opacity: 0; transform: translateY(16px) scale(0.95); } | |
| to { opacity: 1; transform: translateY(0) scale(1); } | |
| } | |
| @keyframes toastOut { | |
| from { opacity: 1; transform: translateY(0) scale(1); } | |
| to { opacity: 0; transform: translateY(16px) scale(0.95); } | |
| } | |
| @keyframes toastProgress { | |
| from { width: 100%; } | |
| to { width: 0%; } | |
| } | |
| @keyframes gradientShift { | |
| 0%, 100% { background-position: 0% 50%; } | |
| 50% { background-position: 100% 50%; } | |
| } | |
| .loading-pulse { | |
| animation: pulse 1.5s infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.4; } | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| RESPONSIVE | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 1280px) { | |
| .stats-grid { | |
| grid-template-columns: repeat(5, 1fr); | |
| } | |
| } | |
| @media (max-width: 1024px) { | |
| .stats-grid { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| .sidebar { | |
| transform: translateX(-100%); | |
| width: var(--sidebar-width); | |
| box-shadow: var(--shadow-xl); | |
| } | |
| .sidebar.mobile-open { | |
| transform: translateX(0); | |
| } | |
| .main-content { | |
| margin-left: 0; | |
| padding: 0 16px 40px; | |
| } | |
| .sidebar.collapsed ~ .main-content { | |
| margin-left: 0; | |
| } | |
| .mobile-menu-btn { | |
| display: flex; | |
| } | |
| .drawer-info-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .main-content { | |
| padding: 0 16px 20px; | |
| } | |
| .top-bar { | |
| padding: 16px 0; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| } | |
| .stats-grid { | |
| grid-template-columns: 1fr 1fr; | |
| gap: 12px; | |
| } | |
| .stat-card { | |
| padding: 16px 18px; | |
| border-radius: var(--radius-lg); | |
| } | |
| .stat-card .stat-value { | |
| font-size: 1.6rem; | |
| } | |
| .panel { | |
| padding: 18px 16px; | |
| border-radius: var(--radius-lg); | |
| } | |
| .form-row { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| .btn-scrape-start { | |
| width: 100%; | |
| margin-top: 10px; | |
| } | |
| .toolbar { | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 12px; | |
| } | |
| .search-box { | |
| min-width: auto; | |
| width: 100%; | |
| } | |
| .search-kbd { | |
| display: none; | |
| } | |
| .kanban-board { | |
| flex-direction: column; | |
| min-height: auto; | |
| } | |
| .table-wrapper { | |
| overflow-x: hidden; | |
| border-radius: var(--radius-md); | |
| padding-bottom: 5px; | |
| } | |
| .leads-table { | |
| font-size: 0.82rem; | |
| border-spacing: 0 4px; | |
| width: 100%; | |
| } | |
| .leads-table th, | |
| .leads-table td { | |
| padding: 10px 12px; | |
| } | |
| .hide-mobile { | |
| display: none; | |
| } | |
| .actions-cell { | |
| flex-wrap: wrap; | |
| } | |
| .modal { | |
| padding: 22px; | |
| border-radius: var(--radius-xl); | |
| width: 95%; | |
| } | |
| .pagination { | |
| justify-content: center; | |
| flex-direction: column; | |
| gap: 16px; | |
| } | |
| .bulk-bar { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| } | |
| .templates-list { | |
| grid-template-columns: 1fr; | |
| } | |
| .lead-drawer { | |
| width: 100%; | |
| } | |
| .top-bar-right .live-clock { | |
| display: none; | |
| } | |
| .funnel-step-info { | |
| min-width: 60px; | |
| } | |
| .shortcuts-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .breadcrumb { | |
| font-size: 0.8rem; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .stats-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .stat-card:last-child { | |
| grid-column: 1 / -1; | |
| } | |
| .top-bar { | |
| padding: 10px 0; | |
| } | |
| .sidebar { | |
| width: 85% ; | |
| } | |
| .connection-text { | |
| display: none; | |
| } | |
| .modal { | |
| padding: 16px; | |
| } | |
| .panel { | |
| padding: 16px 14px; | |
| } | |
| } | |
| /* ββββββββββββββββββββββββββββββββββββββββββββββ | |
| UTILITY | |
| ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } | |
| .hidden { display: none ; } | |
| .relative { position: relative; } | |
| .w-full { width: 100%; } | |
| .flex { display: flex; } | |
| .items-center { align-items: center; } | |
| .justify-between { justify-content: space-between; } | |
| .gap-2 { gap: 8px; } | |
| .mt-2 { margin-top: 8px; } | |
| .mt-3 { margin-top: 12px; } | |
| .mt-4 { margin-top: 16px; } | |
| .mb-2 { margin-bottom: 8px; } | |
| /* Mobile sidebar overlay */ | |
| .sidebar-mobile-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(61, 53, 53, 0.3); | |
| z-index: 99; | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: var(--transition-base); | |
| } | |
| .sidebar-mobile-overlay.active { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |