#booking {
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
    width: 100%;
}
#booking :is(.booking-item, .booking-range) {
    position: relative;
    box-sizing: border-box;
    width: 100%;
}

#booking :is(.wpcf7-text, .wpcf7-number, textarea, select) {
    display: block;
    padding: 1em 1.25em;
    background: var(--wp--preset--color--base);
    color: var(--wp--preset--color--contrast);
    border: 1px solid #d9d9d9;
    border-radius: 26px;
    font-size: 16px;
    width: 100%;
    box-sizing: border-box;
    resize: vertical;
    appearance: none;
}
#booking textarea {line-height: 1.5}
#booking .booking-item:has(:is(.wpcf7-text, .wpcf7-number, textarea, select, .wpcf7-range)) .label {
    display: inline-block;
    position: absolute;
    background: var(--wp--preset--color--base);
    color: var(--wp--preset--color--contrast);
    top: -10px;
    left: 1em;
    padding: 0 8px;
    font-size: 14px;
    z-index: 1;
    height: 20px;
}
#booking .booking-item:focus-within :is(.wpcf7-text, .wpcf7-number, textarea, select, .wpcf7-range) {
    border-color: #3f68ff;
    outline: none;
}

#booking .booking-item:focus-within:has(:is(.wpcf7-text, .wpcf7-number, textarea, select, .wpcf7-range)) .label {
    color: #3f68ff;
}

#booking .wpcf7-not-valid {
    border-color: #d00e16;
}
#booking .booking-item:has(.wpcf7-not-valid) :is(.label, .wpcf7-list-item-label) {
    color: #d00e16;
}
#booking .booking-range input {width:100%}
.wpcf7-not-valid-tip {display:none!important}
#booking > .small {
    width: 100%;
    font-size: 14px;
    text-align: center;
}

#booking  .booking-qty-area {
    display: flex;
    flex-wrap: wrap;
    gap: 0 2rem;
    width: 100%;
    margin: -1rem 0;
}

@media (width >= 700px) { #booking .booking-range {width: calc(50% - 1rem)} }

#booking .booking-range-inner {
    position: relative;
    padding: 1.5rem 1.25rem;
    margin: 1rem 0;
    border: 1px solid #d9d9d9;
    color: var(--wp--preset--color--contrast);
    border-radius: 26px;
}

/* qty animation */

#booking .tattoo-size:not(:nth-child(1 of .tattoo-size)) {
    max-height: 0;
    opacity: 0;
    transform: translateY(-12px) scale(0.80);
    filter: blur(10px);
    transition:
        max-height 0.45s ease-in-out,
        opacity 0.25s ease,
        transform 0.35s cubic-bezier(0.68,-0.55,0.27,2),
        filter 0.35s ease;
}

#booking .tattoo-size:not(:nth-child(1 of .tattoo-size)).is-visible {
    max-height: 300px;
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
}

/* value animation */

.range-value {
    display: inline-block;
    position: relative;
    will-change: transform, filter, opacity;
    transition:
        transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1),
        filter 0.2s ease,
        opacity 0.2s ease;
}
.range-value.is-changing {
    opacity: 0;
    transform: translateY(-6px) scale(0.92);
    filter: blur(6px);
}

.booking-file-area {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
    gap: 12px;
}

.booking-file {
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: 18px;
    border: 2px dashed #d9d9d9;
    overflow: hidden;
    cursor: pointer;
    transition: border-color .2s;
}

.booking-file:hover {
    border: 2px solid #3f68ff;
}

.booking-file .wpcf7-form-control-wrap,
.booking-file input {
    display: block;
    position: absolute;
    inset: 0;
    opacity: 0; 
}

.booking-file.file-empty:before {
    content: "+";
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    font-size: 26px;
    color: #d9d9d9;
    transition: color .2s;
}

.booking-file.file-empty:hover:before {
    color: #3f68ff;
}

.booking-file.has-file {
    border-style: solid;
    background-size: cover;
    background-position: center;
}

.file-remove {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: rgba(0,0,0,0.65);
    color: #fff;
    font-size: 14px;
    display: grid;
    place-items: center;
    cursor: pointer;
    opacity: 0;
    transition: opacity .2s;
}

.booking-file.has-file .file-remove {
    opacity: 1;
}


#booking .wpcf7-submit {
    width: 100%;
}

.wpcf7 form .wpcf7-response-output {
    color: #fff;
    margin: 20px;
    background: rgba(0,0,0,.7);
    -webkit-backdrop-filter: saturate(200%) blur(20px);
    backdrop-filter: saturate(200%) blur(20px);
    border-radius: 20px;
    line-height: 1.2;
    font-size: 16px;
    position: fixed;
    right: 0;
    top: 0;
    max-width: 320px;
    padding: 20px;
    z-index: 99;
    /* initial state */
    opacity: 0;
    transform: translateY(-20px) scale(0.7);
    filter: blur(10px);
    animation: notice 3s forwards;
}

@keyframes notice {
    0% {
        opacity: 0;
        transform: translateY(-20px) scale(0.7);
        filter: blur(10px);
    }
    10% {
        opacity: 1;
        transform: translateY(10px) scale(1.05);
    }
    20% {
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
    80% {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
    100% {
        opacity: 0;
        transform: translateY(-5px) scale(0.9);
        filter: blur(10px);
        visibility: hidden;
    }
}

@media (width < 700px) {
    .wpcf7 form .wpcf7-response-output {left:0;max-width:unset;margin:10px}
}

.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output {
    display: none;
}


.wpcf7 .screen-reader-response {
    position: absolute;
    overflow: hidden;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    width: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    word-wrap: normal !important;
}

.wpcf7 .hidden-fields-container {
    display: none;
}

.wpcf7-form-control-wrap {
    position: relative;
}

.wpcf7-not-valid-tip {
    color: #dc3232; /* Red */
    font-size: 1em;
    font-weight: normal;
    display: block;
}

.use-floating-validation-tip .wpcf7-not-valid-tip {
    position: relative;
    top: -2ex;
    left: 1em;
    z-index: 100;
    border: 1px solid #dc3232;
    background: #fff;
    padding: .2em .8em;
    width: 24em;
}

.wpcf7-list-item-label::before,
.wpcf7-list-item-label::after {
    content: " ";
}

.wpcf7-spinner {
    visibility: hidden;
    display: inline-block;
    background-color: #23282d; /* Dark Gray 800 */
    opacity: 0.75;
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 100%;
    padding: 0;
    margin: 0 auto;
    position: relative;
}

form.submitting .wpcf7-spinner {
    visibility: visible;
}

.wpcf7-spinner::before {
    content: '';
    position: absolute;
    background-color: #fbfbfc; /* Light Gray 100 */
    top: 4px;
    left: 4px;
    width: 6px;
    height: 6px;
    border: none;
    border-radius: 100%;
    transform-origin: 8px 8px;
    animation-name: spin;
    animation-duration: 1000ms;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}

@media (prefers-reduced-motion: reduce) {
    .wpcf7-spinner::before {
        animation-name: blink;
        animation-duration: 2000ms;
    }
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@keyframes blink {
    from {
        opacity: 0;
    }

    50% {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

.wpcf7 [inert] {
    opacity: 0.5;
}

.wpcf7 input[type="file"] {
    cursor: pointer;
}

.wpcf7 input[type="file"]:disabled {
    cursor: default;
}

.wpcf7 .wpcf7-submit:disabled {
    cursor: not-allowed;
}

.wpcf7 input[type="url"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"] {
    direction: ltr;
}

.wpcf7-reflection > output {
    display: list-item;
    list-style: none;
}

.wpcf7-reflection > output[hidden] {
    display: none;
}
