:root {
    --nicol-input-border: #c5cdd6;
    --nicol-input-border-hover: #8aa08e;
    --nicol-input-focus: #1d9340;
    --nicol-input-ring: rgba(29, 147, 64, 0.28);
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="search"],
input[type="url"],
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"],
input[type="week"],
textarea,
select,
.form-control,
.form-select,
.form-control-sm,
.form-control-lg,
.input-group .form-control,
.input-group-text,
.nice-select,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple,
.dataTables_filter input,
.dataTables_length select {
    border: 1px solid var(--nicol-input-border) !important;
    box-shadow: 0 0 0 1px rgba(29, 147, 64, 0.08);
}

input[type="text"]:hover:not(:focus):not(:disabled),
input[type="email"]:hover:not(:focus):not(:disabled),
input[type="password"]:hover:not(:focus):not(:disabled),
input[type="number"]:hover:not(:focus):not(:disabled),
input[type="tel"]:hover:not(:focus):not(:disabled),
input[type="search"]:hover:not(:focus):not(:disabled),
input[type="url"]:hover:not(:focus):not(:disabled),
input[type="date"]:hover:not(:focus):not(:disabled),
input[type="time"]:hover:not(:focus):not(:disabled),
textarea:hover:not(:focus):not(:disabled),
select:hover:not(:focus):not(:disabled),
.form-control:hover:not(:focus):not(:disabled),
.form-select:hover:not(:focus):not(:disabled) {
    border-color: var(--nicol-input-border-hover) !important;
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="tel"]:focus,
input[type="search"]:focus,
input[type="url"]:focus,
input[type="date"]:focus,
input[type="time"]:focus,
input[type="datetime-local"]:focus,
textarea:focus,
select:focus,
.form-control:focus,
.form-select:focus,
.dataTables_filter input:focus,
.dataTables_length select:focus {
    border-color: var(--nicol-input-focus) !important;
    outline: 0 !important;
    box-shadow: 0 0 0 0.2rem var(--nicol-input-ring) !important;
}

.form-check-input {
    border: 1px solid var(--nicol-input-border) !important;
}

.form-check-input:focus {
    border-color: var(--nicol-input-focus) !important;
    box-shadow: 0 0 0 0.2rem var(--nicol-input-ring) !important;
}

.form-control.is-invalid,
.was-validated .form-control:invalid {
    border-color: #dc3545 !important;
    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.2) !important;
}

.form-control.is-valid,
.was-validated .form-control:valid {
    border-color: var(--nicol-input-focus) !important;
    box-shadow: 0 0 0 0.2rem var(--nicol-input-ring) !important;
}

/* Hidden toasts must not sit on top of page buttons (opacity:0 still captures clicks). */
.toast-container {
    pointer-events: none !important;
}

.toast:not(.show):not(.showing) {
    display: none !important;
    pointer-events: none !important;
}

.toast.show,
.toast.showing {
    pointer-events: auto !important;
}

/* Theme .sharp is for icon-only squares; labeled buttons need the full visible area clickable. */
.btn {
    pointer-events: auto;
}

.btn i,
.btn svg {
    pointer-events: none;
}

.btn.sharp:not(.btn-xs) {
    height: auto !important;
    width: auto !important;
    min-height: 2.5rem;
    min-width: 2.5rem;
    padding: 0.5rem 1rem !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    white-space: nowrap;
    line-height: 1.2;
}
