/* ============================================================
   SoftIndep — Simulateur de choix de statut juridique
   Direction esthétique : "Cabinet du Conseiller / Editorial Premium"
   Ivoire chaud + vert sapin + terracotta. Fraunces + Instrument Sans.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT@9..144,300..900,0..100&family=Instrument+Sans:wght@400..700&family=JetBrains+Mono:wght@400;500;600&display=swap');

/* Variables CSS partagées entre le composant principal et les éléments téléportés
   (modal opt-in et panneau détail sont téléportés vers <body> par Alpine x-teleport
   pour échapper aux stacking contexts du thème WordPress). */
.softindep-simulateur,
.softindep-modal-backdrop,
.softindep-detail-panel {
    /* === Palette (Cabinet du Conseiller) === */
    --sim-cream:        #faf6ee;
    --sim-cream-2:      #f4eee0;
    --sim-paper:        #ffffff;
    --sim-ink:          #1c1917;
    --sim-ink-soft:     #44403c;
    --sim-muted:        #78716c;
    --sim-border:       #e7e1d6;
    --sim-border-2:     #d5cdbc;

    --sim-sapin:        #1a3d2e;
    --sim-sapin-2:      #2d5740;
    --sim-sapin-3:      #0f2a1f;
    --sim-sapin-soft:   #e8efe5;

    --sim-terra:        #c4604c;
    --sim-terra-soft:   #f5e6dc;
    --sim-terra-deep:   #8f3f30;

    --sim-or:           #c19b3a;
    --sim-or-soft:      #efe4c5;

    --sim-display:      'Fraunces', 'Times New Roman', serif;
    --sim-body:         'Instrument Sans', 'Helvetica Neue', system-ui, sans-serif;
    --sim-mono:         'JetBrains Mono', 'Menlo', 'Consolas', monospace;

    --fraunces-display-settings:  "opsz" 144, "SOFT" 50;
    --fraunces-body-settings:     "opsz" 36,  "SOFT" 30;

    --sim-radius-lg:    12px;
    --sim-radius-md:    8px;
    --sim-radius-sm:    4px;

    --sim-shadow-sm:    0 1px 2px rgba(28, 25, 23, 0.04);
    --sim-shadow:       0 4px 12px -2px rgba(28, 25, 23, 0.06), 0 2px 4px -1px rgba(28, 25, 23, 0.04);
    --sim-shadow-lg:    0 20px 40px -12px rgba(28, 25, 23, 0.12), 0 8px 16px -4px rgba(28, 25, 23, 0.06);
    --sim-shadow-sapin: 0 8px 24px -8px rgba(26, 61, 46, 0.35);

    font-family: var(--sim-body);
    color: var(--sim-ink);
}

.softindep-simulateur {
    font-weight: 400;
    line-height: 1.55;
    letter-spacing: -0.005em;
    max-width: 1180px;
    margin: 2.5rem auto;
    padding: 0 1.25rem;
    background: transparent;
}

/* x-cloak global pour les éléments téléportés (hors scope .softindep-simulateur) */
.softindep-modal-backdrop[x-cloak],
.softindep-detail-panel[x-cloak] { display: none !important; }

/* box-sizing également sur les éléments téléportés */
.softindep-modal-backdrop,
.softindep-modal-backdrop *,
.softindep-modal-backdrop *::before,
.softindep-modal-backdrop *::after,
.softindep-detail-panel,
.softindep-detail-panel *,
.softindep-detail-panel *::before,
.softindep-detail-panel *::after {
    box-sizing: border-box;
}

/* ============================================================
   Reset scopé + neutralisation des héritages thème WP
   ============================================================ */
.softindep-simulateur,
.softindep-simulateur *,
.softindep-simulateur *::before,
.softindep-simulateur *::after {
    box-sizing: border-box;
}
.softindep-simulateur [x-cloak] { display: none !important; }

.softindep-simulateur h1,
.softindep-simulateur h2,
.softindep-simulateur h3 {
    font-family: var(--sim-display);
    font-feature-settings: "ss01", "ss02";
    color: var(--sim-ink);
    line-height: 1.1;
    letter-spacing: -0.02em;
    margin: 0;
}

.softindep-simulateur p { margin: 0 0 0.75rem; }
.softindep-simulateur p:last-child { margin-bottom: 0; }

.softindep-simulateur button { font-family: inherit; }

/* ============================================================
   Modal opt-in — "Carton d'invitation"
   ============================================================ */

.softindep-modal-backdrop {
    position: fixed;
    inset: 0;
    background: radial-gradient(circle at 30% 20%, rgba(26, 61, 46, 0.55), rgba(28, 25, 23, 0.78));
    backdrop-filter: blur(8px) saturate(1.2);
    -webkit-backdrop-filter: blur(8px) saturate(1.2);
    z-index: 2147483647; /* max int32 — au-dessus de TOUT, header sticky thème WP inclus */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
    animation: sim-fade-in 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.softindep-modal {
    background: var(--sim-cream);
    border: 1px solid var(--sim-border-2);
    border-radius: var(--sim-radius-lg);
    box-shadow: var(--sim-shadow-lg);
    padding: 2.5rem 2.25rem 2rem;
    max-width: 520px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    position: relative;
    animation: sim-rise-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) 0.1s both;
}

/* Ornement ★ en haut de la modale (typographique, pas une icone) */
.softindep-modal::before {
    content: "❦";
    position: absolute;
    top: 0.9rem;
    left: 50%;
    transform: translateX(-50%);
    color: var(--sim-or);
    font-size: 1.2rem;
    line-height: 1;
}

.softindep-modal h2 {
    font-family: var(--sim-display);
    font-weight: 500;
    font-size: 1.85rem;
    font-variation-settings: var(--fraunces-display-settings);
    color: var(--sim-sapin);
    margin: 0 0 0.5rem;
    letter-spacing: -0.025em;
}

.softindep-modal-intro {
    color: var(--sim-ink-soft);
    margin: 0 0 1rem;
    font-size: 0.97rem;
    line-height: 1.55;
}

.softindep-modal-disclaimer {
    background: transparent;
    border: 1px solid var(--sim-terra);
    border-left-width: 3px;
    color: var(--sim-terra-deep);
    padding: 0.7rem 0.9rem;
    margin: 0 0 1.5rem;
    font-size: 0.82rem;
    line-height: 1.5;
    border-radius: var(--sim-radius-sm);
    background: var(--sim-terra-soft);
}
.softindep-modal-disclaimer strong { color: var(--sim-terra-deep); font-weight: 600; }

/* === Formulaire opt-in === */
.softindep-optin-form label {
    display: block;
    margin-bottom: 0.9rem;
}
.softindep-optin-form label span {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--sim-muted);
    margin-bottom: 0.35rem;
}

.softindep-optin-form input[type="text"],
.softindep-optin-form input[type="email"] {
    width: 100%;
    padding: 0.7rem 0.9rem;
    background: var(--sim-paper);
    border: 1px solid var(--sim-border-2);
    border-radius: var(--sim-radius-sm);
    font-family: var(--sim-body);
    font-size: 1rem;
    color: var(--sim-ink);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.softindep-optin-form input[type="text"]:focus,
.softindep-optin-form input[type="email"]:focus {
    outline: none;
    border-color: var(--sim-sapin);
    box-shadow: 0 0 0 3px rgba(26, 61, 46, 0.12);
}

.softindep-optin-error {
    background: var(--sim-terra-soft);
    color: var(--sim-terra-deep);
    border-left: 3px solid var(--sim-terra);
    padding: 0.55rem 0.8rem;
    border-radius: var(--sim-radius-sm);
    margin: 0.25rem 0 1rem;
    font-size: 0.88rem;
    font-weight: 500;
}

.softindep-optin-legal {
    color: var(--sim-muted);
    font-size: 0.75rem;
    margin: 1rem 0 0;
    line-height: 1.5;
    letter-spacing: 0.005em;
}

/* ============================================================
   Boutons
   ============================================================ */

.softindep-btn-primary {
    background: var(--sim-sapin);
    color: var(--sim-cream);
    border: 1px solid var(--sim-sapin-3);
    padding: 0.85rem 1.5rem;
    border-radius: var(--sim-radius-sm);
    font-family: var(--sim-body);
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: transform 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
    width: 100%;
    box-shadow: var(--sim-shadow-sapin);
}
.softindep-btn-primary:hover:not(:disabled) {
    background: var(--sim-sapin-2);
    transform: translateY(-1px);
    box-shadow: 0 12px 30px -10px rgba(26, 61, 46, 0.45);
}
.softindep-btn-primary:active:not(:disabled) {
    transform: translateY(0);
}
.softindep-btn-primary:disabled {
    opacity: 0.6;
    cursor: wait;
    transform: none;
}

.softindep-link {
    background: none;
    border: 0;
    color: var(--sim-sapin);
    cursor: pointer;
    padding: 0.4rem 0;
    font-family: var(--sim-body);
    font-size: 0.92rem;
    font-weight: 500;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    text-decoration-color: var(--sim-border-2);
    transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
.softindep-link:hover {
    color: var(--sim-sapin-3);
    text-decoration-color: var(--sim-sapin);
}

/* ============================================================
   Sections du simulateur
   ============================================================ */

.softindep-app {
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
    animation: sim-fade-in 0.4s ease-out;
}

.softindep-section {
    background: var(--sim-paper);
    border: 1px solid var(--sim-border);
    border-radius: var(--sim-radius-lg);
    padding: 1.75rem 1.85rem;
    position: relative;
    box-shadow: var(--sim-shadow-sm);
}

/* Titre de section avec barre verticale décorative */
.softindep-section h2 {
    font-family: var(--sim-display);
    font-weight: 500;
    font-size: 1.4rem;
    font-variation-settings: var(--fraunces-display-settings);
    color: var(--sim-sapin);
    margin: 0 0 1.25rem;
    padding-left: 0.85rem;
    position: relative;
    letter-spacing: -0.015em;
}
.softindep-section h2::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.35rem;
    bottom: 0.25rem;
    width: 3px;
    background: var(--sim-sapin);
    border-radius: 2px;
}

/* === Champs === */
.softindep-field { margin-bottom: 1.1rem; }
.softindep-field:last-child { margin-bottom: 0; }

.softindep-field-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
}

.softindep-label {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--sim-muted);
    margin-bottom: 0.5rem;
}

/* === Fieldset (radios) - on neutralise complètement === */
.softindep-simulateur fieldset.softindep-field {
    border: 0;
    padding: 0;
    margin: 0 0 1.1rem;
}
.softindep-simulateur legend.softindep-label {
    padding: 0;
    margin-bottom: 0.6rem;
    width: 100%;
    float: none;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--sim-muted);
}

/* === Radios en pill-buttons === */
.softindep-radio-group {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.55rem;
}

.softindep-radio-group label {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    text-align: left;
    gap: 0.55rem;
    cursor: pointer;
    padding: 0.7rem 0.85rem;
    margin: 0;
    width: auto;
    border: 1px solid var(--sim-border-2);
    border-radius: var(--sim-radius-md);
    background: var(--sim-cream);
    transition: all 0.15s ease;
    font-size: 0.92rem;
    color: var(--sim-ink-soft);
    user-select: none;
}
.softindep-radio-group label:hover {
    border-color: var(--sim-sapin);
    background: var(--sim-paper);
}
.softindep-radio-group label > input[type="radio"] {
    flex: 0 0 auto;
    margin: 0;
    width: 14px;
    height: 14px;
    accent-color: var(--sim-sapin);
}
.softindep-radio-group label > span {
    flex: 0 1 auto;
    line-height: 1.3;
}
/* État "sélectionné" via :has() — supporté Chrome/Safari/Firefox récents */
.softindep-radio-group label:has(> input:checked) {
    border-color: var(--sim-sapin);
    background: var(--sim-sapin-soft);
    color: var(--sim-sapin-3);
    font-weight: 500;
    box-shadow: 0 0 0 1px var(--sim-sapin) inset;
}

/* === Slider CA + input number alignés === */
.softindep-ca-row {
    display: flex;
    align-items: center;
    gap: 0.85rem;
}
.softindep-ca-row input[type="range"] {
    flex: 1;
    height: 6px;
    -webkit-appearance: none;
    appearance: none;
    background: var(--sim-border);
    border-radius: 6px;
    outline: none;
    cursor: pointer;
}
.softindep-ca-row input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    background: var(--sim-sapin);
    border: 3px solid var(--sim-cream);
    border-radius: 50%;
    cursor: grab;
    box-shadow: 0 2px 6px rgba(26, 61, 46, 0.35);
    transition: transform 0.12s ease;
}
.softindep-ca-row input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.1); }
.softindep-ca-row input[type="range"]::-moz-range-thumb {
    width: 22px;
    height: 22px;
    background: var(--sim-sapin);
    border: 3px solid var(--sim-cream);
    border-radius: 50%;
    cursor: grab;
    box-shadow: 0 2px 6px rgba(26, 61, 46, 0.35);
}

.softindep-ca-number,
.softindep-ca-row input[type="number"],
.softindep-field input[type="number"]:not(.softindep-ca-number) {
    width: 150px;
    padding: 0.5rem 0.7rem;
    background: var(--sim-paper);
    border: 1px solid var(--sim-border-2);
    border-radius: var(--sim-radius-sm);
    font-family: var(--sim-mono);
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--sim-ink);
    text-align: right;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.softindep-field input[type="number"]:not(.softindep-ca-number) { width: 100%; }
.softindep-ca-number:focus,
.softindep-ca-row input[type="number"]:focus,
.softindep-field input[type="number"]:focus {
    outline: none;
    border-color: var(--sim-sapin);
    box-shadow: 0 0 0 3px rgba(26, 61, 46, 0.12);
}

.softindep-unit {
    font-family: var(--sim-display);
    font-weight: 500;
    font-style: italic;
    color: var(--sim-sapin);
    font-size: 1.1rem;
    line-height: 1;
}

/* === Détail charges (21 lignes) === */
.softindep-charges-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem 1.25rem;
    margin: 1rem 0;
    padding: 1rem;
    background: var(--sim-cream);
    border: 1px dashed var(--sim-border-2);
    border-radius: var(--sim-radius-md);
}

.softindep-charge-line {
    display: grid;
    grid-template-columns: 1fr 110px 24px;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.86rem;
    color: var(--sim-ink-soft);
}
.softindep-charge-line input[type="number"] {
    padding: 0.4rem 0.55rem;
    background: var(--sim-paper);
    border: 1px solid var(--sim-border);
    border-radius: var(--sim-radius-sm);
    font-family: var(--sim-mono);
    font-size: 0.85rem;
    text-align: right;
}

.softindep-charges-total {
    font-size: 0.9rem;
    color: var(--sim-ink-soft);
    margin: 0 0 0.5rem;
}
.softindep-charges-total strong {
    font-family: var(--sim-display);
    font-weight: 600;
    font-variation-settings: var(--fraunces-body-settings);
    color: var(--sim-sapin);
    font-size: 1.1rem;
    margin-left: 0.25rem;
}

/* === Options avancées === */
.softindep-avancees > button.softindep-link {
    text-decoration: none;
    font-weight: 600;
    color: var(--sim-ink-soft);
}
.softindep-avancees > button.softindep-link:hover { color: var(--sim-sapin); }

.softindep-avancees-body {
    margin-top: 1rem;
    padding: 1.25rem 1.35rem;
    background: var(--sim-cream);
    border: 1px solid var(--sim-border);
    border-radius: var(--sim-radius-md);
    border-left: 3px solid var(--sim-or);
}
.softindep-help {
    font-size: 0.85rem;
    color: var(--sim-ink-soft);
    margin: 0 0 1rem;
    line-height: 1.55;
    font-style: italic;
}
.softindep-help em {
    color: var(--sim-sapin);
    font-style: normal;
    font-weight: 500;
}

/* ============================================================
   Résultats — Cards
   ============================================================ */

.softindep-warning {
    background: var(--sim-terra-soft);
    color: var(--sim-terra-deep);
    border-left: 3px solid var(--sim-terra);
    padding: 0.85rem 1.1rem;
    border-radius: var(--sim-radius-sm);
    margin: 0 0 1.25rem;
    font-size: 0.92rem;
    font-weight: 500;
}

.softindep-instructions {
    color: var(--sim-muted);
    font-style: italic;
    font-family: var(--sim-display);
    font-variation-settings: var(--fraunces-body-settings);
    font-size: 1.05rem;
    text-align: center;
    padding: 2.5rem 1rem;
    margin: 0;
    border: 1px dashed var(--sim-border-2);
    border-radius: var(--sim-radius-md);
    background: var(--sim-cream);
}

.softindep-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
    margin-top: 1.25rem;
}

/* === Card normale === */
.softindep-card {
    background: var(--sim-paper);
    border: 1px solid var(--sim-border);
    border-radius: var(--sim-radius-lg);
    padding: 1.5rem 1.4rem 1.25rem;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
    display: flex;
    flex-direction: column;
    min-height: 220px;
    position: relative;
    overflow: hidden;
}
.softindep-card::before {
    /* fine ligne d'accent en haut de la card */
    content: "";
    position: absolute;
    top: 0;
    left: 1.4rem;
    right: 1.4rem;
    height: 2px;
    background: var(--sim-border-2);
    transition: background 0.2s ease;
}
.softindep-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--sim-shadow-lg);
    border-color: var(--sim-sapin);
}
.softindep-card:hover::before { background: var(--sim-sapin); }

/* === Card GAGNANTE (winner) — Traitement éditorial fort === */
.softindep-card.is-gagnant {
    background: var(--sim-sapin);
    border-color: var(--sim-sapin-3);
    color: var(--sim-cream);
    box-shadow: var(--sim-shadow-sapin);
    grid-column: span 2;
    min-height: 280px;
    padding: 2rem 2rem 1.75rem;
}
.softindep-card.is-gagnant::before {
    background: var(--sim-or);
    left: 2rem;
    right: 2rem;
    height: 3px;
}
.softindep-card.is-gagnant:hover {
    transform: translateY(-3px);
    box-shadow: 0 24px 50px -16px rgba(26, 61, 46, 0.5);
    border-color: var(--sim-or);
}
.softindep-card.is-gagnant:hover::before { background: var(--sim-or); }

/* === Card non éligible === */
.softindep-card.is-non-eligible {
    opacity: 0.65;
    background: var(--sim-cream);
}
.softindep-card.is-non-eligible:hover { transform: translateY(-2px); }

/* === Head de card === */
.softindep-card-head {
    margin-bottom: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}
.softindep-card-head h3 {
    margin: 0;
    font-family: var(--sim-display);
    font-weight: 500;
    font-size: 1.15rem;
    line-height: 1.2;
    color: var(--sim-ink);
    letter-spacing: -0.01em;
}
.softindep-card.is-gagnant .softindep-card-head h3 {
    color: var(--sim-cream);
    font-size: 1.65rem;
    font-weight: 500;
    font-variation-settings: var(--fraunces-display-settings);
}

/* === Badge OPTIMAL === */
.softindep-card-badge {
    align-self: flex-start;
    background: var(--sim-or);
    color: var(--sim-sapin-3);
    padding: 0.25rem 0.7rem;
    border-radius: 999px;
    font-family: var(--sim-body);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    line-height: 1;
}
.softindep-card-badge::before {
    content: "❦ ";
    font-family: var(--sim-display);
    font-weight: 400;
    margin-right: 0.15rem;
}

/* === Body de card === */
.softindep-card-body { flex: 1; }

.softindep-revenu-net {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.softindep-revenu-label {
    font-family: var(--sim-body);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--sim-muted);
}
.softindep-card.is-gagnant .softindep-revenu-label {
    color: rgba(250, 246, 238, 0.7);
}

.softindep-revenu-net strong {
    font-family: var(--sim-display);
    font-weight: 600;
    font-variation-settings: "opsz" 144, "SOFT" 50;
    font-size: 2rem;
    line-height: 1.05;
    color: var(--sim-ink);
    letter-spacing: -0.025em;
}
.softindep-card.is-gagnant .softindep-revenu-net strong {
    color: var(--sim-cream);
    font-size: 3.5rem;
    font-weight: 500;
}

.softindep-ecart {
    margin: 0.75rem 0 0;
    font-size: 0.82rem;
    color: var(--sim-terra-deep);
    font-family: var(--sim-mono);
    font-weight: 500;
}
.softindep-ecart span { font-weight: 600; }

.softindep-non-eligible,
.softindep-ca-insuffisant {
    margin: 0;
    color: var(--sim-muted);
    font-style: italic;
    font-family: var(--sim-display);
    font-variation-settings: var(--fraunces-body-settings);
    font-size: 0.95rem;
    line-height: 1.4;
}

/* === Foot de card === */
.softindep-card-foot {
    margin-top: 1rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--sim-border);
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    align-items: stretch;
}
.softindep-card.is-gagnant .softindep-card-foot {
    border-top-color: rgba(250, 246, 238, 0.18);
}
.softindep-card-foot .softindep-link {
    font-size: 0.72rem;
    padding: 0;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-weight: 600;
    color: var(--sim-muted);
    align-self: flex-start;
    order: 2;
}
.softindep-card.is-gagnant .softindep-card-foot .softindep-link {
    color: rgba(250, 246, 238, 0.65);
}
.softindep-card-foot .softindep-link:hover { color: var(--sim-sapin); }
.softindep-card.is-gagnant .softindep-card-foot .softindep-link:hover {
    color: var(--sim-or);
}

/* === CTA Affiliation LegalPlace === */
.softindep-cta-affiliation {
    order: 1; /* CTA en haut du footer, "Voir le détail" en dessous */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.2rem;
    background: var(--sim-sapin);
    color: var(--sim-cream);
    padding: 0.7rem 1rem;
    border-radius: var(--sim-radius-sm);
    text-decoration: none;
    font-family: var(--sim-body);
    line-height: 1.2;
    transition: transform 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
    border: 1px solid var(--sim-sapin-3);
    box-shadow: 0 2px 6px -2px rgba(26, 61, 46, 0.3);
}
.softindep-cta-affiliation:hover {
    background: var(--sim-sapin-2);
    color: var(--sim-cream);
    transform: translateY(-1px);
    box-shadow: 0 6px 14px -4px rgba(26, 61, 46, 0.4);
    text-decoration: none;
}
.softindep-cta-affiliation:visited { color: var(--sim-cream); }
.softindep-cta-label {
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: 0.005em;
}
.softindep-cta-promo {
    font-style: normal;
    font-size: 0.72rem;
    font-weight: 400;
    letter-spacing: 0.04em;
    color: rgba(250, 246, 238, 0.85);
}
.softindep-cta-promo strong {
    font-family: var(--sim-mono);
    font-weight: 600;
    color: var(--sim-or-soft);
    letter-spacing: 0.06em;
    margin: 0 0.15rem;
}

/* CTA sur la card GAGNANTE : couleur or, plus imposante */
.softindep-card.is-gagnant .softindep-cta-affiliation {
    background: var(--sim-or);
    color: var(--sim-sapin-3);
    border-color: var(--sim-or);
    box-shadow: 0 4px 14px -2px rgba(193, 155, 58, 0.5);
    padding: 0.85rem 1rem;
}
.softindep-card.is-gagnant .softindep-cta-affiliation:hover {
    background: #d4ad48;
    color: var(--sim-sapin-3);
    box-shadow: 0 8px 20px -4px rgba(193, 155, 58, 0.6);
}
.softindep-card.is-gagnant .softindep-cta-affiliation:visited { color: var(--sim-sapin-3); }
.softindep-card.is-gagnant .softindep-cta-label { font-size: 1rem; }
.softindep-card.is-gagnant .softindep-cta-promo { color: var(--sim-sapin-3); opacity: 0.78; }
.softindep-card.is-gagnant .softindep-cta-promo strong { color: var(--sim-sapin); }

/* === Actions (bouton imprimer flottant) === */
.softindep-actions {
    margin-top: 1.5rem;
    display: flex;
    justify-content: center;
}
.softindep-actions .softindep-btn-primary {
    width: auto;
    padding: 0.85rem 2.25rem;
}

/* ============================================================
   Panneau latéral détail
   ============================================================ */

.softindep-detail-panel {
    position: fixed;
    inset: 0;
    background: rgba(28, 25, 23, 0.55);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 2147483646; /* sous la modal opt-in (z + 1) mais au-dessus de tout le reste */
    display: flex;
    justify-content: flex-start; /* panneau à GAUCHE sur desktop */
    animation: sim-fade-in 0.25s ease;
}

.softindep-detail-content {
    background: var(--sim-cream);
    width: 100%;
    max-width: 520px;
    height: 100%;
    overflow-y: auto;
    padding: 2rem 1.85rem;
    box-shadow: 20px 0 60px -10px rgba(28, 25, 23, 0.2);
    animation: sim-slide-in-left 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.softindep-detail-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.25rem;
    padding-bottom: 0.85rem;
    border-bottom: 1px solid var(--sim-border-2);
}
.softindep-detail-head h3 {
    margin: 0;
    font-family: var(--sim-display);
    font-weight: 500;
    font-size: 1.5rem;
    color: var(--sim-sapin);
    font-variation-settings: var(--fraunces-display-settings);
    letter-spacing: -0.015em;
}

.softindep-close {
    background: none;
    border: 1px solid var(--sim-border-2);
    border-radius: 50%;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95rem;
    cursor: pointer;
    color: var(--sim-ink-soft);
    transition: all 0.15s ease;
}
.softindep-close:hover {
    color: var(--sim-cream);
    background: var(--sim-sapin);
    border-color: var(--sim-sapin);
}

.softindep-detail-lignes {
    list-style: none;
    padding: 0;
    margin: 0;
}
.softindep-detail-lignes li {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 0.55rem 0;
    border-bottom: 1px solid var(--sim-border);
    font-size: 0.9rem;
    gap: 1rem;
}
.softindep-detail-lignes li span:first-child {
    color: var(--sim-ink-soft);
    flex: 1;
}
.softindep-detail-lignes li strong {
    font-family: var(--sim-mono);
    font-weight: 500;
    color: var(--sim-ink);
    text-align: right;
    white-space: nowrap;
}

/* Section markers (— Option 1 : ..., — Option 2 : ...) */
.softindep-detail-lignes li:has(> strong:empty),
.softindep-detail-lignes li[class*="section-marker"] {
    /* Si la valeur est null (rendered as "—") on traite comme un séparateur */
}

.softindep-detail-lignes li.is-total {
    border-top: 2px solid var(--sim-sapin);
    border-bottom: 0;
    margin-top: 1rem;
    padding-top: 0.85rem;
    padding-bottom: 0;
    font-family: var(--sim-display);
    font-weight: 600;
    font-size: 1.1rem;
    color: var(--sim-sapin);
}
.softindep-detail-lignes li.is-total strong {
    font-family: var(--sim-display);
    font-weight: 600;
    font-variation-settings: var(--fraunces-display-settings);
    font-size: 1.3rem;
    color: var(--sim-sapin);
}

.softindep-detail-note {
    margin-top: 1.5rem;
    padding: 0.9rem 1rem;
    background: var(--sim-paper);
    border: 1px solid var(--sim-border);
    border-left: 3px solid var(--sim-or);
    border-radius: var(--sim-radius-sm);
    font-size: 0.82rem;
    color: var(--sim-ink-soft);
    line-height: 1.55;
    font-style: italic;
}

/* ============================================================
   Footer impression (caché par défaut, visible en print)
   ============================================================ */
.softindep-print-footer {
    display: none;
    text-align: center;
    padding: 1rem 0;
    font-family: var(--sim-display);
    font-style: italic;
    font-size: 0.9rem;
    color: var(--sim-muted);
}

/* ============================================================
   Animations
   ============================================================ */
@keyframes sim-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes sim-rise-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes sim-slide-in-right {
    from { transform: translateX(40px); opacity: 0; }
    to   { transform: translateX(0); opacity: 1; }
}
@keyframes sim-slide-in-left {
    from { transform: translateX(-40px); opacity: 0; }
    to   { transform: translateX(0); opacity: 1; }
}

/* Respect des préférences utilisateur */
@media (prefers-reduced-motion: reduce) {
    .softindep-modal,
    .softindep-modal-backdrop,
    .softindep-detail-panel,
    .softindep-detail-content,
    .softindep-app,
    .softindep-card { animation: none; transition: none; }
}

/* ============================================================
   Détail-print masqué à l'écran (visible en print plus bas)
   ============================================================ */
.softindep-card-print-detail { display: none; }

/* ============================================================
   Mobile (≤ 768px)
   ============================================================ */
@media (max-width: 768px) {
    .softindep-simulateur {
        margin: 1.25rem 0;
        padding: 0 0.75rem;
    }
    .softindep-section {
        padding: 1.25rem 1.15rem;
    }
    .softindep-section h2 { font-size: 1.2rem; }

    .softindep-radio-group,
    .softindep-field-row,
    .softindep-charges-grid {
        grid-template-columns: 1fr;
    }
    .softindep-cards {
        grid-template-columns: 1fr;
    }
    .softindep-card.is-gagnant {
        grid-column: span 1;
        min-height: 220px;
        padding: 1.5rem 1.4rem;
    }
    .softindep-card.is-gagnant .softindep-revenu-net strong { font-size: 2.5rem; }
    .softindep-card.is-gagnant .softindep-card-head h3 { font-size: 1.35rem; }

    .softindep-detail-content {
        max-width: 100%;
        padding: 1.5rem 1.25rem;
    }
    .softindep-ca-row { flex-wrap: wrap; }
    .softindep-ca-number,
    .softindep-ca-row input[type="number"] {
        width: 100%;
    }
    .softindep-modal {
        padding: 2rem 1.5rem 1.5rem;
    }
    .softindep-modal h2 { font-size: 1.5rem; }
}

/* ============================================================
   Impression — déplie tous les détails, masque les boutons
   ============================================================ */
@media print {
    .softindep-simulateur {
        max-width: 100%;
        margin: 0;
        padding: 0;
        color: #000;
        background: #fff;
        font-size: 11pt;
        font-family: 'Times New Roman', Georgia, serif;
    }
    .softindep-modal-backdrop,
    .softindep-detail-panel,
    .softindep-actions,
    .softindep-card-foot,
    .softindep-cta-affiliation,
    .softindep-link,
    button {
        display: none !important;
    }
    .softindep-app,
    .softindep-print-footer { display: block !important; }
    .softindep-section {
        border: 1px solid #999;
        border-radius: 0;
        padding: 0.5cm;
        box-shadow: none;
        page-break-inside: avoid;
        margin-bottom: 0.5cm;
        background: #fff;
    }
    .softindep-section h2 {
        color: #000;
        border-bottom: 1px solid #999;
        padding: 0 0 0.2cm 0;
        margin-bottom: 0.4cm;
        font-family: 'Times New Roman', Georgia, serif;
    }
    .softindep-section h2::before { display: none; }
    .softindep-cards { display: block; }
    .softindep-card {
        border: 1px solid #999;
        border-radius: 0;
        background: #fff !important;
        opacity: 1 !important;
        margin-bottom: 0.5cm;
        page-break-inside: avoid;
        cursor: default;
        min-height: 0;
        grid-column: auto !important;
        color: #000 !important;
        padding: 0.5cm !important;
    }
    .softindep-card.is-gagnant {
        border: 2px solid #000;
        background: #fff !important;
    }
    .softindep-card.is-gagnant .softindep-card-head h3,
    .softindep-card.is-gagnant .softindep-revenu-net strong,
    .softindep-card.is-gagnant .softindep-revenu-label { color: #000 !important; font-size: 12pt !important; }
    .softindep-card::before { display: none; }
    .softindep-card.is-non-eligible { opacity: 0.7 !important; }
    .softindep-card-badge {
        background: #000;
        color: #fff;
        font-family: 'Times New Roman', Georgia, serif;
    }
    .softindep-card-body { margin-bottom: 0; }
    .softindep-revenu-net strong {
        font-size: 14pt !important;
        font-family: 'Times New Roman', Georgia, serif !important;
    }
    .softindep-print-footer {
        display: block;
        margin-top: 0.5cm;
        font-size: 9pt;
        color: #555;
        text-align: center;
        border-top: 1px solid #999;
        padding-top: 0.3cm;
    }
    .softindep-card-print-detail {
        display: block;
        margin-top: 0.3cm;
        padding-top: 0.3cm;
        border-top: 1px dashed #999;
    }
    body, html { background: #fff !important; }
    @page { margin: 1cm 1.5cm; }
}
