refactor: prefer css vars over sass (#6287)

* chore: prefer calc() over sass math module

* chore: remove unused mixins

* refactor: use css variables for symbolic color names

* refactor: use range syntax for media queries

* refactor: use css variables for symbolic dimensions, units

* refactor: use css variables for symbolic url names

* refactor: use css variables for mime icon urls

* fixup! refactor: use css variables for symbolic dimensions, units

* refactor: replace mime-icon mixin with css variables

* ci: run apt-update before apt-install
This commit is contained in:
Charles Kerr 2023-11-24 11:01:00 -06:00 committed by GitHub
parent d8c2074cb7
commit 036725df42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 251 additions and 292 deletions

View File

@ -62,6 +62,7 @@ jobs:
- name: Get dependencies - name: Get dependencies
run: | run: |
set -e # abort if any command fails set -e # abort if any command fails
sudo apt-get update
sudo apt-get install -y npm sudo apt-get install -y npm
- name: Check for style diffs - name: Check for style diffs
id: check-for-diffs id: check-for-diffs

View File

@ -1,202 +1,206 @@
@use 'sass:color';
@use 'sass:math';
// Colors related to torrent status
$blue-100: #51b3f7;
$blue-200: #357aaa;
$blue-300: #2c7fea;
$blue-400: #1847d4;
$green-100: #26aa55;
$green-300: #7cef99;
$green-400: #67c87f;
$green-500: #34dc70;
$grey-200: #e1e4e8;
$grey-500: #828282;
$grey-900: #191919;
$red-500: #d73a49;
$white: #fff;
$black: #000;
$dark-mode-white: #c9d1d9;
$yellow-300: #ffea7f;
$grey-40: #666;
$nice-grey: #f8f8f8;
$dark-mode-black: #121212;
$default-accent-color-dark: #0c2d6b;
$default-border-dark: #575757;
$default-border-light: #aeaeae;
$default-tinted: rgba(128, 128, 144, 0.125);
// Z-INDEX ENUM
// $z-index-progressbar: 1;
$z-index-popup: 2;
// ICONS -- see assets/img/README.md for sources and license details
// Are you a designer? New icon PRs welcomed!
$image-alt-speed-disabled: '../img/modern-tortoise.png';
$image-alt-speed-enabled: '../img/modern-tortoise-blue.png';
$image-baseline: '../img/horizontal-rule.svg';
$image-chevron-dn: '../img/chevron-down.svg';
$image-chevron-up: '../img/chevron-up.svg';
$image-lock-fill: '../img/lock-fill.svg';
$image-magnet: '../img/magnet.svg';
$image-pause-circle-active: '../img/pause-circle-active.svg';
$image-pause-circle-idle: '../img/pause-circle-idle.svg';
$image-play-circle-active: '../img/play-circle-active.svg';
$image-play-circle-idle: '../img/play-circle-idle.svg';
/// MIXINS /// MIXINS
@mixin for-phone-only { @mixin for-phone-only {
@media (max-width: 599px) { @media (width < 600px) {
@content; @content;
} }
} }
@mixin for-tablet-portrait-up { @mixin for-tablet-portrait-up {
@media (min-width: 600px) { @media (width >= 600px) {
@content; @content;
} }
} }
@mixin button {
border: 1px solid var(--color-border);
cursor: pointer;
display: inline-block;
padding: 3px;
user-select: none;
-webkit-user-select: none;
}
/// GLOBAL
:root { :root {
/* z-index enum */
--z-index-popup: 2;
/* various dimensions */
--dialog-logo-padding: calc(var(--dialog-padding) * 0.66);
--dialog-padding: 20px;
--logo-size: 64px;
--pauseresume-size: 20px;
--popup-top: 51px; // TODO: ugly that this is hardcoded
--progressbar-border: 1px;
--progressbar-height: 20px;
--toolbar-height: 50px;
/* colors related to torrent status */
--black: #000;
--blue-100: #51b3f7;
--blue-200: #357aaa;
--blue-300: #2c7fea;
--blue-400: #1847d4;
--dark-mode-black: #121212;
--dark-mode-white: #c9d1d9;
--default-accent-color-dark: #0c2d6b;
--default-border-dark: #575757;
--default-border-light: #aeaeae;
--default-tinted: rgba(128, 128, 144, 0.125);
--green-100: #26aa55;
--green-300: #7cef99;
--green-400: #67c87f;
--green-500: #34dc70;
--grey-200: #e1e4e8;
--grey-40: #666;
--grey-500: #828282;
--grey-900: #191919;
--nice-grey: #f8f8f8;
--red-500: #d73a49;
--white: #fff;
--yellow-300: #ffea7f;
/* ICONS -- see assets/img/README.md for sources and license details */
/* Are you a designer? New icon PRs welcomed! */
--image-alt-speed-disabled: url('../img/modern-tortoise.png');
--image-alt-speed-enabled: url('../img/modern-tortoise-blue.png');
--image-baseline: url('../img/horizontal-rule.svg');
--image-chevron-dn: url('../img/chevron-down.svg');
--image-chevron-up: url('../img/chevron-up.svg');
--image-lock-fill: url('../img/lock-fill.svg');
--image-magnet: url('../img/magnet.svg');
--image-pause-circle-active: url('../img/pause-circle-active.svg');
--image-pause-circle-idle: url('../img/pause-circle-idle.svg');
--image-play-circle-active: url('../img/play-circle-active.svg');
--image-play-circle-idle: url('../img/play-circle-idle.svg');
--app-image-url: url('../img/box.svg');
--audio-image-url: url('../img/music.svg');
--folder-image-url: url('../img/folder.svg');
--font-image-url: url('../img/type.svg');
--image-image-url: url('../img/image.svg');
--package-image-url: url('../img/package.svg');
--text-image-url: url('../img/file-text.svg');
--video-image-url: url('../img/film.svg');
--progress: 100%; --progress: 100%;
--color-fg-error: #{$red-500}; --color-fg-error: var(--red-500);
--color-fg-port-closed: #{$red-500}; --color-fg-port-closed: var(--red-500);
--color-fg-port-open: #{$green-100}; --color-fg-port-open: var(--green-100);
--color-progressbar-background-2: #{$green-400}; --color-progressbar-background-2: var(--green-400);
--color-progressbar-verify: #{$yellow-300}; --color-progressbar-verify: var(--yellow-300);
--color-progressbar-magnet: #{$yellow-300}; --color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: #{$grey-200}; --color-progressbar-paused: var(--grey-200);
--color-progressbar-leech: #{$blue-200}; --color-progressbar-leech: var(--blue-200);
--color-progressbar-queued: #{$blue-400}; --color-progressbar-queued: var(--blue-400);
--color-bg-even: #{$default-tinted}; --color-bg-even: var(--default-tinted);
--color-toolbar-background: #{$default-tinted}; --color-toolbar-background: var(--default-tinted);
--color-bg-tabs: #{$default-tinted}; --color-bg-tabs: var(--default-tinted);
color-scheme: light dark; color-scheme: light dark;
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
--color-bg-odd: #{$black}; --color-bg-odd: var(--black);
--color-bg-primary: #{$black}; --color-bg-primary: var(--black);
--color-bg-popup: #{$black}; --color-bg-popup: var(--black);
--color-bg-hover: #{$grey-40}; --color-bg-hover: var(--grey-40);
--color-fg-primary: #{$dark-mode-white}; --color-fg-primary: var(--dark-mode-white);
--color-fg-secondary: #{$nice-grey}; --color-fg-secondary: var(--nice-grey);
--color-fg-on-popup: #{$nice-grey}; --color-fg-on-popup: var(--nice-grey);
--color-fg-disabled: #808088; --color-fg-disabled: #808088;
--color-bg-warn: #cf6679; --color-bg-warn: #cf6679;
--color-fg-warn: #{$dark-mode-black}; --color-fg-warn: var(--dark-mode-black);
--color-border: #{$dark-mode-white}; --color-border: var(--dark-mode-white);
--color-border-selected: #{$grey-500}; --color-border-selected: var(--grey-500);
--color-fg-tertiary: #{$grey-500}; --color-fg-tertiary: var(--grey-500);
--color-bg-selected: #{$default-accent-color-dark}; --color-bg-selected: var(--default-accent-color-dark);
--color-default-border: #{$default-border-dark}; --color-default-border: var(--default-border-dark);
--color-progressbar-seed-1: #{$green-100}; --color-progressbar-seed-1: var(--green-100);
--color-progressbar-seed-2: #{$green-400}; --color-progressbar-seed-2: var(--green-400);
--color-progressbar-paused: #{$grey-500}; --color-progressbar-paused: var(--grey-500);
--color-progressbar-leech: #{$blue-200}; --color-progressbar-leech: var(--blue-200);
--color-progressbar-seed-paused: #{$grey-500}; --color-progressbar-seed-paused: var(--grey-500);
.contrast-more { .contrast-more {
--color-fg-error: #{$red-500}; --color-fg-error: var(--red-500);
--color-fg-port-closed: #{$red-500}; --color-fg-port-closed: var(--red-500);
--color-fg-port-open: #{$green-100}; --color-fg-port-open: var(--green-100);
--color-bg-hover: #{$grey-40}; --color-bg-hover: var(--grey-40);
--color-fg-primary: #{$white}; --color-fg-primary: var(--white);
--color-bg-even: #{$black}; --color-bg-even: var(--black);
--color-fg-secondary: #{$white}; --color-fg-secondary: var(--white);
--color-fg-on-popup: #{$white}; --color-fg-on-popup: var(--white);
--color-fg-disabled: #{$white}; --color-fg-disabled: var(--white);
--color-bg-warn: #cf6679; --color-bg-warn: #cf6679;
--color-fg-warn: #{$black}; --color-fg-warn: var(--black);
--color-border: #{$white}; --color-border: var(--white);
--color-border-selected: #{$white}; --color-border-selected: var(--white);
--color-fg-tertiary: #{$white}; --color-fg-tertiary: var(--white);
--color-toolbar-background: #{$black}; --color-toolbar-background: var(--black);
--color-bg-selected: #{$blue-300}; --color-bg-selected: var(--blue-300);
--color-bg-tabs: #{$black}; --color-bg-tabs: var(--black);
--color-fg-tabs: #{$white}; --color-fg-tabs: var(--white);
--color-default-border: #{$white}; --color-default-border: var(--white);
--color-progressbar-seed-1: #{$black}; --color-progressbar-seed-1: var(--black);
--color-progressbar-seed-2: #{$white}; --color-progressbar-seed-2: var(--white);
--color-progressbar-seed-paused: #{$grey-500}; --color-progressbar-seed-paused: var(--grey-500);
--color-progressbar-background-2: #{$white}; --color-progressbar-background-2: var(--white);
--color-progressbar-verify: #{$yellow-300}; --color-progressbar-verify: var(--yellow-300);
--color-progressbar-magnet: #{$yellow-300}; --color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: #{$grey-500}; --color-progressbar-paused: var(--grey-500);
--color-progressbar-leech: #{$blue-200}; --color-progressbar-leech: var(--blue-200);
--color-progressbar-queued: #{$blue-400}; --color-progressbar-queued: var(--blue-400);
} }
} }
@media (prefers-color-scheme: light) { @media (prefers-color-scheme: light) {
--color-bg-odd: #{$white}; --color-bg-odd: var(--white);
--color-bg-primary: #{$white}; --color-bg-primary: var(--white);
--color-bg-popup: #{$white}; --color-bg-popup: var(--white);
--color-fg-error: #{$red-500}; --color-fg-error: var(--red-500);
--color-fg-port-closed: #{$red-500}; --color-fg-port-closed: var(--red-500);
--color-fg-port-open: #{$green-400}; --color-fg-port-open: var(--green-400);
--color-progressbar-verify: #{$yellow-300}; --color-progressbar-verify: var(--yellow-300);
--color-progressbar-magnet: #{$yellow-300}; --color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: #{$grey-200}; --color-progressbar-paused: var(--grey-200);
--color-progressbar-leech: #{$blue-100}; --color-progressbar-leech: var(--blue-100);
--color-progressbar-queued: #{$blue-400}; --color-progressbar-queued: var(--blue-400);
--color-bg-hover: #{$nice-grey}; --color-bg-hover: var(--nice-grey);
--color-fg-primary: #404040; --color-fg-primary: #404040;
--color-fg-on-popup: #{$grey-900}; --color-fg-on-popup: var(--grey-900);
--color-fg-secondary: #{$grey-500}; --color-fg-secondary: var(--grey-500);
--color-border: #{$grey-500}; --color-border: var(--grey-500);
--color-border-selected: #d0d7de; --color-border-selected: #d0d7de;
--color-fg-tertiary: #{$grey-500}; --color-fg-tertiary: var(--grey-500);
--color-bg-warn: #e4606d5b; --color-bg-warn: #e4606d5b;
--color-fg-warn: #cf212e; --color-fg-warn: #cf212e;
--color-fg-disabled: #{$grey-500}; --color-fg-disabled: var(--grey-500);
--color-bg-selected: #{$blue-300}; --color-bg-selected: var(--blue-300);
--color-default-border: #{$default-border-light}; --color-default-border: var(--default-border-light);
--color-dialog-border: #{$nice-grey}; --color-dialog-border: var(--nice-grey);
--color-progressbar-seed-1: #{$green-500}; --color-progressbar-seed-1: var(--green-500);
--color-progressbar-seed-2: #{$green-300}; --color-progressbar-seed-2: var(--green-300);
--color-progressbar-seed-paused: #{$grey-200}; --color-progressbar-seed-paused: var(--grey-200);
.contrast-more { .contrast-more {
--color-fg-error: #{$red-500}; --color-fg-error: var(--red-500);
--color-fg-port-closed: #{$red-500}; --color-fg-port-closed: var(--red-500);
--color-fg-port-open: #{$green-400}; --color-fg-port-open: var(--green-400);
--color-bg-hover: #{$grey-40}; --color-bg-hover: var(--grey-40);
--color-fg-primary: #{$black}; --color-fg-primary: var(--black);
--color-bg-even: #{$white}; --color-bg-even: var(--white);
--color-fg-secondary: #{$black}; --color-fg-secondary: var(--black);
--color-fg-on-popup: #{$black}; --color-fg-on-popup: var(--black);
--color-fg-disabled: #{$black}; --color-fg-disabled: var(--black);
--color-bg-warn: #cf6679; --color-bg-warn: #cf6679;
--color-fg-warn: #{$white}; --color-fg-warn: var(--white);
--color-border: #{$black}; --color-border: var(--black);
--color-border-selected: #{$black}; --color-border-selected: var(--black);
--color-fg-tertiary: #{$black}; --color-fg-tertiary: var(--black);
--color-toolbar-background: #{$white}; --color-toolbar-background: var(--white);
--color-bg-selected: #{$blue-300}; --color-bg-selected: var(--blue-300);
--color-bg-tabs: #{$white}; --color-bg-tabs: var(--white);
--color-fg-tabs: #{$black}; --color-fg-tabs: var(--black);
--color-default-border: #{$black}; --color-default-border: var(--black);
--color-progressbar-seed-1: #{$black}; --color-progressbar-seed-1: var(--black);
--color-progressbar-seed-2: #{$white}; --color-progressbar-seed-2: var(--white);
--color-progressbar-seed-paused: #{$grey-500}; --color-progressbar-seed-paused: var(--grey-500);
--color-progressbar-background-2: #{$white}; --color-progressbar-background-2: var(--white);
--color-progressbar-verify: #{$yellow-300}; --color-progressbar-verify: var(--yellow-300);
--color-progressbar-magnet: #{$yellow-300}; --color-progressbar-magnet: var(--yellow-300);
--color-progressbar-paused: #{$grey-500}; --color-progressbar-paused: var(--grey-500);
--color-progressbar-leech: #{$blue-200}; --color-progressbar-leech: var(--blue-200);
--color-progressbar-queued: #{$blue-400}; --color-progressbar-queued: var(--blue-400);
} }
} }
} }
@ -266,16 +270,13 @@ a {
/// TOOLBAR /// TOOLBAR
$toolbar-height-number: 50;
$toolbar-height: $toolbar-height-number * 1px;
#mainwin-toolbar { #mainwin-toolbar {
align-items: center; align-items: center;
background: var(--color-toolbar-background); background: var(--color-toolbar-background);
border-bottom: 1px solid var(--color-default-border); border-bottom: 1px solid var(--color-default-border);
display: flex; display: flex;
flex-direction: row; flex-direction: row;
height: $toolbar-height; height: var(--toolbar-height);
margin: 0; margin: 0;
width: 100%; width: 100%;
@ -286,11 +287,11 @@ $toolbar-height: $toolbar-height-number * 1px;
border: 0; border: 0;
border-radius: 5px; border-radius: 5px;
cursor: pointer; cursor: pointer;
height: $toolbar-height; height: var(--toolbar-height);
margin-right: 6px; margin-right: 6px;
user-select: none; user-select: none;
-webkit-user-select: none; -webkit-user-select: none;
width: $toolbar-height; width: var(--toolbar-height);
svg { svg {
stroke: var(--color-fg-primary); stroke: var(--color-fg-primary);
@ -339,7 +340,7 @@ $toolbar-height: $toolbar-height-number * 1px;
} }
&.alt-speed-enabled { &.alt-speed-enabled {
background-image: url($image-alt-speed-enabled); background-image: var(--image-alt-speed-enabled);
background-position: bottom left; background-position: bottom left;
background-size: 20px; background-size: 20px;
} }
@ -377,14 +378,12 @@ $toolbar-height: $toolbar-height-number * 1px;
} }
} }
$speed-icon-size: 20px;
.speed-up-icon, .speed-up-icon,
.speed-dn-icon { .speed-dn-icon {
fill: var(--color-fg-primary); fill: var(--color-fg-primary);
svg { svg {
width: $speed-icon-size; width: 20px;
} }
} }
@ -395,12 +394,6 @@ $speed-icon-size: 20px;
/// TORRENT CONTAINER /// TORRENT CONTAINER
$pauseresume-size-number: 20;
$pauseresume-size: $pauseresume-size-number * 1px;
$progressbar-border: 1;
$progressbar-height: 20;
$popup-top: 51px; // TODO: ugly that this is hardcoded
.flexible-space { .flexible-space {
margin-right: auto; margin-right: auto;
} }
@ -415,48 +408,7 @@ $popup-top: 51px; // TODO: ugly that this is hardcoded
} }
.torrent-container { .torrent-container {
background-color: $white; background-color: var(--white);
}
$app-image: '../img/box.svg';
$audio-image: '../img/music.svg';
$folder-image: '../img/folder.svg';
$font-image: '../img/type.svg';
$image-image: '../img/image.svg';
$package-image: '../img/package.svg';
$text-image: '../img/file-text.svg';
$video-image: '../img/film.svg';
@mixin mime-icon-compact($mime-icon) {
&[data-icon-multifile='true'] {
background-image: url($folder-image);
background-position: center;
background-size: 16px;
}
}
@mixin mime-icon($mime-icon) {
// background-image: url($mime-icon);
background-color: var(--color-fg-primary);
-webkit-mask-image: url($mime-icon);
mask-image: url($mime-icon);
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
&[data-icon-multifile='true'] {
-webkit-mask-image: url($mime-icon), url($folder-image);
mask-image: url($mime-icon), url($folder-image);
-webkit-mask-position:
top left,
bottom right;
mask-position:
top left,
bottom right;
-webkit-mask-repeat: no-repeat, no-repeat;
mask-repeat: no-repeat, no-repeat;
-webkit-mask-size: 16px, 16px;
mask-size: 16px, 16px;
}
} }
.torrent-list { .torrent-list {
@ -486,33 +438,52 @@ $video-image: '../img/film.svg';
background-position: background-position:
center, center,
top left; top left;
-webkit-mask-image: var(--mime-icon-url);
-webkit-mask-repeat: no-repeat;
mask-image: var(--mime-icon-url);
mask-repeat: no-repeat;
&[data-icon-multifile='true'] {
-webkit-mask-image: var(--mime-icon-url), var(--folder-image-url);
-webkit-mask-position:
top left,
bottom right;
-webkit-mask-repeat: no-repeat, no-repeat;
-webkit-mask-size: 16px, 16px;
mask-image: var(--mime-icon-url), var(--folder-image-url);
mask-position:
top left,
bottom right;
mask-repeat: no-repeat, no-repeat;
mask-size: 16px, 16px;
}
&[data-icon-mime-type='audio'] { &[data-icon-mime-type='audio'] {
@include mime-icon($audio-image); --mime-icon-url: var(--audio-image-url);
} }
&[data-icon-mime-type='application'] { &[data-icon-mime-type='application'] {
@include mime-icon($app-image); --mime-icon-url: var(--app-image-url);
} }
&[data-icon-mime-type='font'] { &[data-icon-mime-type='font'] {
@include mime-icon($font-image); --mime-icon-url: var(--font-image-url);
} }
&[data-icon-mime-type='image'] { &[data-icon-mime-type='image'] {
@include mime-icon($image-image); --mime-icon-url: var(--image-image-url);
} }
&[data-icon-mime-type='model'] { &[data-icon-mime-type='model'] {
@include mime-icon($package-image); --mime-icon-url: var(--package-image-url);
} }
&[data-icon-mime-type='text'] { &[data-icon-mime-type='text'] {
@include mime-icon($text-image); --mime-icon-url: var(--text-image-url);
} }
&[data-icon-mime-type='video'] { &[data-icon-mime-type='video'] {
@include mime-icon($video-image); --mime-icon-url: var(--video-image-url);
} }
} }
@ -569,26 +540,21 @@ $video-image: '../img/film.svg';
} }
&.compact { &.compact {
$icon-size-num: 16; --icon-size: 16px;
$icon-size: $icon-size-num * 1px;
align-items: center; align-items: center;
display: flex; display: flex;
flex-direction: row-reverse; flex-direction: row-reverse;
.icon { .icon {
-webkit-mask-size: var(--icon-size), calc(var(--icon-size) / 2);
flex-shrink: 0; flex-shrink: 0;
height: $icon-size; height: var(--icon-size);
-webkit-mask-size: mask-size: var(--icon-size), calc(var(--icon-size) / 2);
$icon-size, width: var(--icon-size);
$icon-size-num * 0.5px;
mask-size:
$icon-size,
$icon-size-num * 0.5px;
width: $icon-size;
&[data-icon-multifile='true'] { &[data-icon-multifile='true'] {
@include mime-icon($folder-image); --mime-icon-url: var(--folder-image-url);
} }
} }
@ -598,8 +564,7 @@ $video-image: '../img/film.svg';
} }
&:not(.compact) { &:not(.compact) {
$icon-size-num: 32; --icon-size: 32px;
$icon-size: $icon-size-num * 1px;
align-items: center; align-items: center;
display: grid; display: grid;
grid-column-gap: 12px; grid-column-gap: 12px;
@ -608,16 +573,14 @@ $video-image: '../img/film.svg';
'icon progress-text progress-text' 'icon progress-text progress-text'
'icon progressbar progressbar' 'icon progressbar progressbar'
'icon peers peers'; 'icon peers peers';
grid-template-columns: $icon-size auto 1fr; grid-template-columns: var(--icon-size) auto 1fr;
padding: 6px 12px; padding: 6px 12px;
.icon { .icon {
background-size: background-size: var(--icon-size), calc(var(--icon-size) / 2);
$icon-size,
$icon-size-num * 0.5px;
grid-area: icon; grid-area: icon;
height: $icon-size; height: var(--icon-size);
width: $icon-size; width: var(--icon-size);
} }
.torrent-name { .torrent-name {
@ -665,25 +628,25 @@ $video-image: '../img/film.svg';
.torrent-pauseresume-button { .torrent-pauseresume-button {
background-position: center center; background-position: center center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: $pauseresume-size; background-size: var(--pauseresume-size);
margin-left: math.floor(math.div($pauseresume-size-number, 2)) * 1px; margin-left: calc(var(--pauseresume-size) / 2);
width: $pauseresume-size; width: var(--pauseresume-size);
&[data-action='pause'] { &[data-action='pause'] {
background-image: url($image-pause-circle-idle); background-image: var(--image-pause-circle-idle);
&:active, &:active,
&:hover { &:hover {
background-image: url($image-pause-circle-active); background-image: var(--image-pause-circle-active);
} }
} }
&[data-action='resume'] { &[data-action='resume'] {
background-image: url($image-play-circle-idle); background-image: var(--image-play-circle-idle);
&:active, &:active,
&:hover { &:hover {
background-image: url($image-play-circle-active); background-image: var(--image-play-circle-active);
} }
} }
} }
@ -694,7 +657,7 @@ $video-image: '../img/film.svg';
border-radius: 3px; border-radius: 3px;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
height: ($progressbar-height - ($progressbar-border * 2)) * 1px; height: calc(var(--progressbar-height) - var(--progressbar-border) * 2);
&.full { &.full {
flex-grow: 1; flex-grow: 1;
@ -801,8 +764,8 @@ $video-image: '../img/film.svg';
background: $background-color; background: $background-color;
bottom: 0; bottom: 0;
right: 0; right: 0;
top: $popup-top; top: var(--popup-top);
z-index: $z-index-popup; z-index: var(--z-index-popup);
.tabs-page { .tabs-page {
grid-column-gap: 8px; grid-column-gap: 8px;
@ -827,7 +790,7 @@ $video-image: '../img/film.svg';
} }
.alt-speed-section-label { .alt-speed-section-label {
background: transparent url($image-alt-speed-enabled) no-repeat; background: transparent var(--image-alt-speed-enabled) no-repeat;
background-position: left; background-position: left;
background-position-y: 4px; background-position-y: 4px;
background-size: 20px; background-size: 20px;
@ -949,8 +912,8 @@ $video-image: '../img/film.svg';
flex-direction: column; flex-direction: column;
position: absolute; position: absolute;
right: 0; right: 0;
top: $popup-top; top: var(--popup-top);
z-index: $z-index-popup; z-index: var(--z-index-popup);
@include for-phone-only { @include for-phone-only {
left: 0; left: 0;
} }
@ -1062,8 +1025,8 @@ $video-image: '../img/film.svg';
border: 0; border: 0;
cursor: pointer; cursor: pointer;
height: 1rem; height: 1rem;
-webkit-mask: url($image-magnet) no-repeat center / 14px; -webkit-mask: var(--image-magnet) no-repeat center / 14px;
mask: url($image-magnet) no-repeat center / 14px; mask: var(--image-magnet) no-repeat center / 14px;
vertical-align: middle; vertical-align: middle;
width: 1rem; width: 1rem;
} }
@ -1197,9 +1160,9 @@ $video-image: '../img/film.svg';
// Peers Tab // Peers Tab
.peer-list { .peer-list {
$table-border: 1px solid var(--color-default-border); --table-border: 1px solid var(--color-default-border);
border: $table-border; border: var(--table-border);
border-collapse: collapse; border-collapse: collapse;
cursor: default; cursor: default;
table-layout: fixed; table-layout: fixed;
@ -1213,7 +1176,7 @@ $video-image: '../img/film.svg';
} }
td { td {
border: $table-border; border: var(--table-border);
color: var(--color-fg-secondary); color: var(--color-fg-secondary);
// padding: 5px 10px; // padding: 5px 10px;
} }
@ -1232,8 +1195,8 @@ $video-image: '../img/film.svg';
.encryption { .encryption {
&[data-encrypted='true'] { &[data-encrypted='true'] {
background-color: var(--color-border-selected); background-color: var(--color-border-selected);
-webkit-mask: url($image-lock-fill) no-repeat center / 14px; -webkit-mask: var(--image-lock-fill) no-repeat center / 14px;
mask: url($image-lock-fill) no-repeat center / 14px; mask: var(--image-lock-fill) no-repeat center / 14px;
width: 10px; width: 10px;
} }
} }
@ -1304,16 +1267,16 @@ $video-image: '../img/film.svg';
} }
> .low { > .low {
background-image: url($image-chevron-dn); background-image: var(--image-chevron-dn);
border-right-width: 0; border-right-width: 0;
} }
> .normal { > .normal {
background-image: url($image-baseline); background-image: var(--image-baseline);
} }
> .high { > .high {
background-image: url($image-chevron-up); background-image: var(--image-chevron-up);
border-left-width: 0; border-left-width: 0;
} }
@ -1326,7 +1289,6 @@ $video-image: '../img/film.svg';
/// CONTEXT MENU /// CONTEXT MENU
.context-menu { .context-menu {
$disabled-color: var(--color-fg-disabled);
background-color: var(--color-bg-primary); background-color: var(--color-bg-primary);
border-radius: 5px; border-radius: 5px;
color: var(--color-fg-on-popup); color: var(--color-fg-on-popup);
@ -1350,7 +1312,7 @@ $video-image: '../img/film.svg';
} }
&:disabled { &:disabled {
color: $disabled-color; color: var(--color-fg-disabled);
cursor: none; cursor: none;
} }
@ -1379,7 +1341,7 @@ $video-image: '../img/film.svg';
right: 0; right: 0;
margin: 6px; margin: 6px;
top: 50px; top: 50px;
z-index: $z-index-popup; z-index: var(--z-index-popup);
@include for-phone-only { @include for-phone-only {
height: 80vh; height: 80vh;
@ -1480,13 +1442,13 @@ $video-image: '../img/film.svg';
grid-area: check; grid-area: check;
&:checked ~ #alt-speed-image { &:checked ~ #alt-speed-image {
background-image: url($image-alt-speed-enabled); background-image: var(--image-alt-speed-enabled);
background-position: left; background-position: left;
background-size: 22px; background-size: 22px;
} }
&:not(:checked) ~ #alt-speed-image { &:not(:checked) ~ #alt-speed-image {
background-image: url($image-alt-speed-disabled); background-image: var(--image-alt-speed-disabled);
background-size: 22px; background-size: 22px;
} }
} }
@ -1510,24 +1472,20 @@ $video-image: '../img/film.svg';
/// DIALOGS /// DIALOGS
$dialog-padding-number: 20;
$dialog-logo-padding-number: math.div($dialog-padding-number * 2, 3);
$logo-size: 64px;
@include for-phone-only { @include for-phone-only {
.dialog-buttons { .dialog-buttons {
padding-top: $dialog-logo-padding-number * 1px; padding-top: var(--dialog-logo-padding);
} }
.dialog-container { .dialog-container {
opacity: 96%; opacity: 96%;
position: absolute; position: absolute;
top: $popup-top; top: var(--popup-top);
width: 100%; width: 100%;
} }
.dialog-logo { .dialog-logo {
padding-bottom: $dialog-logo-padding-number * 1px; padding-bottom: var(--dialog-logo-padding);
} }
.dialog-window { .dialog-window {
@ -1540,7 +1498,7 @@ $logo-size: 64px;
.dialog-container { .dialog-container {
min-width: 500px; min-width: 500px;
position: absolute; position: absolute;
top: $popup-top * 2; top: calc(var(--popup-top) * 2);
} }
.dialog-heading { .dialog-heading {
@ -1549,7 +1507,7 @@ $logo-size: 64px;
.dialog-logo { .dialog-logo {
grid-area: icon; grid-area: icon;
padding-right: $dialog-logo-padding-number * 1px; padding-right: var(--dialog-logo-padding);
} }
.dialog-window { .dialog-window {
@ -1562,7 +1520,7 @@ $logo-size: 64px;
'icon message' 'icon message'
'icon workarea' 'icon workarea'
'icon buttons'; 'icon buttons';
grid-template-columns: $logo-size 1fr; grid-template-columns: var(--logo-size) 1fr;
padding: 2px 12px; padding: 2px 12px;
} }
} }
@ -1602,7 +1560,7 @@ dialog {
color: var(--color-fg-primary); color: var(--color-fg-primary);
display: block; display: block;
padding: 0; padding: 0;
z-index: $z-index-popup; z-index: var(--z-index-popup);
@include for-tablet-portrait-up { @include for-tablet-portrait-up {
border: 0; border: 0;
@ -1620,8 +1578,8 @@ dialog {
.dialog-logo { .dialog-logo {
background: transparent url('../img/logo.png') top left no-repeat; background: transparent url('../img/logo.png') top left no-repeat;
height: $logo-size; height: var(--logo-size);
width: $logo-size; width: var(--logo-size);
} }
.dialog-message { .dialog-message {
@ -1632,7 +1590,7 @@ dialog {
.dialog-window { .dialog-window {
background: var(--color-bg-primary); background: var(--color-bg-primary);
border-radius: 8px; border-radius: 8px;
padding: $dialog-padding-number * 1px; padding: var(--dialog-padding);
} }
.dialog-workarea { .dialog-workarea {