    /* ── Overlay ── */
    #overlay {
      display: none;
      position: fixed; inset: 0;
      background: rgba(0,0,0,.55);
      z-index: 900;
      backdrop-filter: blur(3px);
    }

    /* ── Modal ── */
    #modal {
      display: none;
      position: fixed;
      top: 50%; left: 50%;
      transform: translate(-50%, -50%) scale(.92);
      background: #F5EDCE;
      border-radius: 18px;
      /* Fills viewport on mobile, capped at 460px on desktop */
      width: min(460px, calc(100vw - 32px));
      z-index: 1000;
      text-align: center;
      box-shadow: 0 24px 60px rgba(0,0,0,.22);
      transition: transform .28s cubic-bezier(.34,1.56,.64,1), opacity .25s ease;
      opacity: 0;
      padding: 40px 36px 32px;
    }

    @media (max-width: 400px) {
      #modal { padding: 32px 18px 24px; border-radius: 14px; }
    }

    /* ── Coupon Spinner ── */
    @keyframes couponSpin {
      0%   { transform: rotate(0deg); }
      100% { transform: rotate(360deg); }
    }
    @keyframes couponPulse {
      0%, 100% { box-shadow: 0 0 0 0 rgba(37,99,235,.25); }
      50%       { box-shadow: 0 0 0 10px rgba(37,99,235,0); }
    }

    .coupon-spinner-wrap {
      display: flex;
      justify-content: center;
      margin: 0 auto 24px;
    }

    #spinner {
      position: relative;
      width: 80px; height: 50px;
      background: linear-gradient(135deg, #2563eb 0%, #7c3aed 100%);
      border-radius: 8px;
      animation: couponSpin 1.4s linear infinite, couponPulse 1.4s ease-in-out infinite;
      transition: background .5s;
      flex-shrink: 0;
    }

    /* Notch left */
    #spinner::before,
    #spinner::after {
      content: '';
      position: absolute;
      top: 50%; transform: translateY(-50%);
      width: 14px; height: 14px;
      background: #fff;
      border-radius: 50%;
      z-index: 2;
    }
    #spinner::before { left: -7px; }
    #spinner::after  { right: -7px; }

    /* % label inside */
    #spinner .coupon-label {
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 18px;
      font-weight: 800;
      color: #fff;
      letter-spacing: -1px;
      pointer-events: none;
      /* counter-rotate so the text stays upright while the coupon spins */
      animation: couponSpin 1.4s linear infinite reverse;
    }

    /* dashed cut-line overlay */
    #spinner .coupon-dash {
      position: absolute;
      top: 50%; left: 18px; right: 18px;
      height: 0;
      border-top: 2px dashed rgba(255,255,255,.45);
      transform: translateY(-50%);
      pointer-events: none;
    }

    /* ── Close ×  ── */
    #closeModal {
      position: absolute; top: 14px; right: 16px;
      background: none; border: none;
      font-size: 26px; line-height: 1;
      cursor: pointer; color: #94a3b8;
      padding: 4px 6px;
      transition: color .15s, transform .15s;
    }
    #closeModal:hover { color: #334155; transform: scale(1.2); }

    /* ── Resource link ── */
    #resourceLink {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 11px 22px;
      background: #000; color: #fff;
      text-decoration: none; border-radius: 9px;
      font-size: 14px; font-weight: 600;
      border: 1.5px solid #bfdbfe;
      transition: background .15s, border-color .15s;
      max-width: 100%; word-break: break-all;
    }
    #resourceLink:hover { background: #58287F; border-color: #93c5fd; }

    /* ── Dismiss ── */
    #dismissBtn {
      background: none; border: none;
      font-size: 13px; color: #94a3b8;
      cursor: pointer; text-decoration: underline;
      margin-top: 20px; display: block;
      transition: color .15s;
    }
    #dismissBtn:hover { color: #334155; }