/* Desenvolvido por Pablo Duque, com suporte de IA
 * Arquivo: /apton/public/assets/css/apton-ui-foundation.css
 * Versão: 1.0.0 (AptOn v2.19.0 RC9.8.2)
 * Atualizado em: 15/09/2026
 * Finalidade: tokens e regras transversais de consistência visual para Web, Minha Área, autenticação e telas administrativas.
 */
:root{
  --apton-font-family:"Segoe UI",Tahoma,Geneva,Verdana,system-ui,-apple-system,sans-serif;
  --apton-fs-xs:.72rem;
  --apton-fs-sm:.80rem;
  --apton-fs-base:.90rem;
  --apton-fs-md:1rem;
  --apton-fs-lg:1.15rem;
  --apton-fs-xl:1.55rem;
  --apton-lh-base:1.45;
  --apton-control-h:42px;
  --apton-control-radius:8px;
  --apton-touch-h:44px;
  --apton-gap-xs:.35rem;
  --apton-gap-sm:.55rem;
  --apton-gap-md:.85rem;
  --apton-gap-lg:1.15rem;
}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.apton-admin,.apton-public,.apton-auth,.apton-test{font-family:var(--apton-font-family);line-height:var(--apton-lh-base)}
.apton-admin button,.apton-admin input,.apton-admin select,.apton-admin textarea,
.apton-public button,.apton-public input,.apton-public select,.apton-public textarea,
.apton-auth button,.apton-auth input,.apton-auth select,.apton-auth textarea,
.apton-test button,.apton-test input,.apton-test select,.apton-test textarea{font-family:inherit}

/* Hierarquia de texto. Regras deliberadamente específicas para vencer CSS legado sem apagar exceções funcionais (PIN, códigos, métricas). */
.apton-admin .content h1:not(.ui-pin),.apton-public .container h1,.apton-public .personal-content h1{font-size:var(--apton-fs-xl);line-height:1.18}
.apton-admin .content h2:not(.ui-pin),.apton-public .container h2,.apton-public .personal-content h2{font-size:var(--apton-fs-lg);line-height:1.24}
.apton-admin .content h3,.apton-public .container h3,.apton-public .personal-content h3{font-size:var(--apton-fs-md);line-height:1.28}
.apton-admin .content h4,.apton-public .container h4,.apton-public .personal-content h4{font-size:.95rem;line-height:1.3}
.apton-auth .auth-wrapper h1{font-size:1.45rem;line-height:1.18}
.apton-auth .auth-wrapper h2{font-size:1.15rem;line-height:1.24}
.apton-auth .auth-wrapper h3{font-size:1rem;line-height:1.28}
.apton-admin .content p,.apton-public .container p,.apton-public .personal-content p,.apton-auth .auth-wrapper p{line-height:var(--apton-lh-base)}
.apton-admin .content small,.apton-public .container small,.apton-public .personal-content small,.apton-auth .auth-wrapper small{line-height:1.38}

/* Formulários: label -> controle -> ajuda, sempre ancorados no topo. */
.apton-admin .content label,.apton-public .container label,.apton-public .personal-content label,.apton-auth .auth-wrapper label{font-size:var(--apton-fs-sm);line-height:1.25}
.apton-admin .content input:not([type=checkbox]):not([type=radio]),
.apton-admin .content select,.apton-admin .content textarea,
.apton-public .container input:not([type=checkbox]):not([type=radio]),
.apton-public .container select,.apton-public .container textarea,
.apton-public .personal-content input:not([type=checkbox]):not([type=radio]),
.apton-public .personal-content select,.apton-public .personal-content textarea,
.apton-auth .auth-wrapper input:not([type=checkbox]):not([type=radio]),
.apton-auth .auth-wrapper select,.apton-auth .auth-wrapper textarea{
  font-size:var(--apton-fs-base);line-height:1.3;min-height:var(--apton-control-h)
}
.apton-admin .content textarea,.apton-public .container textarea,.apton-public .personal-content textarea,.apton-auth .auth-wrapper textarea{line-height:1.4}
.apton-admin .content :is(.ui-field,.field,.form-group,.verify-field,.int-field,.sp-field),
.apton-public :is(.field,.form-group,.verify-field),
.apton-auth .auth-wrapper :is(.field,.form-group){align-self:start;min-width:0}
.apton-admin .content :is(.ui-grid,.ui-grid-2,.ui-grid-3,.ui-grid-4,.ui-form-grid,.form-grid,.cf-grid,.ca-form,.int-grid,.verify-form,.eval-grid,.address-form-grid,.professional-registry-grid),
.apton-public :is(.form-grid,.verify-form,.eval-grid,.address-form-grid,.professional-registry-grid){align-items:start}

/* Botões e ações textuais. Botões puramente icônicos preservam sua geometria própria. */
.apton-admin .content button:not(.action-icon):not(.icon):not(.apton-picker-close),
.apton-admin .content a.btn,.apton-admin .content .btn,
.apton-public .container button:not(.action-icon):not(.icon):not(.apton-public-menu__button):not(.apton-picker-close),
.apton-public .container a.btn,.apton-public .personal-content button:not(.action-icon):not(.icon):not(.apton-public-menu__button):not(.apton-picker-close),
.apton-public .personal-content a.btn,.apton-auth .auth-wrapper button:not(.apton-picker-close),.apton-auth .auth-wrapper a.btn{
  font-size:.86rem;line-height:1.2
}

/* Tabelas, badges e textos auxiliares. */
.apton-admin .content table,.apton-public .container table,.apton-public .personal-content table{font-size:.84rem;line-height:1.4}
.apton-admin .content th,.apton-public .container th,.apton-public .personal-content th{font-size:.74rem;line-height:1.25}
.apton-admin .content :is(.ui-help,.help,.hint,.muted,.ca-help,.cert-help,.sp-meta,.verify-phone-status),
.apton-public :is(.help,.hint,.muted){font-size:.78rem;line-height:1.4}
.apton-admin .content :is(.ui-badge,.ui-status,.badge,.cert-badge,.int-badge,.sp-badge,.verify-badge,.mini-tag),
.apton-public :is(.badge,.mini-tag){font-size:var(--apton-fs-xs);line-height:1.15;text-transform:none}

/* Menus e shells: mesma escala entre Administração, Minha Área e área pública. */
.apton-admin .menu-title,.apton-public .personal-menu-title{font-size:.70rem}
.apton-admin .menu a,.apton-public .personal-menu a{font-size:.88rem;line-height:1.25}
.apton-admin .topbar,.apton-public .personal-topbar,.apton-public .header-publico{font-size:.88rem}
.apton-admin .admin-user-menu summary,.apton-public .user-menu summary{font-size:.86rem}

/* Utilitários para remover estilos inline recorrentes nas próximas revisões. */
.apton-text-xs{font-size:var(--apton-fs-xs)!important}.apton-text-sm{font-size:var(--apton-fs-sm)!important}.apton-text-base{font-size:var(--apton-fs-base)!important}.apton-text-md{font-size:var(--apton-fs-md)!important}.apton-text-lg{font-size:var(--apton-fs-lg)!important}.apton-text-xl{font-size:var(--apton-fs-xl)!important}
.apton-muted{color:#64748b!important}.apton-align-top{align-items:start!important}.apton-actions{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}

@media(max-width:680px){
  .apton-admin .content,.apton-public .container,.apton-public .personal-content{font-size:.92rem}
  .apton-admin .content h1:not(.ui-pin),.apton-public .container h1,.apton-public .personal-content h1{font-size:1.38rem}
  .apton-admin .content h2:not(.ui-pin),.apton-public .container h2,.apton-public .personal-content h2{font-size:1.10rem}
  .apton-admin .content button:not(.action-icon):not(.icon),.apton-public button:not(.action-icon):not(.icon):not(.apton-public-menu__button),.apton-auth .auth-wrapper button{font-size:.88rem}
}

/* RC9.8.2 — fechamento de consistência contra estilos legados embutidos nas views. */
.apton-admin .content h1:not(.ui-pin),.apton-public .container h1,.apton-public .personal-content h1{font-size:var(--apton-fs-xl)!important;line-height:1.18!important}
.apton-admin .content h2:not(.ui-pin),.apton-public .container h2,.apton-public .personal-content h2{font-size:var(--apton-fs-lg)!important;line-height:1.24!important}
.apton-admin .content h3,.apton-public .container h3,.apton-public .personal-content h3{font-size:var(--apton-fs-md)!important;line-height:1.28!important}
.apton-admin .content :is(.ui-field,.field,.form-group,.verify-field,.int-field,.sp-field,.cf-grid label,.ca-form label) :is(input,select,textarea),
.apton-public :is(.field,.form-group,.verify-field) :is(input,select,textarea){font-size:var(--apton-fs-base)!important;line-height:1.3!important}
.apton-admin .content :is(.ui-field,.field,.form-group,.verify-field,.int-field,.sp-field)>label,
.apton-public :is(.field,.form-group,.verify-field)>label{font-size:var(--apton-fs-sm)!important;line-height:1.25!important}
.apton-admin .content :is(.ui-help,.help,.hint,.muted,.ca-help,.cert-help,.sp-meta),.apton-public :is(.help,.hint,.muted){font-size:.78rem!important;line-height:1.4!important}
.apton-admin .content :is(.ui-badge,.ui-status,.badge,.cert-badge,.int-badge,.sp-badge,.verify-badge,.mini-tag),.apton-public :is(.badge,.mini-tag){font-size:var(--apton-fs-xs)!important;line-height:1.15!important}

/* Convenções por sufixo utilizadas pelos módulos legados: unifica sem exigir reescrita de cada view. */
.apton-admin .content :is([class$="-btn"],[class*="-btn "]):not(.action-icon):not(.btn-icon),
.apton-public :is([class$="-btn"],[class*="-btn "]):not(.action-icon):not(.apton-public-menu__button),
.apton-auth .auth-wrapper :is([class$="-btn"],[class*="-btn "]){font-size:.86rem!important;line-height:1.2!important}
.apton-admin .content :is([class$="-badge"],[class*="-badge "]),.apton-public :is([class$="-badge"],[class*="-badge "]){font-size:var(--apton-fs-xs)!important;line-height:1.15!important;text-transform:none}
.apton-admin .content :is([class$="-help"],[class*="-help "],[class$="-note"],[class*="-note "],[class$="-meta"],[class*="-meta "]),
.apton-public :is([class$="-help"],[class*="-help "],[class$="-note"],[class*="-note "],[class$="-meta"],[class*="-meta "]){font-size:.78rem!important;line-height:1.4!important}
.apton-admin .content :is([class$="-field"],[class*="-field "])>label,.apton-public :is([class$="-field"],[class*="-field "])>label{font-size:var(--apton-fs-sm)!important;line-height:1.25!important}
.apton-admin .content :is([class$="-field"],[class*="-field "]) :is(input,select,textarea),
.apton-public :is([class$="-field"],[class*="-field "]) :is(input,select,textarea){font-size:var(--apton-fs-base)!important;line-height:1.3!important}
.apton-admin .content :is([class$="-table"],[class*="-table "]),.apton-public :is([class$="-table"],[class*="-table "]){font-size:.84rem!important;line-height:1.4!important}


/* RC9.8.2 — auditoria transversal final: gramática única para todas as telas WEB. */
.apton-admin .content,
.apton-public .container,
.apton-public .personal-content,
.apton-auth .auth-wrapper,
.apton-test main{font-size:var(--apton-fs-base);line-height:var(--apton-lh-base)}

.apton-admin .content p:not(.ui-help):not(.help):not(.hint):not(.muted):not([class$="-help"]):not([class*="-help "]):not([class$="-note"]):not([class*="-note "]):not([class$="-meta"]):not([class*="-meta "]),
.apton-public .container p:not(.help):not(.hint):not(.muted):not([class$="-help"]):not([class*="-help "]):not([class$="-note"]):not([class*="-note "]):not([class$="-meta"]):not([class*="-meta "]),
.apton-public .personal-content p:not(.help):not(.hint):not(.muted):not([class$="-help"]):not([class*="-help "]):not([class$="-note"]):not([class*="-note "]):not([class$="-meta"]):not([class*="-meta "]),
.apton-auth .auth-wrapper p:not(.help):not(.hint):not(.muted){font-size:var(--apton-fs-base)!important;line-height:var(--apton-lh-base)!important}

.apton-admin .content :is(button,a.btn,.btn,[class$="-btn"],[class*="-btn "]),
.apton-public :is(.container,.personal-content) :is(button,a.btn,.btn,[class$="-btn"],[class*="-btn "]),
.apton-auth .auth-wrapper :is(button,a.btn,.btn,[class$="-btn"],[class*="-btn "]){font-size:.86rem!important;line-height:1.2!important}
.apton-admin .content :is(button,a.btn,.btn):not(.btn-sm):not(.action-icon):not(.icon):not(.btn-icon),
.apton-public :is(.container,.personal-content) :is(button,a.btn,.btn):not(.btn-sm):not(.action-icon):not(.icon):not(.btn-icon),
.apton-auth .auth-wrapper :is(button,a.btn,.btn):not(.btn-sm):not(.action-icon):not(.icon):not(.btn-icon){min-height:var(--apton-control-h)}
.apton-admin .content :is(.btn-sm,[class*=" btn-sm"],[class$="-small"]),
.apton-public :is(.container,.personal-content) :is(.btn-sm,[class*=" btn-sm"],[class$="-small"]){font-size:.78rem!important;line-height:1.2!important}

.apton-admin .content :is(input,select,textarea):not([type=checkbox]):not([type=radio]),
.apton-public :is(.container,.personal-content) :is(input,select,textarea):not([type=checkbox]):not([type=radio]),
.apton-auth .auth-wrapper :is(input,select,textarea):not([type=checkbox]):not([type=radio]){
  font-size:var(--apton-fs-base)!important;line-height:1.3!important
}
.apton-admin .content textarea,.apton-public :is(.container,.personal-content) textarea,.apton-auth .auth-wrapper textarea{line-height:1.4!important}
.apton-admin .content label,.apton-public :is(.container,.personal-content) label,.apton-auth .auth-wrapper label{font-size:var(--apton-fs-sm)!important;line-height:1.25!important}

.apton-admin .content :is(table,[class$="-table"],[class*="-table "]),
.apton-public :is(.container,.personal-content) :is(table,[class$="-table"],[class*="-table "]){font-size:.84rem!important;line-height:1.4!important}
.apton-admin .content th,.apton-public :is(.container,.personal-content) th{font-size:.74rem!important;line-height:1.25!important}
.apton-admin .content td,.apton-public :is(.container,.personal-content) td{vertical-align:top}

.apton-admin .content :is(.ui-card,.card-admin,[class$="-card"],[class*="-card "])>h2:first-child,
.apton-public :is(.container,.personal-content) :is([class$="-card"],[class*="-card "])>h2:first-child{font-size:var(--apton-fs-lg)!important;line-height:1.24!important}

.apton-admin .content details>summary,.apton-public :is(.container,.personal-content) details>summary{font-size:.90rem;line-height:1.3}
.apton-admin .content dialog,.apton-public :is(.container,.personal-content) dialog{font-size:var(--apton-fs-base);line-height:var(--apton-lh-base)}

/* Grids de formulários legados: os controles começam na mesma borda superior.
   A ajuda pertence ao próprio campo e nunca desloca o controle vizinho. */
.apton-admin .content :is(.grid,.facts,.trust-row,.ca-grid,.ca-form,.cf-grid,.plat-grid,.space-grid,.verify-form,.ui-grid,.ui-grid-2,.ui-grid-3,.ui-grid-4,.ui-cert-grid,.ui-cert-grid-secondary,.ui-signature-grid,.ui-location-grid),
.apton-public :is(.container,.personal-content) :is(.grid,.facts,.trust-row,.space-grid,.verify-form,.ui-grid,.ui-grid-2,.ui-grid-3,.ui-grid-4){align-items:start}
.apton-admin .content :is(.field,.ui-field,.form-group,.verify-field,.sp-field,[class$="-field"],[class*="-field "]),
.apton-public :is(.container,.personal-content) :is(.field,.ui-field,.form-group,.verify-field,.sp-field,[class$="-field"],[class*="-field "]){align-self:start;min-width:0}

/* Status/badges: caixa alta permanece reservada a acrônimos técnicos, nunca ao estado visual. */
.apton-admin .content :is(.ui-badge,.badge,.cert-badge,.sp-badge,.msg-badge,.verify-badge,.mini-tag),
.apton-public :is(.container,.personal-content) :is(.ui-badge,.badge,.cert-badge,.sp-badge,.msg-badge,.verify-badge,.mini-tag){
  text-transform:none!important;letter-spacing:normal
}


/* Exceções semânticas controladas: métricas e códigos são maiores por função, não por inconsistência. */
.apton-metric-value{font-size:1.7rem!important;line-height:1.05;font-weight:900}
.apton-code-input{font-size:1.25rem!important;line-height:1.2!important;letter-spacing:.18em}
