@if (step() === 1) {
Step 1 · Select model

Who are you reviewing?

Pick the model and the nickname you used during the show.

01Model

@if (!model()?.avatar) {}

{{ model()?.name ?? 'No model picked' }}

{{ model() ? model()!.age + ' years, ' + model()!.country : 'Pick one to continue' }}

02Nickname

Which of her nicknames did you use?

@if (profileOptions().length === 0) {

This model has no linked accounts yet.

} @else { }
} @if (step() === 2) {
Step 2 · Write your review

Tell us about {{ model()?.name ?? 'this performer' }}

Specifics make great reviews — what she did, how she reacted, what surprised you. Reach 500+ words to unlock a video clip in the next step.

Min 50 · max 65 chars {{ title().length }} / 65
Min 50 · max 160 chars · meta description {{ description().length }} / 160
{{ wordCount().toLocaleString() }} words · {{ charCount().toLocaleString() }} chars
@if (editorTab() === 'write') {
} @else {
@if (body().trim()) {
} @else {

Switch to the Write tab to draft your review.

}
}
} @if (step() === 3) {
Step 3 · Extras All optional

A few extras to round it out

You unlocked a video clip — add one if you want. The rest helps readers find your review. Skip whatever doesn't apply.

01Video @if (videoSec() !== null) { {{ videoSec() }}s unlocked}

@if (videoSec() !== null) { You wrote {{ wordCount().toLocaleString() }} words — that unlocks a {{ videoSec() }}-second video clip. Bring the review to life with footage from the show. } @else { Reach 500 words in step 2 to unlock a 60-second video clip. }

@if (videoSec() !== null) {
Add a video clip Up to {{ videoSec() }} seconds at your tier
Drop a clip or browse MP4 / MOV · max 1 GB · up to {{ videoSec() }} seconds
Want longer? Reach 1,000 words for 120s · 1,500 for the full 180s
}

02When did this happen?

Roughly. Month and year is enough.

03What kind of show?

The format your review is about.

@for (s of showTypes; track s) { }

04Cover photo

Used wherever this review appears. Skip and our moderators will pick a good one when approving the review.

Don't have any of these? Skip ahead — your review is already valuable without them.
} @if (step() === 4) {
Step 4 · Confirm & submit

Almost there

Quick summary of what you're submitting, then read and check the agreement.

01What you're submitting

@for (r of summaryRows(); track r.label) {
{{ r.label }} {{ r.value }}@if (r.meta) { · {{ r.meta }}}
}

02Agreement

Reviews are reviewed before publication, usually within 24 hours.

}
{{ actionMeta() }} @if (step() < 4) { } @else { }
@if (modalFiltered().length === 0) {

No models match "{{ modalQuery() }}"

} @else { @for (m of modalFiltered(); track m.id) { } }