/* ==========================================================================
   Base: reset, typography, links, icons

   Cascade layers, lowest first: base < legacy < legacy-bridge < everything
   without a layer (layout.css, components.css, pages/*.css). So the reset never
   overrides a rule of an old screen, and new components always win.
   ========================================================================== */

@layer base, legacy, legacy-bridge;

@layer base {

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

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

    body {
        min-height: 100vh;
        display: flex;
        flex-direction: column;
        background: var(--color-bg);
        color: var(--color-text);
        font-family: var(--font-family);
        font-size: var(--font-size);
        font-variant-numeric: tabular-nums;
        line-height: 1.4;
    }

    h1, h2, h3, h4, h5, h6 {
        font-weight: var(--font-weight-bold);
        line-height: 1.2;
    }

    a {
        color: inherit;
        text-decoration: none;
    }

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

    button {
        cursor: pointer;
        border: 0;
        background: none;
    }

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

[hidden] {
    display: none !important;
}

/* Icons: {icon name='…'} */
.icon {
    display: inline-block;
    width: 16px;
    height: 16px;
    flex: none;
    vertical-align: -3px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.icon--sm {
    width: 12px;
    height: 12px;
}

.icon-sprite {
    position: absolute;
    width: 0;
    height: 0;
}

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