/*
Theme Name: WebKit
Theme URI: http://webkit.org/
Author: The WebKit Team
Author URI: http://webkit.org/
Description: Modern, adaptive theme for the WebKit project.
Version: 1.0
*/

:root {
    --background-color: hsl(203.6, 100%, 12%);
    --link-color: hsl(200, 100%, 40%);
    --text-color: hsl(0, 0%, 20%);
    --text-color-light: hsl(0, 0%, 87%);
    --text-color-medium: hsl(0, 0%, 33.3%);
    --text-color-heading: hsl(0, 0%, 26.7%);
    --text-color-coolgray: hsl(240, 2.3%, 56.7%);
    --inverse-text-color: hsl(0, 0%, 100%);
    --inverse-link-color: hsl(206.7, 100%, 70%);

    --content-background-color: hsl(0, 0%, 96.9%);
    --horizontal-rule-color: hsl(0, 0%, 86.7%);

    --code-background-color: hsl(0, 0%, 94.9%);
    --code-border-color: hsl(0, 0%, 90.6%);
    --code-text-color: hsl(0, 0%, 26.7%);

    --note-background-color: hsl(50, 100%, 94%);
    --note-border-color: hsl(40, 100%, 90%);
    --note-text-color: hsl(30, 90%, 35%);

    --foreword-background-color: hsl(0, 0%, 94.1%);
    --foreword-border-color: hsl(0, 0%, 90.2%);
    --foreword-text-color: hsl(240, 2.3%, 56.7%);

    --input-border-color: hsl(0, 0%, 83.9%);
    --input-background-color: hsl(0, 0%, 100%);
    --button-background-color: hsl(0, 0%, 100%);

    --submit-button-background-color: hsl(199.8, 76.4%, 48.2%);
    --submit-button-background-gradient: linear-gradient(hsl(199.9, 78.2%, 56.9%), hsl(200, 100%, 40%));
    --submit-button-text-color: hsl(0, 0%, 100%);

    --pagination-border-color: hsla(0, 0%, 0%, 0.07);
    --pagination-button-shadow: inset hsla(0, 0%, 0%, 0.07) 0 0 0 1px;
    --pagination-button-text-color: hsl(0, 0%, 100%);

    --screen-reader-text-focus-color: hsl(198.7, 64.9%, 36.9%);
    --screen-reader-text-border-color: hsla(0, 0%, 0%, 0.6);
    --screen-reader-text-background-color: hsl(0, 0%, 94.5%);
    --screen-reader-text-shadow: 0 0 2px 2px hsla(0, 0%, 0%, 0.6);

    --next-router-background-color: hsl(0, 0%, 98%);
    --previous-router-background-color: hsl(0, 0%, 95.7%);
    --router-background-hover-color: hsl(0, 0%, 100%);
    --router-text-color: hsl(0, 0%, 26.7%);
    --router-text-color-light: hsl(0, 0%, 40%);

    --tile-background-color: hsl(0, 0%, 100%);
    --tile-border-color: hsla(0, 0%, 0%, 0.1);
    --tile-subtle-border-shadow: inset hsla(0, 0%, 0%, 0.1) 0 0 0 1px;
    --tile-subtle-image-border-shadoww: inset hsla(0, 0%, 0%, 0.1) 0 1px 0 1px;

    --tile-default-background-color: hsl(215.3, 7.9%, 42.2%);
    --tile-background-color-blue: hsl(200, 100%, 40%);
    --tile-background-color-green: hsl(79.5, 45.3%, 52%);
    --tile-background-color-violet: hsl(280, 18%, 57.5%);
    --tile-background-color-rose: hsl(357.1, 39%, 58.8%);
    --tile-background-color-orange: hsl(37.1, 100%, 37.5%);
    --tile-background-color-goldenrod: hsl(45.3, 56.5%, 53.1%);
    --tile-background-color-purplesafari: hsl(276.7, 36.3%, 51.4%);
    --tile-background-color-amber: hsl(48, 100%, 50%);
    --tile-background-vignette: linear-gradient(-180deg, hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0.95) 80%, hsla(0, 0%, 100%, 1));
    --tile-background-vignette-dark: linear-gradient(-180deg, hsla(0, 0%, 0%, 0) 33%, hsla(0, 0%, 0%, 0.85));

    --tag-window-background-color-gray: hsl(0, 0%, 94.9%);
    --tag-window-vignette: linear-gradient(-180deg, hsla(0, 0%, 94.9%, 0) 25%, hsla(0, 0%, 94.9%, 1) 65%);

    --submenu-background-color: hsla(0, 0%, 100%, 0.95);
    --submenu-shadow: 0px 3px 20px 0px hsla(0, 0%, 0%, 0.1);
    --submenu-border-color: hsl(0, 0%, 90.6%);
    --header-menu-shadow: 0px 5px 5px hsla(0, 0%, 0%, 0.1);
    --header-menu-background-color: hsla(0, 0%, 100%, 0.8);

    --tile-background-color-amber: hsl(48, 100%, 50%);
    --tile-background-color-twitter: hsl(197.9, 70.6%, 53.3%);
    --gray-tile-text-color: hsl(232.8, 100%, 37.5%);

    --article-border-color: hsl(0, 0%, 90.6%);
    --article-scrollable-border-color: hsl(0, 0%, 80%);
    --figure-caption-rule-color: hsl(0, 0%, 80%);
    --toc-border-color: hsl(0, 0%, 83.9%);
    --table-top-rule-color: hsl(0, 0%, 73.3%);
    --table-rule-color: hsl(0, 0%, 87.8%);
    --figure-mattewhite-background-color: hsl(0, 0%, 100%);

    --syntax-color-keyword: hsl(292.5, 100%, 26.7%);
    --syntax-color-keyword-operator: hsl(357.5, 100%, 33.1%);
    --syntax-color-builtin: hsl(309.6, 85.8%, 35.9%);
    --syntax-color-keyword-type: hsl(17.6, 80.4%, 44.1%);
    --syntax-color-preprocessor: hsl(60, 20%, 50%);
    --syntax-color-comment: hsl(180, 6.9%, 60.4%);
    --syntax-color-comment-doc: hsl(186.3, 8.3%, 55.1%);
    --syntax-color-identifier: hsl(209.6, 71.4%, 38.4%);
    --syntax-color-string: hsl(70.8, 93%, 22.4%);
    --syntax-color-escaped: hsl(0, 0%, 66.7%);
    --syntax-color-number: hsl(194.5, 14.1%, 40.2%);
    --syntax-color-attribute: hsl(44.8, 53.2%, 33.5%);
    --syntax-color-attribute-value: hsl(1.4, 79.8%, 42.7%);
    --syntax-color-operator: hsl(0, 0%, 53.3%);
    --syntax-color-whitespace-background-color: hsl(0, 0%, 20%);
    --syntax-color-doctype: hsl(0, 0%, 75.3%);
    --syntax-color-error-border: hsl(0, 100%, 50%);
    --syntax-color-property: hsl(295.7, 76.8%, 32.2%);
    --syntax-color-xml-comment: hsl(120, 100%, 22.7%);
    --syntax-color-xml-meta: hsl(180, 50%, 40%);
    --syntax-color-css-property: hsl(309.6, 85.8%, 35.9%);
    --syntax-color-css-selector: hsl(0, 0%, 0%);
    --syntax-color-css-number: hsl(248.1, 100%, 40.6%);

    --code-selection-background-color: hsl(212.3, 97.8%, 81.8%);
}

@media(prefers-color-scheme:dark) {
    :root {
        --background-color: hsl(203.6, 100%, 12%);
        --link-color: hsl(206.7, 100%, 70%);
        --text-color: hsl(240, 1.3%, 84.5%);
        --text-color-light: hsl(0, 0%, 33.3%);
        --text-color-medium: hsl(0, 0%, 51%);
        --text-color-heading: hsl(120, 100%, 99.8%);
        --text-color-coolgray: hsl(240, 2.3%, 56.7%);
        --inverse-text-color: hsl(0, 0%, 100%);
        --inverse-link-color: hsl(206.7, 100%, 70%);

        --content-background-color: hsl(120, 2%, 9%);
        --horizontal-rule-color: hsl(0, 0%, 33.3%);

        --code-background-color: hsl(120, 1%, 19.4%);
        --code-border-color: hsl(0, 0%, 26.7%);
        --code-text-color: hsl(180, 6.9%, 84.5%);

        --note-background-color: hsl(31.9, 20.5%, 33.1%);
        --note-border-color: hsl(31.9, 20.5%, 42%);
        --note-text-color: hsl(48.7, 55.2%, 75.5%);

        --foreword-background-color: hsl(120, 1%, 19.4%);
        --foreword-border-color: hsl(0, 0%, 26.7%);
        --foreword-text-color: hsl(120, 1.3%, 55%);

        --input-border-color: hsl(0, 0%, 26.7%);
        --input-background-color: hsl(0, 0%, 0%);
        --button-background-color: hsl(120, 2%, 14%);

        --submit-button-background-color: hsl(199.8, 76.4%, 48.2%);
        --submit-button-background-gradient: linear-gradient(hsl(199.9, 78.2%, 56.9%), hsl(200, 100%, 40%));
        --submit-button-text-color: hsl(0, 0%, 100%);

        --pagination-border-color: hsla(0, 0%, 100%, 0.1);
        --pagination-button-shadow: inset hsla(0, 0%, 50%, 0.1) 0 0 0 1px;
        --pagination-button-text-color: hsl(0, 0%, 100%);

        --screen-reader-text-focus-color: hsl(198.7, 64.9%, 36.9%);
        --screen-reader-text-border-color: hsla(0, 0%, 0%, 0.6);
        --screen-reader-text-background-color: hsl(0, 0%, 94.5%);
        --screen-reader-text-shadow: 0 0 2px 2px hsla(0, 0%, 0%, 0.6);

        --next-router-background-color: hsl(120, 6.7%, 4.9%);
        --previous-router-background-color: hsl(120, 4%, 8%);
        --router-background-hover-color: hsl(0, 0%, 0%);
        --router-text-color: hsl(120, 100%, 99.8%);
        --router-text-color-light: hsl(30, 1%, 62%);

        --tile-background-color: hsl(120, 2%, 12%);
        --tile-border-color: hsl(0, 0%, 29%);
        --tile-subtle-border-shadow: inset hsla(0, 0%, 50%, 0.1) 0 0 0 1px;
        --tile-subtle-image-border-shadoww: inset hsla(0, 0%, 100%, 0.1) 0 1px 0 1px;

        --tile-default-background-color: hsl(215.3, 7.9%, 42.2%);
        --tile-background-color-blue: hsl(200, 100%, 40%);
        --tile-background-color-green: hsl(79.5, 45.3%, 52%);
        --tile-background-color-violet: hsl(280, 18%, 57.5%);
        --tile-background-color-rose: hsl(357.1, 39%, 58.8%);
        --tile-background-color-orange: hsl(37.1, 100%, 37.5%);
        --tile-background-color-goldenrod: hsl(45.3, 56.5%, 53.1%);
        --tile-background-color-purplesafari: hsl(276.7, 36.3%, 51.4%);
        --tile-background-color-amber: hsl(48, 100%, 50%);
        --tile-background-vignette: linear-gradient(-180deg, hsla(120, 2%, 12%, 0%), hsla(120, 2%, 12%, 0.95) 80%, hsla(120, 2%, 12%, 1));
        --tile-background-vignette-dark: linear-gradient(-180deg, hsla(0, 0%, 0%, 0) 33%, hsla(0, 0%, 0%, 0.85));

        --tag-window-background-color-gray: hsl(0, 0%, 94.9%);
        --tag-window-vignette: linear-gradient(-180deg, hsla(0, 0%, 94.9%, 0) 25%, hsla(0, 0%, 94.9%, 1) 65%);

        --submenu-background-color: hsla(0, 0%, 0%, 0.95);
        --submenu-shadow: 0px 3px 20px 0px hsla(0, 0%, 20%, 0.1);
        --submenu-border-color: hsl(0, 0%, 15%);
        --header-menu-shadow: 0px 5px 5px hsla(0, 0%, 0%, 0.1);
        --header-menu-background-color: hsla(0, 0%, 0%, 0.8);

        --tile-background-color-amber: hsl(48, 100%, 50%);
        --tile-background-color-twitter: hsl(197.9, 70.6%, 53.3%);
        --gray-tile-text-color: hsl(232.8, 100%, 37.5%);

        --article-border-color: hsl(120, 4.1%, 19.2%);
        --article-scrollable-border-color: hsl(120, 4.1%, 19.2%);
        --figure-caption-rule-color: hsl(0, 0%, 80%);
        --toc-border-color: hsl(0, 0%, 83.9%);
        --table-top-rule-color: hsl(0, 0%, 73.3%);
        --table-rule-color: hsl(0, 0%, 87.8%);
        --figure-mattewhite-background-color: hsl(0, 0%, 0%);

        --syntax-color-keyword: hsl(299.2, 58.7%, 51.6%);
        --syntax-color-keyword-operator: hsl(6.8, 69.4%, 57.6%);
        --syntax-color-builtin: hsl(279.2, 84.3%, 57.6%);
        --syntax-color-keyword-type: hsl(28.1, 72.2%, 46.5%);
        --syntax-color-preprocessor: hsl(43.9, 51.4%, 58.8%);
        --syntax-color-comment: hsl(0, 0%, 51%);
        --syntax-color-comment-doc: hsl(186.3, 8.3%, 55.1%);
        --syntax-color-identifier: hsl(210.2, 70.7%, 46.9%);
        --syntax-color-string: hsl(119.2, 34.3%, 57.6%);
        --syntax-color-escaped: hsl(0, 0%, 44%);
        --syntax-color-number: hsl(200, 100%, 40%);
        --syntax-color-attribute: hsl(43.9, 51.4%, 58.8%);
        --syntax-color-attribute-value: hsl(28.1, 72.2%, 46.5%);
        --syntax-color-operator: hsl(180, 6.9%, 60.4%);
        --syntax-color-whitespace-background-color: hsl(0, 0%, 20%);
        --syntax-color-doctype: hsl(0, 0%, 42%);
        --syntax-color-error-border: hsl(0, 100%, 20%);
        --syntax-color-property: hsl(299.2, 58.7%, 51.6%);
        --syntax-color-xml-comment: hsl(119.2, 34.3%, 57.6%);
        --syntax-color-xml-meta: hsl(180, 50%, 40%);
        --syntax-color-css-property: hsl(309.6, 85.8%, 35.9%);
        --syntax-color-css-selector: hsl(240, 1.3%, 84.5%);
        --syntax-color-css-number: hsl(200, 100%, 40%);

        --code-selection-background-color: hsl(214.2, 42.9%, 32.9%);
    }
}

/** Resets **/
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details,
figure, figcaption, footer, header, hgroup,
menu, nav, output, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
    display: block;
}
html {
    font-family: -apple-system, "SF Pro Text", Helvetica, sans-serif;
    font-size: 62.5%;
    font-synthesis: none;
}
body {
    font-size: 1.7rem;
    font-weight: 400;
    line-height: 1.52947;
    letter-spacing: -0.021rem;
    background-color: hsl(203.6, 100%, 12%);
    background-color: var(--background-color);
    color: hsl(0, 0%, 20%);
    color: var(--text-color);
}
ol, ul {
    list-style: none;
}
dl {
    margin: 2rem 0;
}
dt {
    font-weight: bold;
}
dd {
    margin: 0 3rem;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}
p:empty {
    display: none;
}
a {
    text-decoration: none;
    transition: color 500ms cubic-bezier(0.190, 1.000, 0.220, 1.000); /* ease-out-exponential */
}
a:hover {
    text-decoration: underline;
}
a,
a > code,
a[name]:hover {
    color: hsl(200, 100%, 40%);
    color: var(--link-color);
}

h1 a:hover {
    text-decoration: none;
}
hr {
    border: none;
    border-bottom: 1px solid hsl(0, 0%, 86.7%);
    border-bottom-color: var(--horizontal-rule-color);
}
strong {
    font-weight: 600;
}
em {
    font-style: italic;
    font-weight: 300;
}
sup {
    vertical-align: super;
    font-size: smaller;
    line-height: 1;
}
code {
    font-family: "SF Mono", "Menlo", monospace;
    font-size: 80%;
    padding: 0 0.5rem;
    border-radius: 2px;
    border: 1px solid hsl(0, 0%, 90.6%);
    border-color: var(--code-border-color);
    background-color: hsl(0, 0%, 94.9%);
    background-color: var(--code-background-color);
    color: hsl(0, 0%, 26.7%);
    color: var(--code-text-color);
}

main {
    background-color: hsl(0, 0%, 96.9%);
    background-color: var(--content-background-color);
}

/** Accessibility Helpers **/
a[name] {
    display: inline-block;
    position: relative;
    top: -3rem;
    color: hsl(0, 0%, 86.7%);
    color: var(--text-color-light);
    width: 0;
    text-decoration: none;
}

p > a[name]::before {
    content: "#";
    margin-left: -1.7rem;
    position: relative;
    top: 3rem;
    color: hsl(240, 2.3%, 56.7%);
    color: var(--text-color-coolgray);
    transition: color 500ms cubic-bezier(0.190, 1.000, 0.220, 1.000), opacity 500ms ease-in; /* ease-out-exponential */
    opacity: 0.3;
}

a[name]:hover {
    text-decoration: none;
}

a[name]:hover::before {
    color: hsl(200, 100%, 40%);
    color: var(--link-color);
}

p:hover > a[name]::before {
    opacity: 1;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    font-family: -apple-system, "SF Pro Display", Helvetica, sans-serif;
}

h1 a[name],
h2 a[name],
h3 a[name],
h4 a[name],
h5 a[name],
h6 a[name] {
    display: block;
    visibility: hidden;
}

input[type=text] {
    display: inline-block;
    box-sizing: border-box;
    vertical-align: top;
    height: 4.2rem;
    padding-top: 3px;
    margin-bottom: 3rem;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    text-align: left;
    border-radius: 4px;
    border: 1px solid hsl(0, 0%, 83.9%);
    border-color: var(--input-border-color);
    background-color: hsl(0, 0%, 100%);
    background-color: var(--input-background-color);
    background-clip: padding-box;
    color: hsl(0, 0%, 20%);
    color: var(--text-color);
    font-family: "SF Hello", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
    font-weight: 400;
    font-size: 2rem;
    line-height: 1.33333;
    letter-spacing: normal;
}

input[type=submit] {
    background-color: hsl(199.8, 76.4%, 48.2%);
    background-color: var(--submit-button-background-color);
    background-image: linear-gradient(hsl(199.9, 78.2%, 56.9%), hsl(200, 100%, 40%));
    background-image: var(--submit-button-background-gradient);
    border-radius: 4px;
    color: white;
    cursor: pointer;
    font-size: 1.5rem;
    font-weight: 500;
    text-align: center;
    border: 0;
}

.admin-bar a[name] {
    top: calc(-32px - 3rem);
}

.admin-bar p > a[name]::before {
    top: calc(32px + 3rem);
}

.screen-reader-text {
    clip: rect(1px, 1px, 1px, 1px);
    position: absolute !important;
    height: 1px;
    width: 1px;
    overflow: hidden;
}

.screen-reader-text:focus {
    background-color: hsl(0, 0%, 94.5%);
    background-color: var(--screen-reader-text-background-color);
    box-shadow: 0 0 2px 2px hsla(0, 0%, 0%, 0.6);
    box-shadow: var(--screen-reader-text-shadow);
    color: hsl(198.7, 64.9%, 36.9%);
    color: var(--screen-reader-text-focus-color);
    border-radius: 3px;
    clip: auto !important;
    display: block;
    font-size: 14px;
    font-size: 0.875rem;
    font-weight: bold;
    height: auto;
    left: 5px;
    line-height: normal;
    padding: 15px 23px 14px;
    text-decoration: none;
    top: 5px;
    width: auto;
    z-index: 100000; /* Above WP toolbar. */
}

/** Page Layout **/
.page-width {
    max-width: 1140px;
    margin: 0 auto;
}

/** Header **/
header {
    overflow: visible;
    width: 100vw;
    max-width: 100%;
    padding-top: 1.5rem;
    margin: 0;
    position: relative;
    z-index: 500;
}

.home header {
    background-color: transparent;
    transition: background 500ms ease-out, border 250ms ease-out;
}

@supports ( -webkit-backdrop-filter: blur(10px) ) {

    .home header {
        background-color: transparent;
        backdrop-filter: blur(0px);
        -webkit-backdrop-filter: blur(0px);
    }

    .sub-menu-layer {
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
}

.nextrouter .link,
a.readmore {
    background: url('images/chevron.svg') right no-repeat;
    background-position-y: 0.6rem;
    background-size: 0.5rem;
    padding-right: 1rem;
}

a.download {
    background: url('images/download.svg') right no-repeat;
    padding-right: 4rem;
}

/** Pagination **/
.pagination {
    text-align: center;
    margin: 3rem auto 0;
}

.pagination::after {
    content: ' ';
    display: table;
    padding-bottom: 3rem;
}

.pagination .page-numbers,
.pagination .menu-item a {
    display: inline-block;
    padding: 0.3rem 1rem 0.5rem;
    background-color: hsl(0, 0%, 100%);
    background-color: var(--button-background-color);
    border-radius: 4px;
    box-shadow: inset hsla(0, 0%, 0%, 0.07) 0 0 0 1px;
    box-shadow: var(--pagination-button-shadow);
    min-height: 2rem;
    font-size: 1.7rem;
    line-height: 1.29412;
    font-weight: 400;
    letter-spacing: -0.021em;
}

.pagination .menu-item a {
    box-shadow: none;
    border: 1px solid hsla(0, 0%, 0%, 0.07);
    border-color: var(--pagination-border-color);
}

.pagination .page-numbers:not(.current, .dots):hover {
    text-decoration: none;
    background-color: hsl(200, 100%, 40%);
    background-color: var(--link-color);
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
}

.pagination .dots,
.pagination .page-numbers.current {
    background-color: transparent;
    box-shadow: none;
}

.pagination .prev-post,
.pagination .next-post {
    min-width: 25%;
}

.pagination .prev-post {
    text-align: right;
}

.pagination .next-post {
    text-align: left;
}

.pagination .prev-post span,
.pagination .next-post span {
    display: block;
    font-size: 1.4rem;
    font-weight: normal;
}

.connected.pagination .menu-item {
    display: table-cell;
}

.connected.pagination .menu-item:hover a {
    background-color: hsl(0, 0%, 98%);
    background-color: var(--next-router-background-color);
    box-shadow: hsla(206.7, 100%, 70%, 0.3) 0 0 5px 0px;
    text-decoration: none;
    border-radius: 4px;
}

.connected.pagination .menu-item:first-child a {
    border-top-right-radius: 0px;
    border-bottom-right-radius: 0px;
    border-right-width: 0px;
}
.connected.pagination .menu-item:last-child a {
    border-top-left-radius: 0px;
    border-bottom-left-radius: 0px;
}

.connected.pagination .menu-item.current-menu-item a,
.connected.pagination .menu-item.current-menu-item:hover a
.connected.pagination .menu-item.current-menu-item a:hover {
    background-color: transparent;
    color: var(--text-color);
    box-shadow: none;
    text-decoration: none;
}

.menu-feature-pages-container {
    display: inline-block;
}

/* Front page next button */
.pagination .next-button {
    display: inline-block;
    min-width: calc(33.33% - 3rem);
    padding: 0.5rem 1rem 0.7rem;
}

.nextrouter {
    position: relative;
    background-color: hsl(0, 0%, 98%);
    background-color: var(--next-router-background-color);
    padding: 0;
    width: 100vw;
    left: 50%;
    transform: translateX(-50%);
}

.nextrouter.previous {
    text-align: right;
    background-color: hsl(0, 0%, 95.7%);
    background-color: var(--previous-router-background-color);
}

.nextrouter:hover,
.nextrouter.previous:hover {
    background-color: hsl(0, 0%, 100%);
    background-color: var(--router-background-hover-color);
    transition: background-color 300ms ease-out;
}

.nextrouter .bodycopy {
    max-width: 1140px;
    margin: 0 auto;
}

.nextrouter a {
    display: block;
    cursor: pointer;
    color: hsl(0, 0%, 26.7%);
    color: var(--router-text-color);
    width: 66%;
    margin: 0 auto;
}

.nextrouter a:hover {
    text-decoration: none;
}

.nextrouter-copy {
    padding: 10rem 0 9.5rem 0;
    font-size: 3.2rem;
    font-weight: 500;
    line-height: 1.09375;
    letter-spacing: 0.011rem;
    font-family: -apple-system, "SF Pro Display", Helvetica, sans-serif;
}

.nextrouter .label {
    font-size: 2.2rem;
    line-height: 1;
    font-weight: 300;
    letter-spacing: 0.016rem;
    color: hsl(0, 0%, 40%);
    color: var(--router-text-color-light);
    display: block;
    margin-bottom: 1.8rem;
}

.nextrouter .title {
    display: block;
}

.nextrouter .link {
    clear: left;
    display: inline-block;
    font-size: 1.7rem;
    font-weight: 400;
    line-height: 1.52947;
    letter-spacing: -0.021rem;
    color: hsl(200, 100%, 40%);
    color: var(--link-color);
    background-position-y: 1rem;
}

.nextrouter a:hover .link {
    text-decoration: underline;
}

/** Footer **/
footer {
    content: "";
    display: table;
    clear: both;
    width: 100%;
    padding-bottom: 1.65rem;
    box-sizing: border-box;
}

footer .menu {
    font-size: 1.3rem;
}

/** Tiles **/
.tiles {
    font-size: 0;
    display: -webkit-flex;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    box-sizing: border-box;
    width: 100%;
}

.tile {
    background-color: hsl(120, 2%, 9%);
    background-color: var(--tile-background-color);
    box-shadow: inset hsla(0, 0%, 0%, 0.1) 0 0 0 1px;
    box-shadow: var(--tile-subtle-border-shadow);
    display: block;
    margin: 0 0 15px;
    position: relative;
    vertical-align: top;
    box-sizing: border-box;
    overflow: hidden;
}

.tile.spacer {
    background: none;
    box-shadow: none;
}

.tile-link,
.tile-link:hover {
    text-decoration: none;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    font-size: 0;
    z-index: 1;
}

.third-tile {
    width: calc(33.33% - 10px);
}

.two-thirds-tile {
    width: calc(66.66% - 5px);
}

.featured-tile {
    padding: 0;
}

#icons {
    display: none;
}

.tile .background-image {
    position: relative;
    margin-top: -1px;
    height: 0;
    padding-bottom: 80%;
    overflow: hidden;
    width: 100%;
    background-color: hsl(215.3, 7.9%, 42.2%);
    background-color: var(--tile-default-background-color);
}

.tile .background-image svg {
    position: relative;
    top: -12%;
    width: 209%;
    height: auto;
    color: hsl(120, 2%, 9%);
    color: var(--tile-background-color);
}

.tile .background-image.has-featured-image {
    transition: filter 1s ease-in;
    -webkit-filter: saturate(0);
            filter: saturate(0);
}

.tile:not(.has-post-thumbnail) .featured-image {
    display: none;
}

.tile.category-web-inspector svg {
    background-color: hsl(200, 100%, 40%);
    background-color: var(--tile-background-color-blue);
}

.tile.category-performance svg {
    background-color: hsl(79.5, 45.3%, 52%);
    background-color: var(--tile-background-color-green);
}

.tile.category-javascript svg {
    background-color: hsl(280, 18%, 57.5%);
    background-color: var(--tile-background-color-violet);
}

.tile.category-css svg {
    background-color: hsl(357.1, 39%, 58.8%);
    background-color: var(--tile-background-color-rose);
}

.tile.category-standards svg {
    top: -20%;
    background-color: hsl(37.1, 100%, 37.5%);
    background-color: var(--tile-background-color-orange);
}

.tile.category-contributing svg {
    background-color: hsl(45.3, 56.5%, 53.1%);
    background-color: var(--tile-background-color-goldenrod);
}

.tile.category-storage svg {
    background-color: hsl(280, 18%, 57.5%);
    background-color: var(--tile-background-color-violet);
}

.tile.category-layout svg {
    background-color: hsl(357.1, 39%, 58.8%);
    background-color: var(--tile-background-color-rose);
}

.tile.category-safari-technology-preview svg {
    background-color: hsl(276.7, 36.3%, 51.4%);
    background-color: var(--tile-background-color-purplesafari);
}

.tile.category-accessibility svg {
    top: -8%;
    background-color: hsl(200, 100%, 40%);
    background-color: var(--tile-background-color-blue);
}

.tile.category-security svg {
    background-color: hsl(45.3, 56.5%, 53.1%);
    background-color: var(--tile-background-color-goldenrod);
}

.tile.category-privacy svg {
    background-color: hsl(45.3, 56.5%, 53.1%);
    background-color: var(--tile-background-color-goldenrod);
}

.tile .background-image.loaded {
    background: none;
    border-bottom: 1px solid hsla(0, 0%, 0%, 0.1);
    border-color: var(--tile-border-color);
    -webkit-filter: saturate(1);
            filter: saturate(1);
}

.tile .background-image.loaded svg {
    display: none;
}

.tile .featured-image::before {
    padding-top: 80%;
    margin-bottom: 20%;
    content: '';
    display: block;
}

.tile .featured-image {
    position: relative;
    max-height: 450px;
    background-size: cover;
    background-position: 50% 50%;
    background-repeat: no-repeat;

    opacity: 0;
    transition: opacity 0.4s ease-in;
}

.tile:not(.has-post-thumbnail) .background-image,
.tile .background-vignette {
    box-shadow: inset hsla(0, 0%, 0%, 0.1) 0 1px 0 1px;
    box-shadow: var(--tile-subtle-image-border-shadow);
}

.has-post-thumbnail .background-image {
    filter: saturate(0);
    -webkit-filter: saturate(0);
    opacity: 0.1;
}

.has-post-thumbnail .background-image.loaded,
.tile .background-image.loaded .featured-image {
    opacity: 1;
}

.featured-tile .background-image {
    padding-bottom: 60%;
    margin-bottom: 0;
}

.tile .tile-content {
    font-size: 1.6rem;
    line-height: 3rem;
    max-width: 100%;
    box-sizing: border-box;
    padding: 2rem;
}

.featured-tile .tile-content {
    padding: 0 24px;
    box-sizing: border-box;
    position: absolute;
    transform: none;
    bottom: 15px;
    top: auto;
}

.background-vignette {
    width: 100%;
    padding-bottom: 60%;
    position: absolute;
    top:0;
    background-image: linear-gradient(-180deg, hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0.95) 80%, hsla(0, 0%, 100%, 1));
    background-image: var(--tile-background-vignette);
}

.tag-window .background-image {
    background-color: hsl(0, 0%, 94.9%);
    background-color: var(--tag-window-background-color-gray);
}

.tag-window .background-vignette {
    background-image: linear-gradient(-180deg, hsla(0, 0%, 94.9%, 0) 25%, hsla(0, 0%, 94.9%, 1) 65%);
    background-image: var(--tag-window-vignette);
}

.featured-tile.tag-dark.tile {
    background: black;
}

.featured-tile.tag-dark .background-vignette {
    background-image: linear-gradient(-180deg, hsla(0, 0%, 0%, 0) 33%, hsla(0, 0%, 0%, 0.85));
    background-image: var(--tile-background-vignette-dark);
}

.featured-tile.tag-dark .tile-content {
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
}

.featured-tile.tag-dark .tile-content a {
    color: hsl(206.7, 100%, 70%);
    color: var(--inverse-link-color);
}

.tag-transparent:not(.featured-tile) .featured-image {
    box-shadow: none;
    background-size: contain;
}

.tag-transparent:not(.featured-tile) .background-image.loaded {
    border-bottom: none;
}

.tile-content p {
    margin: 0;
}

.tile h1 {
    font-size: 2.4rem;
    line-height: 1.20849;
    font-weight: 500;
    letter-spacing: 0.015rem;
    text-align: left;
    white-space: no-wrap;
}

.tile h2 {
    font-size: 2.4rem;
    line-height: 1.20849;
    font-weight: 200;
    text-align: inherit;
}

.tile .summary,
.tile p {
    margin-top: 1.65rem;
}

.icon-tile {
    text-align: center;
    font-size: 2rem;
}

.icon-tile h2 + p {
    font-weight: 200;
    margin-bottom: 1rem;
}

.icon-tile .icon {
    position: relative;
    background: url('images/compass.svg') no-repeat;
    background-position: 50% 50%;
    margin: 0 auto 3rem;
    padding: 40%;
}

.icon-tile.download .icon {
    background-image: url('images/download.svg');
}

.icon-tile.developer .icon {
    background-image: url('images/developer.svg');
}

.icon-tile,
.icon-tile a {
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
}

.gray-tile {
    background: linear-gradient(rgb(40, 40, 40), rgb(74, 74, 74));
    background-image: var(--tile-background-color-gray);
}
.gray-tile {
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
}
.gray-tile a {
    color: hsl(232.8, 100%, 37.5%);
    color: var(--gray-tile-text-color);
}


.amber-tile {
    background-color: hsl(48, 100%, 50%);
    background-color: var(--tile-background-color-amber);
}
.blue-tile {
    background-color: hsl(200, 100%, 40%);
    background-color: var(--tile-background-color-blue);
}

.twitter-tile {
    background-color: hsl(197.9, 70.6%, 53.3%);
    background-color: var(--tile-background-color-twitter);
}

.twitter-tile, .twitter-tile a {
    color: white;
}

.tile-content a {
    position: relative;
    z-index: 200;
}

.twitter-tile .tile-content {
    position: relative;
    box-sizing: border-box;
    font-size: 2rem;
    text-align: center;
}

.twitter-tile.text-only {
    display: -webkit-flex;
    display: flex;
    justify-content: center;
    text-align: left;
}

.twitter-tile .media {
    text-align: center;
}

.twitter-tile.text-only .tile-content {
    font-size: 2.5rem;
    font-weight: 400;
    line-height: 3rem;
    align-self: center;
    padding-bottom: 6rem;
}

.twitter-tile img {
    display: inline-block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 256px;
}

.twitter-controls {
    padding: 0 1.5rem;
    box-sizing: border-box;
    width: 100%;
    font-size: 1.5rem;
    line-height: 3rem;
    text-align: center;
    font-weight: 600;
    position: absolute;
    left: 0;
    bottom: 15px;
    z-index: 200;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-justify-content: space-between;
    justify-content: space-between;
}

.twitter-controls li {
    display: inline-block;
    margin: 0 1.3rem;
}

.twitter-controls a {
    opacity: 0.66;
    transition: opacity 300ms ease-out;
}
.twitter-controls a:hover {
    opacity: 1;
    text-decoration: none;
}

/** Twitter Icons **/

.twitter-icon {
    background: url('images/twitter.svg') no-repeat;
    background-size: cover;
}

.icon.twitter-icon {
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
    position: relative;
    margin: 3rem auto 3rem;
    width: 1px;
    padding: 33%;
    opacity: 0.33;
}

.twitter-tile h2 {
    text-align: center;
}

.twitter-controls .twitter-icon {
    text-indent: -9999em;
    display: inline-block;
    width: 2.5rem;
    height: 2.5rem;
}

.twitter-icon.reply-icon {
    background-position-y: 33%;
}

.twitter-icon.retweet-icon {
    background-position-y: 66%;
}

.twitter-icon.favorite-icon {
    background-position-y: 99%;
}

/** Code Syntax Highlighting **/
pre {
    width: calc(100% + 6rem);
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    background-color: hsl(0, 0%, 94.9%);
    background-color: var(--code-background-color);
    border: 1px solid hsl(0, 0%, 90.6%);
    border-color: var(--code-border-color);
    border-radius: 2px;
    box-sizing: border-box;
    padding: 3rem;
    margin-left: -3rem;
}

code {
    color: hsl(0, 0%, 26.7%);
    color: var(--code-text-color);
    font-size: 1.6rem;
    line-height: 2.5rem;
}

pre code {
    border: none;
    padding: 0;
}

code .keyword,
code.html .tag {
    color: hsl(292.5, 100%, 26.7%);
    color: var(--syntax-color-keyword);
}
code .keyword.builtin,
code .keyword.literal {
    color: hsl(309.6, 85.8%, 35.9%);
    color: var(--syntax-color-builtin);
}
code .keyword.type {
    color: hsl(17.6, 80.4%, 44.1%);
    color: var(--syntax-color-keyword-type);
}
code .preprocessor {
    color: hsl(60, 20%, 50%);
    color: var(--syntax-color-preprocessor);
}
code .comment {
    color: hsl(180, 6.9%, 60.4%);
    color: var(--syntax-color-comment);
    float: none;
    display: inline;
}
code .comment .doc {
    color: hsl(186.3, 8.3%, 55.1%);
    color: var(--syntax-color-comment-doc);
    font-weight: bold;
}
code .identifier {
    color: hsl(209.6, 71.4%, 38.4%);
    color: var(--syntax-color-identifier);
}
code .string,
code .char {
    color: hsl(70.8, 93%, 22.4%);
    color: var(--syntax-color-string);
}
code .escaped {
    color: hsl(0, 0%, 66.7%);
    color: var(--syntax-color-escaped);
}
code .number,
code .tag {
    color: hsl(194.5, 14.1%, 40.2%);
    color: var(--syntax-color-number);
}
code .regex,
code .attribute {
    color: hsl(44.8, 53.2%, 33.5%);
    color: var(--syntax-color-attribute);
}
code .attribute.value {
    color: hsl(1.4, 79.8%, 42.7%);
    color: var(--syntax-color-attribute-value);
}
code .operator {
    color: hsl(0, 0%, 53.3%);
    color: var(--syntax-color-operator);
}
code .keyword.operator {
    color: hsl(357.5, 100%, 33.1%);
    color: var(--syntax-color-keyword-operator);
}
code .whitespace {
    background-color: hsl(0, 0%, 20%);
    background-color: var(--syntax-color-whitespace-background-color);
}
code .error {
    border-bottom: 1px solid hsl(0, 100%, 50%);
    border-color: var(--syntax-color-error-border);
}
code .doctype {
    color: hsl(0, 0%, 75.3%);
    color: var(--syntax-color-doctype);
}
code .property {
    color: hsl(295.7, 76.8%, 32.2%);
    color: var(--syntax-color-property);
}

code.xml .comment,
code.html .comment {
    color: hsl(120, 100%, 22.7%);
    color: var(--syntax-color-xml-comment);
}

code.xml .preprocessor .keyword {
    color: hsl(60, 20%, 50%);
    color: var(--syntax-color-preprocessor);
}
code.xml .meta,
code.xml .meta .keyword {
    color: hsl(180, 50%, 40%);
    color: var(--syntax-color-xml-meta);
}

code.cpp .preprocessor .identifier {
    color: hsl(60, 20%, 50%);
    color: var(--syntax-color-preprocessor);
}

pre::-moz-selection,
pre span::-moz-selection {
    background-color: hsl(212.3, 97.8%, 81.8%);
    background-color: var(--code-selection-background-color);
}

pre::selection, pre span::selection {
    background-color: hsl(212.3, 97.8%, 81.8%);
    background-color: var(--code-selection-background-color);
}

code.syntax { white-space: normal; }
code.syntax .newlines { white-space: pre; display: block; }

code.css .attribute,
code.css .identifier,
code.css .preprocessor {
    color: hsl(309.6, 85.8%, 35.9%);
    color: var(--syntax-color-css-property);
}

code.css .keyword {
    color: hsl(0, 0%, 0%);
    color: var(--syntax-color-css-selector);
}
code.css .number {
    color: hsl(248.1, 100%, 40.6%);
    color: var(--syntax-color-css-number);
}

/** Post Typography **/

main {
    width: 100vw;
    max-width: 100%;
    overflow-x: hidden;
    box-sizing: border-box;
    padding: 3rem 0 0;
}

article {
    padding-bottom: 3rem;
}

article::after {
    clear: both;
    content: ' ';
    display: table;
}

article h1,
article h1 a {
    margin: 0 auto 3rem;
    font-size: 5.6rem;
    font-weight: 500;
    letter-spacing: 0.004rem;
    line-height: 1.10746;
    text-align: center;
    text-decoration: none;
    color: hsl(0, 0%, 26.7%);
    color: var(--text-color-heading);
}

article h2 {
    font-size: 3.2rem;
    line-height: 1.09375;
    font-weight: 500;
    letter-spacing: -0.011rem;
    margin: 4rem 0 1rem;
}

article h3 {
    font-size: 2.4rem;
    line-height: 1.09375;
    font-weight: 500;
    letter-spacing: -0.011rem;
}

article h4 {
    font-size: 2.2rem;
    line-height: 1.09375;
    font-weight: 500;
}

article h5 {
    font-size: 2rem;
    line-height: 1.09375;
    font-weight: 500;
}

article h6 {
    font-size: 1.7rem;
    line-height: 1.09375;
    font-weight: 500;
}

article h3,
article h4,
article h5,
article h6 {
    margin-bottom: 0.5rem;
}

article h2 + h3,
article h3 + h4,
article h4 + h5,
article h5 + h6 {
    margin-top: 0;
}

article p,
article div > img,
article pre,
article hr {
    margin-bottom: 3rem;
}

article .byline p {
    font-size: 1.5rem;
    line-height: 3rem;
    margin-bottom: 0;
    color: hsl(240, 2.3%, 56.7%);
    color: var(--text-color-coolgray);
}

article .byline .date {
    font-weight: 900;
}

article .byline .author {
    white-space: nowrap;

}

article table {
    font-size: 1.6rem;
    border-collapse: collapse;
    border-spacing: 0;
    margin: 3rem 0;
    width: 100%;
}

article thead, article tfoot {
    border-top: 1px solid hsl(0, 0%, 73.3%);
    border-top-color: var(--table-top-rule-color);
    border-bottom: 1px solid hsl(0, 0%, 87.8%);
    border-bottom-color: var(--table-rule-color);
}

article tr {
    border-top: 1px solid hsl(0, 0%, 87.8%);
    border-color: var(--table-rule-color);;
}

article tr:first-child {
    border-top: 0 none;
}

article th {
    font-weight: bold;
    vertical-align: bottom;
    text-align: left;

}
article td, th {
    padding: 1.754386%;
}
article th:first-child {
    padding-left: 0;
}

article ol,
article ul {
    padding-left: 3rem;
    margin: 3rem 0;
}

article ol {
    list-style-type: decimal;
}

article ul {
    list-style-type: square;
}

article ul ul,
article ul ol,
article ol ul,
article ol ol {
    margin-top: 0;
    margin-bottom: 0;
}

article blockquote {
    width: 100vw;
    height: auto;
    padding: 0 3rem;
    left: 50%;
    position: relative;
    margin-left: -50vw;
    box-sizing: border-box;
    font-weight: 200;
    font-size: 3rem;
    line-height: 4.2rem;
    text-align: center;
    color: hsl(240, 2.3%, 56.7%);
    color: var(--text-color-coolgray);
}
article blockquote > * {
    max-width: 1140px;
    margin-left: auto;
    margin-right: auto;
}

article blockquote:first-child {
    width: 100%;
    text-align: left;
    margin: 0 auto;
    left: 0;
    padding: 0;
}

.post .bodycopy > p:last-child:after {
    content: " \220E"; /* Tombstone */
    color: hsl(0, 0%, 33.3%);
    color: var(--text-color-medium);
}

article div.note {
    margin-left: -3rem;
    margin-right: -3rem;
    padding: 3rem;
    background-color: hsl(50, 100%, 94%);
    background-color: var(--note-background-color);
    border: 1px solid hsl(40, 100%, 90%);
    border-color: var(--note-border-color);
    color: hsl(30, 90%, 35%);
    color: var(--note-text-color);
    border-radius: 3px;
    margin-bottom: 3rem;
    box-sizing: normal;
}

article .foreword {
    padding: 1.6rem 2.2rem 1.6rem;
    line-height: 2.6rem;
    background-color: hsl(0, 0%, 94.1%);
    background-color: var(--foreword-background-color);
    border: 1px solid hsl(0, 0%, 90.2%);
    border-color: var(--foreword-border-color);
    color: hsl(240, 2.3%, 56.7%);
    color: var(--foreword-text-color);
    border-radius: 3px;
    margin-bottom: 3rem;
    box-sizing: normal;
    font-size: 1.6rem;
    font-style: italic;
}

article .two-columns {
    columns: 2;
    column-gap: 6rem;
    margin: 3rem 0;
}

article .two-columns h2,
article .two-columns h3,
article .two-columns h4,
article .two-columns h5,
article .two-columns h6 {
    break-after: avoid-column; /* https://bugs.webkit.org/show_bug.cgi?id=148814 */
}

article .two-columns p {
    break-inside: avoid-column;
}

/** Post Layout **/

article .byline {
    float: left;
    width: 191px;
    text-align: right;
    padding-right: 4rem;
    box-sizing: border-box;
}

article .bodycopy {
    width: 66%;
    margin: 0 auto;
    position: relative;
}

article .aligncenter .wp-caption-text {
    right: -50%;
}

article .alignleft {
    float: left;
    margin: 1.5rem 1.5rem 1.5rem 0;
}

article .aligncenter {
    clear: both;
    display: block;
    margin: 0 auto 3rem;
}

article div.aligncenter {
    position: relative;
    float: right;
    right: 50%;
}

article div.aligncenter img {
    position: relative;
    right: -50%;
}

article .alignright {
    float: right;
    margin: 1.5rem 0 1.5rem 1.5rem;
}

article .alignnone {
    display: block;
    float: none;
}

article .alignnone.size-full {
    width: 100vw;
    height: auto;
    left: 50%;
    position: relative;
    -webkit-transform: translate(-50vw, 0);
    transform: translate(-50vw, 0);
}

article .abovetitle {
    margin-top: -0.4em;
}

article .pull-left {
    float: left;
    margin: 1.5rem 1.5rem 1.5rem -25%;
}

article .pull-right {
    float: right;
    margin: 1.5rem -25% 1.5rem 1.5rem;
}

article .cliptop {
    border-top: 1px solid hsl(0, 0%, 86.7%);
    border-color: var(--horizontal-rule-color);
}

article .clipbottom {
    border-bottom: 1px solid hsl(0, 0%, 86.7%);
    border-color: var(--horizontal-rule-color);
}

article .clipright {
    border-right: 1px solid hsl(0, 0%, 86.7%);
    border-color: var(--horizontal-rule-color);
}

article .clipleft {
    border-left: 1px solid hsl(0, 0%, 86.7%);
    border-color: var(--horizontal-rule-color);
}

article .mattewhite {
    background-color: hsl(0, 0%, 100%);
    background-color: var(--figure-mattewhite-background-color);
    border-top: 1px solid hsl(0, 0%, 90.6%);
    border-bottom: 1px solid hsl(0, 0%, 90.6%);
    border-color: var(--article-border-color);
    padding-top: 3rem;
    padding-bottom: 3rem;
}

article .mattewhite:not(.widescreen) {
    border: 1px solid hsl(0, 0%, 90.6%);
    border-color: var(--article-border-color);
    padding: 3rem;
    margin-left: -3rem;
    margin-right: -3rem;
}

article .mattewhite.tightwad {
    padding: 0;
}

/** Article Figures **/

article figure {
    margin-bottom: 3rem;
    text-align: center;
}
article figure > img {
    display: inline-block;
    max-width: 100%;
    max-height: 540px;
    height: auto;
    width: auto;
}

figure.widescreen {
    position: relative;
    width: 100vw;
    left: 50%;
    transform: translate(-50%);
}

figure.widescreen img,
figure.widescreen figcaption {
    display: block;
    margin: 0 auto;
}

figure.widescreen figcaption {
    margin-top: 3rem;
}

figure.widescreen video {
    max-height: 420px;
    max-width: 66%;
}

figure.table {
    -webkit-overflow-scrolling: touch;
    width: calc(100% + 6rem);
    overflow: auto;
    border: 1px solid hsl(0, 0%, 90.6%);
    border-color: var(--code-border-color);
    background-color: hsl(0, 0%, 94.9%);
    background-color: var(--code-background-color);
    border-radius: 3px;
    box-sizing: border-box;
    padding: 3rem;
    margin-left: -3rem;
}

article video.alignleft,
article video.alignright {
    max-width: 50%;
}

article .alignleft:first-child,
article .alignright:first-child {
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
}

article figcaption {
    text-align: left;
    margin-top: 1.5rem;
    line-height: 1.5;
    max-width: 970px;
    padding-left: 1.5rem;
    box-sizing: border-box;
    font-size: 1.3rem;
    font-weight: 400;
    color: hsl(0, 0%, 33.3%);
    color: var(--text-color-medium);
    position: relative;
}

article figcaption::before {
    left: 1.5rem;
    width: 15%;
    height: 100%;
    bottom: 2.5rem;
    border-top: 1px solid hsl(0, 0%, 80%);
    border-color: var(--figure-caption-rule-color);
    content: '';
    opacity: 1;
    display: inline-block;
    box-sizing: border-box;
    position: absolute;
}

figure.aligncenter figcaption {
    text-align: center;
    padding-left: 0;
}

figure.aligncenter figcaption::before {
    margin: 0 auto;
    width: 20%;
    left: 50%;
    transform: translate(-50%);
}

article .clipbottom + p + figcaption {
    margin-top: 1rem;
}

article .clipbottom + p + figcaption::before {
    width: 0;
}

/** Page Layout **/
article.page h1 {
    text-align: left;
    width: 66%;
}

.page .bodycopy h1 {
    width: 100%;
}

/** Load Effects **/

@keyframes fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@-webkit-keyframes fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes fade-in-move-down {
    from {
        opacity: 0;
        -webkit-transform: translateY(-3rem);
        transform: translateY(-3rem)
    }

    to {
        opacity: 1;
        -webkit-transform: translateY(0);
        transform: translateY(0)
    }
}

@-webkit-keyframes fade-in-move-down {
    from {
        opacity: 0;
        -webkit-transform: translateY(-3rem);
        transform: translateY(-3rem)
    }

    to {
        opacity: 1;
        -webkit-transform: translateY(0);
        transform: translateY(0)
    }
}

article,
.feature-status-page {
    -webkit-animation: fade-in-move-down 0.7s;
    animation: fade-in-move-down 0.7s;
}

.tile {
    -webkit-animation: fade-in 0.4s;
    animation: fade-in 0.4s;
}

/** Page Table of Contents **/

.table-of-contents {
    float: right;
    box-sizing: border-box;
    padding: 2.5rem 0 0 0;
    margin: 0 0 2.5rem 3rem;

    max-width: 33%;
    z-index: 5;
    font-size: 1.4rem;
    line-height: 1.20849;
    border-top: 1px solid hsl(0, 0%, 83.9%);
    border-color: var(--toc-border-color);
}

article .table-of-contents label {
    font-size: 1.7rem;
    font-weight: 500;
    margin-bottom: 1.65rem;
}

.table-of-contents ul {
    margin: 0;
    list-style: none;
    margin-top: 1.65rem;
}

.table-of-contents .list > ul {
    padding-left: 0;
}

.table-of-contents ul li {
    margin-bottom: 1.65rem;
}

.table-of-contents ul li:last-child {
    margin-bottom: 0;
}

.table-of-contents ul li > ul {
    margin-top: 1.65rem;
}

.with-toc pre:nth-child(-n+6),
#post-4132 pre:nth-child(-n+10) {
    width: 55%;
    z-index: -1;
}

/** Logo **/
.site-logo {
    float: left;
    font-size: 3rem;
    line-height: 1.04167;
    letter-spacing: 0.015rem;
    font-weight: 500;
    text-rendering: optimizeLegibility;
    display: inline-block;
    background: url('images/webkit.svg') no-repeat;
    padding: 1rem 0 1rem 5.5rem;
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
}

.hero .logo {
    background-image: url('images/webkit.svg');
}

/** Status Page **/

.feature-header:after,
.property-header:after {
    display: inline-block;
    content: "";
    background: url('images/menu-down.svg') no-repeat 50%;
    background-size: 2rem;
}

/** Navigation **/

.label-toggle {
    cursor: pointer;
}

header nav {
    text-align: right;
}

/* Hide menu toggle checkboxes */
input.menu-toggle {
    visibility: hidden;
    position: absolute;
    top: 0;
    left: 0;
}

footer {

}

footer nav {
    padding: 1.65rem 0 0;
}

header nav li {
    display: inline-block;
    padding: 1.5rem 0 1.5rem 3rem;
}

footer nav li {
    display: inline-block;
    position: relative;
    padding: 0 0 1.5rem 3rem;
}

footer nav li:first-child {
    padding-left: 0;
}

header nav a,
.sub-menu a,
footer nav a {
    position: relative;
    display: inline-block;
    text-decoration: none;
    font-size: 1.4rem;
    line-height: 1.5455;
    letter-spacing: -0.015rem;
    letter-spacing: 0;
    cursor: pointer;
    font-weight: 500;
    color: hsl(0, 0%, 20%);
    color: var(--text-color);
}

header nav a,
footer nav a {
    color: hsl(0, 0%, 100%);
    color: var(--inverse-text-color);
}

header nav a:hover,
footer nav a:hover {
    color: hsl(200, 100%, 40%);
    color: var(--link-color);
    text-decoration: none;
}

header .menu-item-has-children .label-toggle::after {
    background: url('images/menu-down.svg') no-repeat;
    background-size: 1.2rem;
    display: inline-block;
    padding-right: 1.2rem;
    padding-top: 0.8rem;
    margin-left: 0.5rem;
    margin-top: -0.1rem;
    content: '';

    -webkit-filter: invert(100%);
    filter: invert(100%);
    perspective: 600;

    transition: transform 0.3s ease-out;
}

header .menu-item { /* add bottom dimension to main menu items */
    padding-bottom: 2.5rem;
}

.sub-menu-layer {
    text-align: center;
    padding: 3rem;
    box-sizing: border-box;

    width: 21rem;
    margin-left: -11rem;
    margin-top: -99rem;

    position: absolute;
    top: 7rem;
    transform: translateY(-1rem);

    background-color: hsla(0, 0%, 100%, 0.95);
    background-color: var(--submenu-background-color);
    box-shadow: 0px 3px 20px 0px hsla(0, 0%, 0%, 0.1);
    box-shadow: var(--submenu-shadow);
    border: 1px solid hsl(0, 0%, 90.6%);
    border-color: var(--submenu-border-color);
    border-radius: 5px;

    transition: opacity 0.6s;
    opacity: 0;
}

.sub-menu-layer:after, .sub-menu-layer:before {
    bottom: 100%;
    left: 71%;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none;

}

.sub-menu-layer:after {
    border-bottom-color: hsla(0, 0%, 100%, 0.95);
    border-bottom-color: var(--submenu-background-color);
    border-width: 10px;
    margin-left: -10px;
}

.sub-menu-layer:before {
    border-bottom-color: hsla(0, 0%, 100%, 0.95);
    border-bottom-color: var(--submenu-background-color);
    border-width: 11px;
    margin-left: -11px;
}

.sub-menu-layer .menu-item {
    padding: 1.5rem 0 0 0;
    width: 100%;
}

.sub-menu-layer .menu-item:first-child {
    padding: 0;
}

.menu > .menu-item > a:focus ~ .sub-menu,
.menu > .menu-item.open-menu > .sub-menu,
.menu > .menu-item:hover > .sub-menu,
.menu > .menu-item > .menu-toggle:checked + .sub-menu {
    display: block;
    box-sizing: border-box;
    z-index: 1;
    opacity: 1;
    transform: translateY(0);
    margin-top: 0;
}

/** Accessibility **/

@media (prefers-reduced-motion) {
    article,
    .feature-status-page {
        -webkit-animation: fade-in 0.7s;
        animation: fade-in 0.7s;
    }
}

/** Screen Breakpoints **/

@media only screen and (max-width: 1180px) {
    .page-width {
        max-width: 1140px;
        padding-left: 2rem;
        padding-right: 2rem;
    }

    article .byline {
        width: 60%;
        margin: 0 auto;
        float: none;
        text-align: center;
        margin-bottom: 3rem;
        padding-right: 0;
    }

    article .byline p {
        display: inline;
    }
}

@media only screen and (max-width: 1000px) {
    article.page h1 {
        width: 90%;
        margin-bottom: 3rem;
    }

    article .byline {
        width: 60%;
        margin: 0 auto;
        float: none;
        text-align: center;
        margin-bottom: 3rem;
    }

    article .byline p {
        display: inline;
    }

    article .bodycopy {
        width: 90%;
    }
}

@media only screen and (max-width: 920px) {
    .main-menu.label-toggle {
        display: inline-block;
        margin: 1.5rem 0 2.5rem;
        height: 3rem;
        width: 3rem;
        background: url('images/menu-down.svg') no-repeat 50%;
        cursor: pointer;

        transition: transform 0.3s ease-out;

        -webkit-filter: invert(100%);
        filter: invert(100%);
        perspective: 600;
        transform: translateZ(10rem);
    }

    .menu-toggle:checked + .main-menu.label-toggle,
    header .menu-item > .menu-toggle:checked + a > .label-toggle::after {
        -webkit-transform: rotateX(-180deg);
        -moz-transform: rotateX(-180deg);
        transform: rotateX(-180deg);
        perspective: 600;
    }

    header .menu {
        display: none;
        position: absolute;
        left: 0;
        margin-top: 1px;
        padding-top: 3rem;
        text-align: left;
        width: 100vw;
        overflow: hidden;
        box-shadow: 0px 5px 5px hsla(0, 0%, 0%, 0.1);
        box-shadow: var(--header-menu-shadow);

        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(10px);
        background-color: hsla(0, 0%, 100%, 0.8);
        background-color: var(--header-menu-background-color);
    }

    header nav a {
        color: hsl(0, 0, 100%);
        color: var(--text-color);
    }

    header .menu-toggle:checked ~ ul {
        display: block;
        opacity: 1;
    }

    header .menu-item-has-children .label-toggle::after {
        -webkit-filter: invert(0%);
        filter: invert(0%);
    }

    header .menu-main-menu-container >  ul > li {
        width: 100vw;
        position: relative;
        padding: 0 3rem 3rem;
        box-sizing: border-box;
        transition: opacity 0.6s;
    }

    header .menu > .menu-item > .sub-menu {
        box-shadow: none;
        border-bottom: 1px solid hsl(0, 0%, 90.6%);
        border-color: var(--submenu-border-color);
    }

    header .menu > .menu-item-has-children {
        margin-left: 0;
    }

    header .sub-menu-layer {
        text-align: left;
        width: 100vw;
        left: 50%;
        margin-left: -50vw;
        border-radius: 0;
        border-left: none;
        border-right: none;
        opacity: 0;
        transform: translateY(0);
        transition: opacity 0.6s;
    }

    header .sub-menu-layer:after, .sub-menu-layer:before {
        bottom: 100%;
        left: 71%;
        border: solid transparent;
        content: " ";
        height: 0;
        width: 0;
        position: absolute;
        pointer-events: none;
    }

    header .sub-menu-layer:after {
        border: none;
        margin-left: -10px;
    }

    header .sub-menu-layer:before {
        border: none;
        margin-left: -11px;
    }

    header .menu > .menu-item > .menu-toggle:checked ~ .sub-menu {
        position: relative;
        top: 1.5rem;
        margin-top: 0;
    }

    footer nav li {
        padding: 0 3rem 3rem 0;
    }

}

@media only screen and (max-width: 690px) {
    article h1 {
        font-size: 3.4rem;
    }

    .featured-tile {
        padding: 0;
    }

    .tile.spacer {
        height: 0;
        min-height: 0;
        margin-bottom: 0;
    }

    .page-width {
        max-width: 100vw;
        padding-left: 1rem;
        padding-right: 1rem;
        overflow: hidden;
        box-sizing: border-box;
    }

    .tile {
        min-height: 375px;
    }

    .third-tile,
    .two-thirds-tile {
        width: calc(100% - 1px);
    }

    .icon-tile .icon {
        margin-top: -40%;
    }

    .with-toc pre:nth-child(-n+8),
    article pre {
        position: relative;
        width: 100vw;
        left: 50%;
        transform: translate(-50%);
        margin-left: 0;
        border-radius: 0;
        border-left: none;
        border-right: none;
    }

    .table-of-contents { /* hug the edge */
        right: 0;
    }

    .pagination .prev-post,
    .pagination .next-post {
        min-width: auto;
        width: 90%;
        text-align: right;
    }

    .pagination .prev-post {
        margin-bottom: 1rem;
        text-align: left;
    }

    .nextrouter-copy {
        font-size: 2.2rem;
    }

    article .scrollable {
        overflow: auto;
        -webkit-overflow-scrolling: touch;
        position: relative;
        width: 100vw;
        left: 50%;
        transform: translate(-50%);
        margin: 3rem 0;
        border: 1px solid hsl(0, 0%, 80%);
        border-color: var(--article-scrollable-border-color);
        border-left: none;
        border-right: none;
    }

    article video.alignleft,
    article video.alignright {
        min-width: 30rem;
    }

    .scrollable .scrollable-padding {
        display: inline-block;
        padding: 0 3rem;
    }
}

@media only screen and (max-width: 600px) {
    header {
        padding-top: 1rem;
    }

    .site-logo {
        font-size: 4rem;
        padding-left: 6.4rem;
    }

    header nav .main-menu.label-toggle {
        margin-top: 2rem;
        margin-bottom: 2rem;
    }

    #wpadminbar {
        position: absolute;
    }

    .table-of-contents {
        /* Collapse */
        height: 7rem;
        overflow: hidden;
        border-bottom-width: 1px;
        border-bottom-style: solid;

        /* one-column */
        width: 100vw;
        max-width: 100%;
        position: relative;
        float: none;
        padding-bottom: 2.5rem;
        margin: 0 0 3rem 0;
    }

    .menu-toggle:checked ~ .table-of-contents {
        height: auto;
    }

    .table-of-contents label {
        display: block;
    }

    .table-of-contents label:after {
        display: inline-block;
        content: "";
        background: url('images/menu-down.svg') no-repeat 50%;
        background-size: 1rem;
        width: 2rem;
        height: 2rem;
        position: absolute;
        transition: transform 0.3s ease-out;
        perspective: 600;
    }

    .menu-toggle:checked ~ .table-of-contents label:after {
        -webkit-transform: rotateX(-180deg);
        -moz-transform: rotateX(-180deg);
        transform: rotateX(-180deg);
    }

    .table-of-contents h6 {
        margin-bottom: 3rem;
    }

    .with-toc pre:nth-child(-n+6),
    #post-4132 pre:nth-child(-n+8) {
        width: 100vw;
    }

    article video.alignleft,
    article video.alignright {
        max-width: 100%;
        min-width: none;
        width: 100%;
    }

    article .alignleft:first-child,
    article .alignright:first-child {
        margin-bottom: 3rem;
    }

}

@media only screen and (max-width: 415px) {

    .nextrouter-copy {
        font-size: 1.7rem;
        letter-spacing: -0.016rem;
    }
}

@media only screen and (max-height: 415px) and (max-width: 920px) {

    .home .site-logo {
        opacity: 1;
        margin-top: 0;
    }

    header,
    .home header {
        padding-top: 1rem;
    }

    @supports(padding:max(0px)) {
        header,
        header .menu,
        .home header,
        .home .hero .content,
        .feature-filters,
        #content,
        #nightly,
        footer {
            box-sizing: border-box;
            padding-left: env(safe-area-inset-left);
            padding-right: env(safe-area-inset-right);
        }

        header .menu .menu-item > .sub-menu {
            border: none;
            background: none;
        }

        .sub-menu-layer {
            padding: 0 3rem;
        }

        .sub-menu-layer .menu-item:first-child,
        .sub-menu-layer .menu-item {
            padding: 0 0 1.5rem 1.5rem;
        }

    }

    .tile {
        overflow: hidden;
    }

    .tile .background-image {
        padding-bottom: 33%;
    }

    .tile .background-image svg {
        top: -65%;
    }


    .table-of-contents {
        height: 9rem;
        overflow: hidden;
        margin-right: -10%;
    }

    .menu-toggle:checked ~ .table-of-contents {
        height: auto;
    }

    .table-of-contents label {
        display: block;
    }

    .table-of-contents label:after {
        display: inline-block;
        content: "";
        background: url('images/menu-down.svg') no-repeat 50%;
        background-size: 1rem;
        width: 2rem;
        height: 2rem;
        position: absolute;
        transition: transform 0.3s ease-out;
        perspective: 600;
    }

    .menu-toggle:checked ~ .table-of-contents label:after {
        -webkit-transform: rotateX(-180deg);
        -moz-transform: rotateX(-180deg);
        transform: rotateX(-180deg);
    }

    .table-of-contents h6 {
        margin-bottom: 3rem;
    }

    .with-toc pre:nth-child(-n+6),
    #post-4132 pre:nth-child(-n+8) {
        width: 100vw;
    }
}

@media(prefers-color-scheme:dark) {
    article .invert-brightness,
    figure img {
        filter: url(#invertLightness);
    }

    .preserve-color, video {
        filter: brightness(0.7);
        transition: filter 0.3s ease-out;
    }

    .preserve-color:hover,
    figure:hover .preserve-color,
    figure:hover video,
    video:hover {
        filter: brightness(1);
    }

    .nextrouter .link,
    a.readmore {
        background-image: url('images/chevron-dark.svg');
    }
}

#template {
    background-image: url('images/template.svg');
}

#compass {
    background-image: url('images/compass.svg');
}

.search-input {
    background-image: url('images/search.svg');
}

.filters-toggle-button {
    background-image: url('images/filter.svg');
}