/* Localized coupon CTAs: equal widths, wrapping labels, no exposed code. */
.coupon-button-type {
  width: 260px;
  max-width: 100%;
}
.coupon-button-type .coupon-deal,
.coupon-button-type .coupon-print,
.coupon-button-type .coupon-code {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-width: 0;
  min-height: 48px;
  padding: 12px 16px;
  line-height: 1.4;
  font-size: 14px;
  letter-spacing: .3px;
  white-space: normal;
  overflow-wrap: anywhere;
}
.coupon-button-type .coupon-code {
  padding: 0;
  border: 0;
  overflow: hidden;
}
.coupon-button-type .coupon-code .code-text {
  display: none;
}
.coupon-button-type .coupon-code .get-code,
.coupon-button-type .coupon-code .get-code:hover {
  position: static;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  padding: 12px 16px;
  font-size: inherit;
  line-height: inherit;
  border-radius: 3px;
}
.coupon-button-type .coupon-code .get-code:after {
  display: none;
}
.coupon-button-type .exp-text {
  white-space: normal;
  overflow-wrap: anywhere;
}
.coupon-button-type a:focus-visible {
  outline: 3px solid #005f65;
  outline-offset: 3px;
}

/* Coupon types tell themselves apart by colour, never by size: every CTA keeps
   the box defined above. Code is left on the brand orange as the primary
   action; sale moves onto #00979d, the accent the logo, the links and the
   site buttons already run on, and trial takes its darker shade. Badge and
   button share one colour per type, so a card reads as one thing. */
.coupon-button-type a[data-type="sale"].coupon-deal {
  background: #00979d;
}
.coupon-button-type a[data-type="trial"].coupon-deal {
  background: #005f65;
}
/* The options panel prints the old palette a second time, inline in the head,
   so it lands after this file and wins at equal weight. These selectors carry
   one class more than that copy - the badge already has both c-code and
   c-sale, and the count doubles its own class - which is the smallest thing
   that beats generated CSS we do not control. */
.c-type .c-code.c-sale,
.coupon-listing-item .c-type .c-code.c-sale {
  background: #00979d;
}
.coupon-filter .ui.menu .item .sale-count.sale-count {
  background: #00979d;
}
.coupon-filter .ui.menu .item .trial-count.trial-count {
  background: #005f65;
}
.c-type .c-code.c-trial,
.coupon-listing-item .c-type .c-code.c-trial {
  background: #005f65;
}

/* Waiting for a held back code. Semantic ships a loader, but its .ui.loader is
   a zero height box the theme then overrides, so this is its own eleven lines
   rather than a fight with someone else's cascade. */
.code-locked-spinner {
  display: inline-block;
  width: 26px;
  height: 26px;
  border: 3px solid #e9e9e9;
  border-top-color: #ff9900;
  border-radius: 50%;
  animation: dw-code-spin .8s linear infinite;
}
@keyframes dw-code-spin {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .code-locked-spinner { animation-duration: 2.4s; }
}
