Modding menu and UI and additional mod exports (#535)
* init config opt system w/ 3 types and description support
* Move config registry/option to librecomp + added Color conf opt type
* Updated color option type styling
* Added dropdown option type
* Added TextField option type
* Button config type + callback wip
* init mod menu + bem class + button presets
* WIP mod menu, fix some warnings
* Rewrite mod details under new UI system.
* Refactored mods menu entirely.
* Remove ModMenu.scss.
* Take ownership of created pointers on Element class.
* Add styles.
* Multi-style state and disabled state propagation.
* Switch to string views.
* Convert to spaces, hook up mod enabled to toggle.
* Mod menu progress.
* Layout for mod details panel, add gap property setters
* Update RmlUi for gap property in flexbox
* Add slot_map and begin ui context
* Implement context and resource storage slotmaps
* Config submenu.
* Refactored to account for context changes.
* Turn off tab searching when submenu is open.
* Revert accidental RmlUi downgrade
* Upgrade RmlUi to 6.0 release
* Text input.
* Radio option.
* Cleanup.
* Refactor Rml document handling to use new ContextId system (prompts currently unimplemented)
* Add support for config schema.
* Split config sub menu into separate context and fix configure button, prevent infinite loop when looking for autofocus element
* Reimplement mechanism to open the config menu to a specific tab
* Begin implementing mod UI API
* Link storage to mod menu.
* Proper enum parsing.
* Enable mod reordering.
* Draggable improvements to mod menu and runtime update.
* Adjust styling of submenu.
* Mods folder button.
* Linux build fixes.
* Hook up new manifest fields to mod UI
* Add basic thumbnail parsing functionality.
* More style changes.
* Implement update event for elements
* Use RT64's texture laoding instead.
* Restore spacer animations.
* Animation API begone.
* Auto-enabled mods.
* Update runtime submodule and N64Recomp commit in CI for mod config API, remove unnecessary extern C
* Sub menu display name, assert on text input.
* Clamp delta time to fix UI disappearing on OS with timestamps that don't always increase.
* Add a state for when no mods are installed.
* Unify API function naming scheme and export relevant API functions
* Add actor update/init events and save init event (#536)
* Expose remaining property setters to mod UI API
* Implemented mod UI callbacks
* Implement actor extension data and use it for transform tagging
* Zero the memory allocated to hold extended actor data
* Implement label and textinput in mod UI API
* Patch virtual address translation to support entire extended RAM address space (#533)
* Download full target build of llvm in CI Windows runners to fix missing MIPS support and update N64Recomp CI commit
* Enable triple buffering in RT64 (#546)
* Implement controlling input capturing for mod UI contexts
* Created mod UI API functions for setting visibility, setting text, and destroying elements
* Fix errant RML tag in mod menu and insert breaks for newlines when setting element text
* Fix compilation after rebase
* Fixes for macOS
* Set the blender description manually for the UI renderer
* Created mod UI API functions for imageview elements
* Switch to designated initializers to work around missing aggregate initialization compiler support
* Update RT64 for driver bug workarounds and misc fixes
* Update RT64 to fix native sampler issues with tile copies
* Update RT64 for depth clear optimization and more native sampler changes
* Update RT64 and allow it to choose the graphics API when set to Auto
* Update runtime to allow renderers to choose the graphics API
* Update RT64 to enable early Z test shader optimization
* Implement data structure mod APIs
* Update lunasvg to increase its minimum cmake version
* Switch to runtime concatenation of function name in data API error reporting to fix Linux compilation issue
* Add missing typename to fix compilation on some compilers
* Update RT64 to fix failed assert with MSAA off
* Reimplement prompts as a separate UI context and make it so the quit game prompt doesn't bring up the config menu
* DnD prototype.
* Fix to dynamic lib path and runtime commit.
* Finish drag and drop mod installation, disable mod refresh button and code mod toggle when game starts
* Remove std::format usage and add missing <list> includes to fix Linux/MacOS compilation
* Switch to aggregate initialization for Version to work around missing implicit constructor on some compilers
* Replace use of std::bind with lambdas
* Add mod install button, put mod description in scroll container, minor mod menu tweaks
* Update runtime to fix renderer shutdown race condition
* Implement texture pack reordering
* Add mod UI API exports for slider, password input, and label radio and expose RmlUi debugger on F8
* Update runtime for mod version export
* Update runtime for save swapping mod API
* Apply recomp.rcss to mod UI contexts (fixes scrolls)
* Updated mod list styling (#561)
* Updated mod list styling
* mod entry max height
* Update RT64 for v5 texture hash
* Update runtime for mod API to get save file path
* Add special config option id to control texture pack state for code mods
* Update runtime for mod default enabled state
* Add exports for stars' display lists (#563)
* Update runtime to fix default value of enabled_by_default
* Update runtime to allow NULL recomp_free
* Implement navigation and focus styling for new UI framework (no manual overrides yet)
* Fix the previous scissor state bleeding when drawing the RmlUi output onto the swapchain buffer
* Use a multiple file select dialog for mod install button
* Add mod export for loading UI image from bytes (png/dds)
* Manual navigation in UI framework and WIP mod menu navigation
* Repeat key events when holding down controller inputs for UI navigation
* Patch AnimationContext_SetLoadFrame to allow custom animations (#564)
* Close context when showing or hiding a context and reopen afterwards to prevent deadlocks
* Add quotes around xdg-open and open commands to support paths with spaces
* Update RT64 for high precision texture coordinates when using texture replacements
* Add support for built-in mods and convert D-Pad to a built-in mod (#567)
* Add embedded mod (using mm_recomp_draw_distance as an example).
* Update runtime after merge
* Experiment with removing the D-Pad.
* Add event needed for dpad as mod, revert remaining changes in built-in patches for dpad
* Add built-in dpad mod, add remaining event calls to input.c
* Add built-in mods readme
---------
Co-authored-by: Dario <dariosamo@gmail.com>
* Fixing navigation of mods menu.
* Focused state for mod entry.
* Prevent hover styling and focus on input elements when disabled
* Fix up/down navigation on text input elements
* Set mod tab to navigate down to first mod, fix redundant mod scanning
* Remove more redundant mod scanning and fix mods being scanned during gameplay
* Update runtime for mod folder export
* Improve radio navigation and setup mod config submenu navigation setup
* Restore fd anywhere export functionality (#570)
* fix fd
* add comment back in
* Make config tabset navigate down to first mod entry when mod menu is open, make mod configure screen focus on configure button after closing
* Add navigation exports to mod UI API
* Fix opening the config menu via keyboard/controller causing a double animation warning in RmlUi
---------
Co-authored-by: Dario <dariosamo@gmail.com>
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: danielryb <59661841+danielryb@users.noreply.github.com>
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: LittleCube <littlecubehax@gmail.com>
2025-04-28 02:49:43 -04:00
|
|
|
/* stylelint-disable color-no-hex, color-hex-length */
|
|
|
|
h1 {
|
|
|
|
font-size: 68dp;
|
|
|
|
letter-spacing: 4.76dp;
|
|
|
|
line-height: 68dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
h2 {
|
|
|
|
font-size: 52dp;
|
|
|
|
letter-spacing: 3.64dp;
|
|
|
|
line-height: 52dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
h3, .tab {
|
|
|
|
font-size: 36dp;
|
|
|
|
letter-spacing: 2.52dp;
|
|
|
|
line-height: 36dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label-lg, .menu-list-item__label, .button--large {
|
|
|
|
font-size: 36dp;
|
|
|
|
letter-spacing: 3.96dp;
|
|
|
|
line-height: 36dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label-md, .config-debug-option__label, .button, .config-option__title, .config-option--hz .config-option__title, .config-group__title, .control-option__label {
|
|
|
|
font-size: 28dp;
|
|
|
|
letter-spacing: 3.08dp;
|
|
|
|
line-height: 28dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label-sm, .config-debug__select-wrapper .config-debug__select-label, .subtitle-title__disclaimer, .config-option__range-label, .config-option-range__label, .config-option__radio-tabs .config-option__tab-label,
|
|
|
|
.config-option__list .config-option__tab-label, .centered-page__controls > label {
|
|
|
|
font-size: 20dp;
|
|
|
|
letter-spacing: 2.8dp;
|
|
|
|
line-height: 20dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
text-transform: uppercase;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__details {
|
|
|
|
font-size: 18dp;
|
|
|
|
letter-spacing: 2.52dp;
|
|
|
|
line-height: 18dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
|
|
|
|
body, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .config-description__contents, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config__wrapper p {
|
|
|
|
font-size: 20dp;
|
|
|
|
letter-spacing: 0dp;
|
|
|
|
line-height: 20dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle__icon {
|
|
|
|
font-family: promptfont;
|
|
|
|
font-size: 56dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 56dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.prompt-font {
|
|
|
|
font-family: promptfont;
|
|
|
|
font-size: 40dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 40dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.prompt-font-sm, .input-viz__mappings div {
|
|
|
|
font-family: promptfont;
|
|
|
|
font-size: 32dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 32dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
@include trans-colors;
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
@include trans-colors-opa;
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
@include trans-colors-svg;
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
@include trans-colors-border;
|
|
|
|
*/
|
|
|
|
.nav-vert, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
|
|
|
|
nav-up: auto;
|
|
|
|
nav-down: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nav-horiz, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
|
|
|
|
nav-right: auto;
|
|
|
|
nav-left: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nav-foc, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
|
|
|
|
focus: auto;
|
|
|
|
tab-index: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
@include set-color(COLOR);
|
|
|
|
*/
|
|
|
|
/* stylelint-disable color-no-hex, color-hex-length */
|
|
|
|
h1 {
|
|
|
|
font-size: 68dp;
|
|
|
|
letter-spacing: 4.76dp;
|
|
|
|
line-height: 68dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
h2 {
|
|
|
|
font-size: 52dp;
|
|
|
|
letter-spacing: 3.64dp;
|
|
|
|
line-height: 52dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
h3, .tab {
|
|
|
|
font-size: 36dp;
|
|
|
|
letter-spacing: 2.52dp;
|
|
|
|
line-height: 36dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label-lg, .menu-list-item__label, .button--large {
|
|
|
|
font-size: 36dp;
|
|
|
|
letter-spacing: 3.96dp;
|
|
|
|
line-height: 36dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label-md, .config-debug-option__label, .button, .config-option__title, .config-option--hz .config-option__title, .config-group__title, .control-option__label {
|
|
|
|
font-size: 28dp;
|
|
|
|
letter-spacing: 3.08dp;
|
|
|
|
line-height: 28dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label-sm, .config-debug__select-wrapper .config-debug__select-label, .subtitle-title__disclaimer, .config-option__range-label, .config-option-range__label, .config-option__radio-tabs .config-option__tab-label,
|
|
|
|
.config-option__list .config-option__tab-label, .centered-page__controls > label {
|
|
|
|
font-size: 20dp;
|
|
|
|
letter-spacing: 2.8dp;
|
|
|
|
line-height: 20dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 700;
|
|
|
|
text-transform: uppercase;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__details {
|
|
|
|
font-size: 18dp;
|
|
|
|
letter-spacing: 2.52dp;
|
|
|
|
line-height: 18dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
|
|
|
|
body, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .config-description__contents, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config__wrapper p {
|
|
|
|
font-size: 20dp;
|
|
|
|
letter-spacing: 0dp;
|
|
|
|
line-height: 20dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle__icon {
|
|
|
|
font-family: promptfont;
|
|
|
|
font-size: 56dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 56dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.prompt-font {
|
|
|
|
font-family: promptfont;
|
|
|
|
font-size: 40dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 40dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.prompt-font-sm, .input-viz__mappings div {
|
|
|
|
font-family: promptfont;
|
|
|
|
font-size: 32dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 32dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
@include trans-colors;
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
@include trans-colors-opa;
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
@include trans-colors-svg;
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
@include trans-colors-border;
|
|
|
|
*/
|
|
|
|
.nav-vert, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
|
|
|
|
nav-up: auto;
|
|
|
|
nav-down: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nav-horiz, .nav-dir, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
|
|
|
|
nav-right: auto;
|
|
|
|
nav-left: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nav-foc, .nav-all, .config-debug__select-wrapper select selectbox option, .config-debug__select-wrapper select, .config-debug__select-wrapper input, .toggle, .subtitle-title:not(:disabled, [disabled]), .menu-list-item:not(:disabled, [disabled]), .icon-button:not([disabled]), .button:not([disabled]), .button, .config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option, .config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper, .config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio, .config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox, .tab, .control-option__binding:not([disabled]) {
|
|
|
|
focus: auto;
|
|
|
|
tab-index: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
@include set-color(COLOR);
|
|
|
|
*/
|
|
|
|
/* stylelint-disable color-no-hex */
|
|
|
|
/* stylelint-disable selector-max-id */
|
|
|
|
* {
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
hr {
|
|
|
|
display: block;
|
|
|
|
padding: 1.5dp;
|
|
|
|
background: #08070D;
|
|
|
|
}
|
|
|
|
|
|
|
|
body {
|
|
|
|
color: #fff;
|
|
|
|
font-family: chiaro;
|
|
|
|
font-size: 20dp;
|
|
|
|
font-style: normal;
|
|
|
|
font-weight: normal;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* div {
|
|
|
|
focus:none;
|
|
|
|
tab-index:none;
|
|
|
|
} */
|
|
|
|
div#window {
|
|
|
|
position: relative;
|
|
|
|
box-sizing: border-box;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
|
|
background-color: #121018;
|
|
|
|
}
|
|
|
|
|
|
|
|
div#content {
|
|
|
|
z-index: 2;
|
|
|
|
width: auto;
|
|
|
|
height: 100%;
|
|
|
|
overflow: hidden auto;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
p {
|
|
|
|
text-align: left;
|
|
|
|
}
|
|
|
|
|
|
|
|
input.submit {
|
|
|
|
margin-left: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
input.text,
|
|
|
|
input.password {
|
|
|
|
box-sizing: border-box;
|
|
|
|
height: 31dp;
|
|
|
|
padding: 11dp 10dp 0;
|
|
|
|
text-align: left;
|
|
|
|
cursor: text;
|
|
|
|
}
|
|
|
|
|
|
|
|
textarea {
|
|
|
|
padding: 14dp 12dp 10dp;
|
|
|
|
text-align: left;
|
|
|
|
cursor: text;
|
|
|
|
}
|
|
|
|
|
|
|
|
input.text,
|
|
|
|
input.password,
|
|
|
|
select,
|
|
|
|
textarea {
|
|
|
|
/* color: #333; */
|
|
|
|
/* font-size: 13dp */
|
|
|
|
height: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
table input.text {
|
|
|
|
box-sizing: border-box;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
/* height: 18dp; */
|
|
|
|
margin: 0;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: #000;
|
|
|
|
background-color: #fff;
|
|
|
|
font-size: 15dp;
|
|
|
|
/* padding: 0 5dp; */
|
|
|
|
line-height: 1;
|
|
|
|
decorator: none;
|
|
|
|
/* vertical-align: center; */
|
|
|
|
}
|
|
|
|
|
|
|
|
input.radio {
|
|
|
|
flex: 0;
|
|
|
|
width: 0dp;
|
|
|
|
nav-up: auto;
|
|
|
|
nav-right: auto;
|
|
|
|
nav-down: auto;
|
|
|
|
nav-left: auto;
|
|
|
|
tab-index: auto;
|
|
|
|
focus: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
input.checkbox {
|
|
|
|
width: 20dp;
|
|
|
|
height: 20dp;
|
|
|
|
nav-up: auto;
|
|
|
|
nav-right: auto;
|
|
|
|
nav-down: auto;
|
|
|
|
nav-left: auto;
|
|
|
|
tab-index: auto;
|
|
|
|
focus: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
scrollbarvertical, scrollbarhorizontal {
|
|
|
|
margin: 0;
|
|
|
|
border: 0;
|
|
|
|
}
|
|
|
|
scrollbarvertical slidertrack, scrollbarhorizontal slidertrack {
|
|
|
|
background: #DABAF7;
|
|
|
|
opacity: 0.05;
|
|
|
|
}
|
|
|
|
scrollbarvertical sliderbar, scrollbarhorizontal sliderbar {
|
|
|
|
border-radius: 5dp;
|
|
|
|
background: #DABAF7;
|
|
|
|
opacity: 0.1;
|
|
|
|
}
|
|
|
|
scrollbarvertical sliderbar:hover:not(:active), scrollbarhorizontal sliderbar:hover:not(:active) {
|
|
|
|
opacity: 0.2;
|
|
|
|
}
|
|
|
|
scrollbarvertical sliderbar:active, scrollbarhorizontal sliderbar:active {
|
|
|
|
opacity: 0.3;
|
|
|
|
}
|
|
|
|
scrollbarvertical sliderarrowdec, scrollbarvertical sliderarrowinc, scrollbarhorizontal sliderarrowdec, scrollbarhorizontal sliderarrowinc {
|
|
|
|
width: 0;
|
|
|
|
height: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
scrollbarvertical {
|
|
|
|
width: 12dp;
|
|
|
|
}
|
|
|
|
scrollbarvertical slidertrack {
|
|
|
|
width: 12dp;
|
|
|
|
}
|
|
|
|
scrollbarvertical sliderbar {
|
|
|
|
width: 12dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
scrollbarhorizontal {
|
|
|
|
height: 12dp;
|
|
|
|
}
|
|
|
|
scrollbarhorizontal slidertrack {
|
|
|
|
height: 12dp;
|
|
|
|
}
|
|
|
|
scrollbarhorizontal sliderbar {
|
|
|
|
height: 12dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.centered-page {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
padding: 64dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.1);
|
|
|
|
}
|
|
|
|
|
|
|
|
.centered-page__modal {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: column;
|
|
|
|
width: 100%;
|
|
|
|
max-width: 1692.4444444444dp;
|
|
|
|
height: 100%;
|
|
|
|
margin: auto;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-radius: 16dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
|
|
background: rgba(8, 7, 13, 0.9);
|
|
|
|
}
|
|
|
|
.centered-page__modal > .tabs {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: column;
|
|
|
|
width: 100%;
|
|
|
|
max-width: 1692.4444444444dp;
|
|
|
|
height: 100%;
|
|
|
|
margin: auto;
|
|
|
|
}
|
|
|
|
.centered-page__modal panels {
|
|
|
|
flex: 1 1 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.centered-page__controls {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
bottom: 24dp;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 100%;
|
|
|
|
max-width: 1692.4444444444dp;
|
|
|
|
height: auto;
|
|
|
|
margin: 0 auto;
|
|
|
|
}
|
|
|
|
.centered-page__controls > label {
|
|
|
|
display: inline-block;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: auto;
|
|
|
|
height: 24dp;
|
|
|
|
}
|
|
|
|
.centered-page__controls > label:not(:last-child) {
|
|
|
|
margin-right: 40dp;
|
|
|
|
}
|
|
|
|
.centered-page__controls > label > span:first-child {
|
|
|
|
margin-right: 4dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.control-option {
|
|
|
|
color: #CCCCCC;
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
padding: 4dp 16dp 4dp 20dp;
|
|
|
|
border-radius: 8dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
}
|
|
|
|
.control-option svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.control-option svg {
|
|
|
|
transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
}
|
|
|
|
.control-option:focus-visible:not(:disabled, [disabled]), .control-option:hover:not(:disabled, [disabled]) {
|
|
|
|
color: #F2F2F2;
|
|
|
|
background-color: rgba(190, 184, 219, 0.1);
|
|
|
|
}
|
|
|
|
.control-option:focus-visible:not(:disabled, [disabled]) svg, .control-option:hover:not(:disabled, [disabled]) svg {
|
|
|
|
image-color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.control-option:disabled, .control-option[disabled] {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
[cur-binding-slot="0"] .control-option--active .control-option__binding[bind-slot="0"] {
|
|
|
|
border-color: #F86039;
|
|
|
|
}
|
|
|
|
[cur-binding-slot="0"] .control-option--active .control-option__binding[bind-slot="0"] .control-option__binding-icon {
|
|
|
|
opacity: 0;
|
|
|
|
}
|
|
|
|
[cur-binding-slot="0"] .control-option--active .control-option__binding[bind-slot="0"] .control-option__binding-recording {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
[cur-binding-slot="1"] .control-option--active .control-option__binding[bind-slot="1"] {
|
|
|
|
border-color: #F86039;
|
|
|
|
}
|
|
|
|
[cur-binding-slot="1"] .control-option--active .control-option__binding[bind-slot="1"] .control-option__binding-icon {
|
|
|
|
opacity: 0;
|
|
|
|
}
|
|
|
|
[cur-binding-slot="1"] .control-option--active .control-option__binding[bind-slot="1"] .control-option__binding-recording {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
.control-option .icon-button {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.control-option__label {
|
|
|
|
flex: 2 1 300dp;
|
|
|
|
height: auto;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.control-option__bindings {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 2 1 400dp;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 100%;
|
|
|
|
height: 56dp;
|
|
|
|
padding: 0 12dp 0 4dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.control-option__binding {
|
|
|
|
color: #CCCCCC;
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 100%;
|
|
|
|
height: 56dp;
|
|
|
|
margin: 0 4dp;
|
|
|
|
padding: 8dp;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-radius: 8dp;
|
|
|
|
border-color: rgba(190, 184, 219, 0.1);
|
|
|
|
background-color: rgba(190, 184, 219, 0.1);
|
|
|
|
}
|
|
|
|
.control-option__binding svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.control-option__binding svg {
|
|
|
|
transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
}
|
|
|
|
.control-option__binding:focus, .control-option__binding:hover {
|
|
|
|
color: #F2F2F2;
|
|
|
|
border-color: #F2F2F2;
|
|
|
|
background-color: rgba(255, 255, 255, 0.1);
|
|
|
|
}
|
|
|
|
.control-option__binding:focus svg, .control-option__binding:hover svg {
|
|
|
|
image-color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.control-option__binding:active {
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.control-option__binding:active svg {
|
|
|
|
image-color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.control-option__binding:disabled, .control-option__binding[disabled] {
|
|
|
|
color: #CCCCCC;
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
.control-option__binding:disabled svg, .control-option__binding[disabled] svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.control-option__binding:not([disabled]) {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
|
|
|
|
.control-option__binding-icon {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes control-option__binding-recording-scale {
|
|
|
|
0% {
|
|
|
|
transform: scale(1);
|
|
|
|
}
|
|
|
|
50% {
|
|
|
|
transform: scale(0.85);
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
transform: scale(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.control-option__binding-recording {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
opacity: 0;
|
|
|
|
}
|
|
|
|
.control-option__binding-recording .control-option__binding-circle {
|
|
|
|
width: 24dp;
|
|
|
|
height: 24dp;
|
|
|
|
animation: 1.5s sine-in-out infinite control-option__binding-recording-scale;
|
|
|
|
border-radius: 24dp;
|
|
|
|
background-color: #F86039;
|
|
|
|
}
|
|
|
|
.control-option__binding-recording .control-option__binding-edge {
|
|
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
|
|
left: 50%;
|
|
|
|
width: 36dp;
|
|
|
|
height: 36dp;
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
}
|
|
|
|
.control-option__binding-recording .control-option__binding-edge > svg.control-option__binding-edge-svg {
|
|
|
|
width: 36dp;
|
|
|
|
height: 36dp;
|
|
|
|
image-color: #F86039;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
Example:
|
|
|
|
<tab class="tab">
|
|
|
|
<div>Graphics</div>
|
|
|
|
<div class="tab__indicator"></div>
|
|
|
|
</tab>
|
|
|
|
*/
|
|
|
|
.tabs tabs {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
}
|
|
|
|
|
|
|
|
.tab {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
margin: 0;
|
|
|
|
padding: 20dp 24dp;
|
|
|
|
opacity: 0.9;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.tab:selected {
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.tab:selected .tab__indicator {
|
|
|
|
background-color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.tab:selected:hover {
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
.rmlui-window:not([mouse-active]) .tab:focus {
|
|
|
|
transition: none;
|
|
|
|
animation: blue-pulse 0.75s infinite;
|
|
|
|
}
|
|
|
|
.rmlui-window:not([mouse-active]) .tab:focus:selected .tab__indicator {
|
|
|
|
animation: blue-pulse-background 0.75s infinite;
|
|
|
|
}
|
|
|
|
.tab:focus, .tab:hover {
|
|
|
|
opacity: 1;
|
|
|
|
color: #F2F2F2;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
|
|
|
|
.tab__indicator {
|
|
|
|
position: absolute;
|
|
|
|
right: 0;
|
|
|
|
bottom: 2dp;
|
|
|
|
left: 0;
|
|
|
|
height: 2dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__icon-buttons {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 8dp;
|
|
|
|
right: 0dp;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-end;
|
|
|
|
width: auto;
|
|
|
|
}
|
|
|
|
.config__icon-buttons .icon-button {
|
|
|
|
margin: 0 8dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__form {
|
|
|
|
border-top-width: 1.1dp;
|
|
|
|
border-top-color: rgba(255, 255, 255, 0.1);
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: column;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
border-bottom-right-radius: 16dp;
|
|
|
|
border-bottom-left-radius: 16dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__wrapper {
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding: 16dp;
|
|
|
|
border-radius: 0dp;
|
|
|
|
border-bottom-right-radius: 16dp;
|
|
|
|
border-bottom-left-radius: 16dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0.35);
|
|
|
|
text-align: left;
|
|
|
|
}
|
|
|
|
.config__wrapper p {
|
|
|
|
padding: 16dp;
|
|
|
|
line-height: 28dp;
|
|
|
|
white-space: pre-line;
|
|
|
|
}
|
|
|
|
.config__wrapper p b {
|
|
|
|
color: #B97DF2;
|
|
|
|
}
|
|
|
|
.config__wrapper p i {
|
|
|
|
color: #E9CD35;
|
|
|
|
font-style: normal;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__hz-wrapper {
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: row;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
border-radius: 0dp;
|
|
|
|
text-align: left;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__header, .config__footer {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 100%;
|
|
|
|
background-color: rgba(0, 0, 0, 0.35);
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__header {
|
|
|
|
border-bottom-width: 1.1dp;
|
|
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
|
|
padding: 12dp 20dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__footer {
|
|
|
|
border-top-width: 1.1dp;
|
|
|
|
border-top-color: rgba(255, 255, 255, 0.1);
|
|
|
|
padding: 20dp 20dp;
|
|
|
|
border-bottom-right-radius: 16dp;
|
|
|
|
border-bottom-left-radius: 16dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__header-left {
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 auto;
|
|
|
|
flex-direction: row;
|
|
|
|
}
|
|
|
|
.config__header-left > :not(:first-child) {
|
|
|
|
margin-left: 8dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config__row {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-group {
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
.config-group--scrollable {
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding: 0 0 0 16dp;
|
|
|
|
}
|
|
|
|
.config-group--scrollable .config-group__wrapper {
|
|
|
|
max-height: 100%;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
.config-group__title {
|
|
|
|
color: #B97DF2;
|
|
|
|
}
|
|
|
|
.config-group__title--hidden {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
.config-group__wrapper {
|
|
|
|
padding: 16dp 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option {
|
|
|
|
display: flex;
|
|
|
|
flex: 1;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-start;
|
|
|
|
margin: 16dp 0dp 24dp;
|
|
|
|
}
|
|
|
|
.config-option--hz {
|
|
|
|
flex-direction: row-reverse;
|
|
|
|
align-items: center;
|
|
|
|
margin-top: 4dp;
|
|
|
|
margin-bottom: 4dp;
|
|
|
|
}
|
|
|
|
.config-option--hz .config-option__title {
|
|
|
|
flex: 1 1 100%;
|
|
|
|
}
|
|
|
|
.config-option--hz .config-option__list {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
width: auto;
|
|
|
|
}
|
|
|
|
.config-option--hz:first-child {
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
.config-option--hz:last-child {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__title {
|
|
|
|
padding: 0 12dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__radio-tabs,
|
|
|
|
.config-option__list {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-start;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input:first-of-type,
|
|
|
|
.config-option__list input:first-of-type {
|
|
|
|
nav-left: none;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input:last-of-type,
|
|
|
|
.config-option__list input:last-of-type {
|
|
|
|
nav-right: none;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs .config-option__tab-label,
|
|
|
|
.config-option__list .config-option__tab-label {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
height: auto;
|
|
|
|
margin: 4dp 12dp 0;
|
|
|
|
padding: 8dp 0;
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
tab-index: none;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs .config-option__tab-label:hover,
|
|
|
|
.config-option__list .config-option__tab-label:hover {
|
|
|
|
color: #F2F2F2;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs .config-option__checkbox-wrapper,
|
|
|
|
.config-option__list .config-option__checkbox-wrapper {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
width: 32dp;
|
|
|
|
height: 32dp;
|
|
|
|
margin: 4dp 12dp 0;
|
|
|
|
border-radius: 8dp;
|
|
|
|
opacity: 0.5;
|
|
|
|
background-color: rgba(190, 184, 219, 0.1);
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs .config-option__checkbox-wrapper:hover,
|
|
|
|
.config-option__list .config-option__checkbox-wrapper:hover {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs .config-option__checkbox-wrapper[checked],
|
|
|
|
.config-option__list .config-option__checkbox-wrapper[checked] {
|
|
|
|
background-color: #3333FF;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs .config-option__checkbox,
|
|
|
|
.config-option__list .config-option__checkbox {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
visibility: visible;
|
|
|
|
width: 0;
|
|
|
|
height: 0;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.radio,
|
|
|
|
.config-option__list input.radio {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
visibility: visible;
|
|
|
|
width: 0;
|
|
|
|
height: 0;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.radio:not(:disabled):checked + .config-option__tab-label,
|
|
|
|
.config-option__list input.radio:not(:disabled):checked + .config-option__tab-label {
|
|
|
|
border-bottom: 1dp;
|
|
|
|
border-color: #F2F2F2;
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.radio:not(:disabled):checked + .config-option__tab-label:hover,
|
|
|
|
.config-option__list input.radio:not(:disabled):checked + .config-option__tab-label:hover {
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
.rmlui-window:not([mouse-active]) .config-option__radio-tabs input.radio:not(:disabled):focus + .config-option__tab-label,
|
|
|
|
.rmlui-window:not([mouse-active]) .config-option__list input.radio:not(:disabled):focus + .config-option__tab-label {
|
|
|
|
transition: none;
|
|
|
|
animation: blue-pulse 0.75s infinite;
|
|
|
|
border-color: #17D6E8;
|
|
|
|
color: #17D6E8;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.radio:not(:disabled):focus + .config-option__tab-label, .config-option__radio-tabs input.radio:not(:disabled):hover + .config-option__tab-label,
|
|
|
|
.config-option__list input.radio:not(:disabled):focus + .config-option__tab-label,
|
|
|
|
.config-option__list input.radio:not(:disabled):hover + .config-option__tab-label {
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.radio:disabled + .config-option__tab-label,
|
|
|
|
.config-option__list input.radio:disabled + .config-option__tab-label {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.radio:disabled + .config-option__tab-label:hover,
|
|
|
|
.config-option__list input.radio:disabled + .config-option__tab-label:hover {
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.range slidertrack,
|
|
|
|
.config-option__list input.range slidertrack {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
height: 2dp;
|
|
|
|
margin-top: 8dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.range sliderbar,
|
|
|
|
.config-option__list input.range sliderbar {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
width: 16dp;
|
|
|
|
height: 16dp;
|
|
|
|
margin-top: 1dp;
|
|
|
|
margin-right: -8dp;
|
|
|
|
margin-left: -8dp;
|
|
|
|
transition: background-color 0.05s linear-in-out;
|
|
|
|
border-radius: 8dp;
|
|
|
|
background-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.rmlui-window:not([mouse-active]) .config-option__radio-tabs input.range sliderbar:focus,
|
|
|
|
.rmlui-window:not([mouse-active]) .config-option__list input.range sliderbar:focus {
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: #3333FF;
|
|
|
|
animation: blue-pulse-background 0.75s infinite;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.range sliderbar:hover,
|
|
|
|
.config-option__list input.range sliderbar:hover {
|
|
|
|
background-color: #F2F2F2;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.range sliderbar:active,
|
|
|
|
.config-option__radio-tabs input.range slidertrack:active + sliderbar,
|
|
|
|
.config-option__list input.range sliderbar:active,
|
|
|
|
.config-option__list input.range slidertrack:active + sliderbar {
|
|
|
|
background-color: #17D6E8;
|
|
|
|
}
|
|
|
|
.config-option__radio-tabs input.range sliderarrowdec,
|
|
|
|
.config-option__radio-tabs input.range sliderarrowinc,
|
|
|
|
.config-option__list input.range sliderarrowdec,
|
|
|
|
.config-option__list input.range sliderarrowinc {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__details {
|
|
|
|
height: 18dp;
|
|
|
|
margin: 14dp 12dp 0;
|
|
|
|
color: #B97DF2;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option-color {
|
|
|
|
width: 100%;
|
|
|
|
max-width: 360dp;
|
|
|
|
height: auto;
|
|
|
|
margin-top: 4dp;
|
|
|
|
margin-left: 12dp;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
.config-option-color__preview-wrapper {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
width: 100%;
|
|
|
|
height: 72dp;
|
|
|
|
}
|
|
|
|
.config-option-color__preview-block {
|
|
|
|
display: block;
|
|
|
|
width: 88dp;
|
|
|
|
height: 100%;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-radius: 16dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-option-color__hsv-wrapper {
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: column;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding-left: 8dp;
|
|
|
|
}
|
|
|
|
.config-option-color__hsv-wrapper .config-option-range {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
}
|
|
|
|
.config-option-color__hsv-wrapper .config-option-range label {
|
|
|
|
min-width: 72dp;
|
|
|
|
}
|
|
|
|
.config-option-color__hsv-wrapper .config-option-range input {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option-range {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-start;
|
|
|
|
width: 100%;
|
|
|
|
max-width: 360dp;
|
|
|
|
height: auto;
|
|
|
|
margin-top: 4dp;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
.config-option-range__label {
|
|
|
|
display: block;
|
|
|
|
width: 56dp;
|
|
|
|
margin: 0 12dp;
|
|
|
|
margin-right: 16dp;
|
|
|
|
padding: 0;
|
|
|
|
color: #F2F2F2;
|
|
|
|
tab-index: none;
|
|
|
|
}
|
|
|
|
.config-option-range__range-input {
|
|
|
|
flex: 1;
|
|
|
|
}
|
|
|
|
.config-option-range__range-input slidertrack {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
height: 2dp;
|
|
|
|
margin-top: 8dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-option-range__range-input sliderbar {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
width: 16dp;
|
|
|
|
height: 16dp;
|
|
|
|
margin-top: 1dp;
|
|
|
|
margin-right: -8dp;
|
|
|
|
margin-left: -8dp;
|
|
|
|
transition: background-color 0.05s linear-in-out;
|
|
|
|
border-radius: 8dp;
|
|
|
|
background-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.rmlui-window:not([mouse-active]) .config-option-range__range-input sliderbar:focus {
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: #3333FF;
|
|
|
|
animation: blue-pulse-background 0.75s infinite;
|
|
|
|
}
|
|
|
|
.config-option-range__range-input sliderbar:hover {
|
|
|
|
background-color: #F2F2F2;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-option-range__range-input sliderbar:active,
|
|
|
|
.config-option-range__range-input slidertrack:active + sliderbar {
|
|
|
|
background-color: #17D6E8;
|
|
|
|
}
|
|
|
|
.config-option-range__range-input sliderarrowdec,
|
|
|
|
.config-option-range__range-input sliderarrowinc {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__range-wrapper {
|
|
|
|
max-width: 360dp;
|
|
|
|
margin-top: 4dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option__range-label {
|
|
|
|
display: block;
|
|
|
|
width: 56dp;
|
|
|
|
margin: 0 12dp;
|
|
|
|
margin-right: 16dp;
|
|
|
|
padding: 0;
|
|
|
|
color: #F2F2F2;
|
|
|
|
tab-index: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-option-dropdown, .config-option-textfield {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding: 8dp 24dp 8dp 12dp;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select, .config-option-textfield__select {
|
|
|
|
display: block;
|
|
|
|
height: 48dp;
|
|
|
|
padding: 14dp;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__wrapper, .config-option-textfield__wrapper {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
padding: 2dp 0 12dp;
|
|
|
|
cursor: text;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__wrapper input, .config-option-textfield__wrapper input {
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
vertical-align: middle;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select, .config-option-dropdown__wrapper, .config-option-textfield__select, .config-option-textfield__wrapper {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.5);
|
|
|
|
position: relative;
|
|
|
|
box-sizing: border-box;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
border-radius: 12dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select svg, .config-option-dropdown__wrapper svg, .config-option-textfield__select svg, .config-option-textfield__wrapper svg {
|
|
|
|
transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select:hover, .config-option-dropdown__select:focus, .config-option-dropdown__wrapper:hover, .config-option-dropdown__wrapper:focus, .config-option-textfield__select:hover, .config-option-textfield__select:focus, .config-option-textfield__wrapper:hover, .config-option-textfield__wrapper:focus {
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.8);
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select selectvalue, .config-option-dropdown__wrapper selectvalue, .config-option-textfield__select selectvalue, .config-option-textfield__wrapper selectvalue {
|
|
|
|
display: inline;
|
|
|
|
height: auto;
|
|
|
|
margin: auto 0;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select selectbox, .config-option-dropdown__wrapper selectbox, .config-option-textfield__select selectbox, .config-option-textfield__wrapper selectbox {
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
|
|
margin-top: 2dp;
|
|
|
|
padding: 4dp 0;
|
|
|
|
border-radius: 12dp;
|
|
|
|
background-color: #191622;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select selectbox option, .config-option-dropdown__wrapper selectbox option, .config-option-textfield__select selectbox option, .config-option-textfield__wrapper selectbox option {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
padding: 8dp 12dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
color: #CCCCCC;
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select selectbox option:hover, .config-option-dropdown__select selectbox option:focus, .config-option-dropdown__wrapper selectbox option:hover, .config-option-dropdown__wrapper selectbox option:focus, .config-option-textfield__select selectbox option:hover, .config-option-textfield__select selectbox option:focus, .config-option-textfield__wrapper selectbox option:hover, .config-option-textfield__wrapper selectbox option:focus {
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select selectbox option:hover:not(:checked), .config-option-dropdown__wrapper selectbox option:hover:not(:checked), .config-option-textfield__select selectbox option:hover:not(:checked), .config-option-textfield__wrapper selectbox option:hover:not(:checked) {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-option-dropdown__select selectbox option:checked, .config-option-dropdown__wrapper selectbox option:checked, .config-option-textfield__select selectbox option:checked, .config-option-textfield__wrapper selectbox option:checked {
|
|
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
|
|
color: #FFFFFF;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-description {
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding: 16dp;
|
|
|
|
border-radius: 0dp;
|
|
|
|
border-bottom-right-radius: 16dp;
|
|
|
|
border-bottom-left-radius: 16dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0.35);
|
|
|
|
text-align: left;
|
|
|
|
}
|
|
|
|
.config-description__contents {
|
|
|
|
padding: 16dp;
|
|
|
|
line-height: 28dp;
|
|
|
|
white-space: pre-line;
|
|
|
|
}
|
|
|
|
.config-description__contents b {
|
|
|
|
color: #B97DF2;
|
|
|
|
}
|
|
|
|
.config-description__contents i {
|
|
|
|
color: #E9CD35;
|
|
|
|
font-style: normal;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config {
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__horizontal-split {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: row;
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__mappings {
|
|
|
|
display: block;
|
|
|
|
flex: 1 1 auto;
|
|
|
|
min-width: 640dp;
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__mappings-scroll {
|
|
|
|
display: block;
|
|
|
|
width: 100%;
|
|
|
|
max-height: 100%;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__mappings-wrapper {
|
|
|
|
padding: 8dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-wrapper {
|
|
|
|
display: block;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
max-width: 1040.4444444444dp;
|
|
|
|
height: auto;
|
|
|
|
max-height: 780.3333333333dp;
|
|
|
|
margin: auto 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-aspect {
|
|
|
|
position: relative;
|
|
|
|
width: 100%;
|
|
|
|
margin: auto 0;
|
|
|
|
padding-bottom: 75%;
|
|
|
|
background-color: rgba(0, 0, 0, 0.35);
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 16dp;
|
|
|
|
right: 16dp;
|
|
|
|
bottom: 16dp;
|
|
|
|
left: 16dp;
|
|
|
|
flex-direction: column;
|
|
|
|
border-radius: 108dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-half {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: row;
|
|
|
|
padding: 6%;
|
|
|
|
}
|
|
|
|
.input-config__visual-half--bottom {
|
|
|
|
align-items: flex-end;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-quarter-left {
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 50%;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-start;
|
|
|
|
width: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-quarter-right {
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-end;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-stick-wrapper {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
.input-viz > svg:not(.input-viz__dpad-arrow) {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
}
|
|
|
|
[cur-input=NONE] .input-viz[visual-input] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=A] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=A] .input-viz[visual-input~=A] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=B] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=B] .input-viz[visual-input~=B] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=Z] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=Z] .input-viz[visual-input~=Z] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=START] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=START] .input-viz[visual-input~=START] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=DPAD_UP] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=DPAD_UP] .input-viz[visual-input~=DPAD_UP] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=DPAD_DOWN] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=DPAD_DOWN] .input-viz[visual-input~=DPAD_DOWN] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=DPAD_LEFT] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=DPAD_LEFT] .input-viz[visual-input~=DPAD_LEFT] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=DPAD_RIGHT] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=DPAD_RIGHT] .input-viz[visual-input~=DPAD_RIGHT] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=L] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=L] .input-viz[visual-input~=L] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=R] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=R] .input-viz[visual-input~=R] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=C_UP] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=C_UP] .input-viz[visual-input~=C_UP] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=C_DOWN] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=C_DOWN] .input-viz[visual-input~=C_DOWN] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=C_LEFT] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=C_LEFT] .input-viz[visual-input~=C_LEFT] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=C_RIGHT] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=C_RIGHT] .input-viz[visual-input~=C_RIGHT] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=X_AXIS_NEG] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=X_AXIS_NEG] .input-viz[visual-input~=X_AXIS_NEG] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=X_AXIS_POS] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=X_AXIS_POS] .input-viz[visual-input~=X_AXIS_POS] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=Y_AXIS_NEG] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=Y_AXIS_NEG] .input-viz[visual-input~=Y_AXIS_NEG] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz[visual-input~=Y_AXIS_POS] {
|
|
|
|
opacity: 0.25;
|
|
|
|
}
|
|
|
|
[cur-input=Y_AXIS_POS] .input-viz[visual-input~=Y_AXIS_POS] {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__button {
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.input-viz__button svg {
|
|
|
|
image-color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.input-viz__button--sm {
|
|
|
|
width: 64dp;
|
|
|
|
height: 64dp;
|
|
|
|
}
|
|
|
|
.input-viz__button--sm > svg {
|
|
|
|
width: 64dp;
|
|
|
|
height: 64dp;
|
|
|
|
}
|
|
|
|
.input-viz__button--md {
|
|
|
|
width: 76dp;
|
|
|
|
height: 76dp;
|
|
|
|
}
|
|
|
|
.input-viz__button--md > svg {
|
|
|
|
width: 76dp;
|
|
|
|
height: 76dp;
|
|
|
|
}
|
|
|
|
.input-viz__button--lg {
|
|
|
|
width: 84dp;
|
|
|
|
height: 84dp;
|
|
|
|
}
|
|
|
|
.input-viz__button--lg > svg {
|
|
|
|
width: 84dp;
|
|
|
|
height: 84dp;
|
|
|
|
}
|
|
|
|
.input-viz__button--C svg {
|
|
|
|
image-color: #E9CD35;
|
|
|
|
}
|
|
|
|
.input-viz__button--A {
|
|
|
|
margin-top: auto;
|
|
|
|
}
|
|
|
|
.input-viz__button--A svg {
|
|
|
|
image-color: #3333FF;
|
|
|
|
}
|
|
|
|
.input-viz__button--B svg {
|
|
|
|
image-color: #45D043;
|
|
|
|
}
|
|
|
|
.input-viz__button--Start svg {
|
|
|
|
image-color: #F86039;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__Z {
|
|
|
|
width: 136dp;
|
|
|
|
height: 136dp;
|
|
|
|
}
|
|
|
|
.input-viz__Z svg {
|
|
|
|
image-color: #E9CD35;
|
|
|
|
}
|
|
|
|
.input-viz__Z > svg {
|
|
|
|
width: 136dp;
|
|
|
|
height: 136dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz.input-viz__dpad {
|
|
|
|
width: 192dp;
|
|
|
|
height: 192dp;
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
.input-viz.input-viz__dpad svg {
|
|
|
|
image-color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.input-viz.input-viz__dpad > svg {
|
|
|
|
width: 192dp;
|
|
|
|
height: 192dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__visual-stick {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 200dp;
|
|
|
|
height: 200dp;
|
|
|
|
border-radius: 100dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__dpad-split,
|
|
|
|
.input-viz__stick-split {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
display: flex;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
.input-viz__dpad-split--vertical,
|
|
|
|
.input-viz__stick-split--vertical {
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
.input-viz__dpad-split--horizontal,
|
|
|
|
.input-viz__stick-split--horizontal {
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
.input-viz__dpad-split > div,
|
|
|
|
.input-viz__stick-split > div {
|
|
|
|
display: flex;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__dpad-split > div {
|
|
|
|
width: 64dp;
|
|
|
|
height: 64dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__stick-split > div {
|
|
|
|
width: 66.6666666667dp;
|
|
|
|
height: 66.6666666667dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__dpad-arrow {
|
|
|
|
position: absolute;
|
|
|
|
width: 60dp;
|
|
|
|
height: 60dp;
|
|
|
|
}
|
|
|
|
.input-viz__dpad-arrow--up {
|
|
|
|
top: 4dp;
|
|
|
|
margin: 0 auto;
|
|
|
|
}
|
|
|
|
.input-viz__dpad-arrow--down {
|
|
|
|
bottom: 4dp;
|
|
|
|
margin: 0 auto;
|
|
|
|
transform: rotate(180deg);
|
|
|
|
}
|
|
|
|
.input-viz__dpad-arrow--left {
|
|
|
|
left: 4dp;
|
|
|
|
margin: auto 0;
|
|
|
|
transform: rotate(-90deg);
|
|
|
|
}
|
|
|
|
.input-viz__dpad-arrow--right {
|
|
|
|
right: 4dp;
|
|
|
|
margin: auto 0;
|
|
|
|
transform: rotate(90deg);
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__R {
|
|
|
|
width: 96dp;
|
|
|
|
height: 96dp;
|
|
|
|
}
|
|
|
|
.input-viz__R svg {
|
|
|
|
image-color: #FFFFFF;
|
|
|
|
}
|
|
|
|
.input-viz__R > svg {
|
|
|
|
width: 96dp;
|
|
|
|
height: 96dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-viz__L {
|
|
|
|
width: 136dp;
|
|
|
|
height: 136dp;
|
|
|
|
}
|
|
|
|
.input-viz__L svg {
|
|
|
|
image-color: #17D6E8;
|
|
|
|
}
|
|
|
|
.input-viz__L > svg {
|
|
|
|
width: 136dp;
|
|
|
|
height: 136dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__c-buttons {
|
|
|
|
position: relative;
|
|
|
|
width: 208dp;
|
|
|
|
height: 132dp;
|
|
|
|
}
|
|
|
|
.input-config__c-buttons-lr, .input-config__c-buttons-du {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
}
|
|
|
|
.input-config__c-buttons-lr {
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
.input-config__c-buttons-du {
|
|
|
|
flex-direction: column-reverse;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
.input-config__c-buttons .input-viz[visual-input=C_UP] {
|
|
|
|
margin-top: -32dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input-config__main-buttons {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: row;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 268dp;
|
2025-05-04 10:33:10 -04:00
|
|
|
min-width: 1dp;
|
Modding menu and UI and additional mod exports (#535)
* init config opt system w/ 3 types and description support
* Move config registry/option to librecomp + added Color conf opt type
* Updated color option type styling
* Added dropdown option type
* Added TextField option type
* Button config type + callback wip
* init mod menu + bem class + button presets
* WIP mod menu, fix some warnings
* Rewrite mod details under new UI system.
* Refactored mods menu entirely.
* Remove ModMenu.scss.
* Take ownership of created pointers on Element class.
* Add styles.
* Multi-style state and disabled state propagation.
* Switch to string views.
* Convert to spaces, hook up mod enabled to toggle.
* Mod menu progress.
* Layout for mod details panel, add gap property setters
* Update RmlUi for gap property in flexbox
* Add slot_map and begin ui context
* Implement context and resource storage slotmaps
* Config submenu.
* Refactored to account for context changes.
* Turn off tab searching when submenu is open.
* Revert accidental RmlUi downgrade
* Upgrade RmlUi to 6.0 release
* Text input.
* Radio option.
* Cleanup.
* Refactor Rml document handling to use new ContextId system (prompts currently unimplemented)
* Add support for config schema.
* Split config sub menu into separate context and fix configure button, prevent infinite loop when looking for autofocus element
* Reimplement mechanism to open the config menu to a specific tab
* Begin implementing mod UI API
* Link storage to mod menu.
* Proper enum parsing.
* Enable mod reordering.
* Draggable improvements to mod menu and runtime update.
* Adjust styling of submenu.
* Mods folder button.
* Linux build fixes.
* Hook up new manifest fields to mod UI
* Add basic thumbnail parsing functionality.
* More style changes.
* Implement update event for elements
* Use RT64's texture laoding instead.
* Restore spacer animations.
* Animation API begone.
* Auto-enabled mods.
* Update runtime submodule and N64Recomp commit in CI for mod config API, remove unnecessary extern C
* Sub menu display name, assert on text input.
* Clamp delta time to fix UI disappearing on OS with timestamps that don't always increase.
* Add a state for when no mods are installed.
* Unify API function naming scheme and export relevant API functions
* Add actor update/init events and save init event (#536)
* Expose remaining property setters to mod UI API
* Implemented mod UI callbacks
* Implement actor extension data and use it for transform tagging
* Zero the memory allocated to hold extended actor data
* Implement label and textinput in mod UI API
* Patch virtual address translation to support entire extended RAM address space (#533)
* Download full target build of llvm in CI Windows runners to fix missing MIPS support and update N64Recomp CI commit
* Enable triple buffering in RT64 (#546)
* Implement controlling input capturing for mod UI contexts
* Created mod UI API functions for setting visibility, setting text, and destroying elements
* Fix errant RML tag in mod menu and insert breaks for newlines when setting element text
* Fix compilation after rebase
* Fixes for macOS
* Set the blender description manually for the UI renderer
* Created mod UI API functions for imageview elements
* Switch to designated initializers to work around missing aggregate initialization compiler support
* Update RT64 for driver bug workarounds and misc fixes
* Update RT64 to fix native sampler issues with tile copies
* Update RT64 for depth clear optimization and more native sampler changes
* Update RT64 and allow it to choose the graphics API when set to Auto
* Update runtime to allow renderers to choose the graphics API
* Update RT64 to enable early Z test shader optimization
* Implement data structure mod APIs
* Update lunasvg to increase its minimum cmake version
* Switch to runtime concatenation of function name in data API error reporting to fix Linux compilation issue
* Add missing typename to fix compilation on some compilers
* Update RT64 to fix failed assert with MSAA off
* Reimplement prompts as a separate UI context and make it so the quit game prompt doesn't bring up the config menu
* DnD prototype.
* Fix to dynamic lib path and runtime commit.
* Finish drag and drop mod installation, disable mod refresh button and code mod toggle when game starts
* Remove std::format usage and add missing <list> includes to fix Linux/MacOS compilation
* Switch to aggregate initialization for Version to work around missing implicit constructor on some compilers
* Replace use of std::bind with lambdas
* Add mod install button, put mod description in scroll container, minor mod menu tweaks
* Update runtime to fix renderer shutdown race condition
* Implement texture pack reordering
* Add mod UI API exports for slider, password input, and label radio and expose RmlUi debugger on F8
* Update runtime for mod version export
* Update runtime for save swapping mod API
* Apply recomp.rcss to mod UI contexts (fixes scrolls)
* Updated mod list styling (#561)
* Updated mod list styling
* mod entry max height
* Update RT64 for v5 texture hash
* Update runtime for mod API to get save file path
* Add special config option id to control texture pack state for code mods
* Update runtime for mod default enabled state
* Add exports for stars' display lists (#563)
* Update runtime to fix default value of enabled_by_default
* Update runtime to allow NULL recomp_free
* Implement navigation and focus styling for new UI framework (no manual overrides yet)
* Fix the previous scissor state bleeding when drawing the RmlUi output onto the swapchain buffer
* Use a multiple file select dialog for mod install button
* Add mod export for loading UI image from bytes (png/dds)
* Manual navigation in UI framework and WIP mod menu navigation
* Repeat key events when holding down controller inputs for UI navigation
* Patch AnimationContext_SetLoadFrame to allow custom animations (#564)
* Close context when showing or hiding a context and reopen afterwards to prevent deadlocks
* Add quotes around xdg-open and open commands to support paths with spaces
* Update RT64 for high precision texture coordinates when using texture replacements
* Add support for built-in mods and convert D-Pad to a built-in mod (#567)
* Add embedded mod (using mm_recomp_draw_distance as an example).
* Update runtime after merge
* Experiment with removing the D-Pad.
* Add event needed for dpad as mod, revert remaining changes in built-in patches for dpad
* Add built-in dpad mod, add remaining event calls to input.c
* Add built-in mods readme
---------
Co-authored-by: Dario <dariosamo@gmail.com>
* Fixing navigation of mods menu.
* Focused state for mod entry.
* Prevent hover styling and focus on input elements when disabled
* Fix up/down navigation on text input elements
* Set mod tab to navigate down to first mod, fix redundant mod scanning
* Remove more redundant mod scanning and fix mods being scanned during gameplay
* Update runtime for mod folder export
* Improve radio navigation and setup mod config submenu navigation setup
* Restore fd anywhere export functionality (#570)
* fix fd
* add comment back in
* Make config tabset navigate down to first mod entry when mod menu is open, make mod configure screen focus on configure button after closing
* Add navigation exports to mod UI API
* Fix opening the config menu via keyboard/controller causing a double animation warning in RmlUi
---------
Co-authored-by: Dario <dariosamo@gmail.com>
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: danielryb <59661841+danielryb@users.noreply.github.com>
Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: LittleCube <littlecubehax@gmail.com>
2025-04-28 02:49:43 -04:00
|
|
|
height: 128dp;
|
|
|
|
margin-right: 10dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.button {
|
|
|
|
border-color: rgba(185, 125, 242, 0.8);
|
|
|
|
background-color: rgba(185, 125, 242, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
display: block;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding: 23dp;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-radius: 12dp;
|
|
|
|
}
|
|
|
|
.button:focus, .button:hover {
|
|
|
|
border-color: #B97DF2;
|
|
|
|
background-color: rgba(185, 125, 242, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button:disabled, .button[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button:active {
|
|
|
|
background-color: rgba(185, 125, 242, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button--primary {
|
|
|
|
border-color: rgba(185, 125, 242, 0.8);
|
|
|
|
background-color: rgba(185, 125, 242, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.button--primary:focus, .button--primary:hover {
|
|
|
|
border-color: #B97DF2;
|
|
|
|
background-color: rgba(185, 125, 242, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button--primary:disabled, .button--primary[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button--primary:active {
|
|
|
|
background-color: rgba(185, 125, 242, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button--secondary {
|
|
|
|
border-color: rgba(23, 214, 232, 0.8);
|
|
|
|
background-color: rgba(23, 214, 232, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.button--secondary:focus, .button--secondary:hover {
|
|
|
|
border-color: #17D6E8;
|
|
|
|
background-color: rgba(23, 214, 232, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button--secondary:disabled, .button--secondary[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button--secondary:active {
|
|
|
|
background-color: rgba(23, 214, 232, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button--tertiary {
|
|
|
|
border-color: rgba(242, 242, 242, 0.8);
|
|
|
|
background-color: rgba(242, 242, 242, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.button--tertiary:focus, .button--tertiary:hover {
|
|
|
|
border-color: #F2F2F2;
|
|
|
|
background-color: rgba(242, 242, 242, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button--tertiary:disabled, .button--tertiary[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button--tertiary:active {
|
|
|
|
background-color: rgba(242, 242, 242, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button--success {
|
|
|
|
border-color: rgba(69, 208, 67, 0.8);
|
|
|
|
background-color: rgba(69, 208, 67, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.button--success:focus, .button--success:hover {
|
|
|
|
border-color: #45D043;
|
|
|
|
background-color: rgba(69, 208, 67, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button--success:disabled, .button--success[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button--success:active {
|
|
|
|
background-color: rgba(69, 208, 67, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button--error {
|
|
|
|
border-color: rgba(248, 96, 57, 0.8);
|
|
|
|
background-color: rgba(248, 96, 57, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.button--error:focus, .button--error:hover {
|
|
|
|
border-color: #F86039;
|
|
|
|
background-color: rgba(248, 96, 57, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button--error:disabled, .button--error[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button--error:active {
|
|
|
|
background-color: rgba(248, 96, 57, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button--warning {
|
|
|
|
border-color: rgba(233, 205, 53, 0.8);
|
|
|
|
background-color: rgba(233, 205, 53, 0.05);
|
|
|
|
color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.button--warning:focus, .button--warning:hover {
|
|
|
|
border-color: #E9CD35;
|
|
|
|
background-color: rgba(233, 205, 53, 0.3);
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.button--warning:disabled, .button--warning[disabled] {
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
}
|
|
|
|
.button--warning:active {
|
|
|
|
background-color: rgba(233, 205, 53, 0.2);
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.button:not([disabled]) {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.button:disabled, .button[disabled] {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
.button__label {
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
<button
|
|
|
|
class="icon-button icon-button--error"
|
|
|
|
>
|
|
|
|
<svg src="icons/Trash.svg" />
|
|
|
|
</button>
|
|
|
|
*/
|
|
|
|
.icon-button {
|
|
|
|
color: #CCCCCC;
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 53.8dp;
|
|
|
|
min-width: 53.8dp;
|
|
|
|
max-width: 53.8dp;
|
|
|
|
height: 53.8dp;
|
|
|
|
min-height: 53.8dp;
|
|
|
|
max-height: 53.8dp;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-radius: 26.9dp;
|
|
|
|
border-color: rgba(0, 0, 0, 0);
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
}
|
|
|
|
.icon-button svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.icon-button svg {
|
|
|
|
transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
}
|
|
|
|
.icon-button:focus, .icon-button:hover {
|
|
|
|
color: #F2F2F2;
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.icon-button:focus svg, .icon-button:hover svg {
|
|
|
|
image-color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.icon-button:active {
|
|
|
|
color: rgb(244.6, 244.6, 244.6);
|
|
|
|
background-color: rgba(255, 255, 255, 0.1);
|
|
|
|
}
|
|
|
|
.icon-button:active svg {
|
|
|
|
image-color: rgb(244.6, 244.6, 244.6);
|
|
|
|
}
|
|
|
|
.icon-button:disabled, .icon-button[disabled] {
|
|
|
|
color: #CCCCCC;
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
.icon-button:disabled svg, .icon-button[disabled] svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.icon-button:not([disabled]) {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.icon-button svg {
|
|
|
|
width: 32dp;
|
|
|
|
height: 32dp;
|
|
|
|
}
|
|
|
|
.icon-button--primary {
|
|
|
|
border-color: rgba(185, 125, 242, 0.8);
|
|
|
|
background-color: rgba(185, 125, 242, 0.05);
|
|
|
|
}
|
|
|
|
.icon-button--primary:focus, .icon-button--primary:hover {
|
|
|
|
border-color: #B97DF2;
|
|
|
|
background-color: rgba(185, 125, 242, 0.3);
|
|
|
|
}
|
|
|
|
.icon-button--primary:active {
|
|
|
|
background-color: rgba(185, 125, 242, 0.2);
|
|
|
|
}
|
|
|
|
.icon-button--secondary {
|
|
|
|
border-color: rgba(23, 214, 232, 0.8);
|
|
|
|
background-color: rgba(23, 214, 232, 0.05);
|
|
|
|
}
|
|
|
|
.icon-button--secondary:focus, .icon-button--secondary:hover {
|
|
|
|
border-color: #17D6E8;
|
|
|
|
background-color: rgba(23, 214, 232, 0.3);
|
|
|
|
}
|
|
|
|
.icon-button--secondary:active {
|
|
|
|
background-color: rgba(23, 214, 232, 0.2);
|
|
|
|
}
|
|
|
|
.icon-button--tertiary {
|
|
|
|
border-color: rgba(242, 242, 242, 0.8);
|
|
|
|
background-color: rgba(242, 242, 242, 0.05);
|
|
|
|
}
|
|
|
|
.icon-button--tertiary:focus, .icon-button--tertiary:hover {
|
|
|
|
border-color: #F2F2F2;
|
|
|
|
background-color: rgba(242, 242, 242, 0.3);
|
|
|
|
}
|
|
|
|
.icon-button--tertiary:active {
|
|
|
|
background-color: rgba(242, 242, 242, 0.2);
|
|
|
|
}
|
|
|
|
.icon-button--success {
|
|
|
|
border-color: rgba(69, 208, 67, 0.8);
|
|
|
|
background-color: rgba(69, 208, 67, 0.05);
|
|
|
|
}
|
|
|
|
.icon-button--success:focus, .icon-button--success:hover {
|
|
|
|
border-color: #45D043;
|
|
|
|
background-color: rgba(69, 208, 67, 0.3);
|
|
|
|
}
|
|
|
|
.icon-button--success:active {
|
|
|
|
background-color: rgba(69, 208, 67, 0.2);
|
|
|
|
}
|
|
|
|
.icon-button--error {
|
|
|
|
border-color: rgba(248, 96, 57, 0.8);
|
|
|
|
background-color: rgba(248, 96, 57, 0.05);
|
|
|
|
}
|
|
|
|
.icon-button--error:focus, .icon-button--error:hover {
|
|
|
|
border-color: #F86039;
|
|
|
|
background-color: rgba(248, 96, 57, 0.3);
|
|
|
|
}
|
|
|
|
.icon-button--error:active {
|
|
|
|
background-color: rgba(248, 96, 57, 0.2);
|
|
|
|
}
|
|
|
|
.icon-button--warning {
|
|
|
|
border-color: rgba(233, 205, 53, 0.8);
|
|
|
|
background-color: rgba(233, 205, 53, 0.05);
|
|
|
|
}
|
|
|
|
.icon-button--warning:focus, .icon-button--warning:hover {
|
|
|
|
border-color: #E9CD35;
|
|
|
|
background-color: rgba(233, 205, 53, 0.3);
|
|
|
|
}
|
|
|
|
.icon-button--warning:active {
|
|
|
|
background-color: rgba(233, 205, 53, 0.2);
|
|
|
|
}
|
|
|
|
|
|
|
|
.launcher {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: row;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
background-color: #08070D;
|
|
|
|
}
|
|
|
|
|
|
|
|
.launcher__vertical-split {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 50%;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
.launcher__vertical-split--right {
|
|
|
|
right: 0;
|
|
|
|
left: 50%;
|
|
|
|
align-items: flex-end;
|
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes slide-mm-bg-over {
|
|
|
|
0% {
|
|
|
|
transform: translateX(100dp);
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
transform: translateX(0dp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.launcher__background-wrapper {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: -55vw;
|
|
|
|
right: -100%;
|
|
|
|
bottom: -50vw;
|
|
|
|
left: -70vw;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
transform: translateX(0dp);
|
|
|
|
animation: 25s cubic-out 1 slide-mm-bg-over;
|
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes fade-mm-in {
|
|
|
|
0% {
|
|
|
|
opacity: 0;
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
opacity: 0.1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.launcher__background-mm {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
width: auto;
|
|
|
|
height: 100%;
|
|
|
|
animation: 2.5s cubic-in-out 1 fade-mm-in;
|
|
|
|
opacity: 0.1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.launcher__title-quadrant {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding-top: 96dp;
|
|
|
|
padding-left: 96dp;
|
|
|
|
}
|
|
|
|
.launcher__title-quadrant--right {
|
|
|
|
padding-right: 96dp;
|
|
|
|
padding-left: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.launcher__content-quadrant {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-end;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
padding: 32dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
Example layout:
|
|
|
|
<button class="menu-list-item menu-list-item--right">
|
|
|
|
<div class="menu-list-item__bullet">•</div>
|
|
|
|
<div class="menu-list-item__label">Setup controls</div>
|
|
|
|
</button>
|
|
|
|
- Variants:
|
|
|
|
.menu-list-item--right (align to right side)
|
|
|
|
- Optional:
|
|
|
|
- <div class="subtitle-title__disclaimer">Coming Soon™</div>
|
|
|
|
|
|
|
|
*/
|
|
|
|
.menu-list-item {
|
|
|
|
color: #CCCCCC;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
padding: 16dp;
|
|
|
|
border-radius: 8dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.menu-list-item svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.menu-list-item--right {
|
|
|
|
flex-direction: row-reverse;
|
|
|
|
align-content: flex-end;
|
|
|
|
}
|
|
|
|
.menu-list-item--right .menu-list-item__bullet {
|
|
|
|
margin-left: 12dp;
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
.menu-list-item--right.menu-list-item:focus:not(:disabled, [disabled]), .menu-list-item--right.menu-list-item:hover:not(:disabled, [disabled]) {
|
|
|
|
decorator: horizontal-gradient(#7A2AC600 #DABAF714);
|
|
|
|
}
|
|
|
|
.menu-list-item:focus:not(:disabled, [disabled]), .menu-list-item:hover:not(:disabled, [disabled]) {
|
|
|
|
color: #B97DF2;
|
|
|
|
decorator: horizontal-gradient(#7A2AC614 #DABAF700);
|
|
|
|
}
|
|
|
|
.menu-list-item:focus:not(:disabled, [disabled]) svg, .menu-list-item:hover:not(:disabled, [disabled]) svg {
|
|
|
|
image-color: #B97DF2;
|
|
|
|
}
|
|
|
|
.menu-list-item:focus:not(:disabled, [disabled]) .menu-list-item__bullet, .menu-list-item:hover:not(:disabled, [disabled]) .menu-list-item__bullet {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
.menu-list-item:disabled, .menu-list-item[disabled] {
|
|
|
|
opacity: 0.5;
|
|
|
|
tab-index: none;
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
|
|
|
|
.menu-list-item__bullet {
|
|
|
|
margin-right: 12dp;
|
|
|
|
opacity: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
Example layout:
|
|
|
|
|
|
|
|
<button class="subtitle-title" disabled>
|
|
|
|
<h3>Zelda 64: Recompiled</h3>
|
|
|
|
<h1>Ocarina of Time</h1>
|
|
|
|
<div class="subtitle-title__disclaimer">Coming Soon™</div>
|
|
|
|
</button>
|
|
|
|
- Variants:
|
|
|
|
.subtitle-title--right (align to right side)
|
|
|
|
- Optional:
|
|
|
|
- <div class="subtitle-title__disclaimer">Coming Soon™</div>
|
|
|
|
|
|
|
|
*/
|
|
|
|
.subtitle-title {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: column;
|
|
|
|
align-content: flex-start;
|
|
|
|
align-items: flex-start;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
padding: 0;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
color: #CCCCCC;
|
|
|
|
text-align: left;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.subtitle-title--right {
|
|
|
|
align-content: flex-end;
|
|
|
|
}
|
|
|
|
.subtitle-title--right, .subtitle-title--right > * {
|
|
|
|
text-align: right;
|
|
|
|
}
|
|
|
|
.subtitle-title[selected] {
|
|
|
|
color: #F2F2F2;
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
.subtitle-title:focus:not(:disabled, [disabled]), .subtitle-title:hover:not(:disabled, [disabled], [selected]) {
|
|
|
|
color: #B97DF2;
|
|
|
|
}
|
|
|
|
.subtitle-title:disabled, .subtitle-title[disabled] {
|
|
|
|
opacity: 0.5;
|
|
|
|
cursor: default;
|
|
|
|
tab-index: none;
|
|
|
|
}
|
|
|
|
.subtitle-title h3 {
|
|
|
|
margin-bottom: 6dp;
|
|
|
|
}
|
|
|
|
.subtitle-title h1 {
|
|
|
|
margin-top: 6dp;
|
|
|
|
}
|
|
|
|
.subtitle-title__disclaimer {
|
|
|
|
margin-top: 16dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
width: 162dp;
|
|
|
|
height: 72dp;
|
|
|
|
border-radius: 36dp;
|
|
|
|
opacity: 0.9;
|
|
|
|
background: rgba(0, 0, 0, 0);
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.toggle:hover, .toggle:focus-visible, .toggle:focus {
|
|
|
|
opacity: 1;
|
|
|
|
background-color: rgba(23, 214, 232, 0.3);
|
|
|
|
}
|
|
|
|
.toggle:active {
|
|
|
|
opacity: 1;
|
|
|
|
background-color: rgba(23, 214, 232, 0.05);
|
|
|
|
}
|
|
|
|
.toggle .toggle__border {
|
|
|
|
position: absolute;
|
|
|
|
top: 1.1dp;
|
|
|
|
right: 1.1dp;
|
|
|
|
bottom: 1.1dp;
|
|
|
|
left: 1.1dp;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: #A2EFF6;
|
|
|
|
display: block;
|
|
|
|
border-radius: 36dp;
|
|
|
|
}
|
|
|
|
.toggle .toggle__floater {
|
|
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
|
|
left: 4dp;
|
|
|
|
width: 80dp;
|
|
|
|
height: 64dp;
|
|
|
|
transform: translateY(-50%);
|
|
|
|
border-radius: 32dp;
|
|
|
|
background: #25A1AD;
|
|
|
|
}
|
|
|
|
.toggle--checked .toggle__floater {
|
|
|
|
left: 78dp;
|
|
|
|
}
|
|
|
|
.toggle--checked .toggle__icon.toggle__icon--left {
|
|
|
|
opacity: 0.9;
|
|
|
|
color: #A2EFF6;
|
|
|
|
}
|
|
|
|
.toggle--checked .toggle__icon.toggle__icon--right {
|
|
|
|
opacity: 1;
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle__icons {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
|
|
right: 16dp;
|
|
|
|
left: 16dp;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
height: 56dp;
|
|
|
|
transform: translateY(-50%);
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle__icon {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 56dp;
|
|
|
|
height: 56dp;
|
|
|
|
color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.toggle__icon--right {
|
|
|
|
opacity: 1;
|
|
|
|
color: #A2EFF6;
|
|
|
|
}
|
|
|
|
|
|
|
|
.bottom-left {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
bottom: 4dp;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: flex-start;
|
|
|
|
width: 100%;
|
|
|
|
max-width: 1692.4444444444dp;
|
|
|
|
height: auto;
|
|
|
|
margin: 0 4dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.prompt__overlay {
|
|
|
|
background-color: rgba(190, 184, 219, 0.1);
|
|
|
|
pointer-events: auto;
|
|
|
|
}
|
|
|
|
.prompt__overlay, .prompt__content-wrapper {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
}
|
|
|
|
.prompt__content-wrapper {
|
|
|
|
display: flex;
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
.prompt__content {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
flex-direction: column;
|
|
|
|
width: 100%;
|
|
|
|
max-width: 700dp;
|
|
|
|
height: auto;
|
|
|
|
margin: auto;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-radius: 16dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
|
|
background: rgba(8, 7, 13, 0.9);
|
|
|
|
}
|
|
|
|
.prompt__content h3, .prompt__content p {
|
|
|
|
margin: 24dp;
|
|
|
|
}
|
|
|
|
.prompt__content p {
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
.prompt__controls {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
justify-content: center;
|
|
|
|
padding: 24dp 12dp;
|
|
|
|
border-top-width: 1.1dp;
|
|
|
|
border-top-color: rgba(255, 255, 255, 0.1);
|
|
|
|
}
|
|
|
|
.prompt__controls .button {
|
|
|
|
min-width: 233.3333333333dp;
|
|
|
|
margin: 0 12dp;
|
|
|
|
text-align: center;
|
|
|
|
nav-up: none;
|
|
|
|
nav-down: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
width: 100%;
|
|
|
|
max-height: 100%;
|
|
|
|
padding: 8dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug__scroll {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
width: 100%;
|
|
|
|
max-height: 100%;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug-option {
|
|
|
|
color: #CCCCCC;
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out;
|
|
|
|
border-bottom-width: 1.1dp;
|
|
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: column;
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
padding: 12dp 4dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
}
|
|
|
|
.config-debug-option svg {
|
|
|
|
image-color: #CCCCCC;
|
|
|
|
}
|
|
|
|
.config-debug-option svg {
|
|
|
|
transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
}
|
|
|
|
.config-debug-option:focus:not(:disabled, [disabled]), .config-debug-option:focus-visible:not(:disabled, [disabled]), .config-debug-option:hover:not(:disabled, [disabled]) {
|
|
|
|
color: #F2F2F2;
|
|
|
|
background-color: rgba(190, 184, 219, 0.1);
|
|
|
|
}
|
|
|
|
.config-debug-option:focus:not(:disabled, [disabled]) svg, .config-debug-option:focus-visible:not(:disabled, [disabled]) svg, .config-debug-option:hover:not(:disabled, [disabled]) svg {
|
|
|
|
image-color: #F2F2F2;
|
|
|
|
}
|
|
|
|
.config-debug-option:disabled, .config-debug-option[disabled] {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
.config-debug-option .icon-button {
|
|
|
|
margin-left: 8dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug__option-split {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug-option__label {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
padding: 4dp 16dp 12dp;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug__option-controls {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
flex: 1 1 auto;
|
|
|
|
height: auto;
|
|
|
|
width: auto;
|
|
|
|
max-width: 800dp;
|
|
|
|
padding: 0 12dp;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug__option-trigger {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.config-debug__select-wrapper {
|
|
|
|
display: flex;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
max-width: 800dp;
|
|
|
|
height: auto;
|
|
|
|
padding: 4dp;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper .config-debug__select-label {
|
|
|
|
padding-right: 16dp;
|
|
|
|
flex: auto;
|
|
|
|
width: 196dp;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper .config-debug__select-label > div {
|
|
|
|
display: inline;
|
|
|
|
width: auto;
|
|
|
|
height: auto;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper input {
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
box-sizing: border-box;
|
|
|
|
padding: 0;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
height: 20dp;
|
|
|
|
margin: auto 0;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out, opacity 0.05s linear-in-out, border-color 0.05s linear-in-out;
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.5);
|
|
|
|
display: block;
|
|
|
|
position: relative;
|
|
|
|
box-sizing: border-box;
|
|
|
|
padding: 0;
|
|
|
|
flex: 1 1 100%;
|
|
|
|
width: auto;
|
|
|
|
height: 48dp;
|
|
|
|
border-radius: 12dp;
|
|
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
|
|
cursor: pointer;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
padding: 14dp;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select svg {
|
|
|
|
transition: image-color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select:hover, .config-debug__select-wrapper select:focus {
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.8);
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select selectvalue {
|
|
|
|
display: inline;
|
|
|
|
margin: auto 0;
|
|
|
|
height: auto;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select selectbox {
|
|
|
|
border-width: 1.1dp;
|
|
|
|
border-color: rgba(255, 255, 255, 0.8);
|
|
|
|
background-color: #191622;
|
|
|
|
padding: 4dp 0;
|
|
|
|
margin-top: 2dp;
|
|
|
|
border-radius: 12dp;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select selectbox option {
|
|
|
|
transition: color 0.05s linear-in-out, background-color 0.05s linear-in-out;
|
|
|
|
padding: 8dp 12dp;
|
|
|
|
background-color: rgba(0, 0, 0, 0);
|
|
|
|
color: #CCCCCC;
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select selectbox option:hover, .config-debug__select-wrapper select selectbox option:focus {
|
|
|
|
background-color: rgba(255, 255, 255, 0.2);
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select selectbox option:hover:not(:checked) {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.config-debug__select-wrapper select selectbox option:checked {
|
|
|
|
color: #FFFFFF;
|
|
|
|
background-color: rgba(255, 255, 255, 0.05);
|
|
|
|
}
|
|
|
|
|
|
|
|
body {
|
|
|
|
box-sizing: border-box;
|
|
|
|
color: #F2F2F2;
|
|
|
|
font-family: chiaro;
|
|
|
|
}
|
|
|
|
|
|
|
|
.rmlui-window {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
.rmlui-window--hidden {
|
|
|
|
opacity: 0;
|
|
|
|
}
|
|
|
|
.rmlui-window:not([mouse-active]) {
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
*, *:before, *:after {
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
button {
|
|
|
|
background-color: #7A2AC6;
|
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes blue-pulse {
|
|
|
|
0% {
|
|
|
|
color: #17D6E8;
|
|
|
|
}
|
|
|
|
50% {
|
|
|
|
color: #A2EFF6;
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
color: #17D6E8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@keyframes blue-pulse-with-border {
|
|
|
|
0% {
|
|
|
|
border-color: #17D6E8;
|
|
|
|
color: #17D6E8;
|
|
|
|
}
|
|
|
|
50% {
|
|
|
|
border-color: #A2EFF6;
|
|
|
|
color: #A2EFF6;
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
border-color: #17D6E8;
|
|
|
|
color: #17D6E8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@keyframes blue-pulse-background {
|
|
|
|
0% {
|
|
|
|
background-color: #17D6E8;
|
|
|
|
}
|
|
|
|
50% {
|
|
|
|
background-color: #A2EFF6;
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
background-color: #17D6E8;
|
|
|
|
}
|
|
|
|
}
|