She dresses a single degree bolder than the room calls for

She can dress purely for herself and still know precisely who is going to see it. Those two things were never enemies.
The signal is usually one notch, not a full costume change. A dress a shade sharper than the venue asks for. Perfume that lingers in the doorway after she passes. Lipstick chosen as though there might be photos later. The jacket comes off once she sits. The earrings catch the light every time she turns her head.
None of it has to announce itself. The whole gamble is whether he notices the extra care and reads it as something put there on purpose.
The distance keeps closing in ways that sound practical

She never says, ‘Come closer.’ She lets the room supply the excuses.
The music is loud, so she leans in. The menu reads better from his side, so she drifts around the table. Somebody has to shuffle over, and now her knee is near his chair. Any one of those means nothing. A few in a row start looking less like chance.
The part worth watching is what happens once the excuse has expired. The joke is over, but her shoulder stays near. She can hear him perfectly well now, and still she does not move back.
She teases the very thing she wants him to defend

A straight compliment can leave her sounding too available too fast. A tease keeps her room to move.
She says his shirt is trying awfully hard. She asks if he always looks at people like he is cracking a case. She picks something he can volley back, not something that shuts him down. The aim is not to wound him. It is to see whether he can take the hit and return one without going stiff.
You can hear the difference the moment he answers. A flat jab just dies there. A flirty one leaves her smiling into the next sentence.