photo-manager/static/photos/style.css

591 lines
11 KiB
CSS

:root
{ --cloud-blue: #0080dd
; --border-blue: #0af
; --super-light-gray: #f8f8f8
; --cancel-red: #c00
; --confirm-green: #4b0
}
Thumbnail
{ background: url('placeholder.svg') 50% 50% no-repeat
; background-size: 100% 100%
; margin: 0 1rem 1rem 0
; width: 5rem
; height: 5rem
; position: relative
; display: block
; float: left
}
Thumbnail img
{ width: 5rem
; height: 5rem
; display: inline-block
; position: absolute
; border: 0.2rem solid lightgray
; background: lightgray
}
Thumbnail[data-nr='10'] img
{ border-color: var(--border-blue) }
Thumbnail ThumbnailCaption
{ display: inline-block
; position: absolute
; background: lightgray
; font-weight: bold
; padding: 0.15rem 0.3rem
; bottom: -0.4rem
; right: 0.35rem
; font-size: 0.5rem
; color: #555
; border-radius: 0.6rem
}
Thumbnail .button
{ display: none
; position: absolute
; font-size: 1.1rem
; padding: 0 0.35rem 0.2rem 0.35rem
; margin: 0.25rem
}
Thumbnail:hover .button
{ display: inline-block }
Thumbnail .button .fa
{ text-shadow: 1.5pt 1.5pt 1pt white
, -1.5pt -1.5pt 1pt white
, -1.5pt 1.5pt 1pt white
, 1.5pt -1.5pt 1pt white
}
Thumbnail .button .fa
, .button Icon
{ pointer-events: none }
Thumbnail .arrow
{
; margin: -1.5rem
; position: absolute
; top: 50%
; display: none
}
Upload
{ position: relative
}
Upload .fa
{ color: var(--cloud-blue)
}
Upload input[type='file']
{ top: 0
; left: 0
; position: absolute
; display: block
; width: 2.1rem
; height: 2.1rem
; overflow: hidden
; cursor: pointer
}
Copy .fa
{ color: var(--confirm-green)
; font-size: 0.66em
}
Remove .fa
{ color: var(--cancel-red) }
AbortRemoval .fa
{ color: #333 }
Move .fa
{ color: #333 }
Thumbnail[data-nr='10'] Move
{ display: none !important }
Zoom .fa
{ color: #333 }
Thumbnail.moving
{ position: absolute !important
; pointer-events: none
; z-index: 1
; margin-left: 0 !important
}
MovePlaceholder
{ border: 0.25rem solid white
; cursor: move
; background: lightgray
; margin-top: -1rem
; margin-left: 1rem
; height: 7rem
; width: 3rem
; float: right
; color: gray
; text-align: center
; line-height: 6.5rem
; font-size: 2rem
}
MovePlaceholder:hover
{ background: #8f0 }
.has_moving Thumbnail
{ margin-right: 3rem }
.has_moving Thumbnail MovePlaceholder
{ margin-right: -3rem }
.has_moving Thumbnail .button
{ display: none }
@keyframes flash_border_red
{ from { border-color: lightgray }
to { border-color: #c44 }
}
.failed
{ border-width: 0.25rem
; animation-duration: 0.3s
; animation-name: flash_border_red
; animation-direction: alternate
; animation-iteration-count: 2
}
@keyframes flash_border_orange
{ from { border-color: lightgray }
to { border-color: #f52 }
}
.removed
{ animation-duration: 0.3s
; animation-name: flash_border_orange
; animation-direction: alternate
; animation-iteration-count: 2
}
@keyframes flash_border_green
{ from { border-color: lightgray }
to { border-color: #8f0 }
}
.updated
{ animation-duration: 0.3s
; animation-name: flash_border_green
; animation-direction: alternate
; animation-iteration-count: 2
}
@keyframes flash_background_green
{ from { background-color: lightgray }
to { background-color: #8f0 }
}
.changed_numeration Thumbnail:not([data-nr='10']) ThumbnailCaption
{ animation-duration: 0.3s
; animation-name: flash_background_green
; animation-direction: alternate
; animation-iteration-count: 2
}
ProductElement
{ display: inline-block
; width: 100%
; min-height: 7rem
; clear: both
; float: none
; padding: 0.5rem
}
ProductElement ProductDescription
{ float: left
; padding: 0 1rem
; width: 10rem
; display: block
}
ProductDescription ProductTitle
{ font-size: 0.6rem
; display: block
; text-overflow: hidden
; clear: both
}
ProductDescription ProductAmount
{ color: gray
; display: block
}
ThumbnailsRow
{ display: block
; margin-left: 10rem
; min-height: 5rem
}
ThumbnailsRow RowDescription
{ font-size: 0.75rem
; clear: both
; text-align: right
; display: inline-block
; min-width: 6rem
; margin-left: -7rem
; float: left
; position: relative
}
RowDescription > Remove
{ display: inline-block
; clear: none
; position: absolute
}
RowDescription > Copy
{ display: inline-block
; left: 2rem
; position: absolute
}
RowDescription RowTitle
{ width: 8rem
; display: block
; margin-left: -2rem
; clear: both
}
RowDescription input[type='checkbox']
{ display: inline-block
; width: auto
; float: right
}
AddPhotos
{ display: block
; position: relative
; clear: both
; width: 1.5rem
; height: 1.5rem
; float: right
}
AddPhotos .fa
{ color: gray }
AddPhotos:hover .fa
{ color: #0080dd }
Remove ConfirmationDialog
{ position: relative
; width: 3rem
; height: 1.45rem
; display: inline-block
; top: 0.15rem
; right: -1.85rem
; background: lightgray
; border-radius: 1rem
; z-index: 2
; box-shadow: 1.5pt 1.5pt 1pt red
, -1.5pt -1.5pt 1pt red
, -1.5pt 1.5pt 1pt red
, 1.5pt -1.5pt 1pt red
}
Remove ConfirmationDialog .button
{ margin: 0
; display: inline-block
; float: left
; height: 1.5rem
; width: 1.5rem
; font-size: 1rem
; line-height: 1.4rem
; position: relative
}
Remove ConfirmationDialog .button .fa
{ text-shadow: none }
Remove AbortRemoval:hover:after
{ content: ''
; display: inline-block
; position: absolute
; top: 0.1rem
; left: 0.1rem
; height: 1.25rem
; width: 1.25rem
; border-radius: 1rem
; background: white
; opacity: 0.5
}
Remove ConfirmRemoval:hover:after
{ display: inline-block
; position: absolute
; content: ''
; top: 0.1rem
; left: 0.1rem
; height: 1.25rem
; width: 1.25rem
; border-radius: 1rem
; background: red
; opacity: 0.25
}
.button
, select
{ cursor: pointer }
.top { top: 0 }
.left { left: 0 }
.right { right: 0 }
.bottom { bottom: 0 }
select
, button
, input:not([type='file'])
{ border: 0.1rem solid lightgray
; font-size: 0.75rem
; width: 6rem
; height: 1.5rem
; -webkit-outline: 0
; -moz-outline: 0
; outline: 0
; outline-width: 0
; display: block
; padding: 0.15rem
}
hr
{ border-top: 1rem solid var(--super-light-gray)
; padding-top: 1rem
; clear: both
; display: block
; width: 20rem
}
ProductTitle hr
{ border: 0
; padding: 0
; width: auto
}
NewVariant
{ float: left
; position: relative
; left: 9rem
; width: 13.95rem
}
NewVariant ConfirmationDialog input[name='variant_name']
{ width: 10.95rem /* visual bug: if set to 11 seems TOO wide */
; float: left
; margin-right: 0.75rem
}
NewVariant button
{ width: 1.5rem }
NewVariant ConfirmationDialog
{ position: relative }
NewVariant AbortNewVariant
{ float: right }
AbortNewVariant .fa
{ color: var(--cancel-red) }
ConfirmNewVariant
{ float: left }
ConfirmNewVariant .fa
{ color: var(--confirm-green) }
.hidden
, .zero
, ProductElement:not(.targeted) Upload
, ProductElement:not(.targeted) Move
, ProductElement:not(.targeted) Remove
, ProductElement:not(.targeted) > hr
, ProductElement:not(.targeted) ThumbnailsRow:not(:first-of-type)
, ProductElement:not(.targeted) Accounts
, ProductElement:not(.targeted) NewVariant
, ProductElement:not(.targeted) RowDescription
, Variants select
, Accounts .button
, Accounts AddPhotos
, ThumbnailsRow Thumbnail:first-of-type Remove
{ display: none !important
}
ProductElement.targeted
{ border-top: 2rem solid var(--super-light-gray)
; border-bottom: 2rem solid var(--super-light-gray)
; padding-top: 3rem
; padding-bottom: 3rem
; margin-bottom: 4rem
}
ProductElement.targeted:last-of-type
{ margin-bottom: -0.4rem }
ProductElement:first-of-type
{ margin-top: 0 }
form
{ display: inline-block
; left: 0
}
Thumbnail.zoomed
{ position: fixed
; top: 2rem
; left: 2rem
; z-index: 1
; width: 800px
; height: 800px
}
Thumbnail.zoomed .button
{ display: none }
Thumbnail.zoomed Zoom
, Thumbnail.zoomed .arrow
{ display: inline-block !important
; z-index: 3
}
Thumbnail.zoomed img
{ width: 800px
; height: 800px
}
ProgressBarElement
{ display: block
; width: 0
; height: 2pt
; margin-top: -2pt
; background: var(--border-blue)
; opacity: 0.25
; pointer-events: none
; transition-duration: 0.25s
; transition-timing-function: ease-out
}
.transparent
{ filter: alpha(opacity=0)
; opacity: 0
}
main
{ margin-top: 2rem }
nav
{ position: fixed
; z-index: 10
; display: inline-block
; top: 0
; left: 0
; height: 2rem
; min-width: 10rem
; width: 100%
; background: lightgray
; box-shadow: 0 2pt 5pt lightgray
}
nav form
{ display: block
; min-width: 10rem
; width: 100%
}
nav input
{ font-size: 1.3rem !important
; height: 2rem !important
; float: left
}
nav input[type='search']
{ display: block
; background: var(--super-light-gray) !important
; border-color: var(--super-light-gray) !important
; min-width: 10rem
; width: 50% !important
}
nav input[type='checkbox']
{ display: none }
nav input[type='checkbox'] + label
{ float: right
; background: var(--super-light-gray)
; border: 0
; min-width: 5rem
; display: block
; padding: 0.25rem 0.5rem
; height: 2rem
; float: left
}
nav input[type='checkbox']:checked + label
{ background: #ad0
}
nav input[type='submit']
{ background: var(--super-light-gray) !important
; width: 2rem
; text-align: center
; border: 0
; line-height: 1.3rem
; font-size: 1rem
}
nav span
{ float: left
; border: 0
; min-width: 3rem
; display: block
; padding: 0.25rem 0.5rem
; height: 2rem
; float: left
; text-align: center
}
nav button
{ display: block
; background: var(--super-light-gray) !important
; float: right
; width: 2rem
; height: 2rem
; text-align: center
; border: 0
}
nav button .fa
{ font-size: 1rem
; line-height: 1.5rem
}
RowDescription Remove ConfirmationDialog
{ right: auto
; left: -0.45rem
}
RowDescription Remove ConfirmationDialog .button i
{ left: -0.35rem
; position: relative
}
Thumbnail WrongDimensions
{ background: var(--cancel-red)
; color: white
; position: absolute
; display: block
; z-index: 20
; text-align: center
; width: 5rem
; top: -1.15rem
; font-size: 0.75rem
}