/* portal/lite/static/css-src/common/_reset.css */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
html {
  box-sizing: border-box;
  font-family: var(--font-base);
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
  background-color: var(--color-bg);
  color: var(--color-text);
}
button,
input[type=button],
input[type=submit],
a.button {
  user-select: none;
}

/* portal/lite/static/css-src/common/_vars-typography.css */
:root {
  --font-base:
    "Noto Sans JP",
    "Yu Gothic UI",
    sans-serif;
  --font-size-base: 16px;
  --line-height-base: 1.5;
}

/* portal/lite/static/css-src/common/_vars-light-mode.css */
:root {
  --color-bg: #f0f2f5;
  --color-surface: #f9f9f9;
  --color-surface-hover: #ddd;
  --color-border: #ddd;
  --color-zebra-striping: #f4f6f9;
  --color-text: #222;
  --color-text-muted: #666;
  --color-success: #2e7d32;
  --color-error: #d32f2f;
  --color-warning: #f57c00;
  --color-link: #1b809e;
  --color-link-hover: #16687e;
  --color-bg-input: #fff;
  --color-input: #000;
  --color-bg-highlight-current: #e6f0fa;
  --color-primary: #0078d4;
  --color-primary-hover: #005fa3;
  --color-fg-on-primary: #fff;
  --color-badge-bg-valid: #dcfce7;
  --color-badge-bg-invalid: #fecaca;
  --color-danger: #d9534f;
  --color-danger-hover: #c9302c;
  --color-fg-on-danger: #ffffff;
  --color-secondary: #6c757d;
  --color-secondary-hover: #5a6268;
  --color-fg-on-secondary: #ffffff;
}

/* portal/lite/static/css-src/common/_vars-dark-mode.css */
@media (prefers-color-scheme: dark) {
  :root {
    --color-bg: #121212;
    --color-surface: #1e1e1e;
    --color-surface-hover: #888;
    --color-border: #333;
    --color-zebra-striping: #262a2d;
    --color-text: #eee;
    --color-text-muted: #bbb;
    --color-error: #f88;
    --color-success: #81c784;
    --color-warning: #ffb74d;
    --color-link: #70d0e0;
    --color-link-hover: #9de6f1;
    --color-primary: #4dabf7;
    --color-primary-hover: #339af0;
    --color-fg-on-primary: #fff;
    --color-danger: #d32f2f;
    --color-danger-hover: #ef5350;
    --color-fg-on-danger: #fff;
    --color-secondary: #455a64;
    --color-secondary-hover: #90a4ae;
    --color-fg-on-secondary: #fff;
  }
}

/* portal/lite/static/css-src/dashboard/_vars-button.css */
:root {
  --button-border: none;
  --button-border-danger: none;
  --button-border-secondary: none;
}

/* portal/lite/static/css-src/common/_responsive.css */
:root {
  --break-xs: 0px;
  --break-sm: 576px;
  --break-md: 768px;
  --break-lg: 992px;
  --break-xl: 1200px;
  --break-xxl: 1400px;
  --break-xs-max: 575.98px;
  --break-sm-max: 767.98px;
  --break-md-max: 991.98px;
  --break-lg-max: 1199.98px;
  --break-xl-max: 1399.98px;
  --page-x-margin-xs: 0.5rem;
  --page-x-margin-sm: 1rem;
  --page-x-margin-md: 1.5rem;
  --page-x-margin-lg: 2rem;
  --page-x-margin-xl: 2rem;
  --page-x-margin-xxl: 2rem;
  --flex-column-to-xs: row;
  --flex-column-to-sm: row;
  --flex-column-to-md: row;
  --flex-column-to-lg: row;
  --flex-column-to-xl: row;
}
@media (max-width: 575.98px) {
  body {
    --flex-column-to-xs: column;
  }
  .hide-to-xs,
  .hide-xs {
    display: none !important;
  }
  .break-all-xs {
    word-break: break-all;
  }
  .px-0-xs {
    padding-left: var(--space-0);
    padding-right: var(--space-0);
  }
  .px-1-xs {
    padding-left: var(--space-1);
    padding-right: var(--space-1);
  }
  .px-2-xs {
    padding-left: var(--space-2);
    padding-right: var(--space-2);
  }
}
@media (max-width: 767.98px) {
  body {
    --flex-column-to-sm: column;
  }
  .hide-to-sm,
  .hide-sm {
    display: none !important;
  }
  .break-all-sm {
    word-break: break-all;
  }
  .px-0-sm {
    padding-left: var(--space-0);
    padding-right: var(--space-0);
  }
  .px-1-sm {
    padding-left: var(--space-1);
    padding-right: var(--space-1);
  }
  .px-2-sm {
    padding-left: var(--space-2);
    padding-right: var(--space-2);
  }
}
@media (max-width: 991.98px) {
  body {
    --flex-column-to-md: column;
  }
  .hide-to-md,
  .hide-md {
    display: none !important;
  }
  .break-all-md {
    word-break: break-all;
  }
  .px-0-md {
    padding-left: var(--space-0);
    padding-right: var(--space-0);
  }
  .px-1-md {
    padding-left: var(--space-1);
    padding-right: var(--space-1);
  }
  .px-2-md {
    padding-left: var(--space-2);
    padding-right: var(--space-2);
  }
}
@media (max-width: 1199.98px) {
  body {
    --flex-column-to-lg: column;
  }
  .hide-to-lg,
  .hide-lg {
    display: none !important;
  }
}
@media (max-width: 1399.98px) {
  body {
    --flex-column-to-xl: column;
  }
  .hide-to-xl,
  .hide-xl {
    display: none !important;
  }
}
body {
  --page-x-margin: var(--page-x-margin-xs);
}
@media (min-width: 576px) {
  body {
    --page-x-margin: var(--page-x-margin-sm);
  }
  .hide-from-sm {
    display: none !important;
  }
}
@media (min-width: 768px) {
  body {
    --page-x-margin: var(--page-x-margin-md);
  }
  .hide-from-md {
    display: none !important;
  }
  .ws-no-wrap-from-md {
    white-space: nowrap;
  }
}
@media (min-width: 992px) {
  body {
    --page-x-margin: var(--page-x-margin-lg);
  }
  .hide-from-lg {
    display: none !important;
  }
  .w-max-from-lg {
    width: 100%;
  }
  .ws-no-wrap-from-lg {
    white-space: nowrap;
  }
}
@media (min-width: 1200px) {
  body {
    --page-x-margin: var(--page-x-margin-xl);
  }
  .hide-from-xl {
    display: none !important;
  }
  .w-max-from-xl {
    width: 100%;
  }
  .ws-no-wrap-from-xl {
    white-space: nowrap;
  }
}
@media (min-width: 1400px) {
  body {
    --page-x-margin: var(--page-x-margin-xxl);
  }
  .hide-from-xxl {
    display: none !important;
  }
  .w-max-from-xxl {
    width: 100%;
  }
  .ws-no-wrap-from-xxl {
    white-space: nowrap;
  }
}

/* portal/lite/static/css-src/common/_a.css */
a {
  color: var(--color-link);
  text-decoration: none;
  font-weight: 500;
}
a:hover {
  color: var(--color-link-hover);
  text-decoration: underline;
}

/* portal/lite/static/css-src/common/_action-menu.css */
details.action-menu {
  position: relative;
  display: inline-block;
  summary {
    cursor: pointer;
    padding: 0.4em 0.8em;
    border: 1px solid #ccc;
    border-radius: 0.5em;
    background: #f9f9f9;
    list-style: none;
  }
  &[open] div.menu-options {
    display: flex;
    overflow: hidden;
    flex-direction: column;
    position: absolute;
    z-index: 100;
    right: 50%;
    top: 50%;
    border: 1px solid #333;
    border-radius: 0.5em;
    background: var(--color-surface);
    a {
      background: none;
      margin: 0;
      padding: 0.5em 1em;
      border-radius: 0;
      border: none;
      &.primary {
        background: transparent;
        color: var(--color-text);
        &:hover {
          background: var(--color-surface-hover);
        }
      }
      &.warning {
        background: transparent;
        color: var(--color-warning);
        &:hover {
          background: var(--color-surface-hover);
        }
      }
      &.danger {
        background: transparent;
        color: var(--color-error);
        &:hover {
          background: var(--color-surface-hover);
        }
      }
    }
  }
}

/* portal/lite/static/css-src/common/_brand-identity.css */
.brand-identity {
  font-weight: 500;
  color: var(--color-text-muted);
  font-family: sans-serif;
  opacity: 0.75;
  a {
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    &:hover {
      opacity: 1;
      color: var(--color-text);
      font-weight: 900;
    }
  }
}

/* portal/lite/static/css-src/common/_button.css */
button,
a.button {
  display: inline-flex;
  gap: 0.5em;
  padding: 0.5em 1em;
  margin: 0.5em 0;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5;
  border: var(--button-border);
  border-radius: 4px;
  background-color: var(--color-primary);
  color: var(--color-fg-on-primary);
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  vertical-align: middle;
  appearance: none;
  -webkit-appearance: none;
  &.danger {
    border: var(--button-border-danger);
    color: var(--color-fg-on-danger);
    background-color: var(--color-danger);
  }
  &.secondary {
    border: var(--button-border-secondary);
    color: var(--color-fg-on-secondary);
    background-color: var(--color-secondary);
  }
}
button:focus,
button:hover,
a.button:focus,
a.button:hover {
  background-color: var(--color-primary-hover);
  text-decoration: none;
  &.danger {
    background-color: var(--color-danger-hover);
  }
  &.secondary {
    background-color: var(--color-secondary-hover);
  }
}

/* portal/lite/static/css-src/common/_flash.css */
.flash {
  &.error {
    color: var(--color-error);
  }
  &.warning {
    color: var(--color-warning);
  }
  &.success {
    color: var(--color-success);
  }
}

/* portal/lite/static/css-src/common/_flash-toast.css */
.flash-toast-container {
  position: fixed;
  bottom: 1em;
  left: 1em;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: 0.5em;
  pointer-events: none;
  .flash {
    position: relative;
    margin: 0;
    min-width: 240px;
    max-width: 320px;
    padding: 0.75em 1.25em;
    border-radius: 4px;
    background-color: var(--color-surface);
    color: var(--color-text);
    border-left: 4px solid var(--color-text-muted);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    opacity: 1;
    animation: fadeout 5s ease forwards;
    pointer-events: auto;
    &.info {
      border-color: #0078d4;
    }
    &.success {
      border-color: var(--color-success);
    }
    &.warning {
      border-color: orange;
    }
    &.error {
      border-color: var(--color-error);
    }
    &.fade-out {
      animation: fadeout 0.3s ease forwards !important;
    }
    .flash-close {
      display: inline;
      position: absolute;
      top: -0.5em;
      right: 0.25em;
      padding: 0;
      background: none;
      border: none;
      font-size: 1.25em;
      font-weight: bold;
      color: var(--color-text-muted);
      cursor: pointer;
    }
    .flash-close:hover {
      color: var(--color-text);
    }
  }
}
.flash-close {
  display: none;
}
@keyframes fadeout {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(8px);
    display: none;
  }
}

/* portal/lite/static/css-src/common/_form.css */
form.modal-form {
  width: 600px;
  max-width: calc(100vw - 3em);
  max-height: calc(100vh - 3em);
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 1.5em;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  header {
    font-size: 2rem;
    font-weight: bold;
    line-height: 1.5;
    text-align: center;
    margin-top: 0;
    margin-bottom: 1em;
  }
  div.form-body {
    flex: 1 1 auto;
    overflow: hidden auto;
  }
  footer {
    display: flex;
    align-items: center;
    gap: 0.5em;
    margin-top: 1em;
  }
  label {
    color: var(--color-text-muted);
  }
  label:has(+ input[required]),
  label:has(+ select[required]),
  label:has(+ textarea[required]) {
    position: relative;
  }
  label:has(+ input[required])::after,
  label:has(+ select[required])::after,
  label:has(+ textarea[required])::after {
    content: " *";
    color: var(--color-error);
    font-weight: normal;
  }
  div.flash:has(+ label),
  div.flash:has(+ input),
  div.flash:has(+ footer),
  p:has(+ label),
  p:has(+ input),
  p:has(+ footer) {
    margin-bottom: 2.5em;
  }
  ul {
    padding-left: 2em;
  }
  &.confirm-dialog p {
    text-align: center;
  }
}
label {
  display: block;
  margin-bottom: 0.25em;
  font-weight: 500;
}
input,
select,
textarea {
  display: block;
  width: 100%;
  padding: 0.5em;
  margin-bottom: 1em;
  font-size: 1rem;
  font-family: inherit;
  background-color: var(--color-bg-input);
  color: var(--color-input);
  border: 1px solid var(--color-border);
  border-radius: 4px;
}
input[readonly],
input:disabled,
select[readonly],
select:disabled,
textarea[readonly],
textarea:disabled {
  background-color: #e9ecef;
  color: var(--color-text-muted);
  border-color: var(--color-border);
  cursor: not-allowed;
  opacity: 0.6;
}
label:has(+ :is(input, select, textarea) + .flash.error) {
  color: var(--color-error);
}
:is(input, select, textarea):has(+ .flash.error) {
  background: var(--color-danger);
  color: var(--color-fg-on-danger);
}
fieldset.radio-group {
  border: 1px solid var(--color-border);
  padding: 0.75em 1em;
  margin: 1em 0;
  border-radius: 6px;
  legend {
    margin-bottom: 0.5em;
  }
  label {
    display: flex;
    div {
      display: flex;
      align-items: baseline;
      padding: 0.5em;
      input[type=radio] {
        padding: 0;
        margin: 0;
      }
    }
  }
}
@media (prefers-color-scheme: dark) {
  input,
  select,
  textarea {
    background-color: #2b2b2b;
    color: #eee;
    border-color: #444;
  }
  input:disabled,
  select:disabled,
  textarea:disabled {
    background-color: #2a2a2a;
    color: #999;
    border-color: #444;
  }
}

/* portal/lite/static/css-src/common/_header.css */
.lite-header {
  display: none;
}
.lite-header:has(> *) {
  display: flex;
  align-items: center;
  gap: 0.5em;
  margin-top: 0.5em;
  margin-bottom: 0.5em;
  padding-bottom: 0.25em;
  border-bottom: 1px solid var(--color-border);
  padding-left: var(--page-x-margin);
  padding-right: var(--page-x-margin);
  h1 {
    font-size: 2rem;
    font-weight: 600;
    margin: 0;
  }
}

/* portal/lite/static/css-src/common/_icon.css */
.lite-icon svg {
  height: 1em;
  width: 1em;
  vertical-align: baseline;
}

/* portal/lite/static/css-src/common/_inline-badge.css */
span.inline-badge {
  display: inline-flex;
  width: 1.5em;
  background: inherit;
  color: inherit;
  border: 1px solid currentColor;
  border-radius: 50%;
  height: 1.5em;
  align-items: center;
  justify-content: center;
  &.secondary {
    color: var(--color-fg-on-secondary);
    background: var(--color-secondary);
  }
  &.primary {
    color: var(--color-fg-on-primary);
    background: var(--color-primary);
  }
  &.danger {
    color: var(--color-fg-on-primary);
    background: var(--color-danger);
  }
}

/* portal/lite/static/css-src/common/_main.css */
main {
  padding-left: var(--page-x-margin);
  padding-right: var(--page-x-margin);
}

/* portal/lite/static/css-src/common/_multi-email-input.css */
div.multi-email-input {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25em 0.5em;
  padding: 0.5em;
  color: var(--color-input);
  background: var(--color-bg-input);
  border: 1px solid var(--color-border);
  margin-bottom: 1em;
  input[type=text] {
    margin: 0;
    width: 100%;
    border: none;
    padding: 0.25em;
  }
  label.mail-badge {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid currentColor;
    border-radius: 1em;
    padding: 0;
    margin: 0;
    overflow: hidden;
    &.valid {
      background: var(--color-badge-bg-valid);
    }
    &.invalid {
      background: var(--color-badge-bg-invalid);
    }
    input[type=checkbox] {
      display: none;
      pointer-events: none;
    }
    .display-span {
      padding: 0 0.25em 0 0.5em;
      display: flex;
      align-items: center;
    }
    .delete-button {
      border-left: 1px solid currentColor;
      padding: 0 0.25em;
      display: flex;
      align-items: center;
    }
    &:hover .delete-button {
      color: var(--color-fg-on-danger);
      background: var(--color-danger);
      cursor: pointer;
    }
  }
}

/* portal/lite/static/css-src/common/_p.css */
p {
  margin: 1em 0;
}

/* portal/lite/static/css-src/common/_table.css */
table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 1.5em;
  background-color: var(--color-surface);
  font-size: 1rem;
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  overflow: hidden;
  thead {
    background-color: var(--color-secondary);
    color: var(--color-fg-on-secondary);
  }
  tr.muted {
    color: var(--color-text-muted);
  }
  tr.success {
    color: var(--color-success);
  }
  tr.warning {
    color: var(--color-warning);
  }
  tr.error {
    color: var(--color-error);
  }
  th {
    text-align: left;
    padding: 0.75em 1em;
    font-weight: 600;
    border-bottom: 1px solid var(--color-border);
    white-space: nowrap;
  }
  td {
    padding: 0.75em 1em;
    border-bottom: 1px solid var(--color-border);
    vertical-align: middle;
  }
  tbody tr:nth-child(odd) {
    background-color: var(--color-zebra-striping);
  }
}
:is(td, th) {
  &.col-count {
    white-space: nowrap;
    text-align: right;
  }
  &.col-date,
  &.col-datetime {
    white-space: nowrap;
    text-align: center;
  }
  &.col-description {
    text-align: left;
  }
  &.col-user-identifier {
    white-space: nowrap;
    text-align: left;
  }
  &.col-name {
    white-space: nowrap;
    text-align: left;
  }
  &.col-tools {
    white-space: nowrap;
  }
  &.col-sites {
  }
  &.col-size {
    white-space: nowrap;
    text-align: right;
  }
  &.col-status-icon {
    text-align: right;
    padding-right: 0;
  }
  &.col-status {
    white-space: nowrap;
    text-align: left;
  }
  &.col-version {
    white-space: nowrap;
    text-align: left;
  }
}

/* portal/lite/static/css-src/common/_transfer-list.css */
.transfer-list {
  display: grid;
  grid-template-rows: auto auto auto;
  grid-template-columns: 1fr 1fr;
  background: white;
  margin-bottom: 1em;
  & > * {
    border: 1px solid var(--color-border);
  }
  input.search-box {
    grid-column: span 2;
    width: 100%;
    margin: 0;
    border-left: none;
    border-top: none;
    border-right: none;
  }
  div.title {
    font-weight: bold;
    border-bottom: none;
    padding: 0.5em 1em;
  }
  .choices,
  .selection {
    height: 15em;
    overflow: auto;
    border-top: none;
    label {
      padding: 0.5em 1em;
      margin: 0;
    }
    input[type=checkbox] {
      display: none;
    }
  }
  .choices {
    label:has(:checked) {
      color: #ddd;
    }
    label:hover {
      cursor: pointer;
    }
  }
  .selection {
    label:not(:has(:checked)) {
      display: none;
    }
    label:hover {
      cursor: pointer;
    }
  }
}

/* portal/lite/static/css-src/common/_tools_bar.css */
.lite-tools-bar {
  display: none;
}
.lite-tools-bar:has(> *) {
  display: flex;
  align-items: center;
  gap: 0.5em;
  margin-bottom: 1.5em;
  flex-wrap: wrap;
  padding-left: var(--page-x-margin);
  padding-right: var(--page-x-margin);
}

/* portal/lite/static/css-src/common/_utilities.css */
:root {
  --space-0: 0rem;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-8: 3rem;
  --space-10: 4rem;
}
.mt-0 {
  margin-top: var(--space-0);
}
.mt-1 {
  margin-top: var(--space-1);
}
.mt-2 {
  margin-top: var(--space-2);
}
.mt-3 {
  margin-top: var(--space-3);
}
.mt-4 {
  margin-top: var(--space-4);
}
.mt-5 {
  margin-top: var(--space-5);
}
.mt-6 {
  margin-top: var(--space-6);
}
.mt-8 {
  margin-top: var(--space-8);
}
.mt-10 {
  margin-top: var(--space-10);
}
.pl-0 {
  padding-left: var(--space-0);
}
.pl-1 {
  padding-left: var(--space-1);
}
.pl-2 {
  padding-left: var(--space-2);
}
.pl-3 {
  padding-left: var(--space-3);
}
.pl-4 {
  padding-left: var(--space-4);
}
.pl-5 {
  padding-left: var(--space-5);
}
.pl-6 {
  padding-left: var(--space-6);
}
.pl-8 {
  padding-left: var(--space-8);
}
.pl-10 {
  padding-left: var(--space-10);
}
.pr-0 {
  padding-right: var(--space-0);
}
.pr-1 {
  padding-right: var(--space-1);
}
.pr-2 {
  padding-right: var(--space-2);
}
.pr-3 {
  padding-right: var(--space-3);
}
.pr-4 {
  padding-right: var(--space-4);
}
.pr-5 {
  padding-right: var(--space-5);
}
.pr-6 {
  padding-right: var(--space-6);
}
.pr-8 {
  padding-right: var(--space-8);
}
.pr-10 {
  padding-right: var(--space-10);
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.w-0 {
  width: 0;
}
.w-auto {
  width: auto;
}
.w-max {
  width: 100%;
}
.w-fit {
  width: fit-content;
}
.w-min {
  width: min-content;
}
.w-1 {
  width: var(--space-1);
}
.w-2 {
  width: var(--space-2);
}
.w-4 {
  width: var(--space-4);
}
.w-6 {
  width: var(--space-6);
}
.w-10 {
  width: var(--space-10);
}
.w-1-2 {
  width: 50%;
}
.w-1-3 {
  width: 33.333%;
}
.w-2-3 {
  width: 66.666%;
}
.w-1-4 {
  width: 25%;
}
.gap-x-0 {
  column-gap: var(--space-0);
}
.gap-x-1 {
  column-gap: var(--space-1);
}
.gap-x-2 {
  column-gap: var(--space-2);
}
.gap-x-3 {
  column-gap: var(--space-3);
}
.gap-x-4 {
  column-gap: var(--space-4);
}
.gap-x-5 {
  column-gap: var(--space-5);
}
.gap-x-6 {
  column-gap: var(--space-6);
}
.gap-x-8 {
  column-gap: var(--space-8);
}
.gap-x-10 {
  column-gap: var(--space-10);
}
table.align-top td {
  vertical-align: top;
}
table.align-middle td {
  vertical-align: middle;
}
table.align-bottom td {
  vertical-align: bottom;
}
table.align-baseline td {
  vertical-align: baseline;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right,
.text-end {
  text-align: right;
}
.ws-nowrap {
  white-space: nowrap;
}
.ws-normal {
  white-space: normal;
}
.ws-pre {
  white-space: pre;
}
.ws-pre-wrap {
  white-space: pre-wrap;
}
.ws-pre-line {
  white-space: pre-line;
}
.break-normal {
  word-break: normal;
  overflow-wrap: normal;
}
.break-words {
  overflow-wrap: break-word;
}
.break-all {
  word-break: break-all;
}
.keep-all {
  word-break: keep-all;
}
.pointer-auto {
  pointer-events: auto;
}
.pointer-none {
  pointer-events: none;
}
.no-select {
  user-select: none;
}
.selectable {
  user-select: text;
}
.flex {
  display: flex;
}
.flex-center-y {
  display: flex;
  align-items: center;
}
.filler {
  flex-grow: 1;
}
.reserve-bold-width {
  position: relative;
  display: inline-block;
}
.reserve-bold-width::after {
  content: attr(data-text);
  visibility: hidden;
  font-weight: 900;
  height: 0;
  overflow: hidden;
  display: block;
  white-space: pre;
}

/* portal/lite/static/css-src/lite-dashboard.css */
