HostModules Docs

SCSS Variables

_variables.scss contains all the design tokens that control the visual appearance of the order form. Override these values to match your brand.

Where to make changes

Edit _variables.scss to change token values, then run npm run build in the template directory. Your changes to _variables.scss are not overwritten during addon updates.

Wait — actually, _variables.scss can be overwritten on update. The safest practice is to note which variables you changed and also add a comment block in _custom.scss with your overrides.

Colors

// Brand
$color-primary:         #1a3a1a;    // Sidebar and primary UI color
$color-accent:          #5ddb5d;    // Buttons, links, highlights
$color-accent-hover:    #3ab53a;    // Accent hover state

// Backgrounds
$color-bg-body:         #ffffff;    // Page background
$color-bg-card:         #f8fafc;    // Card / section backgrounds
$color-bg-input:        #ffffff;    // Form input backgrounds

// Text
$color-text-primary:    #111827;    // Body text
$color-text-secondary:  #6b7280;    // Muted text, labels
$color-text-inverse:    #ffffff;    // Text on dark backgrounds

// Borders
$color-border:          #e5e7eb;    // Default border color
$color-border-focus:    $color-accent; // Input focus border

// Status colors
$color-success:         #10b981;
$color-warning:         #f59e0b;
$color-danger:          #ef4444;
$color-info:            #3b82f6;

Typography

$font-family-base:      'Inter', 'ui-sans-serif', system-ui, sans-serif;
$font-family-mono:      'JetBrains Mono', 'ui-monospace', monospace;

$font-size-base:        16px;
$font-size-sm:          14px;
$font-size-xs:          12px;
$font-size-lg:          18px;
$font-size-xl:          20px;

$font-weight-normal:    400;
$font-weight-medium:    500;
$font-weight-semibold:  600;
$font-weight-bold:      700;

$line-height-base:      1.6;
$line-height-tight:     1.25;

Spacing

$spacing-xs:   4px;
$spacing-sm:   8px;
$spacing-md:   16px;
$spacing-lg:   24px;
$spacing-xl:   32px;
$spacing-2xl:  48px;

Border Radius

$radius-sm:     4px;
$radius-md:     8px;
$radius-lg:     12px;
$radius-xl:     16px;
$radius-full:   9999px;   // Pill shape

Shadows

$shadow-sm:   0 1px 2px rgba(0,0,0,.06), 0 1px 3px rgba(0,0,0,.10);
$shadow-md:   0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.06);
$shadow-lg:   0 10px 15px rgba(0,0,0,.10), 0 4px 6px rgba(0,0,0,.05);

Component-Specific Variables

// Checkout header
$header-bg:             $color-primary;
$header-height:         64px;
$header-text-color:     #ffffff;

// Order form container
$form-max-width:        780px;
$form-padding:          $spacing-xl;

// Product card
$product-card-bg:       $color-bg-card;
$product-card-border:   $color-border;
$product-card-radius:   $radius-lg;

// Billing cycle pills
$cycle-pill-bg:         #f3f4f6;
$cycle-pill-bg-active:  $color-accent;
$cycle-pill-color:      $color-text-secondary;
$cycle-pill-color-active: #ffffff;
$cycle-pill-radius:     $radius-full;

// Primary button
$btn-primary-bg:        $color-accent;
$btn-primary-color:     #ffffff;
$btn-primary-radius:    $radius-md;
$btn-primary-height:    44px;

// Input fields
$input-height:          42px;
$input-radius:          $radius-md;
$input-border:          $color-border;
$input-border-focus:    $color-accent;
$input-padding-x:       $spacing-md;

Applying Variable Changes

After editing variables, rebuild the CSS:

cd /path/to/whmcs/templates/orderforms/HmSingleOrderForm
npm run build

Clear your WHMCS Smarty cache (Utilities → System → Smarty Cache) and hard-refresh the browser to see changes.

Example: Full Brand Override

To replace the default green accent with a blue brand:

// In _custom.scss — override before other rules
$color-primary:       #1e3a5f;
$color-accent:        #3b82f6;
$color-accent-hover:  #2563eb;

$cycle-pill-bg-active:   $color-accent;
$btn-primary-bg:         $color-accent;
$color-border-focus:     $color-accent;
$header-bg:              $color-primary;