@layer globals {
    * {
        box-sizing: border-box;
    }

    :root {
        --nav--font--weight: var(--font--weight--500);
        --nav--color--text: var(--color--brand--white);
        --nav--color--border: var(--color--brand--contrast);
        --nav--font--family: var(--font--family--sans-serif);
    }


    p.summaryDisclaimer {
        font-family: var(--font--text--family--small);
        font-size: var(--font--text--size--small);
        font-weight: var(--font--text--weight--small);
        line-height: var(--font--text--line-height--small);
        letter-spacing: var(--font--text--letter-spacing--small);
        text-transform: var(--font--text--casing--small);
    }

    :root {
        --button--color--background--danger: var(--color--danger);
        --button--color--background--inactive: var(--color--background--secondary);
        --button--color--background--loud: var(--color--loud);
        --button--color--background--quiet: var(--color--brand--70);
        --button--color--text: var(--color--text--inverted);
        --button--color--text--inactive: var(--color--text--primary);
        --button--font--family: var(--font--family--sans-serif);
        --button--font--size: var(--font--size--2xsmall);
    }

    button, .button {
        display: inline-flex;
        align-items: center;
        text-align: center;
        white-space: nowrap;
        background-color: var(--color--brand--contrast--alt);
        color: var(--color--text--inverted);
        border: none;
        border-radius: var(--size--corner-radius);
        height: 3.125rem;
        overflow: hidden;
        vertical-align: bottom;
        cursor: pointer;
        min-width: 12rem;
        justify-content: center;
        text-decoration: none;

        font-family: var(--font--button--family);
        font-size: var(--font--button--size);
        font-weight: var(--font--button--weight);
        line-height: var(--font--button--line-height);
        letter-spacing: var(--font--button--letter-spacing);
        text-transform: var(--font--button--casing);

        & > svg {
            pointer-events: none;
        }

        &:visited, &:hover, &:active {
            color: var(--button--color--text);
        }

        &.danger {
            background-color: var(--color--danger);
        }

        &.loud {
            background-color: var(--color--loud);
        }

        &:disabled {
            background-color: var(--color--background--secondary);
            color: var(--color--text--primary);
            border: solid var(--size--border) var(--color--border);
            cursor: default;
        }

        &.borderless {
            background: none;
            border: none;
            color: var(--color--text--primary);
        }

        &.link {
            background: none;
            border: none;
            color: var(--color--text--primary);
            min-width: 0;
            justify-self: center;
            align-self: start;
            height: auto;
        }
    }

    div.inline-field {
        display: grid;
        grid-template-columns: min-content auto;
        justify-content: start;
        align-items: center;
        grid-column: span 4;
        margin-bottom: var(--space-s);
        column-gap: var(--space-xs);

        &.inverted {
            grid-template-columns: 1fr min-content;
        }

        &.end {
            justify-content: end;
        }

        & label {
            font-family: var(--font--title--family--xxsmall);
            font-size: var(--font--title--size--xxsmall);
            font-weight: var(--font--title--weight--xxsmall);
            line-height: var(--font--title--line-height--xxsmall);
            letter-spacing: var(--font--title--letter-spacing--xxsmall);
            text-transform: var(--font--title--casing--xxsmall);

            & > span.preferred {
                font-family: var(--font--caption--family--small);
                font-size: var(--font--caption--size--small);
                font-weight: var(--font--caption--weight--small);
                line-height: var(--font--caption--line-height--small);
                letter-spacing: var(--font--caption--letter-spacing--small);
                text-transform: var(--font--caption--casing--small);
            }
        }

        &:has(input:disabled) label {
            color: var(--color--brand--70);
        }
    }

    div.form-field {
        display: grid;
        grid-template-areas:
            "label"
            "input";

        grid-template-rows: 1.31rem min-content;
        grid-auto-rows: auto;
        row-gap: var(--space-2xs);

        align-items: top;
        justify-content: stretch;
        margin-bottom: var(--space-m);

        & label {
            grid-area: label;
        }

        & input, & textarea, & select {
            grid-area: input;
        }

        & p {
            margin-bottom: 0;
        }

        & p.error {
            text-align: right;
        }
    }

    p.note {
        font-family: var(--font--caption--family--small);
        font-size: var(--font--caption--size--small);
        font-weight: var(--font--caption--weight--small);
        line-height: var(--font--caption--line-height--small);
        letter-spacing: var(--font--caption--letter-spacing--small);
        text-transform: var(--font--caption--casing--small);

        &:not(:last-child) {
            display: none;
        }
    }

    p.error {
        color: var(--color--danger);

        font-family: var(--font--caption--family--small);
        font-size: var(--font--caption--size--small);
        font-weight: var(--font--caption--weight--small);
        line-height: var(--font--caption--line-height--small);
        letter-spacing: var(--font--caption--letter-spacing--small);
        text-transform: var(--font--caption--casing--small);
    }

    label {
        font-family: var(--font--title--family--xsmall);
        font-size: var(--font--title--size--xsmall);
        font-weight: var(--font--title--weight--xsmall);
        line-height: var(--font--title--line-height--xsmall);
        letter-spacing: var(--font--title--letter-spacing--xsmall);
        text-transform: var(--font--title--casing--xsmall);

        &.required {
            &::after {
                content: " *";
                color: var(--color--brand--50);
                font-weight: 500;
            }
        }
    }

    .error {
        & input {
            border-color: var(--color--danger);
        }
    }

    input, select {
        /* Removed this, but wht did I have it? */
        /* box-sizing: content-box; */
        overflow: hidden;
    }

    input, textarea, select {
        font-family: var(--font--input--family--medium);
        font-size: var(--font--input--size--medium);
        font-weight: var(--font--input--weight--medium);
        line-height: var(--font--input--line-height--medium);
        letter-spacing: var(--font--input--letter-spacing--medium);
        text-transform: var(--font--input--casing--medium);

        color: var(--color--text--primary);
        border-style: solid;
        border-width: var(--size--border);
        border-color: var(--color--border);
        min-width: 0;
        margin: 0;

        padding: var(--space-s) var(--space-s);

        &::placeholder {
            color: var(--color--brand--70);
        }

        &:focus {
            background-color: var(--color--brand--highlight--soft);
            outline: none;
        }

        &:disabled {
            background-color: var(--color--brand--97);
        }
        &:read-only:not(select) {
            background-color: var(--color--brand--97);
        }

        &:user-invalid {
            color: var(--color--danger);
            border-color: var(--color--danger);
        }

        &:has(+ *) {
            margin-bottom: var(--space-3xs);
        }

        /*
        &:invalid {
            color: var(--color--danger);
            border-color: var(--color--danger);
        }
        */
    }

    textarea {
        line-height: 1.5;
    }

    select {
        appearance: none;
        border: solid var(--size--border) var(--color--border);
        border-radius: 0;
        background-color: var(--color--brand--white);
        grid-column: 1 / span 2;
        justify-content: space-between;
        align-items: center;
        overflow-x: hidden;
        text-overflow: ellipsis;
        width: auto;
        width: 100%;
        color: var(--color--text--primary);
        height: 3.4375rem;

        &:focus {
            background-color: var(--color--brand--highlight);
            outline: none;
        }

        option {
            color: var(--color--text--primary);
        }

        background-image: var(--icon--select);
        background-repeat: no-repeat;
        background-position: right 0.65rem center;
        background-size: 0.85rem;
    }

    input[type=radio] {
        appearance: none;
        border-style: solid;
        border-color: var(--color--border);
        border-width: var(--size--border);
        border-radius: 100%;
        width: 1.25rem;
        height: 1.25rem;
        background-color: var(--color--background--primary);
        padding: 0;

        display: grid;
        place-content: center;

        &::before {
            content: "";
            width: 0.5rem;
            height: 0.5rem;
            background-color: var(--color--text--primary);
            border-radius: 50%;
            transform: scale(0);
            transition: 120ms transform ease-in-out;
        }

        &:checked::before {
            transform: scale(1);
        }

        &:focus {
            background-color: var(--color--brand--highlight);
            outline: none;
        }

        &:disabled {
            background-color: transparent;
        }
    }

    input[type=checkbox] {
        appearance: none;
        border-style: solid;
        border-color: var(--color--border);
        border-width: var(--size--border);
        width: 1.1875rem;
        height: 1.1875rem;
        background-color: var(--color--background--primary);
        padding: 0;

        display: grid;
        place-content: center;

        &::before {
            content: "";
            width: 0.6875rem;
            height: 0.6875rem;
            background-color: var(--color--text--primary);
            mask-image: var(--icon--checkmark);
            mask-repeat: no-repeat;
            mask-position: center;
            mask-size: contain;
            transform: scale(0);
            transition: 120ms transform ease-in-out;
        }

        &:checked::before {
            transform: scale(1);
        }

        &:focus {
            background-color: var(--color--brand--highlight);
            outline: none;
        }

        &:disabled {
            background-color: transparent;

            &::before {
                background-color: var(--color--brand--70);
            }
        }
    }

    .grid {
        background-color: var(--color--brand--white);
        background-image:
            linear-gradient(to right, var(--color--brand--97) 1px, transparent 1px),
            linear-gradient(to bottom, var(--color--brand--97) 1px, transparent 1px);
        background-size: 1.25rem 1.25rem;
        border: solid var(--size--border) var(--color--border);

        @media screen and (min-width: 600px) {
            border-inline: solid var(--size--border) var(--color--border);
        }
    }

    dl {
        display: grid;
        grid-template-columns: auto auto;

        > div {
            display: grid;
            grid-column: span 2;
            grid-template-columns: subgrid;
        }

        dt, dd {
            display: inline;
        }
    }

    details.rollup[open] > summary {
        display: none;
    }
}

@layer overrides {
    @media screen and (max-width: 599px) {
        .hide-small {
            display: none;
        }
    }

    @media screen and (min-width: 600px) and (max-width: 999px) {
        .hide-medium {
            display: none;
        }
    }

    @media screen and (min-width: 1000px) {
        .hide-large {
            display: none;
        }
    }
}
