By 2 a.m. she was in my bed.
Let me tell you how we got there.
It started three weeks earlier, on a humid Tuesday night when the city felt like it was drowning in its own sweat. Rain had been spitting on and off for days, leaving the streets slick and the air thick with that metallic smell off wet pavement. My apartment was a mess of half-unpacked boxes from my recent move, leftover Chinese takeout containers on the coffee table, and a flickering floor lamp that buzzed like it was about to die. I was twenty-four, working a dead-end data entry job that paid just enough to cover rent and the occasional six-pack of cheap beer. Life was quiet. Predictable. Lonely in a way I didn’t like admitting.
That’s when Vivian showed up in it.
We’d met at a mutual friend’s house party six months back. She was the quiet one in the corner, nursing a plastic cup of red wine, her sharp green eyes following conversations like she was cataloging every word. Her hair was a straight chestnut bob that framed her pale face, always tucked neatly behind one ear with this precise little gesture that made her seem controlled. She had a slender build, the kind that looked delicate until you noticed the tension in her shoulders, like a coiled spring. At the party she asked me about my job, then my family, then what I did on weekends. I thought it was polite interest. I was wrong.
After that night, texts started coming. First just checking in. “How was your day?” Simple. Then more specific. “Saw you at the coffee shop on Elm. You like their oat milk lattes?” I’d laugh it off, reply with a thumbs-up emoji. But she knew things. The brand of protein bars I bought at the corner store. The route I jogged most mornings. The fact that I hated crowds and preferred the gym after hours. It felt flattering at first. Someone paying attention. Someone who remembered.
The rain picked up that Tuesday as I packed my gym bag. The old community center gym was my refuge. It closed at ten, but the night attendant, an older guy named Mike, always let me stay until eleven if I helped stack the mats. That night I went late, hoping the empty weight room would clear my head. Work had been brutal, my boss riding me over a spreadsheet error, and the apartment felt too small with all those boxes staring at me.
I arrived at nine-forty. The place smelled like old rubber mats, disinfectant, and that faint chlorine from the pool down the hall. Fluorescent lights hummed overhead, casting long shadows across the free weights. Only two other people were there: a guy on the treadmill and a woman doing yoga in the corner. I nodded to Mike at the desk, changed in the locker room where the tiles were always cold under my bare feet, and started my routine. Bench press. Rows. The clink of metal, the burn in my muscles. It felt good. Normal.
At ten-fifteen the treadmill guy left. The yoga woman followed ten minutes later. I wiped down the bench and moved to the squat rack, earbuds in but the music low so I could hear the building settle. Rain drummed against the high windows. Mike poked his head in at ten-forty-five.
“Closing up soon, kid. You good for another fifteen?”
“Yeah, thanks. I’ll lock the front on my way out if you want to head home.”
He shrugged, handed me the master key on its chipped plastic fob. “Don’t forget the side door. Alarm’s on timer.” Then he was gone, his footsteps echoing down the empty hall.
I did another set, sweat dripping into my eyes. The gym felt vast now, just me and the machines and the rain. I finished at eleven-ten, breathing hard, towel around my neck. That’s when I heard the click.
It came from the front lobby. A deadbolt sliding home.
I froze, heart kicking up. The lights in the main area were still on, but dimmed to night mode. I walked out of the weight room, sneakers squeaking on the linoleum.
Vivian stood by the double doors, her back to me, sliding the key into her pocket. She wore a dark rain jacket over a fitted black tank top and leggings that hugged her narrow hips. Her hair was damp from the weather, clinging to her neck. When she turned, those green eyes locked on mine with an intensity that made my stomach tighten.
“Vivian? What are you doing here?”
She smiled, small and careful, like she’d practiced it. One hand came up to tuck that stray lock of hair behind her ear. Her nails were painted a deep burgundy.
“I knew you’d be here late. You always are on Tuesdays.”
The words landed heavy. I hadn’t told her my schedule. Not once.
She held up a paper bag. “I brought a bottle of wine. Cheap stuff, but it’s been open a few hours. I had some already. Needed the courage.”
Her voice was soft, almost melodic, but there was an edge underneath, like a knife wrapped in velvet. She smelled faintly of merlot and the coconut shampoo I’d noticed on her before. I stood there, towel still around my shoulders, pulse hammering in my ears.
“How did you get the key? Mike’s gone.”
“I waited outside. Told him I was your girlfriend, that I’d forgotten my water bottle. He believed me. People usually do.” She stepped closer. Her sneakers left wet prints on the floor. “I have real things to say tonight. About us. About how you’ve been pulling away.”
I swallowed. We’d gone on three dates. Coffee, a movie, a walk in the park where she’d held my hand a little too tight. After the third, I’d texted that I needed space. Work was crazy. I wasn’t ready for serious. Her replies had been understanding. Too understanding. Then the following started. Parked car outside my building. A note on my door that read “Thinking of you” with no signature, but I knew. I’d ignored it, told myself it was nothing. Now here we were.
She set the bag on the reception counter. Pulled out the half-empty bottle and two plastic cups. The rain outside intensified, pounding like it wanted in.
“Drink with me,” she said. It wasn’t quite a question.
I should have taken the side door. Should have called Mike or the cops or just run. Instead I nodded, because part of me, the lonely part, was curious. Flattered even. No one had ever chased me like this.
We sat on the worn bench in the lobby, the kind with cracked vinyl that stuck to your legs. She poured the wine. It tasted sour, a little warm from her bag. She watched me sip, her green eyes never blinking.
“You’ve been seeing that girl from your building,” she said after a minute. Her voice stayed calm, but her fingers tightened on the cup until the plastic creaked. “The one with the red coat. I saw you laugh with her by the mailboxes last week.”
“She’s just a neighbor, Vivian. We said hi.” My hands were shaking a little. I set the cup down.
“I know everything about you,” she whispered. That signature tuck of her hair again. “Your search history. The playlists you listen to when you can’t sleep. The way you check your phone at exactly seven-fifteen every morning. I watch because I care. No one else does. Not like me.”
The first tension hit me then. Not fear exactly. Something hotter, more confusing. Her knee brushed mine as she shifted closer. The gym was silent except for the rain and the distant hum of the vending machine. Her tank top clung to her from the damp, outlining small breasts and the faint outline of her nipples in the cool air. I noticed. I hated that I noticed.
“This isn’t normal,” I said, but my voice came out rough.
She laughed once, soft and bitter. “Normal is overrated. Normal is being alone in that sad apartment with your burritos and your regrets. I can make it better. I already know what you need.”
Her hand landed on my thigh. Light at first. Then firmer. I didn’t pull away. That was the moment everything tilted. Her touch was warm through my gym shorts, fingers pressing just above my knee like she was claiming territory. I stared at her face, the way her lips parted slightly, the flush creeping up her pale neck from the wine.
“You’ve thought about me,” she said. Not a question. “At night. When you’re touching yourself. Tell me I’m wrong.”
I wasn’t wrong. God help me, in the dark hours after I’d tried to ghost her, my mind had wandered there. Her intensity. The way she looked at me like I was the only thing in her world. It was messed up. It was intoxicating.
“Vivian… we should talk about this somewhere else.” But I didn’t stand. The deserted gym felt like a bubble, the locked doors sealing us in with the rain and the truth.
She leaned in. Her breath smelled like wine and mint gum. “I’ve waited long enough. No more pulling away. You’re mine now. Say it.”
Her hand slid higher. I felt myself hardening despite everything. Nerves made my mouth dry. I bumped her arm awkwardly when I shifted, spilling a drop of wine on the bench. She didn’t laugh. She just watched me with those green eyes, waiting.
“This is crazy,” I muttered. But my hand covered hers anyway. Not pushing it off. Holding it there.
That was the first charged encounter. The air between us crackled with everything unsaid. She knew I’d noticed the change in her, the way obsession had sharpened into something physical. And she knew I wasn’t stopping her. Not yet.
She pulled back after a long moment, leaving her hand on my leg like a promise. Stood up and walked to the weight room door, hips swaying with deliberate slowness. I followed, because what else was I going to do? The rain kept falling outside, isolating us further.
Inside the weight room the mirrors reflected us endlessly. She turned, back against the squat rack, and peeled off her rain jacket. It dropped to the floor with a wet slap. Underneath, her tank top was damp, her skin prickling with goosebumps. She had a small tattoo on her collarbone, a tiny black heart I’d never noticed before. Her body language shifted, less coiled, more inviting, but that control never left her eyes.
“Take your shirt off,” she said quietly. “I want to see you the way I’ve imagined.”
I hesitated. Sweat from my workout still clung to me, making my t-shirt stick. My hands shook as I grabbed the hem. This was escalating fast. Too fast. But the wine in my blood and the way she stared made my body decide before my brain caught up. I pulled it over my head, crumpled it, dropped it beside her jacket.
She stepped forward, traced a finger down my chest. Her nail scratched lightly over my nipple and I inhaled sharply. No one had touched me like this in months. Her other hand came up, cupping the back of my neck, pulling me down.
The kiss started tentative. Our noses bumped because I was clumsy with nerves. Then she angled her head and it deepened. Her mouth tasted like wine and urgency. She pressed her body against mine, small breasts firm against my chest, one leg hooking around my calf like she could anchor me there forever.
I kissed her back. God, I kissed her back. My hands found her waist, slid under the tank top to bare skin that was fever-hot. She moaned into my mouth, a soft broken sound that sent blood rushing south.
She broke the kiss first, breathing hard, forehead against mine.
“I’ve wanted this for so long,” she whispered. “Every time you ignored my texts, I sat outside your window and pictured it. Your hands on me. Mine on you. No one else gets to have you. Not the neighbor. Not anyone.”
“Vivian, slow down,” I said, but my voice lacked conviction. My cock was straining against my shorts now, obvious. She noticed, of course. Her hand drifted down, palming me through the fabric.
“Does this feel slow to you?” She squeezed gently, challenging. “Tell me to stop and I will. But you won’t. Because deep down you like that I see you. All of you.”
I didn’t tell her to stop. Instead I kissed her again, harder this time. Our teeth clicked. She laughed into it, a low triumphant sound. Her fingers worked the waistband of my shorts, tugging them down along with my boxers. Cool air hit my skin. I was fully hard, aching.
She dropped to her knees right there on the rubber mat, green eyes looking up at me with something like worship mixed with possession. Her hair fell across her face; she tucked it back with that same precise gesture.
“I’ve practiced this in my head a thousand times,” she said, voice husky. Then her mouth was on me.
It wasn’t perfect. My legs shook. I grabbed the squat rack for balance. Her tongue was warm, tentative at first then bolder, taking me deeper. She used her hand in rhythm, eyes never leaving mine. The mirrors showed it from every angle, me half-naked, her on her knees in the empty gym. It felt filthy and real and impossible to look away from.
I lasted maybe two minutes before I groaned a warning. She pulled off, stroking me firmly.
“Not yet,” she said. “I want you inside me first.”
She stood, stripped her tank top in one smooth motion. No bra. Her breasts were small and perfect, nipples dark pink and tight. Leggings and panties followed, kicked aside with her shoes. She was bare between her legs, smooth, already glistening. The sight made my mouth water.
I pulled her to me, hands roaming her back, her ass. She was lighter than she looked, all lean muscle from whatever hidden routines kept her watching me. We stumbled to the padded bench press, her guiding me down onto my back. The vinyl was cool against my skin.
“Is this okay?” I asked, voice cracking. Even now, nerves made me polite. “Vivian, are you sure?”
She straddled me, one hand on my chest, the other guiding my cock to her entrance.
“I’ve never been more sure of anything,” she answered. “I want this. I want you. Tell me you want it too.”
“I want it,” I admitted, the words tumbling out. “God, I do.”
She sank down slowly. The heat of her was incredible, tight and wet and enveloping. She gasped as I filled her, eyes fluttering shut for a second before locking back on mine. Her hands braced on my shoulders. We stayed like that, joined, breathing each other’s air.
Then she started moving. Rolling her hips in a steady rhythm. The bench creaked beneath us. Her breasts bounced lightly with each motion. I reached up, cupped them, thumbed her nipples. She moaned louder, leaning forward so her hair curtained around us.
“Harder,” she demanded softly. “Hold my hips. Fuck me like you mean it.”
I did. Gripped her narrow waist and thrust up to meet her. The sound of skin on skin echoed in the empty gym, wet and rhythmic. She was vocal, whispering my name, telling me how good I felt, how she’d waited for this exact moment. Sweat beaded between her breasts. I sat up halfway, captured one nipple in my mouth. She cried out, clenching around me.
She came first. Her whole body tensed, thighs shaking, a sharp keen escaping her throat. I felt her pulse around my cock, milking me. It pushed me over. I came hard inside her, groaning against her skin, arms wrapped tight around her back as if she might vanish.
We stayed connected for a long minute, panting. The rain had eased to a drizzle. She kissed my forehead, then my lips, tender now.
“That was perfect,” she murmured. “You’re perfect for me.”
But it wasn’t over. Hours later, after we’d cleaned up with paper towels from the bathroom and shared the rest of the wine sitting naked on the mats, the deeper encounter happened.
We’d moved to the yoga studio down the hall. The room had mirrors too, but softer lighting from the emergency exit signs. Rain tapped lightly on the skylight now. She’d found some clean towels in a cupboard, spread them like a makeshift bed. Her body was flushed, marked faintly where my fingers had gripped her earlier. I felt raw, exposed, but the surrender had settled in my chest like a weight I didn’t want to lift.
She lay beside me, tracing patterns on my stomach with one finger. Her voice was quieter now, confessional.
“I know this seems intense. The watching. The locking the door. But you don’t understand how empty it feels when you’re not mine. I lost someone once. Before you. He left and it broke something in me. I can’t let that happen again.”
Her green eyes were vulnerable for the first time. The signature hair tuck came again, but her hand trembled. I pulled her closer, even though part of me knew this was dangerous territory. Her leg draped over mine, skin sticky with dried sweat and remnants of us.
“You don’t have to watch me every second,” I said. But the words felt hollow. Because in that moment, with her warmth against me and the gym our private world, it didn’t feel entirely bad.
She rolled on top of me again, slower this time. No rush. Her hair fell across my face as she kissed me deeply, tongue exploring like she was memorizing my taste. I hardened again against her thigh. She reached down, stroked me lazily until I was ready.
This time she faced away, lowering herself onto me reverse cowgirl. The view in the mirror was obscene and intimate. Her ass, small and firm, flexing as she rode. The line of her spine. The way her hair swayed. I gripped her hips, guiding but letting her set the pace. It was deeper this way, hitting spots that made her gasp and curse softly under her breath.
“Look at us,” she said, voice thick. “See how we fit? No one else will ever make you feel this.”
I watched in the mirror as she reached between her legs, touching herself while I moved inside her. Her moans grew. She leaned back against my chest, changing the angle again. My hands roamed up to her breasts, pinching lightly. She liked that, grinding harder.
The emotional weight hit me then. This wasn’t just sex. She was revealing pieces of her brokenness between thrusts, whispering about nights she’d sat in her car outside my window, about deleting messages from other women on my socials before I saw them. I should have been terrified. Instead I felt seen. Wanted in a way that filled the lonely corners of my life.
She came again, quieter this time, body shuddering against me. I followed, spilling into her with a low groan, arms banded around her waist like I was the one holding on for dear life.
Afterward we lay tangled on the towels. The clock on the wall read one-fifteen. She fetched water from the cooler, brought it back in paper cups. We drank in silence, her head on my chest, one hand possessively over my heart.
“I love you,” she said into the quiet. “Not the way normal people do. More. Completely. And you’re going to love me back the same way. I’ll make sure of it.”
I didn’t answer. Just stroked her hair, feeling the weight of what we’d done settle over me. The side door was still locked. My phone was in my locker, probably with missed calls from no one important. The rain had stopped entirely.
Eventually we dressed. She handed me my shirt, helped me smooth it down like a wife would. Her eyes were bright again, that obsessive spark returned.
We left the gym together at one-forty-five, her arm linked through mine. She drove me home in her small gray sedan that smelled like her coconut shampoo and faint wine. At my building she parked, killed the engine, and followed me inside without asking.
By 2 a.m. she was in my bed.
She curled against my side under the cheap sheets, one leg thrown over mine, her breath steady against my neck. The apartment was still a mess, the leftover burrito box on the counter, but it felt different now. Occupied. Claimed.
Her fingers traced my throat lightly, then tighter for just a second, a reminder.
“Next time I won’t be this gentle if you even look at someone else,” she whispered, voice soft and sensual in the dark.
I lay there, heart steady for the first time in months, and yielded completely to whatever came next.