/* ======================================== DESIGN SYSTEM — Kiyim-Kechak Do'koni ======================================== */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); /* --- CSS Custom Properties --- */ :root { /* Primary Palette — Premium Teal */ --clr-bg-primary: #0A1A1F; --clr-bg-secondary: #0F2830; --clr-accent: #1B6B7D; --clr-accent-light: #22A5BB; --clr-mid: #3D8A9A; --clr-light: #B0D4DC; --clr-gray: #5A6D75; /* Gold Accent */ --clr-gold: #D4A847; --clr-gold-light: #F0D78C; /* Semantic Colors */ --clr-text-primary: #ECF0F2; --clr-text-secondary: #9BB0B8; --clr-text-muted: #5C7A85; --clr-surface: rgba(15, 40, 48, 0.85); --clr-surface-solid: #0F2830; --clr-surface-hover: #153540; --clr-border: rgba(59, 138, 154, 0.15); --clr-border-hover: rgba(59, 138, 154, 0.35); /* Accent Colors */ --clr-success: #34D399; --clr-warning: #FBBF24; --clr-error: #F87171; --clr-info: #60A5FA; /* Glass Effect */ --glass-bg: rgba(15, 40, 48, 0.6); --glass-border: rgba(59, 138, 154, 0.12); --glass-blur: 24px; --glass-highlight: rgba(255, 255, 255, 0.04); /* Typography */ --font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; --fs-xs: 0.75rem; --fs-sm: 0.875rem; --fs-base: 1rem; --fs-md: 1.125rem; --fs-lg: 1.25rem; --fs-xl: 1.5rem; --fs-2xl: 2rem; --fs-3xl: 2.5rem; --fs-4xl: 3.5rem; --fw-light: 300; --fw-regular: 400; --fw-medium: 500; --fw-semibold: 600; --fw-bold: 700; --fw-extrabold: 800; /* Spacing */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; --space-3xl: 4rem; --space-4xl: 6rem; /* Border Radius */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 18px; --radius-xl: 28px; --radius-full: 9999px; /* Shadows — Premium with colored glow */ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.2); --shadow-md: 0 4px 20px rgba(0, 0, 0, 0.25), 0 0 40px rgba(27, 107, 125, 0.05); --shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.3), 0 0 60px rgba(27, 107, 125, 0.08); --shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.4), 0 0 80px rgba(27, 107, 125, 0.1); --shadow-glow: 0 0 30px rgba(27, 107, 125, 0.25); --shadow-glow-gold: 0 0 30px rgba(212, 168, 71, 0.2); /* Transitions */ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-base: 280ms cubic-bezier(0.4, 0, 0.2, 1); --transition-slow: 450ms cubic-bezier(0.4, 0, 0.2, 1); --transition-spring: 500ms cubic-bezier(0.34, 1.56, 0.64, 1); /* Layout */ --container-max: 1280px; --container-padding: 1.5rem; --navbar-height: 72px; } /* --- Light Mode --- */ [data-theme="light"] { --clr-bg-primary: #F3F6F9; --clr-bg-secondary: #FFFFFF; --clr-accent: #1B6B7D; --clr-accent-light: #22A5BB; --clr-mid: #3D8A9A; --clr-light: #1A3540; --clr-gray: #8899A4; --clr-gold: #B8922F; --clr-gold-light: #D4A847; --clr-text-primary: #0F2830; --clr-text-secondary: #3A5A66; --clr-text-muted: #6A8A96; --clr-surface: rgba(255, 255, 255, 0.95); --clr-surface-solid: #FFFFFF; --clr-surface-hover: #EBF2F5; --clr-border: rgba(27, 107, 125, 0.1); --clr-border-hover: rgba(27, 107, 125, 0.25); --glass-bg: rgba(255, 255, 255, 0.85); --glass-border: rgba(27, 107, 125, 0.08); --glass-highlight: rgba(255, 255, 255, 0.5); --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 20px rgba(0, 0, 0, 0.06), 0 0 40px rgba(27, 107, 125, 0.03); --shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.08), 0 0 60px rgba(27, 107, 125, 0.04); --shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.1), 0 0 80px rgba(27, 107, 125, 0.06); --shadow-glow: 0 0 30px rgba(27, 107, 125, 0.12); --shadow-glow-gold: 0 0 30px rgba(212, 168, 71, 0.1); } /* --- Reset --- */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; } body { font-family: var(--font-family); font-size: var(--fs-base); font-weight: var(--fw-regular); line-height: 1.6; color: var(--clr-text-primary); background-color: var(--clr-bg-primary); background-image: radial-gradient(ellipse at 20% 50%, rgba(27, 107, 125, 0.06) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(61, 138, 154, 0.04) 0%, transparent 50%), radial-gradient(ellipse at 50% 100%, rgba(212, 168, 71, 0.02) 0%, transparent 40%); min-height: 100vh; overflow-x: hidden; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a { text-decoration: none; color: inherit; transition: color var(--transition-fast); } a:hover { color: var(--clr-light); } img { max-width: 100%; height: auto; display: block; } ul, ol { list-style: none; } button { cursor: pointer; border: none; background: none; font-family: inherit; font-size: inherit; color: inherit; outline: none; } input, select, textarea { font-family: inherit; font-size: inherit; color: inherit; outline: none; border: none; background: none; } /* --- Dark Mode Switch --- */ .dark-mode-toggle { background: none; border: none; font-size: var(--fs-xl); cursor: pointer; color: var(--clr-text-secondary); transition: transform var(--transition-spring), color var(--transition-fast); } .dark-mode-toggle:hover { transform: scale(1.1) rotate(15deg); color: var(--clr-text-primary); } /* --- Custom Scrollbar --- */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--clr-bg-primary); } ::-webkit-scrollbar-thumb { background: var(--clr-mid); border-radius: var(--radius-full); } ::-webkit-scrollbar-thumb:hover { background: var(--clr-mid); } /* --- Container --- */ .container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--container-padding); width: 100%; } .container-narrow { max-width: 960px; margin: 0 auto; padding: 0 var(--container-padding); } .container-wide { max-width: 1440px; margin: 0 auto; padding: 0 var(--container-padding); } /* --- Grid System --- */ .grid { display: grid; gap: var(--space-lg); } .grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } .grid-5 { grid-template-columns: repeat(5, 1fr); } /* --- Flexbox Utilities --- */ .flex { display: flex; } .flex-col { flex-direction: column; } .flex-wrap { flex-wrap: wrap; } .items-center { align-items: center; } .items-start { align-items: flex-start; } .items-end { align-items: flex-end; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .justify-end { justify-content: flex-end; } .gap-xs { gap: var(--space-xs); } .gap-sm { gap: var(--space-sm); } .gap-md { gap: var(--space-md); } .gap-lg { gap: var(--space-lg); } .gap-xl { gap: var(--space-xl); } .gap-2xl { gap: var(--space-2xl); } /* --- Typography --- */ h1, h2, h3, h4, h5, h6 { line-height: 1.2; font-weight: var(--fw-bold); color: var(--clr-text-primary); } h1 { font-size: var(--fs-4xl); } h2 { font-size: var(--fs-3xl); } h3 { font-size: var(--fs-2xl); } h4 { font-size: var(--fs-xl); } h5 { font-size: var(--fs-lg); } h6 { font-size: var(--fs-md); } .text-xs { font-size: var(--fs-xs); } .text-sm { font-size: var(--fs-sm); } .text-base { font-size: var(--fs-base); } .text-md { font-size: var(--fs-md); } .text-lg { font-size: var(--fs-lg); } .text-xl { font-size: var(--fs-xl); } .text-2xl { font-size: var(--fs-2xl); } .text-light { font-weight: var(--fw-light); } .text-medium { font-weight: var(--fw-medium); } .text-semibold { font-weight: var(--fw-semibold); } .text-bold { font-weight: var(--fw-bold); } .text-muted { color: var(--clr-text-muted); } .text-secondary { color: var(--clr-text-secondary); } .text-center { text-align: center; } .text-uppercase { text-transform: uppercase; letter-spacing: 0.08em; } /* --- Spacing Utilities --- */ .mt-sm { margin-top: var(--space-sm); } .mt-md { margin-top: var(--space-md); } .mt-lg { margin-top: var(--space-lg); } .mt-xl { margin-top: var(--space-xl); } .mt-2xl { margin-top: var(--space-2xl); } .mt-3xl { margin-top: var(--space-3xl); } .mb-sm { margin-bottom: var(--space-sm); } .mb-md { margin-bottom: var(--space-md); } .mb-lg { margin-bottom: var(--space-lg); } .mb-xl { margin-bottom: var(--space-xl); } .mb-2xl { margin-bottom: var(--space-2xl); } .mb-3xl { margin-bottom: var(--space-3xl); } .pt-sm { padding-top: var(--space-sm); } .pt-md { padding-top: var(--space-md); } .pt-lg { padding-top: var(--space-lg); } .pt-xl { padding-top: var(--space-xl); } .section-padding { padding: var(--space-4xl) 0; } /* --- Animations --- */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInDown { from { opacity: 0; transform: translateY(-24px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideInLeft { from { opacity: 0; transform: translateX(-32px); } to { opacity: 1; transform: translateX(0); } } @keyframes slideInRight { from { opacity: 0; transform: translateX(32px); } to { opacity: 1; transform: translateX(0); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } } .animate-fade-in { animation: fadeIn var(--transition-slow) ease-out; } .animate-fade-in-up { animation: fadeInUp var(--transition-slow) ease-out; } .animate-fade-in-down { animation: fadeInDown var(--transition-slow) ease-out; } .animate-slide-left { animation: slideInLeft var(--transition-slow) ease-out; } .animate-slide-right { animation: slideInRight var(--transition-slow) ease-out; } .animate-scale-in { animation: scaleIn var(--transition-spring); } /* Staggered Animation */ .stagger>* { opacity: 0; animation: fadeInUp 0.5s ease-out forwards; } .stagger>*:nth-child(1) { animation-delay: 0.05s; } .stagger>*:nth-child(2) { animation-delay: 0.1s; } .stagger>*:nth-child(3) { animation-delay: 0.15s; } .stagger>*:nth-child(4) { animation-delay: 0.2s; } .stagger>*:nth-child(5) { animation-delay: 0.25s; } .stagger>*:nth-child(6) { animation-delay: 0.3s; } .stagger>*:nth-child(7) { animation-delay: 0.35s; } .stagger>*:nth-child(8) { animation-delay: 0.4s; } /* Intersection Observer Animation */ .reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; } .reveal.visible { opacity: 1; transform: translateY(0); } /* --- Page Layout --- */ .page-wrapper { min-height: 100vh; display: flex; flex-direction: column; } .page-content { flex: 1; padding-top: var(--navbar-height); } /* --- Section Headers --- */ .section-header { text-align: center; margin-bottom: var(--space-3xl); } .section-header h2 { margin-bottom: var(--space-sm); } .section-header .section-subtitle { color: var(--clr-text-muted); font-size: var(--fs-md); max-width: 600px; margin: 0 auto; } .section-header .section-line { width: 60px; height: 3px; background: linear-gradient(90deg, var(--clr-accent), var(--clr-mid)); margin: var(--space-md) auto 0; border-radius: var(--radius-full); } /* --- Responsive Breakpoints --- */ @media (max-width: 1024px) { :root { --fs-4xl: 2.5rem; --fs-3xl: 2rem; } .grid-4 { grid-template-columns: repeat(3, 1fr); } .grid-5 { grid-template-columns: repeat(3, 1fr); } } @media (max-width: 768px) { :root { --fs-4xl: 2rem; --fs-3xl: 1.75rem; --fs-2xl: 1.5rem; --container-padding: 1rem; --navbar-height: 64px; } .grid-2 { grid-template-columns: 1fr; } .grid-3 { grid-template-columns: repeat(2, 1fr); } .grid-4 { grid-template-columns: repeat(2, 1fr); } .grid-5 { grid-template-columns: repeat(2, 1fr); } .section-padding { padding: var(--space-3xl) 0; } .hide-mobile { display: none !important; } } @media (max-width: 480px) { .grid-3 { grid-template-columns: 1fr; } .grid-4 { grid-template-columns: 1fr; } } /* --- Skeleton Loading --- */ .skeleton { background: linear-gradient(90deg, var(--clr-surface) 25%, var(--clr-accent) 50%, var(--clr-surface) 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: var(--radius-md); }