npm i bubblegum-css
composer require antharuu/bubblegum "v1.0.0"
https://www.jsdelivr.com/package/npm/bubblegum-css
https://github.com/antharuu/BubbleGum/tree/main/css
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
    />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="css/bubblegum.min.css" />
  </head>
  <body>
    <div _container>
      <div _row>
        <div _col>
          <!-- Your content -->
        </div>
      </div>
    </div>
  </body>
</html>The modularity is managed in two files placed in the bubblegum/config folder.
$Core = {
  prefix: '_' // All attributes prefix
  breakpoint_prefix: ':' // Breakpoints prefix
  logic_max: 10 // Logic for margin, padding, round etc..
  use: { // Modules used
    breakpoints: true
    color_variants: true
    size_variants: true
  }
  bundle: { // Bundles used
    prism: true
  }
}You also have a large number of variables to edit and customize according to your plans and needs.
$Grid = {
  columns: 12 // Amount of columns
  gutters: 30px // Gutter width
  ignored_breakpoint: xs // First breakpoint
  breakpoints: { // Breakpoints
    xs: 0,
    sm: 580px,
    md: 770px,
    lg: 990px,
    xl: 1280px
  }
}$Font = {
  family: {
    main: "'Montserrat', sans-serif"
    code: "'Fira code', monospace"
  }
  size: {
    default: 18px
    multiplier: .38
  }
}$Sizes = {
  margin: {
    base: 5px
    small: 5px
    medium: 15px
    large: 30px
  }
  padding: {
    base: 5px
    small: 5px
    medium: 15px
    large: 30px
  }
  round: {
    base: 5px
    small: 5px
    medium: 15px
    large: 30px
  }
}$Borders = {
  size: 1px
  type: solid
  default_color: $Colors.theme.muted
}$Colors = {
  variants_amount: 3
  variation_amount: 15
  base: {
    'red': #f24236,
    'pink': #e43f6f,
    'purple': #6564db,
    'indigo': #473bf0,
    'blue': #3169c4,
    'cyan': #1fa6c1,
    'teal': #00bfb2,
    'green': #3ccd65,
    'lime': #aad922,
    'yellow': #f7b32b,
    'amber': #ff7f11,
    'orange': #f34213,
    'brown': #823329,
    'grey': #7179ad,
    'black': #1a1d2d,
    'white': #fbfaf8,
    'transparent': transparent
  }
  theme:{
    'dark': #1a1d2d,
    'light': #fbfaf8,
    'primary': #00bfb2,
    'secondary': #7179ad,
    'success': #3ccd65,
    'info': #1fa6c1,
    'warning': #ff7f11,
    'danger': #f24236,
    'muted': #1a1d2d + 40%
  }
  all: {}
  variants: {}
}$Shadows = {
  first: {
    x_min: 0
    x_max: 0
    y_min: 2
    y_max: 24
    blur_min: 2
    blur_max: 38
    spread_min: 0
    spread_max: 3
    color: $Colors.theme.dark
    opacity: .14
  }
  second: {
    x_min: 0
    x_max: 0
    y_min: 3
    y_max: 9
    blur_min: 1
    blur_max: 46
    spread_min: -2
    spread_max: 8
    color: $Colors.theme.dark
    opacity: .12
  }
  third: {
    x_min: 0
    x_max: 0
    y_min: 1
    y_max: 11
    blur_min: 5
    blur_max: 15
    spread_min: 0
    spread_max: -7
    color: $Colors.theme.dark
    opacity: .2
  }
}$Form = {
  color: $Colors.theme.muted
  color_main: $Colors.theme.primary
  color_font: $Colors.theme.dark
}$Others = {
  nav:{
    breadcrumb_symbol: '/'
  }
}<script src="/__prepros.js"></script>
<div _margin="1 md:2 xl:5">
  <!-- Default margin 1 -->
  <!-- Medium margin 2 -->
  <!-- Very large margin 5 -->
</div>
<div _font="center xl:right">
  <!-- Default text align center -->
  <!-- Very large text align right -->
</div>
<div _bg="red lg:blue">
  <!-- Default background color red -->
  <!-- Large background color blue -->
</div>Bubblegum have 16 base colors (+ transparent)
Bubblegum theme have 9 colors
Allows you to quickly select the selector name of an element
| Arguments | Description | Exemple | Return | 
|---|---|---|---|
| selector | The named selector | container | [_container] | 
| value | The value of attribute | 5 | [_container~='5'] | 
Allows you to quickly choose the different selectors you require.
| Arguments | Description | Exemple | Return | 
|---|---|---|---|
| selector | The named selector | container cont | [_container], [_cont] | 
| value | The value of attribute | 5 | [_container~='5'], [_cont~='5'] | 
Returns the value of the shadow according to the logic
| Arguments | Description | Exemple | Return | 
|---|---|---|---|
| start | minimal value | 0 | / | 
| end | maximal value | 5 | / | 
| i | logic modifier | 2 | 2 | 
Return the url of the font file name
| Arguments | Description | Exemple | Return | 
|---|---|---|---|
| file | File name | exemple | 'fonts/exemple' | 
Allows you to use a selector and insert content into it
| Arguments | Description | 
|---|---|
| selector | Selector name | 
| value | Selector value | 
| extends | Placeholders to extends | 
Exemple:
+add-selector('container', 'full'){
    width: 100%;
    background-color: white;
}Return:
[_container~="full"] {
  width: 100%;
  background-color: white;
}Allow you to put value inside a selector
| Arguments | Description | 
|---|---|
| value | Selector value | 
| extends | Placeholders to extends | 
current_selector value before.Exemple:
+add-selector('container'){
    _.current_selector = 'container';
    width: 100%;
    background-color: white;
    +add-value('limited'){
        max-width: 1280px;
    }
}Return:
[_container] {
  width: 100%;
  background-color: white;
}
[_container][_container~="limited"] {
  max-width: 1280px;
}Add a extends to created placeholders
| Arguments | Description | 
|---|---|
| name | Placeholders name | 
Return the most contrasted theme color between light and dark for the given color
| Arguments | Description | 
|---|---|
| color | Color value | 
Add automatically the box-shadow with the given modifier and the shadow variables
| Arguments | Description | 
|---|---|
| modifier | Modifier value | 
Use the font face with the arguments
| Arguments | Description | 
|---|---|
| family | Font family name | 
| file | File name see font-url | 
| hack-chrome-windows | if use the hack for chrome | 
| weight | Font weight |