Chapter Text
San has always been kind. That’s part of the problem.
He’s kind, and soft, and—in the nicest way possible—absolutely clueless. Says good morning to strangers and means it. Holds doors for people walking way too slow. Laughs even when he’s uncomfortable. Smiles when someone’s flirting with him and doesn’t even seem to notice.
Like now.
Jongho watches from across the table, jaw tense, as some tall beta leans in just a bit too close. They’re holding their stupid little meal tray and grinning like they’ve already won something. San, bless him, just nods and tilts his head like a golden retriever being asked to sit. He doesn’t see the way they keep inching forward. Doesn’t clock the way their fingers ghost over his forearm as they pretend to point at something on the table. Doesn’t see the way Jongho’s hackles are already up.
“Should stop staring,” Mingi mumbles, cheek smushed against Jongho’s thigh. The beta looks like he’s two seconds away from taking a nap right then and there.
“Not staring,” Jongho says, lying. “Observing.”
“You’re vibrating,” Mingi adds.
He is. His knee’s been bouncing under the table the whole time, and he only now notices. He stops it. The beta says something about “swinging by their dorm to check out that track you mentioned,” and San lights up like that’s the best idea he’s ever heard.
And that’s enough.
Jongho clears his throat, deliberately. “Sannie-hyung can’t go with you right now,” he says, voice all sweet and pouty. “He’s helping me study.” San turns to blink at him, lips parting like he’s forgotten Jongho even existed.
Which is, honestly, so on-brand.
“Oh—right,” the alpha says, scratching the back of his neck. “Yeah, I promised I’d help him with his field report spreadsheet. Sorry.”
The beta’s smile dips. They glance at Jongho, clearly annoyed, confirmed by the sharp twist of their scent. He doesn’t blink. Just tilts his head in that way that makes Yeosang call him “terrifyingly polite.” The beta leaves with a tight nod, and Jongho resists the urge to bare his teeth as they walk away.
“Thanks,” he mutters under his breath.
“Did you want me to go with them?” San asks, turning toward him with wide, concerned eyes.
“No,” Jongho says. And then, before San can try anything stupid like apologise, “I needed your help. You promised.”
San beams. “Okay.”
Mingi snickers into his lap. “Your jealousy’s showing,” he mumbles into Jongho’s stomach, voice all muffled and smug.
The omega doesn’t dignify that with a reply. Just reaches down and pinches the top of Mingi’s ear, not hard but sharp enough to make him yelp. He doesn’t move away though. Just groans dramatically and presses his face deeper into Jongho’s shirt like he’s trying to disappear inside it.
Across from them, Wooyoung watches the whole thing with an amused look, half his sandwich forgotten in his hand. Yeosang’s beside him, scrolling absently through something on his phone, one ankle hooked around Wooyoung’s under the table. Mingi doesn’t look up from Jongho’s lap, but he grins when Wooyoung hums at him, and Yunho, missing for now, is usually in the mix too. The three of them fit together like some chaotic puzzle that never stays in one shape for long.
Yeosang’s fingers twitch like he wants to be annoyed about it—always third-wheeling the throuple, even when he’s not really a third anything—but he doesn’t move his ankle. Doesn’t pull away when Wooyoung bumps his knee against his like he’s daring him to flirt back.
The whole thing is stupidly domestic. Stupidly them.
They’ve all been circling each other for years now—some of them literally syncing cycles, some helping through ruts and heats, some just figuring out where they fit inside the eight-pointed tangle their pack has become.
Seonghwa and Hongjoong are mated, but open with their help—specificallyfor San. Yeosang and Wooyoung? Complicated. Probably in love, definitely not talking about it. Mingi and Yunho are as close as a pairing gets—bonded but not mated, purely because they’d both rather wear Wooyoung’s bite, but he’s still working through his own mess.
Jongho’s heat syncs with Yunho’s like clockwork. He usually nests at their place when the seasons change, tucked into Yunho’s chest while Mingi spoons in from behind. The beta is bonded to Yunho deeply enough now that he sometimes slips into pseudo heats too, and all three of them end up cranky and cuddled and swearing they’re going to die if Wooyoung doesn’t stop teasing them to come and fuck them into satisfaction.
Everyone helps each other.
Except San.
San’s never offered. Never said a word.
“Yunho’s late,” San says suddenly, glancing at the empty seat beside Wooyoung.
“He and Seonghwa are helping Hongjoong with some gear thing,” Wooyoung replies, licking mayo off his thumb. “Said they’d be here after.”
“Ugh,” Mingi says, still in Jongho’s lap. “Joong-hyung’s in pack leader mode today.”
“Like he ever isn’t,” Yeosang mutters, not looking up.
Jongho lets the sounds of his friends wash over him for a minute. Plays it cool, like always. Witty, quick, sharp-tongued when needed. But when it comes to San, he’s got no defences. None. The alpha’s smile knocks the air out of his lungs. San’s hands make him forget what words are altogether. San’s voice? Don’t even get him started.
And worse—San still calls him “kiddo.”
He’s nineteen. Not twelve. Not a little brother. Not a baby omega in need of looking after. He’s strong. Confident. His thighs alone could crush someone’s ribs. (They’ve come close.)
And yet, San looks at him like he’s still that kid from down the road who used to bring extra snacks in case his “hyung” forgot to pack lunch again.
Which, to be fair, he often did.
They’ve been close since then. Grew up side by side. Slept over more often than not. Used to giggle over the fact that if you shouted “Choi!” down the street, at least two heads would turn. But things change. Things like Jongho’s body. His feelings. His scent, which definitely spiked the last time San carried him down the hallway like a sack of rice over one shoulder.
(It wasn’t his fault. Jongho had tripped on the stairs. But San had just picked him up and kept walking. Like it was nothing. Jongho had to hide in the bathroom for ten minutes after that.)
Jongho tells himself it’s because San doesn’t see him that way.
But sometimes—when San’s hands linger a little too long on his waist, when he ruffles Jongho’s hair without thinking, when he bites his straw and watches Jongho across the room like he’s thinking something he won’t say—sometimes, it’s hard not to hope.
⋆★⋆🧸⛰️⋆★⋆
The bleachers in the gym are cold through the seat of his jeans. He’s perched on the lowest row, arms resting across his knees, legs swinging out just enough to show he’s bored. Or pretending to be. Really, he’s trying not to look like he’s waiting for San like some dumb, pining omega.
He fails at that every time.
The echo of sneakers on the polished floor bounces off the rafters, sharp and quick. The team’s still cleaning up—San moving across the court, laughing at something one of the seniors says, brushing his damp fringe back, flushed and gleaming with sweat. Jongho tells himself to look away, but doesn’t.
It’s kind of disgusting, really. How one person can look like that and still act like an overgrown puppy.
Jongho folds his arms over his stomach, like maybe that'll keep his heart from leaking out. It won’t.
He remembers being fifteen, sitting on his bed with his legs pulled up, clutching his phone to his chest after San texted him goodnight with a smiley face. He didn’t know what it meant then. He knows exactly what it means now, and it makes everything worse.
Crushes are supposed to fade, with time and distance. Especially when they’re one-sided. But no. After San left for college and Jongho was stuck finishing school without him, it got worse. The ache got bigger. The year apart had just made it worse. He missed him like a phantom limb. Missed his voice, his scent, his dumb little texts about how he accidentally washed his whites with a red sock again. Missed the way he used to tuck Jongho under his chin when they napped together.
His drive to follow San doubled overnight.
He spent the whole final year of high school chasing every scholarship he could, like his life depended on ending up at the same university.
(It kind of did.)
By the time he got his acceptance letter, he already had his whole life planned around a boy who still calls him “kiddo.”
The first time San introduced him to his friend group, Jongho had been seventeen, nervous as hell, still in his school uniform and gripping the sleeve of San’s jacket like he might get lost if he let go. The rest of the pack had adopted him on sight. Taken one look at him and decided, “yep, he’s ours.”
The rest of the pack had adopted him on sight. One look at Jongho trailing behind San like a loyal little duckling, and it was game over. Mingi fed him half his lunch that first day. Wooyoung sniffed his hair and called dibs. Yunho just held his hand while he tried not to panic in a room full of older alphas and betas, the pack omega, Hongjoong, trying his best to settle the rambunctious lot, but it was hard.
They had wrapped him up and pulled him in and never let go.
And now? It’s more than a friend group. It’s… a mess, honestly. But it’s their mess. Their pack. Mates and half-mates, bonds and blurred lines. Teasing, comfort, shared blankets and heat nests.
Everyone knows Jongho’s in love with San. They teased him for it. Poked fun at the way he stared or how his scent would spike just from being picked up too easily. San never noticed. Or maybe he did, but he never said anything.
Or maybe he really is that dense. Too kind to notice when people leer at him in the hallway. Too polite to tell them off. Too gentle to realise he’s breaking Jongho’s heart one soft smile at a time.
Jongho doesn’t really know which is worse anymore.
The omega sighs and leans back on his elbows. Watches San laugh again, all sweat and sunshine and stupid, radiant charm. The ache behind Jongho’s sternum feels like bruising.
It’s not fair.
He’s not a kid.
Not just the dongsaeng.
He’s an omega in his prime. Confident. Reliable. His thighs alone have made people cry. But San still ruffles his hair like he’s twelve. Still says things like “Jjongie, you’ll find your person one day.” As if San himself isn’t right fucking there.
“Hey.”
Jongho blinks.
The alpha is right in front of him, barefoot and shirtless, holding his sneakers in one hand and a towel in the other. His chest is damp, flushed, muscles shifting with every breath. And there’s a drop of sweat tracking down his chest, lazy and slow, and Jongho has to dig his nails into his palms just to stop himself from leaning forward and licking it.
His thighs twitch, so he does his best to subtly cross his legs. His boxers are already beginning to dampen, and San hasn’t even said anything remotely sexy. He’s just... existing. Like that.
He’s literally going to die.
“Practice ran a bit long,” San says, beaming. His hair’s a damp mess, fringe curling against his forehead. “I’m sorry about that. Just gonna shower real quick, then we can get dinner?”
In all honesty, Jongho wants to run to the nearest bathroom stall, lock the door, and jerk himself off until his legs stop shaking. His clit’s throbbing so hard it makes him dizzy. He can feel the slick sticking to his boxers now—thick and hot and frankly humiliating. He’s barely holding it together. Just breathing through his mouth so he doesn’t whimper at the scent. Praying that his best friend can't smell the way his slick is soaking into the fabric of his underwear.
Instead, he opens his mouth. Closes it. Opens it again. It takes a second to reboot his brain, to not blurt out that he’d rather be bent over the bleachers, or riding San’s thigh until he cries. “Y–yeah,” he squeaks, pathetic. “Fine. You’re paying.”
San blinks. “Didn’t I pay last time?”
“Nope,” Jongho lies. His voice cracks on it. “Definitely your turn.”
San just grins and turns to go, towel slung over one golden shoulder. His back flexes as he walks, stupidly broad and glistening with sweat. His waist narrows into the perfect V, hips twitching just enough that Jongho has to curl his fingers into fists to stop from crawling across the gym floor like a feral thing.
He stares for too long. Way too long. Bites the inside of his cheek until the copper cuts through the scent-flood and clears his head—barely.
Somewhere deep in his brain, a foul little voice suggests pinning San against the lockers, licking sweat from his chest, begging him to knot Jongho like it’s the only thing that’ll fix this goddamn ache.
“God, just kill me harder, why don’t you,” he groans, thumping his head back against the row of bleachers.
He’s going to hell.
And it’s going to smell like San’s skin.
He stays there on the bleachers for another minute, trying to think about literally anything else. Dead plants. The smell of overcooked rice. That one time Yeosang got food poisoning from gas station sushi and threw up on Wooyoung’s shoes.
It doesn’t help.
His thighs keep pressing together like they’re trying to hold something in, like his body’s trying to remind him what it wants, in case the message didn’t come across clearly the first twenty goddamn times.
Eventually, he gets up with a sigh and detours to the nearest restroom.
He’s not going to jerk off. He’s not. He has dignity. Standards. A perfectly average amount of self-control. (Lie.)
The omega locks the stall door behind him anyway and peels down his jeans with the kind of resigned sigh only someone in their late teens and in unrequited lust can make. His boxers are almost soaked through. Slick has leaked out, warm and sticky between his thighs, and he curses under his breath as he cleans up with scratchy toilet paper that only sort of helps.
“Fuckin’ hell,” he mutters, digging a travel-sized deodorant from his bag and spraying himself like it’s holy water. He fans his crotch with his hand, glares at his reflection in the smeared mirror. “You’re a disaster. You need therapy.”
He sprays himself again for good measure, coughs, then heads outside into the early evening air with the kind of conviction usually reserved for saints and war generals. The sky is soft with sunset, pastel purples and pinks spreading ahead. He sits on the bench just to the left of the gymnasium’s front steps and closes his eyes, trying to pretend his entire body isn’t still wound up and humming with tension.
It only half works.
San doesn’t keep him waiting long.
Jongho hears him before he sees him—soft footsteps, the familiar scent of citrus and something sweeter underneath. He opens his eyes and instantly regrets it.
The alpha’s cheeks are flushed, probably from the water temperature, and his damp hair is already beginning to fluff in the humidity. He’s changed into some old, slouchy jeans and a white tee under a green cardigan that looks three sizes too big and unfairly soft. His gym bag is slung over one shoulder, the strap pulling the collar of his shirt down just enough to show a peek of collarbone.
He looks like a dream. Like a crime. Like something Jongho wants to sink his teeth into just to find out if he tastes as sweet as he smells. The wolf in his chest howls. The omega bites it back by forcing a smile and lifting a hand in greeting. “Took you long enough.”
San jogs over, bouncing on the balls of his feet like he’s never tired. “You didn’t wait long, did you?”
“No,” Jongho lies, again. “Not really.”
He doesn’t say: “Actually, I’ve been waiting for years.”
Because he has. And he will.
For as long as it takes.
San walks him back to his dorm building, obviously. Because San is a gentleman. Because San is still the boy who used to hold the umbrella over Jongho’s head even if it meant getting soaked himself. Because San always holds doors, always catches Jongho’s wrist when they cross streets, always does things that make Jongho’s chest feel tight and unbearable.
The sky’s darker now, and the campus lights flicker on one by one like fireflies.
They stop outside Jongho’s building, standing close enough that the air between them warms from their shared heat. San leans in for a hug like he always does—arms open, easy, familiar. Jongho steps in and lets himself fall forward, nose brushing the skin just below San’s ear. He breathes in deep.
Mandarin, always. Clean, sweet, faintly sun-warmed. But there’s something else beneath it too—sweat still lingering from practice, body heat, that soft almond-vanilla twist that always spikes whenever San gets a little bashful.
Jongho’s own scent curls toward it without asking. Wild plum, sticky and ripe, mixing in the air between them like fruit in syrup. It’s dizzying. Jammy and too much. He lets out a rumble—deep, involuntary, almost embarrassing—and feels San’s palm stroke down his back like he’s rewarding him for it.
Then San scents him back, gentle and light, nose nudging along Jongho’s jaw before pulling away too soon. The whine slips out before he can stop it. Too soft for anyone else to notice, maybe, but San’s head tilts immediately.
“Are you okay?”
Jongho panics. “Yeah. Just—” he scrubs a hand through his fringe, offers a sheepish smile. “Tired. Long week.”
San hums, clearly not convinced, but kind enough not to push. “Get some rest. And don’t forget, movie night tomorrow.”
“Yours or mine?”
“Mine,” San says, already backing up with that radiant smile. “And I’m making popcorn.”
“Only if it’s not burnt this time,” Jongho teases.
“Hey,” San whines, laughing, “one time—!”
Jongho waves him off and steps inside before he can fold like wet paper and say something reckless, like “hey, hyung, please kiss me?” He watches the door shut behind him, then presses his head against it for a second to remember how San’s scent had clung to his hoodie.
He’s pink in the face by the time the elevator reaches his floor. Worse when he sees the flutter of his pulse right at the base of his neck—visible in the mirror like proof.
He gets changed on autopilot, brushing his teeth, rubbing moisturiser into his cheeks, pulling on a loose t-shirt and some old sleep shorts. The kind of evening rhythm he’s had for years now. The kind he used to do back when San was still just the neighbour’s kid who got into fights defending Jongho’s honour; and now it’s the other way around.
But tonight feels heavier.
He lies down, pulls the blanket over himself and closes his eyes. And sees San.
Sees his bare back again, the slope of muscle from his shoulders to his waist. Remembers the way the sweat had shimmered under the gym lights, the way his thighs had flexed with every step. The sound of his voice. His scent. The weight of his hand, warm on Jongho’s back.
The ache hits so fast it startles him, and it doesn’t take long to give in. He huffs, frustrated, and kicks the blankets off.
One hand creeps under the waistband of his shorts, finding himself already wet again, embarrassingly so. His fingers brush over swollen skin, and he gasps—barely managing to swallow the sound. It would be easy to come like this—just circle his clit and go—but it’s not enough. His body’s too sensitive, too keyed up. He’s been wound tight for days, but this is a different kind of need.
He shoves his shirt up, lets the fabric bunch under his chin. His nipples are flushed dark, already tight from how long he’s been stewing. He pinches one between his fingers, and the jolt of it goes straight to his cunt. His breath stutters and he rolls his hips into his hand.
“Fuck,” he mutters, shame rushing in hot behind it. He pushes his shorts further down, kicking them off the bed.
He should stop. Should breathe. Should get a hold of himself before this gets worse.
But he doesn’t.
He closes his eyes and thinks about San’s hands. What they’d feel like pinning Jongho’s hips down. He thinks about San’s pretty little mouth. What it would feel like pressing open mouthed kisses on the inside of his thighs, or sucking at his nipples.
His fingers move faster. He’s a mess, panting into his pillow, biting the fabric to keep quiet, unable to stop the way his legs fall open. He circles his clit, dips lower, fucks himself on his own hand as his hips cant up desperately into nothing.
“S-shit, San,” he whines, broken and too honest.
He moves to grab one of the pillows and drags it down between his thighs. It's instinctive as he moves to straddle it; the same way he used to when he was younger and dumb and just discovering how badly he could want things. It feels filthy now. Deliberate and desperate. His slick soaks into the case immediately, darkening it. He grinds his hips once, slowly and gasps.
The omega can’t help himself as he thinks about San’s thigh between his legs instead of the pillow. Jongho riding it, grinding down until he’s dripping slick all over San’s jeans, rutting like a bitch in heat until he’s soaked through his underwear. Until San moans and holds him tighter, lets him hump and whimper and cry against his chest.
Jongho lowers himself, chest pressed to the mattress, shirt still pushed up. One hand between his legs, fingers working in tight, slippery circles, the other pinches at his nipple again, rougher now. “Ngh—fuck, pl-please—” he hisses, low, into the pillow.
He thinks about San watching him like this. Thinks about being scented while he comes, the mandarin tang thick in his lungs and heavy on his tongue. Thinks about the alpha calling him pretty. About San telling him he’s doing so good, even like this—messy, leaking, soaking the sheets for him.
“S-San,” he chokes, breath catching. “F-fuck—San—”
His thighs quake, and his hips stutter as the orgasm drags him under, sharp and overwhelming, body jerking through it as his slick gushes and stains the pillowcase worse. He keeps rutting through it, fucking down into the mess, chasing the last sparks of heat. Overstimulating himself just a little too long, just to make it last. His thighs tremble and his slick makes a mess of the sheets.
And still—his hand stays there, like he doesn’t want to let go. Like he’s chasing something he’ll never quite catch.
When it fades, when the aftershocks make him wince and his body finally sags fully into the mattress below, Jongho finally pulls his hand away and buries his face with his arm, unable to look at how wet and shiny with slick his other hand is. Breathing hard and throat stuck trying to swallow around something that isn't there.
The pillow is ruined. His legs and bed are a mess. And his heart is still racing.
“I’m so fucked,” he says aloud, voice flat.
And there’s no one there to argue.
