/* KapaZero · clases de utilidad compartidas (Control y STL Snapper). FUENTE ÚNICA: shared/kz-utilidades.css.
   No editar las copias de src/web-control/shared ni src/web-stl-snapper/shared: editar aquí y ejecutar .claude/scripts/sincronizar-shared.sh.
   Dos capas:
   · «u-*»  utilidades FORZADAS (!important): sustituyen a un style="…" en línea (que también gana a todo). Usar en lugar de estilos en línea.
   · «ub-*» utilidades BASE (sin !important): sustituyen a las antiguas utilidades de Tailwind de STL Snapper; una clase de componente cargada
     después (p. ej. .btn, .fld) las puede sobrescribir, igual que antes. Para código nuevo, preferir un componente o una clase semántica.
   Este archivo se carga ANTES de kz-componentes.css. */

/* ---- u-*: forzadas ---- */
.u-ml-auto{margin-left:auto!important}
.u-fs125{font-size:12.5px!important}
.u-fs12{font-size:12px!important}
.u-fs13{font-size:13px!important}
.u-mt4{margin-top:4px!important}
.u-mt6{margin-top:6px!important}
.u-mt8{margin-top:8px!important}
.u-mt10{margin-top:10px!important}
.u-mt12{margin-top:12px!important}
.u-mt14{margin-top:14px!important}
.u-mb14{margin-bottom:14px!important}
.u-mb16{margin-bottom:16px!important}
.u-mb10{margin-bottom:10px!important}
.u-gap8{gap:8px!important}
.u-gap10{gap:10px!important}
.u-tc{text-align:center!important}
.u-m0{margin:0!important}
.u-wrap{overflow-wrap:anywhere!important}
.u-w220{width:220px!important}
.u-w70{width:70px!important}
.u-w110{width:110px!important}
.u-w100{width:100px!important}
.u-w36{width:36px!important}
.u-w26{width:26px!important}
.u-fw6{font-weight:600!important}
.u-minw0{min-width:0!important}
.u-prewrap{white-space:pre-wrap!important}
.u-cols-1a{grid-template-columns:1fr auto!important}
.u-flex12{display:flex;gap:12px;align-items:center;flex-wrap:wrap!important}
.u-flex8{display:flex;gap:8px;flex-wrap:wrap!important}
.u-tnum{font-variant-numeric:tabular-nums!important}
.u-tr{text-align:right!important}
.u-gap14{gap:14px!important}
.pos{color:var(--pos)} .neg{color:var(--neg)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}

/* ---- ub-*: base ---- */
.ub-block{display:block}
.ub-flex{display:flex}
.ub-grid{display:grid}
.ub-hidden{display:none}
.ub-f1{flex:1 1 0%}
.ub-col{flex-direction:column}
.ub-fwrap{flex-wrap:wrap}
.ub-nosh{flex-shrink:0}
.ub-sel-end{align-self:flex-end}
.ub-ai-c{align-items:center}
.ub-ai-s{align-items:flex-start}
.ub-jc-b{justify-content:space-between}
.ub-jc-e{justify-content:flex-end}
.ub-cols2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ub-cols3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ub-cols5{grid-template-columns:repeat(5,minmax(0,1fr))}
.ub-gap2{gap:.125rem}
.ub-gap4{gap:.25rem}
.ub-gap6{gap:.375rem}
.ub-gap8{gap:.5rem}
.ub-gap12{gap:.75rem}
.ub-gapx8{-moz-column-gap:.5rem;column-gap:.5rem}
.ub-gapx12{-moz-column-gap:.75rem;column-gap:.75rem}
.ub-gapy4{row-gap:.25rem}
.ub-gapy6{row-gap:.375rem}
.ub-mtn2{margin-top:-.125rem}
.ub-mtn4{margin-top:-.25rem}
.ub-mt2{margin-top:.125rem}
.ub-mt4{margin-top:.25rem}
.ub-mt6{margin-top:.375rem}
.ub-mt8{margin-top:.5rem}
.ub-mt10{margin-top:.625rem}
.ub-mt16{margin-top:1rem}
.ub-mb2{margin-bottom:.125rem}
.ub-mb4{margin-bottom:.25rem}
.ub-mb6{margin-bottom:.375rem}
.ub-mb8{margin-bottom:.5rem}
.ub-mb12{margin-bottom:.75rem}
.ub-mb16{margin-bottom:1rem}
.ub-p10{padding:.625rem}
.ub-px4{padding-left:.25rem;padding-right:.25rem}
.ub-px8{padding-left:.5rem;padding-right:.5rem}
.ub-px10{padding-left:.625rem;padding-right:.625rem}
.ub-py4{padding-top:.25rem;padding-bottom:.25rem}
.ub-py6{padding-top:.375rem;padding-bottom:.375rem}
.ub-pb10{padding-bottom:.625rem}
.ub-pt10{padding-top:.625rem}
.ub-pt12{padding-top:.75rem}
.ub-h6{height:.375rem}
.ub-h8{height:.5rem}
.ub-h14{height:.875rem}
.ub-h16{height:1rem}
.ub-h192{height:12rem}
.ub-h28{height:1.75rem}
.ub-hfull{height:100%}
.ub-w12{width:.75rem}
.ub-w14{width:.875rem}
.ub-w16{width:1rem}
.ub-w24{width:1.5rem}
.ub-w48{width:3rem}
.ub-w56{width:3.5rem}
.ub-w64{width:4rem}
.ub-w80{width:5rem}
.ub-w96{width:6rem}
.ub-w112{width:7rem}
.ub-wfull{width:100%}
.ub-minw0{min-width:0}
.ub-maxw60{max-width:60%}
.ub-maxw62{max-width:62%}
.ub-ovh{overflow:hidden}
.ub-trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ub-b{border-width:1px}
.ub-bt{border-top-width:1px}
.ub-bc-accent-line{border-color:var(--accent-line)}
.ub-bc-green{border-color:var(--green-bg)}
.ub-bc-line{border-color:var(--line)}
.ub-bc-strong{border-color:var(--line-strong)}
.ub-r4{border-radius:.25rem}
.ub-r2{border-radius:.125rem}
.ub-r8{border-radius:.5rem}
.ub-r10{border-radius:10px}
.ub-rfull{border-radius:9999px}
.ub-bg-accent-soft{background-color:var(--accent-soft)}
.ub-bg-accent{background-color:var(--accent)}
.ub-bg-green{background-color:var(--green-bg)}
.ub-bg-line{background-color:var(--line)}
.ub-bg-surface2{background-color:var(--surface-2)}
.ub-bg-surface{background-color:var(--surface)}
.ub-h-bg-accent-soft:hover{background-color:var(--accent-soft)}
.ub-h-bg-surface2:hover{background-color:var(--surface-2)}
.ub-h-bc-accent:hover{border-color:var(--accent)}
.ub-h-c-accent:hover{color:var(--accent)}
.ub-fs115{font-size:11.5px}
.ub-fs12{font-size:12px}
.ub-fs13{font-size:13px}
.ub-text-sm{font-size:.875rem;line-height:1.25rem}
.ub-text-xs{font-size:.75rem;line-height:1rem}
.ub-tr{text-align:right}
.ub-fw7{font-weight:700}
.ub-fw5{font-weight:500}
.ub-fw6{font-weight:600}
.ub-mono{font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace}
.ub-upper{text-transform:uppercase}
.ub-track{letter-spacing:.025em}
.ub-lh1{line-height:1}
.ub-lh-snug{line-height:1.375}
.ub-c-accent{color:var(--accent)}
.ub-c-green{color:var(--green-fg)}
.ub-c-muted{color:var(--muted)}
.ub-c-ink{color:var(--ink)}
.ub-c-neg{color:var(--neg)}
.ub-c-surface{color:var(--surface)}
.ub-under{text-decoration-line:underline}
.ub-under-off{text-underline-offset:2px}
.ub-nowrap{white-space:nowrap}
.ub-pointer{cursor:pointer}
.ub-nosel{-webkit-user-select:none;-moz-user-select:none;user-select:none}
.ub-noappear{-webkit-appearance:none;-moz-appearance:none;appearance:none}
.ub-op50{opacity:.5}
.ub-nopointer{pointer-events:none}
.ub-spin{animation:kz-spin 1s linear infinite}
.ub-tr-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}
.ub-tr-col{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}
.ub-tr-op{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}
.ub-tr-tf{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}
.ub-dur100{transition-duration:.1s}
.ub-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}
@keyframes kz-spin{to{transform:rotate(1turn)}}
