The rain was coming down hard when Riven knocked. Kairo was already halfway to the door before realizing he hadn’t even checked the time. Midnight. Of course. Always midnight with Riven.
He opened the door, and there he was—drenched, breathing like he’d run the whole way here, dark curls plastered to his forehead. His black T-shirt clung to his chest like a second skin.
“You gonna let me in?” Riven asked, voice low, eyes hungry.
Kairo didn’t say a word. He just stepped aside.
The moment the door clicked shut behind them, Riven was on him. Their mouths crashed together in a kiss that was anything but soft—months of stolen glances and almost-touches breaking loose all at once.
Kairo shoved him back against the wall, teeth scraping Riven’s lower lip. “You came all this way just for this?”
Riven grinned, breathless. “I’d come further for less.”
Kairo growled and grabbed a fistful of his shirt, dragging it up over Riven’s head, revealing the smooth, wet skin underneath. Rain clung to his collarbone and chest, glistening in the dim hallway light. Kairo didn’t waste time—he leaned in and licked a line up his neck, tasting the salt, the rain, the faint tang of sweat. Riven hissed through his teeth.
“Fuck, Kairo…”
“Shut up,” he muttered, kissing him again, slower this time. His hands roamed—fingers tracing the line of Riven’s hips, slipping under the waistband of his jeans. Riven groaned when Kairo palmed him through the denim, already hard, already aching.
They stumbled their way into the bedroom, shedding clothes between kisses. Riven pushed Kairo down onto the bed, climbed on top, straddling his hips. Kairo’s eyes were dark, hungry, as he stared up at him. His chest rose and fell with each breath, skin flushed.
Riven leaned down, grinding their hips together. “You’ve been thinking about this too.”
Kairo didn’t deny it. Instead, he reached up, tangled a hand in Riven’s hair, and pulled him down for another kiss—hot and open-mouthed, tongues brushing, breath mixing. His other hand slid down Riven’s back, nails dragging just enough to leave a mark.
Clothes gone. Skin on skin. Heat everywhere.
Riven shifted, grinding down harder, their cocks sliding together with just enough friction to make them both groan. Kairo’s hands gripped his hips, guiding the motion. Their bodies moved like they’d done this a thousand times in dreams but never dared in real life—until now.
Riven kissed down his chest, sucking a mark just above Kairo’s hipbone, then lower, until his mouth hovered just above Kairo’s cock. Kairo’s breath caught, fingers twitching in the sheets.
“You want me to stop?” Riven teased, voice husky.
“Don’t you fucking dare.”
Riven smirked—and then took him in, slow and deep, lips wrapping around him with maddening pressure. Kairo groaned, head tipping back, hips lifting slightly as Riven worked his mouth, using his tongue with practiced skill.
Kairo’s fingers tangled in Riven’s hair again, guiding him, his voice rough and low. “Just like that—fuck, Riven—”
It didn’t take long. Too much tension, too many nights spent thinking about this exact moment. When Kairo finally came with a sharp gasp and a low moan of Riven’s name, his whole body shuddered under the weight of it.
Riven pulled back, wiped the corner of his mouth, then looked up with that same cocky grin. “Told you you were wanting.”
Kairo was still catching his breath when Riven crawled back over him, lips flushed and swollen, eyes dark with want. The taste of heat and skin lingered between them as their mouths met again — slower now, deeper.
Riven’s hands slid down Kairo’s thighs, pushing them apart with steady pressure, and Kairo let him, spreading open beneath him without a word. His breath hitched at the exposure, at the way Riven looked at him — like he was something to be devoured.
“You good?” Riven murmured, voice suddenly softer, more grounded.
Kairo nodded, pupils blown wide. “Yeah. I want it.”
That was all Riven needed.
He reached into the nightstand — finding the lube quickly, like maybe he’d dreamed about this before too. Kairo watched him slick his fingers, every movement deliberate. There was something electric about being seen like this — laid out, wanting, trusting.
Riven leaned down, kissing him while the first finger slid in.
Kairo gasped softly into the kiss, his body tightening, then relaxing as Riven worked him open slowly — one finger, then two, stretching him with patience and skill. He arched his back when Riven curled them just right, brushing against that spot inside that made him see white.
“Fuck, Riven—”
“I know,” Riven said, voice like gravel. “You’re taking it so well, baby.”
The nickname made Kairo shiver.
When Riven finally slicked himself and lined up, he paused — tip just at Kairo’s entrance, giving him one last look. Kairo locked eyes with him and gave a breathless, “Do it.”
The first push burned — a deep, thick stretch that made Kairo’s fingers clutch the sheets — but it felt good. Full. Intense.
Riven groaned low in his throat. “So tight, Kairo—fuck—”
He bottomed out slowly, giving Kairo time to adjust, and Kairo’s breath stuttered, legs wrapping instinctively around Riven’s waist. They stayed there a moment, forehead to forehead, breathing each other in.
Then Riven started to move.
The rhythm was slow at first — deep, grinding thrusts that made Kairo moan with every push. Riven held him by the hips, dragging him down onto each stroke, the slick sounds of skin meeting filling the room, mixing with the panting and curses and soft, desperate noises Kairo couldn’t hold back.
“Right there—ah, fuck—keep going,” Kairo gasped.
Riven groaned, snapping his hips harder. “You feel so good, baby. Look at you—taking me so fucking well.”
Kairo’s body writhed under him, his cock twitching again, untouched between them. Riven leaned down, chest flush to chest, and kissed him through the thrusts — messy and breathless, teeth grazing lips. The angle shifted, and Kairo nearly sobbed as Riven hit that spot again, over and over, dragging him toward the edge.
“I’m—fuck—I’m gonna—” Kairo choked out.
“Come for me,” Riven growled. “Let me feel you fall apart.”
Kairo came hard between them, his body trembling, muscles clenching around Riven as he moaned Riven’s name like a prayer.
Riven followed with a curse, hips jerking as he came deep inside him, burying his face in Kairo’s neck with a long, ragged groan. The warmth of it spread through Kairo’s body like fire and rain all at once.
They stayed tangled like that for a while — sweaty, boneless, quiet except for the slowing beat of their hearts.
Riven finally pulled out, gentle despite everything, and Kairo hissed softly at the sensitivity. A moment later, he felt a warm cloth — Riven, already back, already cleaning him up with uncharacteristic care.
“You okay?” Riven asked softly, sliding under the covers beside him.
Kairo turned toward him, face flushed, eyes heavy. “Yeah. I’m more than okay.”
Riven pulled him into his chest, holding him close, their bodies still warm from everything they’d shared.
“You’re mine now,” Riven murmured, kissing his hair.
Kairo let out a tired laugh. “You were never subtle.”
“And you were never off limits,” Riven said, voice dark with promise.
They lay there tangled in the sheets, the air still thick with heat, with sweat, with everything unspoken between them finally said through skin and breath.
Kairo rested his head on Riven’s chest, fingers tracing idle lines across his stomach. His muscles ached in that good way — the kind that made you feel claimed, like someone had finally touched you the way you were meant to be touched.
Riven’s hand was in his hair, slow and lazy, grounding. “You’re quiet,” he murmured.
Kairo smirked against his skin. “You wore me out.”
“Damn right I did,” Riven muttered, grinning. Then, more gently, “Didn’t think you’d let me in.”
“I almost didn’t,” Kairo said honestly.
Riven shifted, lifting Kairo’s chin to look at him. “But you did.”
Kairo’s gaze softened. “Yeah. And I’m glad.”
They kissed one more time—slow, deep, no urgency now. Just warmth. Just them.
Outside, the rain had finally stopped.
And inside, for the first time in a long time, Kairo didn’t feel alone.
Download NovelToon APP on App Store and Google Play