jspaint/styles/themes/modern.css

448 lines
8.3 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

:root {
--theme-loaded: "modern.css";
--Hilight: #0178d7;
--ButtonText: #000000;
}
body {
font-family: Roboto, sans-serif;
font-size: 15px;
}
.canvas-area > canvas {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQMAAABIeJ9nAAAABlBMVEW9vb3///8EwsWUAAAADElEQVQI12NoYHAAAAHEAMFJRSpJAAAAAElFTkSuQmCC") repeat;
/* 16px is a common grid size, but that gives 8px grid cells, and our max zoom is 8x */
/*background-size: 16px;*/
background-size: 8px;
}
@media (resolution: 1x), (resolution: 2x), (min-resolution: 3x) {
.canvas-area canvas,
.selection canvas,
.selection img {
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
image-rendering: pixelated;
}
}
.disable-aa-for-things-at-main-canvas-scale .main-canvas,
.disable-aa-for-things-at-main-canvas-scale .selection canvas {
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
image-rendering: pixelated;
}
.selection:after,
.textbox:after {
content: '';
position: absolute;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
outline: 1px dashed black;
box-shadow: 0 0 0 1px white;
}
.canvas-area .handle {
background: #000080;
}
.useless-handle {
background: #fff;
box-shadow: 1px 1px 0 #000080 inset;
}
.resize-ghost {
outline: 1px dotted #ccc;
mix-blend-mode: difference;
}
.window,
.menu-popup {
border-radius: 2px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}
.window,
.window-titlebar {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.window-titlebar {
background: #3f51b5;
color: white;
padding-left: 8px;
padding-right: 8px;
}
.tool-window .window-titlebar {
padding: 5px;
}
.window-title-area {
padding: 8px;
}
.window-content {
padding: 16px;
background: white;
color: black;
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
.component-window .window-content {
padding: 0;
}
.component-window .component {
padding: 4px 8px;
}
.window-button {
border: 0;
background: none;
color: transparent;
transform: scale(1.5);
font-size: 1px;
border-radius: 50%;
width: 17px;
height: 17px;
margin-left: 10px;
position: relative;
}
.window-button:hover {
background: rgba(255, 255, 255, 0.2);
}
.window-button:hover:active {
background: rgba(255, 255, 255, 0.5);
}
.os-window .window-button {
transform: scale(1.8);
}
.window-button::after {
color: white;
font-size: 15px;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
text-align: center;
}
.window-close-button::after {
content: "×";
}
.window-minimize-button::after {
content: "-";
}
.window-maximize-button::after {
content: "+";
}
.menus {
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.26);
}
.eye-gaze-mode .menu-button {
height: 3rem;
line-height: 3rem;
}
.menu-button,
.menu-item {
outline: 0;
}
.menu-button {
/*padding: 16px;*/
padding: 3px 7px 5px 7px;
margin-top: 2px;
border: 1px solid transparent;
}
.menu-button:hover {
background: #eeeeee;
}
.menu-button:active,
.menu-button.active {
background: #e5e5e5;
}
.menu-item:hover {
background: #eeeeee;
}
.menu-item:active,
.menu-item.active {
background: #e5e5e5;
}
.menu-popup {
background: white;
padding: 8px 0;
}
/*.menu-item {
padding: 6px 10px 6px 30px;
}*/
.menu-item td {
/*height: 32px;*/
height: 27px;
padding: 0;
}
.menu-item td:first-child {
padding-left: 16px;
}
.menu-item td:last-child {
padding-right: 16px;
}
.menu-item[disabled] {
color: #bdbdbd;
}
.menu-item.active {
background: #eeeeee;
}
.menu-hr {
/*height: 32px;*/
margin-top: 6px;
margin-bottom: 6px;
border: 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}
.menu-item .menu-item-checkbox-area {
padding-right: 8px;
}
.menu-item .menu-item-shortcut {
padding-left: 16px;
}
.color-selection {
width: 18px;
height: 18px;
}
.color-button, /* this outer one is only for detection for the hover halo in eye gaze mode */
.edit-colors-window .swatch, /* this outer one is only for detection for the hover halo in eye gaze mode */
.color-button canvas,
.color-selection canvas,
.edit-colors-window .swatch canvas,
.color-button:after,
.color-selection:after,
.edit-colors-window .swatch:after {
border-radius: 3px;
position: relative;
}
.color-button::after,
.color-selection::after,
.edit-colors-window .swatch::after {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5) inset;
}
.eye-gaze-mode .colors-component.tall {
width: 53px;
}
.eye-gaze-mode .colors-component.tall .color-button {
margin-left: 1px;
}
.edit-colors-window .inset-shallow {
border: 1px solid rgba(0, 0, 0, 0.5);
border-radius: 3px;
}
.edit-colors-window .swatch {
width: 20px;
height: 17px;
}
.edit-colors-window .swatch:focus::after {
outline-offset: 3px;
}
/* @TODO: padding/margin on the top at least when in the sidebar */
.tools {
width: 50px;
}
.tool {
border: 0;
background: 0;
width: 24px;
height: 24px;
}
.tool.selected {
background: rgba(0, 0, 0, 0.24);
}
.toggle.selected {
box-shadow: 0px -2px 1px 0px blue;
}
.tool-options {
/* the layout currently depends on the exact pixel width (specifically the brush tool options) */
border: 1px solid rgba(0, 0, 0, 0.24);
}
.menus,
.component-area,
.status-area {
background: #fff;
}
.status-text {
padding-left: 8px;
}
body,
.canvas-area {
background: #7b7b7b;
/*background: #e9e9e9;*/
}
.canvas-area {
padding: 8px;
border: 1px solid gray;
}
.component-ghost {
border-radius: 2px;
transition: border-radius .2s ease, border-width .2s ease, opacity .2s ease;
outline: 0;
}
/* NOTE: copy/pasted from classic.css */
/* @TODO: actually show a preview of the component itself when dragging for the modern theme */
/* @TODO: cursor maybe? just when already dragging? */
.component-ghost.dock {
border: 1px solid #2196f3;
animation: squish 0.7s ease infinite;
}
@keyframes squish {
0% {
transform: scale(90%, 110%);
}
50% {
transform: scale(110%, 90%);
}
100% {
transform: scale(90%, 110%);
}
}
.component-ghost:not(.dock) {
border: 4px solid #2196f3;
opacity: 0.3;
animation: bobble 1s ease-in-out infinite;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
@keyframes bobble {
0% {
transform: scale(95%);
}
50% {
transform: scale(105%);
}
100% {
transform: scale(95%);
}
}
@media (prefers-reduced-motion) {
.component-ghost {
animation: none !important;
}
}
.resize-ghost.thick:after,
.resize-ghost.thick:before {
content: '';
position: absolute; left: 0; right: 0; top: 0; bottom: 0;
outline: 1px dotted #ccc;
}
.resize-ghost.thick:after {
outline-offset: 1px;
}
.resize-ghost.thick:before {
outline-offset: 2px;
}
:root {
/* for disabled button icon effect */
--ButtonHilight: #fff;
--ButtonShadow: #aaa;
}
.help-window .resizer {
background-color: #aaa !important;
border: 0 !important;
box-shadow: none !important;
}
.help-window .toolbar button {
width: 60px;
height: 42px;
margin-left: 2px;
margin-right: 0;
margin-top: 2px;
margin-bottom: 1px;
border-width: 1px; /* or else it's like 17px in Firefox?? and totally screws up the icons */
}
.help-window .window-content {
padding: 0;
}
.help-window iframe {
border: 0;
/* @TODO ideally, apply a padding: 16px on the body in the iframe, except for on the landing page (which has a background) */
}
.help-window ul.contents {
padding: 16px;
border-right: 1px solid rgba(128, 128, 128, 0.5);
}
.help-window .item {
font-family: 'Segoe UI', sans-serif;
font-size: 12px;
padding: 0 2px;
}
.help-window .item:hover {
text-decoration: underline;
color: #1976D2;
cursor: pointer;
}
.help-window li:before {
/* @TODO: more modern icons */
background-image: url("../../images/help-icons.png");
}
.help-window .item.selected {
/* @TODO: separate .help-window .contents.focused .item.selected */
background-color: #2196f3;
color: white;
}
/* ::selection {
background-color: #2196f3;
color: white;
} */
.history-view {
background: white;
color: black;
}
input:invalid {
box-shadow: 0 0 0 2px red;
}
.partial-url-label {
opacity: 0.6;
}
input:disabled + label {
color: gray;
}
details {
border: 1px solid gray;
}
summary {
background-color: #dfdfdf;
color: black;
padding: 3px;
padding-left: 7px;
}
details[open] > summary {
border-bottom: 1px solid gray;
}
details,
summary {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
details:not([open]),
details:not([open]) > summary {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}