
/* Default safety */
.logo-light,
.logo-dark {
    display: none;
}

/* Light theme */
:root[data-theme="light"] .logo-light {
    display: inline-block;
}

/* Dark theme */
:root[data-theme="dark"] .logo-dark {
    display: inline-block;
}

:root[data-theme="light"] {
    color-scheme: light;
}

:root[data-theme="dark"] {
    color-scheme: dark;
}
html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

.session-timeout-modal .modal-content {
  overflow: hidden;
  border: 0;
  border-radius: 1rem;
  box-shadow: 0 1.5rem 4rem rgba(0, 0, 0, .24);
}

.session-timeout-accent {
  height: .3rem;
  background: var(--bs-primary);
}

.session-timeout-eyebrow,
.signed-out-eyebrow {
  color: var(--bs-primary);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.session-timeout-modal [data-idle-warning-countdown] {
  font-variant-numeric: tabular-nums;
}

.signed-out-state {
  width: min(100%, 42rem);
  margin: clamp(3rem, 12vh, 8rem) auto 4rem;
  text-align: center;
}

.signed-out-mark {
  display: grid;
  width: 4rem;
  height: 4rem;
  margin: 0 auto 1.75rem;
  place-items: center;
  border-radius: 50%;
  background: color-mix(in srgb, var(--bs-primary) 12%, var(--bs-body-bg));
}

.signed-out-mark span {
  display: block;
  width: 1.1rem;
  height: 1.1rem;
  border: .18rem solid var(--bs-primary);
  border-radius: 50%;
  box-shadow: .65rem 0 0 -.35rem var(--bs-primary);
}

.signed-out-state h1 {
  margin-bottom: 1rem;
  font-size: clamp(2rem, 5vw, 3.4rem);
  font-weight: 700;
  letter-spacing: -.035em;
}

.signed-out-state > p:not(.signed-out-eyebrow) {
  max-width: 32rem;
  margin: 0 auto 2rem;
  color: var(--bs-secondary-color);
  font-size: 1.1rem;
}

.main-content .table {
    width: 100%;
    table-layout: fixed;
}

.main-content .table th,
.main-content .table td {
    white-space: normal;
    word-break: break-word;
}

.main-content .table-responsive {
    overflow-x: clip;
}

.calendar-page-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 2rem;
  padding: 2.5rem 0 2rem;
}

.calendar-toolbar {
  display: flex;
  align-items: end;
  gap: 1rem;
  padding: 1rem 0 1.5rem;
  border-bottom: 1px solid var(--bs-border-color);
}

.calendar-toolbar-field {
  width: 9rem;
}

.calendar-toolbar-calendar {
  width: min(28rem, 60vw);
}

.calendar-workspace {
  display: grid;
  grid-template-columns: minmax(15rem, 20rem) minmax(0, 1fr);
  gap: clamp(2rem, 4vw, 4.5rem);
  padding: 2rem 0 4rem;
}

.calendar-context {
  align-self: start;
  position: sticky;
  top: 1.5rem;
}

.calendar-code {
  display: inline-flex;
  margin-bottom: .75rem;
  padding: .25rem .55rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
  color: var(--bs-primary);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.calendar-facts {
  margin: 0 0 1.5rem;
  border-top: 1px solid var(--bs-border-color);
}

.calendar-facts > div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .75rem 0;
  border-bottom: 1px solid var(--bs-border-color);
}

.calendar-facts dt {
  color: var(--bs-secondary-color);
  font-weight: 500;
}

.calendar-facts dd {
  margin: 0;
  font-weight: 650;
  text-align: right;
}

.calendar-ledger {
  min-width: 0;
}

.calendar-section-heading {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.calendar-month-list {
  border-top: 1px solid var(--bs-border-color);
}

.calendar-month {
  display: grid;
  grid-template-columns: minmax(7rem, 10rem) minmax(0, 1fr);
  gap: 1.25rem;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--bs-border-color);
}

.calendar-month h3 {
  margin: .3rem 0 0;
  color: var(--bs-secondary-color);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.calendar-month-days {
  display: grid;
  gap: .25rem;
}

.calendar-day-row {
  display: grid;
  grid-template-columns: 4.5rem minmax(0, 1fr);
  align-items: center;
  min-height: 3.25rem;
  padding: .45rem .65rem;
  border-radius: .65rem;
  transition: background-color 140ms ease, transform 140ms ease;
}

.calendar-day-row:hover {
  background: var(--bs-tertiary-bg);
  transform: translateX(.15rem);
}

.calendar-day-row time {
  display: flex;
  align-items: baseline;
  gap: .45rem;
}

.calendar-day-row time strong {
  font-size: 1.25rem;
}

.calendar-day-row time span {
  color: var(--bs-secondary-color);
  font-size: .75rem;
  text-transform: uppercase;
}

.calendar-day-name {
  font-weight: 600;
}

.calendar-day-source,
.calendar-treatment {
  display: inline-flex;
  margin-left: .6rem;
  padding: .15rem .45rem;
  border-radius: 999px;
  background: var(--bs-tertiary-bg);
  color: var(--bs-secondary-color);
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
}

.calendar-day-source.is-custom {
  background: color-mix(in srgb, var(--bs-primary) 12%, transparent);
  color: var(--bs-primary);
}

.calendar-treatment.is-open {
  background: color-mix(in srgb, var(--bs-success) 14%, transparent);
  color: var(--bs-success-text-emphasis);
}

.calendar-rules {
  margin-top: 3.5rem;
}

.calendar-rule-table th {
  border-top: 1px solid var(--bs-border-color);
  color: var(--bs-secondary-color);
  font-size: .75rem;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.calendar-inline-empty,
.calendar-empty-state {
  padding: 2rem 0;
  color: var(--bs-secondary-color);
  border-top: 1px solid var(--bs-border-color);
  border-bottom: 1px solid var(--bs-border-color);
}

.calendar-editor-shell {
  max-width: 56rem;
  margin: 0 auto 4rem;
}

.calendar-editor {
  border-top: 1px solid var(--bs-border-color);
}

.calendar-editor-intro {
  padding: 1.5rem 0;
  color: var(--bs-secondary-color);
}

.calendar-editor-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
}

.calendar-editor-field.is-wide {
  grid-column: 1 / -1;
}

.calendar-recurrence-panel {
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--bs-border-color);
  animation: calendar-panel-in 160ms ease-out;
}

.calendar-editor-actions {
  display: flex;
  justify-content: flex-end;
  gap: .75rem;
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--bs-border-color);
}

@keyframes calendar-panel-in {
  from {
    opacity: 0;
    transform: translateY(-.25rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 767.98px) {
  .calendar-page-heading,
  .calendar-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .calendar-toolbar-field,
  .calendar-toolbar-calendar {
    width: 100%;
  }

  .calendar-workspace {
    grid-template-columns: 1fr;
  }

  .calendar-context {
    position: static;
  }

  .calendar-month {
    grid-template-columns: 1fr;
  }

  .calendar-editor-grid {
    grid-template-columns: 1fr;
  }
}

.main-content .system-settings-table-responsive {
    overflow-x: auto;
}

.system-settings-sql {
    font-family: Consolas, "Courier New", monospace;
}

.theme-toggle {
    min-width: 72px;
}

.fx-rate-toolbar {
  display: flex;
  justify-content: flex-end;
}

.fx-rate-search {
  width: min(100%, 34rem);
}

.fx-rate-table .js-expandable-row,
.js-fx-search-target {
  transition: background-color 140ms ease;
}

.js-fx-search-target:hover,
.js-fx-search-target:focus-visible,
.js-fx-search-target[aria-expanded="true"] {
  background: color-mix(in srgb, var(--bs-primary) 8%, var(--bs-body-bg));
}

.js-fx-search-target:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: -2px;
}

.fx-rate-detail {
  padding: 1.5rem;
  border-top: 1px solid var(--bs-border-color);
  border-bottom: 1px solid var(--bs-border-color);
  background: var(--bs-tertiary-bg);
  animation: fx-rate-detail-in 160ms ease-out;
}

.fx-rate-detail-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 2rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--bs-border-color);
}

.fx-rate-current-value {
  display: flex;
  align-items: flex-end;
  flex-direction: column;
}

.fx-rate-current-value > span {
  color: var(--bs-secondary-color);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.fx-rate-current-value strong {
  font-size: 1.65rem;
  font-variant-numeric: tabular-nums;
}

.fx-rate-history-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(22rem, .85fr);
  gap: 2rem;
  padding-top: 1.5rem;
}

.fx-rate-chart-frame {
  position: relative;
  min-height: 13rem;
  padding: 0 3.5rem;
}

.fx-rate-chart-frame svg {
  width: 100%;
  height: 13rem;
  overflow: visible;
}

.fx-rate-chart-frame line {
  stroke: var(--bs-border-color);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.fx-rate-chart-frame polyline {
  fill: none;
  stroke: var(--bs-primary);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 3;
  vector-effect: non-scaling-stroke;
}

.fx-rate-chart-frame circle {
  fill: var(--bs-primary);
}

.fx-rate-chart-max,
.fx-rate-chart-min {
  position: absolute;
  left: 0;
  color: var(--bs-secondary-color);
  font-size: .75rem;
  font-variant-numeric: tabular-nums;
}

.fx-rate-chart-max { top: .15rem; }
.fx-rate-chart-min { bottom: .15rem; }

.fx-rate-history-table {
  max-height: 17rem;
  overflow-y: auto;
}

.fx-rate-history-table tr.is-current td {
  background: color-mix(in srgb, var(--bs-primary) 8%, var(--bs-body-bg));
}

.fx-rate-amendments summary {
  color: var(--bs-primary);
  cursor: pointer;
  font-weight: 600;
}

@keyframes fx-rate-detail-in {
  from { opacity: 0; transform: translateY(-.35rem); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 991.98px) {
  .fx-rate-history-grid { grid-template-columns: 1fr; }
}

@media (max-width: 575.98px) {
  .fx-rate-detail-heading { flex-direction: column; gap: 1rem; }
  .fx-rate-current-value { align-items: flex-start; }
  .fx-rate-chart-frame { padding: 0 2.5rem; }
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}
