/* Control · pulido premium compartido por todas las pantallas */
.plans-stats{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.plans-stats article strong{font-variant-numeric:tabular-nums}
.plans-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:stretch}
.plan-card{transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.plan-card:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--border));box-shadow:var(--premium-shadow-hover,0 16px 40px rgba(0,0,0,.25))}
.plan-card .plan-tenant-count{border-radius:var(--r-md)}
.plan-edit-btn:focus-visible,.btn-secondary:focus-visible,.btn-nuevo:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.plan-module-chip{transition:border-color .15s ease,color .15s ease}
.plan-module-chip:hover{color:var(--text-primary);border-color:var(--brand)}
.matrix-table tbody tr{transition:background .15s ease}
.matrix-table tbody tr:hover{background:rgba(148,163,184,.07)}
.matrix-table th:not(:first-child),.matrix-table td:not(:first-child){text-align:center}
.plans-matrix-table-wrapper{overflow-x:auto}
.panel .audit-table tbody tr{transition:background .15s ease}
.panel .audit-table tbody tr:hover{background:rgba(148,163,184,.06)}
.audit-table-wrapper{max-height:70vh;overflow:auto}
.audit-table thead th{position:sticky;top:0;z-index:1;background:var(--bg-elevated,var(--bg-card-solid))}
.audit-table td,.stats-grid strong{font-variant-numeric:tabular-nums}
.ticket-empty{margin:24px auto}
@media (prefers-reduced-motion:reduce){.plan-card,.plan-module-chip,.matrix-table tbody tr,.audit-table tbody tr{transition:none}.plan-card:hover{transform:none}}

/* Botón de ícono: misma clase y estilo que el ERP (.btn-icon). */
.btn-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:32px;height:32px;padding:0;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-button,none);cursor:pointer;font-family:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .15s ease,opacity .2s ease}
.btn-icon svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;flex-shrink:0;filter:none;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.btn-icon:hover:not(:disabled){background:var(--bg-input);border-color:var(--border-strong);color:var(--text-primary);transform:scale(1.08);box-shadow:var(--shadow-button,none)}
.btn-icon:active:not(:disabled){transform:scale(.94)}
.btn-icon:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.btn-icon:disabled{cursor:wait;opacity:.72}
.btn-icon > span:not(.btn-spinner){display:none}
.topbar-buttons .btn-icon{width:34px;height:34px}
.topbar-buttons .btn-icon svg{width:17px;height:17px}
/* Actualizar: gira al pasar el mouse y mientras carga (misma animación que Setup). */
#btn-refresh:hover:not(:disabled) svg{transform:rotate(180deg)}
.btn-icon.is-loading svg{animation:spin .8s linear infinite}
@media (max-width:860px){.topbar-buttons .btn-icon{width:38px;height:38px}}
@media (prefers-reduced-motion:reduce){.btn-icon,.btn-icon svg{transition:none}.btn-icon:hover:not(:disabled){transform:none}.btn-icon.is-loading svg{animation-duration:1.6s}}
.plan-edit-btn,.plan-edit-btn:hover:not(:disabled){color:var(--text-primary);background:var(--bg-input);border-color:var(--border)}
.plan-edit-btn:hover:not(:disabled){border-color:var(--border-strong)}
