// ── PAGES ────────────────────────────────────────────────────────────── // ── ASCII Logo (sampled from ava.jpg) ────────────────────────────────── function AsciiLogo() { const art = window.__ASCII_LOGO__ || ''; const [glitched, setGlitched] = React.useState(''); // Calmer glitch: rare, only a handful of char swaps, no line shifts React.useEffect(() => { if (!art) return; const junk = '▒░·#'; const id = setInterval(() => { if (Math.random() < 0.82) {setGlitched('');return;} const arr = art.split(''); const n = 2 + Math.floor(Math.random() * 4); for (let k = 0; k < n; k++) { const idx = Math.floor(Math.random() * arr.length); if (arr[idx] !== '\n' && arr[idx] !== ' ') { arr[idx] = junk[Math.floor(Math.random() * junk.length)]; } } setGlitched(arr.join('')); }, 380); return () => clearInterval(id); }, [art]); return (
{glitched || art}
); } // ── Home ─────────────────────────────────────────────────────────────── function HomePage({ setPage }) { return (
[ shi o kiku ]
); } // ── Releases ────────────────────────────────────────────────────────── function ReleasesPage({ layout, onOpenRelease }) { const [filter, setFilter] = React.useState('all'); const filtered = filter === 'all' ? RELEASES : RELEASES.filter((r) => r.genre === filter); return (

releases.

[ {filtered.length.toString().padStart(3, '0')} / {RELEASES.length.toString().padStart(3, '0')} ] · sok catalog
{GENRES.map((g) => )}
{layout === 'grid' ?
{filtered.map((r) =>
onOpenRelease(r)}>
{r.cat}
{r.glyph}
{r.genre} {r.date}
{r.title}
{r.artists.join(' & ')}
{r.cat}
)}
:
{filtered.map((r, i) =>
onOpenRelease(r)}> {String(filtered.length - i).padStart(3, '0')}
{r.title}
{r.artists.join(' & ')}
{r.genre}
{r.cat}
{r.date}
)}
}
); } // ── Artists ─────────────────────────────────────────────────────────── function ArtistsPage() { return (

roster.

[ {ARTISTS.length.toString().padStart(2, '0')} ] · resident producers
{ARTISTS.map((a, i) =>
{String(i + 1).padStart(2, '0')}
{a.role}
{a.name}
{a.sig}
loc {a.loc} releases {a.releases}
)}
); } // ── Events ──────────────────────────────────────────────────────────── function EventsPage() { return (

parties.

live · b2b · listening sessions
{EVENTS.map((e, i) =>
{e.day} {e.mon}

{e.title}

// {e.loc}
line-up: {e.lineup.map((n, j) => {n}{j < e.lineup.length - 1 ? ' · ' : ''} )}
{e.tcEvent && e.tcToken ? : e.url ? {e.price} → :
{e.price}
}
{e.tag}
)}
); } // ── Shop ────────────────────────────────────────────────────────────── function ShopPage() { return (

shop.

SHIPS WORLDWIDE
{SHOP.map((it, i) =>
{it.tag && {it.tag}}
{it.glyph}
{it.ttl} {it.price}
)}
); } // ── Contact ─────────────────────────────────────────────────────────── function ContactPage() { const [sent, setSent] = React.useState(false); const submit = (e) => {e.preventDefault();setSent(true);}; return (

send a demo.

we listen to everything · reply within ~2 weeks

// the deal

we're not picky about genre, only about intent. send 2–5 tracks, unmastered is fine, .wav or a private soundcloud link works. no rar archives, please.

we listen on a saturday over a kettle of bad coffee. if you don't hear back in two weeks — we did listen, and it wasn't a fit (this time). try again with the next one.

{sent ? 'we will get back to you.' : 'no attachments — links only'}
demos
demo@shiokiku.ru
booking
book@shiokiku.ru
telegram
@shiokiku
based in
krasnodar · rf · 45°02′N 38°58′E
); } Object.assign(window, { HomePage, ReleasesPage, ArtistsPage, EventsPage, ShopPage, ContactPage });