/* ============================================================
   iBudget base — reset, tipografia, elementos nus.
   Mobile-first: tudo desenhado para ~390px primeiro.
   ============================================================ */

@font-face {
    font-family: "Inter";
    src: url("../fonts/InterVariable.woff2") format("woff2");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

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

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

body {
    margin: 0;
    font-family: var(--font-sans);
    font-size: var(--fs-body);
    line-height: 1.45;
    color: var(--c-text);
    background: var(--c-bg);
    -webkit-font-smoothing: antialiased;
    -webkit-tap-highlight-color: transparent;
    overscroll-behavior-y: none;
}

h1 {
    font-size: var(--fs-large-title);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.2;
    margin: 0 0 var(--sp-4);
}

h2 {
    font-size: var(--fs-title);
    font-weight: 650;
    letter-spacing: -0.015em;
    margin: var(--sp-6) 0 var(--sp-3);
}

h3 {
    font-size: var(--fs-headline);
    font-weight: 600;
    margin: var(--sp-5) 0 var(--sp-2);
}

p { margin: 0 0 var(--sp-3); }

a {
    color: var(--c-accent);
    text-decoration: none;
}

small, .texto-2 { color: var(--c-text-2); font-size: var(--fs-sub); }
.texto-3 { color: var(--c-text-3); font-size: var(--fs-caption); }

/* Inputs nus — os estilos compostos vivem em components.css */
input, select, textarea, button {
    font: inherit;
    color: inherit;
}

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

:focus-visible {
    outline: 2px solid var(--c-accent);
    outline-offset: 2px;
    border-radius: 4px;
}

::selection { background: var(--c-accent-soft); }

/* Scrollbars discretas (desktop) */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: var(--c-hairline-strong); border-radius: 999px; }
::-webkit-scrollbar-track { background: transparent; }

/* Movimento reduzido: respeitar sempre */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
