/* Palette follows the Tailwind teal/gray/orange/sky scales used by the
   convention website. */
:root {
  --primary-color: #00786f;

  --link-color: var(--primary-color);
  --link-hover-color: #005f5a;
  --body-bg-color: white;
  --body-fg-color: #364153;
  --header-bg-color: #101828;
  --header-fg-color: white;
  --header-border-color: #fff3;
  --footer-bg-color: #022f2e;
  --footer-fg-color: white;
  --footer-border-color: #022f2e;
  --card-border-color: #00786f88;
  --button-bg-color: var(--primary-color);
  --button-hover-bg-color: #005f5a;
  --button-fg-color: white;
  --button-disabled-bg-color: #DDD;
  --button-disabled-fg-color: #202226;
  --error-fg-color: rgb(174, 0, 0);
  --warn-border-color: #ffc107;
  --warn-bg-color: #fffbe6;
  --inst-border-color: #DDD;
  --select-list-bg-color: #EEE;
  --select-list-hover-bg-color: #DDD;
  --select-list-fg-color: var(--link-color);

  --info-pattern: #009689;
  --info-color-light: #f0fdfa;

  --prog-bg: #00699f;
  --prog-color-light: #f0f9ff;

  --part-bg: #f54a00;
  --part-bg-size: auto;
  --part-bg-pos: 0 0;
  --part-bg-repeat: no-repeat;
  --part-color-light: #fff7ed;

  --events-bg: #364153;
  --events-bg-size: auto;
  --events-color-light: #f9fafb;
}

body {
  box-sizing: border-box;
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  display: flex;
  flex-direction: column;
  min-height: 100dvh;
  font-size: 18px;
  color: var(--body-fg-color);
  background: var(--body-bg-color);
}

[data-loading] {
  display: none;
}

h2 {
  font-size: 2rem;
}

h3 {
  font-size: 1.5rem;
}

h4 {
  font-size: 1.25rem;
}

a, summary {
  color: var(--link-color);
  text-decoration: underline;
  cursor: pointer;
}

a:hover, summary:hover {
  color: var(--link-hover-color);
}

a:not([href]) {
  color: var(--body-fg-color);
  text-decoration: none;
  cursor: text;
}

h3 a {
  color: var(--body-fg-color);
  text-decoration: none;
}

summary {
  float: left;
}

details {
  display: inline-block;
}

details *:nth-child(2) {
  clear: left;
}

p {
  line-height: 1.5;
  margin-bottom: 1em;
}

p + h2, p + h3, p + h4 {
  margin-top: 1em;
}

em {
  font-style: italic;
}

kbd {
  font-style: italic;
}

kbd:before { content: open-quote; }
kbd:after  { content: close-quote; }

img {
  max-width: 100%;
  width: auto;
  height: auto;
}

header {
  background-color: var(--header-bg-color);
  border-bottom: solid 1px var(--header-border-color);
  color: var(--header-fg-color);
}

header a, header a:hover {
  color: var(--header-fg-color);
}

footer {
  margin-top: auto;
  background-color: var(--footer-bg-color);
  border-top: solid 1px var(--footer-border-color);
  color: var(--footer-fg-color);
}

footer .container {
  display: flex;
}

footer .container p {
  width: inherit;
  flex-grow: 1;
}

footer ul {
  display: flex;
  column-gap: 1em;
  row-gap: 0.25em;
  flex-wrap: wrap;
}

footer li {
  display: inline;
}

footer a, footer a:hover {
  color: var(--footer-fg-color);
}

ul ul {
  margin-left: 1em;
}

li {
  margin-bottom: 0.25em;
}

.container {
  max-width: 1240px;
  margin: 0 auto;
  padding: 20px 40px;
  display: flex;
  align-items: center;
}

.site-branding-container {
  display: inline-flex;
  align-items: center;
  text-align: left;
  flex-shrink: 0;
  color: var(--header-fg-color);
  text-decoration: none;
}

.site-logo {
  height: 48px;
  width: auto;
  margin-right: 0.75em;
  background-color: white;
}

.site-branding h1 {
  margin: 0;
  font-size: 1.5rem;
  line-height: 1.2em;
  word-wrap: break-word;
  font-weight: 700;
  text-transform: none;
}

.container p {
  margin-bottom: 0;
  width: 100%;
}


.site-branding a, .site-branding a:hover {
  color: var(--header-fg-color);
  text-decoration: none;
}

.username {
  text-align: right;
}

.breadcrumbs li {
  display: inline;
}

.breadcrumbs li:not(:last-child)::after {
  content: '/';
  margin-left: 0.2em;
}

main {
  max-width: 1240px;
  width: 100%;
  margin: 0 auto;
  padding: 20px 40px;
}

.cards {
  display: grid;
  column-gap: 20px;
  row-gap: 20px;
  grid-template-columns: repeat(6, minmax(175px, 1fr));
  grid-auto-rows: auto 105px;
  text-align: center;
  padding-bottom: 2em;
}

.category h2 {
  margin-bottom: 0.25em;
}

.card {
  position: relative;
  display: grid;
  grid-row: span 2;
  grid-template-rows: subgrid [image-start][image-end title-start] [title-end];
  grid-template-columns: subgrid;
  row-gap: 0;
  padding: 0 20px;
  border-radius: 10px;
  box-shadow: hsla(0, 0%, 39%, 0.2) 0px 2px 8px 0px;
  transition: all 0.1s ease-in;
  font-weight: normal;
  border: solid 1px #CCC;
}
.card h3 a {
  color: rgb(34, 34, 34);
  text-decoration: none;
}

.card h3 a::before {
  content: ' ';
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: 10px;
}

.card:hover:not(.coming-soon), .card:focus-within:not(.coming-soon) {
  background-color: rgb(245, 245, 245);
  box-shadow: rgba(0, 0, 0, 0.25) 0px 14px 28px, rgba(0, 0, 0, 0.22) 0px 10px 10px;
  transform: scale(1.02, 1.02);
  outline: solid 4px var(--card-border-color);
}

@media (prefers-reduced-motion) {
  .card:hover:not(.coming-soon), .card:focus-within:not(.coming-soon) {
    transition: none;
    transform: none;
    outline: solid 4px var(--card-border-color);
  }
}

.card.coming-soon {
  cursor: default;
  filter: grayscale(100%);
}

/* Only the image fades, so the title keeps its contrast */
.card.coming-soon .hero {
  opacity: 0.6;
}

#favs h2 {
  display: flex;
  align-items:center;
}

#favs h2 img {
  width: 0.9em;
  height: 0.9em;
  margin-right: 0.1em;
}

.card .hero {
  position: relative;
  grid-area: image;
  margin: 0 -20px 5px -20px;
  aspect-ratio: 1.5 / 1;
  border-top-left-radius: 10px;
  border-top-right-radius: 10px;
}

.card .hero::after {
  content: ' ';
  position: absolute;
  top: 10px;
  right: 10px;
  bottom: 10px;
  left: 10px;
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
  background-image: url('/resources/unknown.png');
}

.card.time {
  background-color: var(--info-color-light);
}
.card.time .hero {
  font-size: 3em;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--info-pattern);
}
.card.time .hero::after {
  background-image: none;
}

.card.readme {
  background-color: var(--info-color-light);
}
.card.readme .hero {
  background: var(--info-pattern);
}
.card.readme .hero::after {
  background-image: url('/resources/readme.svg');
}

.card.guide {
  background-color: var(--prog-color-light);
}
.card.guide .hero {
  background: var(--prog-bg);

}
.card.guide .hero::after {
  background-image: url('/resources/guide.svg');
}

.card.maps {
  background-color: var(--info-color-light);
}
.card.maps .hero {
  background: var(--info-pattern);
}
.card.maps .hero::after {
  background-image: url('/resources/maps.svg');
}

.card.times {
  background-color: var(--info-color-light);
}
.card.times .hero {
  background: var(--info-pattern);
}
.card.times .hero::after {
  background-image: url('/resources/times.svg');
}

.card.stream {
  background-color: var(--prog-color-light);
}
.card.stream .hero {
  background: var(--prog-bg);
}
.card.stream .hero::after {
  background-image: url('/resources/stream.svg');
}

.card.chat {
  background-color: var(--prog-color-light);
}
.card.chat .hero {
  background: var(--prog-bg);
}
.card.chat .hero::after {
  background-image: url('/resources/chat.svg');
}

.card.signups {
  background-color: var(--prog-color-light);
}
.card.signups .hero {
  background: var(--prog-bg);
}
.card.signups .hero::after {
  background-image: url('/resources/signups.svg');
}

.card.tours {
  background-color: var(--prog-color-light);
}
.card.tours .hero {
  background: var(--prog-bg);
}
.card.tours .hero::after {
  background-image: url('/resources/tours.svg');
}

.card.virtual-gathering {
  background-color: var(--prog-color-light);
}
.card.virtual-gathering .hero {
  background: var(--prog-bg);
}
.card.virtual-gathering .hero::after {
  background-image: url('/resources/virtual-gathering.svg');
}


.card.newsletter {
  background-color: var(--info-color-light);
}
.card.newsletter .hero {
  background: var(--info-pattern);
}
.card.newsletter .hero::after {
  background-image: url('/resources/newsletter.svg');
}

.card.accessibility {
  background-color: var(--info-color-light);
}
.card.accessibility .hero {
  background: var(--info-pattern);
}
.card.accessibility .hero::after {
  background-image: url('/resources/accessibility.svg');
}

.card.volunteer {
  background-color: var(--part-color-light);
}
.card.volunteer .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.volunteer .hero::after {
  background-image: url('/resources/volunteer.svg');
}

.card.gallery {
  background-color: var(--events-color-light);
}
.card.gallery .hero {
  background: var(--events-bg);
  background-size: var(--events-bg-size);
}
.card.gallery .hero::after {
  background-image: url('/resources/gallery.svg');
}

.card.benefits {
  background-color: var(--events-color-light);
}
.card.benefits .hero {
  background: var(--events-bg);
  background-size: var(--events-bg-size);
}
.card.benefits .hero::after {
  background-image: url('/resources/benefits.svg');
}

.card.card.itinerary {
  background-color: var(--part-color-light);
}
.card.itinerary .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.itinerary .hero::after {
  background-image: url('/resources/itinerary.svg');
}

.card.card.participant-guides {
  background-color: var(--part-color-light);
}
.card.participant-guides .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.participant-guides .hero::after {
  background-image: url('/resources/participant-guides.svg');
}



.card.childcare {
  background-color: var(--info-color-light);
}
.card.childcare .hero {
  background: var(--info-pattern);
}
.card.childcare .hero::after {
  background-image: url('/resources/childcare.svg');
}

.card.coc {
  background-color: var(--info-color-light);
}
.card.coc .hero {
  background: var(--info-pattern);
}
.card.coc .hero::after {
  background-image: url('/resources/coc.svg');
}

.card.help {
  background-color: var(--info-color-light);
}
.card.help .hero {
  background: var(--info-pattern);
}
.card.help .hero::after {
  background-image: url('/resources/help.svg');
}

.card.website {
  background-color: var(--info-color-light);
}
.card.website .hero {
  background: var(--info-pattern);
}
.card.website .hero::after {
  background-image: url('/resources/website.svg');
}

.card.manage-roles, .card.manage-discord, .card.manage-programme, .card.manage-login-sessions, .card.programme-reports, .card.manage-business-meeting, .card.site-selection-desk, .card.manage-site-selection {
  background-color: var(--events-color-light);
}
.card.manage-roles .hero, .card.manage-discord .hero, .card.manage-programme .hero, .card.manage-login-sessions .hero, .card.programme-reports .hero, .card.manage-business-meeting .hero, .card.site-selection-desk .hero, .card.manage-site-selection .hero {
  background: var(--events-bg);
  background-size: var(--events-bg-size);
}
.card.manage-roles .hero::after, .card.manage-discord .hero::after, .card.manage-programme .hero::after, .card.manage-login-sessions .hero::after, .card.programme-reports .hero::after, .card.manage-business-meeting .hero::after, .card.site-selection-desk .hero::after, .card.manage-site-selection .hero::after {
  background-image: url('/resources/manage.svg');
}

.card.business-meeting {
  background-color: var(--part-color-light);
}
.card.business-meeting .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.business-meeting .hero::after {
  background-image: url('/resources/business-meeting.svg');
}

.card.site-selection {
  background-color: var(--part-color-light);
}
.card.site-selection .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.site-selection .hero::after {
  background-image: url('/resources/site-selection.svg');
}

.card.card.upload-presentation {
  background-color: var(--part-color-light);
}
.card.upload-presentation .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.upload-presentation .hero::after {
  background-image: url('/resources/upload-presentation.svg');
}

.card.card.upload-photo {
  background-color: var(--part-color-light);
}
.card.upload-photo .hero {
  background: var(--part-bg);
  background-size: var(--part-bg-size);
  background-position: var(--part-bg-pos);
  background-repeat: var(--part-bg-repeat);
}
.card.upload-photo .hero::after {
  background-image: url('/resources/upload-photo.svg');
}

.card hgroup {
  grid-area: title;
}

.card h3 {
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  margin-bottom: 5px;
  font-size: 24px;
}

.card h4 {
  font-size: 18px;
  margin-bottom: 10px;
}

@media screen and (max-width: 1230px) {
  .cards {
    grid-template-columns: repeat(5, minmax(137px, 0.5fr));
  }
}

@media screen and (max-width: 950px) {
  .cards {
    grid-template-columns: repeat(4, minmax(137px, 0.5fr));
  }
}

@media screen and (max-width: 825px) {
  .cards {
    grid-template-columns: repeat(3, minmax(137px, 0.5fr));
  }
}

@media screen and (max-width: 625px) {
  .cards {
    grid-template-columns: repeat(2, minmax(137px, 0.5fr));
  }
}

@media screen and (max-width: 465px) {
  .cards {
    grid-template-columns: repeat(2, minmax(137px, 0.5fr));
  }

  .card.time .hero {
    font-size: 1.5em;
  }

  .card h3 a {
    font-size: 80%;
  }
}

@media screen and (max-width: 425px) {
  .cards {
    grid-template-columns: repeat(2, minmax(137px, 0.5fr));
  }
}

.fav {
  background-image: url('/resources/fav-empty.svg');
  background-size: 20px 20px;
  background-position: 10px 10px;
  background-repeat: no-repeat;
  background-color: transparent;
  opacity: 0.5;
  border: 0;
  width: 40px;
  height: 40px;
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  cursor: pointer;
}


.fav:hover, .fav:focus {
  opacity: 1 !important;
}

.card .faved {
  background-image: url('/resources/fav-full.svg');
  opacity: 1 !important;
}

.faved:hover, .faved:focus {
  background-image: url('/resources/fav-minus.svg');
}

@media (hover: hover) {
  .fav {
    opacity: 0;
  }

  .card:hover .fav, .card:active .fav, .card:focus-within .fav {
    opacity: 0.5;
  }  
}

.other {
  background-color: var(--header-bg-color);
  backdrop-filter: blur(10px);
  border-radius: 10px;
  padding: 0.5em 1em;
  margin-top: 1rem;
}

.other h2 {
  font-size: 1.5rem;
  line-height: 1.5;
}

.other li {
  font-size: 1.2rem;
  line-height: 1.5;
}

article {
  line-height: 1.5;
  margin-top: 1em;
  max-width: 80ch;
}

article ul {
  list-style: disc;
  margin-bottom: 20px;
}

.button {
  display: inline-flex;
  padding: 10px 20px;
  background-color: var(--button-bg-color);
  text-decoration: none;
  color: var(--button-fg-color);
  border-radius: 3px;
  transition: color .1s ease-in-out, background-color .1s ease-in-out;
  box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
}

.button:hover {
  background-color: var(--button-hover-bg-color);
  color: var(--button-fg-color);
  box-shadow: rgba(0, 0, 0, 0.35) 0px 3px 8px;
}

.button.disabled {
  background-color: var(--button-disabled-bg-color);
  color: var(--button-disabled-fg-color);
  cursor: default;
  box-shadow: none;
}

form p {
  margin-bottom: 0;
}

form .label {
  font-weight: bold;
}

form .hint {
  font-style: italic;
}

form input[type='submit'], form input[type='button'] {
  padding: 10px 20px;
  margin-top: 10px;
  border: none;
  cursor: pointer;
  transition: color .1s ease-in-out, background-color .1s ease-in-out;
}

form input[type='submit'] {
  background-color: var(--button-bg-color);
  color: var(--button-fg-color);
}

form input[type='button'] {
  background-color: var(--button-bg-color);
  color: var(--button-fg-color);
}

form input[type='submit']:hover {
  background-color: var(--button-hover-bg-color);
  color: var(--button-fg-color);
}

form input[type='button']:hover {
  background-color: var(--button-hover-bg-color);
  color: var(--button-fg-color);
}

form input[type='submit']:disabled,
form input[type='submit']:disabled:hover,
form input[type='input']:disabled,
form input[type='input']:disabled:hover {
  background-color: var(--button-disabled-bg-color);
  color: var(--button-disabled-fg-color);
  cursor: default;
  background-image: url('/resources/spinner.gif');
  background-size: 20px;
  background-repeat: no-repeat;
  background-position: center right 10px;
  padding-right: 38px;
}

legend {
  font-weight: bold;
}

.filled-in-field {
  margin-top: 10px;
}

.filled-in-field a {
  margin-left: 1em;
}

fieldset {
  margin-top: 20px;
}

.error {
  margin-top: 20px;
  color: var(--error-fg-color);
}

.error img {
  width: 1em;
  height: 1em;
  margin-right: 0.25em;
}

.info {
  margin-top: 20px;
}

.warn {
  margin: 20px 0;
  padding: 10px;
  border: 1px solid var(--warn-border-color);
  border-radius: 10px;
  background-color: var(--warn-bg-color);
}

.warn img {
  float: left;
  width: 2em;
  height: 2em;
  margin-right: 0.5em;
}

.warn ul {
  padding-left: 1.5em;
}

.join-link code {
  word-break: break-all;
}

.required {
  color: var(--error-fg-color);
}

.site-selection-details label {
  display: block;
}

.site-selection-details textarea,
.site-selection-details select {
  width: 100%;
  box-sizing: border-box;
  font: inherit;
}

.site-selection-details textarea {
  max-width: 36rem;
  min-height: 12rem;
}

.site-selection-details select {
  max-width: 24rem;
  padding: 0.4em 0.6em;
}

.site-selection-details .checkbox {
  max-width: 36rem;
}

.site-selection-details .checkbox label {
  display: flex;
  gap: 0.5em;
  align-items: flex-start;
}

.site-selection-details .checkbox input {
  margin-top: 0.25em;
}

textarea.token-csv {
  width: 100%;
  max-width: 800px;
  box-sizing: border-box;
  font-family: monospace;
}

article.full-width {
  max-width: none;
}

button.button {
  border: none;
  cursor: pointer;
}

ul.pagination {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 1rem 0;
}

ul.pagination a[aria-current] {
  font-weight: bold;
}

.inline-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.inline-actions form input[type='submit'] {
  margin-top: 0;
}

dialog.confirm {
  padding: 1.5rem;
  border: none;
  border-radius: 8px;
  max-width: 28rem;
  width: calc(100% - 2rem);
  box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px, rgba(0, 0, 0, 0.35) 0px 8px 24px;
}

dialog.confirm::backdrop {
  background: rgba(0, 0, 0, 0.4);
}

dialog.confirm dl {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.3rem 1rem;
  margin: 1rem 0 1.5rem;
}

dialog.confirm dt {
  font-weight: bold;
}

dialog.confirm .buttons {
  display: flex;
  gap: 1rem;
  justify-content: flex-end;
  align-items: center;
}

@media only screen and (max-width: 40em) {
  .container {
    flex-direction: column;
    align-items: start;
  }
  .username {
    text-align: left;
    padding-top: 10px;
  }
  form input[type='email'], form input[type='password']{
    max-width: 100%;
  }
}

table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
}

td, th {
  padding: 10px;
}

th {
  background-color: var(--primary-color);
  color: white;
  text-align: left;
  font-weight: bold;
}

.new-badgeno-row {
  border-top: solid 1px #DDD;
}

ol {
  list-style-type: decimal;
  margin: 0 0 1em 1em;
}

ol ol {
  list-style-type: lower-latin;
}

sup {
  vertical-align: super;
  font-size: smaller;
  line-height: normal;
}

#permissions {
  display: flex;
  flex-wrap: wrap;
  flex-direction: column;
}

form.vertical label {
  display: flex;
  flex-direction: column;
  margin-bottom: 0.5em;
}

.login {
  margin-bottom: 0.5em;
}

.wizard .content {
  margin: 0 1em;
}

.wizard header {
  padding-left: 2.5em;
  background-repeat: no-repeat;
  background-position: 0.3em 0.5em;
  background-size: 2em;
  line-height: 2;
  border-bottom: none;
  margin-bottom: 1em;
}

.wizard header.active {
  background-color: var(--button-disabled-bg-color);
  color: var(--button-disabled-fg-color);
}

.wizard header.pending, .wizard header.active {
  background-image: url('/resources/step-pending.svg');
}

.wizard header.complete {
  background-image: url('/resources/step-complete.svg');
}

.instructions img {
  border: solid 1px var(--inst-border-color);
}

ul.maps {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  column-gap: 20px;
  row-gap: 20px;
}

ul.maps li a {
  display: flex;
  flex-direction: column;
}

#times-toc {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(17em, 1fr));
}

#times-toc li {
  margin-right: 1em;
}

.times-list {
  list-style: none;
}

.times-list li {
  position: relative;
  margin-bottom: 0.5em;
}

.times-list p {
  margin: 0;
}

.times-list p:first-of-type {
  font-weight: bold;
}

.times-list p:last-of-type {
  position: absolute;
  top: 0;
  left: 20ch;
}

@media (max-width: 500px) {
  .times-list p:last-of-type {
    position: relative;
    top: auto;
    left: auto;
  }
}

.dt {
  font-weight: bold;  
}

#url {
  width: 100%;
  display: flex;
}

#url input[type=text] {
  padding: 10px;
  flex-grow: 1;
}

#url button {
  width: 10ch;
}

#qr-code {
  max-width: 404px;
  max-height: 404px;
}

@media (prefers-contrast: more) {
  :root {
    --primary-color: #005f5a;
  
    --link-color: var(--primary-color);
    --link-hover-color: black;
    --body-bg-color: white;
    --body-fg-color: black;
    --header-bg-color: #000;
    --header-border-color: white;
    --footer-bg-color: #1f1f1f;
    --footer-fg-color: white;
    --footer-border-color: white;
    --card-border-color: #00000088;
    --button-bg-color: var(--primary-color);
    --button-hover-bg-color: #022f2e;
    --button-fg-color: white;
    --button-disabled-bg-color: #DDD;
    --button-disabled-fg-color: black;
    --error-fg-color: rgb(174, 0, 0);
    --warn-border-color: black;
    --warn-bg-color: white;
    --inst-border-color: black;
  }

  .card {
    outline: solid 1px var(--card-border-color);
  }

  body.home {
    background-image: none;
  }
}

button {
  font: inherit;
}

.button.link {
  background: none;
  color: var(--link-color);
  text-decoration: underline;
  box-shadow: none;
  text-align: left;
  padding: 0;
  margin: 0;
  border: none;
  cursor: pointer;
}

.button.link:hover {
  color: var(--link-hover-color);
}

.nu-form {
  display: grid;
  gap: 0.75rem;
  max-width: 40ch;
  margin-bottom: 1.25em;
}

.login-links {
  display: grid;
  gap: 0.5rem;
  margin: 1.5rem 0;
}

.login-links p {
  margin: 0;
}

.login-links + .login-links {
  margin-top: -1rem;
}

.nu-form .form-group {
  display: grid;
}

.nu-form label {
  font-weight: bold;
}

.nu-form button, .nu-form input[type=submit] {
  max-width: fit-content;
}

.nu-form input {
  font: inherit;
  padding: 0.5em;
  border: solid 1px #CCC;
  border-radius: 3px;
}

.code-input {
  font-family: monospace;
  font-size: 2rem;
  letter-spacing: 0.5em;
  padding: 0.4em 0.5em;
  width: calc(6ch + 6 * 0.5em + 1.5em);
}

#user-select {
  list-style: none;
  display: grid;
  padding: 0;
}

#user-select li button {
  display: flex;
  align-items: center;
  gap: 0.5em;
  width: 100%;
  line-height: 2em;
  padding: 1em;
  border: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
  background: var(--select-list-bg-color);
  color: var(--select-list-fg-color);
}

#user-select li button:hover {
  background: var(--select-list-hover-bg-color);
}

#user-select .avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 100em;
  height: 2em;
  width: 2em;
  color: #FFFB;
}

#user-select .avatar.color-1 {
  background: #F8EE7A;
  color: #0008;
}

#user-select .avatar.color-2 {
  background: #D24848;
}

#user-select .avatar.color-3 {
  background: #EC6B54;
}

#user-select .avatar.color-4 {
  background: #87ABDF;
}

.username {
  margin-left: auto;
}

@media only screen and (max-width: 40em) {
  .username {
    margin-left: 0;
  }
}

#user-dropdown {
  position: relative;
  display: inline-block;
}

#user-menu-toggle {
  position: absolute;
  left: -9999px;
  opacity: 0;
}

#user-menu-label {
  color: var(--header-fg-color);
  cursor: pointer;
}

#user-menu-label:hover,
#user-menu-toggle:focus + #user-menu-label {
  text-decoration: underline;
}

#user-menu-toggle:focus-visible + #user-menu-label {
  outline: 2px solid highlight;
  outline-offset: 2px;
}

#user-menu-label::after {
  content: ' ▾';
  font-size: 0.8em;
}

#user-menu-toggle:checked + #user-menu-label::after {
  content: ' ▴';
}

#user-dropdown-menu {
  position: absolute;
  top: 1.5em;
  right: -0.5em;
  min-width: 18ch;
  z-index: 1000;
  background: var(--body-bg-color);
  border: 1px solid var(--inst-border-color);
  border-radius: 0.5em;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-5px);
  transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
}

#user-menu-toggle:checked ~ #user-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

#user-dropdown-menu a {
  display: block;
  padding: 0.5em 1em;
  color: var(--body-fg-color);
  text-decoration: none;
  text-align: left;
  border-bottom: 1px solid var(--inst-border-color);
}

#user-dropdown-menu a:first-child {
  border-top-left-radius: 0.5em;
  border-top-right-radius: 0.5em;
}

#user-dropdown-menu a:last-child {
  border-bottom: none;
  border-bottom-left-radius: 0.5em;
  border-bottom-right-radius: 0.5em;
}

#user-dropdown-menu a:hover,
#user-dropdown-menu a:focus {
  background: var(--select-list-bg-color);
  color: var(--link-color);
}

#user-select li button[aria-current] {
  background: var(--select-list-hover-bg-color);
}

.nu-form .error-message {
  color: var(--error-fg-color);
}

.message {
  margin-top: 20px;
}

.profile-details {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.5rem 1.5rem;
  margin-bottom: 1.25em;
}

.profile-details dt {
  font-weight: bold;
}

#timezone-converter {
  display: flex;
  gap: 2rem;
  flex-wrap: wrap;
  margin-top: 1.5rem;
}

.converter-column {
  flex: 1;
  min-width: 250px;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.converter-column label {
  font-weight: bold;
}

.converter-column input,
.converter-column select {
  padding: 0.5rem;
  font-size: 1rem;
  border: 1px solid #ccc;
  border-radius: 4px;
}
