2023-08-22 16:08:11 -07:00
|
|
|
@import "../partials/clean/constants"
|
|
|
|
@import "../partials/clean/mixins"
|
2024-01-21 03:38:02 -08:00
|
|
|
@import "../partials/item_header"
|
2023-08-22 16:08:11 -07:00
|
|
|
|
2010-11-05 13:43:26 -07:00
|
|
|
body.items-show
|
2024-01-21 03:38:02 -08:00
|
|
|
.item-header
|
|
|
|
+item-header
|
2024-01-18 22:16:56 -08:00
|
|
|
|
2012-10-24 20:09:05 -07:00
|
|
|
#item-contributors
|
|
|
|
+subtle-banner
|
|
|
|
clear: both
|
2012-10-24 20:16:01 -07:00
|
|
|
margin:
|
|
|
|
bottom: 0
|
|
|
|
top: 2em
|
2012-10-24 20:09:05 -07:00
|
|
|
|
|
|
|
header
|
|
|
|
display: inline
|
|
|
|
font-weight: bold
|
|
|
|
margin-right: .25em
|
|
|
|
|
|
|
|
footer
|
|
|
|
display: inline
|
|
|
|
|
|
|
|
ul
|
2024-01-23 04:37:43 -08:00
|
|
|
display: inline
|
|
|
|
list-style: none
|
|
|
|
|
|
|
|
li
|
|
|
|
display: inline
|
|
|
|
|
|
|
|
&::after
|
|
|
|
content: ", "
|
2012-10-24 20:09:05 -07:00
|
|
|
|
2024-01-23 04:37:43 -08:00
|
|
|
&:last-child::after
|
|
|
|
content: "."
|
2012-03-23 14:37:53 -07:00
|
|
|
|
2010-11-05 13:43:26 -07:00
|
|
|
.nc-icon
|
|
|
|
height: 16px
|
|
|
|
width: 16px
|
2024-06-30 23:09:28 -07:00
|
|
|
|
2024-07-08 13:43:28 -07:00
|
|
|
outfit-viewer
|
2024-06-30 23:09:28 -07:00
|
|
|
display: block
|
2024-07-08 10:36:16 -07:00
|
|
|
position: relative
|
2024-06-30 23:09:28 -07:00
|
|
|
width: 300px
|
|
|
|
height: 300px
|
|
|
|
border: 1px solid $module-border-color
|
|
|
|
border-radius: 1em
|
|
|
|
overflow: hidden
|
|
|
|
margin: 0 auto .75em
|
|
|
|
|
2024-07-08 17:29:22 -07:00
|
|
|
// There's no useful text in here, but double-clicking the play/pause
|
|
|
|
// button can cause a weird selection state. Disable text selection.
|
|
|
|
user-select: none
|
|
|
|
-webkit-user-select: none
|
|
|
|
|
2024-07-02 22:16:37 -07:00
|
|
|
outfit-layer
|
2024-06-30 23:09:28 -07:00
|
|
|
display: block
|
|
|
|
position: absolute
|
|
|
|
inset: 0
|
|
|
|
|
2024-07-08 17:24:18 -07:00
|
|
|
// We disable pointer-events most importantly for the iframes, which
|
|
|
|
// will ignore our `cursor: wait` and show a plain cursor for the
|
|
|
|
// inside of its own document. But also, the context menus for these
|
|
|
|
// elements are kinda actively misleading, too!
|
|
|
|
pointer-events: none
|
|
|
|
|
2024-07-03 20:15:35 -07:00
|
|
|
img, iframe
|
2024-06-30 23:09:28 -07:00
|
|
|
width: 100%
|
|
|
|
height: 100%
|
2024-06-30 23:34:27 -07:00
|
|
|
|
2024-07-07 21:32:41 -07:00
|
|
|
.loading-indicator
|
|
|
|
position: absolute
|
2024-07-08 13:43:28 -07:00
|
|
|
z-index: 1000
|
2024-07-07 21:32:41 -07:00
|
|
|
bottom: 0px
|
|
|
|
right: 4px
|
|
|
|
padding: 8px
|
|
|
|
background: radial-gradient(circle closest-side, white 45%, #ffffff00)
|
|
|
|
|
2024-07-07 19:05:48 -07:00
|
|
|
opacity: 0
|
|
|
|
transition: opacity .5s
|
|
|
|
|
2024-07-08 13:43:28 -07:00
|
|
|
.play-pause-button
|
|
|
|
position: absolute
|
|
|
|
z-index: 1001
|
|
|
|
left: 8px
|
|
|
|
bottom: 8px
|
|
|
|
display: none
|
2024-07-08 17:19:14 -07:00
|
|
|
align-items: center
|
|
|
|
justify-content: center
|
|
|
|
color: white
|
|
|
|
background: rgba(0, 0, 0, 0.64)
|
|
|
|
width: 2.5em
|
|
|
|
height: 2.5em
|
|
|
|
border-radius: 100%
|
|
|
|
border: 2px solid transparent
|
|
|
|
transition: all .25s
|
|
|
|
|
|
|
|
.playing-label, .paused-label
|
|
|
|
display: none
|
|
|
|
width: 1em
|
|
|
|
height: 1em
|
|
|
|
|
|
|
|
.play-pause-toggle
|
|
|
|
// Visually hidden
|
|
|
|
clip: rect(0 0 0 0)
|
|
|
|
clip-path: inset(50%)
|
|
|
|
height: 1px
|
|
|
|
overflow: hidden
|
|
|
|
position: absolute
|
|
|
|
white-space: nowrap
|
|
|
|
width: 1px
|
|
|
|
|
|
|
|
&:checked ~ .playing-label
|
|
|
|
display: block
|
|
|
|
|
|
|
|
&:not(:checked) ~ .paused-label
|
|
|
|
display: block
|
|
|
|
|
|
|
|
&:hover, &:has(.play-pause-toggle:focus)
|
|
|
|
border: 2px solid $module-border-color
|
|
|
|
background: $module-bg-color
|
|
|
|
color: $text-color
|
|
|
|
|
2024-07-08 17:25:55 -07:00
|
|
|
&:has(.play-pause-toggle:active)
|
2024-07-08 17:19:14 -07:00
|
|
|
transform: translateY(2px)
|
2024-07-08 13:43:28 -07:00
|
|
|
|
|
|
|
&:has(outfit-layer:state(has-animations))
|
|
|
|
.play-pause-button
|
2024-07-08 17:19:14 -07:00
|
|
|
display: flex
|
2024-07-08 13:43:28 -07:00
|
|
|
|
2024-07-08 10:36:16 -07:00
|
|
|
.error-indicator
|
|
|
|
font-size: 85%
|
|
|
|
color: $error-color
|
|
|
|
margin-top: .25em
|
|
|
|
margin-bottom: .5em
|
|
|
|
display: none
|
2024-07-03 20:15:35 -07:00
|
|
|
|
2024-07-08 10:36:16 -07:00
|
|
|
// When loading, fade in the loading spinner after a brief delay. (We only
|
|
|
|
// apply the delay here, because fading *out* on load should be instant.)
|
|
|
|
// We are loading when the <turbo-frame> is busy, or when at least one layer
|
|
|
|
// is loading.
|
2024-07-08 13:43:28 -07:00
|
|
|
#item-preview[busy] outfit-viewer, outfit-viewer:has(outfit-layer:state(loading))
|
2024-07-08 10:36:16 -07:00
|
|
|
cursor: wait
|
2024-07-07 21:32:41 -07:00
|
|
|
.loading-indicator
|
|
|
|
opacity: 1
|
|
|
|
transition-delay: 2s
|
|
|
|
|
2024-07-08 10:36:16 -07:00
|
|
|
#item-preview:has(outfit-layer:state(error))
|
2024-07-08 13:43:28 -07:00
|
|
|
outfit-viewer
|
2024-07-08 10:36:16 -07:00
|
|
|
border: 2px solid red
|
|
|
|
.error-indicator
|
|
|
|
display: block
|
|
|
|
|
2024-06-30 23:34:27 -07:00
|
|
|
.species-color-picker
|
|
|
|
.error-icon
|
|
|
|
cursor: help
|
|
|
|
margin-right: .25em
|
|
|
|
|
|
|
|
&[data-is-valid="false"]
|
|
|
|
select
|
|
|
|
border-color: $error-border-color
|
|
|
|
color: $error-color
|
2024-08-31 13:07:18 -07:00
|
|
|
|
2024-09-03 17:07:53 -07:00
|
|
|
species-face-picker
|
|
|
|
display: block
|
2024-09-03 13:46:29 -07:00
|
|
|
position: relative
|
|
|
|
|
2024-09-03 17:34:31 -07:00
|
|
|
img
|
|
|
|
width: 50px
|
|
|
|
height: 50px
|
|
|
|
|
2024-09-03 13:23:58 -07:00
|
|
|
input[type=radio]
|
|
|
|
position: absolute
|
|
|
|
left: -10000px
|
|
|
|
top: auto
|
|
|
|
width: 1px
|
|
|
|
height: 1px
|
|
|
|
overflow: hidden
|
|
|
|
|
|
|
|
&:not(:checked) + img
|
|
|
|
opacity: .5
|
|
|
|
|
2024-09-03 16:42:04 -07:00
|
|
|
&:disabled + img
|
|
|
|
filter: grayscale(1)
|
|
|
|
|
|
|
|
label:has(input[type=radio]:disabled)
|
|
|
|
cursor: not-allowed
|
|
|
|
|
2024-09-03 13:46:29 -07:00
|
|
|
noscript
|
|
|
|
position: absolute
|
|
|
|
inset: 0
|
|
|
|
background: rgba(white, .75)
|
|
|
|
z-index: 1
|
2024-09-03 17:07:53 -07:00
|
|
|
cursor: auto
|
2024-09-03 13:46:29 -07:00
|
|
|
|
|
|
|
display: flex
|
|
|
|
align-items: center
|
|
|
|
justify-content: center
|
|
|
|
text-align: center
|
|
|
|
|
2024-09-03 17:07:53 -07:00
|
|
|
&:has(species-face-picker-options[inert])
|
2024-09-03 13:46:29 -07:00
|
|
|
cursor: wait
|
|
|
|
|
2024-08-31 13:07:18 -07:00
|
|
|
.item-zones-info
|
|
|
|
margin-top: .5em
|
|
|
|
|
|
|
|
h3
|
|
|
|
display: inline
|
|
|
|
font: inherit
|
|
|
|
font-weight: bold
|
|
|
|
&:after
|
|
|
|
content: ": "
|
|
|
|
|
|
|
|
ul
|
|
|
|
list-style-type: none
|
|
|
|
display: inline
|
|
|
|
|
|
|
|
li
|
|
|
|
display: inline
|
|
|
|
&:not(:last-of-type):after
|
|
|
|
content: ", "
|
|
|
|
|
|
|
|
.no-zones
|
|
|
|
font-style: italic
|
|
|
|
opacity: .85
|
2024-09-03 12:55:10 -07:00
|
|
|
|
|
|
|
.zone-species-info
|
|
|
|
font-style: italic
|
|
|
|
text-decoration: underline dotted
|