/* Brand-aligned form states; scoped so tables and display cards retain their appearance. */
.gn-input{box-sizing:border-box;min-width:0;max-width:100%;transition:border-color .16s,box-shadow .16s}
/* Casillas y opciones: tamaño fijo para que no se aplasten dentro de una fila (medían 11 px en celular). Su etiqueta sigue siendo la zona para tocar. */
input[type=checkbox].gn-input,input[type=radio].gn-input{width:20px;height:20px;min-width:20px;flex:0 0 20px;margin-top:2px}
.gn-input:focus-visible{outline:3px solid #86b9a8;outline-offset:2px}
.gn-input[data-gn-state="error"]{border-color:#a82e3b!important;box-shadow:0 0 0 1px #a82e3b}
.gn-input[data-gn-state="success"]{border-color:#34755d!important}
.gn-input[data-gn-state="validating"]{border-style:dashed;border-color:#8c7441}
.gn-input:disabled{cursor:not-allowed;opacity:.65}
.gn-input:read-only:not(select){background-color:#edf1ee}
.gn-field-message{display:block;grid-column:1/-1;flex-basis:100%;font-size:.79rem;font-weight:400;line-height:1.45;color:#28634c;margin:4px 0 8px;overflow-wrap:anywhere}
.gn-field-message:empty{display:none}
.gn-field-message.gn-error{color:#a52b37}
.gn-password-row{display:flex;align-items:center;gap:8px;width:100%;min-width:0}
.gn-password-row>.gn-input{flex:1;min-width:0;width:100%;margin-bottom:0}
button.gn-password-toggle{flex:none;width:auto;min-height:44px;padding:8px 12px;font-size:.8rem;border:1px solid #b9cec4;border-radius:10px;background:#edf5ef;color:#173f32;cursor:pointer;margin:0}
.gn-password-checks{list-style:none;padding:0;margin:6px 0 14px;color:#5b6560;font-size:.8rem;font-weight:400;line-height:1.7}
.gn-password-checks li.met{color:#256447}
.gn-input~.gn-password-checks{grid-column:1/-1}
button:focus-visible{outline:3px solid #86b9a8;outline-offset:3px}
button[aria-busy="true"]{cursor:progress;opacity:.8}
@media (hover:hover) and (pointer:fine){button.gn-password-toggle:hover{background:#dcebe1}}
button.gn-password-toggle:active{transform:translateY(1px)}
.field-row:has(.gn-field-message){flex-wrap:wrap}
@media(max-width:700px){.gn-input{font-size:16px!important;min-height:44px}textarea.gn-input{min-height:90px}.gn-field-message{font-size:.82rem}.gn-password-row{flex-wrap:nowrap}}
@media(prefers-reduced-motion:reduce){.gn-input{transition:none}button.gn-password-toggle:active{transform:none}}
@media(forced-colors:active){.gn-input[data-gn-state="error"]{outline:2px dashed CanvasText}.gn-field-message{color:CanvasText}}