// options-screen.jsx — Étape /options
// Extras transverses (services + accessoires) avec quantité.
// Iso fonctionnel d'OptionsView.vue, restylé charte Van-Away clear.

const TO_TEAL = '#11978f';
const TO_TEAL_HV = '#1c7d77';
const TO_INK = '#042828';
const TO_MUTED = '#5B7A82';
const TO_CREAM = '#F4F2EC';
const TO_SURFACE = '#FFFFFF';
const TO_BORDER = 'rgba(4,40,40,0.08)';
const TO_BORDER_S = 'rgba(4,40,40,0.14)';
const TO_BG_TEAL = '#e7fcfb';

// ─── Mock data : on hérite vehicle + search depuis ConfigureScreen, et on présume mileage+insurance déjà choisis
const OPT_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 OPT_MOCK_SEARCH = {
  agencyName: 'Van-Away Bordeaux - Bordeaux',
  startDate: '2026-07-12',
  endDate: '2026-07-20',
  days: 8
};
const OPT_MOCK_MILEAGE = { id: 2, label: 'Confort', mileage: 200, unlimited: false, amount: 4.90 };
const OPT_MOCK_INSURANCE = { id: 2, name: 'Confort', amount: 14.90, pricing_type: 'per_day' };

// SVG inline icons (catégorie / option type) — petites illustrations bord teal
const optIcon = (kind, color = TO_TEAL) => {
  const common = { width: 28, height: 28, viewBox: '0 0 24 24', fill: 'none', stroke: color, strokeWidth: 1.7, strokeLinecap: 'round', strokeLinejoin: 'round' };
  switch (kind) {
    case 'driver':return <svg {...common}><circle cx="12" cy="8" r="4" /><path d="M4 21c0-4.4 3.6-8 8-8s8 3.6 8 8" /></svg>;
    case 'sparkles':return <svg {...common}><path d="M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M5.6 18.4l2.1-2.1M16.3 7.7l2.1-2.1" /><circle cx="12" cy="12" r="3" /></svg>;
    case 'truck':return <svg {...common}><rect x="1" y="6" width="13" height="11" rx="1.5" /><path d="M14 9h4l3 3v5h-7" /><circle cx="6" cy="19" r="2" /><circle cx="17" cy="19" r="2" /></svg>;
    case 'paw':return <svg {...common}><circle cx="6" cy="9" r="2" /><circle cx="10" cy="5" r="2" /><circle cx="14" cy="5" r="2" /><circle cx="18" cy="9" r="2" /><path d="M8 14c0-2 2-3 4-3s4 1 4 3 1 3 1 4a3 3 0 01-3 3c-1 0-2-1-2-1s-1 1-2 1a3 3 0 01-3-3c0-1 1-2 1-4z" /></svg>;
    case 'shield':return <svg {...common}><path d="M12 22s-8-4.5-8-11.8A8 8 0 0112 2a8 8 0 018 8.2C20 17.5 12 22 12 22z" /><path d="M9 12l2 2 4-4" /></svg>;
    case 'gps':return <svg {...common}><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 1118 0z" /><circle cx="12" cy="10" r="3" /></svg>;
    case 'table':return <svg {...common}><path d="M3 9h18M5 9v11M19 9v11M8 9V5h8v4" /></svg>;
    case 'crib':return <svg {...common}><path d="M3 8v10M21 8v10M3 12h18M3 18h18" /><path d="M7 8V5M11 8V5M15 8V5M19 8V5" /></svg>;
    case 'utensil':return <svg {...common}><path d="M5 3v8a3 3 0 003 3v7M8 3v6M11 3v6" /><path d="M16 3c-1 1-2 3-2 5s1 3 2 3v9" /></svg>;
    case 'roof':return <svg {...common}><path d="M3 8l9-5 9 5" /><path d="M5 9v8a2 2 0 002 2h10a2 2 0 002-2V9" /><path d="M9 14h6" /></svg>;
    case 'bike':return <svg {...common}><circle cx="6" cy="17" r="3" /><circle cx="18" cy="17" r="3" /><path d="M6 17l4-9h5l3 9M10 8h4" /></svg>;
    case 'wifi':return <svg {...common}><path d="M2 9a15 15 0 0120 0M5 13a10 10 0 0114 0M8.5 16.5a5 5 0 017 0" /><circle cx="12" cy="20" r="1" fill={color} /></svg>;
    case 'snow':return <svg {...common}><path d="M12 2v20M4.2 7l15.6 10M4.2 17l15.6-10" /></svg>;
    case 'sleep':return <svg {...common}><path d="M3 18v-6a3 3 0 013-3h12a3 3 0 013 3v6" /><path d="M3 14h18" /><path d="M7 9V6" /></svg>;
    default:return <svg {...common}><rect x="4" y="4" width="16" height="16" rx="3" /><path d="M4 12h16M12 4v16" /></svg>;
  }
};

// ─── Mock options — services + accessoires, comme Van-Away réel
const SERVICE_OPTIONS = [
{
  id: 101, name: 'Conducteur supplémentaire', icon: 'driver',
  desc: 'Ajoutez un second conducteur autorisé pour partager les longues étapes.',
  amount: 49, pricing_type: 'per_trip', count: 2
},
{
  id: 102, name: 'Nettoyage final', icon: 'sparkles',
  desc: 'On s\'occupe du grand ménage. Vous rendez le van comme vous voulez.',
  amount: 89, pricing_type: 'per_trip', count: 1, popular: true
},
{
  id: 103, name: 'Transfert depuis l\'aéroport', icon: 'truck',
  desc: 'Navette aller-retour entre l\'agence et l\'aéroport / gare la plus proche.',
  amount: 35, pricing_type: 'per_trip', count: 1
},
{
  id: 104, name: 'Voyage avec animal', icon: 'paw',
  desc: 'Forfait nettoyage spécifique. Toutous bienvenus à bord.',
  amount: 39, pricing_type: 'per_trip', count: 1
},
{
  id: 105, name: 'Assurance annulation', icon: 'shield',
  desc: 'Annulez sans frais jusqu\'à 48h avant le départ — peu importe la raison.',
  amount: 4.90, pricing_type: 'per_day', count: 1
}];


const ACCESSORY_OPTIONS = [
{
  id: 201, name: 'Table de pique-nique + 4 chaises', icon: 'table',
  desc: 'Le set complet pour les pauses déjeuner face à la mer ou à la montagne.',
  amount: 4.90, pricing_type: 'per_day', count: 1, popular: true
},
{
  id: 202, name: 'GPS dédié camping-car', icon: 'gps',
  desc: 'Évitez les routes étroites et les ponts trop bas. Spécial gabarit van.',
  amount: 3.90, pricing_type: 'per_day', count: 1
},
{
  id: 203, name: 'Lit enfant', icon: 'crib',
  desc: 'Lit d\'appoint pliable pour les petits voyageurs (jusqu\'à 4 ans).',
  amount: 5.90, pricing_type: 'per_day', count: 2
},
{
  id: 204, name: 'Pack vaisselle complet', icon: 'utensil',
  desc: 'Assiettes, couverts, verres, tasses, casseroles. Tout est prêt.',
  amount: 19, pricing_type: 'per_trip', count: 1
},
{
  id: 205, name: 'Coffre de toit', icon: 'roof',
  desc: 'Pour ranger les sacs encombrants et libérer l\'espace de vie à l\'intérieur.',
  amount: 6.90, pricing_type: 'per_day', count: 1
},
{
  id: 206, name: 'Porte-vélos arrière', icon: 'bike',
  desc: 'Capacité 2 vélos. Crochets sécurisés et antivol fournis.',
  amount: 5.90, pricing_type: 'per_day', count: 1
}];


// helpers (locaux pour ne pas écraser ceux de configure-screen)
function optFmt(n, dec = 2) {
  return (n ?? 0).toFixed(dec).replace('.', ',') + ' €';
}
function OptCheck({ size = 14, color = '#fff' }) {
  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>);

}

// ─── Option card ──────────────────────────────────────────────
function OptionCard({ option, quantity, days, onChange }) {
  const isActive = quantity > 0;
  const hasMultiple = (option.count ?? 1) > 1;
  const max = option.count ?? 1;
  const isPerDay = option.pricing_type === 'per_day';
  const totalForTrip = isPerDay ? option.amount * days * Math.max(1, quantity || 1) : option.amount * Math.max(1, quantity || 1);
  const totalIfOne = isPerDay ? option.amount * days : option.amount;

  function toggle() {
    if (hasMultiple) {
      onChange(quantity >= max ? 0 : quantity + 1);
    } else {
      onChange(isActive ? 0 : 1);
    }
  }
  function inc() {if (quantity < max) onChange(quantity + 1);}
  function dec() {if (quantity > 0) onChange(quantity - 1);}

  return (
    <div className={`va-opt ${isActive ? 'is-on' : ''}`}>
      {option.popular && <span className="va-opt-pop">Populaire</span>}

      <div className="va-opt-head">
        <div className="va-opt-icon">{optIcon(option.icon)}</div>
        <div className="va-opt-titles">
          <h4 className="va-opt-name">{option.name}</h4>
          <p className="va-opt-desc">{option.desc}</p>
        </div>
      </div>

      <div className="va-opt-foot">
        <div className="va-opt-price">
          <span className="va-opt-price-amount">{optFmt(option.amount)}</span>
          <span className="va-opt-price-unit">{isPerDay ? '/ jour' : '/ séjour'}</span>
          {isPerDay &&
          <span className="va-opt-price-trip">soit {optFmt(totalIfOne)} pour {days} j</span>
          }
        </div>

        {hasMultiple ?
        <div className="va-opt-qty">
            <button type="button" onClick={dec} disabled={quantity <= 0} className="va-opt-qbtn" aria-label="Diminuer">
              <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round"><path d="M5 12h14" /></svg>
            </button>
            <span className="va-opt-qval">{quantity}</span>
            <button type="button" onClick={inc} disabled={quantity >= max} className="va-opt-qbtn" aria-label="Augmenter">
              <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round"><path d="M12 5v14M5 12h14" /></svg>
            </button>
          </div> :

        <button type="button" onClick={toggle} className={`va-opt-cta ${isActive ? 'is-on' : ''}`}>
            {isActive ? <><OptCheck size={14} /> Ajouté</> : 'Ajouter'}
          </button>
        }
      </div>

      <style>{`
        .va-opt{position:relative;display:flex;flex-direction:column;gap:14px;background:${TO_SURFACE};border:1.5px solid ${TO_BORDER};border-radius:18px;padding:18px;transition:all .2s ease;box-shadow:0 1px 2px rgba(4,40,40,.04);min-height:172px}
        .va-opt:hover{border-color:${TO_BORDER_S};transform:translateY(-2px);box-shadow:0 1px 2px rgba(4,40,40,.04),0 8px 22px rgba(4,40,40,.07)}
        .va-opt.is-on{border-color:${TO_TEAL};background:#fbfffe;box-shadow:0 0 0 3px rgba(17,151,143,.1),0 8px 22px rgba(17,151,143,.08)}
        .va-opt-pop{position:absolute;top:0;right:14px;background:${TO_TEAL};color:#fff;font-size:9.5px;font-weight:900;text-transform:uppercase;letter-spacing:1px;padding:3px 9px;border-radius:0 0 8px 8px}

        .va-opt-head{display:flex;gap:14px;align-items:flex-start}
        .va-opt-icon{flex-shrink:0;width:48px;height:48px;border-radius:12px;background:${TO_BG_TEAL};display:flex;align-items:center;justify-content:center}
        .va-opt-titles{flex:1;min-width:0}
        .va-opt-name{margin:0;font-size:15px;font-weight:900;color:${TO_INK};letter-spacing:-.01em;line-height:1.25}
        .va-opt-desc{margin:4px 0 0;font-size:12.5px;color:${TO_MUTED};line-height:1.45}

        .va-opt-foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;border-top:1px dashed ${TO_BORDER};flex-wrap:wrap}
        .va-opt-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px}
        .va-opt-price-amount{font-size:20px;font-weight:900;color:${TO_TEAL};letter-spacing:-.02em;line-height:1}
        .va-opt-price-unit{font-size:12px;color:${TO_MUTED};font-weight:600}
        .va-opt-price-trip{flex-basis:100%;font-size:11px;color:${TO_MUTED}}

        .va-opt-cta{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;background:transparent;border:1.5px solid ${TO_BORDER_S};color:${TO_INK};border-radius:999px;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s;white-space:nowrap}
        .va-opt-cta:hover{border-color:${TO_TEAL};color:${TO_TEAL}}
        .va-opt-cta.is-on{background:${TO_TEAL};border-color:${TO_TEAL};color:#fff}
        .va-opt-cta.is-on:hover{background:${TO_TEAL_HV};border-color:${TO_TEAL_HV};color:#fff}

        .va-opt-qty{display:inline-flex;align-items:center;gap:10px;background:${TO_SURFACE};border:1.5px solid ${TO_TEAL};border-radius:999px;padding:4px}
        .va-opt-qbtn{width:30px;height:30px;border-radius:50%;border:none;background:${TO_BG_TEAL};color:${TO_TEAL};display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}
        .va-opt-qbtn:hover:not(:disabled){background:${TO_TEAL};color:#fff}
        .va-opt-qbtn:disabled{opacity:.35;cursor:not-allowed}
        .va-opt-qval{min-width:18px;text-align:center;font-size:14px;font-weight:900;color:${TO_INK}}
      `}</style>
    </div>);

}

// ─── Section group with header ───────────────────────────────
function OptionGroup({ title, help, num, options, quantities, onChange, days, compact }) {
  const selectedCount = options.reduce((s, o) => s + (quantities[o.id] || 0), 0);
  return (
    <section className="va-optgrp">
      <div className="va-optgrp-head">
        <div className="va-optgrp-head-left">
          <div className="va-optgrp-num">{num}</div>
          <div className="va-optgrp-titles">
            <h2 className="va-optgrp-title">{title}</h2>
            {help && <p className="va-optgrp-help">{help}</p>}
          </div>
        </div>
        {selectedCount > 0 &&
        <span className="va-optgrp-pill">
            <OptCheck size={11} color="#fff" /> {selectedCount} sélectionné{selectedCount > 1 ? 's' : ''}
          </span>
        }
      </div>
      <div className={`va-optgrp-grid ${compact ? 'is-compact' : ''}`}>
        {options.map((opt) =>
        <OptionCard
          key={opt.id}
          option={opt}
          quantity={quantities[opt.id] || 0}
          days={days}
          onChange={(q) => onChange(opt.id, q)} />

        )}
      </div>
      <style>{`
        .va-optgrp{display:flex;flex-direction:column;gap:14px}
        .va-optgrp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:2px}
        .va-optgrp-head-left{display:flex;align-items:flex-start;gap:14px;flex:1;min-width:0}
        .va-optgrp-num{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:${TO_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-optgrp-titles{flex:1;min-width:0}
        .va-optgrp-title{margin:0;font-size:20px;font-weight:900;color:${TO_INK};letter-spacing:-.01em;line-height:1.2}
        .va-optgrp-help{margin:4px 0 0;font-size:13px;color:${TO_MUTED};line-height:1.5}
        .va-optgrp-pill{display:inline-flex;align-items:center;gap:5px;background:${TO_TEAL};color:#fff;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.8px;padding:5px 11px;border-radius:999px;white-space:nowrap;margin-top:6px}
        .va-optgrp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
        .va-optgrp-grid.is-compact{grid-template-columns:1fr}
      `}</style>
    </section>);

}

// ─── Sticky options summary card (sidebar add-on) ──────────────
function OptionsRecap({ services, accessories, quantities, days }) {
  const allOpts = [...services, ...accessories];
  const selected = allOpts.filter((o) => (quantities[o.id] || 0) > 0);
  if (selected.length === 0) {
    return (
      <div className="va-optrecap is-empty">
        <span className="va-optrecap-eyebrow">Vos options</span>
        <p className="va-optrecap-empty">Aucune option sélectionnée pour le moment.</p>
        <style>{`
          .va-optrecap.is-empty{background:${TO_SURFACE};border:1.5px dashed ${TO_BORDER_S};border-radius:18px;padding:18px;text-align:center}
          .va-optrecap-eyebrow{display:block;font-size:11px;font-weight:900;color:${TO_TEAL};text-transform:uppercase;letter-spacing:1.4px;margin-bottom:8px}
          .va-optrecap-empty{margin:0;font-size:12.5px;color:${TO_MUTED};line-height:1.45}
        `}</style>
      </div>);

  }
  return (
    <div className="va-optrecap">
      <div className="va-optrecap-head">
        <span className="va-optrecap-eyebrow">Vos options</span>
        <span className="va-optrecap-count">{selected.length}</span>
      </div>
      <ul className="va-optrecap-list">
        {selected.map((o) => {
          const q = quantities[o.id] || 0;
          const isPerDay = o.pricing_type === 'per_day';
          const total = isPerDay ? o.amount * days * q : o.amount * q;
          return (
            <li key={o.id} className="va-optrecap-li">
              <span className="va-optrecap-li-icon">{optIcon(o.icon)}</span>
              <span className="va-optrecap-li-name">{o.name}{q > 1 && <em> × {q}</em>}</span>
              <strong className="va-optrecap-li-amount">{optFmt(total)}</strong>
            </li>);

        })}
      </ul>
      <style>{`
        .va-optrecap{background:${TO_SURFACE};border:1.5px solid ${TO_TEAL};border-radius:18px;padding:14px 14px 12px;box-shadow:0 0 0 3px rgba(17,151,143,.08)}
        .va-optrecap-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
        .va-optrecap-eyebrow{font-size:11px;font-weight:900;color:${TO_TEAL};text-transform:uppercase;letter-spacing:1.4px}
        .va-optrecap-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;background:${TO_TEAL};color:#fff;border-radius:999px;font-size:11px;font-weight:900}
        .va-optrecap-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0}
        .va-optrecap-li{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:8px 0;border-bottom:1px dashed ${TO_BORDER};font-size:12.5px}
        .va-optrecap-li:last-child{border-bottom:none}
        .va-optrecap-li-icon svg{width:18px;height:18px}
        .va-optrecap-li-name{color:${TO_INK};font-weight:600;line-height:1.25}
        .va-optrecap-li-name em{font-style:normal;color:${TO_MUTED};font-weight:400}
        .va-optrecap-li-amount{color:${TO_INK};font-weight:900;font-size:13px}
      `}</style>
    </div>);

}

// ─── Main screen ──────────────────────────────────────────────
function OptionsScreen({ compact = false, tweaks = {} }) {
  const sidebarStyle = tweaks.sidebarStyle || 'detailed';
  const [quantities, setQuantities] = React.useState({
    102: 1, // nettoyage final pré-coché (pattern fréquent)
    201: 1 // table pique-nique pré-coché
  });

  function setQty(id, q) {
    setQuantities((prev) => {
      const next = { ...prev };
      if (q <= 0) delete next[id];else
      next[id] = q;
      return next;
    });
  }

  const days = OPT_MOCK_SEARCH.days;

  // Totaux
  const vPrice = OPT_MOCK_VEHICLE.pricePerDay * days;
  const mPrice = OPT_MOCK_MILEAGE.amount * days;
  const iPrice = OPT_MOCK_INSURANCE.pricing_type === 'per_day' ? OPT_MOCK_INSURANCE.amount * days : OPT_MOCK_INSURANCE.amount;
  const allOpts = [...SERVICE_OPTIONS, ...ACCESSORY_OPTIONS];
  const selectedOpts = allOpts.
  filter((o) => (quantities[o.id] || 0) > 0).
  map((o) => {
    const q = quantities[o.id] || 0;
    const t = o.pricing_type === 'per_day' ? o.amount * days * q : o.amount * q;
    return { name: o.name, qty: q, total: t };
  });
  const oPrice = selectedOpts.reduce((s, o) => s + o.total, 0);
  const total = vPrice + mPrice + iPrice + oPrice;

  // Liste d'éléments inclus (pattern Van-Away — ce que la maquette de Téo affichait en "OFFERT")
  const INCLUDED_LIST = [
  'Assurance et l\'Assistance',
  'Parking gratuit en agence',
  'Abonnement France Passion',
  'Abonnement Park4night+'];


  // Cards count for header chip
  const totalAvailable = SERVICE_OPTIONS.length + ACCESSORY_OPTIONS.length;
  const totalSelected = Object.values(quantities).reduce((s, n) => s + n, 0);

  return (
    <>
      <div className={`va-opts ${compact ? 'is-compact' : ''}`}>
        <main className="va-opts-main">
          <div className="va-opts-back">
            <a href="#" onClick={(e) => e.preventDefault()} className="va-opts-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 à la configuration
            </a>
          </div>

          <header className="va-opts-header">
            {totalSelected > 0 && (
              <div className="va-opts-header-meta">
                <span className="va-opts-counter">
                  {totalSelected} option{totalSelected > 1 ? 's' : ''} ajoutée{totalSelected > 1 ? 's' : ''}
                </span>
              </div>
            )}
            <h1 className="va-opts-title">Personnalisez votre voyage</h1>
            <p className="va-opts-subtitle">Toutes les options sont facultatives — sélectionnez seulement ce qui rendra votre roadtrip plus confortable.</p>
          </header>


          {/* Services */}
          <OptionGroup
            num={1}
            title="Services à la carte"
            help="Pour vous simplifier le voyage avant et pendant le séjour."
            options={SERVICE_OPTIONS}
            quantities={quantities}
            onChange={setQty}
            days={days}
            compact={compact} />
          

          {/* Accessoires */}
          <OptionGroup
            num={2}
            title="Accessoires"
            help="Pour profiter pleinement du van et gagner en confort sur la route."
            options={ACCESSORY_OPTIONS}
            quantities={quantities}
            onChange={setQty}
            days={days}
            compact={compact} />
          

          {/* Note bas de page — rappel discret */}
          <p className="va-opts-note" style={{ backgroundColor: "rgb(231, 252, 251)" }}>
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" style={{ flexShrink: 0 }}>
              <circle cx="12" cy="12" r="10" />
              <path d="M12 8v4M12 16h.01" />
            </svg>
            <span>Les services et accessoires sont modifiable jusqu'à <strong style={{ color: "rgb(17, 151, 143)" }}>48&nbsp;h avant le départ</strong> depuis votre espace client.</span>
          </p>

          {/* Mobile : sidebar inline */}
          {compact &&
          <section className="va-opts-section-mobile">
              <CartSidebar
              vehicle={OPT_MOCK_VEHICLE}
              search={OPT_MOCK_SEARCH}
              mileage={OPT_MOCK_MILEAGE}
              insurance={OPT_MOCK_INSURANCE}
              days={days}
              options={selectedOpts}
              included={INCLUDED_LIST}
              tripCollapsible
              compact />
            
            </section>
          }
        </main>

        {!compact &&
        <aside className="va-opts-side">
            <div className="va-opts-side-sticky">
              {sidebarStyle === 'minimal' ?
            <CartSidebarMinimal
              vehicle={OPT_MOCK_VEHICLE}
              search={OPT_MOCK_SEARCH}
              mileage={OPT_MOCK_MILEAGE}
              insurance={OPT_MOCK_INSURANCE}
              days={days} /> :


            <CartSidebar
              vehicle={OPT_MOCK_VEHICLE}
              search={OPT_MOCK_SEARCH}
              mileage={OPT_MOCK_MILEAGE}
              insurance={OPT_MOCK_INSURANCE}
              days={days}
              options={selectedOpts}
              included={INCLUDED_LIST}
              tripCollapsible
              ready={true}
              onContinue={() => {}} />

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

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

      <style>{`
        .va-opts{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-opts.is-compact{grid-template-columns:1fr;gap:0;padding:18px 14px 24px}
        .va-opts-main{min-width:0;display:flex;flex-direction:column;gap:28px}
        .va-opts.is-compact .va-opts-main{gap:22px}

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

        .va-opts-header{display:flex;flex-direction:column;gap:6px}
        .va-opts-header-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
        .va-opts-eyebrow{display:inline-block;font-size:11px;font-weight:900;color:${TO_TEAL};text-transform:uppercase;letter-spacing:1.5px}
        .va-opts-counter{display:inline-flex;align-items:center;background:${TO_BG_TEAL};color:${TO_TEAL};font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.8px;padding:4px 10px;border-radius:999px}
        .va-opts-title{margin:0;font-size:32px;font-weight:900;color:${TO_INK};letter-spacing:-.02em;line-height:1.1}
        .va-opts.is-compact .va-opts-title{font-size:24px}
        .va-opts-subtitle{margin:0;font-size:14.5px;color:${TO_MUTED};line-height:1.5;max-width:640px}

        .va-opts-included{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;background:${TO_BG_TEAL};border-radius:14px}
        .va-opts-included-icon{flex-shrink:0;width:30px;height:30px;border-radius:50%;background:${TO_TEAL};color:#fff;display:flex;align-items:center;justify-content:center;margin-top:2px}
        .va-opts-included-body strong{display:block;font-size:13px;font-weight:900;color:${TO_INK};text-transform:uppercase;letter-spacing:.8px;line-height:1.2}
        .va-opts-included-body span{display:block;font-size:12.5px;color:${TO_INK};line-height:1.4;margin-top:3px;opacity:.85}

        .va-opts-callout{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;background:${TO_BG_TEAL};border:1px solid rgba(17,151,143,.18);border-radius:14px;border-left:3px solid ${TO_TEAL}}
        .va-opts-callout-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:${TO_SURFACE};box-shadow:0 1px 2px rgba(4,40,40,.06)}
        .va-opts-callout-body{display:flex;flex-direction:column;gap:2px;line-height:1.4}
        .va-opts-callout-body strong{font-size:14px;font-weight:900;color:${TO_INK};letter-spacing:-.005em}
        .va-opts-callout-body span{font-size:13px;color:${TO_INK};opacity:.85}
        .va-opts-callout-body em{font-style:normal;font-weight:700;color:${TO_TEAL}}

        .va-opts-note{margin:0;font-size:12.5px;color:#254747;line-height:1.5;text-align:center;padding:14px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#fafaf6;border:1px dashed ${TO_BORDER};border-radius:12px;align-self:center}
        .va-opts-note strong{color:#254747;font-weight:700}

        .va-opts-section-mobile{display:flex;flex-direction:column}

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

}

Object.assign(window, { OptionsScreen });