Custom CSS Practices

Modern styling techniques without Tailwind.

Design Foundations

Color System

Uses semantic CSS variables for consistent theming:

:root {
    --color-blue-600: #3b82f6;
    --color-indigo-500: #6366f1;
    /* Complete palette of 15+ named colors */
}

Typography

System font stack with accessible sizing:

body {
    font-family: system-ui, sans-serif;
    font-size: 1.125rem;
    line-height: 1.8;
}

Modern Visual Effects

Glassmorphism

Transparent cards with blurred backgrounds:

.card {
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

Gradients & Transitions

Smooth color transitions and hover states:

header {
    background: linear-gradient(to right, var(--color-blue-600), var(--color-indigo-500));
    transition: 0.3s ease;
}

a:hover {
    color: #a855f7 !important;
}

Interactive Elements

Micro-interactions for buttons and cards:

button:hover {
    transform: translateY(-2px);
    box-shadow: 0 0 1.5rem rgba(0, 0, 0, 0.4);
}

section:hover {
    transform: scale(1.01);
}

Best Practices

Modular Approach

Styles follow a component-based system with clear naming conventions.

/* Base elements first (html, body) */
/* Utility classes last (.transition-colors, .grid-layout) */

Accessibility Focus

High-contrast color combinations and semantic markup ensure:

  • • Minimum 4.5:1 text contrast ratio
  • • Focus states for keyboard navigation
  • • ARIA semantic elements where required

Browser Support

Target Browsers

  • • Firefox 100+
  • • Chrome 110+
  • • Safari 16+
  • • Edge 120+
  • • Chrome for Android 112+

We use PostCSS with @layer to ensure consistent rendering across modern browsers.