/* OS base — reset + body chrome. */

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

html, body {
    height: 100vh;
    height: 100dvh;
    min-height: 100dvh;
    overflow: hidden;
}
body {
    font-family: var(--font-ui);
    font-size: var(--fs-body);
    background: var(--os-bg);
    color: var(--os-text-main);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    display: flex;
    flex-direction: column;
}

a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
img { display: block; max-width: 100%; height: auto; }
input, select, textarea { font: inherit; color: inherit; }

h1, h2, h3, h4, h5 {
    font-family: var(--font-display);
    color: var(--os-text-main);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.01em;
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.12);
    border-radius: var(--os-radius-full);
}
::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.2); }

.muted   { color: var(--os-text-muted); }
.subtle  { color: var(--os-text-subtle); }
.strong  { color: var(--os-text-main); }
.mono    { font-family: var(--font-mono); }
.cap     { font-size: var(--fs-caption); letter-spacing: 0.04em; text-transform: uppercase; color: var(--os-text-muted); }
