:root {
    
    --primary: hsl(222, 99%, 37%);
    --success: hsl(150, 100%, 32%);
    --card-bg: hsl(222, 28%, 22%);
    --type-1: hsl(0, 72%, 56%);
    --type-2: hsl(16, 80%, 52%);
    --type-3: hsl(32, 88%, 48%);
    --type-4: hsl(48, 96%, 44%);
    --var-type: hsl(0, 72%, 56%);
    --var-default-value: hsl(110, 36%, 44%);
    --dark: hsl(222, 40%, 8%);
    --midtone: hsl(222, 22%, 25%);
    --light: hsl(222, 4%, 84%);
    --lighter: hsl(222, 4%, 92%);
    --lightest: hsl(222, 4%, 99.5%);
    --white: #fff;

    --spacing: clamp(1.5rem, 0.5rem + 2vw, 2rem);
    --radius: 4px;
}

/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */

/* Document
   ========================================================================== */

/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */

html {
    line-height: 1.15; /* 1 */
    -webkit-text-size-adjust: 100%; /* 2 */
}

/* Sections
   ========================================================================== */

/**
 * Remove the margin in all browsers.
 */

body {
    margin: 0;
}

/**
 * Render the `main` element consistently in IE.
 */

main {
    display: block;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

/* Grouping content
   ========================================================================== */

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */

hr {
    box-sizing: content-box; /* 1 */
    height: 0; /* 1 */
    overflow: visible; /* 2 */
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

pre {
    font-family: monospace, monospace; /* 1 */
    font-size: 1em; /* 2 */
}

/* Text-level semantics
   ========================================================================== */

/**
 * Remove the gray background on active links in IE 10.
 */

a {
    background-color: transparent;
}

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */

abbr[title] {
    border-bottom: none; /* 1 */
    text-decoration: underline; /* 2 */
    text-decoration: underline dotted; /* 2 */
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */

b,
strong {
    font-weight: bolder;
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

code,
kbd,
samp {
    font-family: monospace, monospace; /* 1 */
    font-size: 1em; /* 2 */
}

/**
 * Add the correct font size in all browsers.
 */

small {
    font-size: 80%;
}

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sub {
    bottom: -0.25em;
}

sup {
    top: -0.5em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove the border on images inside links in IE 10.
 */

img {
    border-style: none;
}

/* Forms
   ========================================================================== */

/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */

button,
input,
optgroup,
select,
textarea {
    font-family: inherit; /* 1 */
    font-size: 100%; /* 1 */
    line-height: 1.15; /* 1 */
    margin: 0; /* 2 */
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */

button,
input { /* 1 */
    overflow: visible;
}

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */

button,
select { /* 1 */
    text-transform: none;
}

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */

button,
[type="button"],
[type="reset"],
[type="submit"] {
    -webkit-appearance: button;
}

/**
 * Remove the inner border and padding in Firefox.
 */

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
    border-style: none;
    padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
    outline: 1px dotted ButtonText;
}

/**
 * Correct the padding in Firefox.
 */

fieldset {
    padding: 0.35em 0.75em 0.625em;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */

legend {
    box-sizing: border-box; /* 1 */
    color: inherit; /* 2 */
    display: table; /* 1 */
    max-width: 100%; /* 1 */
    padding: 0; /* 3 */
    white-space: normal; /* 1 */
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */

progress {
    vertical-align: baseline;
}

/**
 * Remove the default vertical scrollbar in IE 10+.
 */

textarea {
    overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */

[type="checkbox"],
[type="radio"] {
    box-sizing: border-box; /* 1 */
    padding: 0; /* 2 */
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
    height: auto;
}

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */

[type="search"] {
    -webkit-appearance: textfield; /* 1 */
    outline-offset: -2px; /* 2 */
}

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */

[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */

::-webkit-file-upload-button {
    -webkit-appearance: button; /* 1 */
    font: inherit; /* 2 */
}

/* Interactive
   ========================================================================== */

/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */

details {
    display: block;
}

/*
 * Add the correct display in all browsers.
 */

summary {
    display: list-item;
}

/* Misc
   ========================================================================== */

/**
 * Add the correct display in IE 10+.
 */

template {
    display: none;
}

/**
 * Add the correct display in IE 10.
 */

[hidden] {
    display: none;
}

/* Base */
*,
*:before,
*:after {
    box-sizing: border-box;
}

html {
    font-variation-settings: normal;
    font-feature-settings: normal;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    line-height: 1.15;
}

body {
    margin: 0;
    padding: 0;
    line-height: 1.5;
    font-size: clamp(0.875rem, 0.786rem + 0.238vw, 1rem);
    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
    font-weight: 400;
    background-color: var(--lightest);
    color: var(--midtone);
    overflow-x: hidden;
    overscroll-behavior: none;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

hr {
    display: block;
    block-size: 1px;
    border: 0;
    border-block-start: 1px solid var(--light);
    margin-block: 1.5rem;
    margin-inline: 0;
    padding: 0;
}

::selection {
    background-color: var(--primary);
    color: var(--white);
}

:target:before {
    content: '';
    display: block;
    block-size: 0.5rem;
    margin-block-start: -0.5rem;
}

.code-box {
    background-color: var(--lighter);
    border-radius: var(--radius);
    overflow: hidden;
}

.code-box pre {
    max-inline-size: 100%;
    overflow-y: auto;
    margin: 0;
    padding: 1rem;
    color: var(--dark);
    tab-size: 4;
}

code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    font-size: 87.5%;
}

/* Sticky Footer */
html {
    block-size: 100%;
}

body {
    min-block-size: 100%;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    grid-template-columns: minmax(0, 1fr);
}

.footer {
    grid-row-start: 3;
    grid-row-end: 4;
}

/* Utilities */
.is-hidden {
    display: none;
}

.long-text {
    overflow-wrap: break-word;
    word-break: break-all;
    -wbkit-hyphens: auto;
    hyphens: auto;
}

/* Typography */
html {
    -webkit-text-size-adjust: 100%;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin-block-start: 2rem;
    margin-block-end: 0;
    padding: 0;
    text-wrap: balance;
    color: var(--dark);
}

h1 + h2,
h2 + h3,
h3 + h4,
h4 + h5,
h5 + h6 {
    margin-block-start: 1.5rem;
}

h1 {
    margin-block-start: 1.5rem;
    font-size: clamp(2.5rem, 1.964rem + 1.429vw, 3.25rem);
    font-weight: 500;
    letter-spacing: -0.025em;
    line-height: 1.15;
}

h2 {
    font-size: clamp(1.75rem, 1.393rem + 0.952vw, 2.25rem);
    font-weight: 500;
    letter-spacing: -0.0025em;
    line-height: 1.15;
}

h3 {
    font-size: clamp(1.5rem, 1.321rem + 0.476vw, 1.75rem);
    font-weight: 500;
    letter-spacing: -0.005em;
    line-height: 1.2;
}

h4 {
    font-size: clamp(1.25rem, 1.071rem + 0.476vw, 1.5rem);
    font-weight: 500;
    letter-spacing: -0.015em;
    line-height: 1.375;
}

h5 {
    font-size: clamp(1.125rem, 1.036rem + 0.238vw, 1.25rem);
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1.5;
}

h6 {
    font-size: clamp(0.875rem, 0.786rem + 0.238vw, 1rem);
    font-weight: 600;
    line-height: 1.125;
    letter-spacing: 0.025em;
    text-transform: uppercase;
}

h1 span {
    display: block;
    color: var(--light);
}

p {
    margin-block: 1rem;
    text-wrap: pretty;
}

.lead {
    font-size: clamp(1.125rem, 1.036rem + 0.238vw, 1.25rem);
}

a {
    color: var(--primary);
    text-decoration: underline;
}

a:hover,
a:focus,
a:active {
    text-decoration: none;
    color: var(--primary);
}

/* --- Components --- */

/* Item Info Box */
.article .item-info-box {
    margin-block: 1em;
    margin-inline: 0;
    padding: 1em;
    border-inline-start: 1px solid var(--light);
}

.article .item-info-box dl {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    margin: 0;
    padding: 0;
    gap: 0 1em
}

.article .item-info-box dt:not(:first-child) {
    margin-block-start: 1em;
}

.article .item-info-box dd {
    font-weight: 600;
    margin: 0;
    padding: 0;
}

@media (min-width: 48em) {
    .article .item-info-box dl {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .article .item-info-box dt:not(:first-child) {
        margin-block-start: 0;
    }
}

/* Card */
.card {
    margin-block: 1.5rem;
}

.card__list {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.card__item {
    position: relative;
    overflow: hidden;
    flex: 1 1 18rem;
    display: flex;
    flex-direction: column;
    gap: 1em;
    padding: 2rem;
    background-color: var(--card-bg);
    color: var(--white);
    border-radius: var(--radius);
}

.card__title {
    position: relative;
    margin: 0;
    padding-block-start: 1rem;
    font-size: clamp(1.75rem, 1.393rem + 0.952vw, 2.25rem);
    font-weight: 400;
    line-height: 1.15;
    color: var(--white);
}

.card__title:before {
    display: block;
    position: absolute;
    content: '';
    inset-block-start: 0;
    inset-inline-start: 0;
    inline-size: clamp(2.25rem, 1.893rem + 0.952vw, 2.75rem);
    block-size: 0.375rem;
}

.card__item--type-1 .card__title:before {
    background-color: var(--type-1);
}

.card__item--type-2 .card__title:before {
    background-color: var(--type-2);
}

.card__item--type-3 .card__title:before {
    background-color: var(--type-3);
}

.card__item--type-4 .card__title:before {
    background-color: var(--type-4);
}

.card p {
    margin-block: 0;
    color: var(--white);
    letter-spacing: 0.02em;
    opacity: 0.75;
    line-height: 1.375;
}

.card a {
    display: block;
    white-space: nowrap;
    inline-size: max-content;
    max-inline-size: 100%;
    padding-block: 0.75rem;
    padding-inline: 1.75rem;
    margin-block-start: auto;
    margin-inline-start: auto;
    background-color: var(--white);
    color: var(--dark);
    text-decoration: none;
    text-align: center;
    font-weight: 500;
    border-radius: var(--radius);
}

.card a:hover,
.card a:focus,
.card a:active {
    color: var(--dark);
    text-decoration: none;
}

/* Badge */
.badge {
    position: relative;
    border-radius: 999px;
    padding: 0.25em 0.5em;
    font-size: clamp(0.6875rem, 0.45em, 0.45em);
    font-weight: 700;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
}

.badge--commercial {
    background-color: var(--primary);
    color: var(--white);
}

.badge--free {
    background-color: var(--success);
    color: var(--white);
}

/* Layout */
.container {
    max-inline-size: 90em;
    margin-inline: auto;
    padding-inline: var(--spacing);
}

.header,
.footer {
    background-color: var(--primary);
    color: var(--white);
}

.footer {
    font-size: 0.9375rem;
}

.header__container,
.footer__container {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: center;
    align-items: flex-start;
    flex-direction: column;
    padding: var(--spacing);
}

.header__text {
    text-transform: uppercase;
    letter-spacing: 0.1em;
    opacity: 0.75;
    font-size: clamp(0.875rem, 0.786rem + 0.238vw, 1rem);
}

.brand {
    font-weight: 400;
}

.brand a {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--white);
    text-decoration: none;
    font-size: clamp(1.25rem, 1.071rem + 0.476vw, 1.5rem);
    letter-spacing: 0.025em;
    line-height: 1.2;
}

.brand a:hover,
.brand a:focus,
.brand a:active {
    color: var(--white);
    text-decoration: none;
}

.brand .version-number {
    align-self: flex-end;
    line-height: 1.8333333333;
    font-size: 50%;
    font-weight: 500;
}

.logo {
    display: block;
    inline-size: 2.5rem;
    block-size: 2.5rem;
    flex-shrink: 0;
    margin-block: 0;
}

.footer__brand a {
    opacity: 0.5;
    transition: opacity 0.15s ease;
}

.footer__brand a:hover,
.footer__brand a:focus,
.footer__brand a:active {
    opacity: 1;
}

.footer__rights {
    font-weight: 300;
    opacity: 0.8;
}

.main {
    padding-block-end: 5rem;
}

.main * {
    overflow-wrap: break-word;
    -wbkit-hyphens: auto;
    hyphens: auto;
}

.main__container {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing);
}

.article ul:not(.list),
.article ol:not(.list),
.article dl:not(.list) {
    margin-block: 1rem;
    margin-inline: 0;
    padding-block: 0;
    padding-inline-start: 2rem;
    padding-inline-end: 0;
}

.article ul:not(.list) li:not(:first-child),
.article ol:not(.list) li:not(:first-child),
.article dl:not(.list) dt:not(:first-child) {
    margin-block-start: 0.5rem;
}

.article dl:not(.list) dt {
    font-weight: 600;
}

.article dl:not(.list) dd:not(:first-child) {
    margin: 0;
    padding: 0;
}

li::marker {
    color: var(--primary);
}

.article .badge {
    top: -0.25em;
}

@media (min-width: 32em) {
    .header__container,
    .footer__container {
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
    }
}

@media (min-width: 48em) {
    .logo {
        inline-size: 4.5rem;
        block-size: 4.5rem;
        margin-block: -1rem;
    }

    .main {
        padding-block-start: 1rem;
    }

    .main__container {
        grid-template-columns: minmax(0, 16rem) minmax(0, 1fr);
    }
}

@media (min-width: 72em) {
    .main__container {
        grid-template-columns: minmax(0, 16rem) minmax(0, 1fr) minmax(0, 16rem);
    }
}

.aside {
    padding-block-start: 1.5rem;
}

.aside--nav-on-page {
    display: none;
}

@media (min-width: 72em) {
    .aside--nav-on-page {
        display: block;
    }
}

.nav {
    position: sticky;
    top: 1.5rem;
    padding-block: 1.5rem;
    border-radius: var(--radius);
}

.nav--main {
    background-color: var(--lighter);
}

.nav--on-page {
    padding-block: 0;
}

.nav h3 {
    margin-block-start: 0;
    margin-block-end: 0.5em;
    padding-block: 0;
    padding-inline: 1rem;
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.nav--on-page h3 {
    font-size: 0.9375rem;
}

.nav h3:not(:first-of-type) {
    margin-block-start: 1rem;
}

.nav ul,
.nav ol {
    margin: 0;
    padding: 0;
    list-style-type: none;
}

.nav li a {
    display: block;
    padding-block: 0.5rem;
    padding-inline: 1rem;
    text-decoration: none;
    color: var(--dark);
    font-weight: 500;
    letter-spacing: 0.02em;
}

.nav a {
    font-weight: 600;
}

.nav ul {
    margin: 0;
    padding: 0;
}

.nav li {
    position: relative;
}

.nav li {
    padding-inline-start: 1rem;
}

.nav li a:before {
    position: absolute;
    z-index: 1;
    display: block;
    content: '';
    inline-size: 1px;
    inset-block: 0;
    inset-inline-start: 1.25rem;
    background-color: var(--light);
    transition: background-color 0.15s ease;
}

.nav--main a:hover:before,
.nav--main a:focus:before {
    inline-size: 4px;
    background-color: var(--light);
}

.nav--main a:active:before,
.nav--main a.active:before {
    inline-size: 4px;
    background-color: var(--primary);
}

.aside--nav-on-page a:hover,
.aside--nav-on-page a:focus,
.aside--nav-on-page a:active {
    color: var(--primary);
}

.nav-step {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding-block-start: 3rem;
}

.nav-step__btn {
    display: flex;
    align-items: center;
    gap: 1rem;
    text-decoration: none;
    color: var(--primary);
}

.nav-step__btn:hover,
.nav-step__btn:focus,
.nav-step__btn:active {
    color: var(--primary);
}

.nav-step__btn span {
    display: block;
}

.nav-step__btn .nav-step__texts span:nth-child(1) {
    color: var(--midtone);
}

.nav-step__btn .nav-step__texts span:nth-child(2)  {
    font-weight: 600;
}

.nav-step__btn:first-child .nav-step__texts {
    text-align: start;
}

.nav-step__btn:last-child .nav-step__texts {
    text-align: end;
}

.nav-step .nav-step__icon-box {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0.5rem;
    background-color: var(--lighter);
    border-radius: var(--radius);
    transition: fill 0.15s ease;
}

.nav-step__btn--next {
    margin-inline-start: auto;

}

.nav-step__btn:hover .nav-step__icon-box,
.nav-step__btn:focus .nav-step__icon-box,
.nav-step__btn:active .nav-step__icon-box {
    background-color: var(--primary);
}

.nav-step svg {
    display: block;
    inline-size: 1.75rem;
    block-size: 1.75rem;
    fill: var(--primary);
}

.nav-step__btn:hover svg,
.nav-step__btn:focus svg,
.nav-step__btn:active svg {
    fill: var(--white);
}

@media (min-width: 48em) {
    .article-box {
        padding-inline: 2rem;
    }
}

/* Arguments */
.var-name {
    font-weight: 600;
    color: var(--primary);
}

.var-type {
    font-weight: 600;
    color: var(--var-type);
}

.var-default-value {
    color: var(--var-default-value);
}