style.css
ASCII text
1@import "/static/efficient-ui/MASTER.css"; 2 3:root { 4--gap-navbar: 1rem; 5--width-navbar-button: 0; 6--text-soft: #000000C0; 7--text-softer: #0000009A; 8--text-faint: #00000066; 9--color-shape-label: #0097A7; --color-shape-label-text: #ffffff; 10--shadow-card-inset: inset 0 3px 6px -4px rgba(0, 0, 0, 0.12), inset 0 3px 6px 0 rgba(0, 0, 0, 0.24), inset 0 1px 4px 0 rgba(0, 0, 0, 0.12); 11/*view-transition-name: root;*/ 12} 13 14nav { 15/*view-transition-name: nav;*/ 16} 17 18p { 19color: var(--text-soft); 20} 21 22iconify-icon { 23display: inline-block; 24width: 1em; 25height: 1em; 26} 27 28:is(#shape-selector, #shape-options) > button > iconify-icon { 29font-size: 2rem; 30} 31 32#annotation-zone, .annotation-zone { 33position: relative; 34user-select: none; 35} 36 37#annotation-image, .annotation-image { 38user-drag: none; 39-webkit-user-drag: none; 40image-rendering: pixelated; 41} 42 43#annotation-zone > svg, .annotation-zone > svg { 44z-index: 1; 45position: absolute; 46top: 0; 47left: 0; 48width: 100%; 49height: 100%; 50} 51 52.annotation-ruler { 53z-index: 2; 54position: absolute; 55top: 0; 56left: 0; 57background: var(--color-accent); 58display: none; 59} 60 61#annotation-ruler-horizontal, #annotation-ruler-horizontal-secondary { 62height: 1px; 63width: 100%; 64} 65 66#annotation-ruler-vertical, #annotation-ruler-vertical-secondary { 67width: 1px; 68height: 100%; 69} 70 71.shape { 72stroke: var(--color-accent); 73fill: var(--color-accent); 74fill-opacity: 0.1; 75stroke-width: 2px; 76vector-effect: non-scaling-stroke; 77pointer-events: auto; 78transition: filter 0.25s cubic-bezier(0.61, 1, 0.88, 1), 79fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1), 80stroke-width 0.25s cubic-bezier(0.61, 1, 0.88, 1); 81stroke-linecap: square; 82stroke-linejoin: miter; 83} 84 85.shape-polyline { 86fill: none; 87} 88 89.shape-point { 90stroke: var(--color-accent); 91stroke-width: 2px; 92fill-opacity: 1; 93r: 2; 94transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 95stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 96filter 0.25s cubic-bezier(0.61, 1, 0.88, 1); 97} 98 99.shape.selected { 100fill-opacity: 0.2; 101stroke-width: 4px; 102filter: drop-shadow(0 0 2px var(--text-soft)); 103} 104 105.shape-point.selected { 106fill-opacity: 1; 107r: 6; 108stroke-width: 6px; 109} 110 111.shape-container, .shape-container-viewonly { 112pointer-events: none; 113} 114 115#annotation-helper-message { 116min-height: 2lh; 117} 118 119.shape-container-viewonly > .shape, .thumbnail-list > li .shape { 120fill: var(--color-info); 121stroke: var(--color-info); 122fill-opacity: 0; 123stroke-opacity: 0; 124transition: fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1), 125stroke-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1); 126} 127 128.shape-container-viewonly > .shape-polyline, .thumbnail-list > li .shape-polyline { 129fill: none; 130} 131 132.shape-container-viewonly > .shape-point, .thumbnail-list > li .shape-point { 133stroke: var(--color-info); 134transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 135stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 136filter 0.25s cubic-bezier(0.61, 1, 0.88, 1); 137} 138 139.shape-label { 140position: absolute; 141font-weight: 500; 142color: var(--color-shape-label-text); 143pointer-events: auto; 144height: 28px; 145padding-left: 8px; 146padding-right: 8px; 147display: flex; 148align-items: center; 149justify-content: center; 150background: var(--color-shape-label); 151width: max-content; 152box-shadow: var(--shadow-button); 153/* top-left corner is square to point to the shape */ 154border-radius: 0 16px 16px 16px; 155opacity: 0; 156transition: opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1), 157transform 0.375s cubic-bezier(0.16, 1, 0.3, 1); 158transform: scale(0); 159transform-origin: top left; 160z-index: 3; 161} 162 163/* Only show region parts when checkbox is checked */ 164#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-label { 165opacity: 1; 166transform: scale(1); 167} 168 169/* Hide points with a bubble */ 170#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-container-viewonly > .shape-point:has(+ foreignObject) { 171r: 0; 172border-width: 0; 173} 174 175#annotation-zone:has(+ x-buttonbox #show-shapes:checked) > .shape-container-viewonly > .shape { 176fill-opacity: 0.1; 177stroke-opacity: 1; 178} 179 180.thumbnail-list > li:hover .shape { 181fill-opacity: 0.2; 182stroke-opacity: 1; 183} 184 185/* Disabled for now, until there is more navigation that would benefit from transitions */ 186/* 187@view-transition { 188navigation: auto; 189} 190 191@keyframes move-out { 192from { 193transform: translateX(0%); 194} 195to { 196transform: translateX(-100%); 197} 198} 199 200@keyframes move-in { 201from { 202transform: translateX(100%); 203} 204to { 205transform: translateX(0%); 206} 207} 208 209@media (prefers-reduced-motion: no-preference) { 210::view-transition-old(root), 211::view-transition-new(root) { 212animation-duration: 0.25s; 213animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1); 214} 215 216::view-transition-old(root) { 217animation-name: move-out; 218} 219 220::view-transition-new(root) { 221animation-name: move-in; 222} 223} 224*/ 225 226.multi-select, .single-select { 227display: flex; 228flex-flow: column nowrap; 229overflow-y: scroll; 230box-shadow: var(--shadow-card-inset); 231padding: 16px; 232gap: 8px; 233} 234 235.licence-selection, .image-type-selection { 236display: flex; 237flex-flow: column nowrap; 238} 239 240.licence-selection-info, .image-type-selection-info { 241margin-left: calc(var(--size-checkbox) + var(--gap-label-checkbox)); 242/* Align with the checkbox above */ 243} 244 245.licence-selection-info > p, .image-type-selection-info > p { 246font-weight: 300; 247} 248 249.licence-logo { 250width: 128px; 251float: right; 252margin-left: 1ch; 253} 254 255.licence-title, .image-type-title { 256display: flex; 257justify-content: space-between; 258width: 100%; 259} 260 261.licence-title > .licence-name, .image-type-title > .image-type-name { 262font: var(--h5-font); 263font-weight: 400; 264} 265 266.icon-explainer { 267display: grid; 268gap: 4px 8px; 269grid-template-columns: auto 1fr; 270align-items: center; 271} 272 273.icon-explainer *:nth-child(even) { 274font-weight: 300; 275} 276 277.required-asterisk::after { 278content: "*"; 279color: var(--color-error); 280} 281 282small { 283/* BIG :D */ 284font-size: 1em; 285} 286 287#pagination { 288display: flex; 289gap: 1em; 290justify-content: center; 291align-items: center; 292font-size: 1.5em; 293font-weight: 600; 294flex: 1 0 auto; 295} 296 297#pagination > a { 298text-decoration: none; 299color: var(--color-accent-1); 300} 301 302#pagination-options > form { 303align-items: center; 304display: flex; 305gap: 1em; 306} 307 308#pagination-options { 309justify-content: center; 310align-items: center; 311gap: 1em; 312width: 100%; 313} 314 315.thumbnail-list { 316list-style: none; 317margin: 0 !important; 318display: grid; 319grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); 320gap: 16px; 321} 322 323.thumbnail-list > li { 324transition: transform 0.25s cubic-bezier(0.61, 1, 0.88, 1), 325box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1); 326box-shadow: var(--shadow-card); 327background: var(--color-card); 328} 329 330.thumbnail-list > li:hover { 331position: relative; 332transform: scale(1.5); 333z-index: 1; 334box-shadow: var(--shadow-card), 0 4px 32px rgba(0, 0, 0, 0.12), 0 4px 16px rgba(0, 0, 0, 0.08); 335} 336