/* app/css/10-base.css — estratto da app.css (2026-07, split senza build). */
/* App cliente Bloomest — CSS layout mobile-only 480px container
   Fonte verita': docs/appcliente/index.html (mockup live, read-only)
   Tokens condivisi: static/shared/tokens.css, caricato come <link> in
   templates/app/base.html PRIMA di questo file (niente @import: fetch
   seriale). ADR-AC-09: separato dal dashboard, mobile-only */

* { box-sizing: border-box; margin: 0; padding: 0; }
/* text-size-adjust 100%: disattiva il text autosizing di Safari iOS (gonfia
   il testo di alcuni blocchi solo su iPhone, allargando il layout oltre il
   viewport -> shrink-to-fit + auto-zoom al focus degli input). Reset standard
   (normalize.css) che mancava — stesso fix della dashboard (2026-07-05). */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
html, body { font-family: -apple-system, BlinkMacSystemFont, "Inter", "SF Pro Display", "Segoe UI", Roboto, system-ui, sans-serif; font-size: 16px; line-height: 1.45; color: var(--ink); background: var(--bg); -webkit-font-smoothing: antialiased; min-height: 100vh; overflow-x: clip; }
/* Rete di sicurezza globale: stringhe lunghe senza spazi (email, URL, ID) vanno a
   capo invece di sforare/tagliare i contenitori. Innocuo sul testo normale e sugli
   elementi con white-space:nowrap. Complemento di min-width:0 sui flex. */
body { overflow-wrap: break-word; }
button { font-family: inherit; font-size: inherit; cursor: pointer; border: none; background: none; color: inherit; }
input, textarea, select { font-family: inherit; font-size: inherit; }
/* Placeholder globale: tono unico e tenue, distinto dal valore inserito (--ink).
   opacity:1 pareggia Firefox, che di default attenua il colore dei placeholder. */
::placeholder { color: var(--ink-placeholder); opacity: 1; }
a { color: inherit; text-decoration: none; }
/* W8 chunk 2 · a11y: focus-visible globale per keyboard nav */
:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 4px; }
button:focus-visible, a:focus-visible, [role="button"]:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
/* Screen-reader-only utility for non-visible accessible names */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
/* Reset UA h1 margin inside sub-header/app-header (otherwise layout breaks) */
.sub-header h1.ttl, .app-header h1 { margin: 0; }
.i { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; vertical-align: middle; }
.i-sm { width: 14px; height: 14px; }
.i-lg { width: 22px; height: 22px; }
.i-xl { width: 28px; height: 28px; }
.i-2xl { width: 36px; height: 36px; }
.i-3xl { width: 48px; height: 48px; }

