/* O gesto de pinça não altera a escala da página; o scroll continua disponível. */
html, body, #app {
    touch-action: pan-x pan-y !important;
}

:where(button, a[href], [role="button"], input, textarea, select) {
    -webkit-tap-highlight-color: transparent;
}

:where(button:not(:disabled), a[href], [role="button"]):active {
    filter: brightness(.94);
}

/* Evita que o Safari amplie a página ao focar controles pequenos. */
@media (pointer: coarse) {
    :where(input, textarea, select):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]) {
        font-size: 16px !important;
    }
}

/* Instalação: convite clicável e instruções no padrão das modais do app. */
.install-banner .install-open {
    display:flex; align-items:center; gap:12px; flex:1; min-width:0;
    padding:0; border:0; background:transparent; color:inherit; text-align:left; cursor:pointer;
}
.install-open:focus-visible { outline:2px solid var(--h-accent); outline-offset:5px; border-radius:10px; }
.install-app-icon { width:48px; height:48px; flex:none; border-radius:14px; }
.install-dialog #nm-install-intro { margin:0 0 22px; color:var(--h-muted); line-height:1.6; }
.install-steps { list-style:none; counter-reset:install-step; padding:0; margin:0; display:grid; gap:16px; }
.install-steps li { counter-increment:install-step; display:flex; align-items:flex-start; gap:12px; line-height:1.6; }
.install-steps li::before {
    content:counter(install-step); display:grid; place-items:center; flex:0 0 32px; height:32px;
    border-radius:50%; background:var(--h-soft); color:var(--h-accent); font-weight:700;
}
.install-status { margin:18px 0 0; color:var(--h-muted); font-size:13px; line-height:1.6; }
.install-status:empty { display:none; }
.install-dialog .install-native[hidden] { display:none; }
.install-dialog .install-native:disabled { opacity:.5; cursor:default; }
