/* ZoyaCard — pixel-perfect from Figma 1:79 */

._card_1je4x_3 {
  position: relative;
  overflow: hidden;
  border-radius: 16px;
  width: 100%;
  background: linear-gradient(150.477deg, #7F22FE 0%, #8E51FF 50%, #9810FA 100%);
  padding: 20px;
  box-sizing: border-box;
}

/* Zoya photo — Figma: left 75, top 0, 202×202, opacity 0.2 */
._bgImage_1je4x_14 {
  position: absolute;
  left: 75px;
  top: 0;
  width: 202px;
  height: 202px;
  object-fit: cover;
  opacity: 0.2;
  pointer-events: none;
  z-index: 0;
}

/* Glow 1 — left 257.73, top -31.99, 128×128, white 10%, blur 8 */
._glow1_1je4x_27 {
  position: absolute;
  left: 257.73px;
  top: -31.99px;
  width: 127.994px;
  height: 127.994px;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.10);
  filter: blur(8px);
  pointer-events: none;
  z-index: 0;
}

/* Glow 2 — left 289.73, top 31.99, 80×80, white 5% */
._glow2_1je4x_41 {
  position: absolute;
  left: 289.73px;
  top: 31.99px;
  width: 79.998px;
  height: 79.998px;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.05);
  pointer-events: none;
  z-index: 0;
}

/* Glow 3 — left 209.74, top 128.32, 96×96, white 5% */
._glow3_1je4x_54 {
  position: absolute;
  left: 209.74px;
  top: 128.32px;
  width: 95.993px;
  height: 95.993px;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.05);
  pointer-events: none;
  z-index: 0;
}

/* Content column */
._content_1je4x_67 {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 11.991px;
  width: 100%;
  box-sizing: border-box;
}

/* Header row: icon + title block */
._headerRow_1je4x_79 {
  display: flex;
  align-items: center;
  gap: 7.998px;
  height: 42.999px;
  width: 100%;
}

/* Sparkle icon wrap — 32×32, white 20%, rounded 14 */
._iconWrap_1je4x_88 {
  width: 31.99px;
  height: 31.99px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

._titleBlock_1je4x_99 {
  display: flex;
  flex-direction: column;
}

._title_1je4x_99 {
  font-family: Inter, system-ui, sans-serif;
  font-weight: 500;
  font-size: 18px;
  line-height: 27px;
  color: #ffffff;
  white-space: nowrap;
}

._subtitle_1je4x_113 {
  font-family: Inter, system-ui, sans-serif;
  font-weight: 400;
  font-size: 12px;
  line-height: 16px;
  color: #ddd6ff;
  white-space: nowrap;
}

/* Description */
._description_1je4x_123 {
  font-family: Inter, system-ui, sans-serif;
  font-weight: 400;
  font-size: 14px;
  line-height: 20px;
  color: #ede9fe;
  max-width: 313px;
  margin: 0;
}

/* CTA button — full width, 49px tall, icons pinned left/right */
._cta_1je4x_134 {
  position: relative;
  width: 100%;
  height: 49.356px;
  border: 0.691px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.2);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #fff;
  -webkit-tap-highlight-color: transparent;
  transition: transform 0.1s;
  padding: 0;
  box-sizing: border-box;
}

._cta_1je4x_134:active {
  transform: scale(0.98);
}

._ctaIconLeft_1je4x_156 {
  position: absolute;
  left: 15.99px;
  display: flex;
  align-items: center;
  justify-content: center;
}

._ctaIconLeft_1je4x_156 svg {
  width: 15.995px;
  height: 15.995px;
}

._ctaLabel_1je4x_169 {
  font-family: Inter, system-ui, sans-serif;
  font-weight: 500;
  font-size: 16px;
  line-height: 24px;
  color: #ffffff;
}

._ctaIconRight_1je4x_177 {
  position: absolute;
  right: 15.99px;
  display: flex;
  align-items: center;
  justify-content: center;
}

._ctaIconRight_1je4x_177 svg {
  width: 15.995px;
  height: 15.995px;
}
/* ── Backdrop ── */
.booking-details-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: bdFadeIn 0.25s ease-out;
}
.booking-details-backdrop--closing {
  animation: bdFadeOut 0.25s ease-in forwards;
}

/* ── Card (glass morphism) ── */
.booking-details-card {
  position: relative;
  width: 100%;
  max-width: 300px;
  padding: 24px;
  border-radius: 20px;
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(40px) saturate(1.6);
  -webkit-backdrop-filter: blur(40px) saturate(1.6);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
  animation: bdSlideUp 0.25s ease-out;
  overflow: hidden;
}
.booking-details-card--closing {
  animation: bdSlideDown 0.25s ease-in forwards;
}

/* ── Close button ── */
.booking-details-close {
  position: absolute;
  top: 18px;
  right: 18px;
  z-index: 2;
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.1);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  cursor: pointer;
  transition: background 0.2s;
}
.booking-details-close svg {
  width: 10px;
  height: 10px;
}
.booking-details-close svg path {
  stroke: rgba(255, 255, 255, 0.7);
}
.booking-details-close:hover {
  background: rgba(255, 255, 255, 0.15);
}

/* ── Title ── */
.booking-details-title {
  margin: 0 0 18px;
  font-size: 18px;
  font-weight: 600;
  color: #fff;
  line-height: 24px;
  letter-spacing: 0.07px;
}

/* ── Info card (inner glass) ── */
.booking-details-info {
  background: rgba(255, 255, 255, 0.05);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.1);
  border-radius: 12px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 18px;
}

.booking-details-info-label {
  margin: 0;
  font-size: 11px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.6);
  line-height: 15px;
  letter-spacing: -0.15px;
}

.booking-details-info-service {
  margin: 3px 0 0;
  font-size: 14px;
  font-weight: 500;
  color: #fff;
  line-height: 21px;
  letter-spacing: -0.44px;
}

.booking-details-info-paid {
  margin: 3px 0 0;
  font-size: 14px;
  font-weight: 600;
  color: rgba(120, 200, 140, 0.85);
  line-height: 21px;
  letter-spacing: -0.44px;
}

.booking-details-info-datetime {
  margin: 3px 0 0;
  font-size: 14px;
  font-weight: 500;
  color: #fff;
  line-height: 21px;
  letter-spacing: -0.44px;
}

.booking-details-info-notes {
  margin: 3px 0 0;
  font-size: 13px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.85);
  line-height: 19px;
  letter-spacing: -0.2px;
}

/* ── Payment warning (Figma: PaymentWarning 667:629) ── */
.booking-details-payment-warning {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 16px 20px;
  border-radius: 16px;
  border: var(--app-hairline-width) solid rgba(255, 159, 10, 0.4);
  background: linear-gradient(163deg, rgba(255, 159, 10, 0.15) 0%, rgba(255, 204, 0, 0.15) 100%);
  margin-bottom: 18px;
}

.booking-details-payment-warning-icon {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
}

.booking-details-payment-warning-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.booking-details-payment-warning-title {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: #ffb84d;
  line-height: 20px;
  letter-spacing: -0.15px;
}

.booking-details-payment-warning-desc {
  margin: 0;
  font-size: 13px;
  font-weight: 400;
  color: rgba(255, 184, 77, 0.9);
  line-height: 18px;
  letter-spacing: -0.1px;
}

/* ── Action buttons ── */
.booking-details-actions {
  display: flex;
  flex-direction: column;
  gap: 9px;
}

.booking-details-btn {
  width: 100%;
  height: 39px;
  border-radius: 11px;
  border: none;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: -0.31px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: opacity 0.2s, filter 0.2s;
}
.booking-details-btn svg {
  width: 15px;
  height: 15px;
}
.booking-details-btn:hover:not(:disabled) {
  filter: brightness(1.08);
}
.booking-details-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.booking-details-btn--payment {
  background: rgba(52, 199, 89, 0.15);
  border: var(--app-hairline-width) solid rgba(52, 199, 89, 0.3);
  color: #6ee89b;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.booking-details-btn--reschedule {
  background: rgba(43, 127, 255, 0.15);
  border: var(--app-hairline-width) solid rgba(43, 127, 255, 0.3);
  color: #7db5ff;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.booking-details-btn--gift {
  background: rgba(255, 255, 255, 0.08);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.15);
  color: #fff;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.booking-details-btn--delete {
  background: rgba(251, 44, 54, 0.1);
  border: var(--app-hairline-width) solid rgba(251, 44, 54, 0.2);
  color: #ffa2a2;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* ── Back / Cancel button ── */
.booking-details-btn--back {
  background: rgba(255, 255, 255, 0.08);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.15);
  color: #fff;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* ── Confirm delete button ── */
.booking-details-btn--delete-confirm {
  background: rgba(251, 44, 54, 0.12);
  border: var(--app-hairline-width) solid rgba(251, 44, 54, 0.35);
  color: #ff6464;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* ── Delete confirmation message ── */
.booking-details-delete-message {
  margin: 0;
  font-size: 13px;
  font-weight: 400;
  color: #fff;
  line-height: 20px;
  letter-spacing: -0.31px;
  text-align: center;
}
.booking-details-delete-message strong {
  font-weight: 500;
}

/* ── Refund info block ── */
.booking-details-refund {
  background: rgba(76, 175, 80, 0.12);
  border: var(--app-hairline-width) solid rgba(76, 175, 80, 0.3);
  border-radius: 10px;
  padding: 10px 12px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.booking-details-refund-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  margin-top: 2px;
  color: #4caf50;
}
.booking-details-refund-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.booking-details-refund-main {
  margin: 0;
  font-size: 12px;
  font-weight: 400;
  color: #fff;
  line-height: 18px;
}
.booking-details-refund-amount {
  font-weight: 600;
  color: #4caf50;
}
.booking-details-refund-sub {
  margin: 0;
  font-size: 11px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.6);
  line-height: 15px;
}

/* ── No-refund warning ── */
.booking-details-no-refund {
  background: rgba(251, 44, 54, 0.08);
  border: var(--app-hairline-width) solid rgba(251, 44, 54, 0.25);
  border-radius: 10px;
  padding: 10px 12px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.booking-details-no-refund-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  margin-top: 2px;
  color: #fb2c36;
}
.booking-details-no-refund-text {
  margin: 0;
  font-size: 12px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.85);
  line-height: 18px;
}

/* ── Animations ── */
@keyframes bdFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes bdFadeOut {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes bdSlideUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes bdSlideDown {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(16px); }
}

/* ── Tablet / small desktop ── */
@media (max-width: 480px) {
  .booking-details-backdrop {
    padding: 12px;
    align-items: center;
  }
  .booking-details-card {
    padding: 21px 18px 18px;
    border-radius: 20px;
    max-width: 100%;
  }
}

/* ── Light theme ── */
[data-theme="light"] .booking-details-backdrop {
  background: rgba(0, 0, 0, 0.3);
}
[data-theme="light"] .booking-details-card {
  border-color: rgba(255, 255, 255, 0.4);
  background: rgba(255, 255, 255, 0.18);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.12), inset 0 1px 0 0 rgba(255, 255, 255, 0.3);
}
[data-theme="light"] .booking-details-close {
  background: rgba(255, 255, 255, 0.15);
  border-color: rgba(255, 255, 255, 0.25);
}
[data-theme="light"] .booking-details-close svg path {
  stroke: rgba(255, 255, 255, 0.8);
}
[data-theme="light"] .booking-details-close:hover {
  background: rgba(255, 255, 255, 0.25);
}
[data-theme="light"] .booking-details-title {
  color: #fff;
}
[data-theme="light"] .booking-details-info {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.15);
}
[data-theme="light"] .booking-details-info-label {
  color: rgba(255, 255, 255, 0.6);
}
[data-theme="light"] .booking-details-info-service {
  color: #fff;
}
[data-theme="light"] .booking-details-info-datetime {
  color: #fff;
}
[data-theme="light"] .booking-details-btn--payment {
  background: rgba(52, 199, 89, 0.15);
  border-color: rgba(52, 199, 89, 0.3);
  color: #6ee89b;
}
[data-theme="light"] .booking-details-btn--reschedule {
  background: rgba(43, 127, 255, 0.15);
  border-color: rgba(43, 127, 255, 0.3);
  color: #7db5ff;
}
[data-theme="light"] .booking-details-btn--gift {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.15);
  color: #fff;
}
[data-theme="light"] .booking-details-btn--delete {
  background: rgba(251, 44, 54, 0.1);
  border-color: rgba(251, 44, 54, 0.2);
  color: #ffa2a2;
}

/* ── Small mobile ── */
@media (max-width: 360px) {
  .booking-details-backdrop {
    padding: 6px;
  }
  .booking-details-card {
    padding: 15px 12px 12px;
  }
  .booking-details-close {
    top: 12px;
    right: 12px;
    width: 24px;
    height: 24px;
  }
  .booking-details-close svg {
    width: 10px;
    height: 10px;
  }
  .booking-details-title {
    font-size: 15px;
    line-height: 20px;
    margin-bottom: 12px;
  }
  .booking-details-info {
    padding: 12px;
    gap: 9px;
    margin-bottom: 12px;
    border-radius: 9px;
  }
  .booking-details-payment-warning {
    padding: 12px 15px;
    gap: 9px;
    border-radius: 12px;
    margin-bottom: 12px;
  }
  .booking-details-payment-warning-title {
    font-size: 12px;
    line-height: 17px;
  }
  .booking-details-payment-warning-desc {
    font-size: 11px;
    line-height: 15px;
  }
  .booking-details-info-label {
    font-size: 9px;
    line-height: 12px;
  }
  .booking-details-info-service {
    font-size: 11px;
    line-height: 17px;
  }
  .booking-details-info-datetime {
    font-size: 11px;
    line-height: 17px;
  }
  .booking-details-actions {
    gap: 6px;
    margin-bottom: 12px;
  }
  .booking-details-btn {
    height: 33px;
    font-size: 11px;
    border-radius: 9px;
  }
  .booking-details-delete-message {
    font-size: 11px;
    line-height: 17px;
  }
  .booking-details-refund,
  .booking-details-no-refund {
    padding: 8px 10px;
    gap: 6px;
    border-radius: 8px;
  }
  .booking-details-refund-main,
  .booking-details-no-refund-text {
    font-size: 11px;
    line-height: 16px;
  }
  .booking-details-refund-sub {
    font-size: 10px;
    line-height: 14px;
  }
}
/* ── Backdrop ── */
.delete-confirm-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: dcFadeIn 0.25s ease-out;
}
.delete-confirm-backdrop--closing {
  animation: dcFadeOut 0.25s ease-in forwards;
}

/* ── Card (glass morphism) ── */
.delete-confirm-card {
  position: relative;
  width: 100%;
  max-width: 300px;
  padding: 28px 20px 20px;
  border-radius: 24px;
  border: 1.4px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(40px) saturate(1.6);
  -webkit-backdrop-filter: blur(40px) saturate(1.6);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
  animation: dcSlideUp 0.3s ease-out;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.delete-confirm-card--closing {
  animation: dcSlideDown 0.25s ease-in forwards;
}

/* ── Icon circle ── */
.delete-confirm-icon {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: rgba(251, 44, 54, 0.1);
  border: 1.4px solid rgba(251, 44, 54, 0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
  flex-shrink: 0;
}
.delete-confirm-icon svg {
  width: 36px;
  height: 36px;
  color: #fb2c36;
  opacity: 0.8;
}

/* ── Title ── */
.delete-confirm-heading {
  margin: 0 0 16px;
  font-size: 22px;
  font-weight: 700;
  color: #fff;
  line-height: 32px;
  letter-spacing: 0.07px;
  text-align: center;
}

/* ── Inner info card ── */
.delete-confirm-info {
  width: 100%;
  background: rgba(255, 255, 255, 0.05);
  border: 1.4px solid rgba(255, 255, 255, 0.1);
  border-radius: 16px;
  padding: 20px 22px;
  margin-bottom: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.delete-confirm-message {
  margin: 0;
  font-size: 15px;
  font-weight: 400;
  color: #fff;
  line-height: 23px;
  letter-spacing: -0.31px;
  text-align: center;
}
.delete-confirm-message strong {
  font-weight: 500;
}

/* ── Refund info block ── */
.delete-confirm-refund {
  background: rgba(76, 175, 80, 0.12);
  border: 1.4px solid rgba(76, 175, 80, 0.3);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.delete-confirm-refund-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  margin-top: 2px;
  color: #4caf50;
}
.delete-confirm-refund-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.delete-confirm-refund-main {
  margin: 0;
  font-size: 13px;
  font-weight: 400;
  color: #fff;
  line-height: 19px;
}
.delete-confirm-refund-main .amount {
  font-weight: 600;
  color: #4caf50;
}
.delete-confirm-refund-sub {
  margin: 0;
  font-size: 12px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.7);
  line-height: 17px;
}

/* ── No-refund warning ── */
.delete-confirm-no-refund {
  background: rgba(251, 44, 54, 0.08);
  border: 1.4px solid rgba(251, 44, 54, 0.25);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.delete-confirm-no-refund-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  margin-top: 2px;
  color: #fb2c36;
}
.delete-confirm-no-refund-text {
  margin: 0;
  font-size: 13px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.85);
  line-height: 19px;
}

/* ── Action buttons ── */
.delete-confirm-actions {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.delete-confirm-btn {
  width: 100%;
  height: 48px;
  border-radius: 14px;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.31px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: opacity 0.2s, filter 0.2s;
  border: none;
}
.delete-confirm-btn:hover:not(:disabled) {
  filter: brightness(1.08);
}
.delete-confirm-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.delete-confirm-btn svg {
  width: 18px;
  height: 18px;
}

.delete-confirm-btn--cancel {
  background: #fff;
  color: #1a1a1a;
  box-shadow: 0 4px 6px rgba(255, 255, 255, 0.1);
}

.delete-confirm-btn--delete {
  background: transparent;
  border: 1.4px solid rgba(251, 44, 54, 0.5);
  color: #ff6464;
}

/* ── Animations ── */
@keyframes dcFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes dcFadeOut {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes dcSlideUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes dcSlideDown {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(16px); }
}

/* ── Mobile ── */
@media (max-width: 480px) {
  .delete-confirm-backdrop {
    padding: 12px;
    align-items: flex-end;
  }
  .delete-confirm-card {
    max-width: 100%;
    border-radius: 20px 20px 16px 16px;
    padding: 24px 16px 16px;
  }
}

@media (max-width: 360px) {
  .delete-confirm-backdrop {
    padding: 6px;
  }
  .delete-confirm-card {
    padding: 20px 12px 12px;
  }
  .delete-confirm-icon {
    width: 60px;
    height: 60px;
  }
  .delete-confirm-icon svg {
    width: 30px;
    height: 30px;
  }
  .delete-confirm-heading {
    font-size: 18px;
    line-height: 26px;
    margin-bottom: 12px;
  }
  .delete-confirm-info {
    padding: 14px 16px;
    margin-bottom: 14px;
  }
  .delete-confirm-message {
    font-size: 13px;
    line-height: 20px;
  }
  .delete-confirm-btn {
    height: 42px;
    font-size: 14px;
  }
}
/* ── Toast wrapper (centered on screen) ── */
.dst-wrapper {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1200;
  pointer-events: none;
  animation: dstFadeIn 0.32s ease-out;
}
.dst-wrapper--closing {
  animation: dstFadeOut 0.32s ease-in forwards;
}

/* ── Glass card ── */
.dst-card {
  position: relative;
  display: flex;
  gap: 16px;
  align-items: flex-start;
  width: 340px;
  max-width: calc(100vw - 32px);
  padding: 18px 20px;
  border-radius: 20px;
  border: 1.5px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(40px) saturate(1.6);
  -webkit-backdrop-filter: blur(40px) saturate(1.6);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
  pointer-events: auto;
  animation: dstSlideUp 0.36s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.dst-card--closing {
  animation: dstSlideDown 0.3s ease-in forwards;
}

/* ── Check circle ── */
.dst-check {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(76, 175, 80, 0.15);
  border: 1.5px solid rgba(76, 175, 80, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
}
.dst-check--error {
  background: rgba(255, 100, 100, 0.14);
  border-color: rgba(255, 100, 100, 0.3);
}

/* ── Body ── */
.dst-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-right: 20px;
}

.dst-title {
  margin: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 16px;
  font-weight: 600;
  line-height: 24px;
  color: #fff;
}

.dst-desc {
  margin: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 14px;
  font-weight: 400;
  line-height: 20px;
  color: rgba(255, 255, 255, 0.7);
}

/* ── Refund info block ── */
.dst-refund {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 8px;
  padding: 10px 12px;
  border-radius: 10px;
  background: rgba(76, 175, 80, 0.12);
  border: 1px solid rgba(76, 175, 80, 0.25);
}
.dst-refund-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  color: #4caf50;
}
.dst-refund-text {
  margin: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 13px;
  font-weight: 400;
  line-height: 18px;
  color: #fff;
}
.dst-refund-amount {
  font-weight: 600;
  color: #4caf50;
}

/* ── Close button ── */
.dst-close {
  position: absolute;
  top: 18px;
  right: 20px;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5px;
  background: none;
  border: none;
  cursor: pointer;
  opacity: 0.6;
  transition: opacity 0.2s;
}
.dst-close:hover {
  opacity: 1;
}

/* ── Animations ── */
@keyframes dstFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes dstFadeOut {
  from { opacity: 1; }
  to   { opacity: 0; }
}
@keyframes dstSlideUp {
  from { opacity: 0; transform: translateY(24px) scale(0.95); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes dstSlideDown {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to   { opacity: 0; transform: translateY(24px) scale(0.95); }
}

/* ── Mobile adjustments ── */
@media (max-width: 400px) {
  .dst-wrapper {
    top: 50%;
  }
  .dst-card {
    padding: 14px 16px;
    gap: 12px;
  }
  .dst-check {
    width: 40px;
    height: 40px;
  }
  .dst-check svg {
    width: 20px;
    height: 20px;
  }
  .dst-title {
    font-size: 15px;
    line-height: 22px;
  }
  .dst-desc {
    font-size: 13px;
    line-height: 18px;
  }
}
/* App.module.css — стили главной клиентской страницы (App.jsx).
   Мёртвые правила (.button-container, .magic-button, .telegram-info,
   .button-text/title/caption, .App-header/user-info, @keyframes для них)
   удалены — соответствующие JSX-блоки давно закомментированы. */

/* Корневой контейнер страницы. */
._App_zf00g_3 {
  text-align: center;
  background-color: transparent;
  color: var(--tg-theme-text-color);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: 10px;
}

/* Карточка-обёртка с outline-сбросом + видимым focus-ring для клавиатуры (a11y). */
._focusableCard_zf00g_19 {
  outline: none;
  -webkit-tap-highlight-color: transparent;
}

._focusableCard_zf00g_19:focus-visible {
  outline: 2px solid var(--tg-theme-link-color, #007AFF);
  outline-offset: 2px;
}

/* Wrapper для маленькой кнопки-стрелки (touch-target ≥ 44×44 при визуальном круге 28×28). */
._touchTarget44_zf00g_30 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  outline: none;
}

._touchTarget44_zf00g_30:focus-visible {
  outline: 2px solid var(--tg-theme-link-color, #007AFF);
  outline-offset: 2px;
  border-radius: 50%;
}

/* Глобальная стилизация модальных окон Ant Design под тему Telegram. */
._ant-modal_zf00g_51 ._ant-modal-content_zf00g_51 {
  background-color: var(--tg-theme-bg-color) !important;
  color: var(--tg-theme-text-color, #000) !important;
}
._ant-modal_zf00g_51 ._ant-modal-header_zf00g_55 {
  background-color: var(--tg-theme-bg-color) !important;
}
._ant-modal_zf00g_51 ._ant-modal-title_zf00g_58 {
  color: var(--tg-theme-text-color, #000) !important;
}
._ant-modal_zf00g_51 ._ant-modal-body_zf00g_61 {
  color: var(--tg-theme-text-color, #000) !important;
}
._ant-modal_zf00g_51 ._ant-modal-footer_zf00g_64 {
  background-color: var(--tg-theme-bg-color) !important;
}

._ant-modal_zf00g_51 ._ant-modal-close-x_zf00g_68,
._ant-modal_zf00g_51 ._anticon_zf00g_69 {
  color: var(--tg-theme-text-color, #000) !important;
}
.glassModal .ant-modal-content {
  background: color-mix(in srgb, var(--tg-theme-bg-color, #1c1c1e) 96%, transparent) !important;
  backdrop-filter: blur(14px) !important;
  -webkit-backdrop-filter: blur(14px) !important;
  border-radius: 16px !important;
  border: 1px solid var(--app-figma-border-card, rgba(0,0,0,0.1)) !important;
  box-shadow: 0 8px 30px rgba(0,0,0,0.35) !important;
}

/* Тёмная тема: тёмное стекло */
:root[data-theme="dark"] .glassModal .ant-modal-content,
[data-theme="dark"] .glassModal .ant-modal-content {
  background: rgba(28, 28, 32, 0.95) !important;
  border-color: rgba(255,255,255,0.12) !important;
}

/* Поддержка тёмной темы Телеграма по значению переменной (тёмный фон) */
@media (prefers-color-scheme: dark) {
  .glassModal .ant-modal-content {
    background: rgba(28, 28, 32, 0.95) !important;
    border-color: rgba(255,255,255,0.12) !important;
  }
}

/* Смягчим заголовок и крестик */
.glassModal .ant-modal-header {
  background: transparent !important;
  border-bottom: 1px solid var(--app-figma-separator, rgba(0,0,0,0.08)) !important;
}
.glassModal .ant-modal-body {
  background: transparent !important;
  border-radius: 16px !important;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif !important;
  font-size: 15px !important;
  line-height: 1.5 !important;
  color: var(--tg-theme-text-color) !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}

/* Typography hierarchy for modal content */
.glassModal .ant-modal-body > * {
  font-family: inherit !important;
}

/* Title styling */
.glassModal .ant-modal-body h1,
.glassModal .ant-modal-body h2,
.glassModal .ant-modal-body h3,
.glassModal .ant-modal-body h4,
.glassModal .ant-modal-body h5,
.glassModal .ant-modal-body h6 {
  font-family: inherit !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em !important;
}

/* Section headers */
.glassModal .ant-modal-body [style*="fontWeight: 500"],
.glassModal .ant-modal-body [style*="fontWeight: 600"] {
  font-family: inherit !important;
  letter-spacing: -0.01em !important;
}

/* List items */
.glassModal .ant-modal-body .ant-list-item {
  font-family: inherit !important;
  font-size: 15px !important;
  line-height: 1.5 !important;
}

.glassModal .ant-modal-body .ant-list-item-meta-title {
  font-size: 15px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
}

.glassModal .ant-modal-body .ant-list-item-meta-description {
  font-size: 13px !important;
  line-height: 1.4 !important;
}

/* Buttons */
.glassModal .ant-modal-body .ant-btn {
  font-family: inherit !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
}

/* Small text (usernames, hints) */
.glassModal .ant-modal-body span[style*="fontSize: 12"],
.glassModal .ant-modal-body [style*="fontSize: 12px"] {
  font-size: 13px !important;
  line-height: 1.4 !important;
  font-weight: 400 !important;
}

/* Select dropdown */
.glassModal .ant-modal-body select {
  font-family: inherit !important;
  font-size: 15px !important;
  line-height: 1.5 !important;
}

/* Empty state text */
.glassModal .ant-modal-body .ant-empty-description {
  font-family: inherit !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}
.glassModal .ant-modal-title {
  color: var(--tg-theme-text-color, #111) !important;
  background: transparent !important;
}
.glassModal .ant-modal-close-x {
  color: var(--tg-theme-text-color, #111) !important;
}
.glassModal .ant-modal-close {
  top: 25px !important;
  right: 25px !important;
}

/* Светлая тема */
:root[data-theme="light"] .glassModal .ant-modal-content,
[data-theme="light"] .glassModal .ant-modal-content {
  background: rgba(255, 255, 255, 0.97) !important;
  border-color: rgba(0, 0, 0, 0.08) !important;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1) !important;
}

/* Zoya AI chat — glass input styling (overrides Ant defaults) */
.zoya-chat-input,
.zoya-chat-input input,
.zoya-chat-input textarea {
  color: var(--tg-theme-text-color, rgba(255,255,255,0.9)) !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

.zoya-chat-input::placeholder,
.zoya-chat-input input::placeholder,
.zoya-chat-input textarea::placeholder {
  color: var(--tg-theme-hint-color, rgba(255,255,255,0.3)) !important;
  opacity: 1 !important;
}

/* Скругление углов для Spin компонента */
.ant-spin,
.ant-spin-spinning,
.ant-spin-nested-loading {
  border-radius: 12px !important;
}

.ant-spin-container {
  border-radius: 12px !important;
}
._lottieLoaderContainer_jwi3l_1 {
  display: block;
  overflow: hidden;
  flex-shrink: 0;
  box-sizing: border-box;
  position: relative;
  padding: 0;
  margin: 0;
  line-height: 0;
  --scale-factor: 3;
}

._lottieLoaderContainer_jwi3l_1 > * {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  display: block !important;
  transform: scale(var(--scale-factor));
  transform-origin: center center;
}

._lottieLoaderContainer_jwi3l_1 canvas {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  object-fit: cover;
}











/* ── Backdrop ── */
.noslots-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: noslotsFadeIn 0.25s ease-out;
}
.noslots-backdrop--closing {
  animation: noslotsFadeOut 0.25s ease-in forwards;
}

/* ── Card (glass morphism, эталон BookingDetailsModal) ── */
.noslots-card {
  position: relative;
  width: 100%;
  max-width: 407px;
  padding: 48px 40px 40px;
  border-radius: 24px;
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(40px) saturate(1.6);
  -webkit-backdrop-filter: blur(40px) saturate(1.6);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
  animation: noslotsSlideUp 0.3s ease-out;
  overflow: hidden;
}
.noslots-card--closing {
  animation: noslotsSlideDown 0.25s ease-in forwards;
}

/* ── Close button ── */
.noslots-close {
  position: absolute;
  top: 20px;
  right: 20px;
  z-index: 2;
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.1);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  cursor: pointer;
  transition: background 0.2s;
}
.noslots-close svg path {
  stroke: rgba(255, 255, 255, 0.7);
  stroke-opacity: 1;
}
.noslots-close:hover {
  background: rgba(255, 255, 255, 0.15);
}

/* ── Mail icon container (glass chip) ── */
.noslots-icon-wrap {
  position: relative;
  z-index: 1;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 24px;
}
.noslots-icon-wrap svg path,
.noslots-icon-wrap svg polyline {
  stroke: rgba(255, 255, 255, 0.85);
}

/* ── Text ── */
.noslots-text {
  position: relative;
  z-index: 1;
  margin-bottom: 32px;
}
.noslots-subtitle {
  margin: 0 0 8px;
  font-size: 14px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2px;
  color: rgba(255, 255, 255, 0.55);
  line-height: 20px;
}
.noslots-title {
  margin: 0 0 12px;
  font-size: 30px;
  font-weight: 700;
  color: #fff;
  line-height: 36px;
  letter-spacing: 0.4px;
}
.noslots-desc {
  margin: 0;
  font-size: 16px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.65);
  line-height: 26px;
  letter-spacing: -0.31px;
  max-width: 283px;
}

/* ── Form ── */
.noslots-form {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* Email input (inner glass) */
.noslots-input {
  width: 100%;
  height: 52px;
  padding: 0 20px;
  border-radius: 16px;
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: #fff;
  font-size: 16px;
  letter-spacing: -0.31px;
  outline: none;
  transition: border-color 0.2s, background 0.2s;
  box-sizing: border-box;
}
.noslots-input::placeholder {
  color: rgba(255, 255, 255, 0.4);
}
.noslots-input:focus {
  border-color: rgba(255, 255, 255, 0.35);
  background: rgba(255, 255, 255, 0.08);
}

/* Prefilled email block (replaces input when email known) */
.noslots-prefilled {
  width: 100%;
  min-height: 52px;
  padding: 10px 20px;
  border-radius: 16px;
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  box-sizing: border-box;
}
.noslots-prefilled-label {
  margin: 0;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.2px;
  color: rgba(255, 255, 255, 0.55);
  text-transform: uppercase;
  line-height: 14px;
}
.noslots-prefilled-email {
  margin: 2px 0 0;
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  letter-spacing: -0.31px;
  line-height: 22px;
  word-break: break-all;
}

/* Consent checkbox */
.noslots-checkbox {
  position: relative;
  z-index: 1;
}
.noslots-checkbox .ant-checkbox + span {
  color: rgba(255, 255, 255, 0.7) !important;
  font-size: 13px;
}

/* Submit button (brand-glass) */
.noslots-submit {
  width: 100%;
  height: 52px;
  border-radius: 16px;
  border: var(--app-hairline-width) solid color-mix(in srgb, var(--tg-theme-button-color, #2b7fff) 40%, transparent);
  background: color-mix(in srgb, var(--tg-theme-button-color, #2b7fff) 22%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
  color: var(--tg-theme-button-text-color, #fff);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.31px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: filter 0.2s, opacity 0.2s, background 0.2s;
}
.noslots-submit svg path {
  stroke: var(--tg-theme-button-text-color, #fff);
}
.noslots-submit:hover:not(:disabled) {
  filter: brightness(1.12);
}
.noslots-submit:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Spinner */
.noslots-spinner {
  width: 20px;
  height: 20px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  border-top-color: var(--tg-theme-button-text-color, #fff);
  border-radius: 50%;
  animation: noslotsSpin 0.6s linear infinite;
}

/* ── Divider ── */
.noslots-divider {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 20px 0;
}
.noslots-divider-line {
  flex: 1;
  height: 1px;
  background: rgba(255, 255, 255, 0.15);
}
.noslots-divider-text {
  font-size: 14px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.5);
  letter-spacing: -0.15px;
  line-height: 20px;
}

/* ── Animations ── */
@keyframes noslotsFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes noslotsFadeOut {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes noslotsSlideUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes noslotsSlideDown {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(16px); }
}
@keyframes noslotsSpin {
  to { transform: rotate(360deg); }
}

/* ── Mobile ── */
@media (max-width: 480px) {
  .noslots-backdrop {
    padding: 16px;
    align-items: flex-end;
  }
  .noslots-card {
    padding: 36px 24px 28px;
    border-radius: 24px 24px 20px 20px;
    max-width: 100%;
  }
  .noslots-title {
    font-size: 26px;
    line-height: 32px;
  }
}

/* ── Light theme ── */
[data-theme="light"] .noslots-backdrop {
  background: rgba(0, 0, 0, 0.3);
}
[data-theme="light"] .noslots-card {
  background: rgba(255, 255, 255, 0.18);
  border-color: rgba(255, 255, 255, 0.4);
  box-shadow:
    0 25px 50px rgba(0, 0, 0, 0.12),
    inset 0 1px 0 0 rgba(255, 255, 255, 0.3);
}
[data-theme="light"] .noslots-close {
  background: rgba(255, 255, 255, 0.15);
  border-color: rgba(255, 255, 255, 0.25);
}
[data-theme="light"] .noslots-close svg path {
  stroke: rgba(255, 255, 255, 0.8);
}
[data-theme="light"] .noslots-close:hover {
  background: rgba(255, 255, 255, 0.25);
}
[data-theme="light"] .noslots-icon-wrap {
  background: rgba(255, 255, 255, 0.18);
  border-color: rgba(255, 255, 255, 0.3);
}
[data-theme="light"] .noslots-input,
[data-theme="light"] .noslots-prefilled {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.25);
}
[data-theme="light"] .noslots-input:focus {
  background: rgba(255, 255, 255, 0.18);
  border-color: rgba(255, 255, 255, 0.4);
}
.RSPBprogressBar {
  height: 10px;
  line-height: 1;
  border-radius: 10px;
  position: relative;
  background-color: rgba(211, 211, 211, 0.6);
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 0; }
  .RSPBprogressBar .RSPBstep {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    z-index: 0;
    position: absolute;
    transform: translateX(-50%);
    transition-property: all;
    transition-timing-function: ease; }
  .RSPBprogressBar .RSPBprogressBarText {
    color: white;
    font-size: 10px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); }
  .RSPBprogressBar .RSPBprogression {
    position: absolute;
    transition: width 0.3s ease;
    left: 0;
    top: 0;
    bottom: 0;
    border-radius: 10px;
    background: rgba(0, 116, 217, 0.8);
    z-index: -1; }
.celebration-container {
    position: fixed;
    inset: 0;                  /* = top:0; right:0; bottom:0; left:0 */
    width: 100%;               /* avoid 100vw quirks */
    height: 100%;              /* avoid 100vh/100dvh quirks */
    z-index: 2147483647;       /* top-most */
    pointer-events: none;      /* клики проходят к контенту */
    overflow: hidden;          /* на всякий случай */
    background: transparent;
  }
  
  .celebration-container dotlottie-player {
    width: 100%;
    height: 100%;
  }

.TimePage {
  background: transparent !important;
}

.congrats-text {
    font-size: 3em;
    font-weight: bold;
    color: #ffd700;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
    z-index: 1;
}

.confetti-piece {
    position: absolute;
    width: 10px;
    height: 10px;
    background: #ff0000; /* или любой другой базовый цвет */
    border-radius: 2px;
}

h3 {
    color: var(--tg-theme-text-color);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}

p {
    color: var(--tg-theme-hint-color);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}

.confirm-button {
    padding: 15px 30px;
    font-size: 1.2em;
    background: #4CAF50;
    color: white;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: transform 0.2s;
}

.confirm-button:hover {
    transform: scale(1.05);
}

.magic-button::before {
    content: "";
    position: absolute;
    top: -4px;
    left: -4px;
    right: -4px;
    bottom: -4px;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(255,140,0,0.8), rgba(255,215,0,0.8));
    background-size: 400%;
    z-index: -1;
    filter: blur(4px);
    animation: burnGlow 3s linear infinite;
}

@keyframes burnGlow {
    0% { background-position: 0 center; }
    50% { background-position: 100% center; }
    100% { background-position: 0 center; }
}




:root {
    --tg-bg-color: var(--tg-theme-bg-color, #ffffff);
    --tg-text-color: var(--tg-theme-text-color, #222222);
    --tg-hint-color: var(--tg-theme-hint-color, #888888);
    --tg-link-color: var(--tg-theme-link-color, #0088cc);
    --tg-button-color: var(--tg-theme-button-color, #0088cc);
    --tg-button-text-color: var(--tg-theme-button-text-color, #ffffff);
}

/*.contact-page {*/
/*    background-color: var(--tg-bg-color);*/
/*    color: var(--tg-text-color);*/
/*    padding: 16px;*/
/*    font-family: Arial, sans-serif;*/
/*    display: flex;*/
/*    flex-direction: column;*/
/*    align-items: center;*/
/*    text-align: center;*/
/*    height: 100vh;*/
/*    overflow-y: auto;*/
/*}*/

/*h3 {*/
/*    margin-bottom: 16px;*/
/*    font-size: 18px;*/
/*    font-weight: bold;*/
/*}*/

.contact-details {
    /*width: 100%;*/
    /*max-width: 400px;*/
    background: rgba(255, 255, 255, 0.5);
    border-radius: 12px;
    padding: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.contact-item {
    background: rgba(255, 255, 255, 0.3);
    padding: 12px;
    border-radius: 8px;
    margin-bottom: 10px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

/*h4 {*/
/*    font-size: 16px;*/
/*    font-weight: bold;*/
/*    color: var(--tg-text-color);*/
/*    margin-bottom: 8px;*/
/*}*/

/*ul {*/
/*    list-style: none;*/
/*    padding: 0;*/
/*    margin: 0;*/
/*}*/

/*li {*/
/*    font-size: 14px;*/
/*    color: var(--tg-hint-color);*/
/*    margin: 4px 0;*/
/*}*/

/*p {*/
/*    font-size: 14px;*/
/*    color: var(--tg-hint-color);*/
/*}*/

/*@media (max-width: 480px) {*/
/*    .contact-details {*/
/*        max-width: 100%;*/
/*    }*/
/*}*//* stylelint-disable */
html,
body {
  width: 100%;
  height: 100%;
}
input::-ms-clear,
input::-ms-reveal {
  display: none;
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
html {
  font-family: sans-serif;
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  -ms-overflow-style: scrollbar;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
@-ms-viewport {
  width: device-width;
}
body {
  margin: 0;
}
[tabindex='-1']:focus {
  outline: none;
}
hr {
  box-sizing: content-box;
  height: 0;
  overflow: visible;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 0;
  margin-bottom: 0.5em;
  font-weight: 500;
}
p {
  margin-top: 0;
  margin-bottom: 1em;
}
abbr[title],
abbr[data-original-title] {
  -webkit-text-decoration: underline dotted;
  text-decoration: underline dotted;
  border-bottom: 0;
  cursor: help;
}
address {
  margin-bottom: 1em;
  font-style: normal;
  line-height: inherit;
}
input[type='text'],
input[type='password'],
input[type='number'],
textarea {
  -webkit-appearance: none;
}
ol,
ul,
dl {
  margin-top: 0;
  margin-bottom: 1em;
}
ol ol,
ul ul,
ol ul,
ul ol {
  margin-bottom: 0;
}
dt {
  font-weight: 500;
}
dd {
  margin-bottom: 0.5em;
  margin-left: 0;
}
blockquote {
  margin: 0 0 1em;
}
dfn {
  font-style: italic;
}
b,
strong {
  font-weight: bolder;
}
small {
  font-size: 80%;
}
sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
pre,
code,
kbd,
samp {
  font-size: 1em;
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
pre {
  margin-top: 0;
  margin-bottom: 1em;
  overflow: auto;
}
figure {
  margin: 0 0 1em;
}
img {
  vertical-align: middle;
  border-style: none;
}
a,
area,
button,
[role='button'],
input:not([type='range']),
label,
select,
summary,
textarea {
  touch-action: manipulation;
}
table {
  border-collapse: collapse;
}
caption {
  padding-top: 0.75em;
  padding-bottom: 0.3em;
  text-align: left;
  caption-side: bottom;
}
input,
button,
select,
optgroup,
textarea {
  margin: 0;
  color: inherit;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
}
button,
input {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html [type='button'],
[type='reset'],
[type='submit'] {
  -webkit-appearance: button;
}
button::-moz-focus-inner,
[type='button']::-moz-focus-inner,
[type='reset']::-moz-focus-inner,
[type='submit']::-moz-focus-inner {
  padding: 0;
  border-style: none;
}
input[type='radio'],
input[type='checkbox'] {
  box-sizing: border-box;
  padding: 0;
}
input[type='date'],
input[type='time'],
input[type='datetime-local'],
input[type='month'] {
  -webkit-appearance: listbox;
}
textarea {
  overflow: auto;
  resize: vertical;
}
fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
legend {
  display: block;
  width: 100%;
  max-width: 100%;
  margin-bottom: 0.5em;
  padding: 0;
  color: inherit;
  font-size: 1.5em;
  line-height: inherit;
  white-space: normal;
}
progress {
  vertical-align: baseline;
}
[type='number']::-webkit-inner-spin-button,
[type='number']::-webkit-outer-spin-button {
  height: auto;
}
[type='search'] {
  outline-offset: -2px;
  -webkit-appearance: none;
}
[type='search']::-webkit-search-cancel-button,
[type='search']::-webkit-search-decoration {
  -webkit-appearance: none;
}
::-webkit-file-upload-button {
  font: inherit;
  -webkit-appearance: button;
}
output {
  display: inline-block;
}
summary {
  display: list-item;
}
template {
  display: none;
}
[hidden] {
  display: none !important;
}
mark {
  padding: 0.2em;
  background-color: #feffe6;
}
/* Fallback CSS variables for when Telegram theme is not available */
/* These are overridden by theme.js applyColorMode() when JS runs */
:root {
  /* Light theme defaults (fallback) */
  --tg-theme-bg-color: #ffffff;
  --tg-theme-secondary-bg-color: #f5f5f5;
  --tg-theme-text-color: #000000;
  --tg-theme-hint-color: rgba(60, 60, 67, 0.6);
  --tg-theme-link-color: #007AFF;
  --tg-theme-section-bg-color: #ffffff;
  --tg-theme-section-separator-color: rgba(0, 0, 0, 0.1);
  --tg-theme-button-color: #1677ff;
  --tg-theme-button-text-color: #ffffff;
  --app-contrast-text-color: #000000;
  --app-button-color: #1677ff;
  --app-button-text-color: #ffffff;
  --app-main-button-color: #1677ff;
  --app-main-button-text-color: #ffffff;

  /* Figma design token fallbacks */
  --app-figma-bg-page: #f0f1f3;
  --app-figma-bg-card: rgba(0, 0, 0, 0.03);
  --app-figma-bg-card-solid: #ffffff;
  --app-figma-bg-stat: rgba(0, 0, 0, 0.02);
  --app-figma-bg-input: rgba(0, 0, 0, 0.04);
  --app-figma-text-primary: #1a1a2e;
  --app-figma-text-secondary: #6b7280;
  --app-figma-text-info: #374151;
  --app-figma-label-color: #374151;
  /* Placeholder: чуть темнее дефолтного #9ca3af для читаемости на rgba(0,0,0,0.04)
     инпуте, но всё ещё явно светлее secondary (#6b7280) — иерархия typed>placeholder. */
  --app-figma-placeholder: rgba(0, 0, 0, 0.42);
  --app-figma-icon-purple: #5B63E0;
  --app-figma-icon-green: #28A745;
  --app-figma-icon-orange: #E5A35D;
  --app-figma-icon-pink: #E0527A;
  --app-figma-border: rgba(0, 0, 0, 0.08);
  --app-figma-border-card: rgba(0, 0, 0, 0.06);
  --app-figma-chevron: rgba(0, 0, 0, 0.3);
  --app-figma-separator: rgba(0, 0, 0, 0.06);
  --app-figma-card-shadow: 0px 4px 16px rgba(0, 0, 0, 0.06);
  --app-figma-required: #FF3B30;
  --app-figma-btn-purple-grad: linear-gradient(171deg, rgba(91, 99, 224, 0.85) 0%, rgba(75, 80, 200, 0.85) 100%);
  --app-figma-btn-pink-grad: linear-gradient(171deg, rgba(220, 80, 160, 0.8) 0%, rgba(91, 99, 224, 0.8) 100%);
  --app-figma-btn-green-grad: linear-gradient(171deg, rgba(0, 180, 120, 0.8) 0%, rgba(5, 190, 100, 0.8) 100%);
  --app-figma-logout-bg: rgba(255, 70, 133, 0.08);
  --app-figma-logout-border: #FF4685;

  /* Telegram Mini Apps safe-area fallbacks (will be overwritten by JS when available) */
  --tg-content-safe-area-inset-top: 0px;
  --tg-content-safe-area-inset-right: 0px;
  --tg-content-safe-area-inset-bottom: 0px;
  --tg-content-safe-area-inset-left: 0px;

  /* Global responsive layout system */
  --page-gutter-x: clamp(16px, 3vw, 28px);
  --page-max-width: 720px;
  --page-max-width-wide: 1000px;
  --tabbar-height-client: 56px;
  --tabbar-height-admin: 56px;

  /* Hairline border (Figma 1:1) — единый токен для тонких разделителей.
     Используй: border: var(--app-hairline); или border-bottom: var(--app-hairline);
     На устройствах с DPR=1 округляется браузером до 1 device-pixel. */
  --app-hairline-width: 0.7px;
  --app-hairline-color: var(--app-figma-separator);
  --app-hairline: var(--app-hairline-width) solid var(--app-hairline-color);

  /* Spacing-сетка (4/8/12/16/20/24/32). Используй вместо хардкода:
     padding: var(--app-space-4); gap: var(--app-space-2); */
  --app-space-1: 4px;
  --app-space-2: 8px;
  --app-space-3: 12px;
  --app-space-4: 16px;
  --app-space-5: 20px;
  --app-space-6: 24px;
  --app-space-8: 32px;

  /* Radius-шкала. Используй: border-radius: var(--app-radius-md); */
  --app-radius-sm: 8px;
  --app-radius-md: 12px;
  --app-radius-lg: 14px;
  --app-radius-xl: 16px;
  --app-radius-2xl: 20px;
  --app-radius-pill: 999px;

  /* Семантические токены для статус-цветов: warning/info/success/danger/accent.
     Light defaults — насыщенные оттенки, чтобы хорошо читались на белом.
     Dark theme переопределяет ниже.

     ИСПОЛЬЗУЙ для семантики ("оплачено"/"предстоящий"/"warning-плашка"), НЕ для
     визуальной диверсификации одинаковых элементов — там оставляй конкретные
     rgba (как в admin/StatisticsTab.jsx, где каждая карта сознательно своего
     цвета: фиолетовая/синяя/зелёная — это эстетика, не статус).

     Пары: -bg (фон 8-14%) + -border (контур 22-32%) + -icon (иконка/текст 90-95%) + -text (текст метки).
     В dark — те же ключи, но более прозрачные фоны и яркие иконки. */
  --app-warning-bg: rgba(255, 184, 0, 0.14);
  --app-warning-border: rgba(255, 184, 0, 0.32);
  --app-warning-icon: rgba(217, 137, 0, 0.95);
  --app-warning-text: #b86d00;

  --app-info-bg: rgba(81, 162, 255, 0.12);
  --app-info-border: rgba(81, 162, 255, 0.28);
  --app-info-icon: rgba(40, 110, 220, 0.95);
  --app-info-text: #1f5fbf;

  --app-success-bg: rgba(0, 200, 130, 0.12);
  --app-success-border: rgba(0, 200, 130, 0.30);
  --app-success-icon: rgba(0, 150, 90, 0.95);
  --app-success-text: #008055;

  --app-danger-bg: rgba(255, 75, 100, 0.12);
  --app-danger-border: rgba(255, 75, 100, 0.30);
  --app-danger-icon: rgba(220, 50, 80, 0.95);
  --app-danger-text: #c0344c;

  /* Accent (purple-фиолетовый бренд проекта) для пилюль/тегов */
  --app-accent-bg: rgba(124, 134, 255, 0.12);
  --app-accent-border: rgba(124, 134, 255, 0.28);
  --app-accent-icon: rgba(91, 99, 224, 0.95);
  --app-accent-text: #5b63e0;
}

/* Glass-карточка клиентских экранов: повторяющийся стиль обёрток на главной
   и на 4 клиентских экранах (Прайс/Портфолио/Контакты).
   НЕ применять к inline-блоку Зои на главной — у него своя стилистика. */
.app-glass-card {
  position: relative;
  z-index: 5;
  padding: var(--app-space-4);
  border-radius: var(--app-radius-2xl);
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  box-shadow:
    0 8px 32px 0 rgba(31, 38, 135, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.1);
}

/* Fallback для WebView без backdrop-filter (старый Android Chrome).
   Без него фон становится плоско-полупрозрачным и текст теряет читаемость. */
@supports not (backdrop-filter: blur(20px)) {
  .app-glass-card {
    background: rgba(20, 20, 30, 0.85);
  }
}

/* Внутренняя карточка-строка внутри .app-glass-card: услуги, контактные поля,
   избранное. Радиус и hairline на ступень меньше глассбокса — даёт явную
   иерархию «обёртка → содержимое». */
.app-inner-card {
  border-radius: var(--app-radius-lg);
  background: rgba(255, 255, 255, 0.04);
  border: var(--app-hairline-width) solid rgba(255, 255, 255, 0.06);
  padding: var(--app-space-3);
}

@media (min-width: 1024px) {
  :root {
    --page-max-width: 760px;
    --page-max-width-wide: 1100px;
  }
}

@media (min-width: 1440px) {
  :root {
    --page-max-width: 820px;
    --page-max-width-wide: 1200px;
  }
}

/* Dark theme fallback - applied via data-theme attribute or prefers-color-scheme */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --tg-theme-bg-color: #1c1c1e;
    --tg-theme-secondary-bg-color: #2c2c2e;
    --tg-theme-text-color: #ffffff;
    --tg-theme-hint-color: rgba(235, 235, 245, 0.6);
    --tg-theme-link-color: #0A84FF;
    --tg-theme-section-bg-color: #2c2c2e;
    --tg-theme-section-separator-color: rgba(255, 255, 255, 0.1);
    --app-contrast-text-color: #ffffff;

    --app-figma-bg-page: #1E1B2D;
    --app-figma-bg-card: rgba(255, 255, 255, 0.06);
    --app-figma-bg-card-solid: rgba(255, 255, 255, 0.07);
    --app-figma-bg-stat: rgba(255, 255, 255, 0.06);
    --app-figma-bg-input: rgba(255, 255, 255, 0.06);
    --app-figma-text-primary: #ffffff;
    --app-figma-text-secondary: #6a7282;
    --app-figma-text-info: #d1d5dc;
    --app-figma-label-color: #d1d5dc;
    /* Placeholder: подняли с #6a7282 (≈ контраст 2.8:1, ниже AA) до
       rgba(255,255,255,0.48) — читаемо на rgba(255,255,255,0.06) инпуте,
       при этом явно тише введённого текста (#ffffff = 1.0). */
    --app-figma-placeholder: rgba(255, 255, 255, 0.48);
    --app-figma-icon-purple: #7C86FF;
    --app-figma-icon-green: #00D492;
    --app-figma-icon-orange: #E5A35D;
    --app-figma-icon-pink: #FF6B9D;
    --app-figma-border: rgba(255, 255, 255, 0.12);
    --app-figma-border-card: rgba(255, 255, 255, 0.12);
    --app-figma-chevron: rgba(255, 255, 255, 0.5);
    --app-figma-separator: rgba(255, 255, 255, 0.04);
    --app-figma-card-shadow: 0px 8px 32px rgba(0, 0, 0, 0.3);
    --app-figma-required: #ff6467;
    --app-figma-btn-purple-grad: linear-gradient(171deg, rgba(124, 134, 255, 0.6) 0%, rgba(91, 99, 224, 0.6) 100%);
    --app-figma-btn-pink-grad: linear-gradient(171deg, rgba(251, 100, 182, 0.5) 0%, rgba(124, 134, 255, 0.5) 100%);
    --app-figma-btn-green-grad: linear-gradient(171deg, rgba(0, 212, 146, 0.5) 0%, rgba(5, 223, 114, 0.5) 100%);
    --app-figma-logout-bg: #221B27;
    --app-figma-logout-border: #FF4685;

    /* Семантические токены — dark theme: насыщеннее иконка/текст, тише фон */
    --app-warning-bg: rgba(255, 184, 0, 0.10);
    --app-warning-border: rgba(255, 184, 0, 0.22);
    --app-warning-icon: rgba(255, 184, 0, 0.95);
    --app-warning-text: #FFB900;

    --app-info-bg: rgba(124, 134, 255, 0.10);
    --app-info-border: rgba(124, 134, 255, 0.22);
    --app-info-icon: rgba(163, 179, 255, 0.95);
    --app-info-text: #A3B3FF;

    --app-success-bg: rgba(0, 212, 146, 0.10);
    --app-success-border: rgba(0, 212, 146, 0.22);
    --app-success-icon: rgba(0, 212, 146, 0.95);
    --app-success-text: #00D492;

    --app-danger-bg: rgba(255, 100, 103, 0.12);
    --app-danger-border: rgba(255, 100, 103, 0.28);
    --app-danger-icon: rgba(255, 100, 103, 0.95);
    --app-danger-text: #FF6467;

    --app-accent-bg: rgba(124, 134, 255, 0.12);
    --app-accent-border: rgba(124, 134, 255, 0.28);
    --app-accent-icon: rgba(163, 179, 255, 0.95);
    --app-accent-text: #A3B3FF;
  }
}

:root[data-theme="dark"] {
  --tg-theme-bg-color: #1c1c1e;
  --tg-theme-secondary-bg-color: #2c2c2e;
  --tg-theme-text-color: #ffffff;
  --tg-theme-hint-color: rgba(235, 235, 245, 0.6);
  --tg-theme-link-color: #0A84FF;
  --tg-theme-section-bg-color: #2c2c2e;
  --tg-theme-section-separator-color: rgba(255, 255, 255, 0.1);
  --app-contrast-text-color: #ffffff;

  --app-figma-bg-page: #1E1B2D;
  --app-figma-bg-card: rgba(255, 255, 255, 0.06);
  --app-figma-bg-card-solid: rgba(255, 255, 255, 0.07);
  --app-figma-bg-stat: rgba(255, 255, 255, 0.06);
  --app-figma-bg-input: rgba(255, 255, 255, 0.06);
  --app-figma-text-primary: #ffffff;
  --app-figma-text-secondary: #6a7282;
  --app-figma-text-info: #d1d5dc;
  --app-figma-label-color: #d1d5dc;
  --app-figma-placeholder: rgba(255, 255, 255, 0.48);
  --app-figma-icon-purple: #7C86FF;
  --app-figma-icon-green: #00D492;
  --app-figma-icon-orange: #E5A35D;
  --app-figma-icon-pink: #FF6B9D;
  --app-figma-border: rgba(255, 255, 255, 0.12);
  --app-figma-border-card: rgba(255, 255, 255, 0.12);
  --app-figma-chevron: rgba(255, 255, 255, 0.5);
  --app-figma-separator: rgba(255, 255, 255, 0.04);
  --app-figma-card-shadow: 0px 8px 32px rgba(0, 0, 0, 0.3);
  --app-figma-required: #ff6467;
  --app-figma-btn-purple-grad: linear-gradient(171deg, rgba(124, 134, 255, 0.6) 0%, rgba(91, 99, 224, 0.6) 100%);
  --app-figma-btn-pink-grad: linear-gradient(171deg, rgba(251, 100, 182, 0.5) 0%, rgba(124, 134, 255, 0.5) 100%);
  --app-figma-btn-green-grad: linear-gradient(171deg, rgba(0, 212, 146, 0.5) 0%, rgba(5, 223, 114, 0.5) 100%);
  --app-figma-logout-bg: #221B27;
  --app-figma-logout-border: #FF4685;

  /* Семантические токены — dark theme */
  --app-warning-bg: rgba(255, 184, 0, 0.10);
  --app-warning-border: rgba(255, 184, 0, 0.22);
  --app-warning-icon: rgba(255, 184, 0, 0.95);
  --app-warning-text: #FFB900;

  --app-info-bg: rgba(124, 134, 255, 0.10);
  --app-info-border: rgba(124, 134, 255, 0.22);
  --app-info-icon: rgba(163, 179, 255, 0.95);
  --app-info-text: #A3B3FF;

  --app-success-bg: rgba(0, 212, 146, 0.10);
  --app-success-border: rgba(0, 212, 146, 0.22);
  --app-success-icon: rgba(0, 212, 146, 0.95);
  --app-success-text: #00D492;

  --app-danger-bg: rgba(255, 100, 103, 0.12);
  --app-danger-border: rgba(255, 100, 103, 0.28);
  --app-danger-icon: rgba(255, 100, 103, 0.95);
  --app-danger-text: #FF6467;

  --app-accent-bg: rgba(124, 134, 255, 0.12);
  --app-accent-border: rgba(124, 134, 255, 0.28);
  --app-accent-icon: rgba(163, 179, 255, 0.95);
  --app-accent-text: #A3B3FF;
}

/*a {*/
/*  font-weight: 500;*/
/*  color: #646cff;*/
/*  text-decoration: inherit;*/
/*}*/
/*a:hover {*/
/*  color: #535bf2;*/
/*}*/

/*body {*/
/*  margin: 0;*/
/*  display: flex;*/
/*  place-items: center;*/
/*  min-width: 320px;*/
/*  min-height: 100vh;*/
/*}*/

/*h1 {*/
/*  font-size: 3.2em;*/
/*  line-height: 1.1;*/
/*}*/

/*button {*/
/*  border-radius: 8px;*/
/*  border: 1px solid transparent;*/
/*  padding: 0.6em 1.2em;*/
/*  font-size: 1em;*/
/*  font-weight: 500;*/
/*  font-family: inherit;*/
/*  background-color: #1a1a1a;*/
/*  cursor: pointer;*/
/*  transition: border-color 0.25s;*/
/*}*/
/*button:hover {*/
/*  border-color: #646cff;*/
/*}*/
/*button:focus,*/
/*button:focus-visible {*/
/*  outline: 4px auto -webkit-focus-ring-color;*/
/*}*/

/*@media (prefers-color-scheme: light) {*/
/*  :root {*/
/*    color: #213547;*/
/*    background-color: #ffffff;*/
/*  }*/
/*  a:hover {*/
/*    color: #747bff;*/
/*  }*/
/*  button {*/
/*    background-color: #f9f9f9;*/
/*  }*/
/*}*/

/* Dark theme support */
html, body, #root {
  background-color: var(--tg-theme-bg-color, #ffffff);
  color: var(--tg-theme-text-color, #000000);
  min-height: 100vh;
  transition: background-color 0.3s ease, color 0.3s ease;
}

[data-theme="dark"] {
  color-scheme: dark;
}

[data-theme="light"] {
  color-scheme: light;
}

/* Telegram Mini Apps placeholder theming */
input::placeholder,
textarea::placeholder,
.ant-input::placeholder,
.ant-input textarea::placeholder,
.ant-input-affix-wrapper input::placeholder,
.ant-input-number input::placeholder {
  color: var(--tg-theme-hint-color, var(--tg-theme-text-color)) !important;
  opacity: 0.6; /* slightly dimmed for placeholder */
}

/* Base text color adapts to background */
body, #root, .ant-typography, .ant-modal, .glassModal, .ant-list, .ant-collapse,
.ant-form, .ant-input, .ant-select, .ant-table {
  color: var(--app-contrast-text-color, var(--tg-theme-text-color, #111111));
}

/* Modal title and content follow theme (no forced white) */
.ant-modal-title,
.ant-modal .ant-modal-title,
.ant-modal-header .ant-modal-title {
  color: var(--tg-theme-text-color, #111) !important;
}

/* Ant Design Select/AutoComplete placeholder */
.ant-select-selection-placeholder,
.ant-select .ant-select-selection-placeholder {
  color: var(--tg-theme-text-color) !important;
}

/* Telegram hint color for all Collapse arrows */
.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-expand-icon,
.ant-collapse .ant-collapse-arrow,
.ant-collapse .ant-collapse-expand-icon svg,
.ant-collapse .ant-collapse-arrow svg {
  color: var(--tg-theme-hint-color) !important;
  fill: var(--tg-theme-hint-color) !important;
}

/* Legal page: expand icon uses project accent from DB */
.legal-docs-collapse.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-expand-icon,
.legal-docs-collapse .ant-collapse-expand-icon svg,
.legal-docs-collapse .ant-collapse-arrow svg {
  color: var(--app-main-button-color, var(--app-button-color)) !important;
  fill: var(--app-main-button-color, var(--app-button-color)) !important;
}

/* Remove borders from Collapse components */
.ant-collapse,
.ant-collapse > .ant-collapse-item,
.ant-collapse > .ant-collapse-item > .ant-collapse-header,
.ant-collapse > .ant-collapse-item > .ant-collapse-content {
  border: none !important;
}

/* Make Collapse content box follow theme and rounded corners **/
.ant-collapse > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box {
  padding: 0; /* Внутренние отступы задаём уже в контенте панели */
  border-radius: 12px !important;
  overflow: hidden;
  background-color: transparent !important;
}

/* Hide Ant Design Empty illustration (keep only text) */
.ant-empty-image {
  display: none !important;
}

/* Attention alerts — мягкая info-стилизация (не «алерт-ошибка»).
   Используем семантические --app-info-* токены, которые корректно адаптируются
   к light/dark теме. Селектор `.attention-alert.ant-alert` намеренно специфичный —
   чтобы не зацепить другие AntD-алерты на странице. */
.attention-alert.ant-alert {
  background: var(--app-info-bg);
  border: var(--app-hairline-width) solid var(--app-info-border);
  border-radius: 12px;
  padding: 12px 14px;
  align-items: flex-start;
}
.attention-alert.ant-alert .ant-alert-icon {
  color: var(--app-info-icon);
  font-size: 20px;
  margin-inline-end: 12px;
  margin-top: 2px;
  align-self: flex-start;
}
.attention-alert.ant-alert .ant-alert-message {
  color: var(--app-figma-text-primary);
  font-weight: 500;
  font-size: 15px;
  line-height: 1.4;
}
.attention-alert.ant-alert .ant-alert-description {
  color: var(--app-figma-text-secondary);
  font-size: 14px;
  line-height: 1.5;
  margin-top: 2px;
}
.attention-alert.ant-alert .ant-alert-action .ant-btn-link {
  color: var(--app-info-text);
  font-weight: 500;
  padding-inline: 0;
}

/* Mobile: action кнопка падает под описание, чтобы не сжимать текст. */
@media (max-width: 420px) {
  .attention-alert.ant-alert {
    flex-direction: column;
  }
  .attention-alert.ant-alert-with-description .ant-alert-content {
    width: 100%;
  }
  .attention-alert .ant-alert-action {
    margin-left: 0 !important;
    margin-inline-start: 0 !important;
    margin-top: 8px;
    width: 100%;
  }
  .attention-alert .ant-alert-action .ant-btn-link {
    padding-inline: 0;
    text-align: left;
    width: auto;
  }
}

/* Global button theming based on custom CSS variables (overrides AntD primary) */
.ant-btn-primary,
button.ant-btn-primary {
  /* Для главных CTA-кнопок сначала используем main-палитру, затем общий цвет, затем Telegram и дефолт */
  background-color: var(--app-main-button-color, var(--app-button-color, var(--tg-theme-button-color, #1677ff))) !important;
  border-color: var(--app-main-button-color, var(--app-button-color, var(--tg-theme-button-color, #1677ff))) !important;
  color: var(--app-main-button-text-color, var(--app-button-text-color, var(--tg-theme-button-text-color, #ffffff))) !important;
}

.ant-btn-primary:not(:disabled):hover,
.ant-btn-primary:not(:disabled):focus {
  filter: brightness(1.05);
}

.ant-btn-primary:disabled {
  opacity: 0.7;
}

/* MUI contained buttons use our palette too */
.MuiButton-containedPrimary,
button.MuiButton-containedPrimary {
  background-color: var(--app-button-color, var(--tg-theme-button-color, #1976d2)) !important;
  color: var(--app-button-text-color, var(--tg-theme-button-text-color, #ffffff)) !important;
}

.MuiChip-colorPrimary {
  background-color: var(--app-button-color, var(--tg-theme-button-color, #1976d2)) !important;
  color: var(--app-button-text-color, var(--tg-theme-button-text-color, #ffffff)) !important;
}

/* Ant Design components theming for dark mode */
.ant-card {
  /* IMPORTANT: do not use !important here.
     Some pages (e.g. ServicePage) intentionally set Card background inline from DB theme variables,
     and !important would override those inline styles. */
  background-color: var(--tg-theme-secondary-bg-color, var(--tg-theme-bg-color));
  color: var(--tg-theme-text-color);
}

.ant-modal-content {
  background-color: var(--tg-theme-bg-color, #1c1c1e) !important;
  color: var(--tg-theme-text-color, #e4e4e7) !important;
}

.ant-input,
.ant-input-number,
.ant-select-selector,
.ant-picker {
  background-color: var(--tg-theme-secondary-bg-color, var(--tg-theme-bg-color)) !important;
  color: var(--tg-theme-text-color) !important;
  border-color: var(--tg-theme-hint-color) !important;
}

.ant-btn-default {
  background-color: var(--tg-theme-secondary-bg-color, var(--tg-theme-bg-color)) !important;
  color: var(--tg-theme-text-color) !important;
  border-color: var(--tg-theme-hint-color) !important;
}

.ant-divider {
  border-color: var(--tg-theme-section-separator-color) !important;
}

.ant-list-item {
  border-color: var(--tg-theme-section-separator-color) !important;
}

.ant-radio-button-wrapper {
  background-color: var(--tg-theme-secondary-bg-color, var(--tg-theme-bg-color)) !important;
  color: var(--tg-theme-text-color) !important;
  border-color: var(--tg-theme-hint-color) !important;
}

.ant-radio-button-wrapper-checked {
  background-color: var(--tg-theme-button-color, #1677ff) !important;
  color: var(--tg-theme-button-text-color, #fff) !important;
  border-color: var(--tg-theme-button-color, #1677ff) !important;
}

/* Figma-styled panels: override global !important for inputs/selects/cards */
.figma-panel .ant-input,
.figma-panel .ant-input-number,
.figma-panel .ant-input-affix-wrapper,
.figma-panel .ant-input-number-input,
.figma-panel .ant-select-selector,
.figma-panel .ant-picker {
  background-color: var(--app-figma-bg-input) !important;
  border-color: var(--app-figma-border) !important;
  border-radius: 14px !important;
  color: var(--app-figma-text-primary) !important;
}

.figma-panel .ant-input-affix-wrapper {
  border-radius: 14px !important;
}

.figma-panel .ant-input::placeholder,
.figma-panel .ant-input-number input::placeholder,
.figma-panel textarea.ant-input::placeholder,
.figma-panel .ant-input-affix-wrapper input::placeholder {
  color: var(--app-figma-placeholder) !important;
  opacity: 1 !important;
}

.figma-panel .ant-select-selection-placeholder {
  color: var(--app-figma-placeholder) !important;
}

.figma-panel .ant-form-item-label > label {
  color: var(--app-figma-label-color) !important;
  font-weight: 500 !important;
  font-size: 14px !important;
}

.figma-panel .ant-form-item-label > label.ant-form-item-required::before,
.figma-panel .ant-form-item-label .ant-form-item-required-mark {
  display: none !important;
}

.figma-panel .ant-card {
  background-color: transparent !important;
  border: none !important;
}

.figma-panel .ant-card .ant-card-head {
  border-bottom: none !important;
}

.figma-panel .ant-btn-primary {
  border: none !important;
}

.figma-panel .ant-btn-primary[style*="btn-purple-grad"],
.figma-panel .ant-btn-primary[style*="btn-green-grad"],
.figma-panel .ant-btn-primary[style*="btn-pink-grad"] {
  border: none !important;
}

.figma-panel .ant-collapse-content-box {
  background-color: transparent !important;
  border-radius: 0 !important;
}

.figma-panel .ant-table {
  background: transparent !important;
}

.figma-panel .ant-table-thead > tr > th,
.figma-panel .ant-table-thead > tr > td {
  background: transparent !important;
  border-bottom: var(--app-hairline-width) solid var(--app-figma-separator) !important;
  color: var(--app-figma-text-secondary) !important;
}

.figma-panel .ant-table-tbody > tr > td {
  border-bottom: var(--app-hairline-width) solid var(--app-figma-separator) !important;
}

.figma-panel .ant-table-tbody > tr:hover > td {
  background: color-mix(in srgb, var(--app-figma-icon-purple) 5%, transparent) !important;
}

.figma-panel .ant-pagination .ant-pagination-item-active {
  background: var(--app-figma-icon-purple) !important;
  border-color: var(--app-figma-icon-purple) !important;
}

.figma-panel .ant-pagination .ant-pagination-item-active a {
  color: #fff !important;
}

.figma-panel .ant-checkbox-wrapper span {
  color: var(--app-figma-label-color) !important;
}

/* Match browser preview: remove left/top offsets on checkbox input */
.figma-panel .ant-checkbox-input {
  left: unset !important;
  top: unset !important;
}

/* Make checked checkbox match project button color */
.ant-checkbox-checked .ant-checkbox-inner {
  background-color: var(--tg-theme-button-color) !important;
  border-color: var(--tg-theme-button-color) !important;
}

.ant-checkbox-checked::after {
  border-color: var(--tg-theme-button-color) !important;
}

.ant-checkbox-wrapper:hover .ant-checkbox-inner,
.ant-checkbox:hover .ant-checkbox-inner,
.ant-checkbox-input:focus-visible + .ant-checkbox-inner {
  border-color: var(--tg-theme-button-color) !important;
}

.ant-checkbox-indeterminate .ant-checkbox-inner::after {
  background-color: var(--tg-theme-button-color) !important;
}

.figma-panel .ant-input-textarea .ant-input-data-count {
  color: var(--app-figma-text-secondary) !important;
}

.figma-panel .ant-form-item-extra {
  color: var(--app-figma-text-secondary) !important;
  font-size: 12px !important;
}

/* ===== Ant Design message/notification toasts — theme-aware styling ===== */

/* Основной контейнер уведомления */
.ant-message-notice-content {
  background: color-mix(in srgb, var(--tg-theme-bg-color, #ffffff) 92%, transparent) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  border: 1px solid var(--app-figma-border, rgba(0,0,0,0.08)) !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.18), 0 1px 4px rgba(0, 0, 0, 0.08) !important;
  border-radius: 14px !important;
  color: var(--tg-theme-text-color, #000000) !important;
}

/* Текст внутри уведомления */
.ant-message-notice-content span,
.ant-message-notice-content .ant-message-custom-content span {
  color: var(--tg-theme-text-color, #000000) !important;
}

/* Иконки предупреждения, ошибки, успеха и info — оставляем типовые цвета но адаптируем к теме */
.ant-message-warning .anticon {
  color: var(--app-figma-icon-orange, #E5A35D) !important;
}

.ant-message-error .anticon {
  color: var(--app-figma-required, #FF3B30) !important;
}

.ant-message-success .anticon {
  color: var(--app-figma-icon-green, #28A745) !important;
}

.ant-message-info .anticon {
  color: var(--app-figma-icon-purple, #5B63E0) !important;
}

/* ===== Registration Wizard Animations ===== */

@keyframes reg-fade-slide-up {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes reg-expand-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes reg-banner-appear {
  from { opacity: 0; transform: scaleY(0.85); transform-origin: top; }
  to   { opacity: 1; transform: scaleY(1); }
}

.reg-step {
  animation: reg-fade-slide-up 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.reg-chip-btn {
  transition: background 0.2s ease, border-color 0.2s ease,
              box-shadow 0.2s ease, color 0.2s ease,
              transform 0.15s ease !important;
}

@keyframes reg-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

.reg-chip-btn:active {
  transform: scale(0.96);
  opacity: 0.85;
}

.reg-subcategory-section {
  animation: reg-expand-in 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.reg-subcategory-enter {
  animation: reg-expand-in 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.reg-success-banner {
  animation: reg-banner-appear 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

/* Thin styled scrollbar for the category grid */
.reg-category-grid::-webkit-scrollbar {
  width: 3px;
}
.reg-category-grid::-webkit-scrollbar-track {
  background: transparent;
}
.reg-category-grid::-webkit-scrollbar-thumb {
  background: rgba(124, 134, 255, 0.25);
  border-radius: 2px;
}
.reg-category-grid::-webkit-scrollbar-thumb:hover {
  background: rgba(124, 134, 255, 0.45);
}

/* Birthday wheel picker — hide scrollbar */
.dob-wheel-scroll::-webkit-scrollbar {
  display: none;
}

/* Анимации главной клиентской страницы (App.jsx).
   Глобальные, чтобы можно было применять через inline style={{ animation: '...' }}. */
@keyframes slideDown {
  from {
    transform: translateY(-100%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes pulseGlow {
  0% { box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); }
  50% { box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22); }
  100% { box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); }
}

@keyframes shimmer {
  0% { transform: translateX(-30%); }
  100% { transform: translateX(130%); }
}

/* prefers-reduced-motion: уважаем системную настройку для длинных декоративных анимаций. */
@media (prefers-reduced-motion: reduce) {
  .pulseGlowAnim,
  [style*="animation: pulseGlow"],
  [style*="animation: slideDown"] {
    animation: none !important;
  }
}

/* Дополнительные клиентские keyframes (вынесено из document.head.appendChild
   в ServicePage.jsx / SuccessPage.jsx и инлайн-<style> TimePage.jsx — чтобы
   не плодить дубли при HMR и не занимать render каждый раз). */
@keyframes fadeInHint {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInSlideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes calendarShineSweep {
  0% { background-position: -120% 0; }
  100% { background-position: 220% 0; }
}

.calendar-shine-btn {
  position: relative;
  overflow: hidden;
}
.calendar-shine-btn::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(
    110deg,
    transparent 35%,
    rgba(255, 255, 255, 0.55) 50%,
    transparent 65%
  );
  background-size: 220% 100%;
  background-repeat: no-repeat;
  animation: calendarShineSweep 2.4s ease-in-out infinite;
  pointer-events: none;
  mix-blend-mode: screen;
}
@media (prefers-reduced-motion: reduce) {
  .calendar-shine-btn::after {
    animation: none;
  }
}

/* Глобальные UI-утилиты для клиентских страниц.
   .app-focusable-card — карточка с onClick (role=button): сбрасывает дефолтный
   outline и подмешивает видимый focus-ring только для клавиатурной навигации.
   .app-touch-target-44 — обёртка с hit-area ≥ 44×44 для маленьких иконок-кнопок
   (требование Apple HIG / Material для тача). */
.app-focusable-card {
  outline: none;
  -webkit-tap-highlight-color: transparent;
}
.app-focusable-card:focus-visible {
  outline: 2px solid var(--tg-theme-link-color, #007AFF);
  outline-offset: 2px;
}

.app-touch-target-44 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  outline: none;
}
.app-touch-target-44:focus-visible {
  outline: 2px solid var(--tg-theme-link-color, #007AFF);
  outline-offset: 2px;
  border-radius: 50%;
}

/* TimePage — placeholder textarea: цвет берётся из CSS-переменной --tp-placeholder-color,
   которую родительский элемент задаёт через inline style на основе acent-цвета компонента. */
.tp-notes-textarea::placeholder {
  color: var(--tp-placeholder-color, rgba(255, 255, 255, 0.55));
  opacity: 1;
}
.tp-notes-textarea::-webkit-input-placeholder {
  color: var(--tp-placeholder-color, rgba(255, 255, 255, 0.55));
  opacity: 1;
}
.tp-notes-textarea::-moz-placeholder {
  color: var(--tp-placeholder-color, rgba(255, 255, 255, 0.55));
  opacity: 1;
}

/* TimePage — мобильные адаптивы (< 400px). Уменьшаем padding'и карточек и main-контейнера,
   чтобы контент не упирался в края экрана на узких устройствах. */
@media (max-width: 400px) {
  .timepage-card-info { padding: 32px 16px !important; }
  .timepage-main { padding: 12px 12px 0 !important; }
}
