body.access-locked { overflow: hidden; }
.access-modal {
  position: fixed; inset: 0; z-index: 1500; display: grid; place-items: center; padding: 20px;
  background: rgba(3, 6, 13, .82); backdrop-filter: blur(14px);
  opacity: 0; visibility: hidden; transition: .2s ease;
}
.access-modal.show { opacity: 1; visibility: visible; }
.access-dialog {
  position: relative; width: min(560px, 100%); padding: 32px;
  border: 1px solid rgba(139, 112, 255, .32); border-radius: 20px;
  background: linear-gradient(145deg, #111827, #090e19); color: #eef2f8;
  box-shadow: 0 35px 100px rgba(0,0,0,.58);
}
.access-dialog.compact { width: min(460px, 100%); }
.access-close { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(255,255,255,.06); color: #abb5c5; font-size: 21px; cursor: pointer; }
.access-kicker { color: #a995ff; font-size: 10px; font-weight: 800; letter-spacing: .16em; }
.access-dialog h2 { margin: 10px 38px 10px 0; font-size: clamp(24px,5vw,32px); }
.access-dialog p { margin: 0; color: #929daf; line-height: 1.8; }
.access-prices { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 22px 0; }
.access-prices span { padding: 13px; border: 1px solid rgba(148,163,184,.12); border-radius: 11px; background: rgba(255,255,255,.03); color: #aab4c3; font-size: 13px; }
.access-prices b { display: block; margin-top: 4px; color: #ffb15a; font-size: 18px; }
.access-actions { display: grid; gap: 9px; margin-top: 22px; }
.access-actions.row { grid-template-columns: 1fr 1fr; }
.access-btn { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 11px 14px; border: 1px solid rgba(148,163,184,.17); border-radius: 10px; background: rgba(255,255,255,.04); color: #d0d7e2; text-decoration: none; cursor: pointer; }
.access-btn.primary { border-color: rgba(139,112,255,.42); background: linear-gradient(105deg,#6f50ec,#8769f4); color: #fff; font-weight: 800; }
.access-btn.subtle { color: #8995a7; }
.redeem-input { width: 100%; margin-top: 20px; padding: 14px 15px; border: 1px solid rgba(148,163,184,.2); border-radius: 10px; outline: 0; background: #080d17; color: #fff; font-size: 15px; text-transform: uppercase; }
.redeem-input:focus { border-color: #8064ed; box-shadow: 0 0 0 3px rgba(124,92,255,.12); }
.redeem-error { min-height: 19px; margin-top: 7px; color: #ff807b; font-size: 12px; }
.redeem-buy-hint { margin-top: 2px !important; font-size: 12px; text-align: center; }
.redeem-buy-hint button { padding: 0; border: 0; background: transparent; color: #aa94ff; cursor: pointer; }
.redeem-buy-hint button:hover { color: #d5caff; }
.redeem-purchase-fallback { display: none; margin-top: 22px; padding: 18px; border: 1px solid rgba(255,177,90,.22); border-radius: 12px; background: rgba(255,177,90,.06); }
.redeem-purchase-fallback.show { display: block; }
.redeem-purchase-fallback strong { color: #ffbd73; }
.redeem-purchase-fallback p { margin: 8px 0 16px; font-size: 13px; }
.redeem-success-dialog { text-align: center; }
.redeem-success-icon { display: grid; place-items: center; width: 58px; height: 58px; margin: 0 auto 16px; border-radius: 50%; background: linear-gradient(135deg,#59c58c,#7be0aa); color: #07140d; font-size: 28px; font-weight: 900; box-shadow: 0 14px 36px rgba(89,197,140,.22); }
.purchase-steps { margin: 20px 0; padding-left: 22px; color: #aab4c3; line-height: 1.9; }
.demo-host { position: fixed; inset: 0; z-index: 1400; display: none; background: #070b13; }
.demo-host.show { display: block; }
.demo-host iframe { width: 100%; height: 100%; border: 0; background: #070b13; }
.access-toast { position: fixed; z-index: 1700; left: 50%; bottom: 28px; padding: 12px 18px; border: 1px solid rgba(139,112,255,.28); border-radius: 10px; background: rgba(10,15,27,.94); color: #fff; opacity: 0; transform: translate(-50%,12px); transition: .2s ease; pointer-events: none; }
.access-toast.show { opacity: 1; transform: translate(-50%,0); }
@media (max-width: 600px) {
  .access-modal { padding: 12px; }
  .access-dialog { padding: 26px 20px 22px; border-radius: 16px; }
  .access-prices { grid-template-columns: 1fr; }
}
