as-contrast-checker {
    display: block;
    max-width: 500px;
    min-width: 400px;
}

as-contrast-checker .controls {
    display: flex;
    gap: 1em;
    justify-content: space-around;
    margin-block-end: 1em;
}

as-contrast-checker .controls input[type="color"] {
    appearance: none;
    display: block;
    border: 1px solid #000000;
    border-radius: .5em;
    width: 50px;
    height: 30px;
    padding: 0;
    margin: 0;
    overflow: hidden;
}

as-contrast-checker .controls input[type="color"]::-webkit-color-swatch-wrapper {
    padding: 0;
}

as-contrast-checker .controls button {
    appearance: none;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 2em;
    line-height: 1;
}

as-contrast-checker textarea {
    display: block;
    padding: .5em;
    width: 100%;
    min-height: 6ch;
    field-sizing: content;
    margin-block: 1em;
    appearance: none;
    border: 1px solid #000000;
    border-radius: .5em;
    background: #ffffff;
    font-size: 1em;
    line-height: 1.5;
}

as-contrast-checker .bg {
    padding: 1em;
    border-radius: .25em;
    background-color: var(--bgcolor, #000000);
}

as-contrast-checker .text {
    color: var(--textcolor, #ffffff);
    font-size: var(--font-size, 1em);
}

as-contrast-checker .contrast[pass] {
    background-color: #008000;
    color: #ffffff;
}

as-contrast-checker .contrast,
as-contrast-checker .contrast[pass="DNP"] {
    border-radius: .25em;
    text-align: center;
    margin-block-start: 1em;
    padding: 1em;
    font-weight: 700;
    font-size: 2em;
    background-color: #800000;
    color: #ffffff;
}

as-contrast-checker .contrast[pass]:before {
    content: '(' attr(pass)') ';
}

as-contrast-checker button.save,
as-contrast-checker button.update {
    appearance: none;
    border: none;
    background-color: orange;
    color: black;
    cursor: pointer;
    font-size: 1em;
    line-height: 1;
    text-align: center;
    display: block;
    margin-block: 1em;
    margin-inline: auto;
    padding: 1em;
    font-weight: 700;
    border-radius: .25em;
    transition: all .15s ease-out;
}

as-contrast-checker button.save:HOVER,
as-contrast-checker button.update:HOVER {
    transform: translate(-3px, -3px);
    box-shadow: .25em .25em #000000;
}

as-contrast-checker button.save:ACTIVE,
as-contrast-checker button.update:ACTIVE {
    transform: translate(0, 0);
    box-shadow: none;
}

as-contrast-checker button.save[disabled] {
    opacity: .5;
    cursor: not-allowed;
}

as-contrast-checker .saved {
    display: flex;
    flex-direction: column;
    gap: 1em;
}

as-contrast-checker .saved>* {
    display: flex;
    gap: 1em;
    text-align: center;
}

as-contrast-checker .saved>*>button {
    appearance: none;
    border: none;
    background-color: #ffffff;
    color: #000000;
    cursor: pointer;
    font-size: 1.5em;
    line-height: 1;
    text-align: center;
    padding-inline: .25em;
    font-weight: 700;
    border-radius: .25em;
    width: 10%;
    transition: all .15s ease-out;
}

as-contrast-checker .saved>*>button:HOVER {
    transform: translate(-1px, -1px);
    box-shadow: .125em .125em #000000;
}

as-contrast-checker .saved>*>button:ACTIVE {
    transform: translate(0, 0);
    box-shadow: none;
}

as-contrast-checker .saved>*>div {
    width: 50%;
    padding: .5em;
    border-radius: .25em;
}