.entitlement-spinner { display: inline-block; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; vertical-align: -.15em; animation: entitlement-spin .8s linear infinite; }
.entitlement-spinner[hidden] { display: none; }
@keyframes entitlement-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .entitlement-spinner { animation: none; } }
[data-entitlement-form][aria-busy="true"] button { opacity: .65; cursor: wait; }

/* Billing actions use explicit layout, independent of generated utilities. */
.billing-panel .v-btn {
  box-sizing: border-box;
  width: 100%;
  min-height: 2.75rem;
  padding: .75rem 1rem;
  line-height: 1.4;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
  margin: 0;
}
.billing-panel form { margin: 1.5rem 0; }
.billing-panel form > .v-btn { margin-top: 1rem; }
.billing-panel > .v-btn { margin: 0 0 1.5rem; }
.billing-panel .billing-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  gap: .75rem;
  margin: 1.5rem 0;
}
.billing-panel .billing-actions:last-child { margin-bottom: 0; }
.billing-panel .billing-actions > :only-child { grid-column: 1 / -1; }
.billing-panel .entitlement-progress { margin: 1.5rem 0; }
.billing-panel input[type="number"] { width: 100%; min-height: 2.75rem; box-sizing: border-box; }
@media (max-width: 480px) {
  .billing-panel .billing-actions { grid-template-columns: minmax(0, 1fr); }
}
