diff --git a/specs/t27f/deck.t27 b/specs/t27f/deck.t27 index 30f3e7fdef..67fda0047b 100644 --- a/specs/t27f/deck.t27 +++ b/specs/t27f/deck.t27 @@ -16,7 +16,12 @@ ; - Tome's ribbons include cyan. On our map teal and cyan mean verified and published, so the ; ribbons here keep to violet, magenta, pink and blue, and a test holds every ribbon colour away ; from every status colour; -; - a portrait frame stacks the map above the card instead of beside it. +; - a portrait frame stacks the map above the card instead of beside it; +; - the backdrop is pure black, by the owner's order of 2026-10-18 to follow our brand book: +; the t27.ai site paints its page #000000, and the brand book (gHashTag/tri-net +; phone/BRANDBOOK.md) says black surfaces, colour only as a signal, never as decoration. So +; the aurora ribbons are kept as colours but drawn at zero strength, and a test holds every +; backdrop pixel outside the map and the card at 0x000000. ; As in reel.t27, this file decides numbers and a host draws them: regions in permille of the ; frame, type sizes in pixels per preset, colours as 0xRRGGBB, opacities in permille. ; Contrast below is a luminance difference on sRGB values (Rec. 709 weights, no gamma), a proxy for @@ -123,7 +128,7 @@ pub const FADE_OUT_FRAMES : i32 = 8; pub const STILL_CARD_ALPHA : i32 = 1000; /// The palette, 0xRRGGBB. -pub const BACKDROP : i32 = 0x06060B; +pub const BACKDROP : i32 = 0x000000; pub const AURORA_COUNT : i32 = 4; pub const AURORA : [4]i32 = [0x7C3AED, 0xC026D3, 0xF472B6, 0x3B82F6]; pub const TEXT : i32 = 0xFFFFFF; @@ -135,9 +140,9 @@ pub const GLASS_FILL_PERMILLE : i32 = 70; pub const GLASS_BORDER_PERMILLE : i32 = 240; pub const GLASS_RADIUS_PERMILLE : i32 = 32; /// How much of the aurora shows through behind a card, and behind the cover headline; how strongly -/// the map shows behind the cover. -pub const AURORA_UNDER_CARD_PERMILLE : i32 = 300; -pub const AURORA_UNDER_COVER_PERMILLE : i32 = 450; +/// the map shows behind the cover. The brand backdrop is black, so no aurora shows anywhere. +pub const AURORA_UNDER_CARD_PERMILLE : i32 = 0; +pub const AURORA_UNDER_COVER_PERMILLE : i32 = 0; pub const COVER_MAP_PERMILLE : i32 = 250; /// Cell colours on the dark slide, indexed by reel.t27 STYLE_*: gap, muted, open, draft, verified, @@ -632,6 +637,19 @@ test decoration_never_wears_a_status_colour { } } +test the_backdrop_is_brand_black { + assert BACKDROP == 0x000000; + var i : i32 = 0; + while (i < AURORA_COUNT) { + // a ribbon at card strength and at cover strength leaves the backdrop black + assert mix(BACKDROP, AURORA[@intCast(i)], AURORA_UNDER_CARD_PERMILLE) == 0x000000; + assert mix(BACKDROP, AURORA[@intCast(i)], AURORA_UNDER_COVER_PERMILLE) == 0x000000; + i = i + 1; + } + // the darkest status colour (muted) still stands off pure black + assert distance(style_colour(STYLE_MUTED), 0x000000) >= MIN_STATUS_DISTANCE; +} + test gaps_stay_loud_on_a_dark_slide { assert style_dashed(STYLE_GAP); assert style_dashed(STYLE_UNKNOWN);