mtextylelastedweb / css /global.css
ibrohm's picture
Initial deploy via assistant API
7b3aac2 verified
/* ========================================
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);
}