// configure-screen.jsx — Étape /configure
// Configuration de la location : kilométrage + assurance + sidebar panier.
// Iso fonctionnel du ConfigureView.vue, restylé charte Van-Away clear (Barlow + teal).

const T_TEAL = '#11978f';
const T_TEAL_HV = '#1c7d77';
const T_INK = '#042828';
const T_MUTED = '#5B7A82';
const T_CREAM = '#F4F2EC';
const T_SURFACE = '#FFFFFF';
const T_BORDER = 'rgba(4,40,40,0.08)';
const T_BORDER_S = 'rgba(4,40,40,0.14)';
const T_DANGER = '#C0392B';
const T_BG_TEAL = '#e7fcfb';

// ─── Mock data ────────────────────────────────────────────────
const MOCK_VEHICLE = {
  id: 1,
  display_name: 'Volkswagen California Ocean',
  category_name: 'Campervans',
  brand: 'Volkswagen',
  model: 'California Ocean',
  nb_places: 4,
  gearbox: 'Automatique',
  energy: 'Diesel',
  pricePerDay: 120,
  picture: 'https://www.van-away.com/wp-content/uploads/malaga-2p-1600x923-1-1024x591.png'
};

const MOCK_SEARCH = {
  agencyName: 'Van-Away Bordeaux - Bordeaux',
  startDate: '2026-07-12',
  endDate: '2026-07-20',
  days: 8
};

const MILEAGE_LEVELS = [
{ id: 1, label: 'Eco', mileage: 100, unlimited: false, amount: 0, desc: 'Idéal pour de courts trajets et séjours statiques.' },
{ id: 2, label: 'Confort', mileage: 200, unlimited: false, amount: 4.90, desc: 'Le bon compromis pour une semaine de roadtrip régional.' },
{ id: 3, label: 'Liberté', mileage: 0, unlimited: true, amount: 9.90, desc: 'Roulez sans compter — la formule des grands itinéraires.', recommended: true }];


const INSURANCE_PACKAGES = [
{
  id: 1, name: 'Pack Standard', amount: 0, pricing_type: 'total',
  franchise: 2000, caution: 2000, highlights: null,
  tagline: 'La couverture incluse de série sur votre véhicule.',
  features: {
    tous_risques: 'Inclus',
    assistance: '24/7',
    conducteurs: '1 conducteur',
    franchise: '2 000 €',
    caution: '2 000 €',
    reparation_vitrage: 'Non',
    reparation_pneus: 'Non',
    remplacement_vitrage: 'Non',
    remplacement_pneus: 'Non'
  }
},
{
  id: 2, name: 'Pack Sécurité', amount: 19, pricing_type: 'per_day',
  franchise: 900, caution: 1500, highlights: 'Recommandé',
  tagline: 'Le bon équilibre tranquillité / budget.',
  features: {
    tous_risques: 'Inclus',
    assistance: '24/7',
    conducteurs: '2 conducteurs',
    franchise: '900 €',
    caution: '1 500 €',
    reparation_vitrage: 'Inclus',
    reparation_pneus: 'Inclus',
    remplacement_vitrage: 'Non',
    remplacement_pneus: 'Non'
  }
},
{
  id: 3, name: 'Pack Sérénité', amount: 39, pricing_type: 'per_day',
  franchise: 390, caution: 900, highlights: null,
  tagline: 'Zéro stress — vous voyagez la tête libre.',
  features: {
    tous_risques: 'Inclus',
    assistance: '24/7',
    conducteurs: 'Multi-conducteurs',
    franchise: '390 €',
    caution: '900 €',
    reparation_vitrage: 'Inclus',
    reparation_pneus: 'Inclus',
    remplacement_vitrage: 'Inclus',
    remplacement_pneus: 'Inclus'
  }
}];


const COMPARE_ROWS = [
{ key: 'tous_risques', label: 'Assurance tous risques' },
{ key: 'assistance', label: 'Assistance 24/7' },
{ key: 'conducteurs', label: 'Conducteurs' },
{ key: 'franchise', label: 'Franchise' },
{ key: 'caution', label: 'Caution' },
{ key: 'reparation_vitrage', label: 'Réparation vitrage' },
{ key: 'reparation_pneus', label: 'Réparation pneus' },
{ key: 'remplacement_vitrage', label: 'Remplacement vitrage' },
{ key: 'remplacement_pneus', label: 'Remplacement pneus' }];


// ─── Helpers ──────────────────────────────────────────────────
function fmtPrice(n, dec = 2) {
  return (n ?? 0).toFixed(dec).replace('.', ',') + ' €';
}
function fmtDate(iso) {
  if (!iso) return '';
  const d = new Date(iso);
  return d.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short', year: 'numeric' });
}
function CheckIcon({ size = 14, color = T_TEAL }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke={color} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round">
      <path d="M5 13l4 4L19 7" />
    </svg>);

}
function CrossIcon({ size = 14, color = '#C0392B' }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke={color} strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
      <path d="M18 6L6 18M6 6l12 12" />
    </svg>);

}

// Determines if a feature is "non couvert" / "non" -> show cross
function isNegative(val) {
  if (!val) return true;
  const s = String(val).toLowerCase();
  return s.startsWith('non') || s === '—';
}
function isPositive(val) {
  if (!val) return false;
  const s = String(val).toLowerCase();
  return s === 'inclus' || s.includes('inclus') || s === 'couvert' || s.startsWith('aucune') || s.startsWith('annulation');
}

// ─── Mileage card (3 cards en grille) ──────────────────────────
function MileageCard({ mileage, days, selected, onSelect, compact, cardStyle = 'v1' }) {
  const totalKm = mileage.unlimited ? '∞' : mileage.mileage * days;
  const pricePerDay = mileage.amount;
  const priceTotal = pricePerDay * days;
  const isFree = pricePerDay === 0;
  const isV2 = cardStyle === 'v2';

  if (isV2) {
    return (
      <button
        type="button"
        onClick={() => onSelect(mileage.id)}
        className={`va-mile va-mile-v2 ${selected ? 'is-selected' : ''} ${compact ? 'is-compact' : ''}`}>

        <div className="va-mile-v2-head">
          <span className="va-mile-radio" aria-hidden="true">
            {selected && <span className="va-mile-radio-dot" />}
          </span>
          <div className="va-mile-v2-km">
            {mileage.unlimited ?
              <span className="va-mile-v2-km-big">Kilométrage illimité</span> :
              <>
                <span className="va-mile-v2-km-big">{mileage.mileage} km</span>
                <span className="va-mile-v2-km-sub">/ jour</span>
              </>
            }
          </div>
        </div>

        <div className="va-mile-total va-mile-v2-total">
          {!mileage.unlimited &&
            <div className="va-mile-total-row">
              <span>Total inclus</span>
              <strong>{totalKm} km</strong>
            </div>
          }
          <div className="va-mile-total-row">
            <span>Pour {days} jours</span>
            <strong className="va-mile-price">
              {isFree ? 'Inclus' : fmtPrice(priceTotal)}
            </strong>
          </div>
        </div>

        <style>{`
          .va-mile-v2{position:relative;display:flex;flex-direction:column;justify-content:space-between;text-align:left;background:${T_SURFACE};border:1.5px solid ${T_BORDER};border-radius:18px;padding:22px 22px 20px;cursor:pointer;font-family:inherit;transition:all .2s ease;width:100%;box-shadow:0 1px 2px rgba(4,40,40,.04);overflow:hidden;min-height:200px;gap:14px}
          .va-mile-v2:hover{border-color:${T_BORDER_S};transform:translateY(-2px);box-shadow:0 1px 2px rgba(4,40,40,.04),0 8px 22px rgba(4,40,40,.07)}
          .va-mile-v2.is-selected{border-color:${T_TEAL};background:#fbfffe;box-shadow:0 0 0 4px rgba(17,151,143,.1),0 8px 22px rgba(17,151,143,.08)}
          .va-mile-v2.is-compact{min-height:0;padding:16px;gap:10px}
          .va-mile-v2 .va-mile-radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid ${T_BORDER_S};background:${T_SURFACE};display:flex;align-items:center;justify-content:center;transition:all .2s}
          .va-mile-v2.is-selected .va-mile-radio{border-color:${T_TEAL};background:${T_TEAL}}
          .va-mile-v2 .va-mile-radio-dot{width:8px;height:8px;border-radius:50%;background:#fff}
          .va-mile-v2-head{display:flex;align-items:center;gap:14px}
          .va-mile-v2-km{display:flex;align-items:baseline;gap:6px;flex-wrap:nowrap;min-width:0}
          .va-mile-v2-km-big{font-size:22px;font-weight:900;color:${T_TEAL};letter-spacing:-.01em;line-height:1.05;white-space:nowrap}
          .va-mile-v2-km-sub{font-size:13px;color:${T_MUTED};font-weight:600}
          .va-mile-v2-total{display:flex;flex-direction:column;gap:8px;padding-top:14px;border-top:1px dashed ${T_BORDER}}
          .va-mile-v2-total .va-mile-total-row{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:${T_MUTED}}
          .va-mile-v2-total .va-mile-total-row strong{font-size:15px;font-weight:700;color:${T_INK}}
          .va-mile-v2-total .va-mile-price{color:${T_TEAL} !important;font-weight:900 !important;font-size:16px !important}
          .va-mile-v2.is-compact .va-mile-v2-km-big{font-size:19px}
        `}</style>
      </button>
    );
  }

  return (
    <button
      type="button"
      onClick={() => onSelect(mileage.id)}
      className={`va-mile ${selected ? 'is-selected' : ''} ${compact ? 'is-compact' : ''}`}>
      
      <div className="va-mile-head">
        <span className="va-mile-radio" aria-hidden="true">
          {selected && <span className="va-mile-radio-dot" />}
        </span>
      </div>

      <div className="va-mile-km">
        {mileage.unlimited ?
        <>
            <span className="va-mile-km-big">Kilométrage</span>
            <span className="va-mile-km-strong">illimité</span>
          </> :

        <>
            <span className="va-mile-km-big">{mileage.mileage} km</span>
            <span className="va-mile-km-sub">/ jour</span>
          </>
        }
      </div>

      <p className="va-mile-desc">{mileage.desc}</p>

      <div className="va-mile-total">
        {!mileage.unlimited &&
        <div className="va-mile-total-row">
            <span>Total inclus</span>
            <strong>{totalKm} km</strong>
          </div>
        }
        <div className="va-mile-total-row">
          <span>Pour {days} jours</span>
          <strong className="va-mile-price">
            {isFree ? 'Inclus' : fmtPrice(priceTotal)}
          </strong>
        </div>
      </div>

      <style>{`
        .va-mile{position:relative;display:flex;flex-direction:column;gap:10px;text-align:left;background:${T_SURFACE};border:1.5px solid ${T_BORDER};border-radius:18px;padding:18px 18px 16px;cursor:pointer;font-family:inherit;transition:all .2s ease;width:100%;box-shadow:0 1px 2px rgba(4,40,40,.04);overflow:hidden}
        .va-mile:hover{border-color:${T_BORDER_S};transform:translateY(-2px);box-shadow:0 1px 2px rgba(4,40,40,.04),0 8px 22px rgba(4,40,40,.07)}
        .va-mile.is-selected{border-color:${T_TEAL};background:#fbfffe;box-shadow:0 0 0 4px rgba(17,151,143,.1),0 8px 22px rgba(17,151,143,.08)}
        .va-mile.has-tag{padding-top:34px}
        .va-mile-tag{position:absolute;top:0;left:0;right:0;background:${T_TEAL};color:#fff;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:1.4px;padding:5px 10px;text-align:center;display:block}
        .va-mile-head{display:flex;align-items:center;justify-content:flex-end;gap:10px}
        .va-mile-name{font-size:14px;font-weight:900;color:${T_INK};text-transform:uppercase;letter-spacing:.5px}
        .va-mile-radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid ${T_BORDER_S};background:${T_SURFACE};display:flex;align-items:center;justify-content:center;transition:all .2s}
        .va-mile.is-selected .va-mile-radio{border-color:${T_TEAL};background:${T_TEAL}}
        .va-mile-radio-dot{width:8px;height:8px;border-radius:50%;background:#fff}

        .va-mile-km{display:flex;align-items:baseline;gap:6px;padding:6px 0 2px;border-bottom:1px dashed ${T_BORDER}}
        .va-mile-km-big{font-size:30px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em;line-height:1}
        .va-mile-km-strong{font-size:30px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em;line-height:1}
        .va-mile-km-sub{font-size:13px;color:${T_MUTED};font-weight:600}

        .va-mile-desc{font-size:12.5px;color:${T_MUTED};line-height:1.45;margin:0;min-height:36px}

        .va-mile-total{display:flex;flex-direction:column;gap:4px;padding-top:10px;border-top:1px dashed ${T_BORDER}}
        .va-mile-total-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:${T_MUTED}}
        .va-mile-total-row strong{font-size:13px;font-weight:700;color:${T_INK}}
        .va-mile-price{color:${T_TEAL} !important;font-weight:900 !important;font-size:14px !important}

        .va-mile.is-compact{padding:14px}
        .va-mile.is-compact .va-mile-km-big,.va-mile.is-compact .va-mile-km-strong{font-size:24px}
        .va-mile.is-compact .va-mile-desc{min-height:0}
      `}</style>
    </button>);

}

// ─── Insurance card "forfait" (variante visuelle alignée sur MileageCard) ──
function InsuranceCardLight({ pkg, days, selected, onSelect, compact }) {
  const isFree = pkg.amount === 0;
  const priceTotal = isFree ? 0 : pkg.pricing_type === 'per_day' ? pkg.amount * days : pkg.amount;
  // 4 features clés mises en avant dans la card (vs. 9 dans le tableau)
  const HIGHLIGHTS = [
  { key: 'franchise', label: 'Franchise' },
  { key: 'caution', label: 'Caution' },
  { key: 'reparation_vitrage', label: 'Réparation vitrage' },
  { key: 'remplacement_pneus', label: 'Remplacement pneus' }];


  return (
    <button
      type="button"
      onClick={() => onSelect(pkg.id)}
      className={`va-insl ${selected ? 'is-selected' : ''} ${compact ? 'is-compact' : ''} ${pkg.highlights ? 'has-tag' : ''}`}>
      
      {pkg.highlights &&
      <span className="va-insl-tag">{pkg.highlights}</span>
      }
      <div className="va-insl-head">
        <span className="va-insl-name">{pkg.name}</span>
        <span className="va-insl-radio" aria-hidden="true">
          {selected && <span className="va-insl-radio-dot" />}
        </span>
      </div>

      <div className="va-insl-price">
        {isFree ?
        <>
            <span className="va-insl-price-big">Inclus</span>
            <span className="va-insl-price-strong">de série</span>
          </> :

        <>
            <span className="va-insl-price-big">{fmtPrice(pkg.amount)}</span>
            <span className="va-insl-price-sub">/ jour</span>
          </>
        }
      </div>

      <p className="va-insl-desc">{pkg.tagline}</p>

      <ul className="va-insl-list">
        {HIGHLIGHTS.map((h) => {
          const v = pkg.features[h.key];
          const neg = isNegative(v);
          return (
            <li key={h.key} className={`va-insl-li ${neg ? 'is-neg' : ''}`}>
              <span className="va-insl-li-icon">
                {neg ? <CrossIcon size={11} /> : <CheckIcon size={11} color={T_TEAL} />}
              </span>
              <span className="va-insl-li-label">{h.label}</span>
              <span className="va-insl-li-val">{v}</span>
            </li>);

        })}
      </ul>

      <div className="va-insl-total">
        <div className="va-insl-total-row">
          <span>Caution</span>
          <strong>{fmtPrice(pkg.caution, 0)}</strong>
        </div>
        <div className="va-insl-total-row">
          <span>Pour {days} jours</span>
          <strong className="va-insl-price-final">
            {isFree ? 'Inclus' : fmtPrice(priceTotal)}
          </strong>
        </div>
      </div>

      <style>{`
        .va-insl{position:relative;display:flex;flex-direction:column;gap:10px;text-align:left;background:${T_SURFACE};border:1.5px solid ${T_BORDER};border-radius:18px;padding:18px 18px 16px;cursor:pointer;font-family:inherit;transition:all .2s ease;width:100%;box-shadow:0 1px 2px rgba(4,40,40,.04);overflow:hidden}
        .va-insl:hover{border-color:${T_BORDER_S};transform:translateY(-2px);box-shadow:0 1px 2px rgba(4,40,40,.04),0 8px 22px rgba(4,40,40,.07)}
        .va-insl.is-selected{border-color:${T_TEAL};background:#fbfffe;box-shadow:0 0 0 4px rgba(17,151,143,.1),0 8px 22px rgba(17,151,143,.08)}
        .va-insl.has-tag{padding-top:34px}
        .va-insl-tag{position:absolute;top:0;left:0;right:0;background:${T_TEAL};color:#fff;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:1.4px;padding:5px 10px;text-align:center;display:block}
        .va-insl-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
        .va-insl-name{font-size:14px;font-weight:900;color:${T_INK};text-transform:uppercase;letter-spacing:.5px}
        .va-insl-radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid ${T_BORDER_S};background:${T_SURFACE};display:flex;align-items:center;justify-content:center;transition:all .2s}
        .va-insl.is-selected .va-insl-radio{border-color:${T_TEAL};background:${T_TEAL}}
        .va-insl-radio-dot{width:8px;height:8px;border-radius:50%;background:#fff}

        .va-insl-price{display:flex;align-items:baseline;gap:6px;padding:6px 0 2px;border-bottom:1px dashed ${T_BORDER}}
        .va-insl-price-big{font-size:30px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em;line-height:1}
        .va-insl-price-strong{font-size:18px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em;line-height:1}
        .va-insl-price-sub{font-size:13px;color:${T_MUTED};font-weight:600}

        .va-insl-desc{font-size:12.5px;color:${T_MUTED};line-height:1.45;margin:0;min-height:36px}

        .va-insl-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0;border-top:1px dashed ${T_BORDER};padding-top:8px}
        .va-insl-li{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:7px;padding:5px 0;font-size:11.5px;color:${T_INK};border-bottom:1px dotted ${T_BORDER}}
        .va-insl-li:last-child{border-bottom:none}
        .va-insl-li-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#fff;border:1px solid ${T_BORDER}}
        .va-insl-li-label{color:${T_MUTED};font-weight:600}
        .va-insl-li-val{color:${T_INK};font-weight:700;text-align:right;font-size:11px}
        .va-insl-li.is-neg .va-insl-li-val{color:${T_MUTED};font-weight:400;text-decoration:line-through;text-decoration-color:rgba(192,57,43,.4)}

        .va-insl-total{display:flex;flex-direction:column;gap:4px;padding-top:10px;border-top:1px dashed ${T_BORDER}}
        .va-insl-total-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:${T_MUTED}}
        .va-insl-total-row strong{font-size:13px;font-weight:700;color:${T_INK}}
        .va-insl-price-final{color:${T_TEAL} !important;font-weight:900 !important;font-size:14px !important}

        .va-insl.is-compact{padding:14px}
        .va-insl.is-compact .va-insl-price-big{font-size:24px}
        .va-insl.is-compact .va-insl-price-strong{font-size:16px}
        .va-insl.is-compact .va-insl-desc{min-height:0}
      `}</style>
    </button>);

}

// ─── Insurance compare table (cards empilées + tableau comparatif) ──
function InsuranceCompare({ packages, selectedId, onSelect, days, compact }) {
  return (
    <div className={`va-ins ${compact ? 'is-compact' : ''}`}>
      {/* Mode mobile : cards empilées simples */}
      {compact ?
      <div className="va-ins-stack">
          {packages.map((pkg) =>
        <InsuranceMobileCard
          key={pkg.id}
          pkg={pkg}
          days={days}
          selected={selectedId === pkg.id}
          onSelect={onSelect} />

        )}
        </div> :

      <>
          {/* En-tête : 3 colonnes packages */}
          <div className="va-ins-head">
            <div className="va-ins-head-cell va-ins-head-empty" style={{ borderColor: "rgb(235, 238, 238)", backgroundColor: "rgb(251, 255, 254)" }}>
              <span className="va-ins-head-eyebrow">Comparez nos formules</span>
              <span className="va-ins-head-help">Choisissez votre niveau de couverture pour ce roadtrip.</span>
            </div>
            {packages.map((pkg) => {
            const isSelected = selectedId === pkg.id;
            const isFree = pkg.amount === 0;
            const totalForTrip = isFree ? 0 : pkg.pricing_type === 'per_day' ? pkg.amount * days : pkg.amount;
            return (
              <button
                key={pkg.id}
                type="button"
                onClick={() => onSelect(pkg.id)}
                className={`va-ins-head-cell va-ins-card ${isSelected ? 'is-selected' : ''} ${pkg.highlights ? 'is-recommended' : ''}`} style={{ borderWidth: "0px 0.8px 0px 0px", borderStyle: "solid", borderColor: "rgb(235, 238, 238)" }}>
                
                  {pkg.highlights && <span className="va-ins-card-tag">{pkg.highlights}</span>}
                  <div className="va-ins-card-head">
                    <span className="va-ins-card-name">{pkg.name}</span>
                    <span className="va-ins-card-radio" aria-hidden="true">
                      {isSelected && <span className="va-ins-card-radio-dot" />}
                    </span>
                  </div>
                  <p className="va-ins-card-tag-line">{pkg.tagline}</p>
                  <div className="va-ins-card-price">
                    {isFree ?
                  <>
                        <span className="va-ins-card-free">Inclus</span>
                        <span className="va-ins-card-price-sub">dans votre location</span>
                      </> :

                  <>
                        <span className="va-ins-card-amount">{fmtPrice(pkg.amount)}</span>
                        <span className="va-ins-card-price-sub">/ jour</span>
                        <span className="va-ins-card-trip">soit {fmtPrice(totalForTrip)} pour {days} j</span>
                      </>
                  }
                  </div>
                  <span className={`va-ins-card-cta ${isSelected ? 'is-on' : ''}`}>
                    {isSelected ?
                  <>
                        <CheckIcon size={14} color="#fff" />
                        Formule sélectionnée
                      </> :
                  'Choisir cette formule'}
                  </span>
                </button>);

          })}
          </div>

          {/* Lignes comparatives */}
          <div className="va-ins-table">
            {COMPARE_ROWS.map((row, idx) =>
          <div className={`va-ins-row ${idx % 2 ? 'is-alt' : ''}`} key={row.key}>
                <div className="va-ins-row-label">{row.label}</div>
                {packages.map((pkg) => {
              const v = pkg.features[row.key];
              const neg = isNegative(v);
              const pos = isPositive(v);
              return (
                <div className={`va-ins-row-cell ${selectedId === pkg.id ? 'is-selected' : ''}`} key={pkg.id}>
                      <span className="va-ins-row-icon">
                        {neg ? <CrossIcon size={14} /> : <CheckIcon size={14} color={T_TEAL} />}
                      </span>
                      <span className={`va-ins-row-text ${neg ? 'is-neg' : ''} ${pos ? 'is-pos' : ''}`}>
                        {v}
                      </span>
                    </div>);

            })}
              </div>
          )}
            <div className="va-ins-row va-ins-row-deposit">
              <div className="va-ins-row-label">CAUTION</div>
              {packages.map((pkg) =>
            <div className={`va-ins-row-cell ${selectedId === pkg.id ? 'is-selected' : ''}`} key={pkg.id}>
                  <span className="va-ins-row-text"><strong>{fmtPrice(pkg.caution, 0)}</strong></span>
                </div>
            )}
            </div>
          </div>
        </>
      }

      <style>{`
        .va-ins{display:block;background:${T_SURFACE};border:1px solid ${T_BORDER};border-radius:20px;box-shadow:0 1px 2px rgba(4,40,40,.04),0 4px 16px rgba(4,40,40,.05);overflow:hidden}
        .va-ins.is-compact{}

        /* Header grid : 1 col label + 3 cols packages */
        .va-ins-head{display:grid;grid-template-columns:240px repeat(3, minmax(0, 1fr));gap:0;background:${T_SURFACE};border-radius:20px 20px 0 0;overflow:hidden}
        .va-ins-head-cell{padding:24px 18px 18px;display:flex;flex-direction:column;gap:8px;text-align:left;background:${T_SURFACE};font-family:inherit;cursor:pointer;position:relative;transition:background .2s ease}
        .va-ins-head-empty{cursor:default;background:#a5dfdc;justify-content:center;border-right:0.8px solid ${T_INK}}
        .va-ins-head-eyebrow{font-size:11px;font-weight:900;color:${T_TEAL};text-transform:uppercase;letter-spacing:1.5px}
        .va-ins-head-help{font-size:13px;color:${T_MUTED};line-height:1.4}

        /* Insurance card (header cell) */
        .va-ins-card{border:none;outline:none}
        .va-ins-card:hover{background:#fbfffe}
        .va-ins-card.is-selected{background:#fbfffe;box-shadow:inset 0 -3px 0 0 ${T_TEAL}}
        .va-ins-card-tag{position:absolute;top:0;left:50%;transform:translateX(-50%);background:${T_TEAL};color:#fff;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:1px;padding:3px 12px;border-radius:0 0 8px 8px;white-space:nowrap}
        /* Tag "Recommandé" sits in the top padding band (24px) common to all cards */
        .va-ins-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
        .va-ins-card-name{font-size:18px;font-weight:900;color:${T_INK};letter-spacing:-.01em}
        .va-ins-card-radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid ${T_BORDER_S};background:${T_SURFACE};display:flex;align-items:center;justify-content:center;transition:all .2s}
        .va-ins-card.is-selected .va-ins-card-radio{border-color:${T_TEAL};background:${T_TEAL}}
        .va-ins-card-radio-dot{width:8px;height:8px;border-radius:50%;background:#fff}
        .va-ins-card-tag-line{font-size:12.5px;color:${T_MUTED};margin:0;line-height:1.4;min-height:34px}
        .va-ins-card-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px;padding-top:6px;border-top:1px dashed ${T_BORDER};min-height:58px;align-content:flex-start}
        .va-ins-card-amount{font-size:28px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em;line-height:1}
        .va-ins-card-free{font-size:24px;font-weight:900;color:${T_TEAL};letter-spacing:-.01em;line-height:1}
        .va-ins-card-price-sub{font-size:12px;color:${T_MUTED};font-weight:600}
        .va-ins-card-trip{flex-basis:100%;font-size:11.5px;color:${T_MUTED};margin-top:2px}
        .va-ins-card-cta{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:auto;padding:10px 14px;background:transparent;border:1.5px solid ${T_BORDER_S};color:${T_INK};border-radius:999px;font-size:13px;font-weight:700;transition:all .2s}
        .va-ins-card:hover .va-ins-card-cta{border-color:${T_TEAL};color:${T_TEAL}}
        .va-ins-card-cta.is-on{background:${T_TEAL};border-color:${T_TEAL};color:#fff}
        .va-ins-card:hover .va-ins-card-cta.is-on{color:#fff}

        /* Compare table */
        .va-ins-table{background:${T_SURFACE};border:1px solid ${T_BORDER};border-top:none;border-radius:0 0 20px 20px;overflow:hidden}
        .va-ins-row{display:grid;grid-template-columns:240px repeat(3, minmax(0, 1fr));align-items:center;border-top:1px solid ${T_BORDER}}
        .va-ins-row.is-alt{background:#fafaf6}
        .va-ins-row-label{padding:11px 18px;font-size:13px;font-weight:700;color:${T_INK};border-right:1px solid ${T_BORDER}}
        .va-ins-row-cell{display:flex;align-items:center;gap:8px;padding:11px 16px;border-right:1px solid ${T_BORDER};font-size:13px;color:${T_INK};transition:background .15s}
        .va-ins-row-cell:last-child{border-right:none}
        .va-ins-row-cell.is-selected{background:rgba(17,151,143,.05)}
        .va-ins-row.is-alt .va-ins-row-cell.is-selected{background:rgba(17,151,143,.08)}
        .va-ins-row-icon{flex-shrink:0;display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;border-radius:50%;background:#fff;border:1px solid ${T_BORDER}}
        .va-ins-row.is-alt .va-ins-row-icon{background:${T_SURFACE}}
        .va-ins-row-text{font-weight:600;color:${T_INK}}
        .va-ins-row-text.is-neg{color:${T_MUTED};font-weight:400;text-decoration:line-through;text-decoration-color:rgba(192,57,43,.4)}
        .va-ins-row-text.is-pos{color:${T_TEAL}}
        .va-ins-row-deposit{background:#fbfffe;border-top:2px solid ${T_TEAL};border-radius:0 0 20px 20px;overflow:hidden}
        .va-ins-row-deposit .va-ins-row-label{color:${T_INK};font-weight:900;text-transform:uppercase;font-size:11px;letter-spacing:1px}
        .va-ins-row-deposit .va-ins-row-cell{white-space:nowrap;padding:14px 16px}
        .va-ins-row-deposit .va-ins-row-text strong{font-size:15px;font-weight:900;color:${T_INK}}

        /* Mobile stack */
        .va-ins-stack{display:flex;flex-direction:column;gap:12px}
      `}</style>
    </div>);

}

function InsuranceMobileCard({ pkg, days, selected, onSelect }) {
  const isFree = pkg.amount === 0;
  const totalForTrip = isFree ? 0 : pkg.pricing_type === 'per_day' ? pkg.amount * days : pkg.amount;
  return (
    <button
      type="button"
      onClick={() => onSelect(pkg.id)}
      className={`va-insm ${selected ? 'is-selected' : ''} ${pkg.highlights ? 'is-recommended' : ''}`}>
      
      {pkg.highlights && <span className="va-insm-tag">{pkg.highlights}</span>}
      <div className="va-insm-head">
        <div>
          <div className="va-insm-name">{pkg.name}</div>
          <div className="va-insm-tagline">{pkg.tagline}</div>
        </div>
        <span className="va-insm-radio" aria-hidden="true">{selected && <span className="va-insm-radio-dot" />}</span>
      </div>

      <div className="va-insm-price">
        {isFree ?
        <span className="va-insm-free">Inclus dans votre location</span> :

        <>
            <span className="va-insm-amount">{fmtPrice(pkg.amount)}</span>
            <span className="va-insm-amount-sub">/ jour · soit {fmtPrice(totalForTrip)} pour {days} j</span>
          </>
        }
      </div>

      <ul className="va-insm-list">
        {COMPARE_ROWS.map((r) => {
          const v = pkg.features[r.key];
          const neg = isNegative(v);
          return (
            <li key={r.key} className={`va-insm-li ${neg ? 'is-neg' : ''}`}>
              <span className="va-insm-li-icon">
                {neg ? <CrossIcon size={12} /> : <CheckIcon size={12} color={T_TEAL} />}
              </span>
              <span className="va-insm-li-label">{r.label}</span>
              <span className="va-insm-li-val">{v}</span>
            </li>);

        })}
        <li className="va-insm-li va-insm-li-deposit">
          <span className="va-insm-li-label">Caution</span>
          <span className="va-insm-li-val"><strong>{fmtPrice(pkg.caution, 0)}</strong></span>
        </li>
      </ul>

      <span className={`va-insm-cta ${selected ? 'is-on' : ''}`}>
        {selected ? <><CheckIcon size={13} color="#fff" /> Formule sélectionnée</> : 'Choisir cette formule'}
      </span>

      <style>{`
        .va-insm{position:relative;display:flex;flex-direction:column;gap:12px;background:${T_SURFACE};border:1.5px solid ${T_BORDER};border-radius:18px;padding:18px 16px 16px;cursor:pointer;font-family:inherit;text-align:left;width:100%;transition:all .2s ease;box-shadow:0 1px 2px rgba(4,40,40,.04)}
        .va-insm.is-selected{border-color:${T_TEAL};background:#fbfffe;box-shadow:0 0 0 3px rgba(17,151,143,.1)}
        .va-insm.is-recommended{padding-top:26px}
        .va-insm-tag{position:absolute;top:0;left:50%;transform:translateX(-50%);background:${T_TEAL};color:#fff;font-size:9.5px;font-weight:900;text-transform:uppercase;letter-spacing:1px;padding:3px 10px;border-radius:0 0 8px 8px;white-space:nowrap}
        .va-insm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
        .va-insm-name{font-size:17px;font-weight:900;color:${T_INK};letter-spacing:-.01em;line-height:1.1}
        .va-insm-tagline{font-size:12px;color:${T_MUTED};margin-top:3px;line-height:1.35}
        .va-insm-radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid ${T_BORDER_S};background:${T_SURFACE};display:flex;align-items:center;justify-content:center}
        .va-insm.is-selected .va-insm-radio{border-color:${T_TEAL};background:${T_TEAL}}
        .va-insm-radio-dot{width:8px;height:8px;border-radius:50%;background:#fff}

        .va-insm-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;padding:8px 0;border-top:1px dashed ${T_BORDER};border-bottom:1px dashed ${T_BORDER}}
        .va-insm-amount{font-size:24px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em;line-height:1}
        .va-insm-amount-sub{font-size:11.5px;color:${T_MUTED}}
        .va-insm-free{font-size:18px;font-weight:900;color:${T_TEAL};letter-spacing:-.01em}

        .va-insm-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0}
        .va-insm-li{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid ${T_BORDER};font-size:12px;color:${T_INK}}
        .va-insm-li:last-child{border-bottom:none}
        .va-insm-li-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#fff;border:1px solid ${T_BORDER}}
        .va-insm-li-label{color:${T_MUTED};font-weight:600}
        .va-insm-li-val{color:${T_INK};font-weight:700;text-align:right;font-size:11.5px}
        .va-insm-li.is-neg .va-insm-li-val{color:${T_MUTED};font-weight:400;text-decoration:line-through;text-decoration-color:rgba(192,57,43,.4)}
        .va-insm-li-deposit{grid-template-columns:1fr auto;background:#fbfffe;margin:6px -16px -16px;padding:10px 16px;border-radius:0 0 18px 18px;border-top:2px solid ${T_TEAL};border-bottom:none}
        .va-insm-li-deposit .va-insm-li-label{color:${T_INK};font-weight:900;text-transform:uppercase;font-size:10px;letter-spacing:1px}
        .va-insm-li-deposit .va-insm-li-val strong{font-size:14px;font-weight:900;color:${T_INK}}

        .va-insm-cta{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 14px;border:1.5px solid ${T_BORDER_S};color:${T_INK};border-radius:999px;font-size:13px;font-weight:700;transition:all .2s}
        .va-insm-cta.is-on{background:${T_TEAL};border-color:${T_TEAL};color:#fff}
      `}</style>
    </button>);

}

// ─── Cart sidebar (récap panier) ──────────────────────────────
function CartSidebar({ vehicle, search, mileage, insurance, days, compact, ready, onContinue, tripCollapsible, options, included }) {
  const vPrice = vehicle.pricePerDay * days;
  const mPrice = (mileage?.amount || 0) * days;
  const iPrice = insurance ? insurance.pricing_type === 'per_day' ? insurance.amount * days : insurance.amount : 0;
  const opts = options || [];
  const optsTotal = opts.reduce((s, o) => s + (o.total || 0), 0);
  const incl = included || [];
  const total = vPrice + mPrice + iPrice + optsTotal;
  const tva = total * 0.2 / 1.2;
  const [tripOpen, setTripOpen] = React.useState(!tripCollapsible);

  return (
    <aside className={`va-cart ${compact ? 'is-compact' : ''}`}>
      <div className="va-cart-header">
        <span className="va-cart-eyebrow">Votre sélection</span>
      </div>

      {/* Vehicle */}
      <div className="va-cart-vehicle">
        <div className="va-cart-vehicle-img">
          <img src={vehicle.picture} alt={vehicle.display_name} loading="lazy" />
          <span className="va-cart-vehicle-cat">{vehicle.category_name}</span>
        </div>
        <div className="va-cart-vehicle-name" style={{ fontWeight: "900", lineHeight: "1.5" }}>{vehicle.display_name}</div>
        <div className="va-cart-vehicle-specs">
          <span>{vehicle.nb_places} places</span>
          <span className="va-cart-dot" />
          <span>{vehicle.gearbox}</span>
          <span className="va-cart-dot" />
          <span>{vehicle.energy}</span>
        </div>
      </div>

      {/* Trip info — collapsible */}
      <div className={`va-cart-section va-cart-section-trip ${tripCollapsible ? 'is-collapsible' : ''} ${tripOpen ? 'is-open' : ''}`}>
        {tripCollapsible ?
        <button
          type="button"
          className="va-cart-section-toggle"
          onClick={() => setTripOpen(!tripOpen)}
          aria-expanded={tripOpen}>
            <span className="va-cart-section-title">Votre voyage</span>
            <span className="va-cart-section-summary">
              {fmtDate(search.startDate)} → {fmtDate(search.endDate)} · {days} j
            </span>
            <svg className="va-cart-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.4" strokeLinecap="round" strokeLinejoin="round">
              <path d="M6 9l6 6 6-6" />
            </svg>
          </button> :

        <div className="va-cart-section-title">Votre voyage</div>
        }
        {tripOpen &&
        <div className="va-cart-section-body">
            <div className="va-cart-row">
              <span>Agence</span>
              <strong>{search.agencyName.split(' - ')[1] || search.agencyName}</strong>
            </div>
            <div className="va-cart-row">
              <span>Départ</span>
              <strong>{fmtDate(search.startDate)}</strong>
            </div>
            <div className="va-cart-row">
              <span>Retour</span>
              <strong>{fmtDate(search.endDate)}</strong>
            </div>
            <div className="va-cart-row va-cart-row-pill">
              <span>Durée</span>
              <strong className="va-cart-pill">{days} jours</strong>
            </div>
          </div>
        }
      </div>

      {/* Price breakdown */}
      <div className="va-cart-section">
        <div className="va-cart-section-title">Détail du prix</div>
        <div className="va-cart-row">
          <span>Location véhicule <em>({fmtPrice(vehicle.pricePerDay)} × {days} j)</em></span>
          <strong>{fmtPrice(vPrice)}</strong>
        </div>
        {mileage &&
        <div className="va-cart-row">
            <span>Forfait km <em>· {mileage.label}</em></span>
            {mPrice === 0 ?
          <strong className="va-cart-included">Inclus</strong> :
          <strong>{fmtPrice(mPrice)}</strong>}
          </div>
        }
        {insurance &&
        <div className="va-cart-row">
            <span>Assurance <em>· {insurance.name}</em></span>
            {iPrice === 0 ?
          <strong className="va-cart-included">Inclus</strong> :
          <strong>{fmtPrice(iPrice)}</strong>}
          </div>
        }
        {!mileage &&
        <div className="va-cart-row va-cart-row-pending">
            <span>Forfait kilométrique</span>
            <em>À sélectionner</em>
          </div>
        }
        {!insurance &&
        <div className="va-cart-row va-cart-row-pending">
            <span>Assurance</span>
            <em>À sélectionner</em>
          </div>
        }

        {/* Options sélectionnées */}
        {opts.length > 0 &&
        <>
            <div className="va-cart-subhead">Options</div>
            {opts.map((o, i) =>
          <div key={i} className="va-cart-row va-cart-row-opt">
                <span>{o.name}{o.qty > 1 && <em> × {o.qty}</em>}</span>
                <strong>{fmtPrice(o.total)}</strong>
              </div>
          )}
          </>
        }

        {/* Inclus (anciennement Offert) */}
        {incl.length > 0 &&
        <>
            <div className="va-cart-subhead">Inclus</div>
            <ul className="va-cart-incl">
              {incl.map((label, i) =>
            <li key={i} className="va-cart-incl-li">
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                  <span>{label}</span>
                  <span className="va-cart-incl-tag">Inclus</span>
                </li>
            )}
            </ul>
          </>
        }
      </div>

      {/* Total */}
      <div className="va-cart-total">
        <div className="va-cart-total-row">
          <span>Total</span>
          <strong>{fmtPrice(total)}</strong>
        </div>
        <div className="va-cart-total-tva">dont {fmtPrice(tva)} de TVA (20 %)</div>
        {!compact &&
        <button
          type="button"
          className={`va-cart-cta ${ready ? 'is-ready' : ''}`}
          disabled={!ready}
          onClick={onContinue}>
          
            <span>{ready ? 'Continuer' : 'Sélectionnez vos options'}</span>
            {ready &&
          <svg width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2.4" viewBox="0 0 24 24">
                <path strokeLinecap="round" strokeLinejoin="round" d="M5 12h14M13 5l7 7-7 7" />
              </svg>
          }
          </button>
        }
      </div>

      <style>{`
        .va-cart{background:${T_SURFACE};border:1px solid ${T_BORDER};border-radius:20px;overflow:hidden;box-shadow:0 1px 2px rgba(4,40,40,.04),0 8px 24px rgba(4,40,40,.06)}
        .va-cart.is-compact{border-radius:16px}
        .va-cart-header{padding:16px 18px 0}
        .va-cart-eyebrow{font-size:11px;font-weight:900;color:${T_TEAL};text-transform:uppercase;letter-spacing:1.4px}

        .va-cart-vehicle{padding:12px 18px 14px;border-bottom:1px solid ${T_BORDER}}
        .va-cart-vehicle-img{position:relative;border-radius:12px;overflow:hidden;background:${T_CREAM};aspect-ratio:16/10;margin:8px 0 10px}
        .va-cart-vehicle-img img{width:100%;height:100%;object-fit:cover;display:block}
        .va-cart-vehicle-cat{position:absolute;top:10px;left:10px;background:${T_SURFACE};color:${T_TEAL};font-size:10.5px;font-weight:900;text-transform:uppercase;letter-spacing:1px;padding:4px 9px;border-radius:999px}
        .va-cart-vehicle-name{font-size:15px;font-weight:900;color:${T_INK};letter-spacing:-.01em}
        .va-cart-vehicle-specs{display:flex;align-items:center;gap:6px;font-size:11.5px;color:${T_MUTED};font-weight:600;margin-top:4px;flex-wrap:wrap}
        .va-cart-dot{width:3px;height:3px;border-radius:50%;background:${T_MUTED};opacity:.6}

        .va-cart-section{padding:14px 18px;border-bottom:1px solid ${T_BORDER}}
        .va-cart-section-title{font-size:11px;font-weight:900;color:${T_MUTED};text-transform:uppercase;letter-spacing:1.2px;margin-bottom:8px}
        .va-cart-section-trip.is-collapsible{padding:0}
        .va-cart-section-trip.is-collapsible.is-open{padding-bottom:14px}
        .va-cart-section-toggle{display:flex;align-items:center;gap:10px;width:100%;padding:14px 18px;background:transparent;border:none;cursor:pointer;font-family:inherit;text-align:left}
        .va-cart-section-toggle .va-cart-section-title{margin-bottom:0;flex-shrink:0}
        .va-cart-section-summary{flex:1;font-size:12px;color:${T_INK};font-weight:600;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .va-cart-section-trip.is-open .va-cart-section-summary{visibility:hidden}
        .va-cart-chevron{flex-shrink:0;color:${T_MUTED};transition:transform .25s ease}
        .va-cart-section-trip.is-open .va-cart-chevron{transform:rotate(180deg);color:${T_TEAL}}
        .va-cart-section-toggle:hover .va-cart-chevron{color:${T_TEAL}}
        .va-cart-section-body{padding:0 18px}
        .va-cart-subhead{font-size:10.5px;font-weight:900;color:${T_TEAL};text-transform:uppercase;letter-spacing:1.4px;margin:12px 0 4px;padding-top:10px;border-top:1px dashed ${T_BORDER}}
        .va-cart-row-opt span{color:${T_INK};font-weight:600}
        .va-cart-row-opt em{font-style:normal;color:${T_MUTED};font-weight:400}
        .va-cart-incl{list-style:none;padding:0;margin:4px 0 0}
        .va-cart-incl-li{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:${T_INK};line-height:1.35}
        .va-cart-incl-li > span:first-of-type{flex:1}
        .va-cart-incl-li svg{flex-shrink:0}
        .va-cart-incl-tag{display:inline-flex;align-items:center;background:${T_TEAL};color:#fff;font-size:9.5px;font-weight:900;text-transform:uppercase;letter-spacing:.8px;padding:3px 8px;border-radius:999px;flex-shrink:0}
        .va-cart-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:5px 0;font-size:13px;color:${T_MUTED}}
        .va-cart-row strong{color:${T_INK};font-weight:700;text-align:right;font-size:13px}
        .va-cart-row em{font-style:normal;color:${T_MUTED};font-size:11.5px;font-weight:400}
        .va-cart-included{color:${T_TEAL} !important;font-weight:900 !important;font-size:12px !important;text-transform:uppercase;letter-spacing:.5px}
        .va-cart-row-pending em{color:${T_TEAL};font-weight:600;font-style:italic}
        .va-cart-row-pill{align-items:center}
        .va-cart-pill{background:${T_BG_TEAL};color:${T_TEAL} !important;font-weight:900 !important;padding:3px 10px;border-radius:999px;font-size:12px !important}

        .va-cart-total{padding:16px 18px;background:#fbfffe}
        .va-cart-total-row{display:flex;justify-content:space-between;align-items:baseline}
        .va-cart-total-row span{font-size:13px;font-weight:900;color:${T_INK};text-transform:uppercase;letter-spacing:1.2px}
        .va-cart-total-row strong{font-size:26px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em}
        .va-cart-total-tva{font-size:10.5px;color:${T_MUTED};text-align:right;margin-top:2px}

        .va-cart-cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;padding:13px 18px;background:${T_BORDER};color:${T_MUTED};border:none;border-radius:999px;font-family:inherit;font-size:14px;font-weight:700;cursor:not-allowed;transition:all .25s cubic-bezier(.4,0,.2,1)}
        .va-cart-cta.is-ready{background:${T_TEAL};color:#fff;cursor:pointer;box-shadow:0 4px 14px rgba(17,151,143,.3)}
        .va-cart-cta.is-ready:hover{background:${T_TEAL_HV};transform:translateY(-1px);box-shadow:0 8px 22px rgba(17,151,143,.4)}
        .va-cart-cta svg{transition:transform .2s}
        .va-cart-cta.is-ready:hover svg{transform:translateX(3px)}
      `}</style>
    </aside>);

}

// ─── Bottom bar (sticky, total + CTA) ──────────────────────────
// `desktopHidden` : ne s'affiche qu'en mobile (compact). Sur desktop, le CTA
// passe en bas de la sidebar (cf. <SidebarContinueCTA/>).
function BottomBar({ total, days, ready, onContinue, compact, desktopHidden }) {
  if (desktopHidden && !compact) return null;
  const tva = total * 0.2 / 1.2;
  return (
    <div className={`va-bbar ${compact ? 'is-compact' : ''}`}>
      <div className="va-bbar-inner">
        <div className="va-bbar-info">
          <span className="va-bbar-info-label">Total pour {days} jours</span>
          <span className="va-bbar-info-amount">{fmtPrice(total)}</span>
          <span className="va-bbar-info-tva">dont {fmtPrice(tva)} de TVA</span>
        </div>
        <button
          type="button"
          className={`va-bbar-cta ${ready ? 'is-ready' : ''}`}
          disabled={!ready}
          onClick={onContinue}>
          
          <span>Continuer</span>
          <svg width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2.4" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" d="M5 12h14M13 5l7 7-7 7" />
          </svg>
        </button>
      </div>
      <style>{`
        .va-bbar{position:sticky;bottom:0;left:0;right:0;z-index:30;background:rgba(255,255,255,0.96);backdrop-filter:blur(10px);border-top:1px solid ${T_BORDER_S};box-shadow:0 -6px 24px rgba(4,40,40,.06)}
        .va-bbar-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 24px;max-width:1320px;margin:0 auto}
        .va-bbar.is-compact .va-bbar-inner{padding:10px 14px}

        .va-bbar-info{display:flex;flex-direction:column;gap:1px}
        .va-bbar-info-label{font-size:10.5px;font-weight:900;color:${T_MUTED};text-transform:uppercase;letter-spacing:1.2px}
        .va-bbar-info-amount{font-size:22px;font-weight:900;color:${T_INK};letter-spacing:-.02em;line-height:1}
        .va-bbar-info-tva{font-size:10.5px;color:${T_MUTED}}
        .va-bbar.is-compact .va-bbar-info-amount{font-size:18px}

        .va-bbar-cta{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;background:${T_BORDER};color:${T_MUTED};border:none;border-radius:999px;font-family:inherit;font-size:14px;font-weight:700;cursor:not-allowed;transition:all .25s ease;letter-spacing:.01em}
        .va-bbar-cta.is-ready{background:${T_TEAL};color:#fff;cursor:pointer;box-shadow:0 4px 14px rgba(17,151,143,.3)}
        .va-bbar-cta.is-ready:hover{background:${T_TEAL_HV};transform:translateY(-1px);box-shadow:0 8px 22px rgba(17,151,143,.4)}
        .va-bbar-cta svg{transition:transform .2s}
        .va-bbar-cta.is-ready:hover svg{transform:translateX(3px)}
        .va-bbar.is-compact .va-bbar-cta{padding:10px 16px;font-size:13px}
      `}</style>
    </div>);

}

// ─── Mileage segmented control (tweak alt) ────────────────────
function MileageSegmented({ levels, selectedId, onSelect, days, compact }) {
  const sel = levels.find((l) => l.id === selectedId) || levels[0];
  const totalKm = sel.unlimited ? '∞' : sel.mileage * days;
  const priceTotal = (sel.amount || 0) * days;
  return (
    <div className={`va-seg ${compact ? 'is-compact' : ''}`}>
      <div className="va-seg-track" role="tablist">
        {levels.map((l) =>
        <button
          key={l.id}
          type="button"
          role="tab"
          aria-selected={selectedId === l.id}
          className={`va-seg-tab ${selectedId === l.id ? 'is-on' : ''}`}
          onClick={() => onSelect(l.id)}>
          
            <span className="va-seg-tab-name">{l.label}</span>
            <span className="va-seg-tab-km">{l.unlimited ? 'illimité' : `${l.mileage} km/j`}</span>
            {l.recommended && <span className="va-seg-tab-flag">★</span>}
          </button>
        )}
      </div>
      <div className="va-seg-summary">
        <div className="va-seg-summary-col">
          <span className="va-seg-summary-label">Total inclus</span>
          <strong>{sel.unlimited ? 'Illimité' : `${totalKm} km`}</strong>
        </div>
        <div className="va-seg-summary-col">
          <span className="va-seg-summary-label">Pour {days} jours</span>
          <strong className="va-seg-summary-price">
            {sel.amount === 0 ? 'Inclus' : fmtPrice(priceTotal)}
          </strong>
        </div>
        <div className="va-seg-summary-desc">{sel.desc}</div>
      </div>
      <style>{`
        .va-seg{background:${T_SURFACE};border:1px solid ${T_BORDER};border-radius:18px;padding:12px;display:flex;flex-direction:column;gap:14px;box-shadow:0 1px 2px rgba(4,40,40,.04)}
        .va-seg-track{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:#fafaf6;padding:6px;border-radius:14px}
        .va-seg-tab{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;background:transparent;border:none;border-radius:10px;cursor:pointer;font-family:inherit;color:${T_MUTED};transition:all .2s}
        .va-seg-tab:hover{color:${T_INK}}
        .va-seg-tab.is-on{background:${T_SURFACE};color:${T_INK};box-shadow:0 1px 2px rgba(4,40,40,.05),0 4px 12px rgba(4,40,40,.06)}
        .va-seg-tab-name{font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.5px}
        .va-seg-tab.is-on .va-seg-tab-name{color:${T_TEAL}}
        .va-seg-tab-km{font-size:11.5px;font-weight:600}
        .va-seg-tab-flag{position:absolute;top:4px;right:6px;color:${T_TEAL};font-size:10px}
        .va-seg-summary{display:grid;grid-template-columns:auto auto 1fr;gap:18px;align-items:center;padding:6px 10px}
        .va-seg.is-compact .va-seg-summary{grid-template-columns:1fr 1fr;gap:12px}
        .va-seg.is-compact .va-seg-summary-desc{grid-column:1/-1;text-align:left}
        .va-seg-summary-col{display:flex;flex-direction:column;gap:2px}
        .va-seg-summary-label{font-size:10.5px;font-weight:900;color:${T_MUTED};text-transform:uppercase;letter-spacing:1.2px}
        .va-seg-summary-col strong{font-size:18px;font-weight:900;color:${T_INK};letter-spacing:-.01em}
        .va-seg-summary-price{color:${T_TEAL} !important}
        .va-seg-summary-desc{font-size:12.5px;color:${T_MUTED};line-height:1.45;text-align:right}
      `}</style>
    </div>);

}

// ─── Cart sidebar minimal (tweak alt) ─────────────────────────
function CartSidebarMinimal({ vehicle, search, mileage, insurance, days, ready, onContinue }) {
  const vPrice = vehicle.pricePerDay * days;
  const mPrice = (mileage?.amount || 0) * days;
  const iPrice = insurance ? insurance.pricing_type === 'per_day' ? insurance.amount * days : insurance.amount : 0;
  const total = vPrice + mPrice + iPrice;
  return (
    <aside className="va-cartmin">
      <div className="va-cartmin-img">
        <img src={vehicle.picture} alt={vehicle.display_name} />
      </div>
      <div className="va-cartmin-name">{vehicle.display_name}</div>
      <div className="va-cartmin-meta">
        <span>{search.agencyName.split(' - ')[1]}</span>
        <span className="va-cartmin-dot" />
        <span>{days} jours</span>
      </div>
      <div className="va-cartmin-rows">
        <div className="va-cartmin-row"><span>Forfait km</span><strong>{mileage ? mileage.label : '—'}</strong></div>
        <div className="va-cartmin-row"><span>Assurance</span><strong>{insurance ? insurance.name : '—'}</strong></div>
      </div>
      <div className="va-cartmin-total">
        <span>Total</span>
        <strong>{fmtPrice(total)}</strong>
      </div>
      <button
        type="button"
        className={`va-cartmin-cta ${ready ? 'is-ready' : ''}`}
        disabled={!ready}
        onClick={onContinue}>
        
        <span>{ready ? 'Continuer' : 'Sélectionnez vos options'}</span>
        {ready &&
        <svg width="15" height="15" fill="none" stroke="currentColor" strokeWidth="2.4" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" d="M5 12h14M13 5l7 7-7 7" />
          </svg>
        }
      </button>
      <style>{`
        .va-cartmin{background:${T_SURFACE};border:1px solid ${T_BORDER};border-radius:20px;padding:16px;box-shadow:0 1px 2px rgba(4,40,40,.04),0 8px 24px rgba(4,40,40,.06)}
        .va-cartmin-img{border-radius:12px;overflow:hidden;aspect-ratio:16/10;margin-bottom:10px;background:${T_CREAM}}
        .va-cartmin-img img{width:100%;height:100%;object-fit:cover;display:block}
        .va-cartmin-name{font-size:14px;font-weight:900;color:${T_INK};letter-spacing:-.01em}
        .va-cartmin-meta{display:flex;align-items:center;gap:6px;font-size:11.5px;color:${T_MUTED};font-weight:600;margin-top:3px}
        .va-cartmin-dot{width:3px;height:3px;border-radius:50%;background:${T_MUTED};opacity:.6}
        .va-cartmin-rows{display:flex;flex-direction:column;gap:6px;margin:14px 0;padding:12px 0;border-top:1px dashed ${T_BORDER};border-bottom:1px dashed ${T_BORDER}}
        .va-cartmin-row{display:flex;justify-content:space-between;font-size:12.5px;color:${T_MUTED}}
        .va-cartmin-row strong{color:${T_INK};font-weight:700}
        .va-cartmin-total{display:flex;justify-content:space-between;align-items:baseline}
        .va-cartmin-total span{font-size:12px;font-weight:900;color:${T_INK};text-transform:uppercase;letter-spacing:1.2px}
        .va-cartmin-total strong{font-size:22px;font-weight:900;color:${T_TEAL};letter-spacing:-.02em}
        .va-cartmin-cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;padding:12px 18px;background:${T_BORDER};color:${T_MUTED};border:none;border-radius:999px;font-family:inherit;font-size:13.5px;font-weight:700;cursor:not-allowed;transition:all .25s cubic-bezier(.4,0,.2,1)}
        .va-cartmin-cta.is-ready{background:${T_TEAL};color:#fff;cursor:pointer;box-shadow:0 4px 14px rgba(17,151,143,.3)}
        .va-cartmin-cta.is-ready:hover{background:${T_TEAL_HV};transform:translateY(-1px);box-shadow:0 8px 22px rgba(17,151,143,.4)}
        .va-cartmin-cta svg{transition:transform .2s}
        .va-cartmin-cta.is-ready:hover svg{transform:translateX(3px)}
      `}</style>
    </aside>);

}

// ─── Configure screen (main) ──────────────────────────────────
function ConfigureScreen({ compact = false, tweaks = {} }) {
  const sidebarStyle = tweaks.sidebarStyle || 'detailed';
  const mileagePresentation = tweaks.mileagePresentation || 'cards';
  const mileageCardStyle = tweaks.mileageCardStyle || 'v1';
  const insurancePresentation = tweaks.insurancePresentation || 'compare';
  const trustStyle = tweaks.trustStyle || 'unified';
  const [selectedMileageId, setSelectedMileageId] = React.useState(2);
  const [selectedInsuranceId, setSelectedInsuranceId] = React.useState(2);

  const days = MOCK_SEARCH.days;
  const selectedMileage = MILEAGE_LEVELS.find((m) => m.id === selectedMileageId);
  const selectedInsurance = INSURANCE_PACKAGES.find((p) => p.id === selectedInsuranceId);
  const ready = !!selectedMileage && !!selectedInsurance;

  const vPrice = MOCK_VEHICLE.pricePerDay * days;
  const mPrice = (selectedMileage?.amount || 0) * days;
  const iPrice = selectedInsurance ? selectedInsurance.pricing_type === 'per_day' ? selectedInsurance.amount * days : selectedInsurance.amount : 0;
  const total = vPrice + mPrice + iPrice;

  return (
    <>
      <div className={`va-conf ${compact ? 'is-compact' : ''}`}>
        <main className="va-conf-main">
          <div className="va-conf-back">
            <a href="#" onClick={(e) => e.preventDefault()} className="va-conf-back-link">
              <svg width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2.2" viewBox="0 0 24 24">
                <path strokeLinecap="round" strokeLinejoin="round" d="M15 19l-7-7 7-7" />
              </svg>
              Retour aux véhicules
            </a>
          </div>

          <header className="va-conf-header">
            <h1 className="va-conf-title">Configurez votre location</h1>
            <p className="va-conf-subtitle">Plus que deux étapes — kilométrage et assurance — et vous prenez la route.</p>
          </header>

          {/* Section kilométrage */}
          <section className="va-conf-section">
            <div className="va-conf-section-head">
              <div className="va-conf-section-num">1</div>
              <div>
                <h2 className="va-conf-section-title">Sélectionnez votre forfait kilométrique</h2>
                <p className="va-conf-section-help">Estimez votre itinéraire : il vaut mieux prendre le forfait juste au-dessus que payer les km en supplément.</p>
              </div>
            </div>
            {mileagePresentation === 'segmented' ?
            <MileageSegmented
              levels={MILEAGE_LEVELS}
              selectedId={selectedMileageId}
              onSelect={setSelectedMileageId}
              days={days}
              compact={compact} /> :


            <div className={`va-mile-grid ${compact ? 'is-compact' : ''}`}>
                {MILEAGE_LEVELS.map((ml) =>
              <MileageCard
                key={ml.id}
                mileage={ml}
                days={days}
                selected={selectedMileageId === ml.id}
                onSelect={setSelectedMileageId}
                compact={compact}
                cardStyle={mileageCardStyle} />

              )}
              </div>
            }
          </section>

          {/* Section assurance */}
          <section className="va-conf-section">
            <div className="va-conf-section-head">
              <div className="va-conf-section-num">2</div>
              <div>
                <h2 className="va-conf-section-title">Choisissez votre formule d'assurance</h2>
                <p className="va-conf-section-help">Comparez les niveaux de couverture et trouvez celui qui correspond à votre voyage.</p>
              </div>
            </div>
            {insurancePresentation === 'cards' ?
            <div className={`va-mile-grid ${compact ? 'is-compact' : ''}`}>
                {INSURANCE_PACKAGES.map((pkg) =>
              <InsuranceCardLight
                key={pkg.id}
                pkg={pkg}
                days={days}
                selected={selectedInsuranceId === pkg.id}
                onSelect={setSelectedInsuranceId}
                compact={compact} />

              )}
              </div> :

            <InsuranceCompare
              packages={INSURANCE_PACKAGES}
              selectedId={selectedInsuranceId}
              onSelect={setSelectedInsuranceId}
              days={days}
              compact={compact} />

            }

            {/* Bandeau Assurance annulation (offert sur tous les packs) */}
            <div className="va-conf-cancel">
              <span className="va-conf-cancel-plus" aria-hidden="true">+</span>
              <div className="va-conf-cancel-body">
                <strong>Assurance annulation</strong>
                <span>Annulez jusqu'à <em>10&nbsp;jours avant le début</em> de votre location pour être remboursé de votre acompte. En cas de retour anticipé, vous récupérez <em>50&nbsp;%</em> du montant des jours restants en avoir.</span>
              </div>
            </div>

            {trustStyle === 'split' ?
            <div className="va-conf-trust-split">
              <article className="va-conf-trust-card va-conf-trust-card--allianz">
                <div className="va-conf-trust-card-head" style={{ padding: "0px 0px 18px" }}>
                  <img src="Images/allianz.png" alt="Allianz" />
                  <span className="va-conf-trust-card-role">Votre assureur</span>
                </div>
                <p className="va-conf-trust-card-baseline">Couverture tous risques pour votre van pendant toute la durée de la location.</p>
                <ul className="va-conf-trust-card-list">
                  <li>
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                    Premier assureur européen
                  </li>
                  <li>
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                    Plus de 130&nbsp;ans d'expérience
                  </li>
                  <li>
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                    Présent dans 70&nbsp;pays
                  </li>
                </ul>
              </article>

              <article className="va-conf-trust-card va-conf-trust-card--axa">
                <div className="va-conf-trust-card-head">
                  <img src="Images/axa.png" alt="AXA Assistance" style={{ padding: "0px" }} />
                  <span className="va-conf-trust-card-role">Votre assistance</span>
                </div>
                <p className="va-conf-trust-card-baseline">Une équipe joignable jour et nuit en cas de pépin sur la route quelque soit votre destination.</p>
                <ul className="va-conf-trust-card-list">
                  <li>
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                    Disponible 24h/24, 7j/7
                  </li>
                  <li>
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                    Dépannage partout en Europe
                  </li>
                  <li>
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                    Rapatriement véhicule inclus
                  </li>
                </ul>
              </article>
            </div> :

            <div className="va-conf-trust">
              <div className="va-conf-trust-head">
                <span className="va-conf-trust-eyebrow">Vos partenaires de confiance</span>
                <h3 className="va-conf-trust-title">Une couverture <em>premium</em>, garantie par les leaders européens.</h3>
              </div>
              <div className="va-conf-trust-logos">
                <div className="va-conf-trust-logo">
                  <img src="Images/allianz.png" alt="Allianz" />
                  <span>Assureur</span>
                </div>
                <span className="va-conf-trust-x" aria-hidden="true">×</span>
                <div className="va-conf-trust-logo va-conf-trust-logo--axa">
                  <img src="Images/axa.png" alt="AXA Assistance" />
                  <span>Assistance</span>
                </div>
              </div>
              <ul className="va-conf-trust-pills">
                <li>
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                  Premier assureur européen
                </li>
                <li>
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                  Assistance 24/7 toute l'Europe
                </li>
                <li>
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                  Dépannage & rapatriement inclus
                </li>
                <li>
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={T_TEAL} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"><path d="M5 13l4 4L19 7" /></svg>
                  100&nbsp;ans d'expérience
                </li>
              </ul>
            </div>
            }
          </section>

          {/* Mobile : sidebar inline avant le bottom bar */}
          {compact &&
          <section className="va-conf-section">
              <CartSidebar
              vehicle={MOCK_VEHICLE}
              search={MOCK_SEARCH}
              mileage={selectedMileage}
              insurance={selectedInsurance}
              days={days}
              tripCollapsible
              compact />
            
            </section>
          }
        </main>

        {!compact &&
        <aside className="va-conf-side">
            <div className="va-conf-side-sticky">
              {sidebarStyle === 'minimal' ?
            <CartSidebarMinimal
              vehicle={MOCK_VEHICLE}
              search={MOCK_SEARCH}
              mileage={selectedMileage}
              insurance={selectedInsurance}
              days={days}
              ready={ready}
              onContinue={() => {}} /> :


            <CartSidebar
              vehicle={MOCK_VEHICLE}
              search={MOCK_SEARCH}
              mileage={selectedMileage}
              insurance={selectedInsurance}
              days={days}
              ready={ready}
              tripCollapsible
              onContinue={() => {}} />

            }
            </div>
          </aside>
        }
      </div>

      <BottomBar
        total={total}
        days={days}
        ready={ready}
        onContinue={() => {}}
        compact={compact}
        desktopHidden />
      

      <style>{`
        .va-conf{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;max-width:1320px;margin:0 auto;padding:28px 24px 32px;align-items:start}
        .va-conf.is-compact{grid-template-columns:1fr;gap:0;padding:18px 14px 24px}
        .va-conf-main{min-width:0;display:flex;flex-direction:column;gap:28px}
        .va-conf.is-compact .va-conf-main{gap:22px}

        .va-conf-back{margin-bottom:-8px}
        .va-conf-back-link{display:inline-flex;align-items:center;gap:6px;color:${T_MUTED};font-size:13px;font-weight:600;text-decoration:none;padding:6px 10px 6px 6px;border-radius:8px;transition:all .2s}
        .va-conf-back-link:hover{background:rgba(4,40,40,.05);color:${T_INK}}

        .va-conf-header{display:flex;flex-direction:column;gap:6px}
        .va-conf-title{margin:0;font-size:32px;font-weight:900;color:${T_INK};letter-spacing:-.02em;line-height:1.1}
        .va-conf.is-compact .va-conf-title{font-size:24px}
        .va-conf-subtitle{margin:0;font-size:14.5px;color:${T_MUTED};line-height:1.5}

        .va-conf-section{display:flex;flex-direction:column;gap:14px}
        .va-conf-section-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:2px}
        .va-conf-section-num{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:${T_TEAL};color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;letter-spacing:-.01em;box-shadow:0 0 0 4px rgba(17,151,143,.1)}
        .va-conf-section-title{margin:0;font-size:20px;font-weight:900;color:${T_INK};letter-spacing:-.01em;line-height:1.2}
        .va-conf.is-compact .va-conf-section-title{font-size:17px}
        .va-conf-section-help{margin:4px 0 0;font-size:13px;color:${T_MUTED};line-height:1.5}

        .va-mile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
        .va-mile-grid.is-compact{grid-template-columns:1fr;gap:10px}

        .va-conf-cancel{display:flex;align-items:flex-start;gap:14px;padding:16px 20px;background:${T_SURFACE};border:1.5px solid ${T_TEAL};border-radius:14px;box-shadow:0 1px 2px rgba(4,40,40,.04)}
        .va-conf-cancel-plus{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:${T_TEAL};color:#fff;font-size:22px;font-weight:900;line-height:1;margin-top:1px}
        .va-conf-cancel-body{display:flex;flex-direction:column;gap:3px;line-height:1.45}
        .va-conf-cancel-body strong{font-size:14px;font-weight:900;color:${T_INK};text-transform:uppercase;letter-spacing:.6px}
        .va-conf-cancel-body span{font-size:13px;color:${T_INK};opacity:.9}
        .va-conf-cancel-body em{font-style:normal;font-weight:700;color:${T_TEAL}}
        .va-conf.is-compact .va-conf-cancel{padding:14px;gap:12px}
        .va-conf.is-compact .va-conf-cancel-body strong{font-size:13px}
        .va-conf.is-compact .va-conf-cancel-body span{font-size:12.5px}

        .va-conf-trust{display:flex;flex-direction:column;gap:18px;padding:24px 28px;background:${T_SURFACE};border:1px solid ${T_BORDER};border-radius:20px;box-shadow:0 1px 2px rgba(4,40,40,.04),0 4px 20px rgba(4,40,40,.04)}
        .va-conf.is-compact .va-conf-trust{padding:20px;gap:14px}
        .va-conf-trust-head{display:flex;flex-direction:column;gap:4px}
        .va-conf-trust-eyebrow{font-size:11px;font-weight:900;color:${T_TEAL};text-transform:uppercase;letter-spacing:1.5px}
        .va-conf-trust-title{margin:0;font-size:18px;font-weight:700;color:${T_INK};line-height:1.3;letter-spacing:-.01em}
        .va-conf-trust-title em{font-style:normal;color:${T_TEAL};font-weight:900}
        .va-conf.is-compact .va-conf-trust-title{font-size:15.5px}
        .va-conf-trust-logos{display:flex;align-items:center;justify-content:center;gap:32px;padding:18px 0;border-top:1px solid ${T_BORDER};border-bottom:1px solid ${T_BORDER}}
        .va-conf.is-compact .va-conf-trust-logos{gap:18px;padding:14px 0}
        .va-conf-trust-logo{display:flex;flex-direction:column;align-items:center;gap:8px}
        .va-conf-trust-logo img{display:block;height:38px;width:auto;object-fit:contain}
        .va-conf-trust-logo--axa img{height:42px;border-radius:6px}
        .va-conf.is-compact .va-conf-trust-logo img{height:28px}
        .va-conf.is-compact .va-conf-trust-logo--axa img{height:32px}
        .va-conf-trust-logo span{font-size:11px;font-weight:700;color:${T_MUTED};text-transform:uppercase;letter-spacing:1.2px}
        .va-conf-trust-x{font-size:22px;font-weight:300;color:${T_BORDER_S};line-height:1}
        .va-conf-trust-pills{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center}
        .va-conf-trust-pills li{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:${T_INK}}
        .va-conf.is-compact .va-conf-trust-pills{gap:8px 14px}
        .va-conf.is-compact .va-conf-trust-pills li{font-size:12px}

        /* Split variant : 2 cards distinctes (Allianz / AXA) */
        .va-conf-trust-split{display:grid;grid-template-columns:1fr 1fr;gap:16px}
        .va-conf.is-compact .va-conf-trust-split{grid-template-columns:1fr;gap:12px}
        .va-conf-trust-card{display:flex;flex-direction:column;gap:14px;padding:22px 24px;background:${T_SURFACE};border:1px solid ${T_BORDER};border-radius:20px;box-shadow:0 1px 2px rgba(4,40,40,.04),0 4px 20px rgba(4,40,40,.04)}
        .va-conf.is-compact .va-conf-trust-card{padding:18px;gap:12px}
        .va-conf-trust-card-head{display:flex;align-items:center;gap:14px;padding-bottom:12px;border-bottom:1px solid ${T_BORDER}}
        .va-conf-trust-card--allianz .va-conf-trust-card-head img{height:36px;width:auto;object-fit:contain}
        .va-conf-trust-card--axa .va-conf-trust-card-head img{height:44px;width:44px;border-radius:8px;object-fit:contain}
        .va-conf.is-compact .va-conf-trust-card--allianz .va-conf-trust-card-head img{height:28px}
        .va-conf.is-compact .va-conf-trust-card--axa .va-conf-trust-card-head img{height:36px;width:36px}
        .va-conf-trust-card-role{font-size:11px;font-weight:900;color:${T_TEAL};text-transform:uppercase;letter-spacing:1.5px;margin-left:auto}
        .va-conf-trust-card-baseline{margin:0;font-size:13.5px;color:${T_INK};line-height:1.45;font-weight:600}
        .va-conf-trust-card-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
        .va-conf-trust-card-list li{display:flex;align-items:center;gap:8px;font-size:13px;color:${T_INK};line-height:1.4}
        .va-conf.is-compact .va-conf-trust-card-list li{font-size:12.5px}

        .va-conf-side{position:relative}
        .va-conf-side-sticky{position:sticky;top:80px}
      `}</style>
    </>);

}

Object.assign(window, { ConfigureScreen, BottomBar, CartSidebar, CartSidebarMinimal, MileageCard, MileageSegmented, InsuranceCompare, T_TEAL, T_INK, T_MUTED, T_CREAM, T_SURFACE, T_BORDER });