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

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

html {
    font-size: 16px;
    color-scheme: light;
    overflow-x: hidden;
    scrollbar-color: var(--color-line-strong) var(--color-bg);
    scrollbar-width: thin;
}

html[data-theme="dark"] {
    color-scheme: dark;
}

html::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

html::-webkit-scrollbar-track {
    background: var(--color-bg);
}

html::-webkit-scrollbar-thumb {
    background: var(--color-line-strong);
    border: 2px solid var(--color-bg);
    border-radius: 999px;
}

body.modal-scroll-lock {
    overflow: hidden;
}

body {
    min-height: 100vh;
    overflow-x: hidden;
    /* Flat single-hue backdrop (2026-06-16). Was a navy gradient (bg-alt→bg-deep)
       plus a 9% amber + 7% green corner wash — the mixed warm/cool tints read as a
       muddy "grey-to-blue". One clean deep tone lets the cards carry the elevation. */
    background: var(--color-bg);
    color: var(--color-text);
    font-family: var(--font-sans);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-tap-highlight-color: rgba(17, 24, 39, 0.06);
}

.u-no-shrink {
    flex-shrink: 0;
}

.u-mt-0 {
    margin-top: 0;
}

.u-mt-8 {
    margin-top: 8px;
}

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

.u-muted-sm {
    color: var(--color-text-muted);
    font-size: 0.8rem;
}

.u-muted-md {
    color: var(--color-text-muted);
    font-size: 0.82rem;
}

button,
input,
select,
textarea {
    font: inherit;
    color: inherit;
    touch-action: manipulation;
}

a {
    color: inherit;
}

.bg {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    /* Flat single-hue backdrop (2026-06-16). Was a navy gradient (bg-alt→bg-deep)
       plus a 9% amber + 7% green corner wash — the mixed warm/cool tints read as a
       muddy "grey-to-blue". One clean deep tone lets the cards carry the elevation. */
    background: var(--color-bg);
}

.bg::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(color-mix(in srgb, var(--color-line) 52%, transparent) 1px, transparent 1px),
        linear-gradient(90deg, color-mix(in srgb, var(--color-line) 52%, transparent) 1px, transparent 1px);
    background-size: 52px 52px;
    opacity: 0.26;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0.04));
    -webkit-mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0.04));
}

.bg--ambient {
    /* Flat single-hue backdrop (2026-06-16). Was a navy gradient (bg-alt→bg-deep)
       plus a 9% amber + 7% green corner wash — the mixed warm/cool tints read as a
       muddy "grey-to-blue". One clean deep tone lets the cards carry the elevation. */
    background: var(--color-bg);
}


#app {
    position: relative;
    z-index: 1;
}
