48 interface atoms derived directly from Yoruba behavioral principles. Each atom is traceable to specific anthropological evidence — not generic symbols, but culturally-grounded visual vocabulary invented as if this civilization had independently created digital interfaces.
Movement through space is social navigation — "to know where one is is to know whose one is near." Navigation follows graded spatial morality: proximity to center correlates with seniority and legitimacy.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.nav-drum { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.nav-skin { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.nav-cord { fill: none; stroke: #3D3530; stroke-width: 1.2; stroke-linecap: round; }
</style></defs>
<ellipse class="nav-drum" cx="24" cy="14" rx="10" ry="4"/>
<path class="nav-drum" d="M 14 14 C 14 24, 16 32, 24 36 C 32 32, 34 24, 34 14"/>
<ellipse class="nav-drum" cx="24" cy="36" rx="10" ry="4"/>
<line class="nav-cord" x1="14" y1="14" x2="14" y2="36"/>
<line class="nav-cord" x1="34" y1="14" x2="34" y2="36"/>
<line class="nav-skin" x1="20" y1="36" x2="28" y2="36"/>
<line class="nav-skin" x1="22" y1="14" x2="26" y2="14"/>
<circle class="nav-cord" cx="24" cy="6" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.town-core { fill: none; stroke: #A39E98; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.town-ring { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.town-gate { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
</style></defs>
<circle class="town-core" cx="24" cy="24" r="6"/>
<circle class="town-ring" cx="24" cy="24" r="12"/>
<circle class="town-ring" cx="24" cy="24" r="18"/>
<path class="town-gate" d="M 24 6 L 24 12"/>
<path class="town-gate" d="M 42 24 L 36 24"/>
<path class="town-gate" d="M 24 42 L 24 36"/>
<path class="town-gate" d="M 6 24 L 12 24"/>
<circle class="town-core" cx="24" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.chain-link { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.chain-connect { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
.chain-node { fill: #A39E98; }
</style></defs>
<ellipse class="chain-link" cx="12" cy="24" rx="5" ry="8"/>
<ellipse class="chain-link" cx="24" cy="24" rx="5" ry="8"/>
<ellipse class="chain-link" cx="36" cy="24" rx="5" ry="8"/>
<line class="chain-connect" x1="17" y1="24" x2="19" y2="24"/>
<line class="chain-connect" x1="29" y1="24" x2="31" y2="24"/>
<circle class="chain-node" cx="12" cy="24" r="2"/>
<circle class="chain-node" cx="24" cy="24" r="2"/>
<circle class="chain-node" cx="36" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.mask-face { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.mask-eye { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
.mask-detail { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<ellipse class="mask-face" cx="24" cy="20" rx="12" ry="10"/>
<ellipse class="mask-eye" cx="18" cy="18" rx="3" ry="2"/>
<ellipse class="mask-eye" cx="30" cy="18" rx="3" ry="2"/>
<path class="mask-face" d="M 20 26 C 22 28, 26 28, 28 26"/>
<path class="mask-detail" d="M 12 20 C 10 24, 12 28, 16 30"/>
<path class="mask-detail" d="M 36 20 C 38 24, 36 28, 32 30"/>
<line class="mask-face" x1="24" y1="30" x2="24" y2="40"/>
<ellipse class="mask-detail" cx="24" cy="42" rx="4" ry="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.prostrate-body { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.prostrate-ground { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.prostrate-respect { fill: none; stroke: #A39E98; stroke-width: 1.2; stroke-linecap: round; }
</style></defs>
<path class="prostrate-body" d="M 36 12 C 32 12, 28 14, 26 18 C 24 22, 22 26, 20 30"/>
<path class="prostrate-body" d="M 26 18 C 24 16, 22 16, 20 18"/>
<path class="prostrate-body" d="M 20 30 C 18 32, 16 34, 14 34"/>
<line class="prostrate-ground" x1="8" y1="38" x2="40" y2="38"/>
<path class="prostrate-respect" d="M 12 34 C 10 36, 10 38, 12 40"/>
<path class="prostrate-respect" d="M 16 32 C 14 34, 14 36, 16 38"/>
<path class="prostrate-respect" d="M 20 30 C 18 32, 18 34, 20 36"/>
<circle class="prostrate-body" cx="36" cy="12" r="2"/>
</svg>Identity is not declared but engineered through repeated, layered nominations. Names, praise poetry, dress, and greeting all function as identity-programming technologies that continuously reinforce who a person is.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.ori-head { fill: none; stroke: #6B6560; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.ori-inner { fill: none; stroke: #2D2D2D; stroke-width: 2; stroke-linecap: round; }
.ori-destiny { fill: #C9A84C; }
.ori-crown { fill: none; stroke: #1A1A1A; stroke-width: 1.5; stroke-linecap: round; }
</style></defs>
<circle class="ori-head" cx="24" cy="24" r="16"/>
<circle class="ori-inner" cx="24" cy="24" r="10"/>
<circle class="ori-destiny" cx="24" cy="24" r="4"/>
<path class="ori-crown" d="M 12 12 C 16 8, 20 6, 24 6 C 28 6, 32 8, 36 12"/>
<path class="ori-crown" d="M 16 10 C 18 8, 20 8, 22 10"/>
<path class="ori-crown" d="M 26 10 C 28 8, 30 8, 32 10"/>
<circle class="ori-destiny" cx="24" cy="6" r="1.5"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.name-layer { fill: none; stroke: #5C4A3A; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.name-core { fill: none; stroke: #A39E98; stroke-width: 2.5; stroke-linecap: round; }
.name-spirit { fill: #C9A84C; }
.name-palm { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
</style></defs>
<circle class="name-layer" cx="24" cy="24" r="18"/>
<circle class="name-layer" cx="24" cy="24" r="14"/>
<circle class="name-core" cx="24" cy="24" r="10"/>
<circle class="name-spirit" cx="24" cy="24" r="5"/>
<path class="name-palm" d="M 18 14 C 16 12, 14 12, 12 14 C 10 16, 10 18, 12 20"/>
<path class="name-palm" d="M 30 14 C 32 12, 34 12, 36 14 C 38 16, 38 18, 36 20"/>
<circle class="name-spirit" cx="24" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.opele-chain { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.opele-seed { fill: #A39E98; }
.opele-divine { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
</style></defs>
<path class="opele-chain" d="M 8 24 C 12 20, 16 20, 20 24 C 24 28, 28 28, 32 24 C 36 20, 40 20, 44 24"/>
<circle class="opele-seed" cx="8" cy="24" r="3"/>
<circle class="opele-seed" cx="20" cy="24" r="3"/>
<circle class="opele-seed" cx="32" cy="24" r="3"/>
<circle class="opele-seed" cx="44" cy="24" r="3"/>
<path class="opele-divine" d="M 14 18 C 16 16, 18 16, 20 18"/>
<path class="opele-divine" d="M 26 18 C 28 16, 30 16, 32 18"/>
<path class="opele-divine" d="M 38 18 C 40 16, 42 16, 44 18"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.crown-dome { fill: none; stroke: #D4B86A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.crown-veil { fill: none; stroke: #C9A84C; stroke-width: 1.5; stroke-linecap: round; }
.crown-bead { fill: #E8D5A0; }
.crown-bird { fill: none; stroke: #A39E98; stroke-width: 1.2; stroke-linecap: round; }
</style></defs>
<path class="crown-dome" d="M 12 28 C 12 16, 18 8, 24 8 C 30 8, 36 16, 36 28"/>
<line class="crown-veil" x1="12" y1="28" x2="12" y2="40"/>
<line class="crown-veil" x1="36" y1="28" x2="36" y2="40"/>
<path class="crown-veil" d="M 12 40 C 16 42, 20 42, 24 40 C 28 42, 32 42, 36 40"/>
<circle class="crown-bead" cx="24" cy="8" r="2"/>
<circle class="crown-bead" cx="18" cy="14" r="1.5"/>
<circle class="crown-bead" cx="30" cy="14" r="1.5"/>
<path class="crown-bird" d="M 20 20 C 18 18, 18 16, 20 16 C 22 16, 22 18, 20 20"/>
<path class="crown-bird" d="M 28 20 C 30 18, 30 16, 28 16 C 26 16, 26 18, 28 20"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.flame-outer { fill: none; stroke: #C4B49A; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.flame-mid { fill: none; stroke: #B83232; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.flame-core { fill: #C9A84C; }
.flame-base { fill: none; stroke: #8B1A1A; stroke-width: 2; stroke-linecap: round; }
.flame-smoke { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<path class="flame-outer" d="M 24 38 C 16 38, 12 30, 14 22 C 16 14, 20 10, 24 6 C 28 10, 32 14, 34 22 C 36 30, 32 38, 24 38"/>
<path class="flame-mid" d="M 24 34 C 18 34, 16 28, 17 22 C 18 16, 21 14, 24 12 C 27 14, 30 16, 31 22 C 32 28, 30 34, 24 34"/>
<circle class="flame-core" cx="24" cy="24" r="4"/>
<path class="flame-base" d="M 14 38 C 14 40, 18 42, 24 42 C 30 42, 34 40, 34 38"/>
<path class="flame-smoke" d="M 22 6 C 20 4, 20 2, 22 0" opacity="0.5"/>
<path class="flame-smoke" d="M 26 6 C 28 4, 28 2, 26 0" opacity="0.5"/>
</svg>Every interaction is a social act with moral weight. Buttons are not mere triggers but offerings; inputs are sacred surfaces where questions are laid for interpretation.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.sacrifice-bowl { fill: none; stroke: #8B1A1A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.sacrifice-offering { fill: none; stroke: #B83232; stroke-width: 2; stroke-linecap: round; }
.sacrifice-blood { fill: #8B1A1A; }
.sacrifice-smoke { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<ellipse class="sacrifice-bowl" cx="24" cy="32" rx="14" ry="6"/>
<path class="sacrifice-bowl" d="M 10 32 C 10 24, 14 18, 24 18 C 34 18, 38 24, 38 32"/>
<ellipse class="sacrifice-offering" cx="24" cy="24" rx="6" ry="3"/>
<circle class="sacrifice-blood" cx="24" cy="24" r="3"/>
<path class="sacrifice-smoke" d="M 22 20 C 20 16, 22 12, 24 10"/>
<path class="sacrifice-smoke" d="M 26 20 C 28 16, 26 12, 24 10"/>
<path class="sacrifice-offering" d="M 18 28 Q 24 26, 30 28"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.greet-hand { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.greet-bow { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.greet-respect { fill: none; stroke: #A39E98; stroke-width: 1.2; stroke-linecap: round; }
</style></defs>
<path class="greet-hand" d="M 12 28 C 10 24, 12 20, 16 20 C 18 20, 20 22, 20 24"/>
<path class="greet-hand" d="M 16 20 L 14 16"/>
<path class="greet-hand" d="M 18 22 L 18 18"/>
<path class="greet-hand" d="M 20 24 L 22 20"/>
<path class="greet-bow" d="M 24 24 C 26 22, 28 22, 30 24 C 32 26, 32 28, 30 30"/>
<path class="greet-bow" d="M 30 24 L 32 20"/>
<path class="greet-bow" d="M 32 26 L 34 22"/>
<path class="greet-respect" d="M 8 20 Q 12 18, 16 20"/>
<path class="greet-respect" d="M 8 24 Q 12 22, 16 24"/>
<path class="greet-respect" d="M 8 28 Q 12 26, 16 28"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.cowrie-shell { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.cowrie-slit { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
.cowrie-spine { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<ellipse class="cowrie-shell" cx="24" cy="24" rx="14" ry="8"/>
<path class="cowrie-shell" d="M 10 24 C 10 16, 16 10, 24 10 C 32 10, 38 16, 38 24"/>
<ellipse class="cowrie-slit" cx="24" cy="24" rx="8" ry="3"/>
<line class="cowrie-spine" x1="24" y1="16" x2="24" y2="32"/>
<path class="cowrie-spine" d="M 18 20 C 20 18, 22 18, 24 20"/>
<path class="cowrie-spine" d="M 18 28 C 20 30, 22 30, 24 28"/>
<path class="cowrie-spine" d="M 30 20 C 28 18, 26 18, 24 20"/>
<path class="cowrie-spine" d="M 30 28 C 28 30, 26 30, 24 28"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.proverb-horse { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.proverb-speech { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.proverb-trail { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<path class="proverb-horse" d="M 8 28 C 8 24, 10 20, 14 20 C 16 20, 18 22, 18 24"/>
<path class="proverb-horse" d="M 14 20 L 12 16"/>
<path class="proverb-horse" d="M 16 22 L 16 18"/>
<path class="proverb-horse" d="M 18 24 L 20 20"/>
<path class="proverb-speech" d="M 22 24 C 24 22, 26 22, 28 24 C 30 26, 30 28, 28 30"/>
<path class="proverb-speech" d="M 28 24 L 30 20"/>
<path class="proverb-speech" d="M 30 26 L 32 22"/>
<path class="proverb-trail" d="M 8 32 Q 16 28, 24 32 Q 32 36, 40 32"/>
<path class="proverb-trail" d="M 12 36 Q 20 32, 28 36 Q 36 40, 44 36"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.div-tray { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.div-seed { fill: #A39E98; }
.div-mark { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
.div-pattern { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<ellipse class="div-tray" cx="24" cy="26" rx="18" ry="12"/>
<ellipse class="div-tray" cx="24" cy="26" rx="14" ry="9"/>
<circle class="div-seed" cx="18" cy="24" r="2"/>
<circle class="div-seed" cx="24" cy="28" r="2.5"/>
<circle class="div-seed" cx="30" cy="24" r="1.8"/>
<circle class="div-seed" cx="22" cy="22" r="1.5"/>
<circle class="div-seed" cx="28" cy="28" r="1.5"/>
<path class="div-mark" d="M 16 26 Q 20 24, 24 26"/>
<path class="div-mark" d="M 24 26 Q 28 28, 32 26"/>
<line class="div-tray" x1="24" y1="14" x2="24" y2="8"/>
<circle class="div-tray" cx="24" cy="6" r="2"/>
<path class="div-pattern" d="M 10 18 C 14 16, 18 18, 20 22"/>
<path class="div-pattern" d="M 38 18 C 34 16, 30 18, 28 22"/>
</svg>Information is not neutral data but socially situated knowledge. Cards are compounds; dividers are thresholds; badges are titles earned through character and wealth.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.compound-wall { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.compound-court { fill: none; stroke: #5C4A3A; stroke-width: 2; stroke-linecap: round; }
.compound-room { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.compound-door { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<rect class="compound-wall" x="6" y="6" width="36" height="36" rx="2"/>
<rect class="compound-court" x="14" y="14" width="20" height="20" rx="1"/>
<rect class="compound-room" x="8" y="8" width="10" height="10" rx="1"/>
<rect class="compound-room" x="30" y="8" width="10" height="10" rx="1"/>
<rect class="compound-room" x="8" y="30" width="10" height="10" rx="1"/>
<rect class="compound-room" x="30" y="30" width="10" height="10" rx="1"/>
<path class="compound-door" d="M 22 34 L 22 38 L 26 38 L 26 34"/>
<circle class="compound-court" cx="24" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.div-threshold { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; }
.div-grad { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.div-mark { fill: none; stroke: #6B6560; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<line class="div-threshold" x1="4" y1="24" x2="44" y2="24"/>
<line class="div-grad" x1="8" y1="20" x2="8" y2="28"/>
<line class="div-grad" x1="14" y1="18" x2="14" y2="30"/>
<line class="div-grad" x1="20" y1="16" x2="20" y2="32"/>
<path class="div-threshold" d="M 22 16 L 26 16 L 26 32 L 22 32"/>
<line class="div-threshold" x1="24" y1="16" x2="24" y2="32"/>
<line class="div-grad" x1="28" y1="16" x2="28" y2="32"/>
<line class="div-grad" x1="34" y1="18" x2="34" y2="30"/>
<line class="div-grad" x1="40" y1="20" x2="40" y2="28"/>
<path class="div-mark" d="M 6 14 Q 12 10, 18 14 Q 24 18, 30 14 Q 36 10, 42 14"/>
<path class="div-mark" d="M 6 34 Q 12 38, 18 34 Q 24 30, 30 34 Q 36 38, 42 34"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.title-ring { fill: none; stroke: #B83232; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.title-staff { fill: none; stroke: #8B1A1A; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.title-detail { fill: none; stroke: #C9A84C; stroke-width: 1.2; stroke-linecap: round; }
.title-bead { fill: #C9A84C; }
</style></defs>
<circle class="title-ring" cx="24" cy="24" r="18"/>
<line class="title-staff" x1="24" y1="36" x2="24" y2="12"/>
<path class="title-staff" d="M 24 12 C 24 9, 20 7, 17 9"/>
<path class="title-staff" d="M 24 12 C 24 9, 28 7, 31 9"/>
<path class="title-detail" d="M 8 24 Q 12 20, 16 24 Q 20 28, 24 24"/>
<path class="title-detail" d="M 24 24 Q 28 20, 32 24 Q 36 28, 40 24"/>
<path class="title-detail" d="M 24 42 L 22 44 L 24 46 L 26 44 Z"/>
<circle class="title-bead" cx="24" cy="8" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.cloth-body { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.cloth-stripe { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.cloth-weave { fill: none; stroke: #3D3530; stroke-width: 1; stroke-linecap: round; }
.cloth-knot { fill: #C9A84C; }
</style></defs>
<rect class="cloth-body" x="8" y="8" width="32" height="32" rx="2"/>
<line class="cloth-stripe" x1="8" y1="16" x2="40" y2="16"/>
<line class="cloth-stripe" x1="8" y1="24" x2="40" y2="24"/>
<line class="cloth-stripe" x1="8" y1="32" x2="40" y2="32"/>
<line class="cloth-weave" x1="16" y1="8" x2="16" y2="40"/>
<line class="cloth-weave" x1="24" y1="8" x2="24" y2="40"/>
<line class="cloth-weave" x1="32" y1="8" x2="32" y2="40"/>
<circle class="cloth-knot" cx="16" cy="16" r="1.5"/>
<circle class="cloth-knot" cx="24" cy="24" r="1.5"/>
<circle class="cloth-knot" cx="32" cy="32" r="1.5"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.calabash-body { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.calabash-neck { fill: none; stroke: #6B6560; stroke-width: 2; stroke-linecap: round; }
.calabash-detail { fill: none; stroke: #C4B49A; stroke-width: 1.2; stroke-linecap: round; }
.calabash-wine { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
</style></defs>
<ellipse class="calabash-body" cx="24" cy="28" rx="14" ry="12"/>
<path class="calabash-neck" d="M 18 18 C 18 14, 20 10, 24 10 C 28 10, 30 14, 30 18"/>
<ellipse class="calabash-neck" cx="24" cy="10" rx="6" ry="2"/>
<path class="calabash-wine" d="M 12 28 Q 18 26, 24 28 Q 30 30, 36 28"/>
<path class="calabash-wine" d="M 14 32 Q 18 30, 24 32 Q 30 34, 34 32"/>
<circle class="calabash-detail" cx="24" cy="24" r="1.5"/>
</svg>Social interaction is governed by graduated accountability, performed trust, and community editorial. Reactions are offerings; mentions are greetings; shares are alliance-building.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.react-bowl { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.react-offering { fill: none; stroke: #A39E98; stroke-width: 2; stroke-linecap: round; }
.react-gift { fill: #C9A84C; }
.react-smoke { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<path class="react-bowl" d="M 16 20 C 14 24, 14 32, 18 36 C 20 38, 28 38, 30 36 C 34 32, 34 24, 32 20"/>
<ellipse class="react-bowl" cx="24" cy="20" rx="8" ry="3"/>
<ellipse class="react-offering" cx="24" cy="26" rx="6" ry="2"/>
<circle class="react-gift" cx="24" cy="24" r="3"/>
<path class="react-smoke" d="M 32 28 C 36 26, 38 24, 40 22"/>
<path class="react-smoke" d="M 38 20 L 42 22 L 40 26"/>
<path class="react-offering" d="M 16 30 Q 24 28, 32 30"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.satire-mask { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.satire-mouth { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.satire-song { fill: none; stroke: #A39E98; stroke-width: 1.2; stroke-linecap: round; }
.satire-audience { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<ellipse class="satire-mask" cx="24" cy="20" rx="10" ry="8"/>
<ellipse class="satire-mask" cx="20" cy="18" rx="2" ry="1.5"/>
<ellipse class="satire-mask" cx="28" cy="18" rx="2" ry="1.5"/>
<path class="satire-mouth" d="M 20 24 C 22 26, 26 26, 28 24"/>
<path class="satire-song" d="M 30 22 Q 36 18, 42 22"/>
<path class="satire-song" d="M 32 26 Q 38 22, 44 26"/>
<path class="satire-song" d="M 30 30 Q 36 26, 42 30"/>
<circle class="satire-audience" cx="8" cy="20" r="1.5"/>
<circle class="satire-audience" cx="6" cy="24" r="1.5"/>
<circle class="satire-audience" cx="8" cy="28" r="1.5"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.mention-prostrate { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.mention-name { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.mention-respect { fill: none; stroke: #A39E98; stroke-width: 1.2; stroke-linecap: round; }
</style></defs>
<path class="mention-prostrate" d="M 12 28 C 10 24, 12 20, 16 20 C 18 20, 20 22, 20 24"/>
<path class="mention-prostrate" d="M 16 20 L 14 16"/>
<path class="mention-prostrate" d="M 18 22 L 18 18"/>
<path class="mention-prostrate" d="M 20 24 L 22 20"/>
<path class="mention-name" d="M 24 24 C 26 22, 28 22, 30 24 C 32 26, 32 28, 30 30"/>
<path class="mention-name" d="M 30 24 L 32 20"/>
<path class="mention-name" d="M 32 26 L 34 22"/>
<path class="mention-respect" d="M 8 20 Q 12 18, 16 20"/>
<path class="mention-respect" d="M 8 24 Q 12 22, 16 24"/>
<path class="mention-respect" d="M 8 28 Q 12 26, 16 28"/>
<circle class="mention-name" cx="36" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.adire-grid { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.adire-stitch { fill: none; stroke: #3D3530; stroke-width: 1.5; stroke-linecap: round; }
.adire-dot { fill: #A39E98; }
.adire-wax { fill: none; stroke: #C9A84C; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<line class="adire-grid" x1="16" y1="8" x2="16" y2="40"/>
<line class="adire-grid" x1="32" y1="8" x2="32" y2="40"/>
<line class="adire-grid" x1="8" y1="16" x2="40" y2="16"/>
<line class="adire-grid" x1="8" y1="32" x2="40" y2="32"/>
<path class="adire-stitch" d="M 12 12 L 14 14 L 12 16 L 14 18"/>
<path class="adire-stitch" d="M 28 12 L 30 14 L 28 16 L 30 18"/>
<path class="adire-stitch" d="M 12 28 L 14 30 L 12 32 L 14 34"/>
<path class="adire-stitch" d="M 28 28 L 30 30 L 28 32 L 30 34"/>
<circle class="adire-dot" cx="24" cy="24" r="2"/>
<circle class="adire-dot" cx="16" cy="16" r="1.5"/>
<circle class="adire-dot" cx="32" cy="16" r="1.5"/>
<circle class="adire-dot" cx="16" cy="32" r="1.5"/>
<circle class="adire-dot" cx="32" cy="32" r="1.5"/>
<path class="adire-wax" d="M 20 8 C 22 8, 22 10, 20 10 C 18 10, 18 12, 20 12"/>
<path class="adire-wax" d="M 20 40 C 22 40, 22 38, 20 38 C 18 38, 18 36, 20 36"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.share-left { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.share-right { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.share-bond { fill: none; stroke: #A39E98; stroke-width: 2; stroke-linecap: round; }
.share-gift { fill: #C9A84C; }
</style></defs>
<path class="share-left" d="M 8 24 C 8 20, 12 16, 16 18 C 18 19, 20 22, 20 24"/>
<path class="share-left" d="M 16 18 L 14 14"/>
<path class="share-left" d="M 18 20 L 18 16"/>
<path class="share-left" d="M 20 22 L 22 18"/>
<path class="share-right" d="M 40 24 C 40 20, 36 16, 32 18 C 30 19, 28 22, 28 24"/>
<path class="share-right" d="M 32 18 L 34 14"/>
<path class="share-right" d="M 30 20 L 30 16"/>
<path class="share-right" d="M 28 22 L 26 18"/>
<circle class="share-gift" cx="24" cy="24" r="4"/>
<path class="share-bond" d="M 20 24 Q 24 20, 28 24"/>
<path class="share-bond" d="M 20 24 Q 24 28, 28 24"/>
</svg>Feedback follows graduated accountability: private proverb first, then family council, then market talk, then Gelede satire, then cult sanctions. Each level gives the offender a cheaper exit than the next.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.ife-head { fill: none; stroke: #6B8F5E; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.ife-face { fill: none; stroke: #4A6741; stroke-width: 1.5; stroke-linecap: round; }
.ife-glow { fill: none; stroke: #C9A84C; stroke-width: 1; stroke-linecap: round; }
.ife-crown { fill: #C9A84C; }
</style></defs>
<ellipse class="ife-head" cx="24" cy="22" rx="12" ry="14"/>
<ellipse class="ife-face" cx="20" cy="20" rx="2" ry="1.5"/>
<ellipse class="ife-face" cx="28" cy="20" rx="2" ry="1.5"/>
<path class="ife-face" d="M 20 28 C 22 30, 26 30, 28 28"/>
<path class="ife-head" d="M 12 16 C 14 10, 20 8, 24 8 C 28 8, 34 10, 36 16"/>
<circle class="ife-crown" cx="24" cy="8" r="2"/>
<circle class="ife-crown" cx="18" cy="10" r="1.5"/>
<circle class="ife-crown" cx="30" cy="10" r="1.5"/>
<path class="ife-glow" d="M 8 12 C 6 16, 6 20, 8 24"/>
<path class="ife-glow" d="M 40 12 C 42 16, 42 20, 40 24"/>
<path class="ife-glow" d="M 12 36 C 16 40, 20 42, 24 42 C 28 42, 32 40, 36 36"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.warn-mask { fill: none; stroke: #C9A84C; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.warn-eye { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.warn-shame { fill: none; stroke: #C9A84C; stroke-width: 1.5; stroke-linecap: round; }
.warn-tear { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<ellipse class="warn-mask" cx="24" cy="20" rx="12" ry="10"/>
<ellipse class="warn-eye" cx="18" cy="18" rx="3" ry="2"/>
<ellipse class="warn-eye" cx="30" cy="18" rx="3" ry="2"/>
<path class="warn-mask" d="M 20 26 C 22 24, 26 24, 28 26"/>
<path class="warn-shame" d="M 12 20 C 10 24, 12 28, 16 30"/>
<path class="warn-shame" d="M 36 20 C 38 24, 36 28, 32 30"/>
<path class="warn-tear" d="M 16 22 C 14 26, 14 30, 16 34"/>
<path class="warn-tear" d="M 32 22 C 34 26, 34 30, 32 34"/>
<line class="warn-mask" x1="24" y1="30" x2="24" y2="40"/>
<ellipse class="warn-shame" cx="24" cy="42" rx="4" ry="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.error-egg { fill: none; stroke: #8B1A1A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.error-crack { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.error-reject { fill: none; stroke: #B83232; stroke-width: 1.5; stroke-linecap: round; }
.error-blood { fill: #8B1A1A; }
</style></defs>
<ellipse class="error-egg" cx="16" cy="24" rx="6" ry="8"/>
<ellipse class="error-egg" cx="32" cy="24" rx="6" ry="8"/>
<path class="error-crack" d="M 14 20 L 16 24 L 14 28"/>
<path class="error-crack" d="M 18 20 L 16 24 L 18 28"/>
<path class="error-crack" d="M 30 20 L 32 24 L 30 28"/>
<path class="error-crack" d="M 34 20 L 32 24 L 34 28"/>
<path class="error-reject" d="M 8 12 C 12 8, 16 8, 20 12"/>
<path class="error-reject" d="M 28 12 C 32 8, 36 8, 40 12"/>
<path class="error-reject" d="M 8 36 C 12 40, 16 40, 20 36"/>
<path class="error-reject" d="M 28 36 C 32 40, 36 40, 40 36"/>
<circle class="error-blood" cx="16" cy="24" r="2"/>
<circle class="error-blood" cx="32" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.confirm-oath { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.confirm-hand { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.confirm-earth { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.confirm-iron { fill: #C9A84C; }
</style></defs>
<ellipse class="confirm-oath" cx="24" cy="30" rx="14" ry="8"/>
<path class="confirm-oath" d="M 10 30 C 10 22, 14 16, 24 16 C 34 16, 38 22, 38 30"/>
<path class="confirm-hand" d="M 16 24 C 14 22, 14 18, 16 16 C 18 14, 22 14, 24 16"/>
<path class="confirm-hand" d="M 32 24 C 34 22, 34 18, 32 16 C 30 14, 26 14, 24 16"/>
<path class="confirm-hand" d="M 16 24 L 14 20"/>
<path class="confirm-hand" d="M 32 24 L 34 20"/>
<line class="confirm-earth" x1="8" y1="38" x2="40" y2="38"/>
<circle class="confirm-iron" cx="24" cy="24" r="3"/>
<path class="confirm-earth" d="M 12 34 C 16 36, 20 36, 24 34 C 28 36, 32 36, 36 34"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.attn-drum { fill: none; stroke: #8B1A1A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.attn-sound { fill: none; stroke: #B83232; stroke-width: 1.5; stroke-linecap: round; }
.attn-pulse { fill: none; stroke: #3D3530; stroke-width: 1; stroke-linecap: round; }
.attn-core { fill: #C9A84C; }
</style></defs>
<ellipse class="attn-drum" cx="24" cy="30" rx="10" ry="6"/>
<path class="attn-drum" d="M 14 30 C 14 22, 18 16, 24 16 C 30 16, 34 22, 34 30"/>
<ellipse class="attn-drum" cx="24" cy="16" rx="10" ry="4"/>
<path class="attn-sound" d="M 36 20 C 40 20, 42 24, 42 28"/>
<path class="attn-sound" d="M 38 24 C 42 24, 44 26, 44 28"/>
<path class="attn-sound" d="M 36 32 C 40 32, 42 28, 42 24"/>
<circle class="attn-pulse" cx="46" cy="22" r="1"/>
<circle class="attn-pulse" cx="46" cy="26" r="1.5"/>
<circle class="attn-pulse" cx="46" cy="30" r="1"/>
<circle class="attn-core" cx="24" cy="24" r="2"/>
</svg>Media containers are not passive frames but sacred vessels. Images are memorial effigies; videos are masquerade performances; audio is drum speech.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.image-frame { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.image-head { fill: none; stroke: #A39E98; stroke-width: 2; stroke-linecap: round; }
.image-detail { fill: none; stroke: #5C4A3A; stroke-width: 1.5; stroke-linecap: round; }
.image-aura { fill: none; stroke: #C9A84C; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<rect class="image-frame" x="6" y="6" width="36" height="36" rx="2"/>
<ellipse class="image-head" cx="24" cy="20" rx="8" ry="10"/>
<ellipse class="image-detail" cx="20" cy="18" rx="2" ry="1.5"/>
<ellipse class="image-detail" cx="28" cy="18" rx="2" ry="1.5"/>
<path class="image-detail" d="M 20 26 C 22 28, 26 28, 28 26"/>
<path class="image-head" d="M 16 14 C 18 10, 22 8, 24 8 C 26 8, 30 10, 32 14"/>
<circle class="image-detail" cx="24" cy="8" r="1.5"/>
<path class="image-aura" d="M 8 8 C 6 12, 6 16, 8 20"/>
<path class="image-aura" d="M 40 8 C 42 12, 42 16, 40 20"/>
<path class="image-aura" d="M 8 40 C 12 44, 16 44, 20 40"/>
<path class="image-aura" d="M 40 40 C 36 44, 32 44, 28 40"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.masq-frame { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.masq-cloth { fill: none; stroke: #5C4A3A; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.masq-layer { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.masq-play { fill: #C9A84C; }
</style></defs>
<rect class="masq-frame" x="6" y="6" width="36" height="36" rx="2"/>
<path class="masq-cloth" d="M 12 12 C 10 18, 10 24, 12 30 C 14 36, 20 38, 24 38 C 28 38, 34 36, 36 30 C 38 24, 38 18, 36 12"/>
<path class="masq-layer" d="M 14 14 C 12 18, 12 24, 14 28 C 16 32, 20 34, 24 34 C 28 34, 32 32, 34 28 C 36 24, 36 18, 34 14"/>
<path class="masq-layer" d="M 16 16 C 14 20, 14 24, 16 28 C 18 30, 21 32, 24 32 C 27 32, 30 30, 32 28 C 34 24, 34 20, 32 16"/>
<ellipse class="masq-cloth" cx="24" cy="20" rx="4" ry="3"/>
<path class="masq-play" d="M 22 18 L 28 22 L 22 26 Z"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.audio-drum { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.audio-sound { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.audio-tone { fill: none; stroke: #3D3530; stroke-width: 1; stroke-linecap: round; }
.audio-core { fill: #C9A84C; }
</style></defs>
<ellipse class="audio-drum" cx="24" cy="16" rx="8" ry="3"/>
<path class="audio-drum" d="M 16 16 C 16 24, 18 30, 24 34 C 30 30, 32 24, 32 16"/>
<ellipse class="audio-drum" cx="24" cy="34" rx="8" ry="3"/>
<path class="audio-sound" d="M 34 14 C 38 14, 40 16, 40 20"/>
<path class="audio-sound" d="M 36 18 C 40 18, 42 20, 42 24"/>
<path class="audio-sound" d="M 34 22 C 38 22, 40 24, 40 28"/>
<path class="audio-tone" d="M 38 12 C 42 12, 44 14, 44 18"/>
<path class="audio-tone" d="M 38 26 C 42 26, 44 24, 44 20"/>
<circle class="audio-core" cx="24" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.attach-wrap { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.attach-rope { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.attach-knot { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.attach-gift { fill: #C9A84C; }
</style></defs>
<rect class="attach-wrap" x="12" y="12" width="24" height="24" rx="2"/>
<path class="attach-rope" d="M 8 16 C 12 14, 16 14, 20 16 C 24 18, 28 18, 32 16"/>
<path class="attach-rope" d="M 8 32 C 12 34, 16 34, 20 32 C 24 30, 28 30, 32 32"/>
<path class="attach-rope" d="M 16 10 C 14 14, 14 18, 16 22 C 18 26, 18 30, 16 34"/>
<path class="attach-rope" d="M 32 10 C 34 14, 34 18, 32 22 C 30 26, 30 30, 32 34"/>
<path class="attach-knot" d="M 20 22 C 22 20, 24 20, 26 22 C 28 24, 26 26, 24 26 C 22 26, 20 24, 20 22"/>
<circle class="attach-gift" cx="24" cy="24" r="2"/>
</svg>Utility atoms manage time, progress, and state through culturally grounded metaphors. Time is appointed, not abstract; progress is a ladder of ceremonies; loading is a drum summoning the community.
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.time-cycle { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.time-day { fill: none; stroke: #5C4A3A; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.time-active { fill: #A39E98; }
.time-divine { fill: none; stroke: #C9A84C; stroke-width: 1.5; stroke-linecap: round; }
</style></defs>
<circle class="time-cycle" cx="24" cy="24" r="18"/>
<path class="time-day" d="M 24 8 L 24 12"/>
<circle class="time-active" cx="24" cy="6" r="2"/>
<path class="time-day" d="M 40 24 L 36 24"/>
<circle class="time-cycle" cx="42" cy="24" r="1.5"/>
<path class="time-day" d="M 24 40 L 24 36"/>
<circle class="time-cycle" cx="24" cy="42" r="1.5"/>
<path class="time-day" d="M 8 24 L 12 24"/>
<circle class="time-cycle" cx="6" cy="24" r="1.5"/>
<path class="time-divine" d="M 24 14 C 28 14, 30 18, 30 24 C 30 30, 28 34, 24 34 C 26 30, 26 26, 26 24 C 26 22, 26 18, 24 14"/>
<circle class="time-active" cx="24" cy="24" r="3"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.prog-ladder { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.prog-rung { fill: none; stroke: #5C4A3A; stroke-width: 2; stroke-linecap: round; }
.prog-mark { fill: #A39E98; }
.prog-detail { fill: none; stroke: #C9A84C; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<line class="prog-ladder" x1="16" y1="8" x2="16" y2="44"/>
<line class="prog-ladder" x1="32" y1="8" x2="32" y2="44"/>
<line class="prog-rung" x1="16" y1="12" x2="32" y2="12"/>
<line class="prog-rung" x1="16" y1="20" x2="32" y2="20"/>
<line class="prog-rung" x1="16" y1="28" x2="32" y2="28"/>
<line class="prog-rung" x1="16" y1="36" x2="32" y2="36"/>
<circle class="prog-mark" cx="24" cy="12" r="2.5"/>
<circle class="prog-mark" cx="24" cy="20" r="2.5"/>
<circle class="prog-mark" cx="24" cy="28" r="2.5"/>
<path class="prog-detail" d="M 20 34 L 24 38 L 28 34"/>
<circle class="prog-detail" cx="24" cy="36" r="1.5"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.load-drum { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.load-sound { fill: none; stroke: #5C4A3A; stroke-width: 1.5; stroke-linecap: round; }
.load-pulse { fill: none; stroke: #A39E98; stroke-width: 1; stroke-linecap: round; }
.load-core { fill: #C9A84C; }
</style></defs>
<path class="load-drum" d="M 16 12 C 12 16, 12 20, 16 24 C 20 28, 20 32, 16 36"/>
<path class="load-drum" d="M 32 12 C 36 16, 36 20, 32 24 C 28 28, 28 32, 32 36"/>
<line class="load-drum" x1="20" y1="24" x2="28" y2="24"/>
<path class="load-sound" d="M 36 16 C 40 16, 42 20, 42 24"/>
<path class="load-sound" d="M 36 24 C 40 24, 42 24, 44 24"/>
<path class="load-sound" d="M 36 32 C 40 32, 42 28, 42 24"/>
<circle class="load-pulse" cx="46" cy="20" r="1"/>
<circle class="load-pulse" cx="46" cy="24" r="1.5"/>
<circle class="load-pulse" cx="46" cy="28" r="1"/>
<line class="load-drum" x1="8" y1="24" x2="14" y2="24"/>
<circle class="load-core" cx="8" cy="24" r="2"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.empty-mark { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.empty-figure { fill: none; stroke: #6B6560; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.empty-stranger { fill: none; stroke: #A39E98; stroke-width: 1.2; stroke-linecap: round; }
</style></defs>
<circle class="empty-figure" cx="24" cy="16" r="6"/>
<path class="empty-figure" d="M 16 28 C 16 24, 18 22, 24 22 C 30 22, 32 24, 32 28"/>
<path class="empty-figure" d="M 16 28 L 14 40"/>
<path class="empty-figure" d="M 32 28 L 34 40"/>
<path class="empty-mark" d="M 18 14 C 20 12, 22 12, 24 14"/>
<path class="empty-mark" d="M 24 14 C 26 12, 28 12, 30 14"/>
<path class="empty-stranger" d="M 8 12 C 10 10, 12 10, 14 12"/>
<path class="empty-stranger" d="M 34 12 C 36 10, 38 10, 40 12"/>
<path class="empty-stranger" d="M 8 36 C 10 38, 12 38, 14 36"/>
<path class="empty-stranger" d="M 34 36 C 36 38, 38 38, 40 36"/>
<circle class="empty-stranger" cx="8" cy="24" r="1.5"/>
<circle class="empty-stranger" cx="40" cy="24" r="1.5"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.notif-core { fill: #8B1A1A; }
.notif-ring { fill: none; stroke: #B83232; stroke-width: 2; stroke-linecap: round; }
.notif-wave { fill: none; stroke: #C9A84C; stroke-width: 1.5; stroke-linecap: round; }
.notif-pulse { fill: none; stroke: #3D3530; stroke-width: 1; stroke-linecap: round; }
</style></defs>
<circle class="notif-core" cx="24" cy="24" r="6"/>
<circle class="notif-ring" cx="24" cy="24" r="12"/>
<circle class="notif-ring" cx="24" cy="24" r="18" opacity="0.6"/>
<path class="notif-wave" d="M 32 16 Q 36 12, 40 16"/>
<path class="notif-wave" d="M 32 32 Q 36 36, 40 32"/>
<path class="notif-wave" d="M 16 32 Q 12 36, 8 32"/>
<path class="notif-wave" d="M 16 16 Q 12 12, 8 16"/>
<circle class="notif-pulse" cx="42" cy="12" r="1"/>
<circle class="notif-pulse" cx="42" cy="36" r="1"/>
<circle class="notif-pulse" cx="6" cy="36" r="1"/>
<circle class="notif-pulse" cx="6" cy="12" r="1"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.shrine-base { fill: none; stroke: #3D3530; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.shrine-platform { fill: none; stroke: #5C4A3A; stroke-width: 2; stroke-linecap: round; }
.shrine-offering { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.shrine-sacred { fill: #C9A84C; }
</style></defs>
<path class="shrine-platform" d="M 8 40 L 12 36 L 36 36 L 40 40"/>
<path class="shrine-platform" d="M 12 36 L 14 32 L 34 32 L 36 36"/>
<path class="shrine-base" d="M 16 32 L 16 20 C 16 16, 20 12, 24 12 C 28 12, 32 16, 32 20 L 32 32"/>
<path class="shrine-base" d="M 12 20 L 24 8 L 36 20"/>
<ellipse class="shrine-offering" cx="24" cy="30" rx="4" ry="2"/>
<circle class="shrine-sacred" cx="24" cy="22" r="3"/>
<line class="shrine-offering" x1="18" y1="28" x2="18" y2="24"/>
<line class="shrine-offering" x1="30" y1="28" x2="30" y2="24"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.priv-outer { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.priv-mid { fill: none; stroke: #6B6560; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.priv-inner { fill: none; stroke: #1A1A1A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.priv-gate { fill: none; stroke: #8B4513; stroke-width: 2; stroke-linecap: round; }
</style></defs>
<rect class="priv-outer" x="4" y="4" width="40" height="40" rx="2"/>
<rect class="priv-mid" x="10" y="10" width="28" height="28" rx="2"/>
<rect class="priv-inner" x="16" y="16" width="16" height="16" rx="2"/>
<path class="priv-gate" d="M 20 16 L 20 12 L 28 12 L 28 16"/>
<line class="priv-gate" x1="24" y1="12" x2="24" y2="8"/>
<circle class="priv-gate" cx="24" cy="6" r="1.5"/>
</svg><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<defs><style>
.market-ring { fill: none; stroke: #5C4A3A; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.market-stall { fill: none; stroke: #3D3530; stroke-width: 2; stroke-linecap: round; }
.market-goods { fill: none; stroke: #A39E98; stroke-width: 1.5; stroke-linecap: round; }
.market-queen { fill: #C9A84C; }
</style></defs>
<ellipse class="market-ring" cx="24" cy="24" rx="18" ry="14"/>
<ellipse class="market-ring" cx="24" cy="24" rx="12" ry="9"/>
<path class="market-stall" d="M 12 12 L 12 20 L 20 20 L 20 12"/>
<path class="market-stall" d="M 28 12 L 28 20 L 36 20 L 36 12"/>
<path class="market-stall" d="M 12 28 L 12 36 L 20 36 L 20 28"/>
<path class="market-stall" d="M 28 28 L 28 36 L 36 36 L 36 28"/>
<circle class="market-goods" cx="16" cy="16" r="1.5"/>
<circle class="market-goods" cx="32" cy="16" r="1.5"/>
<circle class="market-goods" cx="16" cy="32" r="1.5"/>
<circle class="market-goods" cx="32" cy="32" r="1.5"/>
<circle class="market-queen" cx="24" cy="24" r="3"/>
</svg>