diff --git a/.gitignore b/.gitignore
index 6416b62..ad6c8e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
node_modules
-# Don't commit this for libraries :)
+# Don't commit these for libraries :)
yarn.lock
package-lock.json
+
+/test/output
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 779fadb..125aa5b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,34 @@
+## [v0.3.0.rc.1]
+
+> Unreleased
+
+v0.3.0 is an almost-full rewrite. It now supports more PostCSS setups. Use it as CSS modules, functional selectors (`@extend`), or custom property sets (`@apply`).
+
+- **Breaking change:** The filenames have been changed. Since responsive-modular-scale now comes in 3 flavors, you'll need to specify the variant you want. The old default is available as `modularscale.apply.css`.
+
+ ```css
+ /* Before (v0.2.0) */
+ @import 'responsive-modular-scale.css';
+
+ /* After (v0.3.0) */
+ @import 'responsive-modular-scale.css/defaults.css';
+ @import 'responsive-modular-scale.css/modularscale.apply.css';
+ ```
+
+- **Breaking change:** The classnames have been changed. `--font-size-X` is now `--ms-font-size-X` to prevent potential name clashes.
+
+ ```css
+ /* Before (v0.2.0) */
+ @apply --font-size-2;
+
+ /* After (v0.3.0) */
+ @apply --ms-font-size-2;
+ ```
+
+- **New:** Responsive-modular-scale is now available as a CSS module with `modularscale.module.css`. See [README.md](./README.md) for info.
+
+- **New:** Responsive-modular-scale now works as functional selectors (aka, `@extend`) with `modularscale.extend.css`. See [README.md](./README.md) for info.
+
## [v0.2.0]
> Jan 17, 2019
diff --git a/README.md b/README.md
index 6f2ca52..c6eefb0 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,9 @@ This implements a basic [Modular Scale](http://www.modularscale.com/) system usi
[postcss-cssnext]: https://www.npmjs.com/package/postcss-cssnext
[postcss-import]: https://www.npmjs.com/package/postcss-import
+[postcss-custom-media]: https://yarnpkg.com/en/package/postcss-custom-media
+[postcss-custom-properties]: https://yarnpkg.com/en/package/postcss-custom-properties
+[postcss-preset-env]: https://github.com/csstools/postcss-preset-env
## Installation
@@ -19,12 +22,40 @@ npm install --save --save-exact responsive-modular-scale.css
## Usage
-Simply import it, assuming you're using [postcss-import] and [postcss-cssnext].
+`responsive-modular-scale.css` can be used in 3 different ways:
+
+### Functional selectors (`postcss-extend-rule`)
+
+See [§ Usage as functional selectors](#usage-as-functional-selectors).
+
+```css
+.title {
+ @extend %ms-font-size-2;
+}
+```
+
+### Property sets (`postcss-apply`)
+
+See [§ Usage as property sets](#usage-as-property-sets).
+
+```css
+.title {
+ @apply --ms-font-size-2;
+}
+```
+
+### CSS modules
+
+See [§ Usage as a CSS module](#usage-as-a-css-module).
```css
-@import 'responsive-modular-scale.css';
+.title {
+ composes: msFontSize2 from 'responsive-modular-scale.css/modularscale.module.css';
+}
```
+## How it works
+
To use it, use any of the provided `--font-size-#` custom property sets:
```css
@@ -35,35 +66,34 @@ div {
This applies a `font-size: 2.0736rem` declaration for desktops—the default ratio is 1.2, so that's `1rem * 1.2 ^ 4`. For mobiles and tablets, it will use a different ratio (1.15 and 1.17 by default).
+
+View sample output
+
```css
-div { font-size: 1.74901rem; }
+div {
+ font-size: 1.74901rem;
+}
@media (min-width: 481px) {
- div { font-size: 1.87389rem; }
+ div {
+ font-size: 1.87389rem;
+ }
}
@media (min-width: 769px) {
- div { font-size: 2.0736rem; }
+ div {
+ font-size: 2.0736rem;
+ }
}
```
-It gives you the following custom property sets:
-
- - `@apply --font-size--1` (negative 1)
- - `@apply --font-size-0` (applies to base font size)
- - `@apply --font-size-1`
- - `@apply --font-size-2`
- - ... `@apply --font-size-20`
+
+## Configuring settings
-## Configuration
-
-It's recommended you include this in a "common" file included in most of your project's files; usually, that's something like `variables.css`. You can change these ratios and breakpoints like so:
+Set up a `variables.css` with your configuration. Consider placing this wherever you put your common variables (eg, color palettes and font names). See: [`defaults.css`](./defaults.css).
```css
-/* variables.css */
-@import 'responsive-modular-scale.css';
-
:root {
--ms-ratio-sm: 1.15;
--ms-ratio-md: 1.17;
@@ -78,19 +108,152 @@ It's recommended you include this in a "common" file included in most of your pr
@custom-media --ms-viewport-lg (width > 768px);
```
+## Usage as functional selectors
+
+To use this as functional selectors (ie, `@extend`), you'll need these PostCSS plugins:
+
+- [**postcss-prepend-imports**](postcss-prepend-imports)
+- [**postcss-extend-rule**](postcss-extend-rule)
+- [**postcss-preset-env**](postcss-preset-env)
+
+Configure PostCSS to load these plugins and import your variables. Here's an example config:
+
+```js
+/* postcss.config.js */
+module.exports = ctx => {
+ return {
+ plugins: [
+ // ...
+ require('postcss-prepend-imports')({
+ files: [
+ require.resolve(
+ 'responsive-modular-scale.css/responsive-modular-scale.css'
+ )
+ ]
+ }),
+ require('postcss-preset-env')({
+ importFrom: [require.resolve('./your/path/to/variables.css')],
+ insertBefore: {
+ 'all-property': [require('postcss-extend-rule')()]
+ }
+ })
+ // ...
+ ]
+ }
+}
+```
+
+You'll then be able to use them with `@extend` in your CSS.
+
```css
-/* your-other-styles.css */
-@import './variables.css';
+.title {
+ @extend %ms-font-size-2;
+}
+```
-body {
- @apply --font-size-0;
+These selectors will become available:
+
+- `@extend %ms-font-size--1` (negative 1)
+- `@extend %ms-font-size-0` (applies the base font size)
+- `@extend %ms-font-size-1`
+- `@extend %ms-font-size-2`
+- ...
+- `@extend %ms-font-size-20`
+
+## Usage as property sets
+
+You can also apply modular scale font sizes using CSS property sets (aka, `@apply`). You'll need these PostCSS plugins:
+
+- [**postcss-prepend-imports**](postcss-prepend-imports)
+- [**postcss-apply**](postcss-apply)
+- [**postcss-preset-env**](postcss-preset-env)
+
+Configure PostCSS to load these plugins and import your variables. Here's an example config:
+
+```js
+/* postcss.config.js */
+module.exports = ctx => {
+ return {
+ plugins: [
+ // ...
+ require('postcss-prepend-imports')({
+ files: [
+ require.resolve(
+ 'responsive-modular-scale.css/responsive-modular-scale.css'
+ )
+ ]
+ }),
+ require('postcss-apply')(),
+ require('postcss-preset-env')({
+ importFrom: [require.resolve('./your/path/to/variables.css')]
+ })
+ // ...
+ ]
+ }
}
+```
-div {
- @apply --font-size-4;
+You'll then be able to use them with `@apply` in your CSS.
+
+```css
+.title {
+ @apply --ms-font-size-2;
}
```
+These property sets will become available:
+
+- `@apply --font-size--1` (negative 1)
+- `@apply --font-size-0` (applies the base font size)
+- `@apply --font-size-1`
+- `@apply --font-size-2`
+- ...
+- `@apply --font-size-20`
+
+## Usage as a CSS module
+
+:warning: `Experimental` - You can apply modular scale font sizes using CSS modules.
+
+To use this as functional selectors (ie, `@extend`), you'll need these PostCSS plugins:
+
+- [**postcss-preset-env**](postcss-preset-env)
+
+Configure PostCSS to load these plugins and import your variables. Here's an example config:
+
+```js
+/* postcss.config.js */
+module.exports = ctx => {
+ return {
+ plugins: [
+ // ...
+ require('postcss-preset-env')({
+ importFrom: [require.resolve('./your/path/to/variables.css')]
+ })
+ // ...
+ ]
+ }
+}
+```
+
+You'll then be able to use them with `composes` in your CSS.
+
+```css
+.myButton {
+ composes: msFontSize2 from 'responsive-modular-scale.css/modularscale.module.css';
+}
+```
+
+These CSS classes are available:
+
+- `msFontSizeMinus1` (negative 1)
+- `msFontSize0` (applies the base font size)
+- `msFontSize1`
+- `msFontSize2`
+- ...
+- `msFontSize20`
+
+Learn more about the `composes:` property from the [CSS modules documentation](https://github.com/css-modules/css-modules#composition).
+
## Prior art
- [postcss-modular-scale](https://www.npmjs.com/package/postcss-modular-scale) is a PostCSS plugin. However, it doesn't support responsive ratios, and the syntax is non-standard CSS.
@@ -112,5 +275,9 @@ Authored and maintained by Rico Sta. Cruz with help from contributors ([list][co
> GitHub [@rstacruz](https://github.com/rstacruz) ·
> Twitter [@rstacruz](https://twitter.com/rstacruz)
-[MIT]: LICENSE.md
+[mit]: LICENSE.md
[contributors]: http://github.com/rstacruz/responsive-modular-scale.css/contributors
+[css-modules]: https://github.com/css-modules/css-modules
+[postcss-apply]: https://yarnpkg.com/en/package/postcss-apply
+[postcss-extend-rule]: https://github.com/csstools/postcss-extend-rule
+[postcss-prepend-imports]: https://www.npmjs.com/package/postcss-prepend-imports
diff --git a/defaults.css b/defaults.css
new file mode 100644
index 0000000..b5326bb
--- /dev/null
+++ b/defaults.css
@@ -0,0 +1,12 @@
+@custom-media --ms-viewport-md (width > 480px);
+@custom-media --ms-viewport-lg (width > 768px);
+
+:root {
+ --ms-ratio-sm: 1.15;
+ --ms-ratio-md: 1.17;
+ --ms-ratio-lg: 1.2;
+ --ms-base: 1rem;
+ --ms-base-sm: var(--ms-base);
+ --ms-base-md: var(--ms-base-sm);
+ --ms-base-lg: var(--ms-base-md);
+}
diff --git a/modularscale.apply.css b/modularscale.apply.css
new file mode 100644
index 0000000..d6a2e17
--- /dev/null
+++ b/modularscale.apply.css
@@ -0,0 +1,524 @@
+:root {
+ --ms-font-size--1: {
+ font-size: calc(var(--ms-base-sm) / var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(var(--ms-base-md) / var(--ms-ratio-md));
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(var(--ms-base-lg) / var(--ms-ratio-lg));
+ }
+ }
+
+ --ms-font-size-0: {
+ font-size: var(--ms-base-sm);
+ @media (--ms-viewport-md) {
+ font-size: var(--ms-base-md);
+ }
+ @media (--ms-viewport-lg) {
+ font-size: var(--ms-base-lg);
+ }
+ }
+
+ --ms-font-size-1: {
+ font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(var(--ms-base-md) * var(--ms-ratio-md));
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg));
+ }
+ }
+
+ --ms-font-size-2: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-3: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-4: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-5: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-6: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-7: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-8: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-9: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-10: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-11: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-12: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-13: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-14: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-15: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-16: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-17: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-18: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-19: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+
+ --ms-font-size-20: {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+ }
+}
diff --git a/modularscale.extend.css b/modularscale.extend.css
new file mode 100644
index 0000000..e699a50
--- /dev/null
+++ b/modularscale.extend.css
@@ -0,0 +1,520 @@
+%ms-font-size--1 {
+ font-size: calc(var(--ms-base-sm) / var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(var(--ms-base-md) / var(--ms-ratio-md));
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(var(--ms-base-lg) / var(--ms-ratio-lg));
+ }
+}
+
+%ms-font-size-0 {
+ font-size: var(--ms-base-sm);
+ @media (--ms-viewport-md) {
+ font-size: var(--ms-base-md);
+ }
+ @media (--ms-viewport-lg) {
+ font-size: var(--ms-base-lg);
+ }
+}
+
+%ms-font-size-1 {
+ font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(var(--ms-base-md) * var(--ms-ratio-md));
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg));
+ }
+}
+
+%ms-font-size-2 {
+ font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-3 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-4 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-5 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-6 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-7 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-8 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-9 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-10 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-11 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-12 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-13 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-14 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-15 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-16 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-17 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-18 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-19 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+%ms-font-size-20 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
diff --git a/modularscale.module.css b/modularscale.module.css
new file mode 100644
index 0000000..3c5df83
--- /dev/null
+++ b/modularscale.module.css
@@ -0,0 +1,520 @@
+.msFontSizeMinus1 {
+ font-size: calc(var(--ms-base-sm) / var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(var(--ms-base-md) / var(--ms-ratio-md));
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(var(--ms-base-lg) / var(--ms-ratio-lg));
+ }
+}
+
+.msFontSize0 {
+ font-size: var(--ms-base-sm);
+ @media (--ms-viewport-md) {
+ font-size: var(--ms-base-md);
+ }
+ @media (--ms-viewport-lg) {
+ font-size: var(--ms-base-lg);
+ }
+}
+
+.msFontSize1 {
+ font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(var(--ms-base-md) * var(--ms-ratio-md));
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg));
+ }
+}
+
+.msFontSize2 {
+ font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize3 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize4 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize5 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize6 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize7 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize8 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize9 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize10 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize11 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize12 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize13 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize14 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize15 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize16 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize17 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize18 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize19 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
+
+.msFontSize20 {
+ font-size: calc(
+ var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) *
+ var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm)
+ );
+ @media (--ms-viewport-md) {
+ font-size: calc(
+ var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) *
+ var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)
+ );
+ }
+ @media (--ms-viewport-lg) {
+ font-size: calc(
+ var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) *
+ var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)
+ );
+ }
+}
diff --git a/package.json b/package.json
index 1f28fd4..723c145 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "responsive-modular-scale.css",
"description": "Responsive typography using CSS variables",
- "version": "0.2.0",
+ "version": "0.3.0-rc.1",
"author": "Rico Sta. Cruz ",
"keywords": [
"css",
@@ -13,7 +13,7 @@
"main": "responsive-modular-scale.css",
"style": "responsive-modular-scale.css",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "test": "bash test/test.sh"
},
"repository": {
"type": "git",
@@ -22,5 +22,11 @@
"bugs": {
"url": "https://github.com/rstacruz/responsive-modular-scale.css/issues"
},
- "homepage": "https://github.com/rstacruz/responsive-modular-scale.css#readme"
+ "homepage": "https://github.com/rstacruz/responsive-modular-scale.css#readme",
+ "devDependencies": {
+ "postcss-apply": "^0.12.0",
+ "postcss-cli": "^6.1.2",
+ "postcss-import": "^12.0.1",
+ "postcss-preset-env": "^6.6.0"
+ }
}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..3cd534d
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,12 @@
+module.exports = {
+ plugins: [
+ require('postcss-import')(),
+ require('postcss-apply')(),
+ require('postcss-preset-env')({
+ stage: 0,
+
+ // Don't preserve CSS variables
+ preserve: false
+ })
+ ]
+}
diff --git a/responsive-modular-scale.css b/responsive-modular-scale.css
deleted file mode 100644
index 0b0f9a1..0000000
--- a/responsive-modular-scale.css
+++ /dev/null
@@ -1,144 +0,0 @@
-@custom-media --ms-viewport-md (width > 480px);
-@custom-media --ms-viewport-lg (width > 768px);
-
-:root {
- --ms-ratio-sm: 1.15;
- --ms-ratio-md: 1.17;
- --ms-ratio-lg: 1.2;
- --ms-base: 1rem;
- --ms-base-sm: var(--ms-base);
- --ms-base-md: var(--ms-base-sm);
- --ms-base-lg: var(--ms-base-md);
-
- --font-size--1: {
- font-size: calc(var(--ms-base-sm) / var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) / var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) / var(--ms-ratio-lg)); }
- }
-
- --font-size-0: {
- font-size: var(--ms-base-sm);
- @media (--ms-viewport-md) { font-size: var(--ms-base-md); }
- @media (--ms-viewport-lg) { font-size: var(--ms-base-lg); }
- }
-
- --font-size-1: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-2: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-3: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-4: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-5: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-6: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-7: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-8: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-9: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-10: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-11: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-12: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-13: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-14: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-15: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-16: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-17: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-18: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-19: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-
- --font-size-20: {
- font-size: calc(var(--ms-base-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm) * var(--ms-ratio-sm));
- @media (--ms-viewport-md) { font-size: calc(var(--ms-base-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md) * var(--ms-ratio-md)); }
- @media (--ms-viewport-lg) { font-size: calc(var(--ms-base-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg) * var(--ms-ratio-lg)); }
- }
-}
diff --git a/test/fixtures/css_modules.css b/test/fixtures/css_modules.css
new file mode 100644
index 0000000..60fe85e
--- /dev/null
+++ b/test/fixtures/css_modules.css
@@ -0,0 +1,2 @@
+@import '../../defaults.css';
+@import '../../modularscale.module.css';
diff --git a/test/fixtures/test.css b/test/fixtures/test.css
new file mode 100644
index 0000000..274355b
--- /dev/null
+++ b/test/fixtures/test.css
@@ -0,0 +1,6 @@
+@import '../../defaults.css';
+@import '../../modularscale.apply.css';
+
+#one {
+ @apply --ms-font-size-1;
+}
diff --git a/test/test.sh b/test/test.sh
new file mode 100644
index 0000000..35b1ad5
--- /dev/null
+++ b/test/test.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+set -eou pipefail
+
+_grep () {
+ local needle="$1"
+ local haystack="$2"
+ if grep -F "$needle" "$haystack" >/dev/null; then
+ printf " ✓ [%20s] %s\n" "$haystack" "$needle"
+ else
+ printf " ✗ [%20s] %s\n" "$haystack" "$needle"
+ exit 1
+ fi
+}
+
+(
+ echo ""
+ echo -e "\033[34mCompiling test fixtures using PostCSS:\033[0m"
+ ./node_modules/.bin/postcss test/fixtures --dir test/output
+ echo " ✓ ok"
+
+ echo ""
+ echo -e "\033[34mChecking output:\033[0m"
+ _grep "font-size: calc(" test/output/test.css
+ _grep "1rem * 1.17);" test/output/test.css
+ _grep "1rem * 1.2);" test/output/test.css
+ _grep "1rem * 1.15);" test/output/test.css
+ _grep ".msFontSize1 {" test/output/css_modules.css
+ _grep ".msFontSize2 {" test/output/css_modules.css
+ _grep ".msFontSize10 {" test/output/css_modules.css
+) || (
+ echo ""
+ echo "Failure encountered, oops!"
+ echo "Check the logs above and inspect the output in /test/output/."
+ exit 1
+)