<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Katalog Baju Celana Klasik Roblox</title>
<style>
  :root{
    --bg:#0f1115; --card:#171a21; --card2:#1e2230; --line:#2a2f40;
    --text:#f2f4f8; --muted:#9aa3b8; --accent:#6c8cff; --gold:#ffcf5c; --green:#4ade80; --red:#f87171;
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
  header{position:sticky;top:0;z-index:20;background:rgba(15,17,21,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:14px 20px}
  .wrap{max-width:1200px;margin:0 auto}
  h1{font-size:20px;margin:0 0 2px}
  .sub{color:var(--muted);font-size:13px}
  .controls{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
  input[type=search],select{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px 12px;font-size:14px}
  input[type=search]{flex:1;min-width:200px}
  .stats{color:var(--muted);font-size:13px;margin:14px 0 4px}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;padding:6px 0 40px}
  .card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;transition:transform .12s,border-color .12s}
  .card:hover{transform:translateY(-2px);border-color:var(--accent)}
  .thumb{aspect-ratio:1/1;background:var(--card2);display:flex;align-items:center;justify-content:center}
  .thumb img{width:100%;height:100%;object-fit:contain}
  .thumb .nothumb{color:var(--muted);font-size:12px}
  .info{padding:10px 12px}
  .name{font-size:13px;font-weight:600;line-height:1.35;min-height:35px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .meta{display:flex;justify-content:space-between;align-items:center;margin-top:8px}
  .price{color:var(--gold);font-weight:700;font-size:14px}
  .tag{font-size:11px;color:var(--muted);background:var(--card2);border:1px solid var(--line);padding:2px 8px;border-radius:20px}
  .fav{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.5);border:none;border-radius:50%;width:32px;height:32px;font-size:16px;cursor:pointer;color:#fff}
  .fav.on{color:var(--gold)}
  .thumbwrap{position:relative}
  .modal{position:fixed;inset:0;background:rgba(0,0,0,.7);display:none;align-items:center;justify-content:center;z-index:50;padding:20px}
  .modal.open{display:flex}
  .sheet{background:var(--card);border:1px solid var(--line);border-radius:18px;max-width:520px;width:100%;overflow:hidden}
  .sheet img{width:100%;max-height:380px;object-fit:contain;background:var(--card2)}
  .sheet .body{padding:18px 20px}
  .sheet h2{margin:0 0 6px;font-size:18px}
  .sheet .row{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;color:var(--muted);font-size:13px}
  .btn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;padding:10px 16px;border-radius:10px;font-weight:600;font-size:14px;margin-top:6px}
  .btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
  .close{float:right;background:none;border:none;color:var(--muted);font-size:22px;cursor:pointer}
  .foot{color:var(--muted);font-size:12px;text-align:center;padding:0 0 30px}
</style>
</head>
<body>
<header>
  <div class="wrap">
    <h1>🛍️ Katalog Baju &amp; Celana Klasik</h1>
    <div class="sub" id="subline">Memuat data…</div>
    <div class="controls">
      <input type="search" id="q" placeholder="Cari nama item…">
      <select id="type">
        <option value="">Semua tipe</option>
        <option value="11">Classic Shirts</option>
        <option value="12">Classic Pants</option>
        <option value="2">T-Shirts</option>
      </select>
      <select id="sale">
        <option value="">Semua status</option>
        <option value="1">Dijual</option>
        <option value="0">Tidak dijual</option>
      </select>
      <select id="sort">
        <option value="name">Urut: Nama A–Z</option>
        <option value="priceAsc">Urut: Harga termurah</option>
        <option value="priceDesc">Urut: Harga termahal</option>
      </select>
      <select id="favonly">
        <option value="">Semua item</option>
        <option value="1">★ Favorit saya</option>
      </select>
    </div>
  </div>
</header>
<div class="wrap">
  <div class="stats" id="stats"></div>
  <div class="grid" id="grid"></div>
  <div class="foot">Data diambil otomatis dari katalog Roblox · Harga dalam Robux · Klik item untuk detail</div>
</div>
<div class="modal" id="modal"><div class="sheet">
  <div class="body">
    <button class="close" id="close">✕</button>
    <div id="sheetBody"></div>
  </div>
</div></div>
<script>
let ITEMS=[];
const TYPE_NAMES={"2":"T-Shirt","11":"Classic Shirt","12":"Classic Pants"};
let favs=new Set(JSON.parse(localStorage.getItem("rbx_favs")||"[]"));
function saveFavs(){localStorage.setItem("rbx_favs",JSON.stringify([...favs]));}
function priceHtml(p){return (p==null||p==="")?'<span style="color:var(--muted)">—</span>':'<span class="price">R$ '+p+'</span>';}
function render(){
  const q=document.getElementById("q").value.toLowerCase();
  const t=document.getElementById("type").value;
  const s=document.getElementById("sale").value;
  const sort=document.getElementById("sort").value;
  const fo=document.getElementById("favonly").value;
  let list=ITEMS.filter(it=>{
    const nm=((it.name||"")+" "+(it.nameFromUrl||"")).toLowerCase();
    if(q&&!nm.includes(q))return false;
    if(t&&String(it.assetTypeId)!==t)return false;
    if(s==="1"&&!it.forSale)return false;
    if(s==="0"&&it.forSale)return false;
    if(fo==="1"&&!favs.has(it.id))return false;
    return true;
  });
  if(sort==="name")list.sort((a,b)=>(a.name||"").localeCompare(b.name||""));
  if(sort==="priceAsc")list.sort((a,b)=>(a.price??1e9)-(b.price??1e9));
  if(sort==="priceDesc")list.sort((a,b)=>(b.price??-1)-(a.price??-1));
  document.getElementById("stats").textContent=`Menampilkan ${list.length} dari ${ITEMS.length} item`;
  const g=document.getElementById("grid");g.innerHTML="";
  for(const it of list){
    const card=document.createElement("div");card.className="card";
    const url=(it.thumbnail&&it.thumbnail.url)||"";
    card.innerHTML=`
      <div class="thumbwrap">
        <div class="thumb">${url?`<img loading="lazy" src="${url}" alt="">`:'<span class="nothumb">tanpa gambar</span>'}</div>
        <button class="fav ${favs.has(it.id)?"on":""}" data-id="${it.id}">${favs.has(it.id)?"★":"☆"}</button>
      </div>
      <div class="info">
        <div class="name">${escapeHtml(it.name||it.nameFromUrl||("Item "+it.id))}</div>
        <div class="meta">${priceHtml(it.price)}<span class="tag">${TYPE_NAMES[it.assetTypeId]||("Tipe "+it.assetTypeId)}</span></div>
      </div>`;
    card.addEventListener("click",e=>{if(e.target.classList.contains("fav"))return;openSheet(it);});
    g.appendChild(card);
  }
  g.querySelectorAll(".fav").forEach(b=>b.addEventListener("click",e=>{
    e.stopPropagation();
    const id=b.dataset.id;
    favs.has(id)?favs.delete(id):favs.add(id);
    saveFavs();render();
  }));
}
function escapeHtml(s){return String(s).replace(/[&<>"']/g,c=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[c]));}
function openSheet(it){
  const url=(it.thumbnail&&it.thumbnail.url)||"";
  document.getElementById("sheetBody").innerHTML=`
    ${url?`<img src="${url}" alt="">`:""}
    <h2>${escapeHtml(it.name||it.nameFromUrl||("Item "+it.id))}</h2>
    <div class="row">
      <span>${priceHtml(it.price)}</span>
      <span>· ${TYPE_NAMES[it.assetTypeId]||("Tipe "+it.assetTypeId)}</span>
      <span>· ${it.forSale?"✅ Dijual":"❌ Tidak dijual"}</span>
      ${it.creator?`<span>· oleh ${escapeHtml(it.creator)}</span>`:""}
    </div>
    <a class="btn" target="_blank" rel="noopener" href="https://www.roblox.com/catalog/${it.id}/x">Buka di Roblox ↗</a>
    <button class="btn ghost" id="favBtn">${favs.has(it.id)?"★ Hapus dari favorit":"☆ Tambah ke favorit"}</button>`;
  document.getElementById("modal").classList.add("open");
  document.getElementById("favBtn").addEventListener("click",()=>{
    favs.has(it.id)?favs.delete(it.id):favs.add(it.id);saveFavs();render();openSheet(it);
  });
}
document.getElementById("close").addEventListener("click",()=>document.getElementById("modal").classList.remove("open"));
document.getElementById("modal").addEventListener("click",e=>{if(e.target.id==="modal")document.getElementById("modal").classList.remove("open");});
["q","type","sale","sort","favonly"].forEach(id=>document.getElementById(id).addEventListener("input",render));
fetch("catalog.json").then(r=>r.json()).then(data=>{
  ITEMS=data;
  const sale=data.filter(i=>i.forSale).length;
  document.getElementById("subline").textContent=`${data.length} item · ${sale} masih dijual`;
  render();
}).catch(()=>{document.getElementById("subline").textContent="Gagal memuat catalog.json";});
</script>
</body>
</html>
