Download src/app/globals.css from simikkk/test7: direct link, hf CLI and curl.
- Browser
- Download file 51 kB
-
https://huggingface.co/spaces/simikkk/test7/resolve/main/src/app/globals.css
- Command line
-
hf download hf://spaces/simikkk/test7/src/app/globals.css
-
curl -L -o globals.css https://huggingface.co/spaces/simikkk/test7/resolve/main/src/app/globals.css
51 kB
| @import "tailwindcss"; | |
| @import "tw-animate-css"; | |
| @custom-variant dark (&:is(.dark *)); | |
| @theme inline { | |
| --color-background: var(--background); | |
| --color-foreground: var(--foreground); | |
| --font-sans: var(--font-geist-sans); | |
| --font-mono: var(--font-geist-mono); | |
| --color-ring: var(--ring); | |
| --color-input: var(--input); | |
| --color-border: var(--border); | |
| --color-destructive: var(--destructive); | |
| --color-accent-foreground: var(--accent-foreground); | |
| --color-accent: var(--accent); | |
| --color-muted-foreground: var(--muted-foreground); | |
| --color-muted: var(--muted); | |
| --color-secondary-foreground: var(--secondary-foreground); | |
| --color-secondary: var(--secondary); | |
| --color-primary-foreground: var(--primary-foreground); | |
| --color-primary: var(--primary); | |
| --color-popover-foreground: var(--popover-foreground); | |
| --color-popover: var(--popover); | |
| --color-card-foreground: var(--card-foreground); | |
| --color-card: var(--card); | |
| --radius-sm: calc(var(--radius) - 4px); | |
| --radius-md: calc(var(--radius) - 2px); | |
| --radius-lg: var(--radius); | |
| --radius-xl: calc(var(--radius) + 4px); | |
| --color-amber-50: #FFFBEB; | |
| --color-amber-100: #FEF3C7; | |
| --color-amber-200: #FDE68A; | |
| --color-amber-300: #FCD34D; | |
| --color-amber-400: #FBBF24; | |
| --color-amber-500: #F59E0B; | |
| --color-amber-600: #D97706; | |
| --color-amber-700: #B45309; | |
| --color-amber-800: #92400E; | |
| --color-amber-900: #78350F; | |
| --color-teal-400: #2DD4BF; | |
| --color-teal-500: #14B8A6; | |
| --color-teal-600: #0D9488; | |
| } | |
| :root { | |
| --radius: 0.625rem; | |
| --background: #09090B; | |
| --foreground: #FAFAFA; | |
| --card: #111113; | |
| --card-foreground: #FAFAFA; | |
| --popover: #111113; | |
| --popover-foreground: #FAFAFA; | |
| --primary: #F59E0B; | |
| --primary-foreground: #09090B; | |
| --secondary: #1C1C1F; | |
| --secondary-foreground: #FAFAFA; | |
| --muted: #1C1C1F; | |
| --muted-foreground: #A1A1AA; | |
| --accent: #1C1C1F; | |
| --accent-foreground: #FAFAFA; | |
| --destructive: #EF4444; | |
| --border: rgba(255, 255, 255, 0.08); | |
| --input: rgba(255, 255, 255, 0.1); | |
| --ring: #F59E0B; | |
| } | |
| @layer base { | |
| * { | |
| @apply border-border outline-ring/50; | |
| } | |
| body { | |
| @apply bg-background text-foreground; | |
| font-feature-settings: "rlig" 1, "calt" 1; | |
| } | |
| } | |
| /* Custom scrollbar */ | |
| ::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 3px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.2); | |
| } | |
| /* Glassmorphism card */ | |
| .glass-card { | |
| background: rgba(255, 255, 255, 0.03); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: 16px; | |
| box-shadow: inset 0 1px 0 rgba(255,255,255,0.04); | |
| } | |
| .glass-card-hover { | |
| background: rgba(255, 255, 255, 0.03); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: 16px; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .glass-card-hover:hover { | |
| background: rgba(255, 255, 255, 0.06); | |
| border-color: rgba(245, 158, 11, 0.2); | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 32px rgba(245, 158, 11, 0.08); | |
| } | |
| /* Amber glow effect */ | |
| .amber-glow { | |
| box-shadow: 0 0 40px rgba(245, 158, 11, 0.15), 0 0 80px rgba(245, 158, 11, 0.05); | |
| } | |
| /* Subtle grid background */ | |
| .grid-bg { | |
| background-image: | |
| linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px); | |
| background-size: 64px 64px; | |
| } | |
| /* Noise texture overlay */ | |
| .noise-overlay::before { | |
| content: ""; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| opacity: 0.03; | |
| z-index: 0; | |
| pointer-events: none; | |
| background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E"); | |
| } | |
| /* Upload drop zone */ | |
| .drop-zone { | |
| border: 2px dashed rgba(245, 158, 11, 0.3); | |
| border-radius: 16px; | |
| transition: all 0.3s ease; | |
| } | |
| .drop-zone.drag-over { | |
| border-color: #F59E0B; | |
| background: rgba(245, 158, 11, 0.05); | |
| box-shadow: 0 0 32px rgba(245, 158, 11, 0.1); | |
| } | |
| /* Chat bubble animation */ | |
| @keyframes slideUp { | |
| from { opacity: 0; transform: translateY(8px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .chat-bubble { | |
| animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Pricing card highlight */ | |
| .pricing-highlight { | |
| border: 1px solid rgba(245, 158, 11, 0.4); | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.08) 0%, rgba(20, 184, 166, 0.04) 100%); | |
| position: relative; | |
| } | |
| .pricing-highlight::before { | |
| content: ""; | |
| position: absolute; | |
| inset: -1px; | |
| border-radius: 16px; | |
| padding: 1px; | |
| background: linear-gradient(135deg, #F59E0B, #14B8A6); | |
| -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); | |
| -webkit-mask-composite: xor; | |
| mask-composite: exclude; | |
| pointer-events: none; | |
| } | |
| /* Fade in animation */ | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| .fade-in { | |
| animation: fadeIn 0.5s ease; | |
| } | |
| /* Status badge styles */ | |
| .status-done { background: rgba(34, 197, 94, 0.12); color: #22C55E; } | |
| .status-review { background: rgba(234, 179, 8, 0.12); color: #EAB308; } | |
| .status-duplicate { background: rgba(239, 68, 68, 0.12); color: #EF4444; } | |
| /* Tab active indicator */ | |
| .tab-active { | |
| color: #F59E0B; | |
| border-bottom: 2px solid #F59E0B; | |
| } | |
| /* Focus ring for accessibility */ | |
| *:focus-visible { | |
| outline: 2px solid #F59E0B; | |
| outline-offset: 2px; | |
| border-radius: 4px; | |
| } | |
| /* Hero gradient text */ | |
| .gradient-text { | |
| background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 40%, #14B8A6 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| /* Progress bar */ | |
| .progress-bar { | |
| background: linear-gradient(90deg, #F59E0B, #14B8A6); | |
| border-radius: 4px; | |
| transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Skeleton shimmer */ | |
| @keyframes shimmer { | |
| 0% { background-position: -200% 0; } | |
| 100% { background-position: 200% 0; } | |
| } | |
| .skeleton-shimmer { | |
| background: linear-gradient(90deg, rgba(255,255,255,0.03) 25%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.03) 75%); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.5s infinite; | |
| border-radius: 8px; | |
| } | |
| /* Hero gradient orb */ | |
| .hero-orb { | |
| position: absolute; | |
| width: 600px; | |
| height: 600px; | |
| border-radius: 50%; | |
| background: radial-gradient(circle, rgba(245,158,11,0.12) 0%, rgba(20,184,166,0.06) 40%, transparent 70%); | |
| filter: blur(60px); | |
| top: -100px; | |
| right: -150px; | |
| pointer-events: none; | |
| animation: orbFloat 8s ease-in-out infinite; | |
| } | |
| .hero-orb-2 { | |
| position: absolute; | |
| width: 400px; | |
| height: 400px; | |
| border-radius: 50%; | |
| background: radial-gradient(circle, rgba(20,184,166,0.1) 0%, rgba(245,158,11,0.05) 40%, transparent 70%); | |
| filter: blur(50px); | |
| bottom: -80px; | |
| left: -100px; | |
| pointer-events: none; | |
| animation: orbFloat 10s ease-in-out infinite reverse; | |
| } | |
| @keyframes orbFloat { | |
| 0%, 100% { transform: translate(0, 0) scale(1); } | |
| 33% { transform: translate(30px, -20px) scale(1.05); } | |
| 66% { transform: translate(-20px, 15px) scale(0.95); } | |
| } | |
| /* Stats counter animation */ | |
| @keyframes countUp { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .stat-item { | |
| animation: countUp 0.6s ease-out both; | |
| } | |
| .stat-item:nth-child(2) { animation-delay: 0.1s; } | |
| .stat-item:nth-child(3) { animation-delay: 0.2s; } | |
| /* Feature card icon colors */ | |
| .feature-amber .feature-icon { background: rgba(245,158,11,0.1); color: #F59E0B; } | |
| .feature-teal .feature-icon { background: rgba(20,184,166,0.1); color: #14B8A6; } | |
| .feature-red .feature-icon { background: rgba(239,68,68,0.1); color: #EF4444; } | |
| .feature-green .feature-icon { background: rgba(34,197,94,0.1); color: #22C55E; } | |
| .feature-sky .feature-icon { background: rgba(56,189,248,0.1); color: #38BDF8; } | |
| .feature-rose .feature-icon { background: rgba(244,114,182,0.1); color: #F472B6; } | |
| /* Dashboard stat card */ | |
| .stat-card { | |
| background: rgba(255,255,255,0.03); | |
| border: 1px solid rgba(255,255,255,0.06); | |
| border-radius: 12px; | |
| padding: 16px 20px; | |
| transition: all 0.3s ease; | |
| } | |
| .stat-card:hover { | |
| background: rgba(255,255,255,0.05); | |
| border-color: rgba(255,255,255,0.1); | |
| transform: translateY(-1px); | |
| } | |
| /* Invoice row hover */ | |
| .invoice-row { | |
| cursor: pointer; | |
| transition: background 0.15s ease; | |
| } | |
| .invoice-row:hover { | |
| background: rgba(255,255,255,0.03) ; | |
| } | |
| /* Section reveal animation */ | |
| @keyframes sectionReveal { | |
| from { opacity: 0; transform: translateY(24px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .section-reveal { | |
| animation: sectionReveal 0.7s ease-out both; | |
| } | |
| /* Footer link hover */ | |
| .footer-link { | |
| color: #A1A1AA; | |
| transition: color 0.2s ease; | |
| cursor: pointer; | |
| } | |
| .footer-link:hover { | |
| color: #F59E0B; | |
| } | |
| /* Typing dots animation */ | |
| @keyframes typingDot { | |
| 0%, 60%, 100% { opacity: 0.3; } | |
| 30% { opacity: 1; } | |
| } | |
| .typing-dot { | |
| animation: typingDot 1.4s ease-in-out infinite; | |
| } | |
| .typing-dot:nth-child(2) { animation-delay: 0.2s; } | |
| .typing-dot:nth-child(3) { animation-delay: 0.4s; } | |
| /* ======================================== | |
| Enhanced Button Styles | |
| ======================================== */ | |
| /* Primary button with gradient */ | |
| .btn-primary { | |
| background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%); | |
| color: #09090B; | |
| font-weight: 600; | |
| padding: 10px 24px; | |
| border-radius: 10px; | |
| transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-1px); | |
| box-shadow: 0 4px 20px rgba(245, 158, 11, 0.35); | |
| } | |
| .btn-primary:active { | |
| transform: translateY(0); | |
| } | |
| .btn-primary:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| transform: none; | |
| box-shadow: none; | |
| } | |
| /* Secondary/ghost button */ | |
| .btn-ghost { | |
| background: transparent; | |
| color: #FAFAFA; | |
| font-weight: 500; | |
| padding: 10px 24px; | |
| border-radius: 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| transition: all 0.25s ease; | |
| } | |
| .btn-ghost:hover { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-color: rgba(255, 255, 255, 0.2); | |
| } | |
| /* ======================================== | |
| Form Input Enhancements | |
| ======================================== */ | |
| /* Custom form inputs */ | |
| .input-field { | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 10px; | |
| padding: 12px 16px; | |
| color: #FAFAFA; | |
| font-size: 14px; | |
| transition: all 0.2s ease; | |
| width: 100%; | |
| } | |
| .input-field:focus { | |
| outline: none; | |
| border-color: #F59E0B; | |
| box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1); | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| .input-field::placeholder { | |
| color: #52525B; | |
| } | |
| /* Input with floating label */ | |
| .input-group { | |
| position: relative; | |
| } | |
| .input-label { | |
| display: block; | |
| font-size: 13px; | |
| font-weight: 500; | |
| color: #A1A1AA; | |
| margin-bottom: 6px; | |
| } | |
| /* ======================================== | |
| Enhanced Card Styles | |
| ======================================== */ | |
| /* Card with colored top border accent */ | |
| .card-accent-amber { border-top: 2px solid rgba(245, 158, 11, 0.6); } | |
| .card-accent-teal { border-top: 2px solid rgba(20, 184, 166, 0.6); } | |
| .card-accent-red { border-top: 2px solid rgba(239, 68, 68, 0.6); } | |
| .card-accent-green { border-top: 2px solid rgba(34, 197, 94, 0.6); } | |
| /* Hover lift effect */ | |
| .hover-lift { | |
| transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s ease; | |
| } | |
| .hover-lift:hover { | |
| transform: translateY(-4px); | |
| box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3); | |
| } | |
| /* ======================================== | |
| Badge/Tag Styles | |
| ======================================== */ | |
| /* Plan badge */ | |
| .badge-amber { | |
| background: rgba(245, 158, 11, 0.12); | |
| color: #F59E0B; | |
| padding: 2px 10px; | |
| border-radius: 100px; | |
| font-size: 12px; | |
| font-weight: 600; | |
| letter-spacing: 0.02em; | |
| } | |
| .badge-teal { | |
| background: rgba(20, 184, 166, 0.12); | |
| color: #14B8A6; | |
| padding: 2px 10px; | |
| border-radius: 100px; | |
| font-size: 12px; | |
| font-weight: 600; | |
| letter-spacing: 0.02em; | |
| } | |
| .badge-muted { | |
| background: rgba(255, 255, 255, 0.06); | |
| color: #A1A1AA; | |
| padding: 2px 10px; | |
| border-radius: 100px; | |
| font-size: 12px; | |
| font-weight: 500; | |
| } | |
| /* ======================================== | |
| Tab Navigation Enhancement | |
| ======================================== */ | |
| /* Dashboard tab styles */ | |
| .dash-tab { | |
| padding: 10px 16px; | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: #71717A; | |
| border-bottom: 2px solid transparent; | |
| transition: all 0.2s ease; | |
| cursor: pointer; | |
| white-space: nowrap; | |
| } | |
| .dash-tab:hover { | |
| color: #FAFAFA; | |
| background: rgba(255, 255, 255, 0.03); | |
| } | |
| .dash-tab.active { | |
| color: #F59E0B; | |
| border-bottom-color: #F59E0B; | |
| } | |
| /* ======================================== | |
| Tooltip Enhancement | |
| ======================================== */ | |
| /* Custom tooltip */ | |
| .tooltip-wrapper { | |
| position: relative; | |
| } | |
| .tooltip-wrapper .tooltip-text { | |
| visibility: hidden; | |
| opacity: 0; | |
| position: absolute; | |
| bottom: calc(100% + 8px); | |
| left: 50%; | |
| transform: translateX(-50%) translateY(4px); | |
| background: #27272A; | |
| color: #FAFAFA; | |
| padding: 6px 12px; | |
| border-radius: 8px; | |
| font-size: 12px; | |
| white-space: nowrap; | |
| z-index: 50; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); | |
| transition: all 0.2s ease; | |
| pointer-events: none; | |
| } | |
| .tooltip-wrapper:hover .tooltip-text { | |
| visibility: visible; | |
| opacity: 1; | |
| transform: translateX(-50%) translateY(0); | |
| } | |
| /* ======================================== | |
| Animation Enhancements | |
| ======================================== */ | |
| /* Pulse glow for CTA elements */ | |
| @keyframes pulseGlow { | |
| 0%, 100% { box-shadow: 0 0 20px rgba(245, 158, 11, 0.2); } | |
| 50% { box-shadow: 0 0 40px rgba(245, 158, 11, 0.4); } | |
| } | |
| .pulse-glow { | |
| animation: pulseGlow 3s ease-in-out infinite; | |
| } | |
| /* Slide in from right */ | |
| @keyframes slideInRight { | |
| from { opacity: 0; transform: translateX(20px); } | |
| to { opacity: 1; transform: translateX(0); } | |
| } | |
| .slide-in-right { | |
| animation: slideInRight 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Scale in */ | |
| @keyframes scaleIn { | |
| from { opacity: 0; transform: scale(0.95); } | |
| to { opacity: 1; transform: scale(1); } | |
| } | |
| .scale-in { | |
| animation: scaleIn 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Stagger children */ | |
| .stagger-children > *:nth-child(1) { animation-delay: 0ms; } | |
| .stagger-children > *:nth-child(2) { animation-delay: 80ms; } | |
| .stagger-children > *:nth-child(3) { animation-delay: 160ms; } | |
| .stagger-children > *:nth-child(4) { animation-delay: 240ms; } | |
| .stagger-children > *:nth-child(5) { animation-delay: 320ms; } | |
| .stagger-children > *:nth-child(6) { animation-delay: 400ms; } | |
| .stagger-children > * { | |
| opacity: 0; | |
| animation: fadeIn 0.5s ease forwards; | |
| } | |
| /* ======================================== | |
| Table Enhancements | |
| ======================================== */ | |
| /* Modern data table */ | |
| .data-table { | |
| width: 100%; | |
| border-collapse: separate; | |
| border-spacing: 0; | |
| } | |
| .data-table thead th { | |
| padding: 12px 16px; | |
| text-align: left; | |
| font-size: 12px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: #71717A; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| position: sticky; | |
| top: 0; | |
| background: #111113; | |
| z-index: 1; | |
| } | |
| .data-table tbody td { | |
| padding: 12px 16px; | |
| font-size: 14px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| color: #D4D4D8; | |
| } | |
| .data-table tbody tr:last-child td { | |
| border-bottom: none; | |
| } | |
| /* ======================================== | |
| Code Block Style (for API docs) | |
| ======================================== */ | |
| .code-block { | |
| background: #0C0C0E; | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: 10px; | |
| padding: 16px 20px; | |
| font-family: 'Geist Mono', monospace; | |
| font-size: 13px; | |
| line-height: 1.6; | |
| color: #A1A1AA; | |
| overflow-x: auto; | |
| } | |
| .code-block .code-keyword { color: #F59E0B; } | |
| .code-block .code-string { color: #14B8A6; } | |
| .code-block .code-comment { color: #52525B; } | |
| /* ======================================== | |
| Scroll-to-top button | |
| ======================================== */ | |
| .scroll-top-btn { | |
| position: fixed; | |
| bottom: 24px; | |
| right: 24px; | |
| width: 44px; | |
| height: 44px; | |
| border-radius: 12px; | |
| background: rgba(245, 158, 11, 0.15); | |
| border: 1px solid rgba(245, 158, 11, 0.3); | |
| color: #F59E0B; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| opacity: 0; | |
| transform: translateY(8px); | |
| transition: all 0.3s ease; | |
| z-index: 40; | |
| } | |
| .scroll-top-btn.visible { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| .scroll-top-btn:hover { | |
| background: rgba(245, 158, 11, 0.25); | |
| transform: translateY(-2px); | |
| } | |
| /* ======================================== | |
| Empty State | |
| ======================================== */ | |
| .empty-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 48px 24px; | |
| color: #52525B; | |
| } | |
| .empty-state svg { | |
| width: 48px; | |
| height: 48px; | |
| margin-bottom: 16px; | |
| opacity: 0.4; | |
| } | |
| /* ======================================== | |
| Navbar blur | |
| ======================================== */ | |
| .nav-blur { | |
| backdrop-filter: blur(16px) saturate(180%); | |
| background: rgba(9, 9, 11, 0.8); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| /* ======================================== | |
| Detail panel slide-over | |
| ======================================== */ | |
| .detail-panel { | |
| animation: slideInRight 0.3s ease; | |
| border-left: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| /* ======================================== | |
| Notification badge | |
| ======================================== */ | |
| .notification-badge { | |
| position: absolute; | |
| top: -2px; | |
| right: -2px; | |
| width: 8px; | |
| height: 8px; | |
| background: #EF4444; | |
| border-radius: 50%; | |
| border: 2px solid #09090B; | |
| } | |
| /* ======================================== | |
| Animated Drop Zone | |
| ======================================== */ | |
| @keyframes dashRotate { | |
| to { stroke-dashoffset: -20; } | |
| } | |
| .drop-zone-animated { | |
| border: 2px dashed rgba(245, 158, 11, 0.3); | |
| border-radius: 16px; | |
| transition: all 0.3s ease; | |
| background-image: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg stroke='%23F59E0B' stroke-opacity='0.04' stroke-width='1'%3E%3Cpath d='M0 20h40M20 0v40'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); | |
| } | |
| .drop-zone-animated:hover { | |
| border-color: rgba(245, 158, 11, 0.5); | |
| background: rgba(245, 158, 11, 0.03); | |
| } | |
| /* ======================================== | |
| Notification Dropdown | |
| ======================================== */ | |
| .notification-dropdown { | |
| position: absolute; | |
| top: calc(100% + 8px); | |
| right: 0; | |
| width: 320px; | |
| background: #18181B; | |
| border: 1px solid rgba(255,255,255,0.08); | |
| border-radius: 12px; | |
| box-shadow: 0 16px 48px rgba(0,0,0,0.5); | |
| z-index: 100; | |
| overflow: hidden; | |
| } | |
| .notification-item { | |
| padding: 12px 16px; | |
| border-bottom: 1px solid rgba(255,255,255,0.04); | |
| transition: background 0.15s ease; | |
| } | |
| .notification-item:hover { | |
| background: rgba(255,255,255,0.03); | |
| } | |
| .notification-item:last-child { | |
| border-bottom: none; | |
| } | |
| /* ======================================== | |
| Modal / Dialog Overlay | |
| ======================================== */ | |
| .modal-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(0,0,0,0.6); | |
| backdrop-filter: blur(4px); | |
| z-index: 100; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| animation: fadeIn 0.2s ease; | |
| } | |
| .modal-content { | |
| background: #18181B; | |
| border: 1px solid rgba(255,255,255,0.08); | |
| border-radius: 16px; | |
| padding: 24px; | |
| max-width: 480px; | |
| width: 90%; | |
| animation: scaleIn 0.2s ease; | |
| } | |
| /* ======================================== | |
| Enhanced Chat Message Styles | |
| ======================================== */ | |
| .chat-message-user { | |
| background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%); | |
| color: #09090B; | |
| border-radius: 20px 20px 6px 20px; | |
| padding: 12px 16px; | |
| max-width: 80%; | |
| } | |
| .chat-message-assistant { | |
| background: rgba(255,255,255,0.06); | |
| color: #FAFAFA; | |
| border-radius: 20px 20px 20px 6px; | |
| padding: 12px 16px; | |
| max-width: 80%; | |
| border: 1px solid rgba(255,255,255,0.06); | |
| } | |
| .chat-timestamp { | |
| font-size: 11px; | |
| color: rgba(255,255,255,0.3); | |
| margin-top: 4px; | |
| } | |
| /* ======================================== | |
| Button Ripple / Pulse Effect | |
| ======================================== */ | |
| .btn-primary::after { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| border-radius: inherit; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| background: radial-gradient(circle at center, rgba(255,255,255,0.2) 0%, transparent 70%); | |
| } | |
| .btn-primary:active::after { | |
| opacity: 1; | |
| transition: opacity 0s; | |
| } | |
| /* ======================================== | |
| Keyboard Shortcut Badge | |
| ======================================== */ | |
| .kbd { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 2px 6px; | |
| font-size: 11px; | |
| font-family: 'Geist Mono', monospace; | |
| color: #A1A1AA; | |
| background: rgba(255,255,255,0.06); | |
| border: 1px solid rgba(255,255,255,0.1); | |
| border-radius: 6px; | |
| box-shadow: 0 1px 0 rgba(255,255,255,0.05); | |
| line-height: 1.4; | |
| } | |
| /* ======================================== | |
| Checkbox Styling (Batch Operations) | |
| ======================================== */ | |
| .invoice-checkbox { | |
| appearance: none; | |
| width: 16px; | |
| height: 16px; | |
| border: 1.5px solid rgba(255,255,255,0.2); | |
| border-radius: 4px; | |
| background: transparent; | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| position: relative; | |
| } | |
| .invoice-checkbox:checked { | |
| background: #F59E0B; | |
| border-color: #F59E0B; | |
| } | |
| .invoice-checkbox:checked::after { | |
| content: ''; | |
| position: absolute; | |
| left: 4px; | |
| top: 1px; | |
| width: 5px; | |
| height: 9px; | |
| border: solid #09090B; | |
| border-width: 0 2px 2px 0; | |
| transform: rotate(45deg); | |
| } | |
| .invoice-checkbox:hover { | |
| border-color: rgba(245,158,11,0.5); | |
| } | |
| /* ======================================== | |
| Dashboard Footer | |
| ======================================== */ | |
| .dash-footer { | |
| border-top: 1px solid rgba(255,255,255,0.06); | |
| background: rgba(255,255,255,0.01); | |
| margin-top: auto; | |
| } | |
| /* ======================================== | |
| Focus Glow (Subtle Glow on Focus) | |
| ======================================== */ | |
| .focus-glow:focus-visible { | |
| box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.15); | |
| border-color: rgba(245, 158, 11, 0.4); | |
| } | |
| /* ======================================== | |
| Animated Counter (Number Pop) | |
| ======================================== */ | |
| @keyframes numberPop { | |
| 0% { transform: scale(0.8); opacity: 0; } | |
| 60% { transform: scale(1.05); } | |
| 100% { transform: scale(1); opacity: 1; } | |
| } | |
| .number-pop { | |
| animation: numberPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both; | |
| } | |
| /* ======================================== | |
| Select Dropdown Styling | |
| ======================================== */ | |
| .select-field { | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 10px; | |
| padding: 10px 16px; | |
| color: #FAFAFA; | |
| font-size: 14px; | |
| transition: all 0.2s ease; | |
| width: 100%; | |
| 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='%23A1A1AA' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); | |
| background-repeat: no-repeat; | |
| background-position: right 12px center; | |
| padding-right: 36px; | |
| } | |
| .select-field:focus { | |
| outline: none; | |
| border-color: #F59E0B; | |
| box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1); | |
| } | |
| /* ======================================== | |
| Chat Suggestion Chip Hover Glow | |
| ======================================== */ | |
| .chat-suggestion:hover { | |
| box-shadow: 0 0 12px rgba(245, 158, 11, 0.1); | |
| border-color: rgba(245, 158, 11, 0.2); | |
| } | |
| /* ======================================== | |
| Safe Area Padding for iOS | |
| ======================================== */ | |
| .pb-safe { | |
| padding-bottom: max(16px, env(safe-area-inset-bottom)); | |
| } | |
| /* ======================================== | |
| View Transition & Micro-interactions | |
| ======================================== */ | |
| /* Page/View transition */ | |
| @keyframes viewEnter { | |
| from { | |
| opacity: 0; | |
| transform: translateY(12px) scale(0.99); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0) scale(1); | |
| } | |
| } | |
| .view-enter { | |
| animation: viewEnter 0.35s cubic-bezier(0.16, 1, 0.3, 1) both; | |
| } | |
| /* Staggered card entrance */ | |
| @keyframes cardEnter { | |
| from { | |
| opacity: 0; | |
| transform: translateY(16px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .card-enter { | |
| opacity: 0; | |
| animation: cardEnter 0.5s cubic-bezier(0.16, 1, 0.3, 1) both; | |
| } | |
| .card-enter:nth-child(1) { animation-delay: 0ms; } | |
| .card-enter:nth-child(2) { animation-delay: 60ms; } | |
| .card-enter:nth-child(3) { animation-delay: 120ms; } | |
| .card-enter:nth-child(4) { animation-delay: 180ms; } | |
| .card-enter:nth-child(5) { animation-delay: 240ms; } | |
| .card-enter:nth-child(6) { animation-delay: 300ms; } | |
| /* Animated Stat Counter (for landing page stats) */ | |
| @keyframes countSlideUp { | |
| from { opacity: 0; transform: translateY(20px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .stat-animate { | |
| opacity: 0; | |
| animation: countSlideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) both; | |
| } | |
| .stat-animate:nth-child(1) { animation-delay: 0.1s; } | |
| .stat-animate:nth-child(2) { animation-delay: 0.2s; } | |
| .stat-animate:nth-child(3) { animation-delay: 0.3s; } | |
| /* Enhanced Feature Cards with Gradient Border on Hover */ | |
| .feature-card-gradient { | |
| position: relative; | |
| background: rgba(255,255,255,0.03); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255,255,255,0.06); | |
| border-radius: 16px; | |
| overflow: hidden; | |
| transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| .feature-card-gradient::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| border-radius: 16px; | |
| padding: 1px; | |
| background: linear-gradient(135deg, transparent 40%, rgba(245,158,11,0.3) 100%); | |
| -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); | |
| -webkit-mask-composite: xor; | |
| mask-composite: exclude; | |
| opacity: 0; | |
| transition: opacity 0.4s ease; | |
| pointer-events: none; | |
| } | |
| .feature-card-gradient:hover::before { | |
| opacity: 1; | |
| } | |
| .feature-card-gradient:hover { | |
| transform: translateY(-6px); | |
| box-shadow: 0 20px 60px rgba(0,0,0,0.3), 0 0 40px rgba(245,158,11,0.05); | |
| } | |
| /* Pricing Card "Most Popular" ribbon */ | |
| .pricing-ribbon { | |
| position: absolute; | |
| top: -1px; | |
| right: 24px; | |
| background: linear-gradient(135deg, #F59E0B, #D97706); | |
| color: #09090B; | |
| font-size: 11px; | |
| font-weight: 700; | |
| padding: 4px 12px 6px; | |
| border-radius: 0 0 8px 8px; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| } | |
| /* Testimonial Card Enhancements */ | |
| .testimonial-card { | |
| position: relative; | |
| background: rgba(255,255,255,0.03); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255,255,255,0.06); | |
| border-radius: 16px; | |
| padding: 24px; | |
| transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| .testimonial-card:hover { | |
| transform: translateY(-4px) scale(1.01); | |
| border-color: rgba(245,158,11,0.15); | |
| box-shadow: 0 16px 48px rgba(0,0,0,0.2); | |
| } | |
| .testimonial-card::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 24px; | |
| right: 24px; | |
| height: 2px; | |
| background: linear-gradient(90deg, transparent, rgba(245,158,11,0.3), transparent); | |
| opacity: 0; | |
| transition: opacity 0.4s ease; | |
| } | |
| .testimonial-card:hover::after { | |
| opacity: 1; | |
| } | |
| /* Hero Particle/Dot Grid Enhancement */ | |
| .hero-grid-enhanced { | |
| background-image: | |
| radial-gradient(circle at 1px 1px, rgba(245,158,11,0.08) 1px, transparent 0); | |
| background-size: 40px 40px; | |
| } | |
| /* Glow divider between sections */ | |
| .section-glow-divider { | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(245,158,11,0.2) 50%, transparent); | |
| border: none; | |
| } | |
| /* Tab content area subtle background */ | |
| .tab-content-area { | |
| background: linear-gradient(180deg, rgba(255,255,255,0.01) 0%, transparent 100%); | |
| border-radius: 12px; | |
| padding: 24px; | |
| } | |
| /* Activity timeline line animation */ | |
| @keyframes timelineGrow { | |
| from { transform: scaleY(0); } | |
| to { transform: scaleY(1); } | |
| } | |
| .timeline-line-animated { | |
| transform-origin: top; | |
| animation: timelineGrow 0.8s cubic-bezier(0.16, 1, 0.3, 1) both; | |
| animation-delay: 0.3s; | |
| } | |
| /* Enhanced input focus with glow ring */ | |
| .input-field-glow:focus { | |
| outline: none; | |
| border-color: rgba(245, 158, 11, 0.5); | |
| box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.08), 0 0 20px rgba(245, 158, 11, 0.06); | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| /* Subtle hover underline for footer links */ | |
| .footer-link-underline { | |
| position: relative; | |
| color: #A1A1AA; | |
| transition: color 0.2s ease; | |
| cursor: pointer; | |
| } | |
| .footer-link-underline::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -2px; | |
| left: 0; | |
| width: 0; | |
| height: 1px; | |
| background: #F59E0B; | |
| transition: width 0.3s ease; | |
| } | |
| .footer-link-underline:hover { | |
| color: #F59E0B; | |
| } | |
| .footer-link-underline:hover::after { | |
| width: 100%; | |
| } | |
| /* ── Premium CSS Enhancements ── */ | |
| /* CTA button shine sweep effect */ | |
| .btn-shine { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .btn-shine::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); | |
| transition: left 0.5s ease; | |
| } | |
| .btn-shine:hover::before { | |
| left: 100%; | |
| } | |
| /* Floating badge animation on hero */ | |
| @keyframes float { | |
| 0%, 100% { transform: translateY(0px); } | |
| 50% { transform: translateY(-8px); } | |
| } | |
| .float-animation { | |
| animation: float 3s ease-in-out infinite; | |
| } | |
| .float-animation-delayed { | |
| animation: float 3s ease-in-out 1.5s infinite; | |
| } | |
| /* Logo pulse glow */ | |
| @keyframes logoGlow { | |
| 0%, 100% { box-shadow: 0 0 12px rgba(245, 158, 11, 0.2); } | |
| 50% { box-shadow: 0 0 24px rgba(245, 158, 11, 0.4); } | |
| } | |
| .logo-glow { | |
| animation: logoGlow 3s ease-in-out infinite; | |
| } | |
| /* Enhanced glassmorphism for stat cards */ | |
| .stat-card-glass { | |
| background: rgba(255, 255, 255, 0.03); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: 12px; | |
| padding: 16px 20px; | |
| transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .stat-card-glass::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| border-radius: 12px 12px 0 0; | |
| } | |
| .stat-card-glass.card-accent-amber::before { | |
| background: linear-gradient(90deg, transparent, rgba(245, 158, 11, 0.6), transparent); | |
| } | |
| .stat-card-glass.card-accent-teal::before { | |
| background: linear-gradient(90deg, transparent, rgba(20, 184, 166, 0.6), transparent); | |
| } | |
| .stat-card-glass.card-accent-red::before { | |
| background: linear-gradient(90deg, transparent, rgba(239, 68, 68, 0.6), transparent); | |
| } | |
| .stat-card-glass.card-accent-green::before { | |
| background: linear-gradient(90deg, transparent, rgba(34, 197, 94, 0.6), transparent); | |
| } | |
| .stat-card-glass:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2); | |
| border-color: rgba(255, 255, 255, 0.1); | |
| } | |
| /* Enhanced table row hover with left accent bar */ | |
| .invoice-row-enhanced { | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| position: relative; | |
| } | |
| .invoice-row-enhanced:hover { | |
| background: rgba(255, 255, 255, 0.03) ; | |
| } | |
| .invoice-row-enhanced:hover td:first-child { | |
| box-shadow: inset 3px 0 0 -1px rgba(245, 158, 11, 0.5); | |
| } | |
| /* Custom recharts tooltip */ | |
| .recharts-tooltip-custom { | |
| background: rgba(17, 17, 19, 0.95) ; | |
| border: 1px solid rgba(255, 255, 255, 0.08) ; | |
| border-radius: 10px ; | |
| padding: 10px 14px ; | |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3) ; | |
| backdrop-filter: blur(8px) ; | |
| } | |
| .recharts-tooltip-custom .recharts-tooltip-label { | |
| color: #A1A1AA ; | |
| font-size: 11px ; | |
| font-weight: 500 ; | |
| text-transform: uppercase ; | |
| letter-spacing: 0.05em ; | |
| } | |
| .recharts-tooltip-custom .recharts-tooltip-value { | |
| color: #FAFAFA ; | |
| font-size: 13px ; | |
| font-weight: 600 ; | |
| } | |
| /* Smooth mobile nav slide down */ | |
| @keyframes slideDown { | |
| from { opacity: 0; transform: translateY(-8px); max-height: 0; } | |
| to { opacity: 1; transform: translateY(0); max-height: 400px; } | |
| } | |
| .mobile-nav-slide { | |
| animation: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1) both; | |
| overflow: hidden; | |
| } | |
| /* How-it-works step connector line */ | |
| .step-connector { | |
| position: relative; | |
| } | |
| .step-connector::after { | |
| content: ''; | |
| position: absolute; | |
| top: 28px; | |
| left: calc(50% + 32px); | |
| width: calc(100% - 64px); | |
| height: 2px; | |
| background: linear-gradient(90deg, rgba(245, 158, 11, 0.3), rgba(20, 184, 166, 0.3)); | |
| } | |
| .step-connector:last-child::after { | |
| display: none; | |
| } | |
| /* Upload success animation */ | |
| @keyframes successPop { | |
| 0% { transform: scale(0.8); opacity: 0; } | |
| 50% { transform: scale(1.05); } | |
| 100% { transform: scale(1); opacity: 1; } | |
| } | |
| .success-pop { | |
| animation: successPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both; | |
| } | |
| /* Subtle hover effect for FAQ details */ | |
| details.glass-card summary { | |
| transition: background 0.2s ease; | |
| } | |
| details.glass-card summary:hover { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| details.glass-card[open] summary { | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| } | |
| /* ======================================== | |
| Light Theme Overrides | |
| ======================================== */ | |
| /* Base light theme */ | |
| .light { | |
| --background: #FAFAFA; | |
| --foreground: #18181B; | |
| --card: #FFFFFF; | |
| --card-foreground: #18181B; | |
| --popover: #FFFFFF; | |
| --popover-foreground: #18181B; | |
| --primary: #D97706; | |
| --primary-foreground: #FFFFFF; | |
| --secondary: #F4F4F5; | |
| --secondary-foreground: #18181B; | |
| --muted: #F4F4F5; | |
| --muted-foreground: #71717A; | |
| --accent: #F4F4F5; | |
| --accent-foreground: #18181B; | |
| --destructive: #EF4444; | |
| --border: rgba(0, 0, 0, 0.08); | |
| --input: rgba(0, 0, 0, 0.08); | |
| --ring: #D97706; | |
| color-scheme: light; | |
| } | |
| .light body { | |
| background: #FAFAFA; | |
| color: #18181B; | |
| } | |
| /* Light glass cards */ | |
| .light .glass-card, | |
| .light .glass-card-hover { | |
| background: rgba(255, 255, 255, 0.8); | |
| border-color: rgba(0, 0, 0, 0.06); | |
| backdrop-filter: blur(12px); | |
| } | |
| .light .glass-card-hover:hover { | |
| background: rgba(255, 255, 255, 0.95); | |
| border-color: rgba(217, 119, 6, 0.2); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06); | |
| } | |
| /* Light navbar */ | |
| .light .nav-blur { | |
| background: rgba(250, 250, 250, 0.85); | |
| border-bottom-color: rgba(0, 0, 0, 0.06); | |
| } | |
| /* Light input fields */ | |
| .light .input-field, | |
| .light .input-field-glow { | |
| background: #FFFFFF; | |
| border-color: rgba(0, 0, 0, 0.1); | |
| color: #18181B; | |
| } | |
| .light .input-field:focus, | |
| .light .input-field-glow:focus { | |
| border-color: #D97706; | |
| box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.1), 0 0 20px rgba(217, 119, 6, 0.04); | |
| background: #FFFFFF; | |
| } | |
| .light .input-field::placeholder, | |
| .light .input-field-glow::placeholder { | |
| color: #A1A1AA; | |
| } | |
| /* Light buttons */ | |
| .light .btn-ghost { | |
| color: #18181B; | |
| border-color: rgba(0, 0, 0, 0.1); | |
| } | |
| .light .btn-ghost:hover { | |
| background: rgba(0, 0, 0, 0.04); | |
| border-color: rgba(0, 0, 0, 0.15); | |
| } | |
| .light .btn-primary { | |
| background: linear-gradient(135deg, #D97706 0%, #B45309 100%); | |
| color: #FFFFFF; | |
| } | |
| /* Light data table */ | |
| .light .data-table thead th { | |
| color: #71717A; | |
| border-bottom-color: rgba(0, 0, 0, 0.06); | |
| background: #FAFAFA; | |
| } | |
| .light .data-table tbody td { | |
| color: #52525B; | |
| border-bottom-color: rgba(0, 0, 0, 0.04); | |
| } | |
| /* Light stat card */ | |
| .light .stat-card { | |
| background: #FFFFFF; | |
| border-color: rgba(0, 0, 0, 0.06); | |
| } | |
| .light .stat-card:hover { | |
| background: #FAFAFA; | |
| border-color: rgba(0, 0, 0, 0.1); | |
| } | |
| /* Light drop zone */ | |
| .light .drop-zone, | |
| .light .drop-zone-animated { | |
| border-color: rgba(217, 119, 6, 0.3); | |
| background: rgba(217, 119, 6, 0.02); | |
| } | |
| .light .drop-zone:hover, | |
| .light .drop-zone.drag-over { | |
| border-color: #D97706; | |
| background: rgba(217, 119, 6, 0.04); | |
| } | |
| /* Light invoice row */ | |
| .light .invoice-row:hover { | |
| background: rgba(0, 0, 0, 0.02) ; | |
| } | |
| /* Light code block */ | |
| .light .code-block { | |
| background: #F4F4F5; | |
| border-color: rgba(0, 0, 0, 0.06); | |
| color: #52525B; | |
| } | |
| /* Light modal */ | |
| .light .modal-overlay { | |
| background: rgba(0, 0, 0, 0.4); | |
| } | |
| .light .modal-content { | |
| background: #FFFFFF; | |
| border-color: rgba(0, 0, 0, 0.08); | |
| } | |
| /* Light notification dropdown */ | |
| .light .notification-dropdown { | |
| background: #FFFFFF; | |
| border-color: rgba(0, 0, 0, 0.08); | |
| box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12); | |
| } | |
| .light .notification-item:hover { | |
| background: rgba(0, 0, 0, 0.02); | |
| } | |
| /* Light tooltips */ | |
| .light .tooltip-wrapper .tooltip-text { | |
| background: #27272A; | |
| color: #FAFAFA; | |
| } | |
| /* Light kbd */ | |
| .light .kbd { | |
| color: #71717A; | |
| background: #F4F4F5; | |
| border-color: rgba(0, 0, 0, 0.1); | |
| box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05); | |
| } | |
| /* Light footer */ | |
| .light .dash-footer { | |
| border-top-color: rgba(0, 0, 0, 0.06); | |
| background: rgba(0, 0, 0, 0.01); | |
| } | |
| /* Light scroll-to-top */ | |
| .light .scroll-top-btn { | |
| background: rgba(217, 119, 6, 0.1); | |
| border-color: rgba(217, 119, 6, 0.3); | |
| color: #D97706; | |
| } | |
| .light .scroll-top-btn:hover { | |
| background: rgba(217, 119, 6, 0.2); | |
| } | |
| /* Light skeleton shimmer */ | |
| .light .skeleton-shimmer { | |
| background: linear-gradient(90deg, rgba(0,0,0,0.03) 25%, rgba(0,0,0,0.07) 50%, rgba(0,0,0,0.03) 75%); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.5s infinite; | |
| border-radius: 8px; | |
| } | |
| /* Light grid background */ | |
| .light .grid-bg { | |
| background-image: | |
| linear-gradient(rgba(0,0,0,0.03) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(0,0,0,0.03) 1px, transparent 1px); | |
| } | |
| /* Light hero orbs */ | |
| .light .hero-orb { | |
| background: radial-gradient(circle, rgba(217,119,6,0.08) 0%, rgba(13,148,136,0.04) 40%, transparent 70%); | |
| } | |
| .light .hero-orb-2 { | |
| background: radial-gradient(circle, rgba(13,148,136,0.06) 0%, rgba(217,119,6,0.03) 40%, transparent 70%); | |
| } | |
| /* Light hero dot grid */ | |
| .light .hero-grid-enhanced { | |
| background-image: | |
| radial-gradient(circle at 1px 1px, rgba(217,119,6,0.06) 1px, transparent 0); | |
| } | |
| /* Light section glow divider */ | |
| .light .section-glow-divider { | |
| background: linear-gradient(90deg, transparent, rgba(217,119,6,0.15) 50%, transparent); | |
| } | |
| /* Light feature card gradient */ | |
| .light .feature-card-gradient { | |
| background: rgba(255,255,255,0.8); | |
| border-color: rgba(0,0,0,0.06); | |
| } | |
| .light .feature-card-gradient::before { | |
| background: linear-gradient(135deg, transparent 40%, rgba(217,119,6,0.2) 100%); | |
| } | |
| .light .feature-card-gradient:hover { | |
| box-shadow: 0 20px 60px rgba(0,0,0,0.08), 0 0 40px rgba(217,119,6,0.03); | |
| } | |
| /* Light testimonial card */ | |
| .light .testimonial-card { | |
| background: rgba(255,255,255,0.8); | |
| border-color: rgba(0,0,0,0.06); | |
| } | |
| .light .testimonial-card:hover { | |
| border-color: rgba(217,119,6,0.15); | |
| box-shadow: 0 16px 48px rgba(0,0,0,0.08); | |
| } | |
| .light .testimonial-card::after { | |
| background: linear-gradient(90deg, transparent, rgba(217,119,6,0.2), transparent); | |
| } | |
| /* Light pricing highlight */ | |
| .light .pricing-highlight { | |
| border-color: rgba(217,119,6,0.3); | |
| background: linear-gradient(135deg, rgba(217,119,6,0.05) 0%, rgba(13,148,136,0.02) 100%); | |
| } | |
| /* Light tab content area */ | |
| .light .tab-content-area { | |
| background: linear-gradient(180deg, rgba(0,0,0,0.01) 0%, transparent 100%); | |
| } | |
| /* Light noise overlay (very subtle) */ | |
| .light .noise-overlay::before { | |
| opacity: 0.015; | |
| } | |
| /* Light select field */ | |
| .light .select-field { | |
| background: #FFFFFF; | |
| border-color: rgba(0, 0, 0, 0.1); | |
| color: #18181B; | |
| } | |
| .light .select-field:focus { | |
| border-color: #D97706; | |
| box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.1); | |
| } | |
| /* Light badge styles */ | |
| .light .badge-amber { | |
| background: rgba(217, 119, 6, 0.1); | |
| color: #B45309; | |
| } | |
| .light .badge-teal { | |
| background: rgba(13, 184, 166, 0.1); | |
| color: #0D9488; | |
| } | |
| /* Light status badges */ | |
| .light .status-done { background: rgba(34, 197, 94, 0.1); color: #16A34A; } | |
| .light .status-review { background: rgba(234, 179, 8, 0.1); color: #CA8A04; } | |
| .light .status-duplicate { background: rgba(239, 68, 68, 0.1); color: #DC2626; } | |
| /* Light chat bubbles */ | |
| .light .chat-message-user { | |
| background: linear-gradient(135deg, #D97706 0%, #B45309 100%); | |
| color: #FFFFFF; | |
| } | |
| .light .chat-message-assistant { | |
| background: rgba(0, 0, 0, 0.04); | |
| color: #18181B; | |
| border-color: rgba(0, 0, 0, 0.06); | |
| } | |
| .light .chat-timestamp { | |
| color: rgba(0, 0, 0, 0.3); | |
| } | |
| /* Light checkbox */ | |
| .light .invoice-checkbox { | |
| border-color: rgba(0, 0, 0, 0.2); | |
| } | |
| .light .invoice-checkbox:checked { | |
| background: #D97706; | |
| border-color: #D97706; | |
| } | |
| .light .invoice-checkbox:hover { | |
| border-color: rgba(217, 119, 6, 0.5); | |
| } | |
| /* Light amber glow */ | |
| .light .amber-glow { | |
| box-shadow: 0 0 40px rgba(217, 119, 6, 0.1), 0 0 80px rgba(217, 119, 6, 0.03); | |
| } | |
| /* Light focus visible */ | |
| .light *:focus-visible { | |
| outline-color: #D97706; | |
| } | |
| /* Light gradient text */ | |
| .light .gradient-text { | |
| background: linear-gradient(135deg, #D97706 0%, #B45309 40%, #0D9488 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| /* Light scrollbar */ | |
| .light ::-webkit-scrollbar-thumb { | |
| background: rgba(0, 0, 0, 0.12); | |
| } | |
| .light ::-webkit-scrollbar-thumb:hover { | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| /* ── Table Sort Indicators ── */ | |
| .sort-header { | |
| cursor: pointer; | |
| user-select: none; | |
| transition: color 0.15s ease; | |
| } | |
| .sort-header:hover { | |
| color: var(--foreground) ; | |
| } | |
| .sort-indicator { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 16px; | |
| height: 16px; | |
| font-size: 10px; | |
| color: #F59E0B; | |
| margin-left: 4px; | |
| animation: sortPop 0.2s ease; | |
| } | |
| @keyframes sortPop { | |
| 0% { transform: scale(0.5); opacity: 0; } | |
| 100% { transform: scale(1); opacity: 1; } | |
| } | |
| .sort-header-inactive { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 16px; | |
| height: 16px; | |
| margin-left: 4px; | |
| opacity: 0; | |
| transition: opacity 0.15s ease; | |
| } | |
| .sort-header:hover .sort-header-inactive { | |
| opacity: 0.3; | |
| } | |
| /* ── Command Palette ── */ | |
| .command-palette-backdrop { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 60; | |
| background: rgba(0, 0, 0, 0.6); | |
| backdrop-filter: blur(8px); | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: center; | |
| padding-top: 15vh; | |
| animation: commandFadeIn 0.15s ease; | |
| } | |
| @keyframes commandFadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| .command-palette { | |
| width: 100%; | |
| max-width: 560px; | |
| margin: 0 1rem; | |
| background: rgba(24, 24, 27, 0.95); | |
| backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 16px; | |
| box-shadow: 0 25px 60px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.03); | |
| overflow: hidden; | |
| animation: commandSlideIn 0.2s ease; | |
| } | |
| @keyframes commandSlideIn { | |
| from { opacity: 0; transform: translateY(-10px) scale(0.98); } | |
| to { opacity: 1; transform: translateY(0) scale(1); } | |
| } | |
| .command-palette-input { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 16px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| .command-palette-input input { | |
| flex: 1; | |
| background: transparent; | |
| border: none; | |
| outline: none; | |
| color: var(--foreground); | |
| font-size: 14px; | |
| } | |
| .command-palette-input input::placeholder { | |
| color: var(--muted-foreground); | |
| } | |
| .command-palette-results { | |
| max-height: 288px; | |
| overflow-y: auto; | |
| padding: 8px; | |
| } | |
| .command-palette-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| width: 100%; | |
| text-align: left; | |
| padding: 10px 12px; | |
| border-radius: 10px; | |
| font-size: 14px; | |
| color: var(--muted-foreground); | |
| background: transparent; | |
| border: none; | |
| cursor: pointer; | |
| transition: all 0.12s ease; | |
| } | |
| .command-palette-item:hover { | |
| color: var(--foreground); | |
| background: rgba(255, 255, 255, 0.04); | |
| } | |
| .command-palette-item:active { | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| .command-palette-section-title { | |
| padding: 8px 12px 4px; | |
| font-size: 11px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--muted-foreground); | |
| } | |
| .command-palette-result-sub { | |
| font-size: 12px; | |
| color: var(--muted-foreground); | |
| margin-top: 2px; | |
| } | |
| /* ── Duplicate Alert Panel ── */ | |
| .duplicate-alert { | |
| position: relative; | |
| overflow: hidden; | |
| border-color: rgba(245, 158, 11, 0.2) ; | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.03), rgba(245, 158, 11, 0.01)) ; | |
| } | |
| .duplicate-alert::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, transparent, #F59E0B, transparent); | |
| } | |
| /* ── Welcome Panel ── */ | |
| .welcome-panel { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .welcome-panel::before { | |
| content: ''; | |
| position: absolute; | |
| top: -40px; | |
| right: -40px; | |
| width: 120px; | |
| height: 120px; | |
| background: radial-gradient(circle, rgba(245, 158, 11, 0.08), transparent 70%); | |
| border-radius: 50%; | |
| pointer-events: none; | |
| } | |
| .welcome-panel::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -30px; | |
| left: -30px; | |
| width: 100px; | |
| height: 100px; | |
| background: radial-gradient(circle, rgba(20, 184, 166, 0.06), transparent 70%); | |
| border-radius: 50%; | |
| pointer-events: none; | |
| } | |
| .welcome-stat-btn { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 12px; | |
| border-radius: 10px; | |
| background: rgba(255, 255, 255, 0.03); | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| text-align: left; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| color: inherit; | |
| width: 100%; | |
| font-family: inherit; | |
| } | |
| .welcome-stat-btn:hover { | |
| background: rgba(255, 255, 255, 0.06); | |
| border-color: rgba(255, 255, 255, 0.08); | |
| transform: translateY(-1px); | |
| } | |
| .welcome-stat-btn:active { | |
| transform: translateY(0); | |
| } | |
| .welcome-stat-icon { | |
| color: var(--muted-foreground); | |
| transition: color 0.2s ease; | |
| } | |
| .welcome-stat-btn:hover .welcome-stat-icon { | |
| color: #F59E0B; | |
| } | |
| /* ── Settings Toggle Switch ── */ | |
| .toggle-switch { | |
| position: relative; | |
| width: 44px; | |
| height: 24px; | |
| border-radius: 12px; | |
| background: #3f3f46; | |
| border: none; | |
| cursor: pointer; | |
| transition: background 0.2s ease; | |
| padding: 0; | |
| flex-shrink: 0; | |
| } | |
| .toggle-switch.active { | |
| background: #F59E0B; | |
| } | |
| .toggle-switch-knob { | |
| position: absolute; | |
| top: 2px; | |
| left: 2px; | |
| width: 20px; | |
| height: 20px; | |
| border-radius: 50%; | |
| background: white; | |
| transition: transform 0.2s ease; | |
| box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); | |
| } | |
| .toggle-switch.active .toggle-switch-knob { | |
| transform: translateX(20px); | |
| } | |
| /* ── Card Depth Hover ── */ | |
| .card-depth { | |
| transition: transform 0.25s ease, box-shadow 0.25s ease; | |
| } | |
| .card-depth:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.05); | |
| } | |
| /* ── Enhanced Badge System ── */ | |
| .badge-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 2px 10px; | |
| border-radius: 9999px; | |
| font-size: 11px; | |
| font-weight: 500; | |
| letter-spacing: 0.01em; | |
| transition: all 0.15s ease; | |
| } | |
| .badge-pill-dot { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| flex-shrink: 0; | |
| } | |
| .badge-teal-enhanced { | |
| background: rgba(20, 184, 166, 0.1); | |
| color: #14B8A6; | |
| border: 1px solid rgba(20, 184, 166, 0.15); | |
| } | |
| .badge-amber-enhanced { | |
| background: rgba(245, 158, 11, 0.1); | |
| color: #F59E0B; | |
| border: 1px solid rgba(245, 158, 11, 0.15); | |
| } | |
| .badge-red-enhanced { | |
| background: rgba(239, 68, 68, 0.1); | |
| color: #EF4444; | |
| border: 1px solid rgba(239, 68, 68, 0.15); | |
| } | |
| .badge-green-enhanced { | |
| background: rgba(34, 197, 94, 0.1); | |
| color: #22C55E; | |
| border: 1px solid rgba(34, 197, 94, 0.15); | |
| } | |
| /* ── Pulse Dot ── */ | |
| .pulse-dot { | |
| position: relative; | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: #F59E0B; | |
| } | |
| .pulse-dot::after { | |
| content: ''; | |
| position: absolute; | |
| inset: -3px; | |
| border-radius: 50%; | |
| border: 2px solid #F59E0B; | |
| animation: pulseDot 2s ease infinite; | |
| } | |
| @keyframes pulseDot { | |
| 0% { transform: scale(0.8); opacity: 0.8; } | |
| 50% { transform: scale(1.4); opacity: 0; } | |
| 100% { transform: scale(0.8); opacity: 0; } | |
| } | |
| /* ── Teal Gradient Text ── */ | |
| .gradient-text-teal { | |
| background: linear-gradient(135deg, #14B8A6, #5EEAD4); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| /* ── Refined Scrollbar ── */ | |
| .scrollbar-thin::-webkit-scrollbar { | |
| width: 6px; | |
| height: 6px; | |
| } | |
| .scrollbar-thin::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .scrollbar-thin::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.08); | |
| border-radius: 3px; | |
| } | |
| .scrollbar-thin::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.15); | |
| } | |
| /* ── Glass Card Hover Glow ── */ | |
| .glass-card-glow { | |
| position: relative; | |
| transition: all 0.3s ease; | |
| } | |
| .glass-card-glow::after { | |
| content: ''; | |
| position: absolute; | |
| inset: -1px; | |
| border-radius: inherit; | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(20, 184, 166, 0.1), transparent, transparent); | |
| opacity: 0; | |
| z-index: -1; | |
| transition: opacity 0.3s ease; | |
| filter: blur(8px); | |
| } | |
| .glass-card-glow:hover::after { | |
| opacity: 1; | |
| } | |
| /* ── Light Mode: New Class Overrides ── */ | |
| :root.light .command-palette { | |
| background: rgba(255, 255, 255, 0.95); | |
| border-color: rgba(0, 0, 0, 0.08); | |
| box-shadow: 0 25px 60px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.03); | |
| } | |
| :root.light .command-palette-input { | |
| border-bottom-color: rgba(0, 0, 0, 0.06); | |
| } | |
| :root.light .command-palette-item:hover { | |
| background: rgba(0, 0, 0, 0.04); | |
| } | |
| :root.light .duplicate-alert { | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.05), rgba(245, 158, 11, 0.02)) ; | |
| } | |
| :root.light .welcome-panel::before { | |
| background: radial-gradient(circle, rgba(245, 158, 11, 0.1), transparent 70%); | |
| } | |
| :root.light .welcome-panel::after { | |
| background: radial-gradient(circle, rgba(20, 184, 166, 0.08), transparent 70%); | |
| } | |
| :root.light .welcome-stat-btn { | |
| background: rgba(0, 0, 0, 0.02); | |
| border-color: rgba(0, 0, 0, 0.06); | |
| } | |
| :root.light .welcome-stat-btn:hover { | |
| background: rgba(0, 0, 0, 0.04); | |
| border-color: rgba(0, 0, 0, 0.1); | |
| } | |
| :root.light .card-depth:hover { | |
| box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.04); | |
| } | |
| :root.light .toggle-switch { | |
| background: #d4d4d8; | |
| } | |
| :root.light .scrollbar-thin::-webkit-scrollbar-thumb { | |
| background: rgba(0, 0, 0, 0.1); | |
| } | |
| :root.light .scrollbar-thin::-webkit-scrollbar-thumb:hover { | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| :root.light .sort-header-inactive { | |
| opacity: 0; | |
| } | |
| :root.light .sort-header:hover .sort-header-inactive { | |
| opacity: 0.2; | |
| } | |
| :root.light .glass-card-glow::after { | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.2), rgba(20, 184, 166, 0.15), transparent, transparent); | |
| } |