/**
 * Yungannabis - Estilos Dashboard Mi Membresía
 *
 * BEM con prefijo .yng-dash__*
 * Uses theme :root tokens with fallbacks
 *
 * @package Yungannabis_Core
 * @since 1.1.0
 */

/* ==========================================================================
   Status Card
   ========================================================================== */

.yng-dash {
  font-family: 'Open Sans', -apple-system, sans-serif;
  color: var(--yng-dark, #030507);
  min-height: calc(100vh - 200px);
}

.yng-dash__status-card {
  background: var(--yng-white, #fff);
  border-radius: var(--yng-radius, 12px);
  box-shadow: var(--yng-shadow-hover, 0 8px 24px rgba(3, 5, 7, 0.14));
  padding: 24px;
  margin-bottom: 24px;
}

.yng-dash__header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}

.yng-dash__plan-name {
  margin: 0;
  font-size: 22px;
  font-weight: 600;
  color: var(--yng-dark, #030507);
}

.yng-dash__member-number {
  font-size: 13px;
  color: var(--yng-secondary, #768394);
  font-weight: 500;
}

/* ==========================================================================
   Status Badge
   ========================================================================== */

.yng-dash__badge {
  display: inline-block;
  padding: 4px 14px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--yng-white, #fff);
}

.yng-dash__badge--activa {
  background-color: var(--yng-success, #2D5A27);
}

.yng-dash__badge--vencida {
  background-color: var(--yng-gold, #C4A35A);
  color: var(--yng-dark, #030507); /* WCAG fix: dark text on gold (5.76:1 vs white 2.28:1) */
}

.yng-dash__badge--suspendida,
.yng-dash__badge--cancelada {
  background-color: var(--yng-error, #C43A3A);
}

.yng-dash__badge--nueva {
  background-color: var(--yng-secondary, #768394);
}

/* ==========================================================================
   Info Grid
   ========================================================================== */

.yng-dash__info-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.yng-dash__info-item {
  text-align: center;
  padding: 16px;
  background: var(--yng-light, #f3f5f7);
  border-radius: var(--yng-radius-sm, 8px);
}

.yng-dash__label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--yng-secondary, #768394);
  margin-bottom: 4px;
}

.yng-dash__value {
  display: block;
  font-size: 20px;
  font-weight: 700;
  color: var(--yng-dark, #030507);
}

/* ==========================================================================
   Warning (grace period)
   ========================================================================== */

.yng-dash__warning {
  background: #FFF8E1;
  border-left: 4px solid #C4A35A;
  padding: 16px;
  margin-bottom: 24px;
  border-radius: 0 var(--yng-radius-sm, 8px) var(--yng-radius-sm, 8px) 0;
  font-size: 14px;
  line-height: 1.5;
}

.yng-dash__warning strong {
  color: #8B6914;
}

/* ==========================================================================
   No membership state
   ========================================================================== */

.yng-dash__empty {
  text-align: center;
  padding: 48px 24px;
  background: var(--yng-white, #fff);
  border-radius: var(--yng-radius, 12px);
  box-shadow: var(--yng-shadow, 0 2px 8px rgba(3, 5, 7, 0.08));
  margin-bottom: 24px;
}

.yng-dash__empty p {
  color: var(--yng-secondary, #768394);
  font-size: 15px;
  margin: 0 0 24px;
}

/* ==========================================================================
   Action Buttons
   ========================================================================== */

.yng-dash__actions {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

.yng-dash__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 12px 24px;
  border-radius: var(--yng-radius-sm, 8px);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: all var(--yng-transition, 0.25s ease);
  border: none;
  font-family: inherit;
}

.yng-dash__btn--primary {
  background-color: var(--yng-primary-accessible, #3e796b);
  color: var(--yng-white, #fff);
}

.yng-dash__btn--primary:hover {
  background-color: var(--yng-brown, #73340B);
  color: var(--yng-white, #fff);
}

.yng-dash__btn--danger {
  background: transparent;
  color: var(--yng-error, #C43A3A);
  border: 1px solid var(--yng-error, #C43A3A);
  padding: 9px 24px;
}

.yng-dash__btn--danger:hover {
  background-color: var(--yng-error, #C43A3A);
  color: var(--yng-white, #fff);
}

.yng-dash__btn:focus-visible {
  outline: none;
  box-shadow: var(--yng-focus-ring, 0 0 0 2px #fff, 0 0 0 4px #3e796b);
}

.yng-dash__btn--danger:focus-visible {
  box-shadow: 0 0 0 2px var(--yng-white, #fff), 0 0 0 4px var(--yng-error, #C43A3A);
}

/* ==========================================================================
   Orders History
   ========================================================================== */

.yng-dash__section-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--yng-dark, #030507);
  margin: 0 0 16px;
}

.yng-dash__orders {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.yng-dash__orders th {
  text-align: left;
  padding: 10px 12px;
  border-bottom: 2px solid var(--yng-border, #e2e6ea);
  font-weight: 600;
  color: var(--yng-secondary, #768394);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.yng-dash__orders td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--yng-light, #f3f5f7);
  color: var(--yng-dark, #030507);
}

.yng-dash__orders tr:last-child td {
  border-bottom: none;
}

.yng-dash__orders-empty {
  color: var(--yng-secondary, #768394);
  font-style: italic;
  padding: 16px 0;
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (min-width: 481px) and (max-width: 768px) {
  .yng-dash__info-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .yng-dash__info-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {

  .yng-dash__header {
    flex-direction: column;
    align-items: flex-start;
  }

  /* Responsive orders: stack as cards on mobile */
  .yng-dash__orders,
  .yng-dash__orders thead,
  .yng-dash__orders tbody,
  .yng-dash__orders th,
  .yng-dash__orders td,
  .yng-dash__orders tr {
    display: block;
  }

  .yng-dash__orders thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
  }

  .yng-dash__orders tr {
    border: 1px solid var(--yng-border, #e2e6ea);
    border-radius: var(--yng-radius-sm, 8px);
    padding: 12px;
    margin-bottom: 8px;
    background: var(--yng-white, #fff);
  }

  .yng-dash__orders td {
    padding: 4px 0;
    border-bottom: none;
    font-size: 13px;
    display: flex;
    justify-content: space-between;
  }

  .yng-dash__orders td::before {
    content: attr(data-label);
    font-weight: 600;
    color: var(--yng-secondary, #768394);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-right: 8px;
  }
}

/* ==========================================================================
   ONBOARDING NOTICE (new/cancelled users)
   ========================================================================== */
.yng-onboarding {
  background: linear-gradient(135deg, var(--yng-light, #f3f5f7) 0%, var(--yng-border, #e2e6ea) 100%);
  border: 1px solid var(--yng-border, #e2e6ea);
  border-left: 4px solid var(--yng-primary-accessible, #3e796b);
  border-radius: var(--yng-radius-sm, 8px);
  padding: 24px;
  margin-bottom: 24px;
  text-align: center;
}

.yng-onboarding__title {
  font-family: 'Montserrat', sans-serif;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--yng-dark, #030507);
  margin: 0 0 8px;
}

.yng-onboarding__text {
  font-size: 0.9rem;
  color: var(--yng-secondary, #768394);
  margin: 0 0 16px;
  line-height: 1.6;
}

.yng-onboarding__cta {
  display: inline-block;
  background: var(--yng-primary-accessible, #3e796b);
  color: var(--yng-white, #ffffff);
  padding: 10px 24px;
  border-radius: var(--yng-radius-sm, 8px);
  font-family: 'Montserrat', sans-serif;
  font-weight: 600;
  font-size: 0.9rem;
  text-decoration: none;
  transition: background var(--yng-transition, 0.25s ease);
}

.yng-onboarding__cta:hover {
  background: var(--yng-brown, #73340B);
  color: var(--yng-white, #ffffff);
}

.yng-onboarding__cta:focus-visible {
  outline: none;
  box-shadow: var(--yng-focus-ring, 0 0 0 2px #fff, 0 0 0 4px #3e796b);
}

/* ==========================================================================
   Status Notices (SUSPENDIDA / CANCELADA)
   ========================================================================== */

.yng-dash__notice {
  padding: 12px 16px;
  border-radius: var(--yng-radius-sm, 8px);
  margin-bottom: 16px;
  font-size: 14px;
  line-height: 1.5;
}

.yng-dash__notice p {
  margin: 0;
}

.yng-dash__notice--warning {
  background: #FFF3E0;
  border-left: 4px solid var(--yng-error, #C43A3A);
  color: var(--yng-dark, #030507);
}

.yng-dash__notice--info {
  background: var(--yng-light, #f3f5f7);
  border-left: 4px solid var(--yng-primary-accessible, #3e796b);
  color: var(--yng-dark, #030507);
}

/* ==========================================================================
   Verification Section
   ========================================================================== */

.yng-dash__verification {
  background: var(--yng-white, #fff);
  border-radius: var(--yng-radius, 12px);
  box-shadow: var(--yng-shadow, 0 2px 8px rgba(3, 5, 7, 0.08));
  padding: 24px;
  margin-bottom: 24px;
}

.yng-dash__verification .yng-dash__section-title {
  margin-top: 0;
}

.yng-dash__steps {
  display: flex;
  flex-direction: column;
  gap: 0;
  position: relative;
}

.yng-dash__steps-progress {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  margin-bottom: 12px;
  font-size: 13px;
  color: var(--yng-secondary, #768394);
}

.yng-dash__steps-progress-bar {
  flex: 1;
  height: 4px;
  background: #e0e0e0;
  border-radius: 2px;
  overflow: hidden;
}

.yng-dash__steps-progress-fill {
  height: 100%;
  background: var(--yng-success, #2D5A27);
  border-radius: 2px;
  transition: width 0.4s ease;
}

.yng-dash__step {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  padding: 16px;
  border-radius: var(--yng-radius-sm, 8px);
  background: var(--yng-light, #f3f5f7);
  position: relative;
  margin-bottom: 0;
}

.yng-dash__step + .yng-dash__step {
  margin-top: 0;
}

/* Checklist mode: gap between items, no connectors */
.yng-dash__steps--checklist {
  gap: 8px;
}

/* Legacy connectors (kept for backwards compat, hidden in checklist) */
.yng-dash__step-connector {
  display: none;
}

.yng-dash__step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  font-size: 16px;
  font-weight: 700;
  flex-shrink: 0;
  background: var(--yng-secondary, #768394);
  color: var(--yng-white, #fff);
}

.yng-dash__step--done .yng-dash__step-icon {
  background: var(--yng-success, #2D5A27);
}

.yng-dash__step--error .yng-dash__step-icon {
  background: var(--yng-error, #C43A3A);
}

.yng-dash__step--pending .yng-dash__step-icon {
  background: var(--yng-gold, #C4A35A);
}

.yng-dash__step-content {
  flex: 1;
  min-width: 0;
}

.yng-dash__step-content strong {
  display: block;
  font-size: 14px;
  margin-bottom: 4px;
  color: var(--yng-dark, #030507);
}

.yng-dash__step-content p {
  margin: 4px 0 8px;
  font-size: 13px;
  color: var(--yng-secondary, #768394);
  line-height: 1.5;
}

.yng-dash__step-status {
  display: inline-block;
  font-size: 12px;
  font-weight: 600;
  padding: 2px 10px;
  border-radius: 12px;
  margin-bottom: 4px;
}

.yng-dash__step-status--ok {
  background: rgba(45, 90, 39, 0.1);
  color: var(--yng-success, #2D5A27);
}

.yng-dash__step-status--pending {
  background: rgba(196, 163, 90, 0.15);
  color: #8B6914;
}

.yng-dash__step-status--error {
  background: rgba(196, 58, 58, 0.1);
  color: var(--yng-error, #C43A3A);
}

.yng-dash__reject-reason {
  background: rgba(196, 58, 58, 0.06);
  border-left: 3px solid var(--yng-error, #C43A3A);
  padding: 8px 12px;
  border-radius: 0 4px 4px 0;
  font-size: 13px;
  color: var(--yng-dark, #030507);
}

/* Upload form */
.yng-dash__upload {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}

.yng-dash__upload input[type="file"] {
  font-size: 13px;
  color: var(--yng-secondary, #768394);
}

.yng-dash__btn--small {
  padding: 10px 16px;
  min-height: 44px;
  font-size: 13px;
}

/* Upload progress bar */
.yng-dash__upload-progress {
  width: 100%;
  height: 6px;
  background: #e5e7eb;
  border-radius: 3px;
  overflow: hidden;
  margin-top: 8px;
}

.yng-dash__upload-progress-bar {
  height: 100%;
  background: var(--yng-primary-accessible, #3e796b);
  border-radius: 3px;
  transition: width 0.2s ease;
}

/* Frenar el débito automático — control separado de la baja de membresía.
   Son cosas distintas: cortar el cobro no implica perder el acceso ya pagado
   (Res. SCI 424/2020: la baja tiene que ser tan simple como el alta). */
.yng-dash__stopdebit-form {
  margin: 12px 0 4px;
  padding: 12px 14px;
  background: var(--yng-bg-soft, #f7f8f9);
  border: 1px solid var(--yng-border, #e2e6ea);
  border-radius: var(--yng-radius-sm, 8px);
}

.yng-dash__stopdebit-text {
  margin: 0 0 10px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--yng-text-soft, #5a6672);
}

/* (Se quitó .yng-dash__cancel-input: ya no se pide tipear "CANCELAR" para
   habilitar el botón de baja.) */

/* AJAX result messages */
.yng-dash__msg {
  display: inline-block;
  font-size: 13px;
  padding: 4px 8px;
  border-radius: 4px;
  margin-left: 4px;
}

.yng-dash__msg--success {
  color: var(--yng-success, #2D5A27);
  background: rgba(45, 90, 39, 0.1);
}

.yng-dash__msg--error {
  color: var(--yng-error, #C43A3A);
  background: rgba(196, 58, 58, 0.08);
}

@media (max-width: 480px) {
  .yng-dash__step {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .yng-dash__upload {
    flex-direction: column;
    align-items: stretch;
  }
}

/* ==========================================================================
   Cancel De-emphasis
   ========================================================================== */

.yng-dash__cancel-details {
  margin: 0;
}

.yng-dash__cancel-summary {
  font-size: 13px;
  color: var(--yng-secondary, #768394);
  cursor: pointer;
  list-style: none;
  text-decoration: underline;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.yng-dash__cancel-summary:focus-visible {
  outline: none;
  box-shadow: var(--yng-focus-ring, 0 0 0 2px #fff, 0 0 0 4px #3e796b);
}

.yng-dash__cancel-summary::-webkit-details-marker {
  display: none;
}

.yng-dash__cancel-form {
  margin-top: 8px;
}

.yng-dash__cancel-warning {
  font-size: 13px;
  color: var(--yng-secondary, #768394);
  margin: 0 0 8px;
}

.yng-dash__cancel-downgrade {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin-left: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--yng-primary-accessible, #3e796b);
  text-decoration: underline;
}

.yng-dash__cancel-downgrade:hover {
  color: var(--yng-brown, #73340B);
}

.yng-dash__cancel-downgrade:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--yng-primary-accessible, #3e796b);
}

/* ==========================================================================
   Empty Orders Enhanced
   ========================================================================== */

.yng-dash__orders-empty {
  text-align: center;
  padding: 24px 16px;
  color: var(--yng-secondary, #768394);
}

.yng-dash__orders-empty-icon {
  display: block;
  font-size: 32px;
  margin-bottom: 8px;
}

.yng-dash__orders-empty p {
  margin: 0 0 12px;
  font-style: italic;
}

/* ==========================================================================
   Mis Documentos
   ========================================================================== */

.yng-dash__docs {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 24px;
}

.yng-dash__doc-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--yng-light, #f3f5f7);
  border-radius: var(--yng-radius-sm, 8px);
}

.yng-dash__doc-icon {
  flex-shrink: 0;
  color: var(--yng-primary-accessible, #3e796b);
}

.yng-dash__doc-info {
  flex: 1;
  min-width: 0;
}

.yng-dash__doc-name {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--yng-dark, #030507);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.yng-dash__doc-date {
  display: block;
  font-size: 11px;
  color: var(--yng-secondary, #768394);
  margin-top: 2px;
}

.yng-dash__badge--ok {
  background-color: var(--yng-success, #2D5A27);
}

.yng-dash__badge--pending {
  background-color: var(--yng-gold, #C4A35A);
  color: var(--yng-dark, #030507);
}

.yng-dash__badge--error {
  background-color: var(--yng-error, #C43A3A);
}

.yng-dash__docs-intro {
  font-size: 13px;
  color: var(--yng-secondary, #768394);
  margin: 0 0 12px;
}

.yng-dash__doc-date--muted {
  font-style: italic;
  opacity: 0.8;
}

.yng-dash__doc-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.yng-dash__doc-upload-btn {
  cursor: pointer;
  margin: 0;
}

.yng-dash__btn--ghost {
  background: transparent;
  color: var(--yng-primary-accessible, #3e796b);
  border: 1px solid var(--yng-primary-accessible, #3e796b);
  padding: 9px 14px;
}

.yng-dash__btn--ghost:hover {
  background: var(--yng-primary-accessible, #3e796b);
  color: var(--yng-white, #fff);
}

.yng-dash__btn--secondary {
  background: var(--yng-light, #f3f5f7);
  color: var(--yng-primary-accessible, #3e796b);
  border: 1px solid var(--yng-primary-accessible, #3e796b);
}

.yng-dash__btn--secondary:hover {
  background: var(--yng-primary-accessible, #3e796b);
  color: var(--yng-white, #fff);
}

.yng-dash__btn--disabled,
.yng-dash__btn[disabled] {
  opacity: 0.6;
  pointer-events: none;
  cursor: not-allowed;
}

.yng-dash__docs-msg {
  margin: 8px 0 0;
  padding: 10px 14px;
  border-radius: var(--yng-radius-sm, 8px);
  font-size: 13px;
}

.yng-dash__docs-msg.yng-dash__msg--success {
  background: rgba(45, 90, 39, 0.08);
  color: var(--yng-success, #2D5A27);
  border: 1px solid rgba(45, 90, 39, 0.2);
}

.yng-dash__docs-msg.yng-dash__msg--error {
  background: rgba(196, 58, 58, 0.08);
  color: var(--yng-error, #C43A3A);
  border: 1px solid rgba(196, 58, 58, 0.2);
}

@media (max-width: 600px) {
  .yng-dash__doc-item {
    flex-wrap: wrap;
  }
  .yng-dash__doc-info {
    flex: 1 1 100%;
    order: 1;
  }
  .yng-dash__doc-icon {
    order: 0;
  }
  .yng-dash__doc-actions {
    flex: 1 1 100%;
    order: 2;
    justify-content: flex-start;
  }
}

/* ==========================================================================
   Subscription Info Box
   ========================================================================== */

.yng-dash__subscription {
  background: rgba(62, 121, 107, 0.06);
  border: 1px solid rgba(62, 121, 107, 0.2);
  border-radius: var(--yng-radius-sm, 8px);
  padding: 16px 20px;
  margin-top: 12px;
}

.yng-dash__subscription--manual {
  background: rgba(196, 163, 90, 0.06);
  border-color: rgba(196, 163, 90, 0.2);
  padding: 12px 20px;
  font-size: 14px;
}

.yng-dash__sub-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.yng-dash__sub-icon {
  color: var(--yng-primary-accessible, #3e796b);
  font-size: 18px;
}

.yng-dash__sub-label {
  color: var(--yng-primary-accessible, #3e796b);
}

.yng-dash__sub-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  font-size: 14px;
}

.yng-dash__sub-muted {
  color: var(--yng-secondary, #768394);
}

.yng-dash__sub-note {
  margin: 8px 0 0;
  font-size: 13px;
  color: var(--yng-secondary, #768394);
}

.yng-dash__sub-manual-label {
  color: #8B6914;
}

.yng-dash__sub-action {
  color: var(--yng-primary-accessible, #3e796b);
  font-weight: 600;
}

/* ==========================================================================
   Grace Period & Suspended
   ========================================================================== */

.yng-dash__grace-title {
  color: #8B6914;
  font-size: 1.1em;
}

.yng-dash__grace-title--critical {
  color: var(--yng-error, #C43A3A);
}

.yng-dash__grace-bar {
  margin: 8px 0;
  height: 6px;
  background: #e5e7eb;
  border-radius: var(--yng-radius-sm, 8px);
  overflow: hidden;
}

.yng-dash__grace-bar-fill {
  height: 100%;
  background: var(--yng-gold, #C4A35A);
  border-radius: var(--yng-radius-sm, 8px);
  transition: width 0.3s;
}

.yng-dash__grace-bar-fill--critical {
  background: var(--yng-error, #C43A3A);
}

.yng-dash__grace-note {
  margin: 4px 0 0;
  font-size: 13px;
}

.yng-dash__warning--suspended {
  border-color: var(--yng-error, #C43A3A);
  background: rgba(196, 58, 58, 0.06);
}

.yng-dash__warning-title {
  color: var(--yng-error, #C43A3A);
}

.yng-dash__warning-text {
  margin: 4px 0 0;
  font-size: 13px;
}

/* ==========================================================================
   Step Hints & Meta
   ========================================================================== */

.yng-dash__step-hint {
  display: block;
  font-size: 12px;
  color: var(--yng-secondary, #768394);
  margin-top: 2px;
}

.yng-dash__step-meta {
  font-size: 12px;
  color: var(--yng-secondary, #768394);
  margin: 4px 0 0;
}

/* ==========================================================================
   Reduced Motion (A11y)
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  .yng-dash__btn,
  .yng-dash__steps-progress-fill,
  .yng-onboarding__cta {
    transition: none;
  }
}
