Actions

Work Header

He was Sunshine, I was Midnight

Summary:

Frank Zhang has always been the steady one; the reliable archer on Jupiter High’s team, the quiet force everyone counts on. But when he locks eyes with Leo Valdez, the chaotic, impossible to ignore star of Half-Blood High’s soccer team, nothing about his life feels predictable anymore.

Leo is everything Frank isn’t loud, bright, and magnetic. He thrives on attention, thrives on chaos… and somehow, thrives on pushing Frank’s buttons. What starts as rivalry; snarky taunts across fields and arenas; soon becomes something neither of them expected.

Between competitions, late, night encounters, and stolen moments that feel far too intense to be allowed, Frank and Leo have to face a question they’ve been avoiding all along: can two people from opposite worlds ever meet in the middle… or will their differences tear them apart?

Notes:

This is A high school AU, no powers

Chapter 1: ☾ ⋆ Chapter 1 - Frank ⋆ ☽

Chapter Text

The first arrow misses.

Frank knows it the second it leaves the string.

Too much tension in his fingers. Too much noise in his head.

It lands just outside the inner ring with a dull thunk, close enough to pass in practice, but not good enough. Not today.

Not with everyone watching.

"Reset," Reyna says calmly beside him.

Her voice isn't harsh. It never is. That somehow makes it worse.

Frank exhales slowly, lowering the bow. The late afternoon sun stretches long shadows across the archery range set up behind Jupiter High's football field. Temporary targets line the edge of the grass, set up for the joint sports showcase; half the school milling around, half of another school spilling in like they own the place.

Half-Blood High.

Frank tries not to look.

"You're rushing," Reyna continues, arms crossed, posture straight as ever. "Anchor, breathe, release. You know this."

"I know," Frank mutters.

He adjusts his grip, rolling his shoulders back. The weight of the bow is familiar, grounding. Reliable. Unlike everything else about today.

Behind them, laughter bursts—too loud, too bright.

Hazel winces slightly. "They're... energetic."

"That's one way to put it," Reyna replies.

Frank doesn't turn around, but he can feel them. Half-Blood students. Loud, chaotic, everywhere at once. Their voices carry across the field, bleeding into the quiet precision Frank depends on.

He pulls another arrow from the quiver.

Anchor. Breathe. Release.

This one flies clean.

Dead center.

"Better," Reyna says.

Hazel claps softly. "That's more like it."

Frank nods, but the tension doesn't leave his chest. It sits there, tight and familiar.

Always there.

The showcase is supposed to be friendly.

That's what the flyers said.

"Jupiter High; Half-Blood High: Unity Through Competition!"

Frank almost laughs thinking about it.

There's nothing friendly about the way the two schools eye each other across the field. Jupiter students stand in clusters; controlled, composed. Half-Blood students move like a storm, drifting from one activity to another, laughing too loudly, cheering too easily.

Frank prefers distance.

Distance is safe.

"Frank."

He looks over.

Hazel is watching him; not the target, not the crowd. Him.

"You're doing that thing again," she says gently.

"What thing?"

"Overthinking everything."

Reyna huffs quietly. "She's right."

Frank opens his mouth to argue, then closes it, Because yeah. He is.

Hazel steps a little closer, lowering her voice. "It's just a showcase. You're okay."

You're okay.

Frank nods again, even if the words don't quite stick.

He didn't always feel like this.

There was a time when archery was just... archery.

Before expectations. Before people watching. Before every movement felt like something to prove.

Before people started looking at him differently.

Frank adjusts his sleeve slightly, making sure it sits just right over his wrist.

No one here says anything. Not anymore.

At Jupiter High, he's just Frank.

Archer. Student council member. Reliable.

That's enough.

It has to be.

"Alright, let's wrap this set," Reyna says.

Frank lifts his bow again.

Draws.

Breathes—

"Yo, is that real?"

The voice cuts through everything.

Loud. Curious. Completely unfiltered.

Frank's fingers slip.

The arrow releases too early, veering off to the left.

Not even close.

He lowers the bow slowly.

"...Seriously?" Reyna mutters under her breath.

Hazel turns toward the voice first.

Frank doesn't.

He doesn't need to.

He already knows.

Half-Blood.

"Dude, that's so cool."

Footsteps crunch against the grass, getting closer. No hesitation. No sense of boundaries.

Frank tightens his grip on the bow but doesn't turn around.

He hears Hazel shift slightly beside him.

"Can we help you?" Reyna asks, polite but edged.

"Yeah," the voice says easily. "I just wanted to see."

There's a pause.

Then-

"Wow."

Something in that word makes Frank turn.

And then-

He sees him.

The first thing Frank notices is the brightness.

Not literal, not exactly. But it feels like it.

The boy standing a few feet away looks like he doesn't belong in the same world as Jupiter High. Dark curls, messy like he didn't even try. A crooked grin that's already halfway to trouble. His Half-Blood High jacket hangs open, sleeves pushed up, like rules are more suggestion than expectation.

But it's his expression that catches Frank.

Genuine.

Open.

Like he's looking at something amazing.

Frank.

"You hit the center like that every time?" the boy asks.

Frank blinks.

"...Most of the time."

"Most of the time?" He laughs softly. "That's insane."

Reyna steps slightly forward. "We're in the middle of practice."

"Right, right," he says, holding his hands up, but he doesn't leave.

Of course he doesn't.

"Just one question," he adds, looking back at Frank. "How long did it take you to get that good?"

Frank hesitates.

No one ever asks like that.

Usually it's:
Are you competing?
What's your score?
Can you do it again?

Not how long did it take.

"...Years," Frank says finally.

The boy nods like that means something.

Like it matters.

"Figures," he says. "Still cool, though."

"Leo!"

Another voice calls from across the field.

Frank glances past him and spots a group approaching; Half-Blood students. One of them waves.

Percy Jackson, if Frank remembers right. Swim team.

Next to him, Piper McLean; cheer and tennis.

They look like they belong with him.

Bright. Loud. Effortless.

"Coming!" Leo calls back, not looking away from Frank.

Leo.

The name settles somewhere in Frank's chest.

"You should come watch the soccer match later," Leo says suddenly.

Reyna makes a small noise of disbelief.

Frank frowns. "Why?"

Leo shrugs, grinning. "Because I'm playing."

"That's not a reason."

"It's a great reason."

Hazel lets out a quiet laugh.

Frank ignores it.

"I have practice," he says.

Leo tilts his head, studying him.

"Yeah," he says. "I figured."

There's something in his tone, like he expected that answer.

Like he knows Frank already.

"Leo," Piper calls again, closer this time. "Stop harassing people."

"I'm not harassing him," Leo protests.

"You are absolutely harassing him."

Percy snorts. "Leave the poor guy alone."

Frank stiffens slightly.

Guy.

It shouldn't matter.

It doesn't.

He's used to it.

Still-

Leo glances back at them, then at Frank again.

"I'll see you around," he says.

Not maybe.

Not if.

Like it's already decided.

And then he's gone.

Just like that.

Pulled back into the noise and movement of Half-Blood High.

The field feels quieter.

Not actually quieter—but different.

Like something shifted.

Reyna exhales slowly. "Unbelievable."

Hazel smiles faintly. "He seemed nice."

"He was distracting," Reyna corrects.

Frank doesn't say anything.

He's still staring at the spot where Leo was standing.

"Frank?"

He blinks.

Looks down at his bow.

At the arrow still in his hand.

"...Yeah," he says quietly.

"Focus," Reyna says.

Right.

Focus.

He raises the bow again.

Draws.

Breathes.

But this time-

For the first time all day-

His mind isn't on the target.

It's on a grin.

A voice.

A name.

Leo.

The arrow flies.

And for once-

Frank doesn't even check where it lands.