);
}
function LiveDot() { return ; }
/* The wine crate — six bottles, one gold = the possible Reserve. Pure CSS, the new hero object */
function WineCrate({ size = 360, sku = "GW-014", hint = true, hintText = "1 in 11 hides a Reserve", sealed = true }) {
const goldIdx = 3;
return (
{hint && (
{hintText}
)}
{[0, 1, 2, 3, 4, 5].map((i) => (
))}
{sku} · {sealed ? "SEALED" : "OPEN"}
);
}
function useCountdown(seconds) {
const [t, setT] = useState(seconds);
useEffect(() => {
const id = setInterval(() => setT((v) => (v > 0 ? v - 1 : 0)), 1000);
return () => clearInterval(id);
}, []);
const h = String(Math.floor(t / 3600)).padStart(2, "0");
const m = String(Math.floor((t % 3600) / 60)).padStart(2, "0");
const s = String(t % 60).padStart(2, "0");
return { h, m, s, str: `${h}:${m}:${s}` };
}
function TimerBar({ h, m, s, center }) {
return (
);
}
/* Odds grid — N boxes, one glowing volt = the hidden bottle */
function OddsGrid({ n = 11 }) {
const hit = Math.floor(n / 2); // glow roughly mid-grid
return (
{Array.from({ length: n }).map((_, i) => (
{i === hit && }
))}
);
}
function Step({ n, title, children }) {
return (