<!-- ===== index.html ===== -->

<!doctype html>

<html lang="ru">

<head>

  <meta charset="utf-8" />

  <meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>Автосписок (мок-данные до подключения API)</title>

  <style>

    :root{color-scheme:light dark}

    body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;margin:0}

    header{padding:1rem;border-bottom:1px solid #ccc;position:sticky;top:0;background:color-mix(in hsl,canvas 92%,transparent);backdrop-filter:blur(6px)}

    h1{font-size:clamp(1.1rem,2vw,1.5rem);margin:.2rem 0}

    .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;padding:1rem}

    .card{border:1px solid #ddd;border-radius:1rem;overflow:hidden;display:flex;flex-direction:column;background:Canvas}

    .thumb{aspect-ratio:16/10;object-fit:cover;width:100%;background:#eee}

    .info{padding:.8rem;display:grid;gap:.35rem}

    .muted{opacity:.75;font-size:.9rem}

    .error{padding:1rem;color:#b91c1c}

    .empty{padding:1rem;color:#6b7280}

    button{padding:.5rem .8rem;border:0;border-radius:.6rem;background:#2563eb;color:#fff;font-weight:600;cursor:pointer}

  </style>

</head>

<body>

  <header>

    <h1>Список автомобилей (пока мок‑данные)</h1>

    <button id="reload">Обновить</button>

  </header>

  <main id="app"><p class="empty">Загрузка…</p></main>


  <script>

    const app = document.getElementById('app');

    document.getElementById('reload').addEventListener('click', load);

    load();


    async function load(){

      app.innerHTML = '<p class="empty">Загрузка…</p>';

      try{

        const res = await fetch('api/mobilede.php', { headers: { 'Accept': 'application/json' } });

        if(!res.ok) throw new Error('HTTP '+res.status);

        const data = await res.json();

        render(data);

      }catch(e){

        app.innerHTML = '<p class="error">Ошибка загрузки: '+ e.message +'</p>';

      }

    }


    function render(list){

      if(!Array.isArray(list) || !list.length){

        app.innerHTML = '<p class="empty">Пока нет автомобилей.</p>';

        return;

      }

      const grid = document.createElement('div');

      grid.className = 'grid';

      for(const ad of list){

        const card = document.createElement('article');

        card.className = 'card';

        const img = document.createElement('img');

        img.className = 'thumb';

        img.alt = ad.title || 'Авто';

        img.loading = 'lazy';

        img.src = (ad.images && ad.images[0]) || 'data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1200 750%22><rect width=%22100%25%22 height=%22100%25%22 fill=%22%23ddd%22/></svg>';

        const info = document.createElement('div');

        info.className = 'info';

        const h3 = document.createElement('h3');

        h3.textContent = ad.title || `${ad.make||''} ${ad.model||''}`.trim();

        const p1 = document.createElement('div');

        p1.innerHTML = `<strong>${fmtPrice(ad.price)}</strong> · <span class="muted">${(ad.firstRegistration||'').slice(0,7)} · ${fmtKm(ad.mileage)}</span>`;

        const p2 = document.createElement('div');

        p2.className = 'muted';

        p2.textContent = [ad.powerKW?ad.powerKW+' кВт':null, ad.fuelType].filter(Boolean).join(' · ');

        const a = document.createElement('a');

        a.href = ad.url || '#'; a.target = '_blank'; a.rel = 'noopener';

        a.textContent = ad.url ? 'Открыть объявление на mobile.de' : 'Ссылка недоступна';

        info.append(h3,p1,p2,a);

        card.append(img,info);

        grid.append(card);

      }

      app.innerHTML = '';

      app.append(grid);

    }


    function fmtPrice(v){ if(v==null) return ''; return new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(v); }

    function fmtKm(v){ if(v==null) return ''; return new Intl.NumberFormat('de-DE').format(v) + ' км'; }

  </script>

</body>

</html>