A rewrite of Poly+, my quality-of-life browser extension for Polytoria. Built entirely fresh using the WXT extension framework, Typescript, and with added better overall code quality.
extension
1/* 2 FRONTEND FIXES / SPACING IMPROVEMENTS 3*/ 4 5body[data-URL^='/my/friends'] .col-lg-3 { 6 margin-bottom: 20px; 7} 8 9body[data-URL^='/create/'] .mt-2.mt-lg-0.col-lg.d-flex.align-content-between.flex-wrap { 10 width: 50%; 11} 12 13body[data-URL^='/create/'] .col.d-flex.align-content-between.flex-wrap { 14 width: 50%; 15} 16 17body[data-URL^='/create'] .me-2:has(.fa-thumbs-up)::after { 18 content: '%'; 19 margin-left: -2.5px; 20 margin-bottom: 2px; 21 cursor: text; 22} 23 24.text-truncate { 25 white-space: nowrap !important; 26 overflow: hidden !important; 27 text-overflow: ellipsis !important; 28} 29 30#servers-tabpane .card { 31 margin-bottom: 10px; 32} 33 34body[data-URL^='/my/settings/privacy'] .card-body:has([action^="/api/users/"]) .card { 35 margin-bottom: 10px; 36} 37 38.home-event-container .img-container { 39 height: 100% !important; 40} 41 42/* ------------------------------------------ */ 43 44/* 45 INLINE EDITING 46*/ 47 48body[data-polyplus-inlineEditing='true'] .polyplus-inlineEditing-visible { 49 display: block !important; 50} 51.polyplus-inlineEditing-visible { 52 display: none; 53} 54 55body[data-polyplus-inlineEditing='true'] .polyplus-inlineEditing-hidden { 56 display: none !important; 57} 58.polyplus-inlineEditing-hidden { 59 display: block; 60} 61 62/* ------------------------------------------ */ 63 64/* 65 MODALS 66*/ 67 68html:has(.polyplus-modal[open]), 69body:has(.polyplus-modal[open]) { 70 overflow: hidden; 71} 72 73.polyplus-modal::backdrop { 74 background: rgba(0, 0, 0, 0.73); 75} 76 77/* ------------------------------------------ */ 78 79 80/* 81 EVENT PLACE CARD HIGHLIGHT ANIMATION 82 CSS BY @Dragonism ON POLYTORIA 83*/ 84 85.event-card { 86 background-size: 200% 200% !important; 87 88 -webkit-animation: EventPlace 5s ease infinite; 89 -moz-animation: EventPlace 5s ease infinite; 90 animation: EventPlace 5s ease infinite; 91} 92 93@-webkit-keyframes EventPlace { 94 0%{background-position:10% 0%} 95 50%{background-position:91% 100%} 96 100%{background-position:10% 0%} 97} 98 99@-moz-keyframes EventPlace { 100 0%{background-position:10% 0%} 101 50%{background-position:91% 100%} 102 100%{background-position:10% 0%} 103} 104 105@keyframes EventPlace { 106 0%{background-position:10% 0%} 107 50%{background-position:91% 100%} 108 100%{background-position:10% 0%} 109} 110 111/* - */ 112 113/* 114 AVATAR SANDBOX 115*/ 116 117.ribbon-polyplus-custom span { 118 background-color: orange !important; 119} 120 121.ribbon-polyplus-custom::after, .ribbon-polyplus-custom::before { 122 border-color: #c68000 !important; 123} 124 125.ribbon-polyplus-unknown span { 126 background-color: #000 !important; 127} 128 129.ribbon-polyplus-unknown::after, .ribbon-polyplus-unknown::before { 130 border-color: #121212 !important; 131} 132 133.ribbon-polyplus-retro span { 134 background-color: purple !important; 135 font-family: 'Courier New', Courier, monospace; 136} 137 138.ribbon-polyplus-retro::after, .ribbon-polyplus-retro::before { 139 border-color: rgb(104, 0, 104) !important; 140}