/*
 * CAMADA 2 — BASE
 *
 * Conteúdo permitido: seletores de elemento (h1, strong, input…), resets que
 * valem para o documento inteiro e o estado de carregamento da aplicação.
 * Nada aqui pode depender de um componente ou de uma página específica.
 */


/* ==========================================================================
   1. ELEMENTOS
   ========================================================================== */

h1,
h2,
h3 {
    font-weight: bold;
}

strong {
    display: inline !important;
}


/* ==========================================================================
   2. CURSOR DE TEXTO
   ========================================================================== */

/* Mantém o caret restrito aos elementos em que o usuário realmente digita. */
:where(
    button,
    .btn,
    a,
    label,
    summary,
    [role="button"],
    [role="menuitem"],
    [tabindex]:not(input, textarea, [contenteditable="true"]),
    .fa,
    svg,
    img
) {
    caret-color: transparent;
}

:where(input, textarea, [contenteditable="true"], [contenteditable=""]) {
    caret-color: auto;
}


/* ==========================================================================
   3. BOOT DA APLICAÇÃO
   ========================================================================== */

/*
 * index.php marca <body class="app-booting"> e js/app.js remove a classe quando
 * a primeira tela está pronta. Enquanto isso, o #wrapper fica invisível e só o
 * spinner aparece.
 */
.app-loading {
    position: fixed;
    z-index: 9999;
    top: 50%;
    left: 50%;
    display: none;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.94);
    box-shadow: 0 12px 34px rgba(47, 64, 80, 0.14);
    color: var(--color-primary, #1ab394);
    font-size: 18px;
    transform: translate(-50%, -50%);
}

body.app-booting {
    min-height: 100vh;
    background:
        radial-gradient(circle at 12% 12%, rgba(26, 179, 148, 0.1), transparent 34%),
        linear-gradient(135deg, #f8fafc 0%, #eef4f7 100%);
}

body.app-booting #wrapper {
    visibility: hidden;
}

body.app-booting > .app-loading {
    display: flex;
}
