:root {
  /* CSS HSL */
  --rich-black: hsla(216, 100%, 4%, 1);
  --oxford-blue: hsla(211, 100%, 12%, 1);
  --yale-blue: hsla(209, 100%, 20%, 1);
  --mikado-yellow: hsla(46, 100%, 50%, 1);
  --gold: hsla(50, 100%, 52%, 1);

  /* colors in 0.3 opacity */
  --rich-black-03: hsla(216, 100%, 4%, 0.3);
  --oxford-blue-03: hsla(211, 100%, 12%, 0.3);
  --yale-blue-03: hsla(209, 100%, 20%, 0.3);
  --mikado-yellow-03: hsla(46, 100%, 50%, 0.3);
  --gold-03: hsla(50, 100%, 52%, 0.3);

  /* colors in 0.05 opacity */
  --rich-black-005: hsla(216, 100%, 4%, 0.05);
  --oxford-blue-005: hsla(211, 100%, 12%, 0.05);
  --yale-blue-005: hsla(209, 100%, 20%, 0.05);
  --mikado-yellow-005: hsla(46, 100%, 50%, 0.05);
  --gold-005: hsla(50, 100%, 52%, 0.05);

  --must-border-radius: 2px;
  --must-box-shadow: 0px 8px 6px #00000026;
  --must-scrollbar-width: 9px;
  --must-mq-white: #fff;
  --must-mq-black: #000;
  --must-mq-blue: #006ce5;
  --must-mq-grey-10: #f7f6f6;
  --must-mq-grey-20: #ebebeb;
  --must-mq-grey-30: #d6d6d6;
  /* slightly green variant of grey 30 */
  --must-mq-grey-30-green: #c2e2c2;
  --must-mq-grey-40: silver;
  --must-mq-grey-50: #aaa;
  --must-mq-grey-60: #929292;
  --must-mq-grey-70: #7a7a7a;
  --must-mq-grey-90: #444;
  --must-mq-grey-100: #232323;
  --must-font-main: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial,
    sans-serif;
  --must-font-mono: monospace;
  --must-checkerboard: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAAH6ji2bAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACRFdLHAAAAmUlEQVQ4EeVTWw7AIAjDXcn730DP5KxJCR/NQjKXfcgPr1IEtbTWhk2ptdoFg1LGFDi9dzPAIA5ZaaQKGYAFC8SL4SwCBIkkCkknhEORQeckH9AayUbkg45NGZfVTEbtvWMwnoPxNGMa6FtjC+hXw6Rb7wf+uMcPhlHPLN4SbXVbzEWdPmIserIPJJQvTO1I/V6FO3CH20e+AXluTDqe7hKAAAAAAElFTkSuQmCC);
  --must-bg-checkerboard: var(--must-checkerboard) top left / 10px;
  --must-paint-none: linear-gradient(
    -45deg,
    #fff,
    #fff calc(50% - 1px),
    red calc(50% - 1px),
    red calc(50% + 1px),
    #fff calc(50% + 1px),
    #fff
  );
  --must-transition: cubic-bezier(0.23, 1, 0.32, 1);
  /* Colors */
  --color-primary: #333333;
  --color-secondary: #666666;
  --color-background: #f5f5f5;
  --color-white: #ffffff;
  --color-border: #e0e0e0;
  --color-success: #28a745;
  --color-warning: #ffc107;
  --color-danger: #dc3545;
  --color-link: #0066cc;

  /* Typography */
  --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    Oxygen-Sans, Ubuntu, Cantarell, sans-serif;
  --font-size-xs: 12px;
  --font-size-sm: 14px;
  --font-size-md: 16px;
  --font-size-lg: 18px;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-bold: 600;

  /* Spacing */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 24px;
  --spacing-xl: 32px;

  /* Border radius */
  --border-radius-sm: 4px;
  --border-radius-md: 8px;
  --border-radius-lg: 12px;

  color: var(--must-mq-black);
  font-family: var(--must-font-main);
}

body {
  min-height: 100vh;
}

.grid {
  display: grid;
  grid-gap: 1rem;
}

@supports (width: min(250px, 100%)) {
  .grid {
    grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr));
  }
}

section {
  margin: 1em 0;
}

.front a {
  display: inline-block;
  line-height: 160px;
  font-size: 2em;
  text-decoration: none;
  outline-offset: -0.5em;
}

section.sidebar-closed {
  margin: 0;
  flex-shrink: 0;
  flex-grow: 0;
  flex-basis: 76px;
  background: var(--must-mq-grey-20);
  transition: flex-basis 250ms ease-in-out;
}

section.sidebar-open {
  margin: 0;
  flex-shrink: 0;
  flex-grow: 0;
  flex-basis: 320px;
  background: var(--must-mq-grey-20);
  transition: flex-basis 250ms ease-in-out;
}

section.front {
  min-height: 160px;
}

section.search {
  margin: 1em 0;
  padding: 1em;
  background: var(--gold-005);
}

section.link {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  text-align: center;
}

section.about {
  /* dark background */
  background: var(--oxford-blue);
  color: var(--gold);
}

section.stats {
  /* dark background */
  background: var(--yale-blue);
  color: var(--mikado-yellow);
  font-size: larger;
  display: inline-flex;
  flex-direction: column;
  justify-items: flex-start;
}

.inline-start {
  display: inline-flex;
  flex-direction: column;
  justify-items: flex-start;
  align-items: flex-start;
  margin: 0 auto;
}

section.recent {
  /** gold background */
  background: var(--gold);
  color: var(--oxford-blue);
}

section.random {
  /** yellow 003 background */
  background: var(--mikado-yellow-03);
  color: var(--oxford-blue);
}

section.recent {
  /** yellow background */
  background: var(--mikado-yellow);
  color: var(--oxford-blue);
}

section.results {
  margin: 1em 0;
  padding: 1em;
  background: var(--gold-005);
}

section.link a:hover,
section.link a:focus {
  text-decoration: underline;
  box-shadow: 0px 0px 4px 0px var(--rich-black-03);
}

a {
  color: inherit;
}

header {
  background: var(--must-mq-white);
  color: var(--must-mq-grey-90);
  position: relative;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  gap: 0.5em;
  height: 76px;
  min-height: 76px;
  padding-inline-end: 1em;
  /* very thin light grey bottom border */
  border-bottom: 1px solid var(--must-mq-grey-20);
}

.smaller {
  display: block;
  font-size: 0.75em;
  color: var(--oxford-blue);
  margin-block-end: 0.25em;
}

header nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 1em 0;
  outline-color: var(--gold);
  outline-offset: 0.25em;
}

header h1 {
  margin: 0;
  flex-grow: 1;
  padding-inline-start: 1em;
}

header a,
header a:visited {
  text-decoration: none;
  word-wrap: none;
}

.last-header-item {
  margin-inline-end: 1em;
}

nav ul {
  display: flex;
  gap: 1em;
  list-style: none;
  margin: 0 1em 0 0;
  padding: 0;
}

nav ul:last-child {
  margin-block-end: 3em;
}

footer {
  text-align: center;
  color: var(--oxford-blue);
}

footer a {
  color: var(--oxford-blue);
  text-decoration: underline;
}

footer a:hover,
footer a:focus {
  color: var(--oxford-blue);
  text-decoration: underline;
}

.flow > * + * {
  margin-top: var(--flow-space, 1em);
}

input[type="text"] {
  width: 100%;
  padding: 0.5em;
  border: 1px solid var(--rich-black);
  border-radius: 0.25em;
  background: var(--gold-005);
  color: var(--oxford-blue);
}

label {
  display: block;
  font-weight: bold;
}

.button_parent {
  display: flex;
  justify-content: flex-end;
  align-items: last baseline;
  margin: 1em 0;
  outline-color: var(--gold);
  outline-offset: 0.25em;
}

.expand {
  text-decoration: none;
  font-variant: small-caps;
}

button,
input[type="submit"],
.expand {
  min-width: 10ch;
  display: inline-block;
  padding: 0.5em 1em;
  border: none;
  border-radius: var(--must-border-radius);
  background: var(--must-mq-grey-90);
  color: var(--must-mq-white);
  cursor: pointer;
  text-align: center;
  transition: background 250ms ease-in-out, transform 150ms ease;
  -webkit-appearance: none;
  -moz-appearance: none;
}

button:hover,
button:focus,
input[type="submit"]:hover,
input[type="submit"]:focus,
.expand:hover,
.expand:focus {
  background: var(--oxford-blue);
}

button:focus,
input[type="submit"]:focus .expand:focus {
  outline: 1px solid #fff;
  outline-offset: -4px;
}

button:active,
input[type="submit"]:active,
.expand:active {
  transform: scale(0.99);
}

span.help {
  display: block;
  font-size: 0.75em;
  color: var(--oxford-blue);
  margin-block-end: 0.25em;
}

ul {
  margin: 0;
  padding: 0;
}

li {
  margin: 0.5em 0;
  list-style-type: none;
  padding: 0;
}

.icon_holder_row {
  display: flex;
  justify-content: space-between;
  align-items: last baseline;
  margin: 1em 0;
  outline-color: var(--gold);
  outline-offset: 0.25em;
}

.icons {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: last baseline;
  outline-color: var(--gold);
  outline-offset: 0.25em;
  gap: 0.5em;
}

.icon_svg {
  width: 1em;
  height: 1em;
  vertical-align: middle;
}

main {
  min-height: calc(100vh - 76px);
  display: flex;
  flex-direction: row;
  justify-content: stretch;
  align-items: stretch;
}

p.error-message {
  color: red;
  font-size: 0.75em;
}

span.calculating {
  color: var(--oxford-blue);
  font-size: 0.75em;
}

.main_content {
  flex-grow: 1;
}

.sidebar-nav {
  height: calc(100vh - 2em);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}

.sidebar-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  margin-block-start: 2em;
  display: flex;
  flex-direction: column;
  padding-inline-start: 1.5em;
  gap: 0.5em;
  width: 100%;
}

nav.sidebar-nav li.active {
  border-block-end: transparent solid 2px;
}

.sidebar-nav li.link {
  border-block-end: transparent solid 2px;
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  gap: 2em;
}

.sidebar-link-text {
  white-space: nowrap;
  overflow: hidden;
  padding-inline-start: 0.5em;
  text-overflow: ellipsis;
  padding-block-end: 0.25em;
  text-overflow: ellipsis;
}

div.closed {
  display: none;
  /* one line of content always */

  transition: display 250ms ease-in-out;
}

.sidebar-link {
  padding-inline: 0.25em;
}

.sidebar-nav img:hover,
.sidebar-nav img:focus,
.sidebar-nav img:active {
  background: var(--must-mq-grey-10);
}

.sidebar-link:hover,
.sidebar-link:focus,
.sidebar-link:active {
  background: var(--must-mq-grey-10);
}
/* no underline for navigation links */
.sidebar-link,
.sidebar-link:visited,
.sidebar-link:hover,
.sidebar-link:focus,
.sidebar-link:active {
  text-decoration: none;
}

/* add some padding to details section */
section.details {
  margin: 2em;
  padding: 2em 0 2em 0;
  border-radius: 1em;
  /* thin light grey border */
  border: 1px solid var(--must-mq-grey-30);
}

section.details h2 {
  margin-inline-start: 0.5em;
}

.details table {
  border-collapse: collapse;
  width: 100%;
  margin-block-end: 1em;
  /* thin border only at the bottom */
}

.details th,
.details td {
  text-align: start;
  border-collapse: collapse;
  border-bottom: 1px solid var(--must-mq-grey-30);
  padding: 1em;
}

.details td {
  padding: 1em;
  width: 30ch;
  max-width: 30ch;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  empty-cells: show;
  border-collapse: collapse;
}

div.row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: last baseline;
  outline-color: var(--gold);
  outline-offset: 0.25em;
  gap: 0.5em;
  padding-inline-end: 1em;
}

article {
  margin: 1em 0;
  padding: 1em;
}

div.dialog-form-row {
  padding-block-start: 1em;
}

div.dialog-button-row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  gap: 1em;
  align-items: last baseline;
  padding-block: 1em;
}

div.details-title {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: last baseline;
  gap: 1em;
  padding-inline-end: 2em;
}

.gone {
  display: none;
}

/* use the same gradient background for disabled buttons */
button:disabled,
input[type="submit"]:disabled,
.expand:disabled {
  background: linear-gradient(
    -45deg,
    var(--must-mq-grey-40),
    var(--must-mq-grey-70) 50%,
    var(--must-mq-grey-70) 50%,
    var(--must-mq-grey-40)
  );
  color: var(--must-mq-white);
  cursor: not-allowed;
}

form.hide-submit input[type="submit"] {
  display: none;
}

.auth_main {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 1em;
  border: 1px solid var(--must-mq-grey-30);
}

.auth_main_content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 1em;
  padding: 3em;
  /* thin light grey border */
  border: 1px solid var(--must-mq-grey-30);
  border-radius: 2em;
  box-shadow: var(--must-box-shadow);
}

.loading_spinner {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  gap: 1em;
  padding: 4em;
}

.login_form {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 1em;
  width: 100%;
}

.login_form table {
  width: 100%;
}

.login_form label {
  display: block;
  font-weight: bold;
  margin-block-end: 0.5em;
}

.login_form input[type="text"],
.login_form input[type="password"] {
  width: 100%;
  padding: 0.5em;
  border: 1px solid var(--must-mq-black);
  border-radius: 0.25em;
  background: var(--must-mq-grey-10);
  color: var(--must-mq-grey-100);
}

/* login button align to flex-end */
.login_form input[type="submit"] {
  align-self: flex-end;
}

/* no border, no padding */
dialog {
  border: none;
  padding: 0;
  border-radius: 2em;
}

.dialog_title {
  display: flex;
  flex-direction: row;
  gap: 1em;
}

.dialog_content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 1em;
  padding: 3em;
  border: 1px solid var(--must-mq-grey-30);
  border-radius: 2em;
  box-shadow: var(--must-box-shadow);
}

/* dialog inputs all same width and height */
dialog input[type="text"],
dialog input[type="password"] {
  width: 100%;
  padding: 0.5em;
  border: 1px solid var(--must-mq-black);
  border-radius: 0.25em;
  /* tint background slightly green for active */
  background: var(--must-mq-grey-30-green);

  color: var(--must-mq-grey-100);
}

input[type="text"]:disabled {
  background: linear-gradient(
    -45deg,
    var(--must-mq-grey-10),
    var(--must-mq-grey-10) 50%,
    var(--must-mq-grey-20) 50%,
    var(--must-mq-grey-20)
  );
}

/* dialog options also same width and height */
dialog select {
  width: 100%;
  padding: 0.5em;
  border: 1px solid var(--must-mq-black);
  border-radius: 0.25em;
  background: var(--must-mq-grey-30-green);
  color: var(--must-mq-grey-100);
}

dialog form {
  width: 100%;
}

div.menucorner {
  filter: invert(100%) sepia(0%) saturate(7496%) hue-rotate(61deg)
    brightness(96%) contrast(90%);
  background: var(--must-mq-grey-20);
  flex: 0 0 76px;
  height: 76px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
}

img.closed {
  display: none;
  transition: display 250ms ease-in-out;
}

.blink-text {
  color: green;
  animation: blink 1s ease-in-out infinite;
}

@keyframes blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.rotate-forever {
  animation: rotate 2s linear infinite;
}

@keyframes rotate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* make disabled text inputs to have a gradient background */

/* link that looks like a button */
.link-button {
  display: inline-block;
  padding: 0.5em 1em;
  border: none;
  border-radius: var(--must-border-radius);
  background: var(--must-mq-grey-90);
  color: var(--must-mq-white);
  cursor: pointer;
  text-align: center;
  transition: all 250ms ease-in-out, transform 150ms ease;
  -webkit-appearance: none;
  -moz-appearance: none;
  text-decoration: none;
}

/* make link button animate to slightly bigger and darker on hover and focus */
.link-button:hover,
.link-button:focus {
  background: var(--must-mq-grey-100);
  /* transform: scale(1.1); */
}

[data-tooltip] {
  text-decoration: underline;
  cursor: help;
}

[role="tooltip"] {
  opacity: 0;
  position: absolute;
  width: auto;
  min-width: 5ch;
  width: auto;
  max-width: 30ch;
  height: auto;
  min-height: 25px;
  line-height: 25px;
  font-size: 1rem;
  background-color: rgba(0, 0, 0, 0.7);
  color: #ffffff;
  border-radius: 5px;
  margin-top: 10px;
  padding: 10px 15px;
  /* transform: translateX(-50%); */
}

[role="tooltip"].active {
  opacity: 1;
  transition: opacity 0.1s;
}

/* Alert style banner */
.alert {
  font-size: 1.5em;
  font-weight: bold;
  padding: 0.5em;
  background-color: color-mix(in srgb, var(--color-danger), transparent 80%);
  color: var(--color-primary);
  padding-inline: 2em;
}

.hidden {
  display: none;
}

.popupmenu {
  position: absolute; /* Or fixed, depending on desired behavior */
  top: 0;
  right: 0;
  margin: 0;
  background-color: white;
  border: none; /* Remove default dialog border */
  box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.2); /* Add a subtle shadow */
  border-radius: 8px; /* Rounded corners */
  padding: 10px; /* Add some internal padding */
  z-index: 10; /* Ensure it's above other elements */
  min-width: 20ch; /* Set a minimum width */
  /* remove the normal dialog dim outside the element */
}

.popupmenu ul {
  list-style: none; /* Remove default list styling */
  padding: 0;
  margin: 0;
}

.popupmenu li {
  padding: 8px 12px; /* Add padding to list items */
}

.popupmenu li:hover {
  background-color: #f5f5f5; /* Slightly highlight the hover effect */
  border-radius: 4px; /* Maintain rounded corners on hover */
  cursor: pointer;
}

.popupmenu a {
  text-decoration: none; /* Remove underlines from links */
  color: #333; /* Dark gray text color */
}

.popupmenu li a {
  display: block; /*Make the entire li clickable */
  width: 100%;
}

.user-info {
  display: block; /* Makes the container a block-level element */
  padding: 10px;
}

.user-info span.first-line {
  font-weight: bold;
  font-size: 1em;
  display: block; /* Makes the first line a block-level element */
  margin-bottom: 0.5em;
}

.user-info span.second-line {
  font-size: 0.75em;
  color: rgba(0, 0, 0, 0.7); /* 70% opacity */
}

li.menu-item {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  width: 100%;
}

li.menu-item a {
  padding-inline-start: 0.25em;
  color: rgba(0, 0, 0, 0.7);
  /* remove outline */
  outline: none;
  text-decoration: none;
}

li.menu-item img {
  color: rgba(0, 0, 0, 0.4);
  fill: rgba(0, 0, 0, 0.4);
}

.sidebar-icon {
  color: black;
  margin-bottom: var(--spacing-sm);
  cursor: pointer;
  font-size: 18px;
  font-weight: bold;
}

.sidebar-icon:hover {
  background-color: rgba(255, 255, 255, 0.1);
  border-radius: var(--border-radius-sm);
}

.user-data-island {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  gap: 1em;
  margin-inline-end: 1em;
  min-width: 30ch;
  padding-inline: 1em;
}

.user-data-island-name {
  font-size: 1rem;
  font-weight: bold;
}

.user-data-island-email {
  font-size: 0.75rem;
}

.user-data-island-info {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 0.5em;
}

.user-data-island-icon {
  font-size: 18px;
  /* center it everyway */
  display: flex;
  justify-content: center;
  align-items: center;
  color: var(--color-secondary);
  background-color: color-mix(in srgb, var(--color-secondary), transparent 80%);
  border-radius: 50%;
  padding: var(--spacing-md);
}

.dialog-form-row--hint {
  padding-inline: 0.25em;
  color: color-mix(in srgb, var(--color-primary), transparent 50%);
}

.create-airbridge-link {
  font-weight: bold;
}

.pagination {
  margin-block: 1em;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.5em;
}

.step-links {
  margin-block: 1em;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.5em;
}

.step-links a {
  padding-block: 1em;
  padding-inline: 2em;
  text-decoration: none;
  font-weight: bold;
  background-color: var(--color-border);
  color: var(--color-primary);
  border-radius: var(--border-radius-sm);
}

.step-links .active-page {
  color: var(--color-border);
  background-color: var(--color-primary);
}

@view-transition {
  navigation: auto;
}
