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 { 23/* Material design icons are done in 24px, so we scale them to 1.5 as the default font size is 16px */ 24display: inline-block; 25width: 1em; 26height: 1em; 27font-size: 1.5em; 28} 29 30:is(#shape-selector, #shape-options) > button > iconify-icon { 31font-size: 2rem; 32} 33 34#annotation-zone, .annotation-zone { 35position: relative; 36user-select: none; 37} 38 39#annotation-image, .annotation-image { 40user-drag: none; 41-webkit-user-drag: none; 42image-rendering: pixelated; 43} 44 45#annotation-zone > svg, .annotation-zone > svg { 46z-index: 1; 47position: absolute; 48top: 0; 49left: 0; 50width: 100%; 51height: 100%; 52} 53 54.annotation-ruler { 55z-index: 2; 56position: absolute; 57top: 0; 58left: 0; 59background: var(--color-accent); 60display: none; 61} 62 63#annotation-ruler-horizontal, #annotation-ruler-horizontal-secondary { 64height: 1px; 65width: 100%; 66} 67 68#annotation-ruler-vertical, #annotation-ruler-vertical-secondary { 69width: 1px; 70height: 100%; 71} 72 73.shape { 74stroke: var(--color-accent); 75fill: var(--color-accent); 76fill-opacity: 0.1; 77stroke-width: 2px; 78vector-effect: non-scaling-stroke; 79pointer-events: auto; 80transition: filter 0.25s cubic-bezier(0.61, 1, 0.88, 1), 81fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1), 82stroke-width 0.25s cubic-bezier(0.61, 1, 0.88, 1); 83stroke-linecap: square; 84stroke-linejoin: miter; 85} 86 87.shape-polyline { 88fill: none; 89} 90 91.shape-point { 92stroke: var(--color-accent); 93stroke-width: 2px; 94fill-opacity: 1; 95r: 2; 96transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 97stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 98filter 0.25s cubic-bezier(0.61, 1, 0.88, 1); 99} 100 101.shape.selected { 102fill-opacity: 0.2; 103stroke-width: 4px; 104filter: drop-shadow(0 0 2px var(--text-soft)); 105} 106 107.shape-point.selected { 108fill-opacity: 1; 109r: 6; 110stroke-width: 6px; 111} 112 113.shape-container, .shape-container-viewonly { 114pointer-events: none; 115} 116 117#annotation-helper-message { 118min-height: 2lh; 119} 120 121.shape-container-viewonly > .shape, .thumbnail-list > li .shape { 122fill: var(--color-info); 123stroke: var(--color-info); 124fill-opacity: 0; 125stroke-opacity: 0; 126transition: fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1), 127stroke-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1); 128} 129 130.shape-container-viewonly > .shape-polyline, .thumbnail-list > li .shape-polyline { 131fill: none; 132} 133 134.shape-container-viewonly > .shape-point, .thumbnail-list > li .shape-point { 135stroke: var(--color-info); 136transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 137stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), 138filter 0.25s cubic-bezier(0.61, 1, 0.88, 1); 139} 140 141.shape-label { 142position: absolute; 143font-weight: 500; 144color: var(--color-shape-label-text) !important; 145pointer-events: auto; 146height: 28px; 147padding-left: 8px; 148padding-right: 8px; 149display: flex; 150align-items: center; 151justify-content: center; 152background: var(--color-shape-label); 153width: max-content; 154box-shadow: var(--shadow-button); 155/* top-left corner is square to point to the shape */ 156border-radius: 0 16px 16px 16px; 157opacity: 0; 158transition: opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1), 159transform 0.375s cubic-bezier(0.16, 1, 0.3, 1); 160transform: scale(0); 161transform-origin: top left; 162z-index: 3; 163text-decoration: none; 164} 165 166.shape-label:hover { 167text-decoration: underline; 168} 169 170/* Only show region parts when checkbox is checked */ 171#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-label { 172opacity: 1; 173transform: scale(1); 174} 175 176/* Hide points with a bubble */ 177#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-container-viewonly > .shape-point:has(+ foreignObject) { 178r: 0; 179border-width: 0; 180} 181 182#annotation-zone:has(+ x-buttonbox #show-shapes:checked) > .shape-container-viewonly > .shape { 183fill-opacity: 0.1; 184stroke-opacity: 1; 185} 186 187.thumbnail-list > li:is(:hover, :focus, :has(:focus)) .shape { 188fill-opacity: 0.2; 189stroke-opacity: 1; 190} 191 192/* Disabled for now, until there is more navigation that would benefit from transitions */ 193/* 194@view-transition { 195navigation: auto; 196} 197 198@keyframes move-out { 199from { 200transform: translateX(0%); 201} 202to { 203transform: translateX(-100%); 204} 205} 206 207@keyframes move-in { 208from { 209transform: translateX(100%); 210} 211to { 212transform: translateX(0%); 213} 214} 215 216@media (prefers-reduced-motion: no-preference) { 217::view-transition-old(root), 218::view-transition-new(root) { 219animation-duration: 0.25s; 220animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1); 221} 222 223::view-transition-old(root) { 224animation-name: move-out; 225} 226 227::view-transition-new(root) { 228animation-name: move-in; 229} 230} 231*/ 232 233.multi-select, .single-select { 234display: flex; 235flex-flow: column nowrap; 236overflow-y: scroll; 237box-shadow: var(--shadow-card-inset); 238padding: 16px; 239gap: 8px; 240} 241 242.licence-selection, .image-type-selection { 243display: flex; 244flex-flow: column nowrap; 245} 246 247.licence-selection-info, .image-type-selection-info { 248margin-left: calc(var(--size-checkbox) + var(--gap-label-checkbox)); 249/* Align with the checkbox above */ 250} 251 252.licence-selection-info > p, .image-type-selection-info > p { 253font-weight: 300; 254} 255 256.licence-logo { 257width: 128px; 258float: right; 259margin-left: 1ch; 260} 261 262.licence-title, .image-type-title { 263display: flex; 264justify-content: space-between; 265width: 100%; 266} 267 268.licence-title > .licence-name, .image-type-title > .image-type-name { 269font: var(--h5-font); 270font-weight: 400; 271} 272 273.icon-explainer { 274display: grid; 275gap: 4px 8px; 276grid-template-columns: auto 1fr; 277align-items: center; 278} 279 280.icon-explainer *:nth-child(even) { 281font-weight: 300; 282} 283 284.required-asterisk::after { 285content: "*"; 286color: var(--color-error); 287} 288 289small { 290/* BIG :D */ 291font-size: 1em; 292} 293 294#pagination { 295display: flex; 296gap: 1em; 297justify-content: center; 298align-items: center; 299font-size: 1.5em; 300font-weight: 600; 301flex: 1 0 auto; 302} 303 304#pagination > a { 305text-decoration: none; 306color: var(--color-accent-1); 307} 308 309#pagination-options > form { 310align-items: center; 311display: flex; 312gap: 1em; 313} 314 315#pagination-options { 316justify-content: center; 317align-items: center; 318gap: 1em; 319width: 100%; 320} 321 322.thumbnail-list { 323list-style: none; 324margin: 0 !important; 325display: grid; 326grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); 327gap: 16px; 328} 329 330.thumbnail-list > li { 331transition: transform 0.25s cubic-bezier(0.61, 1, 0.88, 1), 332box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1); 333box-shadow: var(--shadow-card); 334background: var(--color-card); 335} 336 337.thumbnail-list > li > a, .thumbnail-list > li { 338display: flex; 339flex-direction: column; 340justify-content: space-between; 341height: 100%; 342} 343 344.thumbnail-list > li > .list-more { 345display: flex; 346justify-content: space-between; 347align-items: center; 348padding: 8px; 349} 350 351.thumbnail-list > li:is(:hover, :focus, :has(:focus)) { 352position: relative; 353transform: scale(1.5); 354z-index: 1; 355box-shadow: var(--shadow-card), 0 4px 32px rgba(0, 0, 0, 0.12), 0 4px 16px rgba(0, 0, 0, 0.08); 356} 357 358.thumbnail-list > li .list-detail { 359padding: 8px; 360display: block; 361} 362 363a.button { 364text-decoration: none; 365} 366 367dt { 368font-weight: 600; 369} 370 371dd { 372margin-left: 40px; 373} 374 375#mobile-navbar { 376display: none; 377} 378 379@media screen and (max-width: 576px) { 380#mobile-navbar { 381display: flex; 382} 383#desktop-navbar { 384display: none; 385} 386} 387 388#hamburger > nav { 389display: flex; 390flex-direction: column; 391gap: 1em; 392padding: var(--padding-card); 393padding-top: var(--padding-card-top); 394box-shadow: var(--shadow-card); 395background: var(--color-card); 396justify-content: space-between; 397width: clamp(240px, calc(100vw - 56px), 448px); 398} 399 400#hamburger > nav > ul { 401display: flex; 402flex-direction: column; 403gap: 1em; 404margin: 0; 405} 406 407#hamburger > nav > ul > li { 408display: flex; 409gap: var(--gap-label-checkbox); 410align-items: center; 411margin: 0; 412} 413 414#hamburger > nav > ul > li > a { 415text-decoration: none; 416color: var(--color-card-text); 417} 418