/* =========================================================
   UNISOL 360° — INTEGRIDADE GLOBAL DE FORMULÁRIOS
   Regras defensivas para evitar campos cortados, sobrepostos,
   zoom involuntário no iOS e conteúdo oculto na viewport.
   ========================================================= */

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

input,
textarea,
select,
button,
fieldset,
legend {
    box-sizing: border-box;
}

fieldset,
form,
.u-field,
.u-grid2 > *,
.u-grid3 > *,
.u-grid4 > *,
.grid > *,
.flex > *,
.u-sheet,
.u-sheet-body,
.u-inline-form,
.u-inline-form > * {
    min-width: 0;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
textarea,
select,
.input,
.select,
.textarea,
.u-input,
.u-select {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

input[type="file"] {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

textarea,
.textarea,
textarea.u-input {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: break-word;
    overflow-x: hidden;
    resize: vertical;
}

label,
.label,
.u-field-label,
.u-drow-label,
.u-drow-value,
.u-row-title,
.u-row-sub,
.text-xs,
.text-sm,
[class*="error"],
[class*="erro"] {
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: break-word;
}

input::placeholder,
textarea::placeholder {
    text-overflow: clip;
}

/* O campo focado deve ficar visível mesmo com topbar/teclado/barra inferior. */
input,
textarea,
select,
[contenteditable="true"] {
    scroll-margin-top: 96px;
    scroll-margin-bottom: 120px;
}

/* Modais e drawers nunca podem extrapolar a viewport. */
.u-overlay,
.u-sheet,
.u-sheet-body,
.u-modal,
[role="dialog"] {
    max-width: 100%;
    box-sizing: border-box;
}

.u-sheet,
.u-modal,
[role="dialog"] {
    min-width: 0;
}

.u-sheet-body {
    overflow-x: hidden;
}

/* Elementos com texto dinâmico não podem empurrar o layout para fora. */
.u-content strong,
.u-content span,
.u-content p,
.u-content a,
.u-content td,
.u-content th {
    min-width: 0;
}

/* iPhone/Safari amplia a tela quando o input focado tem fonte < 16px.
   Mantemos 16px apenas nos campos editáveis em telas touch pequenas. */
@media (max-width: 768px) {
    input[type="text"],
    input[type="search"],
    input[type="email"],
    input[type="tel"],
    input[type="url"],
    input[type="password"],
    input[type="number"],
    input[type="date"],
    input[type="time"],
    input[type="month"],
    textarea,
    select,
    .input,
    .select,
    .textarea,
    .u-input,
    .u-select {
        font-size: 16px !important;
        line-height: 1.35;
    }

    input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
    select,
    .input,
    .select,
    .u-input,
    .u-select {
        min-height: 44px;
    }

    textarea,
    .textarea,
    textarea.u-input {
        min-height: 92px;
    }

    .u-sheet {
        width: min(100%, calc(100vw - 20px));
        max-height: calc(100dvh - 20px);
        overflow: hidden;
    }

    .u-sheet-body {
        min-height: 0;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }

    /* min-width inline antigo não pode gerar rolagem lateral em celular. */
    .u-content input,
    .u-content textarea,
    .u-content select,
    .u-sheet input,
    .u-sheet textarea,
    .u-sheet select {
        min-width: 0 !important;
        max-width: 100% !important;
    }

    .u-content form,
    .u-content fieldset,
    .u-content .grid,
    .u-content .flex,
    .u-sheet form,
    .u-sheet fieldset,
    .u-sheet .grid,
    .u-sheet .flex {
        max-width: 100%;
    }
}
