Skip to main content

Overview

Dev Showcase uses CSS custom properties (variables) to make theming simple and maintainable. All theme variables are defined in wwwroot/css/base.css and can be easily customized to match your personal brand.

Color Scheme

The portfolio uses a dark theme with customizable accent colors. All colors are defined as CSS custom properties in the :root selector.

Primary Colors

:root {
    --color-bg-primary: #0a0a0a;
    --color-bg-secondary: #111111;
    --color-bg-tertiary: #1a1a1a;
}
  • Primary Background (--color-bg-primary): Main page background
  • Secondary Background (--color-bg-secondary): Sidebar and card backgrounds
  • Tertiary Background (--color-bg-tertiary): Panel and button backgrounds

Text Colors

:root {
    --color-text-primary: #ffffff;
    --color-text-secondary: rgba(255, 255, 255, 0.7);
    --color-text-tertiary: rgba(255, 255, 255, 0.45);
}
  • Primary Text: Headings and important content
  • Secondary Text: Body text and descriptions
  • Tertiary Text: Subtle labels and metadata

Accent Colors

The red accent color is used throughout the UI for highlights, active states, and call-to-action elements:
:root {
    --color-accent-red: #ff1744;
    --color-accent-red-light: #ff4569;
    --color-accent-btn-hover: rgba(255, 255, 255, 0.08);
}
Where accent colors are used:
  • Active navigation items
  • Hover effects on links and buttons
  • Progress bars and charts
  • Border highlights on cards
  • Download CV button
  • Social media icon hovers

Border Colors

:root {
    --color-border: rgba(255, 255, 255, 0.08);
    --color-border-hover: #404040;
}

Changing Theme Colors

To customize your theme colors, edit the values in wwwroot/css/base.css:

Example: Blue Accent Theme

:root {
    --color-accent-red: #0066ff;
    --color-accent-red-light: #3385ff;
}

Example: Light Background Theme

:root {
    --color-bg-primary: #f5f5f5;
    --color-bg-secondary: #ffffff;
    --color-bg-tertiary: #e8e8e8;
    --color-text-primary: #000000;
    --color-text-secondary: rgba(0, 0, 0, 0.7);
    --color-text-tertiary: rgba(0, 0, 0, 0.45);
    --color-border: rgba(0, 0, 0, 0.08);
    --color-border-hover: #cccccc;
}
After changing colors, refresh your browser to see the changes. Some browsers may require a hard refresh (Ctrl+Shift+R or Cmd+Shift+R).

Typography Settings

Typography is configured in wwwroot/css/base.css:

Font Family

body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    line-height: 1.6;
}
To use a custom font, update the font-family property:
body {
    font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif;
}
If using a web font from Google Fonts or similar, remember to add the font link to your HTML head section.

Heading Sizes

Heading sizes are defined with a consistent hierarchy:
h1 { font-size: 2.5rem; }
h2 { font-size: 2rem; }
h3 { font-size: 1.5rem; }
h4 { font-size: 1.25rem; }
h5 { font-size: 1.1rem; }
Location references:
  • H1: Used in header section (header-content h1)
  • H2: Section titles (Skills, Projects, Education)
  • H3: Subsection titles and card headers
  • H4: Education cards and project details
  • H5: Skill categories

Font Weights

h1, h2, h3, h4, h5, h6 {
    font-weight: 600;
}
Adjust heading weight for bolder or lighter headings:
h1, h2, h3, h4, h5, h6 {
    font-weight: 700; /* Bolder */
}

Transition Settings

Smooth animations are controlled by transition variables:
:root {
    --transition-speed: 0.3s;
    --transition-easing: cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
  • Speed: Duration of hover effects and animations (default: 0.3s)
  • Easing: Animation timing function for smooth transitions

Adjust Animation Speed

For faster animations:
:root {
    --transition-speed: 0.2s;
}
For slower, more elegant animations:
:root {
    --transition-speed: 0.5s;
}

Component-Specific Theming

The sidebar uses theme colors from wwwroot/css/sidebar.css:
.sidebar {
    background-color: var(--color-bg-secondary);
    border-right: 1px solid var(--color-border);
}
Active navigation items:
.nav-button.active {
    background-color: rgba(255, 23, 68, 0.08);
    border-left-color: var(--color-accent-red);
}

Glow Panel Effects

Interactive panels with animated glow borders (defined in wwwroot/css/panels-glow.css):
.glow-panel::before {
    background: linear-gradient(
        var(--angle, 0deg),
        transparent 40%,
        var(--color-accent-red) 50%,
        transparent 60%
    );
}
The glow effect uses the accent color variable, so changing --color-accent-red will automatically update the glow color.

Button Styling

Buttons throughout the site use consistent theming:
.filter button.active {
    background-color: var(--color-accent-red);
    color: #ffffff;
}
CV download button:
.cv-download-btn {
    background-color: var(--color-accent-red);
    color: #ffffff;
}

.cv-download-btn:hover {
    box-shadow: 0 6px 16px rgba(255, 23, 68, 0.35);
}

Best Practices

  • Test contrast: Ensure text remains readable with your color choices
  • Maintain consistency: Use the same accent color throughout
  • Check hover states: Test all interactive elements after color changes
  • Preview on multiple devices: Colors may appear different on various screens
Avoid making text colors too close to background colors, as this will reduce readability. Maintain a contrast ratio of at least 4.5:1 for normal text.

Next Steps

Content Customization

Learn how to update text, projects, and personal information

Styling Guide

Deep dive into CSS architecture and component styling