It had been happening for weeks.
Little stolen moments. Late-night drives. Rafe pulling you into his car after parties, his hands shaking slightly even when he was smirking like he had the upper hand. And you — you told yourself it wasn’t serious, that it didn’t mean anything. But somewhere between the first kiss and the second time you spent the night at his place, you stopped lying.
It did mean something.
You weren’t in love with Topper. You never really were. You liked the safety. The ease. The way people smiled when they saw you together. But when Rafe touched you, it wasn’t about being liked. It was about being seen.
So when Rafe texted you that night — “by the boats, nobody’s here” — you didn’t think twice.
It was quiet down by the dock. Cold enough to make your skin prickle, but not enough to stop you. You found him sitting on the edge, hoodie up, cigarette barely burning in the dark.
You sat beside him. Close. Too close.
He didn’t say anything at first. Just handed you the cigarette, then kept his eyes on the water.
After a long pause, he finally murmured, “You still gonna go back with him tonight?”
You didn’t answer. Because you both already knew the truth.
⸻
You didn’t hear the footsteps until it was too late.
You were standing now, Rafe’s arms around your waist, his mouth near your jaw, murmuring something you didn’t even catch. You leaned into him — a soft, quiet kind of closeness — nothing messy or dramatic, just… real.
That’s when Topper’s voice came through the dark.
“Seriously?”
It wasn’t loud. But it cracked like a whip.
You stiffened, your whole body going still — not in panic, not in guilt, just in that quiet oh-no-it-finally-happened kind of way. Like a kid caught with a hand in the cookie jar — not because they didn’t want it, but because they thought they had more time.
Rafe didn’t move away. His grip tightened just slightly on your hips.
Topper stood about ten feet away, frozen. He looked between the two of you like his brain was still buffering, still trying to stitch this version of reality together with the one he thought he was living in.
“You’re kidding me.”
His voice was lower now, heavier.
You turned to face him, but didn’t step back from Rafe. You didn’t hide. You didn’t try to explain. Because the truth was right there, out in the open, and pretending otherwise would be insulting.
Topper’s hands dropped to his sides. He let out a sharp breath — half-laugh, half-scoff. He looked at you first. “You couldn’t just be honest?”
Then to Rafe: “And you. Out of everyone?”
Rafe didn’t flinch. His voice was calm, like this wasn’t a surprise to him.
“It just happened, man.”
Topper’s head shook slowly. “Bullshit.” His voice cracked again — that same break that always came right before he snapped. “You knew I was with her. You knew how I felt about her.”
Rafe finally let go of you and stepped forward, only just.
“Yeah. I knew. And I still went for her.” He paused. “What does that tell you?”
Topper blinked. Like he couldn’t believe what he was hearing. Like his best friend wasn’t standing in front of him saying everything he’d always feared.
The silence dragged.
You could see it in Topper’s eyes — the heartbreak, the humiliation, the weight of not just losing a girl but losing to Rafe. The guy he always defended. The one he always stuck up for.
And Rafe just stood there like he’d already decided it was worth it.
“You know what?” Topper finally muttered, his voice trembling. “You two deserve each other.”
It wasn’t a scream. It wasn’t violent.
It was worse.
It was hollow.
He didn’t swing. He didn’t even move toward Rafe. He just turned around and walked back up the dock, one hand clenched into a fist, the other wiping at his face when he thought you couldn’t see.
⸻
Rafe exhaled slowly beside you.
For once, he didn’t say anything smug. He didn’t smirk. He just looked at the space where Topper had been and muttered, mostly to himself:
“It was always gonna end like this.”