/* global React, Ic, Stars, CarCard, CarImage, fmtPrice */
const { useState:useStateP, useEffect:useEffectP, useMemo:useMemoP } = React;

function getCar(id){ return window.FLEET.find(c=>c.id===id); }
function parseQuery(route){
  const q=route.split('?')[1]; return q? Object.fromEntries(new URLSearchParams(q)) : {};
}

/* --------------------- PAGE HEADER --------------------- */
function PageHeader({ eyebrow, title, sub, crumb }){
  return <section style={{position:"relative",paddingTop:"calc(var(--nav-h) + 56px)",paddingBottom:"40px",overflow:"hidden"}}>
    <div className="grid-lines" style={{position:"absolute",inset:0,opacity:.4,maskImage:"radial-gradient(110% 90% at 50% 0%,#000,transparent 75%)"}}></div>
    <div className="halo halo-gold-soft" style={{width:520,height:380,top:-180,left:"50%",transform:"translateX(-50%)"}}></div>
    <div className="wrap" style={{position:"relative",textAlign:"center"}}>
      <div style={{display:"flex",justifyContent:"center",alignItems:"center",gap:8,marginBottom:16,fontSize:13,color:"var(--muted-2)"}}>
        <a href="#/" style={{color:"var(--muted)"}}>Accueil</a><Ic.chev style={{width:13,height:13}}/><span style={{color:"var(--gold-2)"}}>{crumb||title}</span>
      </div>
      {eyebrow && <div className="eyebrow center" style={{marginBottom:16}}>{eyebrow}</div>}
      <h1 className="h-sec" style={{marginBottom:sub?16:0}}>{title}</h1>
      {sub && <p className="sub" style={{margin:"0 auto",textAlign:"center"}}>{sub}</p>}
    </div>
  </section>;
}

/* ============================ CATALOG ============================ */
function CatalogPage({ route }){
  const q=parseQuery(route);
  const [search,setSearch]=useStateP("");
  const [fuel,setFuel]=useStateP("Tous");
  const [box,setBox]=useStateP("Tous");
  const [cat,setCat]=useStateP("Toutes");
  const [maxP,setMaxP]=useStateP(12000);
  const [sort,setSort]=useStateP("pop");

  const cats=["Toutes",...Array.from(new Set(window.FLEET.map(c=>c.category)))];
  const filtered=useMemoP(()=>{
    let r=window.FLEET.filter(c=>
      (search===""||(c.name+" "+c.brand).toLowerCase().includes(search.toLowerCase())) &&
      (fuel==="Tous"||c.fuel===fuel) &&
      (box==="Tous"||c.gearbox===box) &&
      (cat==="Toutes"||c.category===cat) &&
      c.price<=maxP
    );
    if(sort==="asc") r=[...r].sort((a,b)=>a.price-b.price);
    else if(sort==="desc") r=[...r].sort((a,b)=>b.price-a.price);
    else r=[...r].sort((a,b)=>(b.popular?1:0)-(a.popular?1:0));
    return r;
  },[search,fuel,box,cat,maxP,sort]);

  const reset=()=>{setSearch("");setFuel("Tous");setBox("Tous");setCat("Toutes");setMaxP(12000);setSort("pop");};
  const Seg=({val,cur,set,opts})=> <div style={{display:"flex",gap:6,flexWrap:"wrap"}}>
    {opts.map(o=> <button key={o} onClick={()=>set(o)} className="chip" style={cur===o?{borderColor:"rgba(230,199,110,.6)",background:"rgba(230,199,110,.1)",color:"var(--gold-2)"}:{cursor:"pointer"}}>{o}</button>)}
  </div>;

  return <div className="page-anim">
    <PageHeader crumb="Nos voitures" eyebrow="Notre flotte" title={<>Nos <span className="gold">voitures</span></>} sub="Une sélection de véhicules propres, récents et entretenus. Filtrez selon vos besoins et réservez en quelques clics."/>
    <section style={{paddingBottom:96}}>
      <div className="wrap" style={{display:"grid",gridTemplateColumns:"288px 1fr",gap:32,alignItems:"start"}}>
        {/* filters */}
        <aside className="catalog-filters card" style={{padding:"24px",position:"sticky",top:"calc(var(--nav-h) + 16px)",display:"flex",flexDirection:"column",gap:22}}>
          <div style={{display:"flex",justifyContent:"space-between",alignItems:"center"}}>
            <span style={{fontFamily:"'Sora',sans-serif",fontWeight:700,fontSize:16}}>Filtres</span>
            <button onClick={reset} style={{fontSize:12.5,color:"var(--gold-2)"}}>Réinitialiser</button>
          </div>
          <div className="field"><label>Recherche</label><div className="control"><Ic.search/><input value={search} onChange={e=>setSearch(e.target.value)} placeholder="Modèle ou marque…"/></div></div>
          <div className="field"><label>Catégorie</label><Seg cur={cat} set={setCat} opts={cats}/></div>
          <div className="field"><label>Carburant</label><Seg cur={fuel} set={setFuel} opts={["Tous","Essence","Diesel"]}/></div>
          <div className="field"><label>Boîte de vitesses</label><Seg cur={box} set={setBox} opts={["Tous","Manuelle","Automatique"]}/></div>
          <div className="field">
            <label>Prix max · <span className="gold" style={{fontWeight:700}}>{fmtPrice(maxP)} DA/j</span></label>
            <input type="range" min="4000" max="12000" step="500" value={maxP} onChange={e=>setMaxP(+e.target.value)} className="range-gold"/>
          </div>
        </aside>
        {/* results */}
        <div>
          <div style={{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:22,flexWrap:"wrap",gap:12}}>
            <span style={{color:"var(--muted)",fontSize:14.5}}><strong style={{color:"var(--text)"}}>{filtered.length}</strong> véhicule{filtered.length>1?"s":""} disponible{filtered.length>1?"s":""}</span>
            <div className="field" style={{flexDirection:"row",alignItems:"center",gap:10}}>
              <label style={{margin:0}}>Trier</label>
              <div className="control" style={{height:44,minWidth:180}}><select value={sort} onChange={e=>setSort(e.target.value)}>
                <option value="pop">Populaires d'abord</option><option value="asc">Prix croissant</option><option value="desc">Prix décroissant</option>
              </select></div>
            </div>
          </div>
          {filtered.length? <div className="catalog-grid" style={{display:"grid",gridTemplateColumns:"repeat(3,1fr)",gap:22}}>
            {filtered.map((c,i)=> <CarCard key={c.id} car={c} delay={"d"+(i%3)}/> )}
          </div> : <div className="card" style={{padding:48,textAlign:"center",color:"var(--muted)"}}>
            <Ic.search style={{width:30,height:30,margin:"0 auto 12px",color:"var(--gold-2)"}}/>
            Aucun véhicule ne correspond à vos critères.<br/><button onClick={reset} className="btn btn-ghost btn-sm" style={{marginTop:16}}>Réinitialiser les filtres</button>
          </div>}
        </div>
      </div>
    </section>
  </div>;
}

/* ============================ VEHICLE DETAIL ============================ */
function VehicleDetailPage({ route }){
  const id=route.split('/')[2];
  const car=getCar(id);
  const B=window.BUSINESS;
  useEffectP(()=>{ window.scrollTo(0,0); },[id]);
  if(!car) return <div className="page-anim"><PageHeader crumb="Introuvable" title="Véhicule introuvable" sub="Ce véhicule n'est plus disponible."/><div className="wrap" style={{paddingBottom:96,textAlign:"center"}}><a href="#/voitures" className="btn btn-gold">Voir toutes les voitures</a></div></div>;

  const waMsg=encodeURIComponent(`Bonjour Hamza LVH, je souhaite réserver la ${car.name} (${car.year}) à ${fmtPrice(car.price)} DA/jour. Est-elle disponible ?`);
  const specs=[[Ic.cal,"Année",car.year],[Ic.fuel,"Carburant",car.fuel],[Ic.gear,"Boîte",car.gearbox],[Ic.seat,"Places",car.seats+" places"],[Ic.tag,"Catégorie",car.category],[Ic.cars,"Marque",car.brand]];
  const similar=window.FLEET.filter(c=>c.id!==car.id && (c.category===car.category||c.brand===car.brand)).slice(0,3);
  const incl=["Assurance tous risques","Kilométrage illimité (Alger)","Assistance 24/7","Véhicule désinfecté & contrôlé","2e conducteur offert"];

  return <div className="page-anim">
    <section style={{paddingTop:"calc(var(--nav-h) + 36px)",paddingBottom:20}}>
      <div className="wrap">
        <div style={{display:"flex",alignItems:"center",gap:8,marginBottom:24,fontSize:13,color:"var(--muted-2)"}}>
          <a href="#/" style={{color:"var(--muted)"}}>Accueil</a><Ic.chev style={{width:13,height:13}}/>
          <a href="#/voitures" style={{color:"var(--muted)"}}>Nos voitures</a><Ic.chev style={{width:13,height:13}}/>
          <span style={{color:"var(--gold-2)"}}>{car.name}</span>
        </div>
        <div className="detail-grid" style={{display:"grid",gridTemplateColumns:"1.3fr 1fr",gap:40,alignItems:"start"}}>
          {/* gallery */}
          <div>
            <div className="card" style={{overflow:"hidden",position:"relative",borderColor:"rgba(230,199,110,.2)"}}>
              <div style={{aspectRatio:"16/11",position:"relative"}}>
                <CarImage car={car}/>
                <span className="badge-gold" style={{position:"absolute",top:18,left:18}}>{car.category}</span>
                {car.real && <span className="chip" style={{position:"absolute",top:18,right:18,background:"rgba(11,11,13,.7)",backdropFilter:"blur(6px)"}}><Ic.check style={{width:13,height:13}}/>Photo réelle de l'agence</span>}
              </div>
            </div>
            {!car.real && <div className="mono" style={{fontSize:11,color:"var(--muted-2)",marginTop:10,textAlign:"center",letterSpacing:".1em"}}>VISUEL DE DÉMONSTRATION — PHOTO HD À VENIR</div>}
            {/* tags */}
            <div style={{display:"flex",gap:8,flexWrap:"wrap",marginTop:18}}>
              {car.tags.map(t=> <span key={t} className="chip"><Ic.check style={{width:13,height:13}}/>{t}</span>)}
            </div>
          </div>
          {/* info */}
          <div style={{display:"flex",flexDirection:"column",gap:22}}>
            <div>
              <h1 style={{fontFamily:"'Sora',sans-serif",fontWeight:800,fontSize:"clamp(30px,4vw,46px)",textTransform:"uppercase",lineHeight:1}}>{car.name}</h1>
              <div style={{color:"var(--muted)",marginTop:8}}>{car.brand} · {car.year} · {car.category}</div>
            </div>
            <div className="card" style={{padding:"20px 22px",display:"flex",alignItems:"center",justifyContent:"space-between",borderColor:"rgba(230,199,110,.28)"}}>
              <div>
                <span className="gold" style={{fontFamily:"'Sora',sans-serif",fontWeight:800,fontSize:38}}>{fmtPrice(car.price)} DA</span>
                <span style={{color:"var(--muted)"}}> / jour</span>
              </div>
              <div style={{textAlign:"right",fontSize:12.5,color:"var(--muted)"}}><div style={{color:"var(--gold-2)",fontFamily:"'Sora',sans-serif",fontWeight:600}}>Disponible</div>maintenant</div>
            </div>
            <p style={{color:"var(--muted)",lineHeight:1.7}}>{car.desc}</p>
            <div className="spec-grid" style={{display:"grid",gridTemplateColumns:"repeat(2,1fr)",gap:12}}>
              {specs.map(([I,l,v],i)=> <div key={i} style={{display:"flex",gap:12,alignItems:"center",padding:"13px 14px",border:"1px solid var(--border)",borderRadius:12,background:"var(--surface)"}}>
                <span style={{color:"var(--gold-2)"}}><I style={{width:20,height:20}}/></span>
                <div><div style={{fontSize:11.5,color:"var(--muted-2)",textTransform:"uppercase",letterSpacing:".08em"}}>{l}</div><div style={{fontWeight:600,fontSize:14.5}}>{v}</div></div>
              </div>)}
            </div>
            <div className="card" style={{padding:"18px 20px"}}>
              <div style={{fontFamily:"'Sora',sans-serif",fontWeight:600,fontSize:14,marginBottom:12}}>Inclus dans le tarif</div>
              <div style={{display:"grid",gridTemplateColumns:"1fr 1fr",gap:9}}>
                {incl.map(x=> <div key={x} style={{display:"flex",gap:9,alignItems:"center",fontSize:13.5,color:"var(--muted)"}}><Ic.check style={{width:15,height:15,color:"var(--gold-2)",flexShrink:0}}/>{x}</div>)}
              </div>
            </div>
            <div style={{display:"flex",gap:12,flexWrap:"wrap"}}>
              <a href={"#/reservation?vehicle="+car.id} className="btn btn-gold" style={{flex:1,minWidth:180}}><Ic.key/> Réserver ce véhicule</a>
              <a href={B.whatsappLink+"?text="+waMsg} target="_blank" rel="noopener" className="btn btn-wa" style={{flex:1,minWidth:180}}><Ic.whatsapp/> WhatsApp</a>
            </div>
            <a href={"tel:"+B.phonePrimaryTel} style={{textAlign:"center",color:"var(--muted)",fontSize:13.5}}>ou appelez-nous au <span style={{color:"var(--gold-2)"}}>{B.phonePrimary}</span></a>
          </div>
        </div>
      </div>
    </section>
    {similar.length>0 && <section className="section" style={{paddingTop:60}}>
      <div className="wrap">
        <h2 className="h-sec" style={{fontSize:"clamp(24px,3vw,34px)",marginBottom:28}}>Véhicules <span className="gold">similaires</span></h2>
        <div className="fleet-grid" style={{display:"grid",gridTemplateColumns:"repeat(3,1fr)",gap:22}}>
          {similar.map(c=> <CarCard key={c.id} car={c}/> )}
        </div>
      </div>
    </section>}
  </div>;
}

/* ============================ RESERVATION ============================ */
function ReservationPage({ route }){
  const q=parseQuery(route);
  const B=window.BUSINESS;
  const [f,setF]=useStateP({vehicle:q.vehicle||"",loc:q.loc||"",dd:q.dd||"",dh:q.dh||"",rd:q.rd||"",rh:q.rh||"",name:"",phone:"",email:"",msg:"",consent:false});
  const [errs,setErrs]=useStateP({});
  const [sent,setSent]=useStateP(false);
  const set=(k)=>(e)=>{ const v=e.target.type==="checkbox"?e.target.checked:e.target.value; setF(s=>({...s,[k]:v})); setErrs(s=>({...s,[k]:undefined})); };
  useEffectP(()=>{ window.scrollTo(0,0); },[]);

  const car=f.vehicle?getCar(f.vehicle):null;
  const days=useMemoP(()=>{
    if(!f.dd||!f.rd) return 0;
    const d=(new Date(f.rd)-new Date(f.dd))/86400000;
    return d>=0?Math.max(1,Math.round(d)):0;
  },[f.dd,f.rd]);
  const total=car&&days?car.price*days:0;

  const validate=()=>{
    const e={};
    if(!f.vehicle) e.vehicle="Choisissez un véhicule";
    if(!f.loc) e.loc="Indiquez un lieu";
    if(!f.dd) e.dd="Requis"; if(!f.rd) e.rd="Requis";
    if(f.dd&&f.rd&&new Date(f.rd)<new Date(f.dd)) e.rd="Date invalide";
    if(!f.name.trim()) e.name="Votre nom est requis";
    if(!/^[\d\s+]{8,}$/.test(f.phone)) e.phone="Téléphone invalide";
    if(f.email&&!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(f.email)) e.email="Email invalide";
    if(!f.consent) e.consent="Veuillez accepter pour continuer";
    setErrs(e); return Object.keys(e).length===0;
  };
  const submit=(e)=>{ e.preventDefault(); if(validate()){ setSent(true); window.scrollTo({top:0,behavior:"smooth"}); } };
  const waMsg=()=>{
    const t=`Bonjour Hamza LVH ! Demande de réservation :%0A`+
      `- Véhicule : ${car?car.name:f.vehicle||"à définir"}%0A`+
      `- Lieu : ${f.loc||"-"}%0A`+
      `- Du : ${f.dd||"-"} ${f.dh||""}%0A`+
      `- Au : ${f.rd||"-"} ${f.rh||""}%0A`+
      (days?`- Durée : ${days} jour(s)${total?` (~${fmtPrice(total)} DA)`:""}%0A`:"")+
      `- Nom : ${f.name||"-"}%0A- Tél : ${f.phone||"-"}`+
      (f.msg?`%0A- Message : ${f.msg}`:"");
    return B.whatsappLink+"?text="+t;
  };

  const Err=({k})=> errs[k]? <span className="err">{errs[k]}</span> : null;

  if(sent) return <div className="page-anim">
    <PageHeader crumb="Réservation" title={<>Demande <span className="gold">envoyée</span></>} crumbHide/>
    <section style={{paddingBottom:96}}><div className="wrap" style={{maxWidth:680}}>
      <div className="card" style={{padding:"clamp(32px,5vw,56px)",textAlign:"center",borderColor:"rgba(230,199,110,.3)",position:"relative",overflow:"hidden"}}>
        <div className="halo halo-gold" style={{width:360,height:360,top:-220,left:"50%",transform:"translateX(-50%)"}}></div>
        <div style={{position:"relative"}}>
          <div style={{width:76,height:76,borderRadius:"50%",background:"var(--gold-grad)",color:"#1A1407",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 24px",boxShadow:"var(--shadow-gold)"}}><Ic.check style={{width:38,height:38}}/></div>
          <h2 style={{fontFamily:"'Sora',sans-serif",fontWeight:800,fontSize:30,marginBottom:12}}>Merci {f.name.split(' ')[0]} !</h2>
          <p className="sub" style={{margin:"0 auto 8px",textAlign:"center"}}>Votre demande de réservation {car?<>pour la <strong style={{color:"var(--text)"}}>{car.name}</strong></>:""} a bien été enregistrée.</p>
          <p style={{color:"var(--muted)",marginBottom:28}}>Notre équipe vous recontacte très vite pour confirmer. Pour aller plus vite, finalisez sur WhatsApp.</p>
          {(car&&days)?<div className="card" style={{padding:"16px 20px",display:"inline-flex",gap:24,marginBottom:28,alignItems:"center"}}>
            <div><div style={{fontSize:12,color:"var(--muted-2)"}}>Durée</div><div style={{fontFamily:"'Sora',sans-serif",fontWeight:700}}>{days} jour{days>1?"s":""}</div></div>
            <div style={{borderLeft:"1px solid var(--border)",paddingLeft:24}}><div style={{fontSize:12,color:"var(--muted-2)"}}>Estimation</div><div className="gold" style={{fontFamily:"'Sora',sans-serif",fontWeight:800,fontSize:20}}>{fmtPrice(total)} DA</div></div>
          </div>:null}
          <div style={{display:"flex",gap:12,justifyContent:"center",flexWrap:"wrap"}}>
            <a href={waMsg()} target="_blank" rel="noopener" className="btn btn-wa"><Ic.whatsapp/> Finaliser sur WhatsApp</a>
            <a href="#/voitures" className="btn btn-ghost">Voir d'autres voitures</a>
          </div>
        </div>
      </div>
    </div></section>
  </div>;

  return <div className="page-anim">
    <PageHeader crumb="Réservation" eyebrow="Réservation" title={<>Réservez votre <span className="gold">voiture</span></>} sub="Remplissez le formulaire ci-dessous : nous confirmons votre réservation dans les plus brefs délais."/>
    <section style={{paddingBottom:96}}>
      <div className="wrap reservation-grid" style={{display:"grid",gridTemplateColumns:"1.5fr .9fr",gap:32,alignItems:"start"}}>
        <form onSubmit={submit} className="card" style={{padding:"clamp(24px,3vw,36px)",display:"flex",flexDirection:"column",gap:20}}>
          <div style={{fontFamily:"'Sora',sans-serif",fontWeight:700,fontSize:18,display:"flex",alignItems:"center",gap:10}}><Ic.cars style={{width:22,height:22,color:"var(--gold-2)"}}/> Votre véhicule</div>
          <div className={"field"+(errs.vehicle?" invalid":"")}><label>Véhicule souhaité</label><div className="control"><Ic.cars/><select value={f.vehicle} onChange={set("vehicle")}><option value="">Sélectionnez un véhicule</option>{window.FLEET.map(c=> <option key={c.id} value={c.id}>{c.name} — {fmtPrice(c.price)} DA/j</option>)}</select></div><Err k="vehicle"/></div>
          <div className={"field"+(errs.loc?" invalid":"")}><label>Lieu de prise en charge</label><div className="control"><Ic.pin/><select value={f.loc} onChange={set("loc")}><option value="">Choisissez un lieu</option>{window.LOCATIONS.map(l=> <option key={l} value={l}>{l}</option>)}</select></div><Err k="loc"/></div>
          <div className="form-row2" style={{display:"grid",gridTemplateColumns:"1fr 1fr",gap:16}}>
            <div className={"field"+(errs.dd?" invalid":"")}><label>Date & heure de départ</label><div className="control"><Ic.cal/><input type="date" value={f.dd} onChange={set("dd")}/></div><Err k="dd"/></div>
            <div className="field"><label>Heure de départ</label><div className="control"><Ic.clock/><input type="time" value={f.dh} onChange={set("dh")}/></div></div>
            <div className={"field"+(errs.rd?" invalid":"")}><label>Date & heure de retour</label><div className="control"><Ic.cal/><input type="date" value={f.rd} onChange={set("rd")}/></div><Err k="rd"/></div>
            <div className="field"><label>Heure de retour</label><div className="control"><Ic.clock/><input type="time" value={f.rh} onChange={set("rh")}/></div></div>
          </div>
          <hr className="hr-gold" style={{margin:"4px 0"}}/>
          <div style={{fontFamily:"'Sora',sans-serif",fontWeight:700,fontSize:18,display:"flex",alignItems:"center",gap:10}}><Ic.users style={{width:22,height:22,color:"var(--gold-2)"}}/> Vos coordonnées</div>
          <div className="form-row2" style={{display:"grid",gridTemplateColumns:"1fr 1fr",gap:16}}>
            <div className={"field"+(errs.name?" invalid":"")}><label>Nom complet</label><div className="control"><Ic.users/><input value={f.name} onChange={set("name")} placeholder="Votre nom"/></div><Err k="name"/></div>
            <div className={"field"+(errs.phone?" invalid":"")}><label>Téléphone</label><div className="control"><Ic.phone/><input value={f.phone} onChange={set("phone")} placeholder="0X XX XX XX XX"/></div><Err k="phone"/></div>
          </div>
          <div className={"field"+(errs.email?" invalid":"")}><label>Email (optionnel)</label><div className="control"><Ic.mail/><input value={f.email} onChange={set("email")} placeholder="vous@email.com"/></div><Err k="email"/></div>
          <div className="field"><label>Message (optionnel)</label><div className="control area"><textarea rows="3" value={f.msg} onChange={set("msg")} placeholder="Une demande particulière ? Siège bébé, livraison, durée longue…"></textarea></div></div>
          <label className={"consent"+(errs.consent?" invalid":"")} style={{display:"flex",gap:12,alignItems:"flex-start",cursor:"pointer",fontSize:13.5,color:"var(--muted)"}}>
            <input type="checkbox" checked={f.consent} onChange={set("consent")} style={{marginTop:3,accentColor:"#C9A24B",width:18,height:18,flexShrink:0}}/>
            <span>J'accepte d'être recontacté(e) par Hamza LVH concernant ma demande de réservation. {errs.consent && <span className="err" style={{display:"block"}}>{errs.consent}</span>}</span>
          </label>
          <div style={{display:"flex",gap:12,flexWrap:"wrap"}}>
            <button type="submit" className="btn btn-gold" style={{flex:1,minWidth:180}}><Ic.check/> Envoyer ma demande</button>
            <a href={waMsg()} target="_blank" rel="noopener" className="btn btn-wa" style={{flex:1,minWidth:180}}><Ic.whatsapp/> Réserver via WhatsApp</a>
          </div>
        </form>
        {/* summary */}
        <aside className="reservation-summary" style={{position:"sticky",top:"calc(var(--nav-h) + 16px)",display:"flex",flexDirection:"column",gap:16}}>
          <div className="card" style={{overflow:"hidden"}}>
            <div style={{aspectRatio:"16/10",position:"relative",background:"#0E0F12"}}>
              {car? <CarImage car={car}/> : <div className="ph"><div className="ph-glow"></div><div className="ph-brand" style={{fontSize:24}}>Hamza LVH</div><div className="ph-label">Sélectionnez un véhicule</div></div>}
              {car && <div style={{position:"absolute",inset:0,background:"linear-gradient(180deg,transparent 50%,rgba(11,11,13,.8))"}}></div>}
              {car && <div style={{position:"absolute",left:16,bottom:14}}><div style={{fontFamily:"'Sora',sans-serif",fontWeight:700,fontSize:18}}>{car.name}</div><div style={{color:"var(--muted)",fontSize:12.5}}>{car.year} · {car.fuel} · {car.gearbox}</div></div>}
            </div>
            <div style={{padding:"18px 20px",display:"flex",flexDirection:"column",gap:12}}>
              <div style={{fontFamily:"'Sora',sans-serif",fontWeight:700,fontSize:15}}>Récapitulatif</div>
              <Row l="Tarif / jour" v={car?fmtPrice(car.price)+" DA":"—"}/>
              <Row l="Durée" v={days?days+" jour"+(days>1?"s":""):"—"}/>
              <Row l="Lieu" v={f.loc||"—"}/>
              <hr className="hr-gold"/>
              <div style={{display:"flex",justifyContent:"space-between",alignItems:"center"}}>
                <span style={{fontFamily:"'Sora',sans-serif",fontWeight:700}}>Total estimé</span>
                <span className="gold" style={{fontFamily:"'Sora',sans-serif",fontWeight:800,fontSize:24}}>{total?fmtPrice(total)+" DA":"—"}</span>
              </div>
              <div style={{fontSize:11.5,color:"var(--muted-2)",lineHeight:1.5}}>Estimation indicative. Le tarif final est confirmé par l'agence (assurance incluse).</div>
            </div>
          </div>
          <div className="card" style={{padding:"18px 20px",display:"flex",flexDirection:"column",gap:12}}>
            {[[Ic.shield,"Assurance tous risques incluse"],[Ic.clock,"Assistance 24h/24 · 7j/7"],[Ic.tag,"Meilleurs prix garantis"]].map(([I,t],i)=>
              <div key={i} style={{display:"flex",gap:11,alignItems:"center",fontSize:13.5,color:"var(--muted)"}}><span style={{color:"var(--gold-2)"}}><I style={{width:18,height:18}}/></span>{t}</div>)}
          </div>
        </aside>
      </div>
    </section>
  </div>;
}
function Row({l,v}){ return <div style={{display:"flex",justifyContent:"space-between",fontSize:14}}><span style={{color:"var(--muted)"}}>{l}</span><span style={{fontWeight:600}}>{v}</span></div>; }

Object.assign(window,{ PageHeader, CatalogPage, VehicleDetailPage, ReservationPage, getCar, parseQuery });
