/* Vietnamese Formatting Widgets CSS */

/* Base styles for Vietnamese input widgets */
.vn-number-input,
.vn-currency-input,
.vn-decimal-input,
.vn-date-input,
.vn-datetime-input,
.vn-time-input,
.vn-percentage-input {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    text-align: right;
    background-color: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 8px 12px;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

/* Focus states */
.vn-number-input:focus,
.vn-currency-input:focus,
.vn-decimal-input:focus,
.vn-date-input:focus,
.vn-datetime-input:focus,
.vn-time-input:focus,
.vn-percentage-input:focus {
    border-color: #007bff;
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}

/* Date and time inputs should be left-aligned */
.vn-date-input,
.vn-datetime-input,
.vn-time-input {
    text-align: left;
}

/* Currency input styling */
.vn-currency-input {
    position: relative;
}

.vn-currency-input::after {
    content: 'VND';
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: #6c757d;
    pointer-events: none;
}

/* Percentage input styling */
.vn-percentage-input::after {
    content: '%';
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: #6c757d;
    pointer-events: none;
}

/* Error states */
.vn-number-input.is-invalid,
.vn-currency-input.is-invalid,
.vn-decimal-input.is-invalid,
.vn-date-input.is-invalid,
.vn-datetime-input.is-invalid,
.vn-time-input.is-invalid,
.vn-percentage-input.is-invalid {
    border-color: #dc3545;
}

.vn-number-input.is-invalid:focus,
.vn-currency-input.is-invalid:focus,
.vn-decimal-input.is-invalid:focus,
.vn-date-input.is-invalid:focus,
.vn-datetime-input.is-invalid:focus,
.vn-time-input.is-invalid:focus,
.vn-percentage-input.is-invalid:focus {
    border-color: #dc3545;
    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}

/* Success states */
.vn-number-input.is-valid,
.vn-currency-input.is-valid,
.vn-decimal-input.is-valid,
.vn-date-input.is-valid,
.vn-datetime-input.is-valid,
.vn-time-input.is-valid,
.vn-percentage-input.is-valid {
    border-color: #28a745;
}

.vn-number-input.is-valid:focus,
.vn-currency-input.is-valid:focus,
.vn-decimal-input.is-valid:focus,
.vn-date-input.is-valid:focus,
.vn-datetime-input.is-valid:focus,
.vn-time-input.is-valid:focus,
.vn-percentage-input.is-valid:focus {
    border-color: #28a745;
    box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}

/* Disabled states */
.vn-number-input:disabled,
.vn-currency-input:disabled,
.vn-decimal-input:disabled,
.vn-date-input:disabled,
.vn-datetime-input:disabled,
.vn-time-input:disabled,
.vn-percentage-input:disabled {
    background-color: #e9ecef;
    opacity: 1;
}

/* Help text for Vietnamese formatting */
.vietnamese-formatting-help {
    background: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    padding: 10px;
    margin-top: 5px;
    font-size: 12px;
    color: #6c757d;
}

.vietnamese-formatting-help ul {
    margin: 5px 0;
    padding-left: 20px;
}

.vietnamese-formatting-help li {
    margin: 2px 0;
}

/* Input group styling for currency and percentage */
.input-group .vn-currency-input,
.input-group .vn-percentage-input {
    text-align: right;
}

.input-group-text.currency-symbol,
.input-group-text.percentage-symbol {
    background-color: #e9ecef;
    border-color: #ced4da;
    color: #495057;
}

/* Responsive adjustments */
@media (max-width: 576px) {
    .vn-number-input,
    .vn-currency-input,
    .vn-decimal-input,
    .vn-date-input,
    .vn-datetime-input,
    .vn-time-input,
    .vn-percentage-input {
        font-size: 16px; /* Prevent zoom on iOS */
    }
}

/* Django admin specific styles */
.form-row .vn-number-input,
.form-row .vn-currency-input,
.form-row .vn-decimal-input,
.form-row .vn-date-input,
.form-row .vn-datetime-input,
.form-row .vn-time-input,
.form-row .vn-percentage-input {
    width: 100%;
    max-width: 300px;
}

/* Inline form styling */
.inline-group .vn-number-input,
.inline-group .vn-currency-input,
.inline-group .vn-decimal-input {
    width: 120px;
}

.inline-group .vn-date-input,
.inline-group .vn-datetime-input {
    width: 140px;
}

.inline-group .vn-time-input {
    width: 80px;
}

/* Table cell input styling */
td .vn-number-input,
td .vn-currency-input,
td .vn-decimal-input,
td .vn-percentage-input {
    border: none;
    background: transparent;
    padding: 4px 8px;
    text-align: right;
}

td .vn-date-input,
td .vn-datetime-input,
td .vn-time-input {
    border: none;
    background: transparent;
    padding: 4px 8px;
    text-align: left;
}

/* Loading state */
.vn-input-loading {
    position: relative;
}

.vn-input-loading::after {
    content: '';
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    border: 2px solid #f3f3f3;
    border-top: 2px solid #007bff;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: translateY(-50%) rotate(0deg); }
    100% { transform: translateY(-50%) rotate(360deg); }
}

/* Validation feedback */
.invalid-feedback.vn-format-error {
    display: block;
    font-size: 11px;
    color: #dc3545;
    margin-top: 2px;
}

.valid-feedback.vn-format-success {
    display: block;
    font-size: 11px;
    color: #28a745;
    margin-top: 2px;
}

/* Phone number inputs - prevent automatic formatting */
.vn-phone-input,
input[name*="phone"],
input[id*="phone"],
input[name*="tel"],
input[id*="tel"],
input[type="tel"],
.phone-field {
    text-align: left !important;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important;
    letter-spacing: 0.5px;
    font-weight: normal !important;
}

/* Ensure phone numbers in tables are not formatted */
td.field-phone,
td.field-phone_display,
.field-phone,
.field-phone_display {
    text-align: left !important;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important;
    font-weight: normal !important;
}

/* Phone number display in admin changelist */
.admin-changelist .field-phone,
.admin-changelist .field-phone_display,
#changelist .field-phone,
#changelist .field-phone_display {
    text-align: left !important;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important;
    white-space: nowrap;
}

/* Prevent number formatting on phone fields */
.no-number-format {
    text-align: left !important;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important;
}
