Morning on the Marsh
Tina GattermannHarbour in Winter
Tavares Gibson312 votes so far · closes 8 Aug, 18:00 UTC
Everything a build needs to look like us: night darks, cream lights, one bright orange, bold rounded headlines with an italic that carries the feeling.
globals.css.Pages alternate section grounds: night-900 → white → cream. The accent never fills a section background — it lives in buttons, emphasis words, marks, and dots. The dark stripe need not be the hero: the home page opens on cream and puts its night bands where it is making its case. The gradient appears once per page at most, on the hero's italic line. Text on dark is white with on-dark-muted for body.
Every editorial headline carries exactly one italic emphasis phrase — flame-emphasis on light, flame-bright or the hero gradient on dark. Product headings (form labels, dialog titles, table headers, error states) run upright. Poppins never sets body copy; Hanken never sets headlines. Mono eyebrows are the accent and may be flanked by short dashes on light sections, or sit inside an outlined capsule on dark.
<button className="inline-flex items-center gap-2.5 rounded-full px-7 py-[15px] font-display text-[15px] font-semibold text-white shadow-glow [background-image:var(--gradient-button)] transition duration-150 hover:brightness-[1.08] active:scale-[0.98]"> Build your artist profile <span>→</span> </button>
// outline — secondary actions on light "rounded-full border border-pill-border bg-transparent px-7 py-[15px] font-display text-[15px] font-semibold text-heading transition duration-150 hover:border-ink active:scale-[0.98]" // solid ink — sign-up style "rounded-full bg-ink px-7 py-[15px] font-display text-[15px] font-semibold text-white transition duration-150 hover:bg-night-900" // on dark — border white/45, never a fill "rounded-full border border-white/45 px-7 py-[15px] ... text-white" // disabled — no glow, no gradient "cursor-not-allowed rounded-full bg-disabled px-7 py-[15px] text-faint"
Numbered mono label in flame-400, bold head with italic emphasis, muted body. Columns divide with 1px white/12% rules — no card backgrounds.
Dark sections carry ambience: faint dashed circles, dashed connector lines between avatars, and a soft radial lift behind focal points.
Glowing marks (the accent glow, inset highlight plus a warm drop) are reserved for the brand seal and primary CTAs. Section markers sit right-aligned.
Cards are always white — even on cream — radius 20, one soft shadow. The VERIFIED pill is mono caps on check tint — the one component that stays green. Quotes get a 3px accent left border and bold italic Poppins. Capsule badges (outline + tracked mono caps) are eyebrows; dash-flanked mono eyebrows introduce light sections.
// every content card — white even on cream "rounded-[20px] border border-card-border bg-white p-5 shadow-card" // verified pill — the badge of the whole system "inline-flex items-center gap-1.5 rounded-full border border-flame-tint-border bg-flame-tint px-3 py-1.5 font-mono text-[10px] tracking-[0.18em] text-flame-600" // quote — 3px accent rule, bold italic Poppins "border-l-[3px] border-flame-500 py-2 pl-7" "font-display text-[32px] font-bold italic leading-[1.25] text-heading"
Tony and Chelsea Northrup's gear reviews tend to cut through the hype pretty efficiently, and this one on the Insta360 Luna Ultra is no exception. Worth a look if you're curious…
Sections pad 120px vertical. Cards pad 20–24. Content maxes at 1240px with centered heroes.
<label className="font-mono text-[11px] uppercase tracking-[0.18em] text-flame-emphasis">Artist name</label> <input className="rounded-xl border border-border bg-white px-4 py-3.5 text-[15px] text-heading outline-none transition focus:border-flame-500 focus:shadow-[0_0_0_3px_var(--color-flame-tint)]" /> // error state: swap border + label to text-danger / border-danger
150ms ease. Hover: brighten the accent 8%, darken solids one step, links → accent. Press: scale .98. Glow only on primary CTAs and the seal. No parallax, no bounces.
Feature blocks index with mono NN / LABEL (slash form). § markers are reserved for page-level sections; the slash form counts features within one.
Everything above is backed by a token in app/globals.css under the Tailwind v4 @theme block. Reference the token; never re-hardcode a hex that already exists.
--font-displayfont-displayPoppins · headlines only--font-sansfont-sansHanken Grotesk · body + UI--font-monofont-monoIBM Plex Mono · counted / official8pxrounded-lgthumbnails12pxrounded-xlinputs16pxrounded-2xlpanels20pxrounded-[20px]cards999pxrounded-fullpills--shadow-cardshadow-cardwhite cards only--shadow-glowshadow-glowprimary CTA + seal only--gradient-button[background-image:var(--gradient-button)]primary pill fill--gradient-hero[background-image:var(--gradient-hero)]hero italic, ≤1× per page{/* white */}
<section className="mx-auto max-w-page px-6 py-[72px] sm:px-12">
{/* cream — the alternating band */}
<section className="bg-cream px-6 py-[72px] sm:px-12">
{/* night — text flips to on-dark, rules to white/12% */}
<section className="bg-night-900 px-6 py-[72px] text-on-dark sm:px-12"><h2 className="font-display text-[44px] font-bold leading-[1.18] text-heading">
The world is becoming{" "}
<em className="italic text-flame-emphasis">more automated</em>. Trust is rare.
</h2>
// on dark, the emphasis token changes: text-flame-bright// dash-flanked mono eyebrow (light sections) <div className="flex items-center gap-2.5 font-mono text-xs uppercase tracking-[0.22em] text-flame-emphasis"> <span aria-hidden className="h-px w-5 bg-flame-emphasis" /> Foundations <span aria-hidden className="h-px w-5 bg-flame-emphasis" /> </div> // right-aligned page-section marker "font-mono text-xs uppercase tracking-[0.18em] text-muted" → —— § 01 · Color // within a section, count features with the slash form instead: 01 / PORTFOLIO
Two names to watch. text-muted is caption text (#7C8880) while bg-muted is shadcn's cream fill — they are deliberately split, and new code should prefer text-caption. And never restyle a vendored component in components/ui/ or components/ai-elements/: fix the alias layer in globals.css instead — one mapping, every component follows.
The permanent tournament components from components/bracket/ and components/share/, rendered with inline fixture data — no database behind any of them. Artwork boxes show each component's own no-image state on purpose: this page keeps its no-photograph rule.
Morning on the Marsh
Human-Made Art verified on ArtHelperTina GattermannReputation2,340reputation points on ArtHelperHuman-Made ArtHuman-Made Art badge on ArtHelperFounding Member badge on ArtHelperHarbour in Winter
Tavares GibsonMorning on the Marsh
Tina Gattermann96% of predictors picked this piece — 216 of 225
3 of 5 predictors called this
Artist
Oil painter working small, from a shed at the bottom of a Hamburg garden. Marsh light, boat paint, and the North Sea in winter — one panel a day, sold once, never printed.
Follow on ArtHelperThe artist
Oil painter working small, from a shed at the bottom of a Hamburg garden. Marsh light, boat paint, and the North Sea in winter — one panel a day, sold once, never printed.
Follow on ArtHelperMorning on the Marsh
Tina GattermannHarbour in Winter
Tavares Gibson312 votes so far · closes 8 Aug, 18:00 UTC
Morning on the Marsh
Tina GattermannAdvances · 1,396 votes
Harbour in Winter
Tavares GibsonReached round 1 · 121 votes
1,517 votes
This is the shape of the season and when each round closes.
All sixteen, in the places they will play from.
Scroll sideways to follow a wing to the final
For artists
The field is picked by hand rather than by open call, so this puts you on the list of artists who want in — not in the bracket. No entry fee, no jury, and no portfolio review.
Free, and a minute. Art Madness runs on ArtHelper, so the account you vote with is the account you compete with.
Upload the pieces, write the bio, add your links. It is what a matchup page shows off when your work comes up.
Ask to be in this season
The button below. No jury, no entry fee, no portfolio review — and no guarantee: the field is picked by hand.
For everyone
Vote every matchup, argue in the threads, and fill out a prediction before round 1 locks. We will tell you the moment it opens.
For artists
The field is picked by hand rather than by open call, so this puts you on the list of artists who want in — not in the bracket. No entry fee, no jury, and no portfolio review.
An ArtHelper accountDone
Free, and a minute. Art Madness runs on ArtHelper, so the account you vote with is the account you compete with.
Upload the pieces, write the bio, add your links. It is what a matchup page shows off when your work comes up.
Ask to be in this season
The button below. No jury, no entry fee, no portfolio review — and no guarantee: the field is picked by hand.
You are on the list for Summer 2026. We will be in touch before the field is set — nothing else to do.
For everyone
Vote every matchup, argue in the threads, and fill out a prediction before round 1 locks. We will tell you the moment it opens.
You are on the list for Summer 2026. We will mail you the moment round 1 opens.
Summer 2026 · final result
Voting is closed and this page is permanent. Nothing comes down — the whole bracket below stays open to read, every matchup keeps its result, and every artwork keeps the round it reached.
Summer 2026 Grand Winner
4-0 · 4,562 votes across the season
The artist
Oil painter working small, from a shed at the bottom of a Hamburg garden. Marsh light, boat paint, and the North Sea in winter — one panel a day, sold once, never printed.
Follow on ArtHelperOil painter working small, from a shed at the bottom of a Hamburg garden. Marsh light, boat paint, and the North Sea in winter — one panel a day, sold once, never printed.
Low Water, Elbe
Boatyard, February
Sleet on the Jetty
Oil painter working small, from a shed at the bottom of a Hamburg garden. Marsh light, boat paint, and the North Sea in winter — one panel a day, sold once, never printed.