body {
  font-family: sans-serif;
  background-color: whitesmoke;
  margin: 0;
}

.login {
    width: 18em;
    margin: 1em auto 1em auto;
    display: flex;
    flex-direction: column;
}

.login .help {
    color: darkgray;
    text-align: right;
    margin: 1em 0 0 0;
}

.login .help svg {
    cursor: pointer;
}

.login > * {
    margin: .66em 0 .66em 0;
}

.login label {
    margin-bottom: .33em;
}

.login input {
    margin-top: .33em;
    font-size: x-large;
    font-family: monospace;
    padding: .33em;
    border: 1px solid black;
}

.login input:focus {
    outline: 2px solid slateblue;
}

.login button, .main-menu button, .help-screen button {
    font-size: larger;
    padding: .33em;
    border: none;
    background-color: slateblue;
    color: white;
}

.login button:focus {
    outline: 2px solid darkslateblue;
}

.login button:hover {
    background-color: mediumslateblue;
}

.login .passphrase-help {
    font-size: smaller;
    color: dimgray;
    line-height: 1.4;
}

.login .error {
    padding: 1em;
    line-height: 1.4;
    background-color: lavender;
}

.login a {
    color: black;
}

.items {
    display: flex;
    flex-direction: column;
    gap: .5em;
    padding: .5em;
}

.no-items {
    color: gray;
    text-align: center;
    font-style: italic;
    font-size: x-large;
    padding: 5em 1em 1em 1em;
}

.item {
    font-size: larger;
    cursor: pointer;
    padding: .5em;
}

.item .appear-on {
    color: darkgray;
}

.item.selected {
    background-color: white;
    border-radius: 6px;
}

.tags {
    padding: 1em;
    display: flex;
    flex-direction: column;
    gap: 1em;
}

.tag {
    font-size: xx-large;
    cursor: pointer;
}

.tag .count {
    color: darkgray;
}

.text-icon {
    display: inline-flex;
    flex-direction: column;
    color: white;
    background-color: mediumslateblue;
    border-radius: 6px;
    align-items: center;
    justify-content: center;
    padding: .33em;
    width: 50px;
    height: 50px;
}

.text-icon:active {
    color: mediumslateblue;
    background-color: white;
}

.item-menu .text-icon {
    background-color: gainsboro;
    color: initial;
}

.item-menu .text-icon:active {
    background-color: black;
    color: gainsboro;
}

.text-icon .icon {
    padding: .2em;
}

.text-icon .text {
    padding: .2em;
    font-variant: small-caps;
    font-weight: bold;
    font-size: x-small;
}

.item-menu {
    margin-top: .5em;
    display: flex;
    justify-content: space-between;
    gap: .5em;
}

.main-menu {
    background-color: gainsboro;
    padding: 1em;
    display: flex;
    flex-direction: column;
    gap: 1em;
}

.main-menu .icons {
    display: flex;
    gap: .66em;
    justify-content: space-between;
}

.main-menu input {
    font-size: x-large;
    width: 100%;
    display: block;
    margin: auto;
    box-sizing: border-box;
}

.main-menu input:focus {
    outline: 2px solid slateblue;
}

.app-container {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr min-content;
    height: 100vh;
}

.content {
    overflow: scroll;
}

.title-bar {
    color: white;
    font-variant: small-caps;
    text-align: center;
    font-size: larger;
    padding: .5em 1em .5em 1em;
    background-color: darkslateblue;
}

.clickable {
    cursor: pointer;
}

.disabled {
    cursor: initial;
    opacity: 0.5;
}

.processing input {
    font-size: x-large;
    width: 100%;
    display: block;
    margin: auto;
    box-sizing: border-box;
}

.processing input:focus {
    outline: 2px solid slateblue;
}

.main-menu button, .help-screen button {
    width: 100%;
    box-sizing: border-box;
}

.processing-tag-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .5em;
}

.processing-tag-list div {
    cursor: pointer;
    text-align: center;
    padding: .5em;
    overflow: clip;
    white-space: nowrap;
    background-color: gainsboro;
    border-radius: 6px;
}

.processing-tag-list div:active {
    background-color: mediumslateblue;
    color: white;
}

.processing-controls {
    padding: 1em;
    display: flex;
    flex-direction: column;
    gap: 1em;
}

.calendar {
    display: grid;
    gap: .5em;
    grid-template-columns: repeat(7, 1fr);
    user-select: none;
}

.calendar > div {
    display: flex;
    justify-content: center;
    align-items: center;
}

.calendar .title {
    grid-column: 2 / span 4;
    display: flex;
    font-size: larger;
}

.calendar .prev, .calendar .next {
    cursor: pointer;
    height: 40px;
}

.calendar .prev:active, .calendar .next:active {
    background-color: mediumslateblue;
    color: white;
}

.calendar .next {
    grid-column: 7;
}

.calendar .day {
    justify-self: center;
    align-self: center;
    width: 2em;
    height: 2em;
    border-radius: 2em;
    border: 3px solid transparent;
}

.calendar .day.clickable {
    cursor: pointer;
}

.calendar .day.clickable:active {
    background-color: mediumslateblue;
    color: white;
}

.calendar .day.today {
    color: mediumslateblue;
    border-color: mediumslateblue;
}

.calendar .dow {
    font-variant: small-caps;
}

.calendar .day.past {
    cursor: initial;
    color: gray;
}

.calendar .day.outside {
    color: gray;
    font-style: italic;
}

input.edit-title {
    font-size: x-large;
    width: 100%;
    display: block;
    margin: auto;
    box-sizing: border-box;
}

input.edit-title:focus {
    outline: 2px solid slateblue;
}

.help-screen {
    padding: 1em;
    line-height: 1.4;
}

.help-screen .q {
    font-weight: bold;
    margin-bottom: .5em;
    font-size: larger;
}

.help-screen .a {
    margin-top: .5em;
}

.loading {
    color: gray;
    text-align: center;
    font-style: italic;
    font-size: x-large;
    padding: 5em 1em 1em 1em;
}
