Morten Sæther

← Blog

Episode 10: Styling and Basic CSS Customization

9 March 2026

Making Your Portal Uniquely Yours with Professional Styling and Brand Identity

Introduction

A well-styled portal doesn’t just look good—it builds trust, enhances usability, and reinforces your brand identity. This episode teaches you how to apply professional styling to your Power Pages portal, implement your brand guidelines consistently, and create custom CSS that enhances rather than complicates the user experience.

Key Concepts

Learning Objectives

By the end of this episode, you will be able to:

Why Professional Styling Matters

First impressions matter tremendously for external-facing portals. Users make judgments about your organization’s credibility and professionalism within seconds of viewing your portal. Professional styling also improves usability by creating clear visual hierarchies, reducing cognitive load, and guiding users toward their goals.

Step-by-Step Guide

1. Understanding Power Pages CSS Architecture

CSS Loading Order in Power Pages:

  1. Bootstrap CSS (base framework)
  2. Power Pages default styles
  3. Theme CSS files
  4. Custom CSS (your customizations)
  5. Inline styles (highest priority)

Key CSS Classes to Know:

/* Power Pages specific classes */
.navbar-nav                /* Main navigation */
.breadcrumb               /* Breadcrumb navigation */
.entitylist               /* List components */
.entityform               /* Form components */
.crmEntityFormView        /* Form containers */
.validation-summary-errors /* Form validation */

2. Setting Up Your Custom CSS Structure

Creating Organized CSS Files:

  1. Navigate to Portal Management:

    • Go to Web Files
    • Create folder: css
    • Upload your CSS files
  2. CSS File Organization:

css/
├── portal-theme.css      (main theme file)
├── components.css        (component-specific styles)
├── responsive.css        (mobile and tablet styles)
├── brand.css            (brand colors, fonts, logos)
└── utilities.css        (helper classes)

Main Theme CSS Structure:

/* portal-theme.css */

/* Custom Properties (CSS Variables) */
:root {
    /* Brand Colors */
    --brand-primary: #0066cc;
    --brand-secondary: #f8f9fa;
    --brand-accent: #28a745;
    
    /* Typography */
    --font-family-primary: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    --font-size-base: 16px;
    --line-height-base: 1.5;
    
    /* Layout */
    --border-radius: 8px;
    --box-shadow-subtle: 0 2px 4px rgba(0,0,0,0.1);
    --transition-standard: all 0.3s ease;
}

/* Base Styles */
body {
    font-family: var(--font-family-primary);
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: #333333;
}

/* Header and Navigation */
.navbar-brand img {
    max-height: 40px;
    width: auto;
}

.navbar-nav .nav-link {
    font-weight: 500;
    padding: 0.75rem 1rem;
    transition: var(--transition-standard);
}

.navbar-nav .nav-link:hover {
    background-color: rgba(255,255,255,0.1);
    border-radius: var(--border-radius);
}

3. Implementing Brand Guidelines

Brand Color Integration:

/* Brand-specific color applications */
.btn-primary {
    background-color: var(--brand-primary);
    border-color: var(--brand-primary);
}

.btn-primary:hover {
    background-color: #0052a3;
    border-color: #004085;
}

.text-primary {
    color: var(--brand-primary) !important;
}

/* Status indicators using brand colors */
.status-active { 
    background-color: var(--brand-accent); 
    color: white; 
}

.status-pending { 
    background-color: #ffc107; 
    color: #333; 
}

4. Styling Power Pages Components

Enhanced Form Styling:

/* Form improvements */
.form-control {
    border: 2px solid #e9ecef;
    border-radius: var(--border-radius);
    padding: 12px 16px;
    font-size: 1rem;
    transition: var(--transition-standard);
}

.form-control:focus {
    border-color: var(--brand-primary);
    box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1);
    outline: none;
}

.form-label {
    font-weight: 600;
    color: #495057;
    margin-bottom: 0.5rem;
    display: block;
}

.required::after {
    content: " *";
    color: #dc3545;
}

Enhanced List Styling:

/* List component improvements */
.entitylist table {
    border-collapse: separate;
    border-spacing: 0;
    border-radius: var(--border-radius);
    overflow: hidden;
    box-shadow: var(--box-shadow-subtle);
}

.entitylist th {
    background-color: var(--brand-primary);
    color: white;
    font-weight: 600;
    padding: 1rem;
    text-align: left;
    border: none;
}

.entitylist td {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #e9ecef;
    vertical-align: middle;
}

.entitylist tbody tr:hover {
    background-color: #f8f9fa;
    cursor: pointer;
}

5. Creating Responsive Designs

Mobile-First Approach:

/* Base styles (mobile first) */
.container-custom {
    padding: 1rem;
}

/* Tablet styles */
@media (min-width: 768px) {
    .container-custom {
        padding: 1.5rem;
    }
    
    .card-grid {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 1.5rem;
    }
}

/* Desktop styles */
@media (min-width: 1024px) {
    .container-custom {
        padding: 3rem;
    }
    
    .card-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

Practical Example: TechStart Solutions Styling

Complete Brand Implementation:

:root {
    /* TechStart brand colors */
    --techstart-blue: #0066cc;
    --techstart-light-blue: #e6f3ff;
    --techstart-dark-blue: #004080;
    
    /* Status colors */
    --status-success: #28a745;
    --status-warning: #ffc107;
    --status-danger: #dc3545;
}

/* Header styling */
.portal-header {
    background: linear-gradient(135deg, var(--techstart-blue) 0%, var(--techstart-dark-blue) 100%);
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.portal-header .navbar-brand {
    font-size: 1.5rem;
    font-weight: 700;
    color: white;
}

/* Page header */
.page-header {
    background: linear-gradient(135deg, var(--techstart-blue) 0%, #0052a3 100%);
    color: white;
    padding: 3rem 0;
    margin-bottom: 1.5rem;
}

Troubleshooting Common Styling Issues

Problem: Custom styles aren’t applying Solution: Check CSS specificity, ensure proper file loading order, clear browser cache

Problem: Responsive design breaks on certain devices Solution: Test with actual devices, verify viewport meta tag, check media query ranges

Problem: Styles conflict with Power Pages defaults Solution: Use more specific selectors, check CSS cascade order, use !important sparingly

Problem: Fonts not loading properly Solution: Verify font file paths, check CORS settings, provide fallback fonts

Best Practices for Portal Styling

  1. Start with a Design System: Define colors, typography, and spacing before writing CSS
  2. Use CSS Custom Properties: Make your styles maintainable with CSS variables
  3. Mobile-First Approach: Design for mobile first, then enhance for larger screens
  4. Performance Matters: Optimize CSS delivery and minimize unused styles
  5. Accessibility First: Ensure sufficient color contrast and keyboard navigation
  6. Test Thoroughly: Validate styles across browsers, devices, and user scenarios

Summary

Professional styling transforms a functional portal into a trustworthy, engaging experience that reflects your brand values. Focus on creating a coherent design system, implementing responsive layouts, and maintaining performance while adding visual appeal. Remember that good design enhances usability rather than complicating it.

This concludes the fundamentals section of our Power Pages learning series. You now have a solid foundation in installation, setup, data integration, security, page creation, content display, data collection, templates, and styling. In the next section, we’ll dive into intermediate topics that will help you create more sophisticated and feature-rich portals.