You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
440 lines
8.2 KiB
440 lines
8.2 KiB
:root { |
|
--dark-blue: #2f343d; |
|
--dark-hover: #888; |
|
--radius: 5px; |
|
--hgap: 5px; |
|
--gap: 10px; |
|
--transform-amimate: transform .1s ease-out; |
|
} |
|
|
|
html, body { |
|
margin: 0; |
|
padding: 0; |
|
width: 100%; |
|
height: 100%; |
|
overflow: hidden; |
|
} |
|
|
|
body .main { |
|
height: 100%; |
|
} |
|
|
|
body.offline .main { |
|
filter: brightness(50%); |
|
} |
|
|
|
.dhide { |
|
display: none !important; |
|
} |
|
|
|
.vhide { |
|
visibility: hidden !important; |
|
} |
|
|
|
.flexcol { |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
|
|
canvas { |
|
width: 100%; |
|
height: 100%; |
|
display: block; |
|
cursor: url('icons/crosshair.svg') 16 16, crosshair; |
|
} |
|
|
|
canvas.tool-pointer { |
|
cursor: default; |
|
} |
|
|
|
canvas.picker { |
|
cursor: url('icons/picker.svg') 0 19, crosshair; |
|
} |
|
|
|
canvas.resize-topleft { |
|
cursor: nwse-resize; |
|
} |
|
|
|
canvas.resize-topright { |
|
cursor: nesw-resize; |
|
} |
|
/* |
|
canvas.movemode { |
|
cursor: grab; |
|
} |
|
|
|
canvas.movemode.moving { |
|
cursor: grabbing; |
|
} |
|
|
|
canvas.mousemoving { |
|
cursor: move; |
|
} |
|
*/ |
|
.brush-dom { |
|
position: absolute; |
|
pointer-events: none; |
|
user-select: none; |
|
top: 0; |
|
left: 0; |
|
} |
|
|
|
.html-hud { |
|
position: fixed; |
|
top: 0; |
|
left: 0; |
|
width: 100%; |
|
height: 100%; |
|
pointer-events: none; |
|
z-index: 1; |
|
} |
|
|
|
.html-hud .player-cursor { |
|
position: absolute; |
|
width: 16px; |
|
height: 16px; |
|
} |
|
|
|
.tools-wrapper { |
|
position: fixed; |
|
bottom: 0; |
|
width: 100%; |
|
display: flex; |
|
justify-content: center; |
|
align-items: end; |
|
z-index: 10; |
|
pointer-events: none; |
|
} |
|
|
|
.pallete-wrapper, |
|
.top-wrapper { |
|
position: fixed; |
|
top: 0; |
|
left: 0; |
|
height: 100%; |
|
pointer-events: none; |
|
display: flex; |
|
flex-direction: column; |
|
justify-content: center; |
|
transition: var(--transform-amimate); |
|
} |
|
|
|
.top-wrapper { |
|
height: unset; |
|
width: 100%; |
|
flex-direction: row; |
|
} |
|
|
|
.player-list { |
|
position: absolute; |
|
right: 0; |
|
height: 42px; |
|
padding-left: var(--gap); |
|
padding-right: var(--gap); |
|
background: var(--dark-blue); |
|
display: flex; |
|
gap: var(--gap); |
|
align-items: center; |
|
border-bottom-left-radius: var(--radius); |
|
pointer-events: all; |
|
} |
|
|
|
.player-list .player { |
|
width: 24px; |
|
height: 24px; |
|
border-radius: var(--radius); |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
border: 2px solid transparent; |
|
box-sizing: border-box; |
|
} |
|
|
|
.player-list .player.following { |
|
border-color: white; |
|
} |
|
|
|
.player-list .player img { |
|
height: 12px; |
|
width: 12px; |
|
filter: invert(100%); |
|
} |
|
|
|
.pallete { |
|
pointer-events: none; |
|
display: grid; |
|
flex-direction: column; |
|
align-items: center; |
|
border-top-right-radius: var(--radius); |
|
border-bottom-right-radius: var(--radius); |
|
/* border-bottom-left-radius: var(--radius);*/ |
|
padding-top: var(--gap); |
|
padding-bottom: var(--gap); |
|
overflow: hidden; |
|
} |
|
|
|
.pallete-wrapper.hidden { |
|
transform: translateX(-125%); /* to account for a selected color, which is also offset to the right */ |
|
} |
|
|
|
.top-wrapper.hidden { |
|
transform: translateY(-125%); |
|
} |
|
|
|
.pallete .color-major { |
|
pointer-events: all; |
|
background: var(--dark-blue); |
|
display: flex; |
|
transition: var(--transform-amimate); |
|
transform: translateX(calc(-100% + 2 * var(--gap) + 24px)); |
|
cursor: pointer; |
|
} |
|
|
|
.pallete .color-major.extended { |
|
transform: translateX(0px); |
|
border-top-right-radius: var(--radius); |
|
border-bottom-right-radius: var(--radius); |
|
} |
|
|
|
.pallete .color-major.active { |
|
transform: translateX(calc(-100% + 3 * var(--gap) + 24px)); |
|
border-top-right-radius: var(--radius); |
|
border-bottom-right-radius: var(--radius); |
|
} |
|
|
|
.pallete .color-minor { |
|
padding: var(--gap); |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
} |
|
|
|
.pallete .color-major:not(.active) .color-minor:hover { |
|
background: var(--dark-hover); |
|
} |
|
|
|
.pallete .color-pane { |
|
width: 24px; |
|
height: 24px; |
|
box-sizing: border-box; |
|
border-radius: var(--radius); |
|
} |
|
.pallete .color .color-pane:hover { |
|
background: var(--dark-hover); |
|
} |
|
|
|
|
|
.pallete .color.active:hover { |
|
background: var(--dark-blue); |
|
} |
|
|
|
.tools, |
|
.sizer { |
|
pointer-events: all; |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
background: var(--dark-blue); |
|
border-radius: var(--radius); |
|
border-bottom-right-radius: 0; |
|
border-bottom-left-radius: 0; |
|
height: 42px; |
|
padding-left: var(--gap); |
|
padding-right: var(--gap); |
|
} |
|
|
|
.sizer { |
|
border-radius: 0; |
|
border-bottom-right-radius: var(--radius); |
|
border-bottom-left-radius: var(--radius); |
|
} |
|
|
|
.tool { |
|
cursor: pointer; |
|
padding-left: var(--gap); |
|
padding-right: var(--gap); |
|
height: 100%; |
|
display: flex; |
|
align-items: center; |
|
background: var(--dark-blue); |
|
transition: var(--transform-amimate); |
|
user-select: none; |
|
} |
|
|
|
.tool:hover { |
|
background: var(--dark-hover); |
|
} |
|
|
|
.tool.active { |
|
transform: translateY(-10px); |
|
background: var(--dark-blue); |
|
border-top-right-radius: var(--radius); |
|
border-top-left-radius: var(--radius); |
|
} |
|
|
|
.tool img { |
|
height: 24px; |
|
width: 24px; |
|
filter: invert(100%); |
|
} |
|
|
|
.sizer input[type=range] { |
|
-webkit-appearance: none; |
|
width: 200px; |
|
background: transparent; |
|
} |
|
|
|
.sizer input[type=range]:focus { |
|
outline: none; |
|
} |
|
|
|
.sizer input[type=range]::-webkit-slider-thumb { |
|
-webkit-appearance: none; |
|
border: none; |
|
background: white; |
|
height: 20px; |
|
width: 20px; |
|
border-radius: 50%; |
|
cursor: pointer; |
|
border: 2px solid var(--dark-blue); |
|
margin-top: -6px; /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */ |
|
} |
|
|
|
.sizer input[type=range]::-moz-range-thumb { |
|
border: none; |
|
background: white; |
|
height: 16px; |
|
width: 16px; |
|
border-radius: 50%; |
|
cursor: pointer; |
|
border: 2px solid var(--dark-blue); |
|
} |
|
|
|
.sizer input[type=range]::-webkit-slider-runnable-track { |
|
width: 100%; |
|
height: 8px; |
|
cursor: pointer; |
|
background: white; |
|
border-radius: 2px; |
|
border: none; |
|
} |
|
|
|
.sizer input[type=range]:focus::-webkit-slider-runnable-track { |
|
width: 100%; |
|
height: 8px; |
|
cursor: pointer; |
|
background: white; |
|
border-radius: 2px; |
|
border: none; |
|
} |
|
|
|
.sizer input[type=range]::-moz-range-track { |
|
width: 100%; |
|
height: 8px; |
|
cursor: pointer; |
|
background: white; |
|
border-radius: 2px; |
|
border: none; |
|
} |
|
|
|
.phone-extra-controls { |
|
display: none; |
|
cursor: pointer; /* for click events on mobile */ |
|
pointer-events: all; |
|
position: absolute; |
|
right: 0; |
|
background: var(--dark-blue); |
|
height: 42px; |
|
justify-content: center; |
|
align-items: center; |
|
padding-left: var(--gap); |
|
padding-right: var(--gap); |
|
border-top-left-radius: var(--radius); |
|
} |
|
|
|
.phone-extra-controls img { |
|
height: 24px; |
|
width: 24px; |
|
filter: invert(100%); |
|
} |
|
|
|
@media (hover: none) and (pointer: coarse) { |
|
.phone-extra-controls { |
|
display: flex; |
|
} |
|
} |
|
|
|
.offline-toast { |
|
position: fixed; |
|
top: 50%; |
|
left: 50%; |
|
transform: translate(-50%, -50%); |
|
z-index: 999; |
|
background: rgba(0, 0, 0, 0.8); |
|
display: flex; |
|
align-items: center; |
|
padding: 10px; |
|
border-radius: var(--radius); |
|
box-shadow: 0px 2px 3px 0px rgba(155, 150, 100, 0.2); |
|
transition: transform .1s ease-in-out, opacity .1s; |
|
font-family: sans-serif; |
|
font-size: 14px; |
|
color: white; |
|
font-weight: bold; |
|
user-select: none; |
|
transition: transform .1s ease-in-out, opacity .1s; |
|
pointer-events: none; |
|
} |
|
|
|
.offline-toast.hidden { |
|
transform: translate(-50%, -5px); |
|
opacity: 0; |
|
} |
|
|
|
body.offline * { |
|
pointer-events: none; |
|
} |
|
|
|
.loader { |
|
position: fixed; |
|
top: 50%; |
|
left: 50%; |
|
transform: translate(-50%, -50%); |
|
width: 128px; |
|
height: 128px; |
|
pointer-events: none; |
|
background: rgba(0, 0, 0, 0.8); |
|
border-radius: 10px; |
|
transition: opacity .2s; |
|
} |
|
|
|
.loader.hidden { |
|
opacity: 0; |
|
} |
|
|
|
.debug-window { |
|
position: absolute; |
|
min-width: 256px; |
|
top: 20px; |
|
right: 20px; |
|
display: flex; |
|
flex-direction: column; |
|
gap: 10px; |
|
user-select: none; |
|
padding: 5px; |
|
background: white; |
|
border: 1px solid var(--dark-blue); |
|
} |
|
|
|
.picker-preview-outer { |
|
position: absolute; |
|
top: 16px; |
|
right: 16px; |
|
border: 1px solid black; |
|
} |
|
|
|
.picker-preview-inner { |
|
width: 64px; |
|
height: 64px; |
|
border: 1px solid white; |
|
}
|
|
|