mod.theme = mod.themes.dark // A text interface: one face, one ink, drawn in character cells. // Phosphor green on a near-black screen. Every control is a whole number of // monospace cells one row tall, framed by one-device-pixel box lines with // square corners. State is inverse video -- a lit block, ground-coloured // letters -- never a bevel or a gradient, and the only light is the ink's // own faint halo, held under the family's ceiling. // // The ladder, darkest first: screen #020401, ground #040603, panel #0e1e09, // well #0f2403, disabled #1d4611, dim #2e5d1d, frame #43862b, line #60c83e, // text #6ee747, filled face #74fa4b, accent #98ff20, hot core #b7f588. mod.theme.color_bg_app = #040603 mod.theme.color_fg_app = #0e1e09 mod.theme.color_bg_container = #0e1e09 mod.theme.color_surface_container_lowest = #020401 mod.theme.color_bg_even = #040603 mod.theme.color_bg_odd = #081005 // Faces: a text interface has none of its own, so a face is the ground it // stands on; the filled faces are written per widget. mod.theme.color_outset = #040603 mod.theme.color_outset_1 = #040603 mod.theme.color_outset_2 = #040603 mod.theme.color_outset_hover = #0e1e09 mod.theme.color_outset_1_hover = #0e1e09 mod.theme.color_outset_2_hover = #0e1e09 mod.theme.color_outset_down = #98ff20 mod.theme.color_outset_1_down = #98ff20 mod.theme.color_outset_2_down = #98ff20 mod.theme.color_outset_focus = #040603 mod.theme.color_outset_1_focus = #040603 mod.theme.color_outset_2_focus = #040603 mod.theme.color_outset_active = #74fa4b mod.theme.color_outset_1_active = #74fa4b mod.theme.color_outset_2_active = #74fa4b mod.theme.color_outset_drag = #0e1e09 mod.theme.color_outset_1_drag = #0e1e09 mod.theme.color_outset_2_drag = #0e1e09 mod.theme.color_outset_disabled = #040603 mod.theme.color_outset_1_disabled = #040603 mod.theme.color_outset_2_disabled = #040603 // Wells: fields, tracks, boxes. One flat green-black, no inner shadow. mod.theme.color_inset = #0f2403 mod.theme.color_inset_1 = #0f2403 mod.theme.color_inset_2 = #0f2403 mod.theme.color_inset_hover = #0f2403 mod.theme.color_inset_1_hover = #0f2403 mod.theme.color_inset_2_hover = #0f2403 mod.theme.color_inset_focus = #0f2403 mod.theme.color_inset_1_focus = #0f2403 mod.theme.color_inset_2_focus = #0f2403 mod.theme.color_inset_active = #0f2403 mod.theme.color_inset_1_active = #0f2403 mod.theme.color_inset_2_active = #0f2403 mod.theme.color_inset_down = #0f2403 mod.theme.color_inset_1_down = #0f2403 mod.theme.color_inset_2_down = #0f2403 mod.theme.color_inset_drag = #0f2403 mod.theme.color_inset_1_drag = #0f2403 mod.theme.color_inset_2_drag = #0f2403 mod.theme.color_inset_empty = #0f2403 mod.theme.color_inset_1_empty = #0f2403 mod.theme.color_inset_2_empty = #0f2403 mod.theme.color_inset_disabled = #040603 mod.theme.color_inset_1_disabled = #040603 mod.theme.color_inset_2_disabled = #040603 // Box lines. One ink for every edge, the frame green; the accent under the // pointer and on focus; the disabled green when off. mod.theme.color_bevel = #43862b mod.theme.color_bevel_hover = #98ff20 mod.theme.color_bevel_focus = #98ff20 mod.theme.color_bevel_active = #60c83e mod.theme.color_bevel_empty = #43862b mod.theme.color_bevel_down = #98ff20 mod.theme.color_bevel_drag = #98ff20 mod.theme.color_bevel_disabled = #1d4611 mod.theme.color_bevel_inset_1 = #43862b mod.theme.color_bevel_inset_2 = #43862b mod.theme.color_bevel_outset_1 = #60c83e mod.theme.color_bevel_outset_2 = #60c83e mod.theme.color_bevel_inset_1_hover = #98ff20 mod.theme.color_bevel_inset_2_hover = #98ff20 mod.theme.color_bevel_outset_1_hover = #98ff20 mod.theme.color_bevel_outset_2_hover = #98ff20 mod.theme.color_bevel_inset_1_focus = #98ff20 mod.theme.color_bevel_inset_2_focus = #98ff20 mod.theme.color_bevel_outset_1_focus = #98ff20 mod.theme.color_bevel_outset_2_focus = #98ff20 mod.theme.color_bevel_inset_1_disabled = #1d4611 mod.theme.color_bevel_inset_2_disabled = #1d4611 mod.theme.color_bevel_outset_1_disabled = #1d4611 mod.theme.color_bevel_outset_2_disabled = #1d4611 // One device pixel on a stock shader, which strokes twice what it is given. mod.theme.beveling = 0.34 // Inks. Body text the phosphor green; the accent is the hot state; letters // on a lit block take the ground; the disabled green is a third of the lit. mod.theme.color_text = #6ee747 mod.theme.color_text_hover = #98ff20 mod.theme.color_text_focus = #98ff20 mod.theme.color_text_active = #98ff20 mod.theme.color_text_down = #98ff20 mod.theme.color_text_disabled = #1d4611 mod.theme.color_text_val = #98ff20 mod.theme.color_text_hl = #b7f588 mod.theme.color_text_meta = #4f9a33 mod.theme.color_text_placeholder = #43862b mod.theme.color_text_placeholder_hover = #4f9a33 mod.theme.color_text_on_accent = #040603 mod.theme.color_label = #6ee747 mod.theme.color_label_hover = #98ff20 mod.theme.color_label_focus = #98ff20 mod.theme.color_label_active = #98ff20 mod.theme.color_label_down = #98ff20 mod.theme.color_label_disabled = #1d4611 mod.theme.color_label_inner = #6ee747 mod.theme.color_label_inner_hover = #98ff20 mod.theme.color_label_inner_focus = #98ff20 mod.theme.color_label_inner_active = #040603 mod.theme.color_label_inner_down = #98ff20 mod.theme.color_label_inner_inactive = #4f9a33 mod.theme.color_label_inner_disabled = #1d4611 mod.theme.color_label_outer = #6ee747 mod.theme.color_label_outer_off = #4f9a33 mod.theme.color_label_outer_hover = #98ff20 mod.theme.color_label_outer_focus = #98ff20 mod.theme.color_label_outer_active = #6ee747 mod.theme.color_label_outer_down = #98ff20 mod.theme.color_label_outer_drag = #98ff20 mod.theme.color_label_outer_disabled = #1d4611 mod.theme.color_icon = #6ee747 mod.theme.color_icon_active = #98ff20 mod.theme.color_icon_disabled = #1d4611 // Marks, values, handles: the lit ink. mod.theme.color_mark = #98ff20 mod.theme.color_mark_active = #98ff20 mod.theme.color_mark_active_hover = #b7f588 mod.theme.color_mark_hover = #98ff20 mod.theme.color_mark_focus = #98ff20 mod.theme.color_mark_down = #b7f588 mod.theme.color_mark_disabled = #1d4611 mod.theme.color_val = #98ff20 mod.theme.color_val_hover = #98ff20 mod.theme.color_val_focus = #98ff20 mod.theme.color_val_drag = #b7f588 mod.theme.color_val_disabled = #1d4611 mod.theme.color_handle = #98ff20 mod.theme.color_handle_hover = #b7f588 mod.theme.color_handle_focus = #98ff20 mod.theme.color_handle_drag = #b7f588 mod.theme.color_handle_disabled = #1d4611 // Selection is inverse video; the caret a block of the accent. mod.theme.color_selection = #00000000 mod.theme.color_selection_hover = #2e5d1d mod.theme.color_selection_down = #2e5d1d mod.theme.color_selection_focus = #2e5d1d mod.theme.color_bg_highlight = #1d4611 mod.theme.color_bg_highlight_inline = #1d4611 mod.theme.color_highlight = #1d4611 mod.theme.color_cursor = #98ff20 mod.theme.color_cursor_focus = #98ff20 mod.theme.color_cursor_empty = #98ff20 mod.theme.color_cursor_border = #98ff20 mod.theme.color_text_cursor = #98ff20 // The accent seed: the primary, secondary and tertiary families are grown // from `color_ctrl_selected`. mod.theme.color_ctrl_selected = #74fa4b mod.theme.color_focus = #98ff20 mod.theme.color_ctrl_active = #98ff20 // The roles the page captions and list rows are drawn in, named here so // the derived surfaces keep this sheet's inks. mod.theme.color_on_surface = #6ee747 mod.theme.color_on_surface_variant = #60c83e mod.theme.color_outline = #43862b mod.theme.color_outline_variant = #2e5d1d mod.theme.color_terminal_bg = #040603 mod.theme.color_terminal_text = #6ee747 mod.theme.color_syntax_bg = #020401 // Monospace everywhere, letter spacing zero: the grid is the design. Every // role takes the monospace family the library already carries for code; // it has one weight, so a heading is set apart by its ink, not by bold. use mod.res.* use mod.text.* mod.theme.font_size_base = 9.5 mod.theme.font_size_p = 9.5 mod.theme.font_size_code = 9.5 mod.theme.font_size_contrast = 2.0 mod.theme.font_regular = mod.theme.font_regular{font_family: mod.theme.font_regular.font_family{ibm_plex_text := mod.theme.font_code.font_family.liberation_mono}} mod.theme.font_label = mod.theme.font_label{font_family: mod.theme.font_label.font_family{ibm_plex_text := mod.theme.font_code.font_family.liberation_mono}} mod.theme.font_bold = mod.theme.font_bold{font_family: mod.theme.font_bold.font_family{ibm_plex_semibold := mod.theme.font_code.font_family.liberation_mono}} mod.theme.font_italic = mod.theme.font_italic{font_family: mod.theme.font_italic.font_family{ibm_plex_italic := mod.theme.font_code.font_family.liberation_mono}} mod.theme.font_bold_italic = mod.theme.font_bold_italic{font_family: mod.theme.font_bold_italic.font_family{ibm_plex_bold_italic := mod.theme.font_code.font_family.liberation_mono}} mod.theme.font_code = mod.theme.font_code{font_size: 9.5} // The type scale the base theme froze from its own face and sizes, stated // again on the monospace face: base 9.5, so a cell is 7.5 points and the // cap about 8.6, the brief's type for a 24 point row. mod.theme.type_title_l_size = 12.9 mod.theme.type_title_m_size = 11.2 mod.theme.type_title_s_size = 10.3 mod.theme.type_body_l_size = 10.1 mod.theme.type_body_m_size = 9.5 mod.theme.type_body_s_size = 8.8 mod.theme.type_label_l_size = 9.5 mod.theme.type_label_m_size = 8.8 mod.theme.type_label_s_size = 8.1 mod.theme.font_size_1 = 23.2 mod.theme.font_size_2 = 16.3 mod.theme.font_size_3 = 12.9 mod.theme.font_size_4 = 11.2 mod.theme.font_size_5 = 10.6 mod.theme.font_size_6 = 10.1 mod.theme.font_title_l = mod.theme.font_bold{font_size: 12.9 line_spacing: 1.2} mod.theme.font_title_m = mod.theme.font_bold{font_size: 11.2 line_spacing: 1.2} mod.theme.font_title_s = mod.theme.font_bold{font_size: 10.3 line_spacing: 1.2} mod.theme.font_body_l = mod.theme.font_regular{font_size: 10.1 line_spacing: 1.35} mod.theme.font_body_m = mod.theme.font_regular{font_size: 9.5 line_spacing: 1.35} mod.theme.font_body_s = mod.theme.font_regular{font_size: 8.8 line_spacing: 1.35} mod.theme.font_label_l = mod.theme.font_bold{font_size: 9.5 line_spacing: 1.2} mod.theme.font_label_m = mod.theme.font_bold{font_size: 8.8 line_spacing: 1.2} mod.theme.font_label_s = mod.theme.font_bold{font_size: 8.1 line_spacing: 1.2} // Metrics. One cell is 7.5 points; a row is 24. // A gap is one cell across and a quarter row down. mod.theme.space_factor = 6.0 mod.theme.space_1 = 3.0 mod.theme.space_2 = 8.0 mod.theme.space_3 = 12.0 mod.theme.space_4 = 16.0 mod.theme.space_5 = 24.0 mod.theme.space_6 = 32.0 mod.theme.mspace_1 = mod.turtle.Inset{top: 3.0 right: 3.0 bottom: 3.0 left: 3.0} mod.theme.mspace_h_1 = mod.turtle.Inset{top: 0.0 right: 3.0 bottom: 0.0 left: 3.0} mod.theme.mspace_v_1 = mod.turtle.Inset{top: 3.0 right: 0.0 bottom: 3.0 left: 0.0} mod.theme.mspace_2 = mod.turtle.Inset{top: 6.0 right: 8.0 bottom: 6.0 left: 8.0} mod.theme.mspace_h_2 = mod.turtle.Inset{top: 0.0 right: 8.0 bottom: 0.0 left: 8.0} mod.theme.mspace_v_2 = mod.turtle.Inset{top: 6.0 right: 0.0 bottom: 6.0 left: 0.0} mod.theme.mspace_3 = mod.turtle.Inset{top: 10.0 right: 12.0 bottom: 10.0 left: 12.0} mod.theme.mspace_h_3 = mod.turtle.Inset{top: 0.0 right: 12.0 bottom: 0.0 left: 12.0} mod.theme.mspace_v_3 = mod.turtle.Inset{top: 10.0 right: 0.0 bottom: 10.0 left: 0.0} mod.theme.size_control_s = 20.0 mod.theme.size_control_m = 24.0 mod.theme.size_control_l = 28.0 mod.theme.data_item_height = 24.0 mod.theme.tab_height = 24.0 mod.theme.tab_flat_height = 22.0 mod.theme.splitter_min_horizontal = 24.0 mod.theme.splitter_max_horizontal = 29.0 mod.theme.size_border = 0.67 mod.theme.size_divider = 0.67 mod.theme.size_focus_ring = 0.67 // Square corners everywhere, the full radius included: the family's only // curve is the knob's drawn ring. mod.theme.corner_radius = 0.0 mod.theme.container_corner_radius = 0.0 mod.theme.textselection_corner_radius = 0.0 mod.theme.radius_xs = 0.0 mod.theme.radius_s = 0.0 mod.theme.radius_m = 0.0 mod.theme.radius_l = 0.0 mod.theme.radius_xl = 0.0 mod.theme.radius_full = 0.0 // No soft shadows in this family. mod.theme.elevation_1_radius = 0.0 mod.theme.elevation_1_offset_y = 0.0 mod.theme.elevation_2_radius = 0.0 mod.theme.elevation_2_offset_y = 0.0 mod.theme.elevation_3_radius = 0.0 mod.theme.elevation_3_offset_y = 0.0 mod.theme.color_elevation_1 = #00000000 mod.theme.color_elevation_2 = #00000000 mod.theme.color_elevation_3 = #00000000 // Transitions are instant; the afterglow of 80 ms is the only fade. mod.theme.motion_short_1 = 0.0 mod.theme.motion_short_2 = 0.08 mod.theme.motion_short_3 = 0.08 mod.theme.motion_short_4 = 0.08 true