@import url('https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,400&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; /* ============================================================ DESIGN TOKENS ============================================================ */ :root { /* ── Brand Colors (Chandra & Sons Pharma) ── */ --primary: #0D7B8A; /* Deep teal */ --primary-dark: #0A5C67; /* Darker teal for hover */ --primary-light: #E6F4F6; /* Teal tint for backgrounds */ --accent: #F4A922; /* Amber — CTAs, highlights */ --accent-dark: #C47E0A; /* Darker amber for hover */ --success: #27AE60; /* Green */ --dark: #1A2332; /* Near-black navy */ --text: #1A2332; --text-muted: #5A6A7A; --bg: #F5F7FA; --border: #E2E8F0; --white: #FFFFFF; --shadow-xs: 0 1px 4px rgba(13,123,138,0.05); --shadow-sm: 0 2px 12px rgba(13,123,138,0.08); --shadow-md: 0 6px 28px rgba(13,123,138,0.12); --shadow-lg: 0 12px 48px rgba(13,123,138,0.16); --shadow-glow: 0 0 60px rgba(13,123,138,0.25); --shadow-btn: 0 4px 18px rgba(13,123,138,0.35); --shadow-accent:0 6px 24px rgba(244,169,34,0.38); --r-sm: 8px; --r-md: 14px; --r-lg: 20px; --r-xl: 28px; --r-2xl: 40px; } /* ============================================================ BASE ============================================================ */ @layer base { html { scroll-behavior: smooth; } body { font-family: 'Inter', system-ui, -apple-system, sans-serif; color: var(--text); background: var(--white); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } h1, h2, h3, h4, h5, h6 { font-weight: 700; line-height: 1.15; color: var(--dark); letter-spacing: -0.025em; } ::selection { background: var(--primary); color: white; } ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 99px; } } /* ============================================================ COMPONENTS ============================================================ */ @layer components { /* ─── Buttons ─── */ .btn { @apply inline-flex items-center justify-center gap-2 font-semibold rounded-xl cursor-pointer select-none; padding: 0.8125rem 1.875rem; font-size: 0.9375rem; letter-spacing: -0.01em; transition: background 0.2s, box-shadow 0.2s, transform 0.15s; } .btn-primary { @apply btn text-white; background: var(--primary); box-shadow: var(--shadow-btn); } .btn-primary:hover { background: var(--primary-dark); box-shadow: 0 8px 28px rgba(13,123,138,0.45); transform: translateY(-2px); } .btn-accent { @apply btn; background: var(--accent); color: #1A2332; box-shadow: var(--shadow-accent); } .btn-accent:hover { background: var(--accent-dark); color: #fff; box-shadow: 0 10px 32px rgba(244,169,34,0.50); transform: translateY(-2px); } .btn-outline { @apply btn border-2 bg-transparent; border-color: var(--primary); color: var(--primary); } .btn-outline:hover { background: var(--primary); color: white; transform: translateY(-2px); box-shadow: var(--shadow-btn); } .btn-outline-white { @apply btn border-2 bg-transparent text-white; border-color: rgba(255,255,255,0.55); } .btn-outline-white:hover { background: white; color: var(--primary); border-color: white; transform: translateY(-2px); } /* ─── Cards ─── */ .card { background: var(--white); border-radius: var(--r-lg); border: 1px solid var(--border); box-shadow: var(--shadow-sm); transition: box-shadow 0.25s, transform 0.25s, border-color 0.25s; } .card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); border-color: rgba(13,123,138,0.22); } .card-glass { background: rgba(255,255,255,0.82); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border-radius: var(--r-lg); border: 1px solid rgba(255,255,255,0.65); box-shadow: var(--shadow-md); } .card-dark { background: rgba(11,31,43,0.75); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: var(--r-lg); border: 1px solid rgba(255,255,255,0.10); box-shadow: var(--shadow-lg); } /* ─── Badges ─── */ .badge { @apply inline-flex items-center gap-1.5 font-semibold rounded-full; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; padding: 0.3rem 0.85rem; } .badge-primary { @apply badge; background: var(--primary-light); color: var(--primary); } .badge-accent { @apply badge; background: #FEF3CD; color: var(--accent-dark); } .badge-white { @apply badge text-white; background: rgba(255,255,255,0.18); } .badge-dark { @apply badge text-white; background: var(--dark); } /* ─── Section Typography ─── */ .section-eyebrow { display: block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--primary); margin-bottom: 0.75rem; } .section-title { font-size: clamp(1.75rem, 3.5vw, 2.5rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.15; color: var(--dark); } .section-subtitle { font-size: 1.0625rem; line-height: 1.7; color: var(--text-muted); margin-top: 1rem; } /* ─── Divider accent ─── */ .accent-line { display: block; width: 44px; height: 4px; border-radius: 99px; background: var(--accent); margin-top: 1rem; } /* ─── Nav Link ─── */ .nav-link { position: relative; font-size: 0.875rem; font-weight: 500; color: var(--text-muted); transition: color 0.2s; padding-bottom: 2px; } .nav-link::after { content: ''; position: absolute; bottom: -3px; left: 0; width: 0; height: 2px; background: var(--primary); border-radius: 99px; transition: width 0.3s ease; } .nav-link:hover { color: var(--primary); } .nav-link:hover::after { width: 100%; } .nav-link.active { color: var(--primary); } .nav-link.active::after{ width: 100%; } /* ─── Form Inputs ─── */ .form-label { display: block; font-size: 0.8125rem; font-weight: 600; color: var(--text); margin-bottom: 0.375rem; letter-spacing: -0.01em; } .form-input { width: 100%; border-radius: var(--r-md); border: 1.5px solid var(--border); background: var(--white); padding: 0.75rem 1rem; font-size: 0.9375rem; font-family: 'Inter', sans-serif; color: var(--text); transition: border-color 0.2s, box-shadow 0.2s; outline: none; appearance: none; } .form-input::placeholder { color: var(--text-muted); font-weight: 400; } .form-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(13,123,138,0.12); } /* ─── Gradient Text ─── */ .gradient-text { background: linear-gradient(135deg, var(--primary), #22C55E 80%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ─── Icon Box ─── */ .icon-box { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: var(--r-md); background: var(--primary-light); color: var(--primary); flex-shrink: 0; transition: background 0.2s, color 0.2s; } /* ─── Floating Action Buttons ─── */ /* WhatsApp pulse ring */ .fab-wa-pulse { position: relative; } .fab-wa-pulse::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: #25D366; animation: wa-ping 2.2s ease-out infinite; z-index: -1; } /* Diary FAB pulse ring */ .fab-diary { position: relative; } .fab-diary::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: var(--primary); animation: wa-ping 3s ease-out infinite; z-index: -1; } } /* ============================================================ ANIMATIONS & KEYFRAMES ============================================================ */ @keyframes wa-ping { 0% { transform: scale(1); opacity: 0.55; } 100% { transform: scale(1.9); opacity: 0; } } @keyframes fadeUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes float { 0%, 100% { transform: translateY(0px); } 45% { transform: translateY(-14px); } 65% { transform: translateY(-8px); } } @keyframes floatReverse { 0%, 100% { transform: translateY(0px) rotate(0deg); } 45% { transform: translateY(10px) rotate(3deg); } } @keyframes orbitSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes orbitSpinReverse { from { transform: rotate(0deg); } to { transform: rotate(-360deg); } } @keyframes pillBounce { 0%, 100% { transform: translateY(0) rotate(-12deg); } 50% { transform: translateY(-18px) rotate(-12deg); } } @keyframes glowPulse { 0%, 100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.08); } } @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } } @keyframes countUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } /* Utility animation classes */ .animate-fade-up { animation: fadeUp 0.65s cubic-bezier(0.22,1,0.36,1) both; } .animate-fade-up-1 { animation: fadeUp 0.65s 0.10s cubic-bezier(0.22,1,0.36,1) both; } .animate-fade-up-2 { animation: fadeUp 0.65s 0.20s cubic-bezier(0.22,1,0.36,1) both; } .animate-fade-up-3 { animation: fadeUp 0.65s 0.30s cubic-bezier(0.22,1,0.36,1) both; } .animate-fade-up-4 { animation: fadeUp 0.65s 0.42s cubic-bezier(0.22,1,0.36,1) both; } .animate-fade-up-5 { animation: fadeUp 0.65s 0.54s cubic-bezier(0.22,1,0.36,1) both; } .animate-float { animation: float 5s ease-in-out infinite; } .animate-float-slow { animation: float 7s ease-in-out infinite; } .animate-float-delay { animation: float 5s 1.5s ease-in-out infinite; } .animate-float-rev { animation: floatReverse 6s ease-in-out infinite; } /* ============================================================ BRAND CAROUSEL ============================================================ */ .brand-carousel { overflow: hidden; position: relative; padding: 0.5rem 0; } .brand-carousel::before, .brand-carousel::after { content: ''; position: absolute; top: 0; bottom: 0; width: 100px; z-index: 2; pointer-events: none; } .brand-carousel::before { left: 0; background: linear-gradient(to right, white, transparent); } .brand-carousel::after { right: 0; background: linear-gradient(to left, white, transparent); } .brand-track { display: flex; gap: 1.25rem; width: max-content; animation: marquee 32s linear infinite; } .brand-track:hover { animation-play-state: paused; } /* ============================================================ HERO ============================================================ */ .hero-gradient { background: linear-gradient(130deg, #05202C 0%, #0D7B8A 55%, #0B6170 100%); } .hero-overlay { background: linear-gradient( 110deg, rgba(5,32,44,0.95) 0%, rgba(13,94,107,0.80) 45%, rgba(13,123,138,0.35) 100% ); } /* ============================================================ SCROLL REVEAL ============================================================ */ .reveal { opacity: 0; transform: translateY(32px); transition: opacity 0.65s cubic-bezier(0.22,1,0.36,1), transform 0.65s cubic-bezier(0.22,1,0.36,1); } .reveal.visible { opacity: 1; transform: none; } .reveal-delay-1 { transition-delay: 0.10s; } .reveal-delay-2 { transition-delay: 0.20s; } .reveal-delay-3 { transition-delay: 0.30s; } /* ============================================================ FAQ ACCORDION ============================================================ */ .faq-content { max-height: 0; overflow: hidden; transition: max-height 0.38s cubic-bezier(0.22,1,0.36,1), padding 0.2s; } .faq-content.open { max-height: 600px; } /* ============================================================ MISC ============================================================ */ .text-balance { text-wrap: balance; } .counter-number { font-variant-numeric: tabular-nums; } .ring-teal { box-shadow: 0 0 0 4px rgba(13,123,138,0.15); } /* ============================================================ RESPONSIVE UTILITIES ============================================================ */ /* Prevent horizontal overflow globally */ html, body { max-width: 100vw; overflow-x: hidden; } /* Mobile-specific adjustments */ @media (max-width: 640px) { /* Section padding */ section { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } /* Hero section on mobile */ .section-title { font-size: clamp(1.5rem, 7vw, 2rem) !important; } .section-subtitle { font-size: 0.9375rem !important; } /* Buttons on mobile */ .btn { padding: 0.75rem 1.375rem !important; font-size: 0.875rem !important; } /* Card padding reduction */ .card { border-radius: var(--r-md) !important; } /* Brand carousel */ .brand-carousel::before, .brand-carousel::after { width: 40px !important; } /* Form inputs */ .form-input { padding: 0.6875rem 0.875rem !important; font-size: 0.875rem !important; } } /* Tablet */ @media (max-width: 768px) { .section-title { font-size: clamp(1.625rem, 5vw, 2.25rem) !important; } } /* Fix: floating stat cards don't overflow on small screens */ @media (max-width: 1024px) { .absolute.-bottom-5.-right-5 { position: static !important; margin-top: 1rem !important; display: inline-block !important; } } /* Enquiry form on mobile */ @media (max-width: 640px) { .fi-simple-main { padding: 1rem !important; } } /* Fix stats section grid on very small screens */ @media (max-width: 400px) { .grid.grid-cols-2 { grid-template-columns: 1fr !important; } }