body {
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
    min-height: 100vh;
}

header,
section,
footer {
    padding: var(--whitespace, 50px) 0;
}

content-container {
    display: inline-block;
    width: var(--container-width);
    margin-left: var(--container-gutter);
    margin-right: var(--container-gutter);
    padding: 0;
}

content-row {
    width: 100%;
    max-width: 100%;
    gap: var(--gutter-1x, 15px);
}
[grid] {
    display: grid;
    box-sizing: content-box;
    grid-template-columns: repeat(auto-fit, minmax(250px,1fr)); /* MAGIC */
    grid-template-rows: auto;
    grid-auto-flow: column;
}
[flex] {
    display: flex;
    flex-direction: row;
}
[flex][spread] { justify-content: space-between; }
[flex][aligned] { align-items: center; align-content: center; }
[center] {
    justify-content: center;
    justify-items: center;
    text-align: center;
}
content-row[center] { justify-items: center; justify-content: center; text-align: center; }
content-row[align] { align-items: center; }
content-row[spread] { justify-content: space-between; }
content-row[spread] > :first-child { text-align: start; }
content-row[spread] > :last-child { text-align: end; }
content-row[grid][columns="1"] { grid-template-columns: repeat(1, 1fr); grid-auto-flow: row; }
content-row[grid][columns="2"] { grid-template-columns: repeat(2, 1fr); }
content-row[grid][columns="3"] { grid-template-columns: repeat(3, 1fr); }
content-row[grid][columns="4"] { grid-template-columns: repeat(4, 1fr); }
content-row[grid][columns="5"] { grid-template-columns: repeat(5, 1fr); }
content-row[grid][columns="6"] { grid-template-columns: repeat(6, 1fr); }
content-row[grid][columns="7"] { grid-template-columns: repeat(7, 1fr); }
content-row[grid][columns="8"] { grid-template-columns: repeat(8, 1fr); }
content-row[grid][columns="9"] { grid-template-columns: repeat(9, 1fr); }
content-row[grid][columns="10"] { grid-template-columns: repeat(10, 1fr); }
content-row[grid][columns="11"] { grid-template-columns: repeat(11, 1fr); }
content-row[grid][columns="12"] { grid-template-columns: repeat(12, 1fr); }

content-column {
    width: 100%;
    max-width: 100%;
}

content-whitespace {
    display: flex;
    flex-direction: column;
    flex: 1;
}

/* References */
/* https://web.dev/articles/css-subgrid */

/* media query template */
/* @media screen and (max-width: 679px) {} */
/* @media screen and (min-width: 680px) and (max-width: 991px) {} */
/* @media screen and (min-width: 992px) and (max-width: 1379px) {} */
/* @media screen and (min-width: 1380px) {} */

/* xl-container */
/* @media screen and (min-width: 1380px) {
    :root {
        --responsive-mode: "xl";
        --container-width: 1080px;
        --container-gutter: calc(calc(100% - var(--container-width)) / 2);
    }
} */

/* lg-container (default) */
@media screen and (min-width: 1280px) {
    :root {
        --responsive-mode: "lg";
        --container-width: var(--breakpoint-lg-container);
    }
}

/* md-container */
@media screen and (min-width: 768px) and (max-width: 1279px) {
    :root {
        --responsive-mode: "md";
        --container-width: var(--breakpoint-md-container);
        --container-gutter: calc(calc(100% - var(--container-width)) / 2);
    }
}

/* sm-container */
@media screen and (max-width: 767px) {
    :root {
        --responsive-mode: "sm";
        --container-width: var(--breakpoint-sm-container);
        --container-gutter: var(--breakpoint-sm-gutter);
        --gutter-width: 15px;
    }
}
