/* ==== Brand palette (tweak these hex codes later) ==== */
:root{
  --bg:#ffffff; --fg:#0f172a; --muted:#64748b; --card:#ffffff;
  --accent:#7c3aed;       /* primary (plum)   */
  --accent-2:#f472b6;     /* secondary (blush) */
  --ring:#c4b5fd;         /* focus ring        */
  --border:#e5e7eb;
}

*{box-sizing:border-box}
body{
  margin:0; color:var(--fg); background:var(--bg);
  font:16px/1.5 ui-sans-serif,system-ui,Segoe UI,Roboto,Helvetica,Arial;
  background-image:
    radial-gradient(1000px 600px at 15% -10%, #fdf2f8 0, transparent 60%),
    radial-gradient(900px 520px at 110% -10%, #ede9fe 0, transparent 55%);
  background-attachment: fixed;
}
.wrap{max-width:1040px;margin:40px auto;padding:0 24px}

/* Header / hero */
header{margin:8px 0 18px}
header .brand{display:flex;align-items:center;gap:10px}
header .brand .logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--accent-2))}
header h1{margin:0;font-size:34px;letter-spacing:-0.01em}
.sub{margin:6px 0 22px;color:var(--muted)}

/* Search */
.search{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0 26px}
.search label{display:flex;flex-direction:column;font-size:14px;color:var(--muted)}
.search input,.search select{
  padding:10px 12px;border:1px solid var(--border);border-radius:12px;min-width:220px;background:#fff;
}
.btn{padding:10px 16px;border-radius:12px;border:0;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}
.btn:hover{filter:brightness(1.05)}
.btn.secondary{background:var(--accent-2)}
.btn:focus{outline:2px solid var(--ring);outline-offset:2px}

/* Category chips */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 20px}
.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:var(--card);border:1px solid var(--border);text-decoration:none;color:inherit}
.chip:hover{border-color:#d1d5db}
.chip .dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}

/* Cards grid */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.card{display:block;padding:16px;border-radius:16px;background:var(--card);text-decoration:none;color:inherit;border:1px solid var(--border);box-shadow:0 1px 0 rgba(0,0,0,.03)}
.card:hover{border-color:#d1d5db}

/* Footer */
footer{margin:36px 0;color:var(--muted);font-size:14px}
