/* premium.css - Modernization for tpe.softhuissier (Fintech 2026 Edition) */

:root {
    --primary-color: #0284c7; /* Bleu Fintech moderne sécurisant */
    --primary-hover: #0369a1;
    --primary-focus-ring: rgba(2, 132, 199, 0.15);
    --success-color: #10b981;
    --danger-color: #dc2626;
    --danger-bg: #fff1f2;
    --danger-focus-ring: rgba(220, 38, 38, 0.1);
    --slate-50: #f8fafc;
    --slate-100: #f1f5f9;
    --slate-200: #e2e8f0;
    --slate-300: #cbd5e1;
    --slate-400: #94a3b8;
    --slate-600: #475569;
    --slate-900: #0f172a;
    --body-bg: #f4f7fa;
    --input-height: 3rem;
    --input-padding-y: 0.6rem;
    --shadow-premium: 0 20px 25px -5px rgba(15, 23, 42, 0.05), 0 8px 10px -6px rgba(15, 23, 42, 0.05);
    --transition-smooth: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

body {
    background-color: var(--body-bg);
    color: var(--slate-900);
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
}

/* Container principal avec animations fluides */
.modernized-container {
    border-radius: 1.25rem;
    opacity: 1;
    transform: translateY(0);
    animation: premiumFadeIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
    transition: opacity 0.15s ease-out, transform 0.15s ease-out;
}

/* Classe déclenchée au départ (Fade-Out) */
.modernized-container.fade-out {
    animation: none !important;
    opacity: 0 !important;
    transform: translateY(-8px) !important;
}

.premium-form-body {
    padding: 1.5rem !important;
}

@media (min-width: 768px) {
    .premium-form-body {
        padding: 2rem !important;
    }
}

/* Cartes de sélection (Debiteur/Creancier et Modalites) */
.selection-card {
    border: 1px solid var(--slate-200);
    border-radius: 1rem;
    transition: var(--transition-smooth);
    cursor: pointer !important;
}

.selection-card.active {
    border-color: var(--primary-color) !important;
    background-color: #f0f9ff !important;
    box-shadow: 0 0 0 3px var(--primary-focus-ring) !important;
}

.selection-card:hover:not(.active) {
    border-color: var(--slate-300) !important;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.03) !important;
}

/* Curseurs personnalisés pour états actifs/inactifs */
.cursor-pointer {
    cursor: pointer !important;
}

.cursor-not-allowed {
    cursor: not-allowed !important;
}

/* --- Stepper Modernized --- */
.stepper-header {
    background-color: var(--slate-50);
    border-bottom: 1px solid var(--slate-200);
    padding: 0.75rem 1.5rem;
}

.stepper-inner {
    max-width: 500px;
    margin: 0 auto;
}

.step-dot {
    width: 32px;
    height: 32px;
    line-height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.85rem;
}

/* Niveaux d'opacité pour effet focal */
.op-100 {
    opacity: 1 !important;
}

.op-50 {
    opacity: 0.5 !important;
}

.op-40 {
    opacity: 0.4 !important;
}

.op-30 {
    opacity: 0.3 !important;
}

.op-25 {
    opacity: 0.25 !important;
}

.op-20 {
    opacity: 0.2 !important;
}

.op-10 {
    opacity: 0.1 !important;
}

/* Survol de groupe (Stepper) */
.group-hover-scale {
    transition: transform 0.2s;
}

.group:hover .group-hover-scale {
    transform: scale(1.1);
}

/* --- Boutons Premium --- */
.btn {
    transition: var(--transition-smooth) !important;
    border-radius: 1rem !important;
}

.btn-primary {
    background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%) !important;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.2) !important;
    border: none !important;
}

.btn-primary:hover:not(:disabled) {
    transform: translateY(-2px) !important;
    box-shadow: 0 8px 20px rgba(2, 132, 199, 0.3) !important;
    filter: brightness(1.05);
}

.btn-primary:disabled {
    background: var(--slate-300) !important;
    color: var(--slate-400) !important;
    box-shadow: none !important;
    transform: none !important;
    cursor: not-allowed !important;
    filter: none !important;
}

.btn-outline-secondary {
    border: 1px solid var(--slate-200) !important;
    color: var(--slate-600) !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02) !important;
}

.btn-outline-secondary:hover {
    background-color: var(--slate-50) !important;
    border-color: var(--slate-300) !important;
    transform: translateY(-1px) !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05) !important;
}

.btn-outline-primary {
    transition: var(--transition-smooth) !important;
    border-color: var(--primary-color) !important;
    color: var(--primary-color) !important;
}

.btn-outline-primary:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 6px 15px rgba(2, 132, 199, 0.15) !important;
    background-color: #ffffff !important;
    border-color: var(--primary-color) !important;
    color: var(--primary-color) !important;
}

.btn:active {
    filter: brightness(0.9) !important;
}

/* Accordéon déroulant */
.unfold-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
}

.unfold-wrapper.open {
    grid-template-rows: 1fr;
}

.unfold-content {
    min-height: 0;
    transition: opacity 0.4s ease;
    opacity: 0;
}

.unfold-wrapper.open .unfold-content {
    opacity: 1;
}

/* Formulaires et Inputs */
.form-control,
.form-select {
    border-radius: 0.75rem;
    border: 1px solid var(--slate-200);
    padding: 0.75rem 1rem;
    transition: var(--transition-smooth);
}

.form-control:focus,
.form-select:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 4px var(--primary-focus-ring);
}

/* Validation d'erreur */
.form-control.invalid {
    border-color: var(--danger-color) !important;
    background-color: var(--danger-bg) !important;
    box-shadow: 0 0 0 3px var(--danger-focus-ring) !important;
}

/* Centrage vertical form-floating */
.form-floating>.form-control,
.form-floating>.form-select {
    padding-top: var(--input-padding-y) !important;
    padding-bottom: var(--input-padding-y) !important;
    height: var(--input-height) !important;
    line-height: 1.25 !important;
}

.form-floating>label {
    padding: var(--input-padding-y) 1rem !important;
}

/* floating labels sur la bordure supérieure */
.form-floating>.form-control:focus:not(.invalid)~label,
.form-floating>.form-select:focus:not(.invalid)~label {
    color: var(--primary-color) !important;
}

.form-floating>.form-control:not(:placeholder-shown):not(:focus):not(.invalid)~label,
.form-floating>.form-select:not(:focus):not(.invalid)~label {
    color: var(--slate-600);
}

.form-floating>.form-control:focus~label,
.form-floating>.form-control:not(:placeholder-shown)~label,
.form-floating>.form-control.invalid~label,
.form-floating>.form-select~label {
    transform: scale(0.85) translateY(calc(var(--input-padding-y) * -1.7)) translateX(0.5rem) !important;
    background-color: white !important;
    padding: 0 0.4rem !important;
    height: auto !important;
    opacity: 1 !important;
    font-weight: 600;
    z-index: 5;
}

.form-control.invalid,
.form-select.invalid {
    color: var(--danger-color) !important;
}

.form-control.invalid~label,
.form-select.invalid~label {
    color: var(--danger-color) !important;
}

/* Messages d'erreur de validation à droite */
.validation_error {
    left: auto !important;
    right: 5px !important;
    text-align: right;
    font-style: normal;
    z-index: 10;
}

/* Footer / Disclaimer */
#informations {
    font-size: 0.85rem;
    line-height: 1.5;
}

/* --- Mobile Optimizations (2026 Fine-tuning) --- */
@media (max-width: 575.98px) {
    .form-floating>label {
        font-size: 0.9rem !important;
    }

    .validation_error {
        font-size: 0.65rem !important;
        bottom: -1.3rem !important;
    }

    .modernized-container {
        border-radius: 1rem;
    }

    .p-4 {
        padding: 1.5rem !important;
    }
}

[x-cloak] {
    display: none !important;
}

/* Animations de transition */
@keyframes premiumFadeIn {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}