/* CEMI Front UX · F1 · Neutral components */
.cemi-ux-button { display:inline-flex; align-items:center; justify-content:center; gap:var(--cemi-space-2); min-height:44px; padding:.72rem 1rem; border:1px solid transparent; border-radius:var(--cemi-radius-pill); background:var(--cemi-color-brand); color:#fff; font-weight:700; line-height:1; text-decoration:none; cursor:pointer; transition:transform var(--cemi-duration-fast) var(--cemi-ease-standard), box-shadow var(--cemi-duration-normal) var(--cemi-ease-standard), background var(--cemi-duration-normal) var(--cemi-ease-standard); }
.cemi-ux-button:hover { transform:translateY(-1px); box-shadow:var(--cemi-shadow-sm); }
.cemi-ux-button--secondary { background:var(--cemi-color-surface); color:var(--cemi-color-ink); border-color:var(--cemi-color-border); }
.cemi-ux-button--ghost { background:transparent; color:var(--cemi-color-ink); border-color:transparent; }
.cemi-ux-chip, .cemi-ux-badge { display:inline-flex; align-items:center; width:max-content; max-width:100%; border-radius:var(--cemi-radius-pill); white-space:nowrap; }
.cemi-ux-chip { min-height:34px; padding:.42rem .72rem; background:var(--cemi-color-surface-soft); border:1px solid var(--cemi-color-border); font-size:var(--cemi-font-size-sm); }
.cemi-ux-badge { padding:.28rem .55rem; background:var(--cemi-color-brand-soft); color:var(--cemi-color-brand-strong); font-size:var(--cemi-font-size-xs); font-weight:700; }
.cemi-ux-card { background:var(--cemi-color-surface); border:1px solid var(--cemi-color-border); border-radius:var(--cemi-radius-lg); box-shadow:var(--cemi-shadow-sm); padding:var(--cemi-space-6); }
.cemi-ux-card--flat { box-shadow:none; }
.cemi-ux-metric { display:flex; flex-direction:column; gap:var(--cemi-space-1); min-width:0; }
.cemi-ux-metric__label { color:var(--cemi-color-muted); font-size:var(--cemi-font-size-xs); font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.cemi-ux-metric__value { color:var(--cemi-color-ink); font-size:var(--cemi-font-size-lg); font-weight:700; }
.cemi-ux-attribute-group { display:flex; flex-wrap:wrap; gap:var(--cemi-space-2); }
.cemi-ux-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--cemi-space-3); }
.cemi-ux-cta { display:grid; gap:var(--cemi-space-5); align-items:center; padding:var(--cemi-space-6); background:var(--cemi-color-ink); color:#fff; border-radius:var(--cemi-radius-xl); }
.cemi-ux-field { display:grid; gap:var(--cemi-space-2); }
.cemi-ux-field__label { color:var(--cemi-color-ink); font-size:var(--cemi-font-size-sm); font-weight:700; }
.cemi-ux-input { width:100%; min-height:44px; padding:.7rem .85rem; color:var(--cemi-color-text); background:var(--cemi-color-surface); border:1px solid var(--cemi-color-border-strong); border-radius:var(--cemi-radius-md); }
.cemi-ux-state { padding:var(--cemi-space-4); border-radius:var(--cemi-radius-md); background:var(--cemi-color-surface-soft); border:1px solid var(--cemi-color-border); }
.cemi-ux-state--success { border-color:color-mix(in srgb, var(--cemi-color-success) 36%, var(--cemi-color-border)); }
.cemi-ux-state--warning { border-color:color-mix(in srgb, var(--cemi-color-warning) 36%, var(--cemi-color-border)); }
.cemi-ux-state--danger { border-color:color-mix(in srgb, var(--cemi-color-danger) 36%, var(--cemi-color-border)); }
.cemi-ux-modal { position:fixed; inset:0; z-index:var(--cemi-z-modal); display:grid; place-items:center; padding:var(--cemi-gutter); background:rgba(13,18,27,.55); }
.cemi-ux-modal__dialog { width:min(100%, 42rem); max-height:min(88vh, 52rem); overflow:auto; background:var(--cemi-color-surface); border-radius:var(--cemi-radius-xl); box-shadow:var(--cemi-shadow-lg); padding:var(--cemi-space-6); }

/* CEMI Front UX · C2.2 · Input Normalization Contract V0.1 */
.cemi-ux-input[data-cemi-input] { font-variant-numeric: tabular-nums; }
.cemi-ux-input[data-cemi-input="curp"],
.cemi-ux-input[data-cemi-input="rfc"],
.cemi-ux-input[data-cemi-input="nss"],
.cemi-ux-input[data-cemi-input="postal_code"],
.cemi-ux-input[data-cemi-input="clabe"] { letter-spacing:.02em; }
.cemi-ux-field__hint { color:var(--cemi-color-muted); font-size:var(--cemi-font-size-xs); line-height:1.45; }
.cemi-ux-input-group { display:flex; align-items:stretch; width:100%; }
.cemi-ux-input-group > .cemi-ux-input { min-width:0; flex:1 1 auto; }
.cemi-ux-input-group__prefix,
.cemi-ux-input-group__suffix { display:inline-flex; align-items:center; padding:.7rem .78rem; background:var(--cemi-color-surface-soft); border:1px solid var(--cemi-color-border-strong); color:var(--cemi-color-muted); font-size:var(--cemi-font-size-sm); font-weight:700; white-space:nowrap; }
.cemi-ux-input-group__prefix { border-radius:var(--cemi-radius-md) 0 0 var(--cemi-radius-md); border-right:0; }
.cemi-ux-input-group__suffix { border-radius:0 var(--cemi-radius-md) var(--cemi-radius-md) 0; border-left:0; }
.cemi-ux-input-group__prefix + .cemi-ux-input { border-top-left-radius:0; border-bottom-left-radius:0; }
.cemi-ux-input-group > .cemi-ux-input:has(+ .cemi-ux-input-group__suffix) { border-top-right-radius:0; border-bottom-right-radius:0; }
