@import "tailwindcss"; :root { /* Brand colors - TCM Red (hsl(0, 100%, 40%) as base) */ --brand-50: hsl(0, 100%, 97%); --brand-100: hsl(0, 100%, 94%); --brand-200: hsl(0, 100%, 87%); --brand-300: hsl(0, 100%, 75%); --brand-400: hsl(0, 100%, 60%); --brand-500: hsl(0, 100%, 50%); --brand-600: hsl(0, 100%, 40%); --brand-700: hsl(0, 100%, 33%); --brand-800: hsl(0, 100%, 27%); --brand-900: hsl(0, 100%, 22%); --brand-950: hsl(0, 100%, 12%); /* Accent colors - Vibrant emerald for sustainability */ --accent-50: #ecfdf5; --accent-100: #d1fae5; --accent-200: #a7f3d0; --accent-300: #6ee7b7; --accent-400: #34d399; --accent-500: #10b981; --accent-600: #059669; --accent-700: #047857; --accent-800: #065f46; --accent-900: #064e3b; /* Neutral colors */ --neutral-50: #fafafa; --neutral-100: #f5f5f5; --neutral-200: #e5e5e5; --neutral-300: #d4d4d4; --neutral-400: #a3a3a3; --neutral-500: #737373; --neutral-600: #525252; --neutral-700: #404040; --neutral-800: #262626; --neutral-900: #171717; --neutral-950: #0a0a0a; /* Semantic colors */ --background: #ffffff; --foreground: #171717; --muted: #f5f5f5; --muted-foreground: #737373; --border: #e5e5e5; --ring: hsl(0, 100%, 40%); /* Gradients */ --gradient-brand: linear-gradient(135deg, hsl(0, 100%, 33%) 0%, hsl(0, 100%, 40%) 50%, hsl(0, 100%, 50%) 100%); --gradient-brand-reverse: linear-gradient(135deg, hsl(0, 100%, 50%) 0%, hsl(0, 100%, 40%) 100%); --gradient-accent: linear-gradient(135deg, #047857 0%, #10b981 50%, #34d399 100%); --gradient-dark: linear-gradient(135deg, #0a0a0a 0%, #262626 100%); --gradient-hero: linear-gradient(180deg, hsl(0, 50%, 98%) 0%, #ffffff 50%, hsl(0, 20%, 97%) 100%); --gradient-warm: linear-gradient(135deg, hsl(0, 100%, 40%) 0%, hsl(20, 100%, 50%) 100%); /* Shadows */ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); --shadow-glow: 0 0 40px -10px hsl(0, 100%, 40%); --shadow-glow-accent: 0 0 40px -10px rgb(16 185 129 / 0.5); --shadow-brand: 0 4px 14px 0 hsl(0 100% 40% / 0.35); /* Animation timing */ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); --ease-in-out-circ: cubic-bezier(0.85, 0, 0.15, 1); --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); } @media (prefers-color-scheme: dark) { :root { --background: #0a0a0a; --foreground: #fafafa; --muted: #262626; --muted-foreground: #a3a3a3; --border: #404040; } } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { background: var(--background); color: var(--foreground); font-family: var(--font-sans), system-ui, -apple-system, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; } /* Selection styling */ ::selection { background-color: hsl(0, 100%, 40%); color: white; } /* Focus styling */ :focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--muted); } ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, hsl(0, 100%, 50%) 0%, hsl(0, 100%, 40%) 100%); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, hsl(0, 100%, 55%) 0%, hsl(0, 100%, 45%) 100%); } /* Utility classes for animations */ .animate-fade-in { animation: fadeIn 0.6s var(--ease-out-expo) forwards; } .animate-slide-up { animation: slideUp 0.6s var(--ease-out-expo) forwards; } .animate-scale-in { animation: scaleIn 0.5s var(--ease-out-expo) forwards; } .animate-float { animation: float 6s ease-in-out infinite; } .animate-pulse-glow { animation: pulseGlow 2s ease-in-out infinite; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-20px); } } @keyframes pulseGlow { 0%, 100% { box-shadow: 0 0 20px hsl(0 100% 40% / 0.3); } 50% { box-shadow: 0 0 40px hsl(0 100% 40% / 0.6); } } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* Gradient text utility */ .gradient-text { background: var(--gradient-brand); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .gradient-text-accent { background: var(--gradient-accent); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Glass morphism effect */ .glass { background: rgba(255, 255, 255, 0.8); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.3); } @media (prefers-color-scheme: dark) { .glass { background: rgba(10, 10, 10, 0.8); border: 1px solid rgba(255, 255, 255, 0.1); } } /* Noise texture overlay */ .noise-overlay::before { content: ""; position: absolute; inset: 0; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); opacity: 0.02; pointer-events: none; z-index: 1; } /* Animated underline for links */ .animated-underline { position: relative; display: inline-block; } .animated-underline::after { content: ""; position: absolute; bottom: -2px; left: 0; width: 0; height: 2px; background: var(--gradient-brand); transition: width 0.3s var(--ease-out-expo); } .animated-underline:hover::after { width: 100%; } /* Shimmer effect for loading states */ .shimmer { background: linear-gradient( 90deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100% ); background-size: 200% 100%; animation: shimmer 1.5s infinite; } /* Card hover effect */ .card-hover { transition: all 0.4s var(--ease-out-expo); } .card-hover:hover { transform: translateY(-8px); box-shadow: var(--shadow-2xl); } /* Interactive card with border glow */ .card-glow { position: relative; transition: all 0.4s var(--ease-out-expo); } .card-glow::before { content: ""; position: absolute; inset: -2px; background: var(--gradient-brand); border-radius: inherit; opacity: 0; z-index: -1; transition: opacity 0.4s var(--ease-out-expo); } .card-glow:hover::before { opacity: 1; } .card-glow:hover { transform: translateY(-4px); } /* Magnetic button effect helper */ .magnetic { transition: transform 0.3s var(--ease-out-expo); } /* Icon hover rotation */ .icon-spin { transition: transform 0.5s var(--ease-spring); } .icon-spin:hover { transform: rotate(360deg); } /* Section padding utility */ .section-padding { padding: 5rem 1.5rem; } @media (min-width: 768px) { .section-padding { padding: 7rem 2rem; } } @media (min-width: 1024px) { .section-padding { padding: 8rem 4rem; } } /* Container max width */ .container-max { max-width: 1400px; margin: 0 auto; } /* Decorative blob shapes */ .blob { position: absolute; border-radius: 50%; filter: blur(60px); opacity: 0.4; pointer-events: none; } .blob-brand { background: hsl(0, 100%, 70%); } .blob-accent { background: hsl(150, 80%, 60%); } /* Line decoration */ .line-decoration { width: 60px; height: 4px; background: var(--gradient-brand); border-radius: 2px; } /* Stagger animation helper */ .stagger > * { opacity: 0; animation: slideUp 0.6s var(--ease-out-expo) forwards; } .stagger > *:nth-child(1) { animation-delay: 0.1s; } .stagger > *:nth-child(2) { animation-delay: 0.2s; } .stagger > *:nth-child(3) { animation-delay: 0.3s; } .stagger > *:nth-child(4) { animation-delay: 0.4s; } .stagger > *:nth-child(5) { animation-delay: 0.5s; } .stagger > *:nth-child(6) { animation-delay: 0.6s; } /* Text shadow for headings */ .text-shadow { text-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); } /* Hover lift effect */ .hover-lift { transition: transform 0.3s var(--ease-out-expo), box-shadow 0.3s var(--ease-out-expo); } .hover-lift:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); } /* Scale on hover */ .hover-scale { transition: transform 0.3s var(--ease-spring); } .hover-scale:hover { transform: scale(1.05); } /* Rotate on hover */ .hover-rotate { transition: transform 0.4s var(--ease-spring); } .hover-rotate:hover { transform: rotate(3deg); } /* Border gradient effect */ .border-gradient { position: relative; background: var(--background); } .border-gradient::before { content: ""; position: absolute; inset: 0; padding: 2px; background: var(--gradient-brand); border-radius: inherit; mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask-composite: exclude; -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; pointer-events: none; }