@import url("../lib/flatpickr/flatpickr.min.css");

:root {
    --fc-border: #cbd5e1;
    --fc-border-hover: #94a3b8;
    --fc-accent: #1e50ce;
    --fc-accent-dark: #1a509f;
    --fc-danger: #dc2626;
    --fc-label: #0a2540;
    --fc-muted: #94a3b8;
    --fc-fill: #f1f5f9;
    --fc-radius: 8px;
    --fc-height: 48px;
    --fc-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    --fc-chevron-img: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    --fc-chevron-color: #475569;
}

.form-group { margin-bottom: 20px; }

.form-label,
.a-label {
    display: block;
    margin-bottom: 8px;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.5;
    color: var(--fc-label);
}

.form-label .required { margin-left: 2px; color: var(--fc-danger); }

.form-err {
    display: block;
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.5;
    color: var(--fc-danger);
}

.form-err:empty { display: none; }

.form-input,
.form-select,
.form-textarea,
.a-input,
.a-textarea {
    display: block;
    box-sizing: border-box;
    width: 100%;
    height: var(--fc-height);
    padding: 0 14px;
    font: inherit;
    font-size: 14px;
    font-weight: 400;
    color: inherit;
    background-color: #fff;
    border: 1.5px solid var(--fc-border);
    border-radius: var(--fc-radius);
    transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.form-input::placeholder,
.form-select::placeholder,
.form-textarea::placeholder,
.a-input::placeholder { color: var(--fc-muted); }

.form-input:hover,
.form-select:hover,
.form-textarea:hover,
.a-input:hover,
.a-textarea:hover { border-color: var(--fc-border-hover); }

.form-input:focus,
.form-select:focus,
.form-textarea:focus,
.a-input:focus,
.a-textarea:focus {
    outline: none;
    border-color: var(--fc-accent);
    box-shadow: 0 0 0 1px var(--fc-accent), 0 2px 10px rgba(30, 80, 206, .14);
}

.form-input:disabled,
.form-select:disabled,
.form-textarea:disabled,
.a-input:disabled,
.a-textarea:disabled {
    background-color: var(--fc-fill);
    border-color: var(--fc-border);
    color: var(--fc-muted);
    cursor: not-allowed;
}

.form-input[readonly],
.a-input[readonly] { background-color: var(--fc-fill); }

.form-input.is-err,
.form-select.is-err,
.a-input.is-err,
.a-field:has(.a-field-err:not(:empty)) .a-input,
.a-field:has(.form-err:not(:empty)) .a-input,
.form-group:has(.form-err:not(:empty)) .form-input,
.form-group:has(.form-err:not(:empty)) .form-select {
    border-color: var(--fc-danger);
    box-shadow: 0 0 0 1px var(--fc-danger);
}

textarea.form-textarea,
textarea.a-input,
.a-textarea {
    height: auto;
    min-height: 88px;
    padding: 12px 14px;
    line-height: 1.6;
    resize: vertical;
}

.form-select,
select.a-input {
    appearance: none;
    padding-right: 58px;
    cursor: pointer;
    background-image:
        var(--fc-chevron-img),
        linear-gradient(var(--fc-border), var(--fc-border)),
        linear-gradient(#f8fafc, #f8fafc);
    background-repeat: no-repeat;
    background-position: right 14.5px center, right 44px center, right 0 center;
    background-size: 15px 15px, 1.5px 100%, 44px 100%;
}

.form-select:focus,
select.a-input:focus {
    background-image:
        var(--fc-chevron-img),
        linear-gradient(var(--fc-accent), var(--fc-accent)),
        linear-gradient(#f8fafc, #f8fafc);
}

.form-input[type="file"],
.a-input[type="file"] {
    height: auto;
    padding: 6px 10px;
    line-height: 1.5;
    cursor: pointer;
}

.form-input[type="file"]::file-selector-button,
.a-input[type="file"]::file-selector-button { cursor: pointer; }

.form-input[type="file"]::file-selector-button,
.a-input[type="file"]::file-selector-button {
    margin-right: 12px;
    padding: 8px 15px;
    border: 0;
    border-radius: 6px;
    background: var(--fc-accent);
    color: #fff;
    font: inherit;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: background-color .16s ease;
}

.form-input[type="file"]::file-selector-button:hover,
.a-input[type="file"]::file-selector-button:hover { background: #1a509f; }

.a-input-table .a-input { height: 36px; padding: 0 10px; font-size: 13.5px; }
.a-input-table textarea.a-input { height: auto; padding: 8px 10px; }

input.has-fp {
    padding-right: 42px;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    background-size: 16px 16px;
}

.flatpickr-calendar {
    font-family: inherit;
    border: none;
    border-radius: var(--fc-radius);
    box-shadow: 0 0 0 1px var(--fc-border), 0 16px 40px rgba(10, 37, 64, .18);
}

.flatpickr-current-month {
    font-size: 15px;
    font-weight: 600;
    padding-top: 9.5px;
}

.flatpickr-current-month span.cur-month { margin-left: .35ch; }

.flatpickr-current-month .flatpickr-monthDropdown-months {
    appearance: none;
    padding: 0 .35ch;
    margin: -1px 0 0 0;
    border-radius: 4px;
}

.flatpickr-current-month .flatpickr-monthDropdown-months:hover { background: var(--fc-fill); }

.flatpickr-current-month span.cur-month,
.flatpickr-current-month input.cur-year,
.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-calendar .numInput {
    font-weight: 600;
    color: var(--fc-label);
}

span.flatpickr-weekday {
    font-size: 12px;
    font-weight: 500;
    color: var(--fc-muted);
}

.flatpickr-months .flatpickr-prev-month,
.flatpickr-months .flatpickr-next-month { color: var(--fc-border-hover); }

.flatpickr-months .flatpickr-prev-month svg,
.flatpickr-months .flatpickr-next-month svg { fill: var(--fc-border-hover); }

.flatpickr-calendar .flatpickr-day {
    border-radius: 6px;
    font-size: 13.5px;
    color: #334155;
}

.flatpickr-calendar .flatpickr-day.prevMonthDay,
.flatpickr-calendar .flatpickr-day.nextMonthDay { color: #cbd5e1; }

.flatpickr-calendar .flatpickr-day:hover { background: var(--fc-fill); border-color: var(--fc-fill); }

.flatpickr-calendar .flatpickr-day.today {
    border-color: var(--fc-accent);
    color: var(--fc-accent);
    font-weight: 600;
}

.flatpickr-calendar .flatpickr-day.selected,
.flatpickr-calendar .flatpickr-day.selected:hover,
.flatpickr-calendar .flatpickr-day.selected:focus {
    background: var(--fc-accent);
    border-color: var(--fc-accent);
    color: #fff;
    font-weight: 600;
}

@supports (appearance: base-select) {
    .form-select,
    select.a-input {
        appearance: base-select;
        display: flex;
        align-items: center;
        justify-content: space-between;
        position: relative;
        padding-right: 58px;
        background-image:
            linear-gradient(var(--fc-border), var(--fc-border)),
            linear-gradient(#f8fafc, #f8fafc);
        background-position: right 44px center, right 0 center;
        background-size: 1.5px 100%, 44px 100%;
    }

    .form-select:focus,
    select.a-input:focus {
        background-image:
            linear-gradient(var(--fc-accent), var(--fc-accent)),
            linear-gradient(#f8fafc, #f8fafc);
    }

    select.form-select::picker-icon,
    select.a-input::picker-icon {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        right: 14.5px;
        margin: auto 0;
        width: 15px;
        height: 15px;
        background-color: var(--fc-chevron-color);
        mask-image: var(--fc-chevron);
        mask-size: contain;
        mask-repeat: no-repeat;
        transition: rotate .2s ease, background-color .16s ease;
    }

    select.form-select:focus::picker-icon,
    select.a-input:focus::picker-icon { background-color: var(--fc-accent); }

    select.form-select:open::picker-icon,
    select.a-input:open::picker-icon { rotate: 180deg; }

    ::picker(select) {
        appearance: base-select;
        margin-top: 6px;
        padding: 5px;
        background: #fff;
        border: 1px solid var(--fc-border);
        border-radius: var(--fc-radius);
        box-shadow: 0 14px 36px rgba(10, 37, 64, .16);
    }

    select.form-select option,
    select.a-input option {
        padding: 9px 12px;
        font-size: 14px;
        border-radius: 6px;
    }

    select.form-select option:hover,
    select.form-select option:focus,
    select.a-input option:hover,
    select.a-input option:focus { background: var(--fc-fill); }

    select.form-select option:checked,
    select.a-input option:checked {
        background: rgba(30, 80, 206, .1);
        color: var(--fc-accent);
        font-weight: 600;
    }

    select.form-select option[hidden],
    select.a-input option[hidden] { display: none; }
}

.btn,
.a-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font: inherit;
    font-weight: 500;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
    text-decoration: none;
    border-radius: var(--fc-radius);
    transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease, color .16s ease;
}

.btn:focus-visible,
.a-btn:focus-visible {
    outline: none;
    border-color: var(--fc-accent);
    box-shadow: 0 0 0 1px var(--fc-accent);
}

.btn:disabled,
.btn[aria-disabled="true"],
.a-btn:disabled,
.a-btn[aria-disabled="true"] {
    background: var(--fc-fill);
    border-color: var(--fc-border);
    color: var(--fc-muted);
    cursor: not-allowed;
    box-shadow: none;
}

.a-btn {
    height: 40px;
    padding: 0 16px;
    font-size: 14px;
    color: inherit;
    background: #fff;
    border: 1.5px solid var(--fc-border);
}

.a-btn:hover {
    border-color: var(--fc-border-hover);
    background: var(--fc-fill);
    color: inherit;
}

.a-btn-primary {
    border-color: var(--fc-accent);
    background: var(--fc-accent);
    color: #fff;
}

.a-btn-primary:hover {
    border-color: var(--fc-accent-dark);
    background: var(--fc-accent-dark);
    color: #fff;
}

.a-btn-primary:disabled {
    border-color: var(--fc-muted);
    background: var(--fc-muted);
    color: #fff;
}

.btn {
    height: 48px;
    padding: 0 26px;
    font-size: 15px;
    color: inherit;
    background: transparent;
    border: 1.5px solid transparent;
}

.btn-primary {
    border-color: var(--fc-accent);
    background: var(--fc-accent);
    color: #fff;
}

.btn-primary:hover {
    border-color: var(--fc-accent-dark);
    background: var(--fc-accent-dark);
    color: #fff;
    box-shadow: 0 4px 16px rgba(10, 37, 64, .12);
}

.btn-outline {
    border-color: var(--fc-border);
    background: transparent;
    color: inherit;
}

.btn-outline:hover {
    border-color: var(--fc-accent);
    background: #f8fafc;
    color: var(--fc-accent);
}

.btn-primary-soft {
    border-color: #e8f0fe;
    background: #e8f0fe;
    color: var(--fc-accent);
}

.btn-primary-soft:hover {
    border-color: #d7e5fd;
    background: #d7e5fd;
    color: var(--fc-accent-dark);
}

.btn-ghost {
    border-color: transparent;
    background: transparent;
    color: inherit;
}

.btn-ghost:hover {
    border-color: transparent;
    background: #f8fafc;
    color: var(--fc-accent);
}

.btn-sm,
.a-btn-sm {
    height: 30px;
    padding: 0 12px;
    font-size: 13px;
    border-radius: 6px;
}

.a-btn-lg {
    height: 48px;
    padding: 0 20px;
}

.btn-lg {
    height: 56px;
    padding: 0 36px;
    font-size: 16px;
}

.btn-block,
.a-btn-block { width: 100%; }

.a-btn-block { display: flex; }
