
/* @import url(main.form.*.css); */
@charset "UTF-8";

form {
    position:relative;
    &[hidden] {
        display: none;
    }
}


fieldset {
    display: grid;
    grid-template-columns: 1fr;
    /* grid-template-rows: repeat(auto-fit, 2rem); */
    /* grid-auto-flow: column dense; */
    row-gap: .1rem;
    border: 1px solid var(--primary);
    padding: .2rem .5rem .2rem .5rem;
    background: var(--layer1); /*#732C2C 64413D*/
    max-width: 100%;
    column-gap: .5rem;
    &:hover {
        background-color: var(--orange-highlight);
    }
    >legend {
        font-weight: bolder;
        background: var(--primary);
        color: white;
        padding: 0 .2rem 0 .2rem;
        text-shadow: .03rem .03rem 0.03rem black;
    }
    &:has( input[type='date']) {
        /*assumes a field set of from/to inputs with date and time (so four inputs), probably needs to be generalized better*/
        grid-template-columns: 1fr 1fr;
        column-gap: .2rem;
    }
    ul {
        list-style: none;
    }
    .flexy-grid {
        display: grid;
        grid-auto-columns: 1fr;
        grid-auto-flow: column;
        column-gap: .5rem;
        row-gap: .2rem;
        label {
            display: grid;
            /* grid-auto-flow:column dense; */
            /* grid-column: auto /span 10; */
            /* grid-auto-columns: max-content; */
            /* grid-template-columns: repeat(2, auto); */
            grid-template-columns: subgrid;
            grid-column: span 2;
            /* grid-row: 2; */
            width: fit-content;
            &:has(input[type="checkbox"]) {
                /* grid-column:span 4; */
            }
    
            column-gap: 0;
            >span {
                /* display: grid; */
                padding:0 .5rem 0 .5rem;
                background-color: var(--layer1-accent);
                border-radius: 5px 0 0 5px;
                grid-row: 1;
                strong {
                    height: fit-content;
                    width: fit-content;
                    margin:auto;
                }
                p {
                    height: fit-content;
                    width: 100%;
                    margin:auto;
                    background-color: #eee;
                    /* grid-column: 2/-1; */
                }
            }
            input {
                /* display: grid; */
                /* grid-column: span 1; */
                grid-row: 1;
                &[type="checkbox"] {
                    /* grid-column: span 1; */
                    max-height: 2rem;
                    aspect-ratio: 1;
                    background-color: darksalmon;
                }
            }
        }
        .fieldset-description {
            grid-column: 1/ 6;
        }
        
        button {
            /* display: grid; */
            /* grid-row:span 1;
            grid-column: auto; */
            /* max-width: fit-content; */
            span {
                width: fit-content;
                margin: auto;
                padding: .2rem;
                white-space: nowrap;
            }
        }
    }
}


input.numeric {
    text-align: right;
    width: 100%;
    background: none;
    border: none;
    min-height: 1.6rem;
    outline: none;
    box-shadow: none;
    font-size: large;
    font-family: revert;
}

button,select {
    outline: 2px outset var(--primary-accent);
    background-color: var(--primary-accent);
    color: rgb(255, 255, 255);
    /* width: 100%; */
    font-weight: 600 !important;
    border-radius: .1rem;
    &button:hover {
        background-color: var(--primary-accent);
        filter: brightness(110%);
    }
    &button:active {
        outline: 2px inset var(--primary-accent);
    }
}


input, select {
    border-radius: 0;
    min-height: 1.5rem;
}

input:not([type="date"], [type="time"]) {
    min-height: 2rem;
}

input[type="checkbox"] {
    aspect-ratio: 1;
    width: fit-content;
}

input:autofill {
    background-color: var(--layer0);
}

input,textarea {
    box-shadow: inset 0 0 .1rem .04rem black;
    font-weight: bold;
    padding: 0 .5rem 0 .5rem;
    color: var(--input-text);
        /* inset 0 -.2rem .2rem -.3rem black,
        inset 0 .2rem .2rem -.3rem black,
        inset -.2rem 0 .2rem -.3rem black,
        inset .2rem 0 .2rem -.3rem black; */
    background-color: var(--layer0);
    &[placeholder] {
        font-weight: bold;
    }
    &[type="checkbox"]:hover {
        cursor: pointer;
    }
    &:focus-visible {
        outline: 1px solid var(--orange-highlight);
        border-radius: 2px;
    }
}
select {
    color: var(--input-text);
    font-weight: bold;
    padding: 0 .5rem 0 .5rem;
    background-color: var(--layer0);
    option:checked {
        background-color: var(--orange-highlight);
    }
}

textarea {
    height: 5rem;
}
button:disabled {
    /* display: none; */
    filter:saturate(0%);
    &:hover {
        cursor: not-allowed;
    }
}

.form-action {
    button::after {
        content: attr(title);
        
    }
    
    border: none;
    grid-template-columns: 1fr 1fr;
    >button {
        grid-column: span 1;
    }
}

optgroup[label="subtractive"]>option::after {
    content: "-";
    color: red;
}


button.sub-form-show::after {
    content: attr(title);
}
@media screen and (width <= 1000px) {
    .form-action {
        button {
            min-height: 4rem;
            font-size:xx-large;
            &.persist::after {
                content: "💾" / "Save";
            }
            &.revert::after {
                content: "🗙" / "Cancel";
            }
        }
    }
    button.sub-form-show::after {
        content: "+";
    }
}

.display-edit-set {
    &:hover {
        background: var(--highlight);
    }
    p {
        margin: 0;
        padding: 0;
        height: fit-content;
        margin: auto 0 auto 0;
        
    }
}

label:has(input) {
    min-height: 3rem;
}

td.hidden-row-identity {
    display: none;
}

form.collection {
    grid-template-columns: 1fr 1fr;

    table {

    }

    .reset {
        position: absolute;
        right: 0;
        top: 0;
    }
}

button.reset {
    &::after {
        content: '⟲';
    }
}
form {
    position: relative;
    /* margin: auto; */
    display: grid;
    grid-template-columns: 1fr;
    &.two {
        min-width: 100%;
        grid-template-columns: 1fr 1fr;
    }
    
    &.htmx-request{
        div.htmx-indicator {
            z-index: 10;
        }
    }
    fieldset[hidden] {
        display: none;
    }
    fieldset:not([hidden], .form-action, .autocomplete) {
        display: grid;
        grid-template-columns: 1fr 3fr;
        row-gap: .2rem;
        &:has(table) {
            grid-template-rows: 2rem auto;
            
            grid-column: 2/-1;
            grid-row: 1/ span 6;
            table {
                grid-column: 1/-1;
                th:not(:last-child) {
                    border: 2px solid lightgray;
                    border-width: 0 2px 2px 0;
                }
                td:not(:last-child) {
                    border: 2px solid lightgray;
                    overflow-x: auto;
                    border-width: 0 2px 2px 0;
                    max-width: 10%;
                }
            }
            button {
                grid-column: 1/2;
            }
        }
        &.sub-form.right {
            grid-column: 2/-1;
        }
        grid-column: 1/2;
        label {
            display: grid;
            grid-template-columns: subgrid;
            grid-column: span 2;
            span,strong {
                grid-column: 1 / 2;
                /*Important for centering in tall rows:*/
                height: fit-content;
                margin: auto 0 auto 0;
            }
            input {
                grid-column: 2/-1;
            }
        }
        button {
            grid-column: 2/-1;
        }
    }
    
    select {
        border : 1px solid gray;
    }

}
@media screen and (width <= 1024px) {
    form.collection {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto;
        fieldset {
            &.sub-form.right {
                grid-column: span 1;
            }
            grid-column: span 1;
            max-width: 100%;
            &:has(table) {
                
                grid-template-rows: 4rem auto;
                grid-column: span 1;
                grid-row: end;
                table {
                    th {
                        
                        font-size: 2rem;
                    }
                    grid-column: 1/-1;
                }
                button {
                    grid-column: 1/2;
                    &::after{
                        content: '+'
                    }
                }
            }
        }
    }
}