Roll20 CSS enhancements for players in my game
Roll20 Player View Enhancements by kinchj
Details
Authorkinchj
LicenseNo License
Categoryroll20
Created
Updated
Size50 kB
Statistics
Learn how we calculate statistics in the FAQ.
Failed to fetch stats.
Description
Notes
Userstyle doesn't have notes.Source code
Source code has over 10K characters, so we truncated it. You can inspect the full source code on install link./* ==UserStyle==
@name Roll20 Player View Enhancements
@version 20231207.17.36
@namespace userstyles.world/user/kinchj
@description Roll20 CSS enhancements for players in my game
@author kinchj
@license No License
==/UserStyle== */
@-moz-document regexp("https://app.roll20.*.net/editor/.*") {
/* Token - Radial Menu */
/* Radial Menu Location */
#radial-menu {
position: fixed;
top: 80px !important;
left: 95px !important;
}
/* Remove Edit Token Button and Set Location if visible*/
#radial-menu .button.button-1 {
position: fixed;
/* Fixed placement for Edit Token Button */
top: 165px;
/* top: 218px; */
/* Vertical placement for Edit Token Button */
left: 54px;
/* Horizontal placement for Edit Token Button */
display: none;
/* Remove Edit Token Button */
}
/* Status Marker Button Location */
#radial-menu .button.button-2 {
position: fixed;
/* Fixed placement for Status Marker Button */
top: 1px;
/* 175px; */
/* Vertical placement for Status Marker Button */
left: 50px;
/* Horizontal placement for Status Marker buttons */
border-radius: 25px 25px 25px 25px;
/* Round Status Marker menu button */
width: 100%;
/* Extend width so Status Marker Menu will fill horizontal */
background-color: transparent;
/* Transparent background so no bar is visible */
}
/* Remove Outline From Status Marker Button */
#radial-menu > div.button.button-2.action.open.animcomplete[data-action-type="show_marker_menu"] {
width: 40px;
}
#radial-menu .button.button-2,
.markermenu {
--color-element-bg: transparent;
-webkit-box-shadow: none;
width: 100%;
}
/* Removes transparent outline from Status Marker button */
#radial-menu .button.button-3,
#radial-menu .button.button-4,
#radial-menu .button.button-5 {
left: -45px;
width: 38px;
}
/* Removes white outline from all buttons */
#radial-menu .button {
border: 0px;
}
/* Brighter colors */
#radial-menu {
--color-text-primary: #b3b3b3;
--color-bg-dark: #1c1111;
--color-text-disabled: #150d0d;
--color-element-bg: #372828;
--color-red: #f85212;
--color-green: #78ff10;
--color-blue: #0c6be7;
--color-yellow: #fc0;
--font-number: "Ruda", sans-serif;
--StatusMarkerButton: .button.button-2
}
/* Font Size Inside Colored Buttons */
#radial-menu .button div.inner span {
font-size: 18px !important;
}
/* Colored Button Input Box Size & Location */
#radial-menu .popupvalue {
position: absolute;
top: 5px;
left: 45px;
width: 35px;
height: 30px;
z-index: 1005
}
/* Colored Button Input Fields Font Size */
#radial-menu .popupvalue input {
width: 100%;
font-size: 16px
}
/* Shadow for red bar button */
#radial-menu .button.button-3 {
box-shadow: 0px 0px 5px var(--color-text-disabled), inset 0px 0px 5px var(--color-red), inset 0px 0px 10px var(--color-red), inset 0px 0px 15px var(--color-red) !important;
top: -42px;
}
/* Shadow for blue bar button */
#radial-menu .button.button-4 {
box-shadow: 0px 0px 5px var(--color-text-disabled), inset 0px 0px 5px var(--color-blue), inset 0px 0px 10px var(--color-blue), inset 0px 0px 15px var(--color-blue) !important;
top: -1px;
}
/* Shadow for green bar button */
#radial-menu .button.button-5 {
box-shadow: 0px 0px 5px var(--color-text-disabled), inset 0px 0px 5px var(--color-green), inset 0px 0px 10px var(--color-green), inset 0px 0px 15px var(--color-green) !important;
top: 42px;
}
}
@-moz-document regexp("https://app.roll20.*.net/editor/.*") {
/* Token - Status Marker Labels & Flashing */
/* Status Marker Menu Width Override: 100% - 385px is from 54px location for GM placement */
/* Status Marker Menu Width Override: 100% - 435px is for PC placement */
/* Status Marker Menu Width */
#radial-menu div.markermenu.open {
min-width: 195px;
width: calc(100% - 453px) !important;
max-width: 955px;
min-height: 167px;
height: auto;
border-radius: 15px;
top: 1px;
left: 42px;
padding: 5px 0px 5px 5px;
display: flex;
flex-wrap: wrap;
}
/* Keep buttons on top */
#radial-menu .button.button-1 #radial-menu .button.button-2,
#radial-menu .button.button-3,
#radial-menu .button.button-4,
#radial-menu .button.button-5 {
z-index: 1;
}
/* Remove Transition from Status Marker Window */
#radial-menu,
#radial-menu .button.button-2,
.markermenu.open {
-webkit-transition: none !important;
transition: none !important;
}
#radial-menu > div.button.button-2.action.open.animcomplete > div.markermenu:not([class = "open"]) {
width: 0px;
}
/* Unneeded? Maybe need to change to #radial-menu .markermenu.open */
#radial-menu .markermenu {
padding-left: 0px;
}
/* Undo the default dead "X" styling */
#radial-menu .markermenu .markercolor.dead {
font-weight: normal;
height: 34px;
margin-left: 0;
padding: 0;
top: 0 !important;
width: 34px;
}
/* Recreate the dead "X" without disrupting the layout */
#radial-menu .markermenu .markercolor.dead::before {
content: "X";
display: block;
font-size: 34px;
font-weight: bold;
position: absolute;
text-align: center;
top: 7px;
width: 100%;
}
/* Resize Status Marker Icons */
#radial-menu div.markermenu.open div.markericon {
height: 40px;
width: 40px;
background-size: 40px;
}
/* Prevent the icons from taking up extra space, allow space for the label text */
#radial-menu .markermenu.open .statusicon {
font-size: 0;
margin-bottom: 6px;
}
/* Show the icon titles as labels */
#radial-menu .markermenu.open .statusicon::after {
color: black;
content: attr(title);
display: inline-block;
font-size: 8px;
line-height: 1em;
overflow: hidden;
position: relative;
text-align: center;
top: 41px;
white-space: nowrap;
width: 40px;
height: 10px;
}
#radial-menu .markermenu.open .statusicon.active::after {
top: 45px;
font-weight: bold;
}
/* Move Active Buttons to Top Left */
div.statusicon.markericon.action.active {
display: flex;
align-self: flex-start;
order: 0;
}
div.statusicon.markericon.action:not(active) {
order: 1;
}
/* Put Active Buttons on Top Line and move Inactive Markers to separate line below */
/*
div.markermenu.open > div:first-child:not(active) { flex-basis: 100%; display: flex !important; height: 0px !important; order: 1; margin: 0px !important; padding: 0px !important; border: 0px !important; border-radius: 0px !important; }
div.markermenu.open > div:first-child:not(active)::after { display: none !important; }
*/
/* Blinking Green Neutral Status Markers */
.active[title = "Concentrating"],
.active[title = "Held-Action"],
.active[title = "FlyHeight"],
.active[title = "ClimbHeight"],
.active[title = "BurrowDepth"],
.active[title = "SwimDepth"] {
animation: blinkingGreenStatusMarker 1.5s infinite;
}
@keyframes blinkingGreenStatusMarker {
0% {
border: 4px solid #0a0;
border-radius: 4px;
}
25% {
border: 4px solid #0a0;
border-radius: 4px;
}
50% {
border: 4px solid #ff0;
border-radius: 4px;
}
75% {
border: 4px solid #0a0;
border-radius: 4px;
}
100% {
border: 4px solid #0a0;
border-radius: 4px;
}
}
/* Blinking Blue Helpful Status Markers */
.active[title = "Aid"],
.active[title = "Aura"],
.active[title = "Blessed"],
.active[title = "Burrowing"],
.active[title = "Climbing"],
.active[title = "Enlarged"],
.active[title = "Flying"],
.active[title = "Hasted"],
.active[title = "Heroism"],
.active[title = "Hidden"],
.active[title = "Inspiration"],
.active[title = "Invisible"],
.active[title = "MirrorImage"],
.active[title = "Raging"],
.active[title = "Ritual"],
.active[title = "Sacred-Weapon"],
.active[title = "Shrunken"],
.active[title = "Stable"],
.active[title = "Swimming"],
.active[title = "Warded"] {
animation: blinkingBlueStatusMarkers 1.5s infinite;
}
@keyframes blinkingBlueStatusMarkers {
0% {
border: 4px solid #00f;
border-radius: 4px;
}
25% {
border: 4px solid #00f;
border-radius: 4px;
}
50% {
border: 4px solid #ff0;
border-radius: 4px;
}
75% {
border: 4px solid #00f;
border-radius: 4px;
}
100% {
border: 4px solid #00f;
border-radius: 4px;
}
}
/* Blinking Red Harmful Status Markers */
.active[title = "Bane"],
.active[title = "Banished"],
.active[title = "Blind"],
.active[title = "Charmed"],
.active[title = "Confused"],
.active[title = "Cursed"],
.active[title = "Dead"],
.active[title = "Deafened"],
.active[title = "Drowning"],
.active[title = "Dying"],
.active[title = "Encumbered"],
.active[title = "Exhaustion"],
.active[title = "Frightened"],
.active[title = "Frozen"],
.active[title = "Grappled"],
.active[title = "Hexed"],
.active[title = "Incapacitated"],
.active[title = "Marked"],
.active[title = "MockingBlade"],
.active[title = "On-Fire"],
.active[title = "Paralyzed"],
.active[title = "Petrified"],
.active[title = "Poisoned"],
.active[title = "Prone"],
.active[title = "Restrained"],
.active[title = "Silenced"],
.active[title = "Slowed"],
.active[title = "Stunned"],
.active[title = "Suffocating"],
.active[title = "Unconscious"] {
animation: blinkingRedStatusMarkers 1.5s infinite;
}
@keyframes blinkingRedStatusMarkers {
0% {
border: 4px solid #f00;
border-radius: 4px;
}
25% {
border: 4px solid #f00;
border-radius: 4px;
}
50% {
border: 4px solid #ff0;
border-radius: 4px;
}
75% {
border: 4px solid #f00;
border-radius: 4px;
}
100% {
border: 4px solid #f00;
border-radius: 4px;
}
}
}
@-moz-document regexp("https://app.roll20.*.net/editor/.*") {
/* Token - Hide Unused Status Markers */
/*
https://app.roll20.net/forum/post/7841113/show-off-your-...