/* px-3 py-2 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-gray-300 ring-inset hover:bg-gray-50 */

/* Button */
.btn {
    --btn-color: var(--color-white);
    --btn-hover-color: var(--color-gray-50);
    --text-color: var(--color-gray-900);

    display: inline-flex;
    width: fit-content;

    padding: calc(var(--spacing) * 2) calc(var(--spacing) * 3);
    align-items: center;
    justify-content: center;
    text-align: center;

    cursor: pointer;
    user-select: none;

    font-weight: var(--font-weight-semibold);
    font-size: var(--text-sm);

    border-radius: var(--radius-md);
    color: var(--text-color);
    box-shadow: var(--shadow-xs);

    background: var(--btn-color);

    transition: all 100ms;

    --tw-ring-inset: inset;
    --tw-ring-color: var(--color-gray-300);
    --tw-ring-offset-width: 0px;
    --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);

    --tw-inset-shadow: 0 0 #0000;
    --tw-inset-ring-shadow: 0 0 #0000;
    --tw-ring-offset-shadow: 0 0 #0000;
    --tw-shadow: 0 1px 2px 0 #0000000d;
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);

    &:not(:only-child) {
        justify-content: space-evenly;
    }

    &.btn-big {
        padding: .5rem 1rem;
    }

    &:hover {
        background-color: var(--btn-hover-color);
    }

    &:active {
        transform: scale(0.975);
    }

    @media (prefers-color-scheme: dark) {
        --btn-color: var(--color-zinc-700);
        --text-color: var(--color-white);
        --btn-hover-color: var(--color-zinc-800);
        --tw-ring-color: var(--color-gray-700);
    }
}


.btn-primary {
    background: #3b3b3b;
    color: var(--color-text);

    @media (prefers-color-scheme: dark) {
        background: #3f3f3f;
    }
}

.btn-accent {
    --btn-color: var(--color-accent);
    color: var(--color-white);
}

.btn-secondary {
    background: #CCC;
    color: var(--color-text);
}

.btn-green {
    --btn-color: var(--color-green);
    color: var(--color-white);
}

.btn-orange {
    --btn-color: var(--color-orange);
    color: var(--color-white);
}

.btn-blue {
    --btn-color: var(--color-blue);
    color: var(--color-white);
}

.btn-red {
    --btn-color: var(--color-red);
    color: var(--color-white);
}


.input[type="text"],
.input[type="date"],
.input[type="password"],
.input:is(textarea),
.select {
    outline: 1px solid;
    outline-color: var(--color-zinc-300);
    border-radius: var(--radius-sm);
    border: none;
    padding: .375rem .5rem;
    line-height: 1.5rem;
    font-size: var(--text-sm);

    box-shadow: var(--shadow-sm);
    background-color: var(--color-white);

    transition: outline 150ms;
}

.input[type="text"]:focus,
.input[type="date"]:focus,
.input[type="password"]:focus,
.input:is(textarea):focus,
.select:focus {
    outline: 1px solid;
    outline-color: var(--color-zinc-600);
}

/* Range */
.input[type="range"] {
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background: #eef1f6;
    border-radius: 3px;
    height: 6px;
    width: 100%;
    margin-top: 15px;
    margin-bottom: 15px;
    outline: 0;
    cursor: -webkit-grab;
    cursor: grab;
}

.input[type="range"]:active {
    cursor: -webkit-grabbing;
    cursor: grabbing
}

.input[type="range"]::-webkit-slider-thumb {
    appearance: none;
    -webkit-appearance: none;
    background-color: var(--color-accent);
    background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8%20.5v7L12%204zM0%204l4%203.5v-7z%22%20fill%3D%22%23FFFFFF%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E");
    background-position: center;
    background-repeat: no-repeat;
    border: 0;
    border-radius: 50%;
    height: 26px;
    width: 26px
}

.input[type="range"]::-moz-range-thumb {
    appearance: none;
    -webkit-appearance: none;
    background-color: var(--color-accent);
    background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8%20.5v7L12%204zM0%204l4%203.5v-7z%22%20fill%3D%22%23FFFFFF%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E");
    background-position: center;
    background-repeat: no-repeat;
    border: 0;
    border-radius: 50%;
    height: 26px;
    width: 26px;
}

.input[type="range"]::-moz-focus-outer {
    border: 0
}

/* Checkbox */
.input[type="checkbox"] {
    width: 1.25rem;
    height: 1.25rem;
    /* color: var(--bg-accent); */
    vertical-align: middle;
    -webkit-appearance: none;
    appearance: none;
    background: none;
    border: 0;
    outline: 0;
    flex-grow: 0;
    border-radius: var(--border-radius);
    background-color: var(--color-bg-1);
    transition: background 300ms;
    cursor: pointer;
}

.input[type="checkbox"]::before {
    content: "";
    color: transparent;
    display: block;
    width: inherit;
    height: inherit;
    border-radius: inherit;
    border: 0;
    background-color: transparent;
    background-size: contain;
    box-shadow: inset 0 0 0 1px #CCD3D8;
}

.input[type="checkbox"]:checked {
    background-color: var(--color-accent);
}

.input[type="checkbox"]:checked::before {
    box-shadow: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath d='M15.88 8.29L10 14.17l-1.88-1.88a.996.996 0 1 0-1.41 1.41l2.59 2.59c.39.39 1.02.39 1.41 0L17.3 9.7a.996.996 0 0 0 0-1.41c-.39-.39-1.03-.39-1.42 0z' fill='%23fff'/%3E %3C/svg%3E");
}

.input[type="checkbox"]:disabled {
    background-color: #CCD3D8;
    opacity: 0.84;
    cursor: not-allowed;
}

/* Radio */
.input[type="radio"] {
    width: 1.25rem;
    height: 1.25rem;
    color: var(--color-accent);
    vertical-align: middle;
    -webkit-appearance: none;
    appearance: none;
    background: none;
    border: 0;
    outline: 0;
    flex-grow: 0;
    border-radius: 50%;
    background-color: var(--color-bg-1);
    transition: background 300ms;
    cursor: pointer;
}

.input[type="radio"]::before {
    content: "";
    color: transparent;
    display: block;
    width: inherit;
    height: inherit;
    border-radius: inherit;
    border: 0;
    background-color: transparent;
    background-size: contain;
    box-shadow: inset 0 0 0 1px #CCD3D8;
}

.input[type="radio"]:checked {
    background-color: currentcolor;
}

.input[type="radio"]:checked::before {
    box-shadow: none;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'6'%20style%3D'fill%3A%23fff'%2F%3E%3C%2Fsvg%3E");
}

.input[type="radio"]:disabled {
    background-color: #CCD3D8;
    opacity: 0.84;
    cursor: not-allowed;
}

/* Select */
.select {
    appearance: none;
    background-image: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmFycm93czwvdGl0bGU+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEuNDEgNC42NyAyLjQ4IDMuMTggMy41NCA0LjY3IDEuNDEgNC42NyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIzLjU0IDUuMzMgMi40OCA2LjgyIDEuNDEgNS4zMyAzLjU0IDUuMzMiLz48L3N2Zz4=");
    background-position: 95% 50%;
    background-repeat: no-repeat;

    padding-right: 2.5rem;
}

.select > option {
    background-color: var(--color-white);
    color: var(--color-text);
}

.label {
    vertical-align: middle;
}

.label input {
    margin-right: .5rem;
}

.form-group {
    display: flex;
    gap: .5rem;
    width: 100%;
    /* align-items: center; */

    flex-direction: column;

    .input {
        width: 100%;
    }
}

.input-group {
    border-radius: var(--border-radius);
    border: 1px solid var(--color-border-input);
    display: flex;
    align-items: center;
    background-color: var(--color-bg-2);

    .input {
        flex-grow: 1;
        border-radius: var(--border-radius) 0 0 var(--border-radius);
    }

    &>span {
        padding: .25rem .5rem;
    }
}

.item-action {
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    /* box-shadow: var(--shadow); */
    padding: .5rem .75rem;
    display: inline-flex;
    align-items: center;

    cursor: pointer;
    gap: .5rem;

    :first-child {
        font-weight: var(--font-semibold);
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
    }

    :last-child {
        cursor: pointer;
        border-radius: var(--border-radius);

        display: flex;
        align-items: center;
        justify-content: center;

        height: 1.25rem;
        width: 1.25rem;

        &:hover {
            background: var(--color-bg-3);
        }

        & svg {
            aspect-ratio: 1/1;
        }
    }
}

dialog.dialog::backdrop {
    /* animation: modal-pop .2s ease-out; */
    background: rgba(0, 0, 0, 0.4);
}

/* Dialog */
dialog.dialog {
    border: 0;
    outline-width: 0;
    pointer-events: none;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: 0;
    display: grid;
    height: 100%;
    max-height: none;
    width: 100%;
    max-width: none;
    justify-items: center;
    padding: 0;
    opacity: 0;
    overscroll-behavior: contain;
    z-index: 999;
    background-color: transparent;
    color: inherit;
    transition-duration: .2s;
    transition-timing-function: cubic-bezier(0, 0, .2, 1);
    transition-property: transform, opacity, visibility;
    overflow-y: hidden;

    place-items: center;

    &[open] {
        pointer-events: auto;
        visibility: visible;
        opacity: 1;
    }

    >div {
        max-height: calc(100vh - 5em);
        grid-column-start: 1;
        grid-row-start: 1;
        width: 91.666667%;
        max-width: 32rem;

        --scale-x: .9;
        --scale-y: .9;

        transform: translate(0, 0) rotate(0) skew(0) skewY(0) scaleX(var(--scale-x)) scaleY(var(--scale-y));
        border-radius: var(--border-radius);

        background-color: var(--color-bg-1);
        /* var(--fallback-b1, oklch(var(--b1) / var(--tw-bg-opacity)));*/
        padding: 1.5rem;
        box-shadow: #00000040 0 25px 50px -12px;
        overscroll-behavior: contain;

        &>.actions {
            margin-top: 1rem;

            display: flex;
            justify-content: right;
        }

        &>.close {
            position: absolute;
            height: 2rem;
            width: 2rem;

            right: 1rem;
            top: 1rem;

            cursor: pointer;

            border-radius: 100%;
            padding: 0.25rem;

            &:hover {
                border-radius: 100%;
                background-color: var(--color-bg-2);
            }

            &:active {
                transform: scale(0.9);
            }
        }
    }
}

/* Table */
.table {
    border-collapse: collapse;
}

.table th,
td {
    border-top: 1px solid var(--color-text);
    padding: 0.5rem;
}

/* Form */
.form {
    display: flex;
    flex-direction: column;
    gap: 1rem;

    &.form-box {
        width: 50%;
        padding: 3rem;
        /* background: var(--color-bg-2); */
        box-shadow: var(--shadow);
        /* border: 1px solid var(--color-border); */
        border-radius: var(--border-radius);

        @media (max-width: 768px) {
            width: 100%;
        }
    }

    & label {
        display: block;
        /* font-weight: var(--font-semibold); */
        font-size: var(--text-sm);
        margin-bottom: .5rem;
    }

    & a {
        text-decoration: underline;
    }

    .input[type="text"],
    .input[type="password"] {
        width: 100%;
    }

    & div:has(input[type="checkbox"]),
    & div:has(input[type="checkbox"]) {
        display: flex;
        align-items: center;
        gap: .5rem;
    }

    .small {
        font-size: var(--text-sm);
    }

    .btn {
        width: 100%;
    }

    .center {
        text-align: center;
    }

    .muted {
        color: var(--color-text-muted);
    }
}

pre:has(code) {
    padding: 0.5rem;
    background: var(--color-bg-3);
    margin: 0 0 1.25rem 0;
    border-radius: var(--border-radius);
    display: block;
    overflow-x: auto;
}