Check out our Root admin template!

A minimalistic, low-level CSS framework

A low-level, lightweight and modern CSS system, authoring tool built on Sass. Give your project a solid foundation.

@forward 'header';
@forward 'footer';
@use 'sprucecss/scss/spruce' as *;

.site-footer {
  background-color: color('background', 'footer');
  padding-block: spacer-clamp('xl', 'xxl');

  &__top {
    @include layout-grid('l', 14rem);
  }

  &__logo {
    --dimension: 4rem;
    block-size: var(--dimension);
    display: inline-flex;
    inline-size: var(--dimension);
  }

  &__title {
    font-size: font-size('h4');
    margin-block: 0 spacer('m');
  }

  &__navigation {
    @include clear-list;
    @include layout-stack('xs');

    a {
      color: color(text);
      text-decoration: none;

      &:hover,
      &:focus,
      &:active,
      &[aria-current='page'] {
        color: color('primary');
      }

      &[aria-current='page'] {
        font-weight: 700;
      }
    }
  }

  &__bottom {
    padding-block-start: spacer('l');

    @include breakpoint('md') {
      align-items: center;
      display: flex;
      gap: spacer('s');
      justify-content: space-between;
    }
  }

  &__copyright {
    margin-block: 0;
  }
}
@use 'sprucecss/scss/spruce' as *;

.site-header {
  position: relative;

  &__inner {
    --block-size: 6rem;
    align-items: center;
    block-size: var(--block-size);
    display: flex;
    flex-wrap: wrap;
    gap: spacer-clamp('s', 'l');
    justify-content: space-between;
  }

  &__column {
    align-items: center;
    display: flex;
    flex-grow: 1;
    gap: spacer-clamp('s', 'l');
  }

  &__actions {
    align-items: center;
    display: flex;
    gap: spacer-clamp('s', 'm');
  }

  &__logo {
    --dimension: 4rem;
    block-size: var(--dimension);
    display: inline-flex;
    inline-size: var(--dimension);
  }

  &__email {
    display: none;
    text-decoration: none;

    @include breakpoint('sm') {
      display: inline-block;
    }
  }

  &__navigation {
    margin-inline-start: auto;

    @include breakpoint('md') {
      margin-inline-start: 0;
    }

    ul {
      border-block-start: 1px solid color('border');

      @include breakpoint('sm') {
        border-block: none;
      }
    }
  }
}
@use 'dark-colors' as dark;

@use 'sprucecss/scss/spruce' with (
  $colors: (
    'footer': (
      'background': hsl(215deg 100% 98%),
    )
  ),
  $dark-colors: dark.$colors,
  $typography: (
    'font-family-base': #{'Open Sans', sans-serif},
    'font-family-heading': #{'Manrope', sans-serif},
  ),
);
@use 'sass:color';

$color-black: hsl(206deg 100% 7%);
$color-danger: hsl(0deg 71% 51%);
$color-gray-dark: hsl(0deg 0% 100% / 8%);
$color-gray: hsl(0deg 0% 97%);
$color-primary: hsl(261deg 54% 70%);
$color-secondary: hsl(227deg 92% 55%);
$color-success: hsl(150deg 100% 33%);
$color-white: hsl(0deg 0% 95%);

$colors: (
  'base': (
    'background': $color-black,
    'blockquote-border': $color-primary,
    'border': $color-gray-dark,
    'code-background': hsl(207deg 64% 18%),
    'code-foreground': $color-white,
    'heading': $color-white,
    'link': $color-primary,
    'link-hover': color.scale($color-primary, $lightness: 20%),
    'mark-background': hsl(50 100% 80%),
    'mark-foreground': $color-black,
    'marker': $color-primary,
    'primary': $color-primary,
    'secondary': $color-secondary,
    'text': $color-gray,
  ),
  'btn': (
    'primary-background': hsl(261 52% 59%),
    'primary-background-hover': hsl(261 52% 65%),
    'primary-foreground': $color-white,
    'secondary-background': $color-secondary,
    'secondary-background-hover': color.adjust($color-secondary, $lightness: 5%),
    'secondary-foreground': $color-white,
  ),
  'footer': (
    'background': hsl(206deg 100% 5%),
  ),
  'form': (
    'background': color.scale($color-black, $lightness: 5%),
    'background-disabled': $color-black,
    'border': $color-gray-dark,
    'border-disabled': $color-gray-dark,
    'border-focus': $color-primary,
    'check-background': $color-primary,
    'check-focus-ring': $color-primary,
    'check-foreground': $color-black,
    'invalid': $color-danger,
    'invalid-focus-ring': color.adjust($color-danger, $alpha: -0.75),
    'label': $color-white,
    'legend': $color-white,
    'placeholder': hsl(0deg 0% 60%),
    'range-thumb-background': $color-primary,
    'range-thumb-focus-ring': $color-primary,
    'range-track-background': $color-gray-dark,
    'ring-focus': color.adjust($color-primary, $alpha: -0.75),
    'select-foreground': hsl(0deg 0% 100%),
    'text': $color-gray,
    'valid': $color-success,
    'valid-focus-ring': color.adjust($color-success, $alpha: -0.75),
  ),
  'selection': (
    'background': $color-primary,
    'foreground': $color-white,
  ),
  'scrollbar': (
    'thumb-background': hsl(0deg 0% 100% / 15%),
    'thumb-background-hover': hsl(0deg 0% 100% / 25%),
    'track-background': hsl(0deg 0% 100% / 5%),
  ),
  'table': (
    'border': $color-gray-dark,
    'caption': $color-gray,
    'heading': $color-white,
    'hover': hsl(0deg 0% 100% / 5%),
    'text': $color-gray,
    'stripe': hsl(0deg 0% 100% / 2.5%),
  )
);
@use 'sprucecss/scss/spruce' as *;

@include generate-color-variables(
  $dark-colors,
  ':root[data-theme-mode="dark"]'
);

[data-theme-mode='dark'] {
  color-scheme: dark;
}
@use 'sprucecss/scss/spruce' as *;

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-regular.woff2'
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-300.woff2',
  300
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-600.woff2',
  600
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-700.woff2',
  700
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-800.woff2',
  800
);

@include font-face(
  'Open Sans',
  '../../font/open-sans-v34-latin_latin-ext-regular.woff2'
);

@include font-face(
  'Open Sans',
  '../../font/open-sans-v34-latin_latin-ext-700.woff2',
  700
);
@forward 'config';
@forward 'fonts';
@forward 'styles';
@forward 'dark-mode';
@use 'sprucecss/scss/spruce' as *;

@include generate-styles;
@forward 'config';
@forward 'component';

Documentation

Learn about Spruce CSS through our extensive documentation.

Components

Explore our extensive UI library built with Spruce CSS.

Blog

Read about front-end development and concepts of Spruce CSS.

Good to Know

Spruce CSS in nutshell.

Who is Spruce CSS for?

It is Modern and Lightweight

Dark Mode and RTL Support

It Is Built on Sass

Find us on GitHub

Did you find a bug? Have an idea or a question? Please open an issue to help us develop the project.