@import url('https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,300&display=swap');

/* ── RESET & BASE ─────────────────────────────────── */
.pp-wizard-container *,
.pp-wizard-container *::before,
.pp-wizard-container *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

.pp-wizard-container {
    --pp-blue:     #1e3a5f;
    --pp-blue-mid: #2c5282;
    --pp-accent:   #e8a020;
    --pp-green:    #22c55e;
    --pp-red:      #ef4444;
    --pp-orange:   #f97316;
    --pp-bg:       #f8fafc;
    --pp-surface:  #ffffff;
    --pp-border:   #e2e8f0;
    --pp-text:     #1a2332;
    --pp-muted:    #6b7280;
    --pp-radius:   14px;
    --pp-shadow:   0 4px 24px rgba(30,58,95,.08);
    --pp-font-h:   'Syne', sans-serif;
    --pp-font-b:   'DM Sans', sans-serif;

    font-family: var(--pp-font-b);
    color: var(--pp-text);
    background: var(--pp-bg);
    max-width: 860px;
    margin: 0 auto;
    padding: 0 0 60px;
    position: relative;
}

/* ── BARRE DE PROGRESSION ────────────────────────── */
.pp-progress-bar-outer {
    background: var(--pp-blue);
    border-radius: var(--pp-radius) var(--pp-radius) 0 0;
    padding: 24px 32px 0;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 20px rgba(30,58,95,.25);
}

.pp-progress-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 18px;
}

.pp-logo-small {
    font-family: var(--pp-font-h);
    font-weight: 800;
    font-size: 18px;
    color: #fff;
    letter-spacing: -0.5px;
}

.pp-progress-info {
    display: flex;
    align-items: center;
    gap: 14px;
}

.pp-etape-counter {
    color: rgba(255,255,255,.7);
    font-size: 13px;
}

.pp-etape-counter strong {
    color: #fff;
    font-weight: 600;
}

.pp-progress-track {
    width: 180px;
    height: 6px;
    background: rgba(255,255,255,.2);
    border-radius: 99px;
    overflow: hidden;
}

.pp-progress-fill {
    height: 100%;
    background: var(--pp-accent);
    border-radius: 99px;
    transition: width 0.5s cubic-bezier(.4,0,.2,1);
}

.pp-progress-pct {
    font-family: var(--pp-font-h);
    font-weight: 700;
    font-size: 14px;
    color: var(--pp-accent);
    min-width: 36px;
}

/* Steps strip */
.pp-steps-strip {
    display: flex;
    gap: 4px;
    padding-bottom: 0;
    overflow-x: auto;
    scrollbar-width: none;
}

.pp-steps-strip::-webkit-scrollbar { display: none; }

.pp-step-dot {
    min-width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    transition: all .3s ease;
    cursor: default;
    position: relative;
    bottom: -6px;
}

.pp-step-dot.done {
    background: var(--pp-accent);
    color: #fff;
    font-size: 13px;
    font-weight: 700;
}

.pp-step-dot.active {
    background: #fff;
    color: var(--pp-blue);
    font-size: 13px;
    box-shadow: 0 0 0 4px rgba(255,255,255,.3);
    font-weight: 700;
}

.pp-step-dot.pending {
    background: rgba(255,255,255,.1);
    color: rgba(255,255,255,.4);
}

/* ── CORPS DU WIZARD ─────────────────────────────── */
.pp-wizard-body {
    background: var(--pp-surface);
    border-radius: 0 0 var(--pp-radius) var(--pp-radius);
    padding: 40px 40px 50px;
    box-shadow: var(--pp-shadow);
    min-height: 500px;
}

/* ── EN-TÊTE D'ÉTAPE ─────────────────────────────── */
.pp-step-header {
    margin-bottom: 32px;
}

.pp-step-header h2 {
    font-family: var(--pp-font-h);
    font-weight: 800;
    font-size: 26px;
    color: var(--pp-blue);
    margin-bottom: 8px;
    letter-spacing: -0.5px;
}

.pp-step-header p {
    color: var(--pp-muted);
    font-size: 15px;
    line-height: 1.6;
}

/* Hero étape 1 */
.pp-step-hero {
    text-align: center;
    padding: 20px 0 30px;
}

.pp-step-icon {
    font-size: 64px;
    margin-bottom: 16px;
    display: block;
}

.pp-step-hero h2 {
    font-family: var(--pp-font-h);
    font-weight: 800;
    font-size: 30px;
    color: var(--pp-blue);
    margin-bottom: 10px;
}

.pp-subtitle {
    color: var(--pp-muted);
    font-size: 16px;
    line-height: 1.6;
}

/* Checklist bienvenue */
.pp-checklist-preview {
    background: #f0f7ff;
    border: 1px solid #c3dafe;
    border-radius: 12px;
    padding: 24px 28px;
    margin: 24px 0;
    text-align: left;
}

.pp-checklist-preview h3 {
    font-family: var(--pp-font-h);
    font-size: 15px;
    font-weight: 700;
    color: var(--pp-blue);
    margin-bottom: 14px;
}

.pp-checklist-preview ul {
    list-style: none;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}

.pp-checklist-preview li {
    font-size: 14px;
    color: #2d4a6a;
}

/* RGPD consent */
.pp-rgpd-consent {
    margin: 20px 0 28px;
}

.pp-checkbox-label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 13px;
    color: var(--pp-muted);
    cursor: pointer;
    line-height: 1.5;
}

.pp-checkbox-label input[type=checkbox] {
    margin-top: 2px;
    flex-shrink: 0;
    accent-color: var(--pp-blue);
}

.pp-checkbox-label a { color: var(--pp-blue); }

/* ── FORMULAIRES ─────────────────────────────────── */
.pp-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 10px;
}

.pp-form-compact { gap: 12px; }

.pp-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.pp-field label {
    font-size: 13px;
    font-weight: 600;
    color: var(--pp-text);
}

.pp-field input[type=text],
.pp-field input[type=email],
.pp-field input[type=tel],
.pp-field input[type=number],
.pp-field input[type=date],
.pp-field select,
.pp-field textarea {
    width: 100%;
    padding: 11px 14px;
    border: 2px solid var(--pp-border);
    border-radius: 10px;
    font-family: var(--pp-font-b);
    font-size: 14px;
    color: var(--pp-text);
    background: #fff;
    transition: border-color .2s, box-shadow .2s;
    outline: none;
}

.pp-field input:focus,
.pp-field select:focus,
.pp-field textarea:focus {
    border-color: var(--pp-blue);
    box-shadow: 0 0 0 4px rgba(30,58,95,.08);
}

.pp-field textarea { resize: vertical; min-height: 80px; }

.pp-hint {
    font-size: 12px;
    color: var(--pp-muted);
}

.pp-hint a { color: var(--pp-blue); }

.pp-field-full  { grid-column: 1 / -1; }
.pp-field-half  { grid-column: span 1; }
.pp-field-third { grid-column: span 1; max-width: 100%; }

@media (max-width: 580px) {
    .pp-form-grid { grid-template-columns: 1fr; }
    .pp-field-half, .pp-field-third { grid-column: 1; }
    .pp-checklist-preview ul { grid-template-columns: 1fr; }
}

.pp-row-2 {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 10px;
    margin-top: 10px;
}

/* Info box */
.pp-info-box {
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 10px;
    padding: 14px 16px;
    font-size: 13px;
    line-height: 1.6;
    color: #92400e;
}

/* ── CHOIX DU STATUT ─────────────────────────────── */
.pp-aide-choix {
    background: #f8fafc;
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 20px 24px;
    margin-bottom: 24px;
}

.pp-question-row {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

.pp-question-row label {
    font-size: 13px;
    font-weight: 600;
    color: var(--pp-text);
    min-width: 220px;
}

.pp-btn-group { display: flex; gap: 8px; flex-wrap: wrap; }

.pp-btn-choice {
    padding: 7px 14px;
    border: 2px solid var(--pp-border);
    border-radius: 8px;
    font-family: var(--pp-font-b);
    font-size: 13px;
    font-weight: 500;
    color: var(--pp-muted);
    background: #fff;
    cursor: pointer;
    transition: all .2s;
}

.pp-btn-choice.active,
.pp-btn-choice:hover {
    border-color: var(--pp-blue);
    color: var(--pp-blue);
    background: #f0f7ff;
}

.pp-recommandation {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
    padding: 12px 16px;
    background: var(--pp-accent)15;
    border: 1px solid var(--pp-accent)40;
    border-radius: 10px;
    font-size: 14px;
    color: #92400e;
}

.pp-reco-icon { font-size: 20px; }

/* Grille statuts */
.pp-statuts-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 24px;
}

@media (max-width: 640px) {
    .pp-statuts-grid { grid-template-columns: 1fr 1fr; }
}

.pp-statut-card {
    border: 2px solid var(--pp-border);
    border-radius: 14px;
    padding: 18px 16px;
    cursor: pointer;
    transition: all .25s;
    background: #fff;
    position: relative;
    overflow: hidden;
}

.pp-statut-card:hover {
    border-color: var(--pp-blue);
    box-shadow: 0 4px 20px rgba(30,58,95,.1);
    transform: translateY(-2px);
}

.pp-statut-card.selected {
    border-color: var(--pp-blue);
    background: #f0f7ff;
    box-shadow: 0 0 0 4px rgba(30,58,95,.08);
}

.pp-statut-card.selected::before {
    content: '✓';
    position: absolute;
    top: 10px;
    right: 12px;
    background: var(--pp-blue);
    color: #fff;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
}

.pp-statut-icon {
    font-size: 28px;
    margin-bottom: 8px;
}

.pp-statut-label {
    font-family: var(--pp-font-h);
    font-weight: 700;
    font-size: 13px;
    color: var(--pp-blue);
    margin-bottom: 6px;
    line-height: 1.3;
}

.pp-statut-desc {
    font-size: 12px;
    color: var(--pp-muted);
    line-height: 1.5;
    margin-bottom: 10px;
}

.pp-statut-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
    font-size: 11px;
    color: var(--pp-muted);
}

.pp-statut-charges {
    font-size: 12px;
    color: var(--pp-text);
}

/* Badges */
.pp-badge {
    padding: 3px 9px;
    border-radius: 99px;
    font-size: 11px;
    font-weight: 600;
    display: inline-block;
}

.pp-badge-green  { background: #d1fae5; color: #065f46; }
.pp-badge-orange { background: #fed7aa; color: #9a3412; }
.pp-badge-red    { background: #fee2e2; color: #991b1b; }

/* Simulateur de charges */
.pp-simulateur {
    background: #f8fafc;
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 20px 24px;
    margin-bottom: 24px;
}

.pp-simulateur h3 {
    font-family: var(--pp-font-h);
    font-size: 15px;
    font-weight: 700;
    color: var(--pp-blue);
    margin-bottom: 14px;
}

.pp-sim-row {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
}

.pp-sim-row label {
    font-size: 13px;
    font-weight: 600;
    min-width: 180px;
}

.pp-sim-row input {
    max-width: 200px;
    padding: 9px 12px;
    border: 2px solid var(--pp-border);
    border-radius: 8px;
    font-size: 14px;
}

.pp-sim-results {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.pp-sim-results .pp-stat-box {
    text-align: center;
    padding: 12px;
    background: #fff;
    border-radius: 10px;
    border: 1px solid var(--pp-border);
}

.pp-stat-box .pp-stat-val {
    font-family: var(--pp-font-h);
    font-size: 20px;
    font-weight: 800;
    color: var(--pp-blue);
}

.pp-stat-box .pp-stat-lbl {
    font-size: 11px;
    color: var(--pp-muted);
    margin-top: 4px;
}

.pp-stat-box.pp-stat-net .pp-stat-val { color: var(--pp-green); }
.pp-stat-box.pp-stat-neg .pp-stat-val { color: var(--pp-red); }

/* ── RADIO GROUP ─────────────────────────────────── */
.pp-radio-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.pp-radio-label {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    border: 2px solid var(--pp-border);
    border-radius: 10px;
    cursor: pointer;
    font-size: 14px;
    transition: all .2s;
}

.pp-radio-label:hover,
.pp-radio-label.selected {
    border-color: var(--pp-blue);
    background: #f0f7ff;
    color: var(--pp-blue);
}

.pp-radio-label input[type=radio] {
    accent-color: var(--pp-blue);
}

/* ── CAPITAL PRESETS ─────────────────────────────── */
.pp-capital-presets {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.pp-capital-presets button {
    padding: 8px 16px;
    border: 2px solid var(--pp-border);
    border-radius: 8px;
    font-family: var(--pp-font-b);
    font-size: 13px;
    font-weight: 600;
    color: var(--pp-blue);
    background: #fff;
    cursor: pointer;
    transition: all .2s;
}

.pp-capital-presets button:hover {
    border-color: var(--pp-blue);
    background: #f0f7ff;
}

/* ── ASSOCIÉS ────────────────────────────────────── */
.pp-associe-block {
    border: 2px solid var(--pp-border);
    border-radius: 12px;
    padding: 18px;
    margin-bottom: 14px;
}

.pp-associe-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
    font-weight: 600;
    font-size: 14px;
    color: var(--pp-blue);
}

.pp-btn-remove-assoc {
    background: none;
    border: none;
    color: var(--pp-red);
    font-size: 16px;
    cursor: pointer;
    padding: 2px 6px;
    border-radius: 4px;
}

/* ── PIÈCES UPLOAD ───────────────────────────────── */
.pp-pieces-list { display: flex; flex-direction: column; gap: 12px; }

.pp-piece-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    border: 2px solid var(--pp-border);
    border-radius: 12px;
    gap: 16px;
    flex-wrap: wrap;
}

.pp-piece-row.pp-piece-valide { border-color: #22c55e; background: #f0fdf4; }
.pp-piece-row.pp-piece-rejete { border-color: var(--pp-red); background: #fef2f2; }

.pp-piece-info {
    display: flex;
    align-items: center;
    gap: 12px;
}

.pp-piece-icon { font-size: 24px; }

.pp-piece-info strong { font-size: 14px; color: var(--pp-text); display: block; margin-bottom: 2px; }

.pp-required {
    font-size: 11px;
    background: #fee2e2;
    color: #991b1b;
    padding: 2px 7px;
    border-radius: 99px;
    margin-left: 6px;
}

.pp-piece-status-ok   { font-size: 12px; color: #15803d; margin-left: 8px; }
.pp-piece-status-err  { font-size: 12px; color: var(--pp-red); margin-left: 8px; }
.pp-piece-status-wait { font-size: 12px; color: var(--pp-orange); margin-left: 8px; }

.pp-piece-upload { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }

.pp-btn-upload {
    display: inline-block;
    padding: 9px 18px;
    background: var(--pp-blue);
    color: #fff;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background .2s;
}

.pp-btn-upload:hover { background: var(--pp-blue-mid); }

.pp-upload-hint { font-size: 11px; color: var(--pp-muted); }

/* ── RÉCAPITULATIF ───────────────────────────────── */
.pp-recapitulatif {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 24px;
}

.pp-recap-section {
    background: #f8fafc;
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 16px 18px;
}

.pp-recap-section h3 {
    font-family: var(--pp-font-h);
    font-size: 12px;
    font-weight: 700;
    color: var(--pp-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.pp-docs-a-generer {
    background: #f0f7ff;
    border: 1px solid #c3dafe;
    border-radius: 12px;
    padding: 20px 24px;
    margin-bottom: 24px;
}

.pp-docs-a-generer h3 {
    font-family: var(--pp-font-h);
    font-weight: 700;
    font-size: 15px;
    color: var(--pp-blue);
    margin-bottom: 12px;
}

.pp-docs-a-generer ul {
    list-style: none;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
}

.pp-docs-a-generer li { font-size: 13px; color: #2d4a6a; }

/* ── FINALISATION ────────────────────────────────── */
.pp-step-success {
    text-align: center;
    margin-bottom: 32px;
}

.pp-success-icon {
    font-size: 72px;
    display: block;
    margin-bottom: 16px;
    animation: pp-bounce .6s ease;
}

@keyframes pp-bounce {
    0%   { transform: scale(0); opacity: 0; }
    60%  { transform: scale(1.15); }
    100% { transform: scale(1); opacity: 1; }
}

.pp-docs-generated {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 32px;
}

.pp-doc-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    border: 1px solid var(--pp-border);
    border-radius: 10px;
    background: #fff;
}

.pp-doc-icon { font-size: 20px; }

.pp-doc-label {
    flex: 1;
    font-size: 14px;
    font-weight: 500;
}

.pp-next-steps {
    background: #f8fafc;
    border: 1px solid var(--pp-border);
    border-radius: 14px;
    padding: 24px 28px;
    margin-bottom: 24px;
}

.pp-next-steps h3 {
    font-family: var(--pp-font-h);
    font-weight: 700;
    font-size: 17px;
    color: var(--pp-blue);
    margin-bottom: 16px;
}

.pp-next-steps ol {
    list-style: none;
    counter-reset: steps;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.pp-next-steps li {
    counter-increment: steps;
    display: flex;
    gap: 14px;
    align-items: flex-start;
    font-size: 14px;
    line-height: 1.6;
}

.pp-next-steps li::before {
    content: counter(steps);
    background: var(--pp-blue);
    color: #fff;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    font-family: var(--pp-font-h);
    flex-shrink: 0;
    margin-top: 1px;
}

.pp-btn-guichet {
    display: inline-block;
    margin-top: 8px;
    padding: 10px 20px;
    background: #1e3a5f;
    color: #fff !important;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none;
    transition: background .2s;
}

.pp-btn-guichet:hover { background: #2c5282; }

.pp-siret-input-row {
    display: flex;
    gap: 10px;
    margin-top: 10px;
    flex-wrap: wrap;
}

.pp-siret-input-row input {
    padding: 10px 14px;
    border: 2px solid var(--pp-border);
    border-radius: 8px;
    font-size: 15px;
    font-family: var(--pp-font-b);
    letter-spacing: 1px;
    width: 180px;
}

.pp-siret-input-row button,
#pp-siret-section button {
    padding: 10px 18px;
    background: var(--pp-green);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-family: var(--pp-font-b);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background .2s;
}

/* ── BOUTONS ─────────────────────────────────────── */
.pp-btn-next {
    display: block;
    width: 100%;
    padding: 15px 24px;
    background: var(--pp-blue);
    color: #fff;
    border: none;
    border-radius: 12px;
    font-family: var(--pp-font-h);
    font-weight: 700;
    font-size: 16px;
    cursor: pointer;
    transition: all .25s;
    margin-top: 28px;
    letter-spacing: 0.2px;
}

.pp-btn-next:hover:not(:disabled) {
    background: var(--pp-blue-mid);
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(30,58,95,.25);
}

.pp-btn-next:disabled {
    background: #e2e8f0;
    color: #aaa;
    cursor: not-allowed;
}

.pp-btn-primary {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 22px;
    background: var(--pp-blue);
    color: #fff;
    border: none;
    border-radius: 10px;
    font-family: var(--pp-font-b);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all .2s;
    text-decoration: none;
}

.pp-btn-primary:hover { background: var(--pp-blue-mid); transform: translateY(-1px); }

.pp-btn-secondary {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 11px 20px;
    background: #fff;
    color: var(--pp-blue);
    border: 2px solid var(--pp-blue);
    border-radius: 10px;
    font-family: var(--pp-font-b);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all .2s;
    text-decoration: none;
}

.pp-btn-download {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 7px 14px;
    background: #f0f7ff;
    color: var(--pp-blue);
    border: 1px solid var(--pp-blue);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: all .2s;
}

.pp-btn-download:hover { background: var(--pp-blue); color: #fff; }

.pp-btn-generate {
    display: block;
    width: 100%;
    padding: 16px;
    font-size: 16px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--pp-blue) 0%, var(--pp-blue-mid) 100%);
}

/* ── ALERTS ──────────────────────────────────────── */
.pp-alerts {
    padding: 14px 18px;
    border-radius: 10px;
    font-size: 14px;
    margin-bottom: 20px;
}

.pp-alerts.success { background: #d1fae5; border: 1px solid #6ee7b7; color: #065f46; }
.pp-alerts.error   { background: #fee2e2; border: 1px solid #fca5a5; color: #991b1b; }
.pp-alerts.info    { background: #dbeafe; border: 1px solid #93c5fd; color: #1e40af; }

/* ── LOADING ─────────────────────────────────────── */
.pp-loading {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,.9);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    border-radius: var(--pp-radius);
    z-index: 200;
}

.pp-spinner {
    width: 42px;
    height: 42px;
    border: 4px solid #e2e8f0;
    border-top-color: var(--pp-blue);
    border-radius: 50%;
    animation: pp-spin .8s linear infinite;
}

@keyframes pp-spin { to { transform: rotate(360deg); } }

/* ── TRANSITIONS ENTRE ÉTAPES ────────────────────── */
.pp-step {
    animation: pp-fade-in .35s ease;
}

@keyframes pp-fade-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── RESPONSIVE ──────────────────────────────────── */
@media (max-width: 600px) {
    .pp-wizard-body { padding: 24px 20px 36px; }
    .pp-progress-bar-outer { padding: 18px 20px 0; }
    .pp-steps-strip { gap: 2px; }
    .pp-step-dot { min-width: 28px; height: 28px; font-size: 12px; }
    .pp-recapitulatif { grid-template-columns: 1fr; }
    .pp-sim-results { grid-template-columns: 1fr 1fr; }
    .pp-radio-group { grid-template-columns: 1fr; }
    .pp-statuts-grid { grid-template-columns: 1fr; }
}
