web/www/css/artwork.css

518 lines
9.7 KiB
CSS

@font-face{
font-family: "Fira Mono";
src: local("Fira Mono"), url("/fonts/fira-mono.woff2") format("woff2");
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face{
font-family: "Fira Mono";
src: local("Fira Mono"), url("/fonts/fira-mono-bold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
font-display: swap;
}
.artworks nav > a{
border: 1px solid rgba(0, 0, 0, .5);
font-style: normal;
box-sizing: border-box;
background-color: var(--button);
border-radius: 5px;
padding: 1rem 2rem;
color: #fff;
text-decoration: none;
font-family: "League Spartan", Arial, sans-serif;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .5);
box-shadow: 2px 2px 0 rgba(0, 0, 0, .5), 1px 1px 0px rgba(255,255,255, .5) inset;
position: relative;
text-transform: lowercase;
cursor: pointer;
white-space: nowrap;
font-size: 1rem;
hyphens: none;
line-height: 1.2;
}
.message{
background: rgba(0, 0, 0, .2);
}
.artworks nav li.highlighted a:focus{
outline: 1px dashed var(--input-outline);
}
.artworks nav > a[href]:active{
top: 2px;
left: 2px;
box-shadow: none;
}
.artworks nav > a:last-child::after{
font-family: "Fork Awesome";
content: "\f061";
transition: all 200ms ease;
position: relative;
left: 0;
margin-left: .5rem;
}
.artworks nav > a:last-child[href]:hover::after{
left: .25rem;
position: relative;
transition: all 200ms ease;
}
.artworks nav > a:first-child:before{
font-family: "Fork Awesome";
content: "\f060";
transition: all 200ms ease;
position: relative;
right: 0;
margin-right: .5rem;
}
.artworks nav > a:first-child[href]:hover::before{
right: .25rem;
position: relative;
transition: all 200ms ease;
}
.artworks nav > a:last-child[href]:hover::after{
left: .25rem;
position: relative;
transition: all 200ms ease;
}
main.artworks nav ol li a:hover,
main.artworks nav ol li.highlighted a:hover,
.artworks nav > a:hover{
background-color: var(--button-highlight);
}
button:disabled,
button:disabled:hover,
.artworks nav > a:not([href]){
cursor: default;
color: #efefef;
box-shadow: none;
background: #bbb url("/images/stripes-dark.svg");
}
ol.artwork-list.list{
display: flex;
flex-direction: column;
gap: 0;
margin-bottom: 4rem;
margin-left: auto;
margin-right: auto;
width: 100%;
max-width: 40rem;
}
ol.artwork-list.list > li{
border-radius: .25rem;
display: grid;
grid-template-columns: 16rem 1fr;
grid-column-gap: 2rem;
grid-template-rows: auto auto 1fr;
padding: 1rem;
}
ol.artwork-list.list > li.in-use{
opacity: .5;
background-image: url("/images/stripes.svg");
}
ol.artwork-list.list > li + li{
margin-top: 1rem;
}
ol.artwork-list.list > li .thumbnail-container{
grid-row: 1 / span 3;
margin-left: auto;
}
ol.artwork-list.list > li .thumbnail-container a:has(img){
display: block;
line-height: 0;
border-radius: .25rem;
}
ol.artwork-list.list > li p{
text-align: left;
}
ol.artwork-list > li p{
margin: 0;
}
ol.artwork-list > li img{
box-sizing: border-box;
max-width: 100%;
height: auto;
border: 1px solid var(--border);
border-radius: .25rem;
}
ol.artwork-list > li > p:nth-of-type(1) > a{
font-weight: bold;
text-decoration: none;
}
ol.artwork-list > li .author{
font-style: italic;
}
main.artworks nav ol{
list-style: none;
display: flex;
margin: 0 .5rem;
}
main.artworks nav{
display: flex;
justify-content: center;
align-items: center;
max-width: none;
}
main.artworks nav ol li{
margin: 0;
white-space: nowrap;
}
main.artworks nav ol li a{
font-size: 1rem;
line-height: 1.4;
padding: 1rem;
margin: 0 .5rem;
border-radius: .25rem;
font-variant-numeric: normal;
height: calc(1.4rem + 2rem + 2px);
display: inline-block;
box-sizing: border-box;
}
main.artworks nav ol li.highlighted a{
background: var(--button);
border: 1px solid rgba(0, 0, 0, .5);
}
main.artworks nav ol li.highlighted a,
main.artworks nav ol li a:hover{
color: #fff;
text-decoration: none;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .5);
}
.artworks img{
max-width: 100%;
}
form[action^="/artworks/"]{
display: flex;
flex-direction: column;
gap: 1rem;
}
.artworks form[action="/artworks"]{
align-items: end;
display: grid;
grid-gap: 1rem;
grid-template-columns: auto auto auto auto 1fr;
margin-top: 2rem;
max-width: calc(100% - 2rem);
}
form[action="/artworks"] > fieldset{
display: grid;
gap: 1rem;
}
form[action="/artworks"] > fieldset + fieldset{
margin-top: 2rem;
}
/* Artist details */
form[action="/artworks"] > fieldset:nth-of-type(1){
grid-template-columns: 1fr 1fr;
}
/* Artwork details */
form[action="/artworks"] > fieldset:nth-of-type(2){
grid-template-columns: 1fr 200px;
}
form[action="/artworks"] > fieldset label:has(input[name="artwork-tags"]),
form[action="/artworks"] > fieldset label:has(input[name="artwork-image"]){
grid-column: 1 / span 2;
}
form[action="/artworks"] fieldset fieldset:has(input[name="artwork-publication-year"]){
display: grid;
grid-template-columns: 200px 1fr;
gap: 1rem;
}
form[action="/artworks"] fieldset fieldset:has(input[name="artwork-publication-year"]) label ~ label{
grid-column: 1 / span 2;
}
form[action="/artworks"] #pd-proof > fieldset{
border-left-color: var(--body-text);
border-left-width: 3px;
border-left-style: dotted;
padding-left: .75rem;
}
form[action="/artworks"] fieldset p{
font-style: italic;
margin: 0;
border: none;
}
form[action="/artworks"] fieldset p:first-of-type{
margin-top: 0;
}
form[action="/artworks"] legend{
font-size: 1.2rem;
font-weight: bold;
margin: 0.5rem 0;
}
form[action="/artworks"] label{
display: block;
}
form div.footer{
margin-top: 1rem;
text-align: right;
}
main.artworks nav ol li:not(:first-child):not(:last-child):not(.highlighted){
display: none;
}
main.artworks nav ol li.highlighted::before{
content: "⋯";
padding-right: 1rem;
}
main.artworks nav ol li.highlighted::after{
content: "⋯";
padding-left: 1rem;
}
main.artworks nav ol li.highlighted:first-child::before,
main.artworks nav ol li.highlighted:last-child::after,
main.artworks nav ol li.highlighted:nth-child(2)::before,
main.artworks nav ol li.highlighted:nth-last-child(2)::after{
display: none;
}
.artwork-metadata{
margin-top: 1rem;
}
.artwork-metadata td:first-child{
font-weight: bold;
text-align: right;
white-space: nowrap;
}
.artwork-metadata td:last-child{
width: 100%;
}
.artwork-metadata td{
padding: 0.5rem;
}
.artworks h1 + a{
width: auto;
line-height: 0;
}
.artworks aside.tip{
font-style: italic;
margin: 1rem auto;
position: relative;
padding: 1rem;
padding-left: 2rem;
padding-top: 2rem;
background: rgba(0, 0, 0, .2);
}
.artworks aside.tip::before{
font-family: "Fork Awesome";
content: "\f0eb";
font-size: 1rem;
position: absolute;
font-style: normal;
left: .75rem;
top: .25rem;
}
.artworks aside.tip::after{
content: "Tip";
font-family: "League Spartan";
text-transform: uppercase;
font-size: .75rem;
position: absolute;
font-style: normal;
left: 2rem;
top: .5rem;
}
.artworks .tags{
justify-content: unset;
}
.artworks figure p{
background: #333;
border: 1px solid var(--border);
border-radius: .25rem;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
color: #fff !important; /* in case code highlighting fails */
flex-grow: 1;
margin: 0;
padding: 1rem;
text-align: left;
}
.artworks figure.wrong::before{
background: #762729;
font-family: "Fork Awesome";
content: "\f00d";
font-size: 1.5rem;
width: 1.5rem;
line-height: 1;
margin-right: .5rem;
color: #CF4647;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .1);
display: inline-block;
flex-shrink: 0;
}
.artworks figure.corrected::before{
background: #406451;
font-family: "Fork Awesome";
content: "\f00c";
font-size: 1.5rem;
line-height: 1;
width: 1.5rem;
color: #79BD9A;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .1);
flex-shrink: 0;
}
.artworks figure.wrong::before,
.artworks figure.corrected::before{
display: flex;
margin-right: 0;
align-self: stretch;
align-items: center;
justify-content: center;
padding: 0 .5rem;
border-top-left-radius: .25rem;
border-bottom-left-radius: .25rem;
border: 1px solid var(--border);
border-right: none;
}
.artworks figure.wrong,
.artworks figure.corrected{
display: flex;
align-items: center;
}
.artworks code{
font-variant-numeric: normal;
font-family: "Fira Mono", monospace;
font-size: .8rem;
}
@media(max-width: 730px){
main.artwork nav ol li:not(.highlighted){
display: none;
}
}
@media(max-width: 680px){
main.artworks nav ol li.highlighted::before,
main.artworks nav ol li.highlighted::after{
display: none;
}
}
@media(max-width: 500px){
main.artworks nav{
margin-top: .5rem;
}
main.artworks nav > a{
margin-bottom: 0;
font-size: 0;
}
main.artworks nav > a::before,
main.artworks nav > a::after{
font-size: 1rem;
margin: 0 !important;
}
main.artworks nav a[rel]::before,
main.artworks nav a[rel]::after{
font-size: 1rem;
margin: 0;
}
.artwork-metadata td{
display: block;
padding: 0;
}
.artwork-metadata td:first-child{
text-align: left;
}
.artwork-metadata tr + tr td:first-child{
padding-top: 1rem;
}
}
@media(max-width: 400px){
/* Artist details */
form[action="/artworks"] > fieldset:nth-of-type(1){
grid-template-columns: 1fr;
}
form[action="/artworks"] > fieldset:nth-of-type(2){
grid-template-columns: 1fr;
}
form[action="/artworks"] > fieldset label:has(input[name="artwork-tags"]),
form[action="/artworks"] > fieldset label:has(input[name="artwork-image"]){
grid-column: 1;
}
}
@media(max-width: 380px){
main.artworks nav > a{
padding: 1rem;
}
}
@media(prefers-reduced-motion: reduce){
.artworks nav > a:last-child::after,
.artworks nav > a:last-child[href]:hover::after,
.artworks nav > a:first-child:before,
.artworks nav > a:first-child[href]:hover::before,
.artworks nav > a:last-child[href]:hover::after{
transition: none;
}
}