<?php require_once __DIR__ . '/includes/public_bootstrap.php'; $djs=ugfx_djs(); ugfx_public_header('Underground FX Radio Jockeys'); ?><section class="page-hero"><div class="container-xxl"><div class="glass-panel page-hero-card"><div class="section-heading mb-0"><div><h1>Radio jockey roster</h1><p>The DJ wall now lives in the flagship shell, keeps your source-driven data, and gives listeners a cleaner way to browse the personalities behind the station.</p></div><input class="form-control dj-search" placeholder="Search the roster" data-dj-search></div></div></div></section><section class="pb-5"><div class="container-xxl"><div class="roster-grid"><?php foreach($djs as $dj): $search=strtolower(($dj['name'] ?? '').' '.($dj['show'] ?? '').' '.($dj['bio'] ?? '')); ?><article class="dj-card" data-dj-card data-search="<?= htmlspecialchars($search) ?>"><div class="d-flex gap-3 align-items-start"><img class="dj-avatar" src="<?= htmlspecialchars(ugfx_asset_url($dj['image'] ?? 'img/djs/stationhost1.jpg')) ?>" alt="<?= htmlspecialchars($dj['name'] ?? 'RJ') ?>"><div><div class="meta-pill mb-2"><?= htmlspecialchars($dj['source_profile'] ?? 'RJ source') ?></div><h2 class="h4 mb-1"><?= htmlspecialchars($dj['name'] ?? '') ?></h2><div class="text-secondary"><?= htmlspecialchars($dj['show'] ?? '') ?></div></div></div><p class="text-secondary mt-3 mb-0"><?= htmlspecialchars($dj['bio'] ?? '') ?></p></article><?php endforeach; ?></div></div></section><?php ugfx_public_footer(); ?>