BriSCA F2 stock cars racing on shale
EST. 2019 · RFACTOR · THREE FORMULAS

UK short oval racing.
Online. Every week.

BriSCA F1, BriSCA F2 and 2-Litre Saloon Stock Cars — full-contact, graded racing on the ovals of Britain, three nights a week on rFactor. Real rules, real championships, real rivalries.

NEXT GREEN FLAG {{ heroSoonLabel }} {{ heroSoonTrack }} {{ heroSoonWhen }} {{ c.value }} {{ c.label }} {{ heroBookedCount }} booked · join them
The race week

Three nights. Every week.

Full 2026 calendar →
Race night round-up · {{ rndTag }}

{{ rndHeadline }}

{{ rndMeta }}

RACE BY RACE · TOP 8
{{ race.label }} {{ c.number }}
MEETING TOP SCORERS · TOP 10
{{ stTableLabel }}

{{ stFormulaTitle }}

Pos # Driver Grade Mtgs Avg Pts
Full {{ stFormulaLabel }} table →
Champion spotlight · {{ spotEra }}
{{ spotNumber }}

{{ spotName }}

{{ spotTitleLine }}

{{ spotSub }}

{{ spotRoofName }} Roll of honour →
{{ spotCounter }}
From spectator to the white grade

Five steps to your first green flag

No sim-racing CV required. Every driver starts on the white grade at the front of the grid — the fastest cars start behind you.

Get the files
  1. {{ s.n }} {{ s.title }} {{ s.sub }}
Member account

My OSCA

Manage the pictures used on your public driver profile and stat card. New pictures are checked by an admin before they go live; changing the framing of an approved picture is instant.

Sign in to manage your car

Your Discord account tells OSCA which race numbers belong to you.

Sign in with Discord
Signed in as{{ profileDisplayName }} Go to bookings →
🧪 Synthetic TEST utility

Use Test Driver 01

Admin-only: link your real signed-in Discord identity to the synthetic #901 driver in F1, F2 and Saloons. This changes TEST league data only and never grants authentication or permissions.

One OSCA membership

Register to race

One request covers F1, F2 and Saloons. Choose one league-wide number; an admin reviews it before any driver records are created.

{{ profileRegistrationStatus }}
Connect this website request to Discord: run /link {{ profileRegistrationLinkToken }}. This code is shown only once.

No car is linked yet

Your Discord account is connected, but there is no active OSCA driver record linked to it. An admin can link your race number, then it will appear here automatically.

Your car photo framing preview Choose a picture to start DRAG TO REFRAME
This wide preview is the same shape used at the top of the public driver stat card.
Selected car {{ memberSelectedCar }} {{ memberPhotoStatus }}
{{ formulaTitle }} · DISCIPLINARY POINTS

Disciplinary

Formula-specific disciplinary points and published findings. Messer attendance points are a separate system and never appear here.

My complaints

{{ dpMineCount }}
{{ c.race }} {{ c.formulaLabel }} {{ c.status }} Against{{ c.accused }} Sent{{ c.submitted }} You alleged{{ c.alleged }} Outcome{{ c.outcome }} {{ c.incidentsLabel }} {{ ci.offence }}{{ ci.detail }}
Nothing reported You have not reported an incident. The form below is where one starts.

Submit a complaint

Within 48 hours of the meeting starting. Only authorised administrators can see who reported it.

1 Which race
2 Who was involved
{{ dpAccusedNoMatchText }}
Nobody selected yet.
The maximum of 20 drivers is selected.
3 What are you alleging

{{ inc.title }}

Which driver
{{ inc.driversHelp }}
{{ inc.incompleteText }}
{{ dpIncidentsHelp }}
4 What happened
You are reporting {{ dpSummaryRace }} Against {{ dpSummaryAccused }}
{{ dpSubmitHint }}

Submit a complaint

Sign in to report an incident, and to follow what happens to the ones you have already sent. The disciplinary record beside this is public and needs no sign-in.

Sign in with Discord

Driver DP

{{ formulaTitle }} only · DP never crosses formulas

{{ dpCarryingLabel }}
{{ dpRosterLabel }}
{{ h.headline }} {{ h.lifecycle }} Meeting{{ h.where }} Offence{{ h.offenceDate }} Applied{{ h.appliedDate }} Expires{{ h.expiresOn }}
{{ dpEmptyTitle }} {{ dpEmptyText }}
{{ formulaTitle }} · {{ bkTrack }}

Book in

Pick a formula and press book in — your race number comes from your Discord account. Booking here and booking with /book in Discord use the same shared booking list. The board below is the live grid, grouped by grade.

{{ bkCount }}BOOKED IN CLOSES {{ bkCloses }}
Selected meeting {{ bkTrack }} {{ bkMeta }}
{{ col.label }} {{ col.count }}

No {{ col.labelLower }}-grade drivers booked yet.

WHITES LINE UP AT THE FRONT, SUPERSTARS AT THE BACK. BOOK ONLY FOR YOURSELF · SAY "UNBOOK" BEFORE CLOSE IF YOU CAN'T MAKE IT · NO-SHOWS EARN A MESSER POINT.

Season 2026 · {{ formulaTitle }}

Calendar

Every {{ calNight }} from March to December. Completed meetings link to their result; the next round is open for booking now.

{{ calDone }}RACED
{{ calLeft }}TO COME

{{ m.label }}

{{ formulaTitle }} · race control board

Race night

The live board for the next meeting. Heat splits, servers and the running order — the same feed race control posts to Discord, without the scroll.

LIVE SPLITS POST 15 MIN BEFORE GREEN FLAG
Tonight's meeting

{{ rnTrack }}

{{ rnMeta }}

{{ rnFormat }} {{ rnCars }} CARS BOOKED {{ rnServers }}

{{ rnFormatNote }}

Running order
{{ o.n }} {{ o.name }} {{ o.laps }}

A Final winner runs the Grand National off the lap handicap — and scores double.

{{ h.name }} {{ h.sub }}
{{ formulaTitle }} · national points championship

Points

Every meeting counts, first green flag to the Gala. Only the top ten score in each race — most points at the end of the season takes the silver roof.

{{ ptsCount }} SCORING DRIVERS
{{ ptsProgress }}
POSNO.DRIVERGRADE{{ sh.label }}TOTAL
{{ formulaTitle }} · graded contact racing

Grades

{{ gradePageIntro }}

GRID ORDER · BACK TO FRONT
{{ g.label }}

{{ g.desc }}

STARTS {{ g.startPos }} {{ g.count }} DRIVERS
No graded drivers yet this season {{ g.moreLabel }}
HOW GRADING WORKS
Going up

Maximum two grades per period. A white or yellow who wins a final is promoted automatically for the very next meeting.

Coming down

One grade per period at most, and only after racing at least two meetings in that period.

Minimum grades

Past achievement sets a floor — an ex-World Champion's minimum is blue, and losing a major title means minimum blue for three seasons.

{{ formulaTitle }} · silverware

Race winners

Who is actually winning races this season — heats, finals, B Finals, Grand Nationals and championship races, counted separately. Points are on the Points page; this is wins only. Click any driver for their full record.

{{ wnSortLabel }} · {{ wnCount }} drivers

NO.DRIVER{{ wnValueLabel }} HTFINBFGNCH
{{ wnEmptyNote }}
{{ formulaTitle }} · championship archive

Roll of honour

Every OSCA championship winner, organised by season. Roof colours identify the title won; select a champion to open their full driver record.

{{ hnTitleCount }}TITLES {{ hnYearCount }}SEASONS
{{ y.year }} {{ y.countLabel }}
{{ formulaTitle }} · the paddock

Drivers

Every registered {{ formulaTitle }} driver. Search by name or number — click a card for the full record.

{{ drShown }}

Results

{{ formulaTitle }}

Full scorecards for every completed meeting: heat, final, Grand National and championship points for every driver on the night.

Season
{{ o.label }}
{{ rsMeetingCount }}

These archived meetings have no reviewed operational-season assignment.

Choose a meeting
{{ o.label }}{{ o.note }}
{{ rsStatus }}
{{ rsDate }} · {{ rsInfo }}

{{ rsVenue }}

{{ rsWinnerLine }}

{{ rsBooked }}{{ rsCarsLabel }}
{{ rsTopScorerNumber }}top scorer

{{ rsChampLabel }}

{{ c.pos }}{{ c.numberLabel }}{{ c.name }}

The A-Final also decided this title — one race, both honours.

Race Results

Finishing order · winner first · ^ docked

{{ rc.name }}

{{ rc.sub }}

Meeting Points

Pos
No.
Driver
Grade
Heats
Final points
B-Final
GN
Champ
Total
{{ r.pos }}
{{ r.numberLabel }}
{{ r.name }}
{{ r.gradeLabel }}
{{ r.heat }}
{{ r.final }}
{{ r.bfinal }}
{{ r.gn }}
{{ r.champ }}
{{ r.total }}

· = zero. Final points retain the published A/B grouping; B-Final shows the separate recorded component. Scroll across for all columns.

Track directory · all formulas

Lap records

Every oval on the 2026 calendar with its fastest recorded race lap per formula. Race control posts new records after each meeting — blank cells are still up for grabs.

TRACKSURFACEMEETINGSF1F2SALOONS
{{ t.name }} {{ t.nextLine }} {{ t.surface }} {{ t.meetings }} {{ t.f1 }} {{ t.f2 }} {{ t.sal }}

RECORDS ARE FASTEST RACE LAPS FROM OFFICIAL MEETINGS ONLY — PRACTICE AND QUALIFYING DON'T COUNT.

Trackside · screenshots from race night

Gallery

Every meeting gets its own gallery, posted by drivers and race control after the chequered flag. Pick a meeting, click any photo for the full view.

{{ glEmptyNote }}
{{ glStageCap }} {{ glStageMeta }}
{{ a.venue }} {{ a.dateLabel }} · {{ a.countLabel }}
The paddock wire

News

Round-ups, title winners and league notices — the same posts the bot drops in Discord after every meeting.

{{ nwOpenTag }} {{ nwOpenDate }}

{{ nwOpenTitle }}

OSCA rulebook 2026 · updated 28 Oct 2025

The rulebook

Everything that keeps race night clean, from booking in to the DP ladder. Every driver must read this before their first meeting.

{{ s.intro }}

{{ r.k }} {{ r.v }}
{{ ch.name }} {{ ch.laps }}

{{ ch.desc }}

{{ rf.name }} {{ rf.title }}
rFactor · mods, tracks & skinpacks

Downloads

Everything a new or returning driver needs to get on the grid. Files marked members only need a Discord sign-in first.

{{ d.photoCounter }} {{ d.tag }} {{ d.size }} {{ d.name }} {{ d.meta }}

{{ d.desc }}

{{ d.cta }}
Nothing published yet

Mods, track packs and skinpacks appear here as soon as race control uploads them.

Admin · {{ adSectionLabel }}

{{ adPageTitle }}

{{ adPageContext }}

Action centre

What needs attention

Nothing is waiting on an admin. Any queue that could not be read is left out rather than shown as zero.
Next race night · {{ adNextRaceFormula }}

{{ adNextRaceVenue }}

{{ adNextRaceWhen }} {{ adMeetingNote }}
{{ f.label }} {{ f.value }}
{{ adMeetingUnknown }}
Next race night

No fixture ahead

Nothing is scheduled after today. Add one on Fixtures.

Who's online

Awaiting live data

Live presence is not connected yet. Once it is, this shows everyone signed in right now and the page, meeting or case each of them is working on.

— {{ p.label }}

Recent admin activity

{{ a.who }} {{ a.text }} {{ a.when }} · {{ a.subject }}
No admin has changed anything yet.

Site usage

How many people are using the OSCA website, and what they are looking at.

Awaiting live data
{{ u.label }} {{ u.value }} {{ u.note }}
Nothing here is estimated. A dash means OSCA does not have the figure, not that it is zero.
{{ adDpAttentionLabel }} {{ adDpScopeNote }}
{{ adDpReceiptText }}

{{ adDpListTitle }}

{{ adDpListCount }}
{{ mg.formula }} {{ mg.venue }} {{ mg.meeting }} {{ mg.count }}
{{ adDpEmptyTitle }} {{ adDpEmptyText }}
Reported by{{ adDpTicketReportedBy }} Against{{ adDpTicketAgainst }} Formula{{ adDpTicketFormula }} Meeting{{ adDpTicketMeeting }} Race{{ adDpTicketRace }} Lap(s){{ adDpTicketLaps }}
Reported incidents {{ ri.line }} {{ ri.note }}
{{ adDpTicketWroteLabel }}

{{ adDpTicketWrote }}

Steward observation: {{ os.line }}

Something we saw

Optional. Kept permanently, separately from the report, and it awards nothing on its own.

Nobody selected yet.
Immutable once recorded, and never shown as something the member said.

Admin review

What we conclude actually happened
{{ adDpTicketWhere }}
This one is finished. What was decided is below, and a correction there never erases what it replaced.
{{ rr.number }}
Driver(s) Nobody chosen — this line cannot be recorded.
{{ rdo.label }}

{{ rr.driversNote }}

Our finding
{{ ro.label }}{{ ro.note }}
{{ rr.countLabel }} {{ rr.countHelp }} In our words Decision
{{ rd.label }}{{ rd.note }}
{{ rr.dpFigure }} {{ rr.dpBasis }}
Why {{ rr.overrideHint }} Incident / lap {{ rr.context }} {{ rr.basis }}

Nothing to review yet. Add a line for whoever this is about.

Dates, catalogue version and championship doubling are recorded automatically.

Decision history

{{ adDpFindingsCount }} · a correction never erases what it replaced
{{ f.outcome }}{{ f.points }} {{ f.offence }} · {{ f.reason }} {{ f.lifecycle }}

Case activity

Every recorded step
{{ a.action }} {{ a.when }} · {{ a.actor }} {{ a.reason }}
Nothing has happened to this complaint since it was raised.
Nothing selected Choose a complaint on the left to read the report, record a finding and close it.
{{ adDpHistoryCount }} Decided and closed. The queue holds only what is still outstanding.

Decided complaints

Newest season first
{{ rc.label }}
Nothing here yet {{ adDpHistoryEmptyText }}
Formula
{{ adDpCarryingLabel }}
{{ formulaLabel }} only · DP never crosses formulas

{{ adDpLedgerTitle }}

{{ adDpDriverCount }}
{{ adDpListNote }}
{{ adDpLedgerEmptyTitle }} {{ adDpLedgerEmptyText }}
Disciplinary record

{{ adDpRecordName }}

Active DP{{ adDpRecordDp }} Next expiry{{ adDpRecordExpiry }} Counting now{{ adDpRecordActive }}
{{ mm.label }} {{ mm.total }} {{ mm.when }}
{{ rr.label }}
Nothing on the record {{ adDpRecordEmptyText }}
Choose a driver Their findings appear here, grouped by the meeting and the race they came from.
Formula
{{ formulaLabel }} only · a record is never recalculated to be read

Drivers

{{ adDhDriverCount }}
In car-number order. Every driver in this formula, with a record or without one.
No driver matches No driver in this formula matches that number or name.
Disciplinary history

{{ adDhName }}

Active DP{{ adDhActiveDp }} {{ adDhSeasonLabel }}{{ adDhSeasonDp }} Career DP{{ adDhCareerDp }}
A clean record {{ adDhEmptyText }}
{{ hm.label }} {{ hm.total }} {{ hm.when }}
{{ hr.label }}
Choose a driver Pick a driver from the list to read what has been recorded against them in this formula.
DP totals do not trigger anything automatically. The league has not yet decided what should happen at 8, 12, 16 and 20 DP, so OSCA records the points and stops there: no booking is blocked and no Discord role is applied.

Add a booking

Writes to the same list as /book and the site.

Tonight's booking list

{{ adBookedCount }} CARS · {{ adFormat }}
{{ b.numberLabel }} {{ b.name }}
{{ adResNavRound }} {{ adResCurrentMeetingVenue }} {{ adResCurrentMeetingStateLabel }}
{{ adResCurrentMeetingSub }}
🔍
STATUS:
No meetings found matching your search.
{{ grp.title }}
{{ mi.formulaLabel }} {{ mi.track }} {{ mi.tagText }}
{{ mi.date }} · {{ mi.info }}
{{ mi.statusLabel }}
Loading the meeting, grids and points settings…
{{ adResError }}
No {{ formulaLabel }} meetings match this status filter.
{{ adResMeetingTitle }} {{ adResSaveLabel }} PUBLISHED REV {{ adResRevision }}
All checks passed — ready to publish. {{ i.message }}
HEAT SPLITS · {{ adResHeatSplitCount }}
{{ adResFormatNote }}
{{ adResDrawWarning }}
{{ adResMissingBookedLabel }}
#{{ m.number }}
{{ h.label }}
No heats drawn yet. Set the format above and press DRAW HEATS — or the bot’s /drawgrid will do the same thing.
NO DRIVERS ARE CURRENTLY BOOKED.
BOOK DRIVERS IN BEFORE DRAWING HEATS.
IMPORTED HISTORICAL RESULT. {{ adResArchiveNote }}
PUBLISHED RESULT. {{ adResCorrectRevisionLabel }}
UNPUBLISHED RESULT. The latest immutable revision remains in Publication History for audit and correction. Publishing again creates a new revision.
PUBLICATION HISTORY
{{ adResHistoryError }} Loading...
VIEWING IMMUTABLE HISTORY — {{ adResHistoryDetailTitle }}
Published: {{ adResHistoryDetailWhen }}
Withdrawn: {{ adResHistoryWithdrawnWhen }}
{{ adResHistoryReason }}
The normal Race Control layout below is showing the selected stored snapshot. All mutation controls are unavailable.
EDITING RESULTS. {{ adResCorrectNextLabel }}
RACE / POS
{{ p }}
{{ r.label }}
{{ c.peerInitial }}
Type a car number and use Tab, Enter or the arrow keys. Drag across cells — or shift-click and shift-arrow — to select a block, then Delete to clear it or Ctrl+C / Ctrl+V to move it. Add ^ after a number to mark it docked. {{ adResRulesFrozenLabel }}
POINTS / POS
{{ p }}
{{ r.label }}
{{ adResFinalsEl }}

Register a driver

Adds the driver to {{ adDriverFormula }}. Link a Discord member when known; their roles are not changed here.

{{ adDriverCount }}
Every change is audited and queued for the allowlisted test-Sheet mirror. Use the Grades tab for later grade changes.
#DRIVERGRADEDISCORD MEMBERSTATUSEDIT
{{ d.numberLabel }} {{ d.name }} {{ d.gradeImgEl }}{{ d.gradeLabel }} {{ d.memberLabel }} {{ d.status }}
Loading the roster…
No drivers match this search.

Drivers

{{ adGradeRosterCount }}

{{ adGradeMetricsMessage }}

{{ adGradeError }}
{{ d.numberLabel }} {{ d.name }}{{ d.nationalLabel }} {{ d.currentWord }} → {{ d.stagedWord }} Not applied
No driver matches “{{ adGradeQuery }}”.

Pending changes

{{ adGradePendingSummary }}

Ready to apply

{{ adStageLabel }} · on this screen only. Leaving the page loses them.

Only the changes on this screen are applied. Saved changes below remain separate.

{{ sg.number }} {{ sg.name }}{{ sg.conflict }} {{ sg.fromImgEl }} {{ sg.toImgEl }}

Still waiting

{{ adQueuedCountLabel }} from before, or dated ahead. No grade moves until these are applied too.

{{ q.number }} {{ q.name }} {{ q.reason }} {{ q.note }} · from {{ q.date }} · {{ q.dueLabel }} {{ q.fromImgEl }} {{ q.toImgEl }}
Apply these saved changes after their effective date. Older changes without review protection must be removed and staged again. The Apply action above only applies this screen's staged changes.
Nothing waiting Click a grade beside a driver and the change appears here. Nobody's grade moves until you apply it, and applying is one action.

Offences

{{ adOffenceCount }}
{{ o.name }} Retired {{ o.help }} DP amount {{ o.defaultLabel }}
{{ adOffencesEmptyText }}
Changing an offence publishes a new version from today onwards. Findings already recorded keep the DP they were judged under, permanently.
These used to sit across the navigation on every page, almost always green. A real problem now raises a warning in the bar instead of waiting to be noticed.
BACKGROUND JOBS {{ adJobFailures }} failed or retrying Nothing is failing or retrying. {{ adJobsNote }}
{{ s.label }}

{{ adAuditHeading }}

{{ adAuditRange }}
When Who What happened What it affected Result
Reason given: {{ r.reason }}
{{ d.label }} {{ d.value }}
Stored before / after record
{{ r.detail }}
Nothing in the audit log matches these filters.
Entries can never be edited or deleted. A row written before OSCA recorded where an action came from says so rather than guessing.

Membership registrations

Approve once to create the same number in F1, F2 and Saloons atomically. New drivers default White; use the optional returning-driver grades only when authorised.

NUMBER RELEASE: {{ adRegistrationNumberRelease }} · INACTIVITY POLICY: {{ adRegistrationInactivity }}

#{{ r.number }} {{ r.name }}{{ r.status }}
{{ r.hometown }} · {{ r.discordState }} · No recorded number conflict
{{ r.conflictMessage }}
No membership registrations are waiting for review.

Points & Championships

Season and championship scoring rules. Race-night point vectors remain in Race Control.

Export Points table

Copy or download a complete current Points table for Excel.

{{ adPointsExportSummary }}
Loading championship settings…
{{ adPointsFormulaLabel }} configuration is coming next

The {{ adPointsFormulaLabel }} championship rules have not been guessed. They will be added once their exact behaviour has been proven.

Saloons World Ranking UNSAVED CHANGES
Current World Ranking scoring rules
Ordinary World Ranking
Championship Rules How each championship contributes to the World Ranking
Championship Counts to WR WR multiplier Attendance points
{{ r.name }}
×
Track Championship Rules Versioned track bonus rules for this World Ranking cycle
VERSIONED RULES
Ties Share rank & bonus
next rank skipped
Zero raw points No track bonus
How the World Ranking is built
Ordinary WR meeting
Meeting points + ordinary attendance
Championship meeting
Title-race points × WR multiplier + attendance
Track Championship
Raw track points determine the venue bonus added to WR
Saving these rules automatically rebuilds the current Saloons points tables.
{{ adFxReviewSummary }} {{ adFxIssueText }}
Competitions Status
Meeting type

{{ formulaLabel }} fixtures

{{ adFixtureCountLabel }}
{{ fx.dateShort }} {{ fx.dateRest }}
{{ fx.track }} {{ fx.info }} {{ chip.name }} {{ fx.championshipChip }} SCORES NOTHING {{ fx.reviewLabel }} ROUND NUMBER
Race night{{ fx.limits }} Surface{{ fx.surface }} {{ fx.status }} {{ fx.stateNote }}
{{ adFixtureFormTitle }} {{ adFixtureFormNote }}

Meeting

Race night

The shape of the night. Race Control can still override it for the meeting itself.

Bookings

The cutoff is always 30 minutes before the start and is not set here.

Competitions

Which season tables this meeting counts towards.

{{ adFxTagNote }}
{{ adFxChampSummary }} {{ adFxChampWarnText }}

Media

The poster the fixture shows on the public calendar.

Current fixture poster NO POSTER
{{ adFxPosterName }}
JPG, PNG or WebP, up to 8 MB. The image is checked by its actual contents and stored by OSCA. Saving replaces the current poster.
{{ adFixtureFootNote }}
No fixtures No {{ formulaLabel }} fixture matches. Add the first one, or widen the filters above.
{{ adTrackSummary }}
{{ adTrackFormTitle }} {{ adTrackFormNote }}
Status {{ adTrackVariantLockedNote }}
{{ adTrackFormFoot }}
Tracks{{ adTrackListNote }}
{{ tr.name }} Also recorded as {{ tr.aliases }} {{ tr.group }} {{ tr.fixtures }} {{ tr.status }}
{{ adTrackEmptyText }}

{{ adDownloadFormTitle }}

{{ adDownloadStorageNote }}

PICTURES
Upload the file first, then press EDIT on it in the list below to attach pictures.

Uploaded downloads

{{ d.title }}/{{ d.slug }} · {{ d.size }}{{ d.fileName }}{{ d.formula }}{{ d.version }}{{ d.status }}
{{ d.member }}
GET
{{ d.photoCount }}
No files have been uploaded yet.

{{ adNewsFormTitle }}

Previews, write-ups and notices. Results and new champions already post themselves from the data.

THE POST
SELECTED PICTURE
PHOTO LAYOUT: hover a picture for controls. Drag it onto another picture to snap them into one row, or drag it above/below text to move the block. Use the blue edge and corner handles for horizontal, vertical or diagonal resizing.
ARTICLE PICTURES
IN ARTICLE
Use + PICTURES above to place photos exactly where you want them in the article.

Written posts

{{ n.tag }} {{ n.pinMark }}{{ n.title }} {{ n.meta }} {{ n.status }}
Nothing written yet. Results and new champions still appear on the news page on their own.

Photos

{{ adPhotoStorageNote }}

{{ adPhotoFormTitle }}
No picture chosen {{ adPhotoChosenNote }} {{ adPhotoProgress }}
{{ adPhotoStorageNote }} {{ adPhotoDriverHint }}
SHOW
MEETING ALBUM {{ a.formulaLabel }}
{{ a.subject }} {{ a.countLabel }}
{{ adPhotoAlbumTitle }} {{ adPhotoAlbumFormulaLabel }} {{ adPhotoAlbumCount }} {{ adPhotoAlbumSaveNote }}
EDITING PHOTO ORDER Grab the handle on a photo and drop on the blue edge where it should land. Tick several photos first to move them together; Shift-click selects a whole range.
{{ adPhotoAlbumSelectedCount }}
COVER •••
{{ p.categoryLabel }} / {{ p.statusLabel }} #{{ p.order }}
{{ p.subject }} {{ p.caption }} SELECT OR GRAB · BLUE EDGE = DROP POSITION
{{ p.categoryLabel }} / {{ p.statusLabel }} {{ p.subject }} {{ p.caption }}
{{ adPhotosEmptyNote }}
{{ lbCap }} {{ lbCounter }} · CLICK PHOTO TO CLOSE
{{ toastMsg }}
{{ adResConfirmEyebrow }}

{{ adResConfirmTitle }}

FORMULA{{ adResConfirmFormula }}MEETING{{ adResConfirmMeeting }}VENUE{{ adResConfirmVenue }}DATE{{ adResConfirmDate }}DRIVER{{ adResConfirmDriver }}

{{ adResConfirmCopy }}

{{ modalNumber }}

{{ modalName }}

OSCA {{ modalGradeWord }} DRIVER

{{ ft.k }} {{ ft.v }}
{{ f.label }} CURRENT GRADE {{ f.gradeWord }}
{{ sec.label }} {{ row.k }} {{ row.v }}
COMBINED TOTALS · ALL FORMULAS
{{ t.v }} {{ t.k }}
STATUS Active {{ modalStatusNote }}