@import "css/colors.css";
@import "css/shadows.css";
:root {
--font-features: "calt" 1, "case" 0, "ccmp" 1, "ss03" 1, "cv01" 1, "cv05" 1, "cv06" 1, "cv08" 0, "cv11" 1, "cv12" 0, "cv13" 0;
--text-large: 12pt;
--text-small: 10pt;
--window-margin: 10px;
--window-width: 360px; /* Equal to width of add-ons panel */
--window-height: 515px; /* Equal to height add-ons panel */
--scrollbar-width: 5px; /* Estimated! */
--toggle-margin-left: 15px;
--toggle-margin-right: 5px;
--speed-fast: .1s;
--speed-slow: .3s;
--spacer-tiny: 2px;
--spacer-small: 6px;
--spacer-medium: 8px;
--spacer-large: 12px;
--spacer-select: 26px;
--spacer-other: 18px;
--spacer-button-grid: 34px;
--border-radius-section: .5rem;
--border-radius-input: .5rem;
--total-height-other: 294px;
--total-height-also-li: 26px;
--total-height-prompt: 33.5px;
}
/* Light theme */
:root {
--text-color: var(--color-l-gray-120);
--desc-color: blue;
--desc-color: var(--color-l-gray-110);
--link-color: var(--color-l-gray-90);
--icon-color: var(--color-l-gray-80);
--icon-color-hover: var(--color-l-gray-90);
--border-color: var(--color-l-gray-50);
--border-color-hover: var(--color-l-gray-60);
--scrollbar-color: var(--color-l-gray-70);
--body-background-color: var(--color-l-gray-30);
--section-background-color: var(--color-l-gray-10);
/* State */
--state-text-color-disabled: var(--color-l-red-20);
--state-text-color-enabled: var(--color-l-green-20);
/* Text input */
--text-input-background-color-focus: var(--color-l-gray-10);
--text-input-placeholder-color: var(--color-l-gray-70);
--text-input-background-color: var(--color-l-gray-20);
/* Select */
--select-background-color: var(--color-l-gray-20);
--select-icon: url("data:image/svg+xml,") no-repeat;
/* Button */
--button-background-color: var(--color-l-gray-20);
--button-background-color-hover: var(--color-l-gray-10);
/* Save button */
--save-button-text-color: var(--color-l-gray-10);
--save-button-background-color: var(--color-l-gray-90);
--save-button-background-color-hover: var(--color-l-gray-80);
--save-button-background-color-active: var(--color-l-gray-90);
/* State button */
--state-button-text-color: var(--color-l-gray-10);
--state-button-background-color-disabled: var(--color-l-red-20);
--state-button-background-color-disabled-hover: var(--color-l-red-10);
--state-button-background-color-enabled: var(--color-l-green-20);
--state-button-background-color-enabled-hover: var(--color-l-green-10);
}
/* Dark theme */
@media (prefers-color-scheme: dark) {
:root {
--text-color: var(--color-d-gray-10);
--desc-color: var(--color-d-gray-20);
--link-color: var(--color-d-gray-50);
--icon-color: var(--color-d-gray-50);
--icon-color-hover: var(--color-d-gray-40);
--border-color: var(--color-d-gray-90);
--border-color-hover: var(--color-d-gray-80);
--scrollbar-color: var(--color-d-gray-90);
--body-background-color: var(--color-d-gray-120);
--section-background-color: var(--color-d-gray-100);
/* State */
--state-text-color-disabled: var(--color-d-red-30);
--state-text-color-enabled: var(--color-d-green-20);
/* Text input */
--text-input-background-color-focus: var(--color-d-gray-90);
--text-input-placeholder-color: var(--color-d-gray-50);
--text-input-background-color: var(--color-d-gray-100);
/* Select */
--select-background-color: var(--color-d-gray-110);
--select-icon: url("data:image/svg+xml,") no-repeat;
/* Button */
--button-background-color: var(--color-d-gray-110);
--button-background-color-hover: var(--color-d-gray-100);
/* Save button */
--save-button-text-color: var(--color-d-gray-10);
--save-button-background-color: var(--color-d-gray-70);
--save-button-background-color-hover: var(--color-d-gray-60);
--save-button-background-color-active: var(--color-d-gray-70);
/* State button */
--state-button-text-color: var(--color-d-gray-10);
--state-button-background-color-disabled: var(--color-d-red-40);
--state-button-background-color-disabled-hover: var(--color-d-red-30);
--state-button-background-color-enabled: var(--color-d-green-30);
--state-button-background-color-enabled-hover: var(--color-d-green-20);
}
}
/* Common */
html {
scrollbar-color: var(--scrollbar-color) transparent;
}
* {
font-family: 'Inter', sans-serif;
font-feature-settings: var(--font-features);
font-size: var(--text-large);
}
body {
background-color: var(--body-background-color);
color: var(--text-color);
width: var(--window-width);
height: var(--window-height);
padding-left: var(--window-margin);
padding-right: calc(var(--window-margin) + var(--scrollbar-width));
margin: auto;
}
section {
background-color: var(--section-background-color);
padding: var(--text-large) var(--window-margin);
border: 1px solid var(--border-color);
border-radius: var(--border-radius-section);
margin-top: var(--text-small);
}
ul {
list-style: none;
padding-left: 0;
margin: 0;
}
/* Common button */
button:not(.delete) {
font-weight: 600;
border: 1px solid var(--border-color);
padding: var(--spacer-small);
cursor: pointer;
box-shadow: var(--shadow);
outline: none;
}
button:not(.delete):hover {
transition-duration: var(--speed-slow);
box-shadow: var(--shadow-hover);
}
button:not(.delete):active {
transition: var(--speed-slow);
box-shadow: var(--shadow-active);
}
button:not(.delete) > svg {
transform: translateY(-.15em);
}
button:not(.delete):active > svg {
transition: var(--speed-slow);
transform: translateY(0);
}
/* Site state section */
#site-state {
display: flex;
justify-content: space-between;
}
#site-details {
min-width: 0;
cursor: default;
}
#site-details h1 {
font-size: var(--text-large);
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
}
#site-details p {
color: var(--desc-color);
}
#state {
color: var(--state-text-color-disabled);
transition: var(--speed-slow);
}
#state.is-on {
color: var(--state-text-color-enabled);
transition: var(--speed-slow);
}
/* Toggle */
#toggle {
border-radius: 100%;
padding: var(--spacer-large);
align-self: center;
margin-left: var(--toggle-margin-left);
margin-right: var(--toggle-margin-right);
background-color: var(--state-button-background-color-disabled);
color: var(--state-button-text-color);
}
#toggle:hover, #toggle:focus {
background-color: var(--state-button-background-color-disabled-hover);
}
#toggle:active {
background-color: var(--state-button-background-color-disabled);
}
#toggle.is-on {
background-color: var(--state-button-background-color-enabled);
color: var(--state-button-text-color);
}
#toggle.is-on:hover, #toggle.is-on:focus {
background-color: var(--state-button-background-color-enabled-hover);
}
#toggle.is-on:active {
background-color: var(--state-button-background-color-enabled);
}
/* Configuration section */
#config input, select {
border: 1px solid var(--border-color);
border-radius: var(--border-radius-input);
font-size: var(--text-large);
color: var(--text-color);
outline: none;
}
#config input {
background-color: var(--text-input-background-color);
box-sizing: border-box;
width: 100%;
padding: var(--spacer-tiny) var(--spacer-medium);
}
#config input::placeholder {
color: var(--text-input-placeholder-color);
}
#config input:hover {
border: 1px solid var(--border-color-hover);
transition: var(--speed-fast);
}
#config input:focus {
transition: var(--speed-fast);
border: 1px solid var(--border-color-hover);
background-color: var(--text-input-background-color-focus);
box-shadow: var(--text-input-shadow-active);
}
#config select {
padding: var(--spacer-small);
padding-right: var(--spacer-select);
box-shadow: var(--shadow);
appearance: none;
background: var(--select-icon);
background-position-x: calc(100% - 2px);
background-position-y: calc(50% - 2px);
background-color: var(--select-background-color);
}
#config select:active, #config select:focus {
outline: none;
box-shadow: var(--shadow-focus);
}
#config label {
font-size: var(--text-large);
}
.primary-prompt {
display: flex;
align-items: center;
text-wrap: nowrap;
gap: var(--spacer-small);
align-content: center;
height: var(--total-height-prompt);
margin-bottom: var(--spacer-large);
}
/* Other pronouns */
#other {
display: grid;
overflow: hidden;
margin-top: var(--spacer-medium);
margin-left: var(--spacer-other);
gap: var(--spacer-small);
height: var(--total-height-other);
}
#other li {
display: grid;
grid-template-columns: 1fr 2fr;
align-items: center;
gap: var(--spacer-small);
}
#other li label {
font-size: var(--text-small);
color: var(--desc-color);
text-align: right;
text-wrap: nowrap;
}
#other li input {
font-size: var(--text-small);
}
#other li select {
font-size: var(--text-small);
width: min-content;
}
#other-final {
margin-bottom: var(--spacer-large);
}
/* Also replacements */
#also li {
display: flex;
align-items: center;
gap: var(--spacer-small);
margin-top: var(--spacer-small);
height: var(--total-height-also-li);
}
#also li label {
color: var(--desc-color);
}
.lhs {
text-align: right;
}
.delete {
color: var(--icon-color);
background-color: transparent;
width: fit-content;
margin: 0;
padding: 0;
border: 0;
visibility: block;
scale: 1;
transition: all var(--speed-fast) allow-discrete;
}
.delete:hover, .delete:focus {
color: var(--icon-color-hover);
outline: none;
}
.delete-disabled button {
visibility: hidden;
scale: 0;
}
/* Button grid */
#button-grid {
display: grid;
grid-template-columns: 7fr 5fr;
gap: var(--spacer-medium);
margin-top: var(--spacer-button-grid);
}
#button-grid button {
display: flex;
justify-content: center;
align-items: center;
border-radius: var(--border-radius-input);
width: 100%;
gap: var(--spacer-medium);
}
#button-grid button p {
margin: 0;
text-align: center;
transform: translateY(-.15em);
}
#button-grid button:active p {
transition: var(--speed-slow);
transform: translateY(0);
}
/* Save */
#save {
background-color: var(--save-button-background-color);
color: var(--save-button-text-color);
}
#save:hover, #save:focus {
background-color: var(--save-button-background-color-hover);
}
#save:active {
background-color: var(--save-button-background-color-active);
}
/* Restore */
#restore {
background-color: var(--button-background-color);
color: var(--text-color);
}
#restore:hover, #restore:focus {
background-color: var(--button-background-color-hover);
}
#restore:active {
background-color: var(--button-background-color-active);
}
/* Links section */
#links {
text-align: right;
padding: var(--text-small) 0;
}
#links li {
margin-bottom: var(--spacer-small);
}
#links a {
display: flex;
justify-content: flex-end;
text-align: right;
color: var(--link-color);
text-decoration: underline;
text-decoration-color: color-mix(in srgb, currentColor 22%, transparent);
transition-duration: var(--speed-fast);
}
#links a:hover, #links a:focus{
color: var(--text-color);
outline: none;
}
#links a p {
margin: 0;
font-size: var(--text-small);
}
/* Accessibility */
.visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
/* Transition elements */
.hide {
height: 0 !important;
overflow: hidden !important;
opacity: 0 !important;
}
.unhide-slow {
transition:
height var(--speed-slow) ease-out,
opacity var(--speed-slow) linear !important;
}
.unhide-fast {
transition:
height var(--speed-fast) ease-out,
opacity var(--speed-fast) linear !important;
}