Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 23 additions & 5 deletions specs/t27f/deck.t27
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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,
Expand Down Expand Up @@ -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);
Expand Down
Loading