448 lines
8.7 KiB
CSS

/**
* This is the main stylesheet for the PrayerTracker application.
*/
:root {
--dark-blue-hue: 240;
--dark-blue-sat: 100%;
--darkest: hsl(var(--dark-blue-hue), var(--dark-blue-sat), 6%);
--dark: hsl(var(--dark-blue-hue), var(--dark-blue-sat), 13%);
--lighter-dark: hsl(var(--dark-blue-hue), var(--dark-blue-sat), 25%);
--inverse-backgroud: hsl(0, 0%, 95%);
--background: hsla(0, 0%, 0%, .01);
--native-fonts: system-ui,-apple-system,"Segoe UI",Roboto,Ubuntu,"Liberation Sans",Cantarell,"Helvetica Neue",sans-serif;
}
body {
background-color: var(--background);
margin: 0;
font-family: var(--native-fonts);
font-size: 1rem;
}
acronym {
border-bottom: dotted 1px black;
}
p {
margin: 1em 0;
}
a,
a:link,
a:visited {
text-decoration: none;
color: var(--dark);
}
a:hover {
border-bottom: dotted 1px var(--darkest);
}
a > img {
border: 0;
}
.pt-title-bar {
display: flex;
flex-direction: row;
justify-content: space-between;
overflow: hidden;
width: 100%;
background-image: linear-gradient(to bottom, var(--darkest), var(--dark));
margin-bottom: 0;
}
.pt-title-bar-left,
.pt-title-bar-right {
flex-grow: 0;
}
.pt-title-bar-center {
flex-grow: 4;
}
.pt-title-bar-home {
float: left;
font-size: 1.25rem;
font-weight: bold;
padding: .5rem 1rem 0 .75rem;
}
.pt-title-bar-home a:link,
.pt-title-bar-home a:visited {
color: white;
}
.pt-title-bar-home a:hover {
border-bottom: none;
}
.pt-title-bar ul {
list-style-type: none;
margin: 0;
padding: 0;
display: inline-block;
}
.pt-title-bar li {
float: left;
}
.pt-title-bar li a,
.pt-title-bar .dropdown-btn,
.pt-title-bar .home-link {
display: inline-block;
color: #9d9d9d;
text-align: center;
padding: .75rem 1rem;
text-decoration: none;
}
.pt-title-bar .home-link {
font-size: 1.1rem;
}
.pt-title-bar li a:hover,
.pt-title-bar .dropdown:hover .dropdown-btn {
color: white;
border-bottom: none;
}
.pt-title-bar li.dropdown {
display: inline-block;
}
.pt-title-bar .dropdown-content {
display: none;
position: absolute;
background-image: linear-gradient(to bottom, var(--dark), var(--lighter-dark));
min-width: 160px;
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
z-index: 1;
}
.pt-title-bar .dropdown-content a {
color: white;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.pt-title-bar .dropdown-content a:hover {
background-color: var(--inverse-backgroud);
color: var(--lighter-dark);
}
.pt-title-bar .dropdown:hover .dropdown-content {
display: block;
}
#pt-body {
padding-bottom: 1rem;
}
#pt-language {
background-color: lightgray;
display: flex;
flex-flow: row wrap;
justify-content: space-between;
border-bottom: solid 1px darkgray;
border-top: solid 1px darkgray;
padding: 0 .75rem;
}
#pt-page-title {
text-align: center;
border-bottom: dotted 1px lightgray;
}
.pt-content {
margin: auto auto 1.5rem auto;
max-width: 60rem;
}
.pt-content.pt-full-width {
max-width: unset;
margin-left: .75rem;
margin-right: .75rem;
}
@media screen and (max-width: 60rem) {
.pt-content {
margin-left: .75rem;
margin-right: .75rem;
}
}
fieldset {
margin: auto auto 1rem auto;
border: solid 1px #ccc;
border-radius: 1rem;
}
input[type=email],
input[type=text],
input[type=password],
input[type=date],
input[type=number],
input[type=url],
select {
border-radius: .2rem;
border-color: var(--lighter-dark);
font-size: 1rem;
padding: .25rem;
font-family: var(--native-fonts);
border-width: 1px;
}
button[type=submit] {
border-radius: .6rem;
padding: .2rem 1rem;
margin-top: .5rem;
background-color: var(--lighter-dark);
border: solid 1px var(--lighter-dark);
color: white;
}
button[type=submit]:hover {
color: var(--lighter-dark);
background-color: var(--inverse-backgroud);
cursor: pointer;
}
footer.pt-footer {
position: fixed;
bottom: 0;
width: 100%;
padding-top: .5rem;
background-image: linear-gradient(to bottom, var(--background), var(--darkest));
display: flex;
flex-flow: row wrap;
justify-content: space-between;
align-items: end;
}
#pt-legal {
padding-left: .75rem;
}
#pt-legal a:link,
#pt-legal a:visited {
color: white;
font-size: 10pt;
background-color: var(--darkest);
padding: 0 .5rem;
border-top-left-radius: .5rem;
border-top-right-radius: .5rem;
}
#pt-legal a:hover {
background-color: var(--lighter-dark);
}
#pt-footer {
border: solid 2px navy;
border-bottom: 0;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
padding: 2px 5px 0 5px;
margin-right: .75rem;
font-size: 70%;
color: navy;
background-color: #eee;
}
#pt-footer img,
#pt-footer span,
#pt-footer i {
vertical-align: bottom;
}
#pt-version {
padding-left: .25rem;
}
footer a:hover {
border-bottom: 0;
}
.pt-center-columns {
display: flex;
flex-flow: column;
align-content: center;
}
.pt-field-row {
display: flex;
flex-flow: row wrap;
align-items: center;
justify-content: center;
gap: 2rem;
}
.pt-field {
display: flex;
flex-flow: column;
padding-bottom: .5rem;
}
.pt-checkbox-field {
display: block;
margin: auto;
padding-bottom: .5rem;
}
.pt-field > label,
.pt-checkbox-field > label {
font-size: .75rem;
text-transform: uppercase;
color: #777;
}
.pt-group {
display: flex;
flex-flow: row;
gap: 1.5rem;
align-items: baseline;
}
.pt-center-text {
text-align: center;
}
.pt-right-text {
text-align: right;
}
.pt-table {
display: grid;
justify-content: center;
}
.pt-table .row.head,
.pt-table .row {
display: contents;
}
.pt-table .row:hover > * {
background-color: #eee;
}
.pt-table .row.head .cell {
background-image: linear-gradient(to bottom, var(--dark), var(--lighter-dark));
font-weight: bold;
color: white;
text-align: center;
font-size: .85rem;
}
.pt-table .row.head .cell:first-of-type {
border-top-left-radius: .5rem;
}
.pt-table .row.head .cell:last-of-type {
border-top-right-radius: .5rem;
}
.pt-table .cell {
padding: .25rem .5rem;
border-bottom: dotted 1px var(--lighter-dark);
}
.pt-table .cell.actions {
border-bottom-color: var(--background);
}
.pt-table .cell.actions a {
background-color: gray;
color: white;
border-radius: .5rem;
padding: 0 .5rem .25rem;
margin: 0 .125rem;
}
.pt-table .row:hover .cell.actions a {
background-color: var(--dark);
}
/* TODO: Figure out nice CSS transitions for these; these don't work */
.pt-fadeable {
height: 0;
overflow: hidden;
transition: all ease-out .5s;
}
.pt-shown {
height: auto;
transition: all ease-in .5s;
}
.pt-icon-link {
white-space: nowrap;
}
article.pt-overview {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-items: flex-start;
}
article.pt-overview section {
max-width: 20rem;
border: solid 1px #444;
border-radius: 1rem;
margin: 2rem;
}
article.pt-overview section header {
text-align: center;
border-top-left-radius: 1rem;
border-top-right-radius: 1rem;
background-image: linear-gradient(to bottom, var(--dark), var(--lighter-dark));
padding: .5rem 1rem;
color: white;
}
article.pt-overview section div {
padding: .5rem;
}
article.pt-overview section div hr {
color: var(--dark);
margin: .5rem -.5rem;
}
article.pt-overview section div p {
margin: 0;
}
.pt-editor {
width: 100%;
}
.pt-messages {
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
}
.pt-msg {
margin: .5rem auto;
border-top-right-radius: .5rem;
border-bottom-left-radius: .5rem;
border-width: 2px;
border-style: solid;
border-collapse: inherit;
padding: 5px 30px;
text-align: center;
}
.pt-msg ul {
text-align: left;
}
.pt-msg.error {
background-color: #ffb6c1;
border-color: #ff0000;
}
.pt-msg.error strong {
color: #ff0000;
}
.pt-msg.warning {
background-color: #fafad2;
border-color: #a0522d;
}
.pt-msg.warning strong {
color: #a0522d;
}
.pt-msg.info {
background-color: #add8e6;
border-color: #000064;
}
.pt-msg .description {
display: inline-block;
vertical-align: top;
margin: auto;
text-align: left;
padding: .25rem 0;
}
.pt-email-heading {
text-decoration: underline;
font-style: italic;
}
.pt-email-canvas {
background-color: white;
width: 95%;
border: dotted 1px navy;
border-radius: 5px;
margin: auto;
}
.pt-search-form input,
.pt-search-form button,
.pt-search-form i.material-icons {
font-size: .8rem;
}
.pt-request-update {
font-style: italic;
}
.pt-request-expired {
text-decoration: line-through;
}
.material-icons.md-18 {
font-size: 18px;
}
.material-icons.md-24 {
font-size: 24px;
}
.material-icons.md-36 {
font-size: 36px;
}
.material-icons.md-48 {
font-size: 48px;
}
.material-icons.md-72 {
font-size: 72px;
}
.material-icons {
vertical-align: middle;
}
.pt-help-link {
padding-right: .25rem;
}
#pt-help {
background-color: #fcfcfc;
}