Repository navigation
UI Audit
184 small changes across 31 pages, each linked to one of the Design Principles. Sorted within each page by severity (1 = breaks a core principle … 4 = polish). This is the full, verbatim backlog behind the UI design and polishing issue — the issue has every item as a checkbox with status; this page has the full "Now/Fix" detail for each.
Decision status: 90 KEEP, 1 SKIP, 93 NO DECISION RECORDED. KEEP and SKIP came from the owner's own saved picks; NO DECISION RECORDED items have not been reviewed yet and should not be implemented without a nod.
[site-contrast] Stop using gray-400 for text — KEEP · Sev 1 (Accessibility) · Both · S Now: Eyebrow labels (IMAGES, SUPPORT TEAM, TRY AN EXAMPLE), placeholders, captions, "0 pts", locked level names and photo credits are gray-400 on white: about 2.5:1. WCAG asks 4.5:1 for small text. Fix: Make gray-500 (4.8:1) the lightest text colour anywhere. Keep gray-400 for disabled controls, dividers and decoration only.
[site-tables] Give every wide table a phone layout — KEEP · Sev 1 (Responsive) · Mobile · M Now: At 390px the leaderboard, top players, user directory, player reports, "Where you lost points", column guides and scoring tables are cut off at the right edge with no sign that more is there. Fix: Pick one rule per table: show 2–4 priority columns and open the rest on tap, or turn rows into cards. Only where neither works, wrap the table in a scroll box with a fade on the cut edge.
[site-overflow] Nothing may push the page sideways — KEEP · Sev 1 (Responsive) · Mobile · S Now: Some cards run past the right edge (the specimen-detail image card and its Download button, the Pathogen dataset tab row, scoring formulas), so the whole page can scroll sideways. Fix: Add min-width: 0 to flex/grid children holding text, max-width: 100% to images, and overflow-x: auto to code and tables. Test every page at 390px for horizontal scroll.
[site-long] Break up the very long pages — KEEP · Sev 1 (Progressive disclosure) · Both · M Now: How it works (about 40 phone screens), Scoring (about 140), the Pathogen dataset page (about 40) and the round review are single columns of everything at once. Fix: Open with a 3–5 line summary, then collapsible sections (details/summary). On desktop add a sticky table of contents; on mobile a "Jump to" select.
[site-uuid] One way to show long IDs — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: Full 36-character UUIDs wrap to 2–3 lines in gallery cards, the detail page header, the annotator title and the annotation list, often above the thing people actually came for. Fix: Show the first 8 characters in mono plus a copy button wherever an ID appears in passing; show the full value only in an Identifiers block, each with its own copy button.
[site-buttons] Choose buttons by role, not by look — NO DECISION RECORDED · Sev 2 (Consistency) · Both · M Now: Primary actions appear as outlined buttons (Load proposals, Upload, Upload predictions, Data actions), Create account has a 2px black border, Site notice Save is a small dark pill, and Download All is styled like plain text. Fix: Write the rule down and apply it to every page: btn-main = the page's one purpose (max one), btn-primary = commit in a form, btn-secondary = everything else, text link = navigation.
[site-back] One back-link pattern — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: There are three: "← Ambrosia Archive" above the title, a bare "‹" chevron beside the title (My performance, Your answers, player report), and none at all (Create user). Fix: Use "← Parent page" as a small text link above every sub-page title. Drop the bare chevrons.
[site-focus] A focus ring you can see — NO DECISION RECORDED · Sev 2 (Accessibility) · Desktop · S Now: The house focus ring is 4px gray-300. On the gray-200 btn-main and the gray-50 sidebar it is barely visible (about 1.2:1). Fix: Use a 2px gray-600 ring with a 2px white offset on every control, so it shows on every surface.
[site-targets] Small text links as the only action — NO DECISION RECORDED · Sev 2 (Accessibility) · Mobile · S Now: "Open", "Details", "All", "How it works", "Report a problem", the team GitHub/LinkedIn icons and the ROI chevrons are 13–16px tall targets. Fix: Give every tappable thing a 44×44px hit area (padding or a pseudo-element), even when the visible text stays small.
[site-meaning-85] One number, one colour — NO DECISION RECORDED · Sev 2 (Colour means something) · Both · S Now: 85% accuracy is an orange DECENT chip on the game home and green text on My performance. The same value tells two stories. Fix: Colour a metric only by its own scale step (game_scale.value_step) everywhere. If the chip compares you to other players, label it as a rank ("Top 71%") and keep it grey.
[site-progress] Progress bars are not "correct" — KEEP · Sev 3 (Colour means something) · Both · S Now: Progress bars are green (game top bar, Challenge level), dark grey (Expertise "On the way") or orange (accuracy chart). Green means done or correct, but a progress bar just means "how far". Fix: Draw progress in gray-700 on gray-200. Use scale colours only when the bar shows a rating.
[site-casing] Sentence case for every heading — KEEP · Sev 3 (Consistency) · Both · S Now: Some titles are Title Case ("Beetle Image Browser", "Data Management", "Account Management", "Create User"), others sentence case ("My performance", "How the game works", "Your expertise"). Fix: Sentence case everywhere; capitals only for names (IBBI-AI, Ambrosia Archive, Scolytinae).
[site-sections] Two section-header styles, one meaning — KEEP · Sev 3 (Consistency) · Both · S Now: Card sections use small-caps grey (IMAGE DETAILS, STAFF TOOLS, GRANT) on some pages and bold sentence headings (Expertise, Recent sessions, Columns) on others, at the same level. Fix: Bold sentence headings for page sections; small-caps grey only for labels inside a card.
[site-cards] Fewer cards inside cards — KEEP · Sev 3 (Hierarchy) · Both · M Now: Almost every block is a bordered, shadowed card, often nested (Data actions card holding button cards, Image details card holding section cards). Nothing stands out because everything is framed. Fix: Use a card only for a thing you can act on or that repeats in a list. Sections of a page are separated by spacing and a heading, not a border.
[site-tabs] One control per kind of switch — KEEP · Sev 3 (Consistency) · Both · M Now: Views switch with underline tabs (Pathogen dataset), a segmented control (History), wrapping pills (Leaderboard periods, Review statuses), underlined links (Game settings) and bottom tabs (Annotator). Fix: Segmented control for 2–4 views of one page, pills for filters you can combine, underline tabs for long page sections. Bottom tabs only in the annotator's tool mode.
[site-upload] One upload component — KEEP · Sev 3 (Consistency) · Both · M Now: IBBI-AI has a dashed drop zone; Proposed interactions, Upload interactions, Model predictions and the admin tools use the browser's raw "Choose File / No file chosen" control. Fix: Reuse the IBBI-AI drop zone (smaller) for every file input, showing the accepted type and size limit inside it.
[site-empty] A standard empty state — KEEP · Sev 3 (Feedback and state) · Both · S Now: Empty lists say "Nothing here.", "None yet.", a lone "—" or nothing, in small grey text. Fix: One pattern: a muted icon, one sentence saying what will appear here, and the action that makes it appear.
[site-icons] One icon per destination — KEEP · Sev 3 (Consistency) · Both · S Now: The same place gets different icons (gamepad in the sidebar, play on the game page), and icons sit off the text baseline in places (the mt-2 nudges). Fix: Keep a small map: picture = Image Browser, chart-tree = Taxonomy, diagram-project = Interactions, sparkles = IBBI-AI, play = Ambrosia Archive, edit = Annotation, folder = Data, user = Account, flag = report. Align icons with flex, not margins.
[site-dash] One "no value" mark — NO DECISION RECORDED · Sev 4 (Consistency) · Both · S Now: Missing values show as an en dash (leaderboard, game tiles), an em dash (detail page) or "No ID". Fix: Hide empty fields where possible; where a cell must show something, use one mark (an em dash) site-wide.
[site-mono] No raw field names in user text — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "valid_species_id: 2037", "bbox_is_validated" and similar database names appear in sentences meant for people. Fix: Use the human label ("Accepted name ID 2037"); keep code names only in column guides and CSV docs.
[nav-focus] Open the rail on keyboard focus — NO DECISION RECORDED · Sev 2 (Accessibility) · Desktop · S Now: The desktop sidebar only expands on :hover, so keyboard users tab through icons with no labels. Fix: Add #sidenav:focus-within to every #sidenav:hover rule in base.html.
[nav-mobile-title] Say where you are in the mobile bar — NO DECISION RECORDED · Sev 2 (Hierarchy) · Mobile · S Now: The mobile top bar is a tall grey band with only a hamburger in it, so it never says which page you are on. Fix: Put the current section name next to the ☰ (e.g. "Image Browser") and shrink the bar to 56px.
[nav-drawer-account] Account with your name at the bottom of the drawer — KEEP · Sev 3 (Consistency) · Mobile · S Now: Account sits in the middle of the list like any other page. Fix: Pin it to the drawer and rail footer, showing the username and "Account & settings", the way the desktop rail ends with GitHub and the version.
[nav-play-icon] Play icon for Ambrosia Archive — NO DECISION RECORDED · Sev 4 (Consistency) · Both · S Now: The sidebar uses the gamepad icon; the game itself uses a play button. Fix: Use fi-rr-play in the sidebar and on the home card.
[nav-active] Mark the active item the same way everywhere — NO DECISION RECORDED · Sev 4 (Feedback and state) · Both · S Now: The active item is bg-gray-200 + semibold in the rail, but sub-pages (Leaderboard, Unlocks) leave the parent unmarked. Fix: Highlight the parent section for every page below it (match on URL prefix, not exact name).
[home-actions] Bring the three actions above the fold — KEEP · Sev 1 (Hierarchy) · Mobile · S Now: On a phone the first action (Browse Images) is about 1.3 screens down, below the welcome paragraph, Image Attribution, Maintained by and the beetle. Fix: Title, one sentence, the beetle, then the three cards. Attribution and Maintained by go to the footer.
[home-institutions] Left-align the institutions list — NO DECISION RECORDED · Sev 2 (Content is design) · Both · S Now: About 30 contributing institutions are centred, so every line starts in a different place and the list cannot be scanned. Fix: Left-aligned list in two columns on desktop; show the top 10 with "Show all 31".
[home-team] Move the full team off the home page — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Mobile · M Now: Team, support team and institutions take about 8 phone screens of the home page. Fix: A compact "Who built this" card linking to a Team & partners page, or a two-column people grid with the role on one line.
[home-team-icons] Team profile icons are tiny — NO DECISION RECORDED · Sev 2 (Accessibility) · Both · S Now: GitHub / LinkedIn / lab icons are about 16px with "|" separators between them, and have no visible label. Fix: 24px icons with 44px hit areas, no separators, and an aria-label on each.
[home-dup-buttons] No duplicate ways in — NO DECISION RECORDED · Sev 2 (Hierarchy) · Desktop · S Now: A hero button row plus three cards for the same three tasks gives two controls per destination. Fix: Keep only the three cards; the hero holds the title, sentence, counts and the beetle.
[home-created] "Created by:" heading — KEEP · Sev 3 (Consistency) · Both · S Now: It is heavier than the page's other section headings and is the only heading with a colon. Fix: "Team" in the same style as the other section headings.
[home-cards-icons] Same icons as the sidebar on the home cards — KEEP · Sev 3 (Consistency) · Both · S Now: The home cards use icons that do not all match the menu (a game controller for the game, a bug for the browser). Fix: Use the icon map: picture, sparkles, play.
[home-lab-link] Lab link does not look like a link — KEEP · Sev 3 (Affordance) · Both · S Now: "University of Florida Forest Entomology Lab." is a link with no underline and a trailing full stop inside it. Fix: Underline it and move the full stop outside the link.
[home-stats-link] Make the counts clickable — NO DECISION RECORDED · Sev 4 (Affordance) · Both · S Now: Images / Genera / Species / Type specimens are dead numbers. Fix: Link each count to the image browser filtered to that set (e.g. type specimens only).
[home-logos] Sponsor logos at 40% opacity — NO DECISION RECORDED · Sev 4 (Accessibility) · Both · S Now: The sponsor row is greyscale at 40% opacity until hovered, so on phones (no hover) the logos are faint. Fix: 70% opacity at rest, or full-strength greyscale; keep the hover lift for desktop.
[browser-truncate] Never truncate the species name — KEEP · Sev 1 (Hierarchy) · Mobile · S Now: In list cards the species name is cut ("Xyleborinus sagin…"), while the record ID, institution and photographer are shown in full. Fix: Let the name wrap to two lines; trim the secondary fields instead.
[browser-density] Fewer fields per card — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · M Now: Each list card shows up to 15 fields (record ID, specimen, aspect, country, sex, institution, photographer, subfamily, tribe, genus, species, type status). Fix: Show name, institution and two key facts (aspect, type status); everything else lives on the detail page.
[browser-thumb] Let the image lead the card — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: Thumbnails are about 100px while text takes two-thirds of each card, in a gallery whose point is the images. Fix: Full-width thumbnail on top of each card on mobile, or a 40% image column on desktop.
[browser-download] Download controls look like text — NO DECISION RECORDED · Sev 2 (Affordance) · Both · S Now: "Download Selected (0)" and "Download All (90)" are grey and black text with tiny chevrons; it is unclear they are dropdown buttons, and (0) is not visibly disabled. Fix: Two btn-secondary buttons with a download icon; disable Selected until something is ticked.
[browser-placeholder] Search placeholder is cut off — NO DECISION RECORDED · Sev 2 (Content is design) · Mobile · S Now: "Search by ROI ID, Image ID (UUID), or I…" does not fit the box at 390px. Fix: "Search names or IDs" with the full list of searchable fields in helper text under the box.
[browser-empty-thumb] Blank thumbnails — NO DECISION RECORDED · Sev 2 (Feedback and state) · Both · S Now: Some cards (e.g. Cryphalus dilutus) show an empty grey box where the image should be. Fix: A "No preview" placeholder with an image icon, and a retry if it failed to load.
[browser-filter] Filter is a faint text toggle — KEEP · Sev 3 (Affordance) · Both · S Now: "Filter ⌄" is grey text next to a big Search button, and it does not show whether filters are on. Fix: btn-secondary "Filters" with an active-count pill ("Filters · 2").
[browser-grid-select] Grid view loses selection — KEEP · Sev 3 (Consistency) · Both · S Now: List cards have a checkbox for download; grid tiles do not, so switching view changes what you can do. Fix: A checkbox in the top-left corner of each grid tile, shown on hover on desktop and always on touch.
[browser-roi-badge] Repeated tiles look like duplicates — KEEP · Sev 3 (Content is design) · Both · S Now: The grid shows the same photo several times (one tile per ROI), which reads as duplicates. Fix: A small "ROI 2 of 9" badge on each tile, or group tiles by image.
[browser-pairs] Two label/value styles — KEEP · Sev 3 (Consistency) · Both · S Now: Cards use inline "Subfamily: Scolytinae"; the detail page uses a two-column table for the same data. Fix: Use the two-column table (label grey, value dark) in both places.
[browser-pager] Pager matches the rest of the site — KEEP · Sev 3 (Consistency) · Both · S Now: "Page [1 ⌄] of 8 [Next]" with no Previous button on page 1, so the control changes shape between pages. Fix: Always show ‹ and › (disabled when not available) around "Page 1 of 8", the same pager used on detail pages.
[browser-found] Result count copy — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "Found 90 images." with a full stop, separated from the pager. Fix: "90 images · page 1 of 8" in one line above the results.
[detail-overflow] Image card runs off the screen — KEEP · Sev 1 (Responsive) · Mobile · S Now: On some records the image card and its "Download Original Image" button extend past the right edge at 390px. Fix: max-width: 100% on the image wrapper and min-width: 0 on its flex parent.
[detail-ids-first] Photo before IDs — KEEP · Sev 1 (Hierarchy) · Both · S Now: Two 36-character IDs (ROI and Image) sit above the photo, so the first screen is mostly UUIDs. Fix: Name, authority and photo first; IDs move to an Identifiers card with copy buttons.
[detail-ids-copy] Copyable identifiers in one card — NO DECISION RECORDED · Sev 2 (Affordance) · Both · S Now: Copy buttons exist only for ROI and Image ID, beside long wrapped text; specimen ID and valid name ID cannot be copied. Fix: An Identifiers card: Image ID, ROI ID, Specimen ID, Valid name ID, each mono with its own copy button and a "Copied" tick.
[detail-boxes] Make the current ROI stand out — NO DECISION RECORDED · Sev 2 (Feedback and state) · Both · S Now: The selected box and the other boxes look almost the same, so on a 9-beetle photo you cannot tell which ROI the page describes. Fix: Current box 2px gray-900 with a numbered tab; others 1px gray-500. Add a show/hide boxes toggle.
[detail-toolbar] Image controls in a toolbar under the photo — NO DECISION RECORDED · Sev 2 (Proximity) · Both · S Now: The two round overlay buttons sit on the photo's corners, cover the specimen and use an unclear icon (two squares). Fix: A toolbar attached to the photo's bottom edge: ROI pager left; boxes, full size and flag right.
[detail-roi-pager] ROI pager next to the photo — NO DECISION RECORDED · Sev 2 (Proximity) · Both · S Now: "ROI 1 of 3 ‹ ›" sits below "More images of the same specimen", far from the photo it pages, and its chevrons are small and grey. Fix: Move it into the photo toolbar with 40px buttons.
[detail-actions] Two clear actions: Download and Edit — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: A full-width Download button, a pencil on the Image details card and an "Open in annotator" link elsewhere: three ways to reach two actions. Fix: Two equal 48px buttons directly under the photo toolbar: Download (btn-primary) and Edit (btn-secondary, edit icon) going to the annotator.
[detail-empty] Hide empty fields — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · S Now: Rows such as Described ID —, Alias ID —, Subtribe —, Image Email —, Country —, and an empty Specimen notes box take space to say nothing. Fix: Show only filled fields, with "Show all 31 fields" at the end of each card.
[detail-verbatim] Verbatim name only when it differs — KEEP · Sev 3 (Content is design) · Both · S Now: "Name (verbatim) Tricolus difodinus" and "Scientific Name Tricolus difodinus" repeat the same value. Fix: Show the verbatim name only when it differs from the accepted name, labelled "As written on the label".
[detail-order] Order sections by what people look for — KEEP · Sev 3 (Hierarchy) · Both · S Now: Seven sections (Identity, Taxonomy, Attribution, Image technical, Collection, Validation, Notes), with Identity first. Fix: Taxonomy, Specimen and collection, Attribution, Validation, then Technical and Identifiers last.
[detail-doi] Make the protocol DOI a link — KEEP · Sev 3 (Affordance) · Both · S Now: "dx.doi.org/10.17504/protocols.io…" is plain text in a grey box and overflows on mobile. Fix: Render URLs and DOIs in notes as links, wrapped with overflow-wrap: anywhere.
[detail-prevnext] Small centred previous/next — KEEP · Sev 3 (Consistency) · Both · S Now: Moving between images needs a compact, predictable control; large separate buttons look off-centre beside the title. Fix: One bordered pager "‹ 12 / 90 ›" (36px) at the right of the header row, aligned to the title's centre.
[detail-resolution] Round the resolution — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "2.8346 px/mm" shows more precision than anyone reads. Fix: 2.83 px/mm (full value on hover).
[detail-more] "specimen(s)" heading — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "More images of the same specimen(s)" reads awkwardly. Fix: "Other images of this specimen (3)".
[tax-mobile] Show details where you tap — KEEP · Sev 1 (Responsive) · Mobile · M Now: On a phone the tree is a tall scroll box and details render below it: tapping a species changes something you cannot see. Fix: On mobile, open the species as its own page (or a bottom sheet) with a back button to the tree.
[tax-synonyms] Synonyms as one line each — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · S Now: Each of 19 described names is a card with four rows (Genus, Species, Authority, Year), so the list runs about 10 screens. Fix: One line per synonym: "Bostrichus saxesenii Ratzeburg, 1837", in a list that shows 5 then "Show all 19".
[tax-expand] Expand All is a trap on a phone — KEEP · Sev 3 (Feedback and state) · Mobile · S Now: Expand All opens 7 800+ species at once. Fix: Hide Expand All on mobile, or have it expand one level at a time.
[tax-search] Search box says what it searches — KEEP · Sev 3 (Content is design) · Both · S Now: A "Genus" select next to "Enter search term…" does not say they belong together. Fix: Placeholder follows the select ("Search genera…"), or one search across all ranks with the rank shown in results.
[tax-raw-id] "valid_species_id" shown raw — KEEP · Sev 3 (Content is design) · Both · S Now: The species card shows "valid_species_id: 2037" as a database field. Fix: "Accepted name ID 2037" with a copy button.
[tax-image-icon] Unlabelled image icon on tree rows — KEEP · Sev 3 (Affordance) · Both · S Now: A small image icon next to some taxa (e.g. Scolytinae) has no label and no explanation. Fix: "12 images" as text, or a tooltip and aria-label "Browse images of Scolytinae".
[tax-counts] Counts on every rank — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: Subfamilies show species counts; genera do not. Fix: Show species (and image) counts on every node in grey.
[int-tabs] Tabs cut off at the right — KEEP · Sev 1 (Responsive) · Mobile · S Now: "About | Browse Dataset (1 015) | Beetle Hosts (108) | P…" runs off the screen with no scroll cue, and sits two screens down. Fix: Put the tabs directly under the title as a scrollable row with a fade edge, or a select on mobile.
[int-dup] Description written twice — NO DECISION RECORDED · Sev 2 (Content is design) · Both · S Now: The intro paragraph is repeated almost word for word in "About the dataset". Fix: Keep it once, in the intro.
[int-dup-nav] Cards duplicate the tabs — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: Browse Dataset, Beetle Hosts, Pathogen Groups and References appear as tabs and again as cards with tiny "→" arrows. Fix: Keep the tabs; turn the cards into the About tab's summary without arrows, or drop them.
[int-staff] Staff tools above the content — KEEP · Sev 3 (Hierarchy) · Both · S Now: Three staff buttons come before the dataset itself for staff users. Fix: A single "Staff tools ⌄" menu in the header row.
[int-mono-units] Mono units under stat numbers — KEEP · Sev 3 (Consistency) · Both · S Now: "274 taxa", "281 primary refs", "24.1% verified" use small mono grey units next to sans numbers. Fix: Same sans face for the unit, gray-500, normal case.
[int-italics] Long italic paragraph — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: The taxonomic reconciliation note is a long italic block, which is slower to read. Fix: Regular weight in a gray-50 note box.
[int-amber] "Under Construction" pill — NO DECISION RECORDED · Sev 4 (Colour means something) · Both · S Now: Amber is right ("waiting"), but the pill sits between title and text with no detail. Fix: "Under construction · v1.0, last search 24 July 2026" so the status carries its date.
[intrev-tabs] Status pills wrap to two lines — KEEP · Sev 3 (Responsive) · Mobile · S Now: Waiting (0) / Accepted (0) / Rejected (0) wrap, and Rejected sits alone on the second line. Fix: A three-part segmented control that always fits one line.
[intrev-empty] Empty queue says nothing useful — KEEP · Sev 3 (Feedback and state) · Both · S Now: "Nothing here." under a full filter form. Fix: "No claims waiting. Proposals appear here after a proposals file is loaded." plus a link to Proposed interactions; hide the filters when the queue is empty.
[intrev-score] "Score at least" has no range — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: The field gives no hint of the score's scale. Fix: Helper text "0–1" or a slider.
[intprop-columns] Column guide cut off — KEEP · Sev 1 (Responsive) · Mobile · S Now: The Columns table shows only field names in very tall rows; the description column is off-screen ("source_title, source_authors, source_jo…"). Fix: On mobile, stack each row: field name in mono, description under it.
[intprop-primary] Load proposals is the page's purpose — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: The main action is an outlined secondary button. Fix: btn-primary "Load proposals", disabled until a file is chosen.
[intprop-file] Raw file input — KEEP · Sev 3 (Consistency) · Both · S Now: Native "Choose File / No file chosen". Fix: The shared drop-zone component with ".csv, up to 20 MB" inside it.
[intup-columns] "How rows are read" cut off — KEEP · Sev 1 (Responsive) · Mobile · S Now: Same as the column guide: rows show only the field name, the explanation is off-screen. Fix: Stack field name and description on mobile.
[intup-primary] Upload is outlined — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: The page's commit action is a secondary button. Fix: btn-primary "Upload".
[intup-downloads] Three equal download buttons — KEEP · Sev 3 (Hierarchy) · Both · S Now: Current interactions, Blank template and Initial file (v1.0) are three outlined buttons of different widths. Fix: A small "Downloads" list: one row each with an icon, name and a one-line description.
[intup-counts] Counts buried in a sentence — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "In the database: 1 015 from the published dataset, 0 accepted from proposals, 0 uploaded." Fix: Three small stats in a row: Published 1 015 · Accepted 0 · Uploaded 0.
[data-heading] Card heading as big as the page title — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: "Data Actions" (inside a card) is almost the same size as the page title "Data Management", and "Species Tables" too. Fix: Card headings at text-lg semibold; only the page title is text-2xl/3xl.
[data-actions] Five ragged outlined buttons — NO DECISION RECORDED · Sev 2 (Consistency) · Both · M Now: Upload new data, Update metadata, Upload model predictions, Bulk validation and Browse gallery are stacked outlined buttons of different widths, with no primary. Fix: A menu list: full-width rows with icon, title and one-line description, chevron at right. The explanation paragraph becomes those descriptions.
[data-browse] "Browse Gallery to Download" is navigation — KEEP · Sev 3 (Content is design) · Both · S Now: It sits among actions but just links to the image browser. Fix: A text link under the intro: "To download images, use the Image Browser."
[data-defs] "Field Definitions" squeezed into the corner — KEEP · Sev 3 (Affordance) · Both · S Now: An info icon and two grey lines in the card's top-right corner. Fix: A text link "Field definitions" after the intro sentence.
[data-species] Species tables explanation — KEEP · Sev 3 (Progressive disclosure) · Both · S Now: A long paragraph, a select, a definition, version, filename and two buttons in one card. Fix: One sentence, then the select; put the long definition behind "What are these tables?".
[cls-upload] Upload is 1.4 screens down — KEEP · Sev 1 (Hierarchy) · Mobile · S Now: Server info, model choice, the keep-image checkbox and examples all come before "Upload image to classify". Fix: Title, one line, the drop zone, the keep checkbox, then examples; model behind a disclosure.
[cls-consent] "Don't keep my image" belongs with the upload — NO DECISION RECORDED · Sev 2 (Proximity) · Both · S Now: The checkbox is inside the Model card, though it is a decision about the photo. Fix: Put it directly under the drop zone.
[cls-dialog] Two opt-outs that can disagree — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: The terms dialog has "Don't keep my images" and the page has "Don't keep my image". Two controls for one setting. Fix: Let the dialog set the page checkbox (and say so), or remove it from the dialog.
[cls-title] Two-line title — KEEP · Sev 3 (Content is design) · Mobile · S Now: "IBBI-AI: Intelligent Bark Beetle Identifier" wraps to two lines. Fix: Title "IBBI-AI" with "Intelligent Bark Beetle Identifier" as the eyebrow line under it.
[cls-server] Server note looks like a warning — KEEP · Sev 3 (Hierarchy) · Both · S Now: A bordered grey box with an info icon and centred text, at the top of the page. Fix: One muted line under the drop zone, shown again as the loading message while the server wakes.
[cls-model-link] 11px model-performance link — KEEP · Sev 3 (Accessibility) · Both · S Now: "Find out more about the performance of each model" is tiny, underlined grey text. Fix: A 14px "Compare models" link next to the select.
[cls-icon] Grey sparkles next to the name — NO DECISION RECORDED · Sev 4 (Colour means something) · Both · S Now: Blue is for IBBI-AI's suggestions, not its name or menu icon. Fix: Sparkles in gray-700 by the title; keep blue for the suggested species in results.
[cls-credits] Photo credits too small — NO DECISION RECORDED · Sev 4 (Accessibility) · Both · S Now: Example photo credits are 11px gray-400. Fix: 12px gray-500, one line per photographer.
[cls-examples] Examples as one row — NO DECISION RECORDED · Sev 4 (Hierarchy) · Mobile · S Now: Four large example tiles in a 2×2 grid push the upload down. Fix: Four small thumbnails in one row under the drop zone: "Or try an example".
[ann-fit] Fit the image by default — SKIP (owner decided against) · Sev 1 (Responsive) · Mobile · S Now: On a phone the photo opens at 21% in a small box with a large empty grey area below. Fix: Open fitted to the canvas width; remember the zoom per session. (Not to be implemented — owner's call.)
[ann-blue] Your boxes are drawn in blue — NO DECISION RECORDED · Sev 2 (Colour means something) · Both · S Now: Annotation boxes and their number badges are blue, but blue is IBBI-AI's colour. Fix: Human boxes in gray-900; AI-proposed boxes in blue, so the colour tells you who drew it.
[ann-title] UUID as the image's title — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: The canvas header is the 36-character image ID in bold over three lines. Fix: Species name (or "Unnamed") as the title; ID as short mono with copy.
[ann-handles] 16px box handles on touch — NO DECISION RECORDED · Sev 2 (Accessibility) · Mobile · S Now: The number badge and red delete "X" on each box are about 16px circles. Fix: 28px handles on coarse pointers; delete through a toolbar button for the selected box.
[ann-dot] Status as a lone green dot — NO DECISION RECORDED · Sev 2 (Accessibility) · Both · S Now: The header shows a green dot beside the ID with no word. Fix: A "Validated" pill (colour + word).
[ann-list] List rows lead with UUIDs — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: The image list shows truncated UUIDs ("45c62afd-6e55-4c8e-a215-cc…") as each row's title. Fix: Species name first, then status and box count; short ID last.
[ann-fit-icon] "Fit" uses the search icon — KEEP · Sev 3 (Consistency) · Both · S Now: The Fit button has a magnifier, the same icon as search and zoom. Fix: Use the expand icon for Fit.
[ann-stats] Tiny counts panel — NO DECISION RECORDED · Sev 4 (Accessibility) · Both · S Now: Validated / Not validated / No bounding box counts are 11px with coloured dots. Fix: 13px, and make each count a filter button.
[pred-columns] Column guide cut off — KEEP · Sev 1 (Responsive) · Mobile · S Now: "image_id, bbox_x, bbox_y, bbox_width, b…" runs off the screen in tall empty rows. Fix: Stack name and description on mobile.
[pred-primary] Upload predictions is outlined — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: The page's commit action is a secondary button. Fix: btn-primary, disabled until a file is chosen.
[pred-intro] Circular intro — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "The usual way is the Upload Model Predictions button on Data Management" is shown on the page that button opens. Fix: Start with what the page does: "Upload an AI model's species guesses for ROIs."
[bulk-sticky] Validate button scrolls away — NO DECISION RECORDED · Sev 2 (Proximity) · Both · S Now: "Validate selected (0)" is at the top; after ticking images further down you scroll back up to commit. Fix: A sticky bar at the bottom: "n selected · Validate".
[bulk-checkbox] Checkbox drawn over the photo — NO DECISION RECORDED · Sev 2 (Accessibility) · Mobile · S Now: Each card's checkbox sits on the image's top-left corner, small and over the specimen. Fix: Make the whole card the toggle (selected = dark border + tick), with the checkbox in the caption row.
[bulk-boxes] Show what is being validated — KEEP · Sev 3 (Content is design) · Both · S Now: Cards show boxes but not how many or their names. Fix: Caption: "Xyleborinus saxesenii · 3 boxes, all named".
[bulk-filter] Filter form style — KEEP · Sev 3 (Consistency) · Both · S Now: The Filter button is a light-grey btn-main-style pill, unlike Filter/Show buttons elsewhere. Fix: Apply filters on change; drop the button.
[acc-groups] Group the 14 permission boxes — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · S Now: Fourteen checkboxes in one long list per request. Fix: Three groups (Viewing, Editing, Admin) with the requested ones ticked and badged.
[acc-asked] "(asked)" is easy to miss — KEEP · Sev 3 (Feedback and state) · Both · S Now: Requested areas are marked with small grey "(asked)". Fix: A "Requested" pill, and requested rows listed first.
[acc-buttons] Button labels — KEEP · Sev 3 (Content is design) · Both · S Now: "Save: grant the ticked areas" and "Deny (stays Basic)". Fix: "Grant selected" (btn-primary) and "Deny" (red outlined), with "They stay on Basic" as helper text.
[acc-note] Long label on the note field — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "NOTE TO THEM (optional, included in the email)". Fix: Label "Note (optional)", helper "Included in the email".
[not-name] "My account" vs "Account Management" — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: The back link says "← My account" but the menu calls the page "Account Management". Fix: Pick one name ("Account") and use it in the menu, titles and back links.
[not-preview] Preview the banner — KEEP · Sev 3 (Feedback and state) · Both · S Now: You type a message without seeing how the dark banner will look or wrap. Fix: A live preview strip in the banner style under the field.
[acct-dir] User directory cut off — KEEP · Sev 1 (Responsive) · Mobile · S Now: The third column of the user table is clipped at the right edge. Fix: Rows as cards: username, email, role pill, chevron to edit.
[acct-waiting] "2 waiting" pill wraps — NO DECISION RECORDED · Sev 2 (Responsive) · Mobile · S Now: The badge on Review Access Requests breaks onto two lines inside the pill. Fix: white-space: nowrap on pills; just the number "2" in the pill.
[acct-who] Say whose account it is — KEEP · Sev 3 (Hierarchy) · Both · S Now: The page is titled "Account Management" and never shows who you are. Fix: A header with your username, role and level, matching the menu's account row.
[acct-roles] Black Superuser pill — KEEP · Sev 3 (Consistency) · Both · S Now: Superuser is a black pill; Staff and Standard are grey. Black is not in the house style. Fix: gray-700 pill with white text for Superuser, gray-100 for the others.
[acct-cards] Big cards for single buttons — KEEP · Sev 3 (Hierarchy) · Both · S Now: "Account Actions" is a whole card with a 24px heading around one Change password button. Fix: A settings list: rows for Change password, Access requests, Site notice, Users.
[cre-black] Black-bordered Create account button — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: The only button with a 2px black border; the house style says no black buttons. Fix: btn-primary.
[cre-intro] Explanation after the button — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: "Use this form to create new accounts…" is centred under the submit button. Fix: Move it above the form as the page intro.
[cre-title] Small title, no back link — NO DECISION RECORDED · Sev 2 (Consistency) · Both · S Now: "Create User" is a 16px bold label, not a page title, and the page has no way back. Fix: page-title + "← Account" above it.
[cre-focus] Orange focus border — NO DECISION RECORDED · Sev 2 (Colour means something) · Both · S Now: The focused Username field gets an orange/amber border, and orange means "decent" or "attention" here. Fix: The grey focus ring used everywhere else.
[cre-names] Three names for one thing — KEEP · Sev 3 (Consistency) · Both · S Now: "Create User" (title), "Create account" (button), "Create New User" (Account page). Fix: "Create user" in all three places.
[gh-leaderboard] Top players table cut off — KEEP · Sev 1 (Responsive) · Mobile · S Now: The eight-column table runs off the right edge ("SE…"). Fix: Rank, player + level, score and accuracy only, as on the leaderboard redesign.
[gh-locked] Locked games look like empty ones — NO DECISION RECORDED · Sev 2 (Feedback and state) · Both · S Now: Similarity, Odd one out and Find them all show "–" and "0 pts" whether you haven't played or they are still locked. Fix: Locked tiles: lock icon + "Unlocks at level 2"; unplayed tiles: "Not played yet · Play".
[gh-today] "79/20 today" reads as 79 out of 20 — NO DECISION RECORDED · Sev 2 (Content is design) · Both · S Now: The daily goal chip reads like a fraction over 100%. Fix: "79 today · goal 20 ✓" (and the same in the play header).
[gh-icons-row] "Leader-board" hyphenated — NO DECISION RECORDED · Sev 2 (Responsive) · Mobile · S Now: Five square buttons are too narrow, so "Leaderboard" breaks into "Leader-board". Fix: A 2-row icon grid or a horizontally scrolling row with full words.
[gh-chart] Accuracy chart is hard to read — KEEP · Sev 3 (Accessibility) · Both · S Now: Tiny gray-400 axis labels, one orange bar and a dashed line without a legend. Fix: Label the dashed line ("average 88%"), 12px gray-500 axis labels, your bar in its scale colour with a "You" label.
[gh-level-bar] Next level line — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "Level 5: 148 pts · unlocks focus on a genus" under the bar is compact but cryptic. Fix: "148 pts to Tunnel master — unlocks focus on a genus".
[play-header] Crowded play header — KEEP · Sev 1 (Responsive) · Mobile · M Now: Exit + Esc, a mode name cut to one letter ("N", "S", "O", "F."), 79/20, L4 · 652/800 and ? are squeezed into one row. Fix: Exit (icon) · full mode name · daily count; level and points move to the end-of-round screen or a tap-to-open chip.
[play-kbd] Keyboard hints on touch screens — NO DECISION RECORDED · Sev 2 (Responsive) · Mobile · S Now: Esc, Del, ⌫ and Enter key caps appear on phone buttons. Fix: Hide them under @media (pointer: coarse); keep them on desktop.
[play-prompt] Question above the images — NO DECISION RECORDED · Sev 2 (Hierarchy) · Both · S Now: "Which one is a different tribe?" and "Select every Ipini · 4 beetles" sit below the grid, so you look before you know what to look for. Fix: Put the prompt in a band above the images.
[play-submit] Disabled Submit is unreadable — NO DECISION RECORDED · Sev 2 (Accessibility) · Both · S Now: White text on a gray-300 button (about 1.5:1), with no hint of why it is disabled. Fix: gray-500 text on gray-200 when disabled, plus helper text ("Pick a subfamily first").
[play-space] Empty band above the photo — NO DECISION RECORDED · Sev 2 (Hierarchy) · Mobile · S Now: In Naming the image sits in a tall grey area with lots of empty space, pushing the answers down. Fix: Size the image area to the photo's aspect ratio (max 45% of the screen).
[play-modes] Tiny mode tabs in Mixed — NO DECISION RECORDED · Sev 2 (Accessibility) · Mobile · S Now: "All | Similar | Odd one | Find all | Name | Focus" are about 11px. Fix: 14px segmented control that scrolls horizontally.
[play-flag] Faint Flag button — KEEP · Sev 3 (Accessibility) · Both · S Now: "Flag" is pale grey on the image area and hard to find. Fix: Same icon button as on the detail page (flag icon, gray-700, 40px).
[play-buttons] Uneven Skip / Back / Submit — KEEP · Sev 3 (Consistency) · Both · S Now: The three buttons have different widths and an uneven gap (a wide gap between Skip and Back). Fix: A 1fr / 1fr / 2fr grid with equal gaps.
[play-progress] Green round progress bar — KEEP · Sev 3 (Colour means something) · Both · S Now: The thin bar under the header is green although it only shows progress. Fix: gray-700 progress bar.
[play-expand] Expand icons float off the tiles — KEEP · Sev 3 (Consistency) · Both · S Now: Each grid tile's expand icon sits above its top-right corner, outside the tile. Fix: Inside the tile, 8px from the corner, on a white circle.
[play-hints] Similarity hints too pale — NO DECISION RECORDED · Sev 4 (Accessibility) · Both · S Now: "strangers", "distant kin", "cousins", "siblings", "twins" are gray-400. Fix: gray-500.
[play-loading-double] Two loading messages fighting for attention — KEEP (owner flagged 2026-10-07, after round 5 merged) · Sev 2 (Hierarchy / Consistency) · Both · S
Now: The loading screen shows a rotating short line ("Finding beetles…", "Turning over the bark…") and a separate rotating beetle fact ("In a Colorado study…") stacked underneath it, under one spinner. Round5-perf's short lines and round5-feel's beetle facts were meant to replace each other but both landed side by side when the two branches were combined into #616. It reads as two competing loading messages and does not make the wait feel any shorter.
Fix: Combine into one rotating message. Either fold the short filler lines into the fact rotation (one slot, alternating between a short phrase and a beetle fact) or drop the short lines entirely and keep only the beetle facts under the spinner. game_play.html: #loading-line, #loading-fact, LOADING_LINES, LOADING_FACTS, loadingLines().
[rep-lost] Decimals and a cut-off column — NO DECISION RECORDED · Sev 2 (Content is design) · Both · S Now: "Where you lost points" shows −818.9 / −410.2 and the LOST column is clipped on mobile. Fix: Round to whole points and drop the STOPPED column on mobile (or show it on tap).
[rep-expert-text] Ten lines of expert rules — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · S Now: A dense grey paragraph explains how expertise works before your expertise list. Fix: One sentence + "How expertise works" link to the How it works section.
[rep-empty-col] Empty Distinction column — KEEP · Sev 3 (Progressive disclosure) · Both · S Now: Accuracy by rank has a Distinction column of all "–". Fix: Hide a column when every value is empty.
[rep-title] Player report titled only with a username — KEEP · Sev 3 (Content is design) · Both · S Now: Another player's report is titled "ana_k", the same as their profile. Fix: "ana_k · performance" or tabs Profile / Performance.
[rep-months] "Last six months" with one row — NO DECISION RECORDED · Sev 4 (Progressive disclosure) · Both · S Now: A full table for one month of data. Fix: Hide until there are two months.
[how-30s] "In 30 seconds" takes two minutes — KEEP · Sev 3 (Content is design) · Both · S Now: Five numbered steps plus three paragraphs about goals and unlocks. Fix: Keep the five steps; move goals and unlocks into their own collapsed sections.
[how-dup] Scoring explained twice — KEEP · Sev 3 (Content is design) · Both · S Now: The Scoring section here overlaps the superuser "How scoring works" page. Fix: Players get the short version here; link to the full page for staff.
[unl-select] Unlabelled second select — NO DECISION RECORDED · Sev 2 (Accessibility) · Both · S Now: The Focus card has "Everything" and a second, empty select with no label. Fix: Label both ("Rank", "Taxon"), and disable the second until a rank is chosen.
[unl-next] Say what's next — KEEP · Sev 3 (Feedback and state) · Both · S Now: Locked levels are greyed out with no line saying how far away the next one is. Fix: A "Next: Tunnel master — 148 pts and 60% to go" line above the list.
[his-filters] Two rows of filter pills — KEEP · Sev 3 (Responsive) · Mobile · S Now: Game pills (All, Similarity, Odd One Out, Find Them All, Naming) and day pills (All days, Today, Streak) wrap to three lines. Fix: Two selects side by side on mobile, pills on desktop.
[his-points] Gains are black, losses red — NO DECISION RECORDED · Sev 4 (Colour means something) · Both · S Now: −42 pts is red but +268 pts is plain black. Fix: Optional: green for gains, red for losses, as in the round review ticks.
[rev-collapse] Show the mistakes first — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · S Now: Every answer of the round is a full card with photo and table (about 33 screens). Fix: Show wrong and partly-right answers expanded, fully-correct ones as one-line rows.
[rev-header] Dense answer header — NO DECISION RECORDED · Sev 2 (Hierarchy) · Mobile · S Now: "#2 −48.8 pts (−75 missed) ×1.25 easier beetle" with a "Not quite" pill that wraps to two lines. Fix: Line 1: result pill + points; line 2: "×1.25 · easier beetle" in grey.
[rev-verified] VERIFIED pill in a column header — KEEP · Sev 3 (Consistency) · Both · S Now: The DATABASE column header holds a green VERIFIED pill. Fix: Put verification status in the card header once.
[rev-links] Small right-aligned links — KEEP · Sev 3 (Accessibility) · Mobile · S Now: "Report a problem" and "Open in annotator" are small links squeezed at the right. Fix: Two small secondary buttons with icons (flag, edit).
[lb-table] Eight columns at 390px — KEEP · Sev 1 (Responsive) · Mobile · M Now: NAME, SIM., ODD, FIND and SE… are cut off, and most cells are "–". Fix: Rows of rank · player + level · score · accuracy; per-game numbers open on tap.
[lb-periods] Period pills on two lines — NO DECISION RECORDED · Sev 2 (Consistency) · Mobile · S Now: This week / This month / This year / All time wrap. Fix: One segmented control: Week · Month · Year · All time.
[lb-specialists] Unlabelled Specialists selects — NO DECISION RECORDED · Sev 2 (Accessibility) · Both · S Now: Two selects ("Choose…" and an empty one) with no labels. Fix: Label them "Rank" and "Taxon".
[lb-show] Score select needs a "Show" button — KEEP · Sev 3 (Feedback and state) · Both · S Now: Changing the sort requires pressing a separate dark Show button. Fix: Apply on change; drop the button.
[lb-me] Find yourself — KEEP · Sev 3 (Feedback and state) · Both · S Now: Your row has only a faint grey background. Fix: "· you" label on your row and a pinned row at the bottom when you are off-screen.
[lb-badges] Level badge stacked above the name — KEEP · Sev 3 (Consistency) · Both · S Now: Level icon above the username and expert shield below it make rows uneven heights. Fix: Name on one line with the shield; level pill on a second line, the same in every row.
[pro-badges] Badge descriptions unreadably small — NO DECISION RECORDED · Sev 2 (Accessibility) · Mobile · S Now: Badge descriptions ("Label your first beetle") are about 8px and pale. Fix: 12px gray-600; two badges per row on phones.
[pro-tiles] Stat tiles with different text sizes — KEEP · Sev 3 (Consistency) · Both · S Now: "Tunnel master" wraps big in the LEVEL tile while SCORE and BEETLES SEEN are numbers. Fix: Number in each tile (Level 5), the name as the caption.
[pro-runon] Run-on stats line — NO DECISION RECORDED · Sev 4 (Content is design) · Both · S Now: "1 day streak · 73 named · 0 compared for similarity · 0 odd ones spotted · 0 grids". Fix: Show only the non-zero items, or put them in the tiles.
[exp-stats] Stats wrap to three lines — NO DECISION RECORDED · Sev 2 (Hierarchy) · Mobile · S Now: "Naming: 42 of 58 correct · covered 6 of 7 tribes (6 needed)" is right-aligned 11px grey and wraps. Fix: Under the taxon name: "42/58 correct · 6 of 7 tribes".
[exp-legend] Nine-item legend before the tree — KEEP · Sev 3 (Progressive disclosure) · Both · S Now: The legend fills the screen above the expertise tree. Fix: A one-line legend ("● naming ▲ telling apart · colour = accuracy") with "Key" behind a tap.
[set-reports] Player reports table at 390px — KEEP · Sev 1 (Responsive) · Mobile · S Now: Four columns force the Reason text into a narrow column of about 25 lines per row, and Reported by is clipped. Fix: Each report as a card: ROI + label on top, reason below, reporter and date in the footer.
[set-text] 20-line explanation box — NO DECISION RECORDED · Sev 2 (Progressive disclosure) · Both · S Now: "How labels become expert-backed" is a long paragraph above the reports. Fix: Collapse it by default.
[set-subnav] Underlined links as page tabs — KEEP · Sev 3 (Consistency) · Both · S Now: "Review game labels | Unlocks | Scoring" look like inline links. Fix: Underline tabs, as on other multi-section pages.
[set-buttons] Mixed button row — KEEP · Sev 3 (Consistency) · Both · S Now: A dark "Review labels in Image Annotation" and three outlined CSV buttons of different widths. Fix: One btn-primary; the CSVs as a "Downloads" list.
[sco-tables] Difficulty tables cut off — KEEP · Sev 1 (Responsive) · Mobile · S Now: The game × answer table shows two of its columns at 390px. Fix: Transpose for mobile (one card per game) or a scroll box.
[sco-code] Formulas cut off — NO DECISION RECORDED · Sev 2 (Responsive) · Mobile · S Now: Formula blocks ("target = start + per_batch × finished bat…") are clipped with no scroll cue. Fix: overflow-x: auto with a fade, or wrap formulas onto lines.
[sco-toc] Make the chip menu a sticky contents — KEEP · Sev 3 (Progressive disclosure) · Both · S Now: The section chips (Principles, Balance…) are a good start but scroll away. Fix: Sticky on desktop; a "Jump to" select pinned under the header on mobile.
[adm-mobile] Tool pages wider than a phone — NO DECISION RECORDED · Sev 2 (Responsive) · Mobile · S Now: The valid_species and described_names tool pages render 990–1054px wide. Fix: Let the form fields stack (max-width: 100%), or show "Best on a computer" above them.
[adm-plurals] Broken plural names — KEEP · Sev 3 (Content is design) · Desktop · S Now: "Answer pointss", "Roi difficultys", "Species discoverys" in the admin index. Fix: Set verbose_name_plural on those models.
[adm-theme] Admin uses Django's blue and yellow — KEEP · Sev 3 (Consistency) · Desktop · M Now: The admin header and module bars use Django's default teal-blue and yellow, outside the grey house style (and blue means IBBI-AI). Fix: Override admin colours with CSS variables in admin/base_site.html: gray-800 header, gray-100 module bars, the beetle mark.
[adm-headers] Required headers as a run-on line — NO DECISION RECORDED · Sev 4 (Content is design) · Desktop · S Now: The CSV's required headers are a comma-separated mono paragraph. Fix: A short bulleted list or a "Download template" link.
Last updated 2026-10-07, from Gallery_UI_Audit.txt. See Design Principles for the ten rules these items trace back to.