From b11287cea9f34bc78769c50dd3c8c3d9236f5939 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Mon, 12 Jun 2023 13:36:46 +0100 Subject: [PATCH 1/7] further tweaks --- docs/examples/widgets/checkbox.css | 3 +-- docs/examples/widgets/option_list.css | 4 +--- src/textual/widgets/_option_list.py | 16 ++++++++++++---- src/textual/widgets/_radio_set.py | 20 +++++++++++++++----- src/textual/widgets/_select.py | 3 +++ src/textual/widgets/_selection_list.py | 4 +++- src/textual/widgets/_switch.py | 2 +- src/textual/widgets/_toggle_button.py | 7 +++++++ 8 files changed, 43 insertions(+), 16 deletions(-) diff --git a/docs/examples/widgets/checkbox.css b/docs/examples/widgets/checkbox.css index b6e17c093e..d1b09295ba 100644 --- a/docs/examples/widgets/checkbox.css +++ b/docs/examples/widgets/checkbox.css @@ -5,7 +5,6 @@ Screen { VerticalScroll { width: auto; height: auto; - border: solid $primary; - background: $panel; + background: $boost; padding: 2; } diff --git a/docs/examples/widgets/option_list.css b/docs/examples/widgets/option_list.css index cc1b7365f5..20c4d44022 100644 --- a/docs/examples/widgets/option_list.css +++ b/docs/examples/widgets/option_list.css @@ -3,8 +3,6 @@ Screen { } OptionList { - background: $panel; - border: round $primary; width: 70%; - height: 70%; + height: 80%; } diff --git a/src/textual/widgets/_option_list.py b/src/textual/widgets/_option_list.py index 3b365fa7bf..db5b66bfcd 100644 --- a/src/textual/widgets/_option_list.py +++ b/src/textual/widgets/_option_list.py @@ -172,9 +172,17 @@ class OptionList(ScrollView, can_focus=True): DEFAULT_CSS = """ OptionList { - background: $panel-lighten-1; + height: auto; + background: $boost; color: $text; overflow-x: hidden; + border: tall transparent; + padding: 0 1; + } + + OptionList:focus { + border: tall $accent; + } OptionList > .option-list--separator { @@ -182,7 +190,7 @@ class OptionList(ScrollView, can_focus=True): } OptionList > .option-list--option-highlighted { - background: $accent 50%; + color: $text; text-style: bold; } @@ -197,11 +205,11 @@ class OptionList(ScrollView, can_focus=True): OptionList > .option-list--option-highlighted-disabled { color: $text-disabled; - background: $accent 30%; + background: $accent 20%; } OptionList:focus > .option-list--option-highlighted-disabled { - background: $accent 40%; + background: $accent 30%; } OptionList > .option-list--option-hover { diff --git a/src/textual/widgets/_radio_set.py b/src/textual/widgets/_radio_set.py index b3c98aec06..313caec7cc 100644 --- a/src/textual/widgets/_radio_set.py +++ b/src/textual/widgets/_radio_set.py @@ -25,23 +25,33 @@ class RadioSet(Container, can_focus=True, can_focus_children=False): DEFAULT_CSS = """ RadioSet { - border: round #666; + border: tall transparent; + background: $boost; + padding: 0 1 0 0; height: auto; width: auto; } RadioSet:focus { - border: round $accent; - } - App.-light-mode RadioSet { - border: round #CCC; + border: tall $accent; } + # App.-light-mode RadioSet { + # border: round #CCC; + # } + /* The following rules/styles mimic similar ToggleButton:focus rules in * ToggleButton. If those styles ever get updated, these should be too. */ + RadioSet > * { + background: transparent; + border: none; + padding: 0 1; + + } + RadioSet:focus > RadioButton.-selected > .toggle--label { text-style: underline; } diff --git a/src/textual/widgets/_select.py b/src/textual/widgets/_select.py index ce667f526c..a140739d6f 100644 --- a/src/textual/widgets/_select.py +++ b/src/textual/widgets/_select.py @@ -32,6 +32,9 @@ class SelectOverlay(OptionList): width: 100%; padding: 0 1; } + SelectOverlay:focus { + border: tall $background; + } SelectOverlay > .option-list--option { padding: 0 1; } diff --git a/src/textual/widgets/_selection_list.py b/src/textual/widgets/_selection_list.py index 825abe3bb7..8d539531c9 100644 --- a/src/textual/widgets/_selection_list.py +++ b/src/textual/widgets/_selection_list.py @@ -93,6 +93,9 @@ class SelectionList(Generic[SelectionType], OptionList): """ DEFAULT_CSS = """ + SelectionList { + height: auto; + } SelectionList > .selection-list--button { text-style: bold; background: $foreground 15%; @@ -115,7 +118,6 @@ class SelectionList(Generic[SelectionType], OptionList): SelectionList > .selection-list--button-selected { text-style: bold; - background: $foreground 15%; } SelectionList:focus > .selection-list--button-selected { diff --git a/src/textual/widgets/_switch.py b/src/textual/widgets/_switch.py index e66acd1d8d..d19ee168e0 100644 --- a/src/textual/widgets/_switch.py +++ b/src/textual/widgets/_switch.py @@ -46,7 +46,7 @@ class Switch(Widget, can_focus=True): DEFAULT_CSS = """ Switch { border: tall transparent; - background: $panel; + background: $boost; height: auto; width: auto; padding: 0 2; diff --git a/src/textual/widgets/_toggle_button.py b/src/textual/widgets/_toggle_button.py index 30f23e1781..cb9b959012 100644 --- a/src/textual/widgets/_toggle_button.py +++ b/src/textual/widgets/_toggle_button.py @@ -54,6 +54,13 @@ class ToggleButton(Static, can_focus=True): DEFAULT_CSS = """ ToggleButton { width: auto; + border: tall transparent; + padding: 0 1; + background: $boost; + } + + ToggleButton:focus { + border: tall $accent; } ToggleButton:hover { From 14e3af1b0270c7b5366e7829aff1fb6b05ce4315 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Mon, 12 Jun 2023 15:18:12 +0100 Subject: [PATCH 2/7] button tweaks --- src/textual/widgets/_button.py | 50 ++++++++-------------------------- 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/src/textual/widgets/_button.py b/src/textual/widgets/_button.py index 40be74adbf..260d783a63 100644 --- a/src/textual/widgets/_button.py +++ b/src/textual/widgets/_button.py @@ -36,114 +36,88 @@ class Button(Static, can_focus=True): height: 3; background: $panel; color: $text; - border: none; - border-top: tall $panel-lighten-2; - border-bottom: tall $panel-darken-3; + border: tall $background; content-align: center middle; text-style: bold; } Button:focus { - text-style: bold reverse; + text-style: bold; + border: tall $accent; } Button:hover { - border-top: tall $panel; - background: $panel-darken-2; color: $text; + background: $primary; } Button.-active { - background: $panel; - border-bottom: tall $panel-lighten-2; - border-top: tall $panel-darken-2; - tint: $background 30%; + background: $primary-lighten-1; } /* Primary variant */ Button.-primary { - background: $primary; + background: $primary 20%; color: $text; - border-top: tall $primary-lighten-3; - border-bottom: tall $primary-darken-3; } Button.-primary:hover { - background: $primary-darken-2; + background: $primary; color: $text; - border-top: tall $primary; } Button.-primary.-active { - background: $primary; - border-bottom: tall $primary-lighten-3; - border-top: tall $primary-darken-3; + background: $primary-lighten-1; + } /* Success variant */ Button.-success { - background: $success; + background: $success 20%; color: $text; - border-top: tall $success-lighten-2; - border-bottom: tall $success-darken-3; } Button.-success:hover { background: $success-darken-2; color: $text; - border-top: tall $success; } Button.-success.-active { background: $success; - border-bottom: tall $success-lighten-2; - border-top: tall $success-darken-2; } /* Warning variant */ Button.-warning { - background: $warning; + background: $warning 20%; color: $text; - border-top: tall $warning-lighten-2; - border-bottom: tall $warning-darken-3; } Button.-warning:hover { background: $warning-darken-2; color: $text; - border-top: tall $warning; - } Button.-warning.-active { background: $warning; - border-bottom: tall $warning-lighten-2; - border-top: tall $warning-darken-2; } /* Error variant */ Button.-error { - background: $error; + background: $error 20%; color: $text; - border-top: tall $error-lighten-2; - border-bottom: tall $error-darken-3; - } Button.-error:hover { background: $error-darken-1; color: $text; - border-top: tall $error; } Button.-error.-active { background: $error; - border-bottom: tall $error-lighten-2; - border-top: tall $error-darken-2; } """ From 325a31f6ec175032e4fc8f7eb1c50e03b66beec0 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Mon, 12 Jun 2023 16:39:52 +0100 Subject: [PATCH 3/7] style tweaks --- src/textual/widgets/_button.py | 20 ++++++++++++++++++++ src/textual/widgets/_option_list.py | 1 - src/textual/widgets/_select.py | 2 +- src/textual/widgets/_selection_list.py | 13 +++++++++++++ src/textual/widgets/_switch.py | 2 +- 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/textual/widgets/_button.py b/src/textual/widgets/_button.py index 260d783a63..5212ecc393 100644 --- a/src/textual/widgets/_button.py +++ b/src/textual/widgets/_button.py @@ -41,6 +41,26 @@ class Button(Static, can_focus=True): text-style: bold; } + .-light-mode Button { + border: tall transparent; + } + + .-light-mode Button.-primary { + color: $primary-darken-2; + } + + .-light-mode Button.-success { + color: $success-darken-3; + } + + .-light-mode Button.-error { + color: $error-darken-3; + } + + .-light-mode Button.-warning { + color: $warning-darken-3; + } + Button:focus { text-style: bold; border: tall $accent; diff --git a/src/textual/widgets/_option_list.py b/src/textual/widgets/_option_list.py index db5b66bfcd..57d22a9683 100644 --- a/src/textual/widgets/_option_list.py +++ b/src/textual/widgets/_option_list.py @@ -190,7 +190,6 @@ class OptionList(ScrollView, can_focus=True): } OptionList > .option-list--option-highlighted { - color: $text; text-style: bold; } diff --git a/src/textual/widgets/_select.py b/src/textual/widgets/_select.py index a140739d6f..90e6f18411 100644 --- a/src/textual/widgets/_select.py +++ b/src/textual/widgets/_select.py @@ -82,7 +82,7 @@ class SelectCurrent(Horizontal): DEFAULT_CSS = """ SelectCurrent { - border: tall $background; + border: tall transparent; background: $boost; color: $text; width: 100%; diff --git a/src/textual/widgets/_selection_list.py b/src/textual/widgets/_selection_list.py index 8d539531c9..be0fb1e784 100644 --- a/src/textual/widgets/_selection_list.py +++ b/src/textual/widgets/_selection_list.py @@ -96,6 +96,19 @@ class SelectionList(Generic[SelectionType], OptionList): SelectionList { height: auto; } + + .-light-mode SelectionList:focus > .selection-list--button-selected { + color: $primary; + } + + .-light-mode SelectionList > .selection-list--button-selected-highlighted { + color: $primary; + } + + .-light-mode SelectionList:focus > .selection-list--button-selected-highlighted { + color: $primary; + } + SelectionList > .selection-list--button { text-style: bold; background: $foreground 15%; diff --git a/src/textual/widgets/_switch.py b/src/textual/widgets/_switch.py index d19ee168e0..5c5b1fa351 100644 --- a/src/textual/widgets/_switch.py +++ b/src/textual/widgets/_switch.py @@ -66,7 +66,7 @@ class Switch(Widget, can_focus=True): } Switch.-on { - + background: $success 12%; } Switch.-on > .switch--slider { From 64a39b67ad2bc1a1c705e0290ab1b9b1636ea397 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Tue, 13 Jun 2023 17:00:49 +0100 Subject: [PATCH 4/7] style tweaks --- src/textual/widgets/_button.py | 14 +++++++++----- src/textual/widgets/_option_list.py | 1 + src/textual/widgets/_switch.py | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/textual/widgets/_button.py b/src/textual/widgets/_button.py index 5212ecc393..cc0989e76b 100644 --- a/src/textual/widgets/_button.py +++ b/src/textual/widgets/_button.py @@ -45,6 +45,10 @@ class Button(Static, can_focus=True): border: tall transparent; } + .-light-mode Button.-active { + color: $text !important; + } + .-light-mode Button.-primary { color: $primary-darken-2; } @@ -72,7 +76,7 @@ class Button(Static, can_focus=True): } Button.-active { - background: $primary-lighten-1; + background: $primary-darken-1; } /* Primary variant */ @@ -88,7 +92,7 @@ class Button(Static, can_focus=True): } Button.-primary.-active { - background: $primary-lighten-1; + background: $primary-darken-1; } @@ -105,7 +109,7 @@ class Button(Static, can_focus=True): } Button.-success.-active { - background: $success; + background: $success-darken-3; } @@ -121,7 +125,7 @@ class Button(Static, can_focus=True): } Button.-warning.-active { - background: $warning; + background: $warning-darken-3; } @@ -137,7 +141,7 @@ class Button(Static, can_focus=True): } Button.-error.-active { - background: $error; + background: $error-darken-2; } """ diff --git a/src/textual/widgets/_option_list.py b/src/textual/widgets/_option_list.py index 57d22a9683..7c965b94d2 100644 --- a/src/textual/widgets/_option_list.py +++ b/src/textual/widgets/_option_list.py @@ -409,6 +409,7 @@ def _on_mouse_move(self, event: MouseMove) -> None: event: The mouse movement event. """ self._mouse_hovering_over = event.style.meta.get("option") + 1 / 0 def _on_leave(self, _: Leave) -> None: """React to the mouse leaving the widget.""" diff --git a/src/textual/widgets/_switch.py b/src/textual/widgets/_switch.py index 5c5b1fa351..d19ee168e0 100644 --- a/src/textual/widgets/_switch.py +++ b/src/textual/widgets/_switch.py @@ -66,7 +66,7 @@ class Switch(Widget, can_focus=True): } Switch.-on { - background: $success 12%; + } Switch.-on > .switch--slider { From 5d95585b06ff6c4db569b5d4690cf8b9a8792c00 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Tue, 13 Jun 2023 17:29:09 +0100 Subject: [PATCH 5/7] tests --- src/textual/pilot.py | 2 +- src/textual/widgets/_option_list.py | 2 +- tests/option_list/test_option_list_mouse_hover.py | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/textual/pilot.py b/src/textual/pilot.py index 64cd602bf2..cd13968a57 100644 --- a/src/textual/pilot.py +++ b/src/textual/pilot.py @@ -26,7 +26,7 @@ def _get_mouse_message_arguments( control: bool = False, ) -> dict[str, Any]: """Get the arguments to pass into mouse messages for the click and hover methods.""" - click_x, click_y, _, _ = target.region.translate(offset) + click_x, click_y = target.region.offset + offset message_arguments = { "x": click_x, "y": click_y, diff --git a/src/textual/widgets/_option_list.py b/src/textual/widgets/_option_list.py index 801a05339e..66109a6f96 100644 --- a/src/textual/widgets/_option_list.py +++ b/src/textual/widgets/_option_list.py @@ -408,8 +408,8 @@ def _on_mouse_move(self, event: MouseMove) -> None: Args: event: The mouse movement event. """ + print(event, event.style) self._mouse_hovering_over = event.style.meta.get("option") - 1 / 0 def _on_leave(self, _: Leave) -> None: """React to the mouse leaving the widget.""" diff --git a/tests/option_list/test_option_list_mouse_hover.py b/tests/option_list/test_option_list_mouse_hover.py index 33aec34ab4..70a4a0fe6a 100644 --- a/tests/option_list/test_option_list_mouse_hover.py +++ b/tests/option_list/test_option_list_mouse_hover.py @@ -28,7 +28,9 @@ async def test_no_hover() -> None: async def test_hover_highlight() -> None: """The mouse hover value should react to the mouse hover over a highlighted option.""" async with OptionListApp().run_test() as pilot: + print("before mouse position", pilot.app.mouse_position) await pilot.hover(OptionList) + print("mouse position", pilot.app.mouse_position) option_list = pilot.app.query_one(OptionList) assert option_list._mouse_hovering_over == 0 assert option_list._mouse_hovering_over == option_list.highlighted From ee9c2cbcc13b74f3662ab97be9527b2e8bccd6c1 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Wed, 14 Jun 2023 10:57:07 +0100 Subject: [PATCH 6/7] test fixes --- src/textual/pilot.py | 1 + src/textual/widgets/_button.py | 80 +- src/textual/widgets/_option_list.py | 2 +- .../test_option_list_mouse_hover.py | 10 +- tests/option_list/test_option_messages.py | 2 +- .../__snapshots__/test_snapshots.ambr | 1632 +++++++++-------- 6 files changed, 871 insertions(+), 856 deletions(-) diff --git a/src/textual/pilot.py b/src/textual/pilot.py index cd13968a57..a94b41a908 100644 --- a/src/textual/pilot.py +++ b/src/textual/pilot.py @@ -134,6 +134,7 @@ async def hover( message_arguments = _get_mouse_message_arguments( target_widget, offset, button=0 ) + await self.pause() app.post_message(MouseMove(**message_arguments)) await self.pause() diff --git a/src/textual/widgets/_button.py b/src/textual/widgets/_button.py index cc0989e76b..40be74adbf 100644 --- a/src/textual/widgets/_button.py +++ b/src/textual/widgets/_button.py @@ -36,112 +36,114 @@ class Button(Static, can_focus=True): height: 3; background: $panel; color: $text; - border: tall $background; + border: none; + border-top: tall $panel-lighten-2; + border-bottom: tall $panel-darken-3; content-align: center middle; text-style: bold; } - .-light-mode Button { - border: tall transparent; - } - - .-light-mode Button.-active { - color: $text !important; - } - - .-light-mode Button.-primary { - color: $primary-darken-2; - } - - .-light-mode Button.-success { - color: $success-darken-3; - } - - .-light-mode Button.-error { - color: $error-darken-3; - } - - .-light-mode Button.-warning { - color: $warning-darken-3; - } - Button:focus { - text-style: bold; - border: tall $accent; + text-style: bold reverse; } Button:hover { + border-top: tall $panel; + background: $panel-darken-2; color: $text; - background: $primary; } Button.-active { - background: $primary-darken-1; + background: $panel; + border-bottom: tall $panel-lighten-2; + border-top: tall $panel-darken-2; + tint: $background 30%; } /* Primary variant */ Button.-primary { - background: $primary 20%; + background: $primary; color: $text; + border-top: tall $primary-lighten-3; + border-bottom: tall $primary-darken-3; } Button.-primary:hover { - background: $primary; + background: $primary-darken-2; color: $text; + border-top: tall $primary; } Button.-primary.-active { - background: $primary-darken-1; - + background: $primary; + border-bottom: tall $primary-lighten-3; + border-top: tall $primary-darken-3; } /* Success variant */ Button.-success { - background: $success 20%; + background: $success; color: $text; + border-top: tall $success-lighten-2; + border-bottom: tall $success-darken-3; } Button.-success:hover { background: $success-darken-2; color: $text; + border-top: tall $success; } Button.-success.-active { - background: $success-darken-3; + background: $success; + border-bottom: tall $success-lighten-2; + border-top: tall $success-darken-2; } /* Warning variant */ Button.-warning { - background: $warning 20%; + background: $warning; color: $text; + border-top: tall $warning-lighten-2; + border-bottom: tall $warning-darken-3; } Button.-warning:hover { background: $warning-darken-2; color: $text; + border-top: tall $warning; + } Button.-warning.-active { - background: $warning-darken-3; + background: $warning; + border-bottom: tall $warning-lighten-2; + border-top: tall $warning-darken-2; } /* Error variant */ Button.-error { - background: $error 20%; + background: $error; color: $text; + border-top: tall $error-lighten-2; + border-bottom: tall $error-darken-3; + } Button.-error:hover { background: $error-darken-1; color: $text; + border-top: tall $error; } Button.-error.-active { - background: $error-darken-2; + background: $error; + border-bottom: tall $error-lighten-2; + border-top: tall $error-darken-2; } """ diff --git a/src/textual/widgets/_option_list.py b/src/textual/widgets/_option_list.py index 66109a6f96..d010ac645d 100644 --- a/src/textual/widgets/_option_list.py +++ b/src/textual/widgets/_option_list.py @@ -408,7 +408,7 @@ def _on_mouse_move(self, event: MouseMove) -> None: Args: event: The mouse movement event. """ - print(event, event.style) + print(event, event.style.meta) self._mouse_hovering_over = event.style.meta.get("option") def _on_leave(self, _: Leave) -> None: diff --git a/tests/option_list/test_option_list_mouse_hover.py b/tests/option_list/test_option_list_mouse_hover.py index 70a4a0fe6a..73c6ef84b5 100644 --- a/tests/option_list/test_option_list_mouse_hover.py +++ b/tests/option_list/test_option_list_mouse_hover.py @@ -28,9 +28,7 @@ async def test_no_hover() -> None: async def test_hover_highlight() -> None: """The mouse hover value should react to the mouse hover over a highlighted option.""" async with OptionListApp().run_test() as pilot: - print("before mouse position", pilot.app.mouse_position) - await pilot.hover(OptionList) - print("mouse position", pilot.app.mouse_position) + await pilot.hover(OptionList, Offset(2, 1)) option_list = pilot.app.query_one(OptionList) assert option_list._mouse_hovering_over == 0 assert option_list._mouse_hovering_over == option_list.highlighted @@ -39,7 +37,7 @@ async def test_hover_highlight() -> None: async def test_hover_no_highlight() -> None: """The mouse hover value should react to the mouse hover over a non-highlighted option.""" async with OptionListApp().run_test() as pilot: - await pilot.hover(OptionList, Offset(1, 1)) + await pilot.hover(OptionList, Offset(1, 1) + Offset(2, 1)) option_list = pilot.app.query_one(OptionList) assert option_list._mouse_hovering_over == 1 assert option_list._mouse_hovering_over != option_list.highlighted @@ -48,7 +46,7 @@ async def test_hover_no_highlight() -> None: async def test_hover_disabled() -> None: """The mouse hover value should react to the mouse hover over a disabled option.""" async with OptionListApp().run_test() as pilot: - await pilot.hover(OptionList, Offset(1, 3)) + await pilot.hover(OptionList, Offset(1, 3) + Offset(2, 1)) option_list = pilot.app.query_one(OptionList) assert option_list._mouse_hovering_over == 3 assert option_list.get_option_at_index( @@ -60,7 +58,7 @@ async def test_hover_disabled() -> None: async def test_hover_then_leave() -> None: """After a mouse has been over an OptionList and left _mouse_hovering_over should be None again.""" async with OptionListApp().run_test() as pilot: - await pilot.hover(OptionList) + await pilot.hover(OptionList, Offset(2, 1)) option_list = pilot.app.query_one(OptionList) assert option_list._mouse_hovering_over == 0 await pilot.hover(Label) diff --git a/tests/option_list/test_option_messages.py b/tests/option_list/test_option_messages.py index d76d2f8976..e66debc458 100644 --- a/tests/option_list/test_option_messages.py +++ b/tests/option_list/test_option_messages.py @@ -105,7 +105,7 @@ async def test_click_option_with_mouse() -> None: """Clicking on an option via the mouse should result in highlight and select messages.""" async with OptionListApp().run_test() as pilot: assert isinstance(pilot.app, OptionListApp) - await pilot.click(OptionList, Offset(1, 1)) + await pilot.click(OptionList, Offset(2, 2)) assert pilot.app.messages[1:] == [ ("OptionHighlighted", "1", 1), ("OptionSelected", "1", 1), diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots.ambr b/tests/snapshot_tests/__snapshots__/test_snapshots.ambr index 4f50440653..719a0e6e95 100644 --- a/tests/snapshot_tests/__snapshots__/test_snapshots.ambr +++ b/tests/snapshot_tests/__snapshots__/test_snapshots.ambr @@ -1401,141 +1401,143 @@ font-weight: 700; } - .terminal-2118990000-matrix { + .terminal-851234732-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2118990000-title { + .terminal-851234732-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2118990000-r1 { fill: #e1e1e1 } - .terminal-2118990000-r2 { fill: #c5c8c6 } - .terminal-2118990000-r3 { fill: #004578 } - .terminal-2118990000-r4 { fill: #42464b } - .terminal-2118990000-r5 { fill: #24292f;font-weight: bold } - .terminal-2118990000-r6 { fill: #e2e3e3 } - .terminal-2118990000-r7 { fill: #e2e3e3;font-weight: bold } - .terminal-2118990000-r8 { fill: #98729f } - .terminal-2118990000-r9 { fill: #4ebf71;font-weight: bold } - .terminal-2118990000-r10 { fill: #565a5e } - .terminal-2118990000-r11 { fill: #e2e3e3;text-decoration: underline; } + .terminal-851234732-r1 { fill: #e1e1e1 } + .terminal-851234732-r2 { fill: #c5c8c6 } + .terminal-851234732-r3 { fill: #262626 } + .terminal-851234732-r4 { fill: #4a4a4a } + .terminal-851234732-r5 { fill: #2e2e2e;font-weight: bold } + .terminal-851234732-r6 { fill: #e3e3e3 } + .terminal-851234732-r7 { fill: #e3e3e3;font-weight: bold } + .terminal-851234732-r8 { fill: #98729f } + .terminal-851234732-r9 { fill: #4ebf71;font-weight: bold } + .terminal-851234732-r10 { fill: #0178d4 } + .terminal-851234732-r11 { fill: #14191f } + .terminal-851234732-r12 { fill: #5d5d5d } + .terminal-851234732-r13 { fill: #e3e3e3;text-decoration: underline; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - CheckboxApp + CheckboxApp - - - - - - - - - ─────────────────── - - - XArrakis 😓 - XCaladan - XChusuk - XGiedi Prime - XGinaz - XGrumman - XKaitain - XNovebruns - - - ─────────────────── - - - - - + + + + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + XArrakis 😓 + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔▔▔ + XCaladan + ▁▁▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔▔ + XChusuk + ▁▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + XGiedi Prime + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔ + XGinaz + ▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔▔▔ + XGrumman + ▁▁▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔▔▔▃▃ + XKaitain + ▁▁▁▁▁▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ @@ -14590,139 +14592,141 @@ font-weight: 700; } - .terminal-3194367487-matrix { + .terminal-1456913009-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3194367487-title { + .terminal-1456913009-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3194367487-r1 { fill: #3d3d3d } - .terminal-3194367487-r2 { fill: #1e1e1e;font-weight: bold } - .terminal-3194367487-r3 { fill: #e1e1e1 } - .terminal-3194367487-r4 { fill: #c5c8c6 } - .terminal-3194367487-r5 { fill: #23568b } - .terminal-3194367487-r6 { fill: #ddedf9 } + .terminal-1456913009-r1 { fill: #1e1e1e } + .terminal-1456913009-r2 { fill: #e1e1e1 } + .terminal-1456913009-r3 { fill: #c5c8c6 } + .terminal-1456913009-r4 { fill: #434343 } + .terminal-1456913009-r5 { fill: #262626;font-weight: bold } + .terminal-1456913009-r6 { fill: #e2e2e2 } + .terminal-1456913009-r7 { fill: #23568b } + .terminal-1456913009-r8 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - ScrollOffByOne + ScrollOffByOne - - - - X76 - X77 - X78 - X79 - X80 - X81 - X82 - X83 - X84 - X85 - X86 - X87 - X88 - X89 - X90 - X91 - X92 - X93 - X94▂▂ - X95 - X96 - X97 - X98 - X99 + + + + ▔▔▔▔▔▔▔▔ + X92 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X93 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X94 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X95 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X96 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X97 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X98 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X99▁▁ + ▁▁▁▁▁▁▁▁ @@ -19543,135 +19547,137 @@ font-weight: 700; } - .terminal-1891986877-matrix { + .terminal-72094857-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1891986877-title { + .terminal-72094857-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1891986877-r1 { fill: #ddedf9;font-weight: bold } - .terminal-1891986877-r2 { fill: #e1e9ef;font-weight: bold } - .terminal-1891986877-r3 { fill: #c5c8c6 } - .terminal-1891986877-r4 { fill: #e4e5e6 } - .terminal-1891986877-r5 { fill: #4f5459 } - .terminal-1891986877-r6 { fill: #cc555a } + .terminal-72094857-r1 { fill: #1e1e1e } + .terminal-72094857-r2 { fill: #0178d4 } + .terminal-72094857-r3 { fill: #c5c8c6 } + .terminal-72094857-r4 { fill: #ddedf9;font-weight: bold } + .terminal-72094857-r5 { fill: #e2e2e2;font-weight: bold } + .terminal-72094857-r6 { fill: #e2e2e2 } + .terminal-72094857-r7 { fill: #434343 } + .terminal-72094857-r8 { fill: #cc555a } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - OptionListApp + OptionListApp - - - - OneOneOne - TwoTwoTwo - ──────────────────────────────────────────────────────────────────────────────── - ThreeThreeThree - - - - - - - - - - - - - - - - - - - + + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + OneOneOne + TwoTwoTwo + ──────────────────────────────────────────────────────────────────── + ThreeThreeThree + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + + + + + + + + + + + + + + + + @@ -19702,139 +19708,140 @@ font-weight: 700; } - .terminal-3443619924-matrix { + .terminal-1080792028-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3443619924-title { + .terminal-1080792028-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3443619924-r1 { fill: #c5c8c6 } - .terminal-3443619924-r2 { fill: #e3e3e3 } - .terminal-3443619924-r3 { fill: #e1e1e1 } - .terminal-3443619924-r4 { fill: #004578 } - .terminal-3443619924-r5 { fill: #ddedf9;font-weight: bold } - .terminal-3443619924-r6 { fill: #e2e3e3 } - .terminal-3443619924-r7 { fill: #42464b } - .terminal-3443619924-r8 { fill: #777a7e } - .terminal-3443619924-r9 { fill: #14191f } - .terminal-3443619924-r10 { fill: #ddedf9 } + .terminal-1080792028-r1 { fill: #c5c8c6 } + .terminal-1080792028-r2 { fill: #e3e3e3 } + .terminal-1080792028-r3 { fill: #e1e1e1 } + .terminal-1080792028-r4 { fill: #1e1e1e } + .terminal-1080792028-r5 { fill: #0178d4 } + .terminal-1080792028-r6 { fill: #ddedf9;font-weight: bold } + .terminal-1080792028-r7 { fill: #e2e2e2 } + .terminal-1080792028-r8 { fill: #434343 } + .terminal-1080792028-r9 { fill: #787878 } + .terminal-1080792028-r10 { fill: #14191f } + .terminal-1080792028-r11 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - OptionListApp + OptionListApp - - - - OptionListApp - - - - ────────────────────────────────────────────────────── - Aerilon - Aquaria - ──────────────────────────────────────────────────── - Canceron - Caprica - ──────────────────────────────────────────────────── - Gemenon - ──────────────────────────────────────────────────── - Leonis - Libran - ────────────────────────────────────────────────────▅▅ - Picon - ──────────────────────────────────────────────────── - Sagittaron - ────────────────────────────────────────────────────── - - - + + + + OptionListApp + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Aerilon + Aquaria + ─────────────────────────────────────────────────── + Canceron + Caprica + ─────────────────────────────────────────────────── + Gemenon + ─────────────────────────────────────────────────── + Leonis + Libran + ─────────────────────────────────────────────────── + Picon + ─────────────────────────────────────────────────── + Sagittaron▄▄ + Scorpia + ─────────────────────────────────────────────────── + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + @@ -19865,136 +19872,137 @@ font-weight: 700; } - .terminal-4119903855-matrix { + .terminal-2341816165-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-4119903855-title { + .terminal-2341816165-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-4119903855-r1 { fill: #c5c8c6 } - .terminal-4119903855-r2 { fill: #e3e3e3 } - .terminal-4119903855-r3 { fill: #e1e1e1 } - .terminal-4119903855-r4 { fill: #004578 } - .terminal-4119903855-r5 { fill: #ddedf9;font-weight: bold } - .terminal-4119903855-r6 { fill: #e2e3e3 } - .terminal-4119903855-r7 { fill: #ddedf9 } + .terminal-2341816165-r1 { fill: #c5c8c6 } + .terminal-2341816165-r2 { fill: #e3e3e3 } + .terminal-2341816165-r3 { fill: #e1e1e1 } + .terminal-2341816165-r4 { fill: #1e1e1e } + .terminal-2341816165-r5 { fill: #0178d4 } + .terminal-2341816165-r6 { fill: #ddedf9;font-weight: bold } + .terminal-2341816165-r7 { fill: #e2e2e2 } + .terminal-2341816165-r8 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - OptionListApp + OptionListApp - - - - OptionListApp - - - - ────────────────────────────────────────────────────── - Aerilon - Aquaria - Canceron - Caprica - Gemenon - Leonis - Libran - Picon - Sagittaron - Scorpia - Tauron - Virgon - - - ────────────────────────────────────────────────────── - - - + + + + OptionListApp + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Aerilon + Aquaria + Canceron + Caprica + Gemenon + Leonis + Libran + Picon + Sagittaron + Scorpia + Tauron + Virgon + + + + + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + @@ -20025,140 +20033,141 @@ font-weight: 700; } - .terminal-589190207-matrix { + .terminal-1704576127-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-589190207-title { + .terminal-1704576127-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-589190207-r1 { fill: #c5c8c6 } - .terminal-589190207-r2 { fill: #e3e3e3 } - .terminal-589190207-r3 { fill: #e1e1e1 } - .terminal-589190207-r4 { fill: #004578 } - .terminal-589190207-r5 { fill: #ddedf9;font-weight: bold;font-style: italic; } - .terminal-589190207-r6 { fill: #e2e3e3 } - .terminal-589190207-r7 { fill: #ddedf9;font-weight: bold } - .terminal-589190207-r8 { fill: #14191f } - .terminal-589190207-r9 { fill: #e2e3e3;font-style: italic; } - .terminal-589190207-r10 { fill: #e2e3e3;font-weight: bold } - .terminal-589190207-r11 { fill: #ddedf9 } + .terminal-1704576127-r1 { fill: #c5c8c6 } + .terminal-1704576127-r2 { fill: #e3e3e3 } + .terminal-1704576127-r3 { fill: #e1e1e1 } + .terminal-1704576127-r4 { fill: #1e1e1e } + .terminal-1704576127-r5 { fill: #0178d4 } + .terminal-1704576127-r6 { fill: #ddedf9;font-weight: bold;font-style: italic; } + .terminal-1704576127-r7 { fill: #e2e2e2 } + .terminal-1704576127-r8 { fill: #ddedf9;font-weight: bold } + .terminal-1704576127-r9 { fill: #14191f } + .terminal-1704576127-r10 { fill: #e2e2e2;font-style: italic; } + .terminal-1704576127-r11 { fill: #e2e2e2;font-weight: bold } + .terminal-1704576127-r12 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - OptionListApp + OptionListApp - - - - OptionListApp - - - - ────────────────────────────────────────────────────── -                   Data for Aerilon                   - ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ - Patron God   Population    Capital City   ▂▂ - ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ - Demeter      1.2 Billion   Gaoth           - └───────────────┴────────────────┴─────────────────┘ -                   Data for Aquaria                   - ┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ - Patron God    Population   Capital City    - ┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ - Hermes        75,000       None            - └────────────────┴───────────────┴─────────────────┘ -                  Data for Canceron                   - ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ - ────────────────────────────────────────────────────── - - - + + + + OptionListApp + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                  Data for Aerilon                   + ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓ + Patron God   Population    Capital City   + ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩▃▃ + Demeter      1.2 Billion   Gaoth          + └───────────────┴────────────────┴────────────────┘ +                  Data for Aquaria                   + ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ + Patron God   Population   Capital City    + ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ + Hermes       75,000       None            + └───────────────┴───────────────┴─────────────────┘ +                  Data for Canceron                  + ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓ + Patron God   Population    Capital City   + ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩ + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + @@ -21945,137 +21954,139 @@ font-weight: 700; } - .terminal-1099969603-matrix { + .terminal-3235965674-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1099969603-title { + .terminal-3235965674-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1099969603-r1 { fill: #e1e1e1 } - .terminal-1099969603-r2 { fill: #c5c8c6 } - .terminal-1099969603-r3 { fill: #0178d4 } - .terminal-1099969603-r4 { fill: #515151 } - .terminal-1099969603-r5 { fill: #1e1e1e;font-weight: bold } - .terminal-1099969603-r6 { fill: #e1e1e1;text-decoration: underline; } - .terminal-1099969603-r7 { fill: #3d3d3d } - .terminal-1099969603-r8 { fill: #4ebf71;font-weight: bold } + .terminal-3235965674-r1 { fill: #e1e1e1 } + .terminal-3235965674-r2 { fill: #c5c8c6 } + .terminal-3235965674-r3 { fill: #1e1e1e } + .terminal-3235965674-r4 { fill: #0178d4 } + .terminal-3235965674-r5 { fill: #575757 } + .terminal-3235965674-r6 { fill: #262626;font-weight: bold } + .terminal-3235965674-r7 { fill: #e2e2e2 } + .terminal-3235965674-r8 { fill: #e2e2e2;text-decoration: underline; } + .terminal-3235965674-r9 { fill: #434343 } + .terminal-3235965674-r10 { fill: #4ebf71;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - RadioChoicesApp + RadioChoicesApp - - - - - - - - - - ─────────────────────────────────────── - Battlestar Galactica - Dune 1984 - Dune 2021 - Serenity - Star Trek: The Motion Picture - Star Wars: A New Hope - The Last Starfighter - Total Recall 👉 🔴 - Wing Commander - ─────────────────────────────────────── - - - - - - + + + + + + + + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Battlestar Galactica + Dune 1984 + Dune 2021 + Serenity + Star Trek: The Motion Picture + Star Wars: A New Hope + The Last Starfighter + Total Recall 👉 🔴 + Wing Commander + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + + + + + @@ -22106,139 +22117,140 @@ font-weight: 700; } - .terminal-4163780602-matrix { + .terminal-2849727264-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-4163780602-title { + .terminal-2849727264-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-4163780602-r1 { fill: #e1e1e1 } - .terminal-4163780602-r2 { fill: #c5c8c6 } - .terminal-4163780602-r3 { fill: #0178d4 } - .terminal-4163780602-r4 { fill: #666666 } - .terminal-4163780602-r5 { fill: #515151 } - .terminal-4163780602-r6 { fill: #1e1e1e;font-weight: bold } - .terminal-4163780602-r7 { fill: #e1e1e1;text-decoration: underline; } - .terminal-4163780602-r8 { fill: #3d3d3d } - .terminal-4163780602-r9 { fill: #4ebf71;font-weight: bold } - .terminal-4163780602-r10 { fill: #cc555a;font-weight: bold;font-style: italic; } + .terminal-2849727264-r1 { fill: #e1e1e1 } + .terminal-2849727264-r2 { fill: #c5c8c6 } + .terminal-2849727264-r3 { fill: #1e1e1e } + .terminal-2849727264-r4 { fill: #0178d4 } + .terminal-2849727264-r5 { fill: #575757 } + .terminal-2849727264-r6 { fill: #262626;font-weight: bold } + .terminal-2849727264-r7 { fill: #e2e2e2 } + .terminal-2849727264-r8 { fill: #e2e2e2;text-decoration: underline; } + .terminal-2849727264-r9 { fill: #434343 } + .terminal-2849727264-r10 { fill: #4ebf71;font-weight: bold } + .terminal-2849727264-r11 { fill: #cc555a;font-weight: bold;font-style: italic; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - RadioChoicesApp + RadioChoicesApp - - - - - - - - - - ────────────────────────────────────────────────────────────────────── - Battlestar GalacticaAmanda - Dune 1984Connor MacLeod - Dune 2021Duncan MacLeod - SerenityHeather MacLeod - Star Trek: The Motion PictureJoe Dawson - Star Wars: A New HopeKurgan, The - The Last StarfighterMethos - Total Recall 👉 🔴Rachel Ellenstein - Wing CommanderRamírez - ────────────────────────────────────────────────────────────────────── - - - - - - + + + + + + + + + + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Battlestar GalacticaAmanda + Dune 1984Connor MacLeod + Dune 2021Duncan MacLeod + SerenityHeather MacLeod + Star Trek: The Motion PictureJoe Dawson + Star Wars: A New HopeKurgan, The + The Last StarfighterMethos + Total Recall 👉 🔴Rachel Ellenstein + Wing CommanderRamírez + ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + + + + + @@ -22587,140 +22599,142 @@ font-weight: 700; } - .terminal-141393426-matrix { + .terminal-1216875237-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-141393426-title { + .terminal-1216875237-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-141393426-r1 { fill: #3d3d3d } - .terminal-141393426-r2 { fill: #1e1e1e;font-weight: bold } - .terminal-141393426-r3 { fill: #e1e1e1 } - .terminal-141393426-r4 { fill: #c5c8c6 } - .terminal-141393426-r5 { fill: #23568b } - .terminal-141393426-r6 { fill: #14191f } - .terminal-141393426-r7 { fill: #ddedf9 } + .terminal-1216875237-r1 { fill: #1e1e1e } + .terminal-1216875237-r2 { fill: #c5c8c6 } + .terminal-1216875237-r3 { fill: #434343 } + .terminal-1216875237-r4 { fill: #262626;font-weight: bold } + .terminal-1216875237-r5 { fill: #e2e2e2 } + .terminal-1216875237-r6 { fill: #e1e1e1 } + .terminal-1216875237-r7 { fill: #23568b } + .terminal-1216875237-r8 { fill: #14191f } + .terminal-1216875237-r9 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - ScrollOffByOne + ScrollOffByOne - - - - X27 - X28 - X29 - X30 - X31 - X32 - X33▄▄ - X34 - X35 - X36 - X37 - X38 - X39▂▂ - X40 - X41 - X42 - X43 - X44 - X45 - X46 - X47 - X48 - X49 - X50 + + + + X43 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X44 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X45 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X46 + ▁▁▁▁▁▁▁▁▃▃ + ▔▔▔▔▔▔▔▔ + X47▂▂ + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X48 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X49 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + X50 + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ @@ -23872,141 +23886,141 @@ font-weight: 700; } - .terminal-3781955182-matrix { + .terminal-627774835-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3781955182-title { + .terminal-627774835-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3781955182-r1 { fill: #c5c8c6 } - .terminal-3781955182-r2 { fill: #e3e3e3 } - .terminal-3781955182-r3 { fill: #e1e1e1 } - .terminal-3781955182-r4 { fill: #0178d4 } - .terminal-3781955182-r5 { fill: #e1e1e1;font-weight: bold } - .terminal-3781955182-r6 { fill: #62666a } - .terminal-3781955182-r7 { fill: #4ebf71;font-weight: bold } - .terminal-3781955182-r8 { fill: #ddedf9;font-weight: bold } - .terminal-3781955182-r9 { fill: #98a84b } - .terminal-3781955182-r10 { fill: #34393f;font-weight: bold } - .terminal-3781955182-r11 { fill: #e4e5e6 } - .terminal-3781955182-r12 { fill: #ddedf9 } + .terminal-627774835-r1 { fill: #c5c8c6 } + .terminal-627774835-r2 { fill: #e3e3e3 } + .terminal-627774835-r3 { fill: #e1e1e1 } + .terminal-627774835-r4 { fill: #0178d4 } + .terminal-627774835-r5 { fill: #e1e1e1;font-weight: bold } + .terminal-627774835-r6 { fill: #575757 } + .terminal-627774835-r7 { fill: #4ebf71;font-weight: bold } + .terminal-627774835-r8 { fill: #ddedf9;font-weight: bold } + .terminal-627774835-r9 { fill: #98a84b } + .terminal-627774835-r10 { fill: #262626;font-weight: bold } + .terminal-627774835-r11 { fill: #e2e2e2 } + .terminal-627774835-r12 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - SelectionListApp + SelectionListApp - - - - SelectionListApp - - -  Shall we play some games? ── Selected games ───────────── - [ - XFalken's Maze'secret_back_door', - XBlack Jack'a_nice_game_of_chess', - XGin Rummy'fighter_combat' - XHearts] - XBridge────────────────────────────── - XCheckers - XChess - XPoker - XFighter Combat - - - - - - ────────────────────────────── - - - + + + + SelectionListApp + + +  Shall we play some games? ── Selected games ───────────── + [ + XFalken's Maze'secret_back_door', + XBlack Jack'a_nice_game_of_chess', + XGin Rummy'fighter_combat' + XHearts] + XBridge────────────────────────────── + XCheckers + XChess + XPoker + XFighter Combat + + ────────────────────────────── + + + + + + + @@ -24037,139 +24051,139 @@ font-weight: 700; } - .terminal-3782657965-matrix { + .terminal-575251527-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3782657965-title { + .terminal-575251527-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3782657965-r1 { fill: #c5c8c6 } - .terminal-3782657965-r2 { fill: #e3e3e3 } - .terminal-3782657965-r3 { fill: #e1e1e1 } - .terminal-3782657965-r4 { fill: #0178d4 } - .terminal-3782657965-r5 { fill: #62666a } - .terminal-3782657965-r6 { fill: #4ebf71;font-weight: bold } - .terminal-3782657965-r7 { fill: #ddedf9;font-weight: bold } - .terminal-3782657965-r8 { fill: #34393f;font-weight: bold } - .terminal-3782657965-r9 { fill: #e4e5e6 } - .terminal-3782657965-r10 { fill: #ddedf9 } + .terminal-575251527-r1 { fill: #c5c8c6 } + .terminal-575251527-r2 { fill: #e3e3e3 } + .terminal-575251527-r3 { fill: #e1e1e1 } + .terminal-575251527-r4 { fill: #0178d4 } + .terminal-575251527-r5 { fill: #575757 } + .terminal-575251527-r6 { fill: #4ebf71;font-weight: bold } + .terminal-575251527-r7 { fill: #ddedf9;font-weight: bold } + .terminal-575251527-r8 { fill: #262626;font-weight: bold } + .terminal-575251527-r9 { fill: #e2e2e2 } + .terminal-575251527-r10 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - SelectionListApp + SelectionListApp - - - - SelectionListApp - - -  Shall we play some games? ────────────────────────────────── - - XFalken's Maze - XBlack Jack - XGin Rummy - XHearts - XBridge - XCheckers - XChess - XPoker - XFighter Combat - - - - - - - ────────────────────────────────────────────────────────────── - - + + + + SelectionListApp + + +  Shall we play some games? ────────────────────────────────── + + XFalken's Maze + XBlack Jack + XGin Rummy + XHearts + XBridge + XCheckers + XChess + XPoker + XFighter Combat + + + + + + + ────────────────────────────────────────────────────────────── + + @@ -24200,139 +24214,139 @@ font-weight: 700; } - .terminal-3782657965-matrix { + .terminal-575251527-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3782657965-title { + .terminal-575251527-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3782657965-r1 { fill: #c5c8c6 } - .terminal-3782657965-r2 { fill: #e3e3e3 } - .terminal-3782657965-r3 { fill: #e1e1e1 } - .terminal-3782657965-r4 { fill: #0178d4 } - .terminal-3782657965-r5 { fill: #62666a } - .terminal-3782657965-r6 { fill: #4ebf71;font-weight: bold } - .terminal-3782657965-r7 { fill: #ddedf9;font-weight: bold } - .terminal-3782657965-r8 { fill: #34393f;font-weight: bold } - .terminal-3782657965-r9 { fill: #e4e5e6 } - .terminal-3782657965-r10 { fill: #ddedf9 } + .terminal-575251527-r1 { fill: #c5c8c6 } + .terminal-575251527-r2 { fill: #e3e3e3 } + .terminal-575251527-r3 { fill: #e1e1e1 } + .terminal-575251527-r4 { fill: #0178d4 } + .terminal-575251527-r5 { fill: #575757 } + .terminal-575251527-r6 { fill: #4ebf71;font-weight: bold } + .terminal-575251527-r7 { fill: #ddedf9;font-weight: bold } + .terminal-575251527-r8 { fill: #262626;font-weight: bold } + .terminal-575251527-r9 { fill: #e2e2e2 } + .terminal-575251527-r10 { fill: #ddedf9 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - SelectionListApp + SelectionListApp - - - - SelectionListApp - - -  Shall we play some games? ────────────────────────────────── - - XFalken's Maze - XBlack Jack - XGin Rummy - XHearts - XBridge - XCheckers - XChess - XPoker - XFighter Combat - - - - - - - ────────────────────────────────────────────────────────────── - - + + + + SelectionListApp + + +  Shall we play some games? ────────────────────────────────── + + XFalken's Maze + XBlack Jack + XGin Rummy + XHearts + XBridge + XCheckers + XChess + XPoker + XFighter Combat + + + + + + + ────────────────────────────────────────────────────────────── + + @@ -25310,136 +25324,136 @@ font-weight: 700; } - .terminal-2914557706-matrix { + .terminal-3811613934-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2914557706-title { + .terminal-3811613934-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2914557706-r1 { fill: #e1e1e1 } - .terminal-2914557706-r2 { fill: #c5c8c6 } - .terminal-2914557706-r3 { fill: #e1e1e1;font-weight: bold } - .terminal-2914557706-r4 { fill: #1e1e1e } - .terminal-2914557706-r5 { fill: #0178d4 } - .terminal-2914557706-r6 { fill: #e2e3e3 } - .terminal-2914557706-r7 { fill: #e3e8e8 } + .terminal-3811613934-r1 { fill: #e1e1e1 } + .terminal-3811613934-r2 { fill: #c5c8c6 } + .terminal-3811613934-r3 { fill: #e1e1e1;font-weight: bold } + .terminal-3811613934-r4 { fill: #1e1e1e } + .terminal-3811613934-r5 { fill: #0178d4 } + .terminal-3811613934-r6 { fill: #e2e2e2 } + .terminal-3811613934-r7 { fill: #e3e8e8 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - SwitchApp + SwitchApp - - - - - - - - Example switches - - - ▔▔▔▔▔▔▔▔ - off:      - ▁▁▁▁▁▁▁▁ - ▔▔▔▔▔▔▔▔ - on:       - ▁▁▁▁▁▁▁▁ - ▔▔▔▔▔▔▔▔ - focused:  - ▁▁▁▁▁▁▁▁ - ▔▔▔▔▔▔▔▔ - custom:   - ▁▁▁▁▁▁▁▁ - - - - + + + + + + + + Example switches + + + ▔▔▔▔▔▔▔▔ + off:      + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + on:       + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + focused:  + ▁▁▁▁▁▁▁▁ + ▔▔▔▔▔▔▔▔ + custom:   + ▁▁▁▁▁▁▁▁ + + + + From e20470ffef51536cfffec0cc739a95e1dd01d246 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Wed, 14 Jun 2023 11:03:16 +0100 Subject: [PATCH 7/7] tidy css --- src/textual/widgets/_radio_set.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/textual/widgets/_radio_set.py b/src/textual/widgets/_radio_set.py index 313caec7cc..3a0ee116bf 100644 --- a/src/textual/widgets/_radio_set.py +++ b/src/textual/widgets/_radio_set.py @@ -33,14 +33,9 @@ class RadioSet(Container, can_focus=True, can_focus_children=False): } RadioSet:focus { - border: tall $accent; } - # App.-light-mode RadioSet { - # border: round #CCC; - # } - /* The following rules/styles mimic similar ToggleButton:focus rules in * ToggleButton. If those styles ever get updated, these should be too. */ @@ -49,7 +44,6 @@ class RadioSet(Container, can_focus=True, can_focus_children=False): background: transparent; border: none; padding: 0 1; - } RadioSet:focus > RadioButton.-selected > .toggle--label {