body {
  min-width: 320px;
  min-height: 100vh;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

body.theme-transition,
body.theme-transition * {
  transition:
    background-color var(--transition-fast),
    color var(--transition-fast),
    border-color var(--transition-fast) !important;
}

h1,
h2,
h3,
h4 {
  color: var(--color-text);
  font-weight: 650;
  line-height: 1.25;
}

h1 {
  font-size: clamp(22px, 2vw, 28px);
  letter-spacing: -0.025em;
}

h2 {
  font-size: 17px;
  letter-spacing: -0.012em;
}

h3 {
  font-size: 14px;
}

small {
  font-size: 12px;
}

input,
select,
textarea {
  color: var(--color-text);
}

::placeholder {
  color: var(--color-text-subtle);
  opacity: 1;
}

::selection {
  background: var(--color-primary-soft);
  color: var(--color-text);
}

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.skip-link {
  position: fixed;
  z-index: 1000;
  top: 8px;
  left: 8px;
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  box-shadow: var(--shadow-popover);
  transform: translateY(-150%);
}

.skip-link:focus {
  transform: translateY(0);
}

.muted {
  color: var(--color-text-muted);
}

.subtle {
  color: var(--color-text-subtle);
}

.number,
.currency {
  font-variant-numeric: tabular-nums;
}

.currency,
.align-right {
  text-align: right;
}

.currency-accounting {
  display: inline-grid;
  width: 100%;
  min-width: 88px;
  grid-template-columns: max-content minmax(max-content, 1fr);
  align-items: baseline;
  column-gap: 8px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.currency-accounting-symbol {
  text-align: left;
}

.currency-accounting-value {
  text-align: right;
}

.link {
  color: var(--color-primary);
  font-weight: 600;
}

.link:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
