* {
  box-sizing: border-box;
}

*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  min-height: 100%;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: linear-gradient(180deg, var(--color-canvas), var(--color-canvas-warm));
  color: var(--color-ink);
  font-family: var(--font-sans);
  font-size: 16px;
}

img,
picture,
svg,
canvas,
video {
  display: block;
  max-width: 100%;
}

button,
input,
textarea,
select {
  font: inherit;
}

button {
  cursor: pointer;
}

button,
input {
  margin: 0;
}

h1,
h2,
h3,
p {
  margin: 0;
}

h1,
h2,
h3 {
  font-family: var(--font-serif);
  letter-spacing: 0;
  line-height: 1.16;
}

p {
  color: var(--color-ink-soft);
  line-height: 1.5;
}

/* Hide scrollbars app-wide while keeping scroll behaviour — the pure-CSS
   equivalent of a "hide-scrollbar" package, no JS or dependency. Applied
   universally so every scroll container is consistent: the page, the cost
   modal body, the run detail drawer, and the queue. Three declarations cover
   every engine — scrollbar-width (Firefox), -ms-overflow-style (legacy Edge),
   and the ::-webkit-scrollbar pseudo-element (Chrome/Safari/WebKit). */
* {
  scrollbar-width: none;
  -ms-overflow-style: none;
}

*::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}
