/* ===============================
   Enterprise Admin Polish Layer
   - website aligned grid/glass theme
   - stable circular action buttons
   - premium cards across legacy GridList pages
   =============================== */
:root {
  --gv-font-body: 'Poppins', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --gv-radius-xl: 28px;
  --gv-radius-lg: 22px;
  --gv-shadow-soft: 0 22px 60px rgba(0,0,0,.22);
}

body.gv-theme-grid .nx-main-content,
body.gv-theme-grid .nx-container {
  position: relative;
  z-index: 1;
}

body.gv-theme-grid .gridlist-container {
  background: linear-gradient(135deg, rgba(255,255,255,.065), rgba(9,22,44,.42)) !important;
  border-radius: var(--gv-radius-xl) !important;
  box-shadow: var(--gv-shadow-soft);
}

.gridlist-controls {
  align-items: end;
  gap: 16px 20px !important;
}

.gridlist-controls .control-group label {
  color: rgba(255,255,255,.74) !important;
  font-weight: 650;
}

.gridlist-controls input,
.gridlist-controls select,
.nx-select {
  min-height: 46px;
  border-radius: 999px !important;
  border: 1px solid rgba(79,172,254,.85) !important;
  background-color: rgba(37,42,91,.72) !important;
  color: #fff !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03);
}

.grid-card {
  border: 1px solid rgba(255,255,255,.09) !important;
  border-radius: 24px !important;
  background: linear-gradient(150deg, rgba(255,255,255,.065), rgba(16,31,52,.52)) !important;
  box-shadow: 0 18px 50px rgba(0,0,0,.18);
  min-height: 250px;
}

.grid-card::before {
  content: '';
  position: absolute;
  inset: auto -35% -55% 8%;
  height: 180px;
  background: radial-gradient(circle, rgba(0,242,254,.16), transparent 68%);
  pointer-events: none;
}

.grid-card-body { position: relative; z-index: 1; }
.grid-card-body h3 { letter-spacing: -.025em; line-height: 1.2; }
.grid-card-body .discount { color: #fff; font-weight: 800; font-size: 1.05rem; }

.status-badge,
.premium-badge {
  z-index: 3;
  font-weight: 900 !important;
  letter-spacing: .02em;
}

.status-badge.active { background: linear-gradient(135deg, #28a745, #55d98d) !important; color: #fff !important; }
.status-badge.inactive { background: linear-gradient(135deg, #e14b64, #ff8b78) !important; color: #fff !important; }
.status-badge.warning { background: linear-gradient(135deg, #f49b36, #f3cd74) !important; color: #071226 !important; }

.grid-card-actions,
.plan-actions {
  position: relative;
  z-index: 4;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 12px !important;
}

.action-btn,
.grid-card-actions .action-btn,
.option-footer .action-btn {
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  min-height: 44px !important;
  padding: 0 !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(255,255,255,.075) !important;
  color: #fff !important;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(0,0,0,.16);
  transition: transform .22s ease, box-shadow .22s ease, background .22s ease, border-color .22s ease !important;
  overflow: hidden;
}
.action-btn i,
.grid-card-actions .action-btn i,
.option-footer .action-btn i {
  font-size: 20px !important;
  line-height: 1 !important;
  color: currentColor !important;
  display: block;
}
.action-btn:hover { transform: translateY(-3px) scale(1.03) !important; box-shadow: 0 16px 32px rgba(0,242,254,.18); }
.action-btn.view:hover { background: linear-gradient(135deg,#17a2b8,#00f2fe) !important; color:#071226 !important; }
.action-btn.edit:hover { background: linear-gradient(135deg,#4facfe,#00f2fe) !important; color:#071226 !important; }
.action-btn.delete:hover { background: linear-gradient(135deg,#ff5b7f,#ff8b78) !important; color:#fff !important; }

.nx-btn,
.nx-btn-primary,
.nx-btn-add,
button[type='submit'] {
  border-radius: 999px !important;
  font-weight: 850 !important;
}
.nx-btn-primary,
.nx-btn-add {
  background: linear-gradient(135deg, #4facfe, #00f2fe) !important;
  color: #071226 !important;
  box-shadow: 0 16px 34px rgba(0,242,254,.20) !important;
}
.nx-btn-primary:hover,
.nx-btn-add:hover {
  background: linear-gradient(135deg, #fff, #f3cd74) !important;
  color: #071226 !important;
}

/* Dialog stability for media-heavy forms */
.nx-dialog,
.nx-modal,
.dialog-box {
  max-height: min(88vh, 920px) !important;
}
.nx-dialog-body,
.nx-modal-body,
.dialog-body {
  overflow-y: auto !important;
  overscroll-behavior: contain;
}

/* Keep upload pickers inside dialog viewport */
.custom-image-input,
.custom-audio-input,
.custom-video-input,
.custom-doc-input {
  border-radius: 20px !important;
  background: rgba(255,255,255,.035) !important;
}

.nx-image-preview .image-preview-list {
  max-height: min(34vh, 320px) !important;
}

/* Theme-specific star canvas balance */
body.gv-theme-grid .nx-background-canvas { opacity: .14 !important; }
body.gv-theme-stars::before { display: none; }

@media (max-width: 768px) {
  .gridlist-wrapper { grid-template-columns: 1fr !important; }
  .grid-card-actions { opacity: 1 !important; transform: none !important; }
  .action-btn { width: 42px !important; height: 42px !important; min-width: 42px !important; min-height: 42px !important; }
}


/* Final override order: loaded after page-specific CSS */
.nx-header h1 { font-weight: 900; letter-spacing: -.045em; }
.gridlist-actions { display:flex; justify-content:flex-end; align-items:center; margin: 0 0 16px; }
.grid-card-actions { min-height: 48px; }
.grid-card:hover .grid-card-actions { opacity: 1 !important; transform: translateY(0) !important; }
.grid-card-actions .action-btn { text-decoration:none !important; }
.grid-card .status-badge { top: 14px !important; left: 14px !important; }
.grid-card .premium-badge { top: 14px !important; right: 14px !important; }

/* Toast should not cover dialog primary action too aggressively on compact screens */
.nx-toast-container, #toast-container { z-index: 99999 !important; }
@media (max-width: 640px) {
  .nx-toast-container, #toast-container { left: 14px !important; right: 14px !important; bottom: 14px !important; width: auto !important; }
}

/* Page specific broad polish */
#promoGrid .gridlist-wrapper,
#transactionGrid .gridlist-wrapper,
#subscriptionGrid .gridlist-wrapper {
  align-items: stretch;
}


/* Final enterprise detail dialogs */
.gv-badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;font-size:.74rem;font-weight:900;line-height:1;background:rgba(255,255,255,.10);color:#fff;border:1px solid rgba(255,255,255,.12)}.gv-badge.success{background:rgba(85,217,141,.15);color:#bcffd7;border-color:rgba(85,217,141,.28)}.gv-badge.danger{background:rgba(255,104,104,.16);color:#ffd1d1;border-color:rgba(255,104,104,.30)}.gv-badge.warning{background:rgba(245,184,75,.16);color:#ffe3a8;border-color:rgba(245,184,75,.30)}.gv-badge.gold{background:linear-gradient(135deg,#f49b36,#f3cd74);color:#071226;border:0}.gv-detail-view{display:grid;gap:18px}.gv-detail-hero{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:18px;border-radius:22px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.10)}.gv-detail-hero h2{margin:10px 0 6px;color:#fff;font-size:clamp(1.6rem,3vw,2.7rem);letter-spacing:-.05em}.gv-detail-hero p{margin:0;color:rgba(255,255,255,.62)}.gv-detail-hero strong{color:#f5d58b;font-size:2rem;white-space:nowrap}.gv-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gv-detail-grid div{border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);border-radius:16px;padding:12px}.gv-detail-grid span{display:block;color:rgba(255,255,255,.45);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900}.gv-detail-grid b{display:block;margin-top:5px;color:#fff;overflow-wrap:anywhere}.gv-feature-cloud{display:flex;flex-wrap:wrap;gap:10px}.gv-feature-cloud span{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:8px 12px;background:rgba(85,217,141,.10);color:#d7ffe5;font-weight:800}.gv-feature-cloud i{font-size:17px;color:#55d98d}.gv-user-dialog{display:grid;gap:18px}.gv-user-hero{display:flex;gap:18px;align-items:center;padding:18px;border:1px solid rgba(255,255,255,.10);border-radius:24px;background:rgba(255,255,255,.045)}.gv-user-hero img{width:110px;height:110px;border-radius:28px;object-fit:cover;border:1px solid rgba(255,255,255,.14)}.gv-user-hero h2{margin:8px 0 4px;color:#fff;font-size:2rem;letter-spacing:-.04em}.gv-user-hero p{margin:0;color:rgba(255,255,255,.62)}
/* Keep plan actions visible and premium */
.plan-actions{opacity:1!important;transform:none!important;margin-top:18px}.plan-card{padding-bottom:20px!important}.status-badge,.premium-badge{border-radius:999px!important;padding:6px 11px!important;line-height:1!important}.grid-card .status-badge{position:absolute!important}
@media(max-width:720px){.gv-detail-grid{grid-template-columns:1fr}.gv-detail-hero,.gv-user-hero{flex-direction:column}.gv-detail-hero strong{white-space:normal}}

/* ==========================================================
   Enterprise card/action refinement v2
   - fixes menu clipping through JS portal
   - premium metadata/action/footer treatment across GridList pages
   ========================================================== */
.gridlist-container {
  overflow: visible !important;
  padding: clamp(18px, 2vw, 28px) !important;
}
.gridlist-wrapper {
  overflow: visible !important;
  align-items: stretch !important;
}
.grid-card {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 370px !important;
  padding: 18px !important;
  overflow: hidden !important;
  border-radius: 28px !important;
  background:
    linear-gradient(rgba(255,255,255,.030) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.030) 1px, transparent 1px),
    radial-gradient(circle at 18% 10%, rgba(79,172,254,.16), transparent 15rem),
    radial-gradient(circle at 95% 100%, rgba(0,242,254,.12), transparent 16rem),
    linear-gradient(145deg, rgba(255,255,255,.072), rgba(18,31,58,.56)) !important;
  background-size: 20px 20px, 20px 20px, auto, auto, auto !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  box-shadow: 0 22px 58px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.06) !important;
}
.grid-card:hover {
  transform: translateY(-6px) !important;
  border-color: rgba(0,242,254,.36) !important;
  box-shadow: 0 30px 76px rgba(0,242,254,.13), 0 22px 54px rgba(0,0,0,.22) !important;
}
.grid-card-header {
  min-height: auto !important;
  height: auto !important;
  border-radius: 20px !important;
  margin-bottom: 6px !important;
}
.grid-card-header .nx-image-wrapper,
.grid-card .nx-image-wrapper {
  aspect-ratio: 16/9 !important;
  border-radius: 18px !important;
  background: rgba(7,18,38,.46) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
}
.grid-card-body {
  width: 100% !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  text-align: left !important;
  gap: 10px !important;
  padding: 2px 2px 0 !important;
  flex: 1 1 auto !important;
}
.grid-card-body h3 {
  width: 100% !important;
  color: #fff !important;
  font-size: clamp(1.08rem, 1.6vw, 1.32rem) !important;
  font-weight: 900 !important;
  line-height: 1.16 !important;
  letter-spacing: -.04em !important;
  margin: 2px 0 0 !important;
}
.grid-card-body .slug {
  display: inline-flex !important;
  width: auto !important;
  max-width: 100% !important;
  padding: 5px 10px !important;
  border-radius: 999px !important;
  color: #f3cd74 !important;
  background: rgba(243,205,116,.10) !important;
  border: 1px solid rgba(243,205,116,.18) !important;
  font-weight: 850 !important;
  overflow-wrap: anywhere !important;
}
.grid-card-body .description {
  color: rgba(255,255,255,.68) !important;
  font-size: .92rem !important;
  line-height: 1.48 !important;
  margin: 2px 0 4px !important;
}
.grid-card .meta,
.grid-card-body .meta,
.plan-meta-row span,
.promo-card .meta {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  width: auto !important;
  max-width: 100% !important;
  min-height: 28px !important;
  padding: 5px 10px !important;
  border-radius: 999px !important;
  background: rgba(255,255,255,.055) !important;
  border: 1px solid rgba(255,255,255,.09) !important;
  color: rgba(255,255,255,.72) !important;
  font-size: .78rem !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
}
.grid-card .meta i,
.grid-card-body .meta i,
.plan-meta-row span i,
.promo-card .meta i {
  font-size: 17px !important;
  color: #f3cd74 !important;
}
.grid-card-actions {
  width: 100% !important;
  min-height: 58px !important;
  margin-top: 14px !important;
  padding-top: 14px !important;
  border-top: 1px solid rgba(255,255,255,.09) !important;
  background: linear-gradient(180deg, transparent, rgba(7,18,38,.08)) !important;
}
.grid-card-actions .action-btn,
.action-btn {
  border-radius: 999px !important;
  background: rgba(255,255,255,.085) !important;
  border: 1px solid rgba(255,255,255,.13) !important;
}
.action-btn.view { color: #f3cd74 !important; }
.action-btn.edit { color: #071226 !important; background: linear-gradient(135deg,#4facfe,#00f2fe) !important; }
.action-btn.delete { color: #fff !important; background: rgba(255,104,104,.18) !important; }

/* Plan cards: actions live inside card, hidden until intent, never outside */
#subscriptionGrid .gridlist-wrapper {
  grid-template-columns: repeat(auto-fit, minmax(315px, 1fr)) !important;
  gap: 26px !important;
}
#subscriptionGrid .plan-card {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 430px !important;
  padding: 22px 22px 78px !important;
  border-radius: 28px !important;
  overflow: hidden !important;
  background:
    linear-gradient(rgba(255,255,255,.026) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.026) 1px, transparent 1px),
    radial-gradient(circle at 13% 10%, rgba(243,205,116,.12), transparent 14rem),
    radial-gradient(circle at 90% 100%, rgba(0,242,254,.12), transparent 15rem),
    linear-gradient(145deg, rgba(255,255,255,.072), rgba(18,31,58,.58)) !important;
  background-size: 20px 20px, 20px 20px, auto, auto, auto !important;
}
#subscriptionGrid .plan-card-body { flex: 1 1 auto !important; min-height: 0 !important; }
#subscriptionGrid .plan-card h3 { font-size: 1.34rem !important; font-weight: 900 !important; }
#subscriptionGrid .plan-card p { min-height: 0 !important; color: rgba(255,255,255,.66) !important; }
#subscriptionGrid .plan-feature-list { margin-top: 8px !important; gap: 9px !important; }
#subscriptionGrid .plan-feature-list span { color: rgba(255,255,255,.76) !important; line-height: 1.34 !important; }
#subscriptionGrid .plan-meta-row {
  margin-top: auto !important;
  padding-top: 14px !important;
  border-top: 1px solid rgba(255,255,255,.09) !important;
}
#subscriptionGrid .plan-actions {
  position: absolute !important;
  left: 18px !important;
  right: 18px !important;
  bottom: 16px !important;
  height: 48px !important;
  min-height: 48px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  opacity: 0 !important;
  transform: translateY(10px) !important;
  transition: opacity .22s ease, transform .22s ease !important;
  background: linear-gradient(180deg, rgba(9,18,38,0), rgba(9,18,38,.20)) !important;
}
#subscriptionGrid .plan-card:hover .plan-actions,
#subscriptionGrid .plan-card:focus-within .plan-actions {
  opacity: 1 !important;
  transform: translateY(0) !important;
}
#subscriptionGrid .plan-actions .action-btn {
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  min-height: 44px !important;
}

/* Promo cards: richer alignment and enough room for actions */
#promoGrid .promo-card {
  min-height: 340px !important;
  padding-bottom: 20px !important;
}
#promoGrid .promo-code-chip {
  display: inline-flex !important;
  align-items: center !important;
  gap: 9px !important;
  width: max-content !important;
  max-width: 100% !important;
  padding: 9px 14px !important;
  border-radius: 999px !important;
  color: #f3cd74 !important;
  background: rgba(243,205,116,.12) !important;
  border: 1px solid rgba(243,205,116,.22) !important;
  font-weight: 900 !important;
  overflow-wrap: anywhere !important;
}
#promoGrid .promo-card h3 {
  font-size: 1.65rem !important;
  color: #fff !important;
  margin-top: 4px !important;
}

/* Portal menu safety */
.gv-action-menu-portal {
  pointer-events: auto !important;
}
.gv-action-menu-portal .gv-action-menu-item {
  font-family: var(--gv-font-body) !important;
}

@media (hover: none) {
  #subscriptionGrid .plan-actions { opacity: 1 !important; transform: none !important; }
}
@media (max-width: 820px) {
  .grid-card { min-height: auto !important; }
  #subscriptionGrid .plan-card { min-height: auto !important; }
  #subscriptionGrid .plan-actions { opacity: 1 !important; transform: none !important; }
}

/* ==========================================================
   Final compact card/action cleanup v3
   - removes dropdown/tooltip residue
   - trims excess empty card space
   - keeps action affordances premium and responsive
   ========================================================== */
#nxGlobalTooltip {
  display: block !important;
  position: fixed !important;
  left: -9999px;
  top: -9999px;
  z-index: 2147483000 !important;
  max-width: 170px !important;
  padding: 6px 10px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  background: linear-gradient(135deg, rgba(7,18,38,.94), rgba(18,31,58,.92)) !important;
  color: rgba(255,255,255,.92) !important;
  font-family: var(--gv-font-body) !important;
  font-size: .72rem !important;
  font-weight: 850 !important;
  line-height: 1.1 !important;
  white-space: nowrap !important;
  box-shadow: 0 12px 28px rgba(0,0,0,.28) !important;
  opacity: 0 !important;
  visibility: hidden !important;
  transform: translateY(4px) scale(.96) !important;
  transition: opacity .14s ease, transform .14s ease, visibility .14s ease !important;
  pointer-events: none !important;
}
#nxGlobalTooltip.show {
  opacity: 1 !important;
  visibility: visible !important;
  transform: translateY(0) scale(1) !important;
}
#nxGlobalTooltip:empty { opacity: 0 !important; visibility: hidden !important; }

.gv-action-menu-portal {
  overflow: visible !important;
  contain: layout style !important;
  transform-origin: top center !important;
}
.gv-action-menu-portal:not(.is-open),
.gv-action-menu-popover:not(.is-open) {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
.gv-action-menu-portal .gv-action-menu-item {
  min-height: 42px !important;
  padding: 10px 12px !important;
  border-radius: 14px !important;
}

.gridlist-container {
  padding: clamp(16px, 1.6vw, 24px) !important;
}
.gridlist-wrapper {
  grid-template-columns: repeat(auto-fill, minmax(260px, 292px)) !important;
  justify-content: start !important;
  align-items: start !important;
  gap: 22px !important;
}
.grid-card {
  min-height: 0 !important;
  height: auto !important;
  max-width: 292px !important;
  padding: 16px !important;
  gap: 10px !important;
  border-radius: 26px !important;
}
.grid-card-header,
.grid-card-header .nx-image-wrapper,
.grid-card .nx-image-wrapper {
  width: 100% !important;
}
.grid-card-header .nx-image-wrapper,
.grid-card .nx-image-wrapper {
  height: 132px !important;
  min-height: 132px !important;
  max-height: 132px !important;
  aspect-ratio: auto !important;
}
.grid-card-header img,
.grid-card .nx-image-wrapper img,
.grid-card .nx-image-wrapper video {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
.grid-card-body {
  flex: 0 0 auto !important;
  gap: 8px !important;
  min-height: 0 !important;
}
.grid-card-body h3 {
  margin: 0 !important;
  min-height: 0 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}
.grid-card-body .description {
  min-height: 0 !important;
  margin: 0 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}
.grid-card .meta,
.grid-card-body .meta {
  margin-top: 2px !important;
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}
.grid-card-actions {
  position: relative !important;
  z-index: 8 !important;
  min-height: 48px !important;
  margin-top: 8px !important;
  padding-top: 12px !important;
  opacity: 1 !important;
  transform: none !important;
  justify-content: center !important;
  overflow: visible !important;
}
.grid-card-actions .action-btn,
.action-btn {
  width: 42px !important;
  height: 42px !important;
  min-width: 42px !important;
  min-height: 42px !important;
  box-shadow: 0 10px 24px rgba(0,0,0,.20) !important;
}
.grid-card-actions .action-btn:hover,
.action-btn:hover {
  transform: translateY(-2px) scale(1.025) !important;
}

/* Academic hierarchy cards with short content should not look empty. */
body .grid-card:has(.grid-card-body h3):not(.plan-card):not(.promo-card) {
  justify-content: flex-start !important;
}

#coursesGrid .grid-card,
#courseTermsGrid .grid-card,
#subjectsGrid .grid-card,
#chaptersGrid .grid-card,
#topicsGrid .grid-card,
#quizGrid .grid-card,
#flashcardDecksGrid .grid-card {
  min-height: 0 !important;
}

#coursesGrid .grid-card-body,
#courseTermsGrid .grid-card-body,
#subjectsGrid .grid-card-body,
#chaptersGrid .grid-card-body,
#topicsGrid .grid-card-body {
  padding-top: 8px !important;
}

/* Subscription cards: compact, balanced footer, no action overlap. */
#subscriptionGrid .gridlist-wrapper {
  grid-template-columns: repeat(auto-fit, minmax(300px, 360px)) !important;
  gap: 24px !important;
}
#subscriptionGrid .plan-card {
  max-width: 360px !important;
  min-height: 390px !important;
  padding: 20px !important;
  padding-bottom: 74px !important;
}
#subscriptionGrid .plan-card-body {
  gap: 10px !important;
}
#subscriptionGrid .plan-card p {
  min-height: 0 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}
#subscriptionGrid .plan-feature-list {
  gap: 7px !important;
}
#subscriptionGrid .plan-meta-row {
  margin-top: auto !important;
  gap: 8px !important;
  padding-top: 12px !important;
}
#subscriptionGrid .plan-actions,
#subscriptionGrid .grid-card-actions.plan-actions {
  left: 18px !important;
  right: 18px !important;
  bottom: 16px !important;
  height: 46px !important;
  min-height: 46px !important;
  padding-top: 0 !important;
  border-top: 0 !important;
  background: linear-gradient(180deg, rgba(7,18,38,0), rgba(7,18,38,.22)) !important;
}
#subscriptionGrid .plan-actions .action-btn {
  width: 42px !important;
  height: 42px !important;
}

/* Promo cards: dense and aligned instead of tall/plain. */
#promoGrid .gridlist-wrapper {
  grid-template-columns: repeat(auto-fill, minmax(265px, 310px)) !important;
}
#promoGrid .promo-card,
#promoGrid .grid-card {
  max-width: 310px !important;
  min-height: 300px !important;
  padding: 18px !important;
}
#promoGrid .promo-code-chip {
  max-width: 100% !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Prevent old hover tooltip and action dropdown residue from occupying card space. */
.grid-card .gv-action-menu,
.plan-card .gv-action-menu {
  position: relative !important;
  width: 42px !important;
  height: 42px !important;
  flex: 0 0 42px !important;
}
.grid-card .gv-action-menu-popover,
.plan-card .gv-action-menu-popover {
  display: none !important;
}

@media (max-width: 720px) {
  .gridlist-wrapper,
  #subscriptionGrid .gridlist-wrapper,
  #promoGrid .gridlist-wrapper {
    grid-template-columns: 1fr !important;
  }
  .grid-card,
  #subscriptionGrid .plan-card,
  #promoGrid .promo-card,
  #promoGrid .grid-card {
    max-width: none !important;
  }
}

/* Final interaction polish: card actions stay hidden until hover/focus/tap.
   Desktop: hover/focus reveals. Touch/mobile: first tap on a card reveals actions. */
.grid-card .grid-card-actions,
.grid-card .plan-actions,
.plan-card .grid-card-actions,
.plan-card .plan-actions {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(10px) scale(.985) !important;
  transition: opacity .22s ease, visibility .22s ease, transform .22s ease !important;
}

.grid-card:hover .grid-card-actions,
.grid-card:focus-within .grid-card-actions,
.grid-card.gv-actions-visible .grid-card-actions,
.grid-card:hover .plan-actions,
.grid-card:focus-within .plan-actions,
.grid-card.gv-actions-visible .plan-actions,
.plan-card:hover .grid-card-actions,
.plan-card:focus-within .grid-card-actions,
.plan-card.gv-actions-visible .grid-card-actions,
.plan-card:hover .plan-actions,
.plan-card:focus-within .plan-actions,
.plan-card.gv-actions-visible .plan-actions {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transform: translateY(0) scale(1) !important;
}

/* Keep menus/actions visible while the body-level action popover is open. */
.grid-card.gv-action-menu-owner .grid-card-actions,
.grid-card.gv-action-menu-owner .plan-actions,
.plan-card.gv-action-menu-owner .grid-card-actions,
.plan-card.gv-action-menu-owner .plan-actions {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transform: translateY(0) scale(1) !important;
}

/* Touch devices: no hover ghost states; reveal is controlled by JS tap class. */
@media (hover: none) and (pointer: coarse) {
  .grid-card .grid-card-actions,
  .grid-card .plan-actions,
  .plan-card .grid-card-actions,
  .plan-card .plan-actions {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
  .grid-card.gv-actions-visible .grid-card-actions,
  .grid-card.gv-actions-visible .plan-actions,
  .plan-card.gv-actions-visible .grid-card-actions,
  .plan-card.gv-actions-visible .plan-actions {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }
}

/* Compact action hover labels so they feel like the old admin behavior without
   leaving large tooltip gaps or ghost bars. */
.grid-card-actions .action-btn[data-tooltip]::after,
.grid-card-actions .action-btn[aria-label]::after,
.plan-actions .action-btn[data-tooltip]::after,
.plan-actions .action-btn[aria-label]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  transform: translate(-50%, 4px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  white-space: nowrap;
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  border-radius: 10px;
  padding: 7px 10px;
  background: linear-gradient(135deg, rgba(8, 20, 42, .96), rgba(18, 31, 64, .96));
  border: 1px solid rgba(79, 172, 254, .22);
  color: #ffffff;
  font-size: .76rem;
  font-weight: 800;
  box-shadow: 0 14px 32px rgba(0,0,0,.30);
  z-index: 50;
  transition: opacity .18s ease, visibility .18s ease, transform .18s ease;
}
.grid-card-actions .action-btn[data-tooltip]:hover::after,
.grid-card-actions .action-btn[data-tooltip]:focus-visible::after,
.plan-actions .action-btn[data-tooltip]:hover::after,
.plan-actions .action-btn[data-tooltip]:focus-visible::after {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}

/* Action buttons are positioned elements so the compact label can anchor cleanly. */
.grid-card-actions .action-btn,
.plan-actions .action-btn {
  position: relative !important;
}

/* ==========================================================
   FINAL GYAANVERSE ADMIN CONSISTENCY PATCH
   - Poppins everywhere without breaking Material Icons
   - button text/color consistency
   - grid theme layout alignment for topbar/sidebar/footer
   - bulk action button alignment
   ========================================================== */
:root {
  --gv-font-body: 'Poppins', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --gv-font-display: 'Poppins', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --gv-ink: #ffffff;
  --gv-muted: rgba(255,255,255,.68);
  --gv-muted-strong: rgba(255,255,255,.82);
  --gv-panel: rgba(25, 31, 72, .72);
  --gv-panel-strong: rgba(25, 31, 72, .88);
  --gv-cyan-1: #4facfe;
  --gv-cyan-2: #00f2fe;
  --gv-gold-1: #f49b36;
  --gv-gold-2: #f3cd74;
}

html,
body,
button,
input,
textarea,
select,
.nx-layout,
.nx-main-content,
.nx-container,
.nx-card-background,
.nx-card-premium,
.gridlist-container,
.grid-card,
.nx-dialog,
.nx-modal,
.dialog-box,
.nx-btn,
.nx-toast,
.profile-menu,
.sidebar-item,
.settings-card,
.bulk-upload-dialog,
.quiz-bulk-upload,
.flashcard-bulk-upload {
  font-family: var(--gv-font-body) !important;
}

.material-icons,
.material-icons-outlined,
.material-icons-round,
.material-icons-sharp,
.material-icons-two-tone {
  font-family: 'Material Icons Outlined' !important;
  font-weight: normal !important;
  font-style: normal !important;
  line-height: 1 !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
  font-feature-settings: 'liga';
}

body,
.nx-main-content,
.gridlist-container,
.grid-card,
.nx-dialog,
.nx-modal,
.dialog-box {
  color: var(--gv-ink) !important;
}

p,
.grid-card p,
.settings-card p,
.nx-muted,
.card-subtitle,
.grid-card .meta,
.grid-card .date,
.control-group label,
label,
small,
.helper-text {
  color: var(--gv-muted) !important;
}

h1,h2,h3,h4,h5,h6,
.nx-header h1,
.grid-card h3,
.grid-card-title,
.settings-card h2,
.dialog-title,
.nx-dialog-title {
  font-family: var(--gv-font-display) !important;
  color: var(--gv-ink) !important;
  font-weight: 800 !important;
}

/* Layout surfaces aligned with website grid theme */
body.gv-theme-grid .nx-topbar,
body.gv-theme-grid .nx-sidebar,
body.gv-theme-grid .nx-footer {
  background:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px),
    radial-gradient(circle at 100% 0%, rgba(0,242,254,.10), transparent 20rem),
    rgba(10, 19, 43, .82) !important;
  background-size: 28px 28px, 28px 28px, auto, auto !important;
  border-color: rgba(255,255,255,.10) !important;
  box-shadow: 0 10px 34px rgba(0,0,0,.20) !important;
  backdrop-filter: blur(18px) saturate(135%) !important;
  -webkit-backdrop-filter: blur(18px) saturate(135%) !important;
}

body.gv-theme-grid .nx-sidebar {
  border-right: 1px solid rgba(79,172,254,.14) !important;
}

body.gv-theme-grid .nx-footer {
  border-top: 1px solid rgba(79,172,254,.14) !important;
}

body.gv-theme-grid .sidebar-header,
body.gv-theme-grid .sidebar-footer {
  border-color: rgba(255,255,255,.08) !important;
}

body.gv-theme-grid .sidebar-item {
  color: rgba(255,255,255,.82) !important;
  font-weight: 600 !important;
  letter-spacing: -.01em;
}

body.gv-theme-grid .sidebar-item.active {
  color: #fff !important;
  background: linear-gradient(135deg, rgba(79,172,254,.96), rgba(0,242,254,.96)) !important;
  box-shadow: 0 14px 34px rgba(0,242,254,.22) !important;
}

body.gv-theme-grid .brand-title {
  font-family: var(--gv-font-display) !important;
  font-weight: 800 !important;
}

/* Enterprise button normalization: never black text on admin actions */
.nx-btn,
.nx-btn-add,
.nx-btn-primary,
.nx-btn-secondary,
.nx-btn-ghost,
.grid-add-btn,
.add-btn,
button[type='submit'],
.settings-theme-btn,
.gridlist-actions .nx-btn,
.flashcard-toolbar-actions .nx-btn,
.quiz-toolbar-actions .nx-btn,
.bulk-upload-dialog .nx-btn,
.quiz-bulk-upload .nx-btn,
.flashcard-bulk-upload .nx-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 9px !important;
  min-height: 44px !important;
  padding: 11px 22px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(255,255,255,.13) !important;
  font-family: var(--gv-font-body) !important;
  font-size: 14px !important;
  font-weight: 800 !important;
  letter-spacing: .005em !important;
  line-height: 1 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  text-shadow: 0 1px 8px rgba(0,0,0,.18) !important;
  white-space: nowrap !important;
  cursor: pointer;
  transition: transform .22s ease, box-shadow .22s ease, background .22s ease, border-color .22s ease !important;
}

.nx-btn span,
.nx-btn-add span,
.nx-btn-primary span,
.nx-btn-secondary span,
.nx-btn-ghost span,
.grid-add-btn span,
.add-btn span,
button[type='submit'] span,
.settings-theme-btn span {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}

.nx-btn .material-icons-outlined,
.nx-btn-add .material-icons-outlined,
.nx-btn-primary .material-icons-outlined,
.nx-btn-secondary .material-icons-outlined,
.nx-btn-ghost .material-icons-outlined,
.grid-add-btn .material-icons-outlined,
.add-btn .material-icons-outlined,
button[type='submit'] .material-icons-outlined,
.settings-theme-btn .material-icons-outlined {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
  font-size: 19px !important;
}

.nx-btn-primary,
.nx-btn-add,
.grid-add-btn,
.add-btn,
button[type='submit'],
.gridlist-actions .nx-btn-primary,
.flashcard-toolbar-actions .nx-btn-primary,
.quiz-toolbar-actions .nx-btn-primary {
  background: linear-gradient(135deg, #2699ff 0%, #00f2fe 100%) !important;
  box-shadow: 0 18px 38px rgba(0,242,254,.23), inset 0 1px 0 rgba(255,255,255,.20) !important;
}

.nx-btn-secondary,
.nx-btn-ghost,
.gridlist-actions .nx-btn-secondary,
.gridlist-actions .nx-btn-ghost,
.flashcard-toolbar-actions .nx-btn-ghost,
.quiz-toolbar-actions .nx-btn-secondary {
  background: linear-gradient(135deg, rgba(255,255,255,.16), rgba(255,255,255,.06)) !important;
  box-shadow: 0 14px 30px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.13) !important;
}

.nx-btn:hover,
.nx-btn-add:hover,
.nx-btn-primary:hover,
.nx-btn-secondary:hover,
.nx-btn-ghost:hover,
.grid-add-btn:hover,
.add-btn:hover,
button[type='submit']:hover,
.settings-theme-btn:hover {
  transform: translateY(-2px) !important;
  border-color: rgba(0,242,254,.42) !important;
  box-shadow: 0 20px 46px rgba(0,242,254,.24), inset 0 1px 0 rgba(255,255,255,.22) !important;
}

.nx-btn:disabled,
button:disabled {
  opacity: .55 !important;
  cursor: not-allowed !important;
  transform: none !important;
}

/* Top-right toolbar buttons: consistent alignment */
.gridlist-actions,
.flashcard-toolbar-actions,
.quiz-toolbar-actions {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 14px !important;
  flex-wrap: wrap !important;
  margin: 0 0 18px !important;
}

/* Settings buttons/cards aligned with grid theme */
.settings-card {
  background:
    radial-gradient(circle at 0% 0%, rgba(79,172,254,.11), transparent 16rem),
    linear-gradient(135deg, rgba(255,255,255,.070), rgba(9,22,44,.40)) !important;
  color: #fff !important;
  border-color: rgba(255,255,255,.11) !important;
}
.settings-card.is-active {
  border-color: rgba(245,184,75,.58) !important;
  background:
    radial-gradient(circle at 100% 0%, rgba(245,184,75,.13), transparent 16rem),
    linear-gradient(135deg, rgba(255,255,255,.075), rgba(9,22,44,.44)) !important;
}
.settings-card.is-active .settings-theme-btn {
  background: linear-gradient(135deg, var(--gv-gold-1), var(--gv-gold-2)) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

/* Bulk upload workbook dialogs */
.quiz-bulk-upload .bulk-workflow-card,
.flashcard-bulk-upload .bulk-workflow-card,
.bulk-upload-dialog .bulk-workflow-card,
.quiz-bulk-upload .bulk-upload-panel,
.flashcard-bulk-upload .bulk-upload-panel,
.bulk-upload-dialog .bulk-upload-panel {
  color: #fff !important;
}
.quiz-bulk-upload .bulk-workflow-card p,
.flashcard-bulk-upload .bulk-workflow-card p,
.bulk-upload-dialog .bulk-workflow-card p,
.quiz-bulk-upload .bulk-upload-panel p,
.flashcard-bulk-upload .bulk-upload-panel p,
.bulk-upload-dialog .bulk-upload-panel p {
  color: rgba(255,255,255,.72) !important;
}

@media (max-width: 900px) {
  .gridlist-actions,
  .flashcard-toolbar-actions,
  .quiz-toolbar-actions {
    justify-content: flex-start !important;
  }
  .gridlist-actions .nx-btn,
  .flashcard-toolbar-actions .nx-btn,
  .quiz-toolbar-actions .nx-btn {
    min-width: 0 !important;
    flex: 1 1 auto;
  }
}

@media (max-width: 560px) {
  .gridlist-actions,
  .flashcard-toolbar-actions,
  .quiz-toolbar-actions {
    display: grid !important;
    grid-template-columns: 1fr !important;
  }
  .nx-btn,
  .nx-btn-add,
  .nx-btn-primary,
  .nx-btn-secondary,
  .nx-btn-ghost,
  .grid-add-btn,
  .add-btn {
    width: 100% !important;
  }
}

/* ==========================================================
   FINAL DEPLOY POLISH — readable buttons, lighter typography
   ========================================================== */
html, body, .nx-main-content, .nx-container, .nx-sidebar, .nx-topbar, .nx-footer,
.nx-dialog, .nx-modal, .dialog-box, input, select, textarea, button {
  font-family: 'Poppins', 'Helvetica Neue', Arial, sans-serif !important;
}
.material-icons,
.material-icons-outlined {
  font-family: 'Material Icons Outlined' !important;
  font-weight: normal !important;
}
body {
  font-weight: 400 !important;
  color: rgba(255,255,255,.86) !important;
}
p, .text-muted, .grid-card p, .settings-card p, .dialog-body p {
  font-weight: 400 !important;
  color: rgba(255,255,255,.68) !important;
  line-height: 1.62 !important;
}
label, .control-group label {
  font-weight: 600 !important;
  color: rgba(255,255,255,.76) !important;
}
.nx-btn,
.nx-btn-primary,
.nx-btn-add,
button[type='submit'],
.btn-primary,
.add-btn,
.bulk-upload-btn,
.quiz-bulk-btn,
.flashcard-bulk-btn {
  border-radius: 999px !important;
  font-weight: 800 !important;
  letter-spacing: .01em !important;
  color: #ffffff !important;
  text-shadow: 0 1px 1px rgba(0,0,0,.24) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  box-shadow: 0 12px 28px rgba(0, 194, 255, .18) !important;
}
.nx-btn-primary,
.nx-btn-add,
button[type='submit'],
.btn-primary,
.add-btn {
  background: linear-gradient(135deg, #1fb6ff 0%, #15d4ee 100%) !important;
}
.nx-btn-primary:hover,
.nx-btn-add:hover,
button[type='submit']:hover,
.btn-primary:hover,
.add-btn:hover {
  background: linear-gradient(135deg, #35c3ff 0%, #24e4f4 100%) !important;
  color: #ffffff !important;
  transform: translateY(-1px) !important;
}
.nx-btn-secondary,
.btn-secondary,
.cancel-btn,
button[data-action='cancel'],
button[type='button'].cancel {
  background: rgba(255,255,255,.94) !important;
  color: #0b1224 !important;
  text-shadow: none !important;
  border: 1px solid rgba(255,255,255,.42) !important;
  box-shadow: 0 10px 24px rgba(0,0,0,.16) !important;
}
.nx-btn-secondary:hover,
.btn-secondary:hover,
.cancel-btn:hover,
button[data-action='cancel']:hover,
button[type='button'].cancel:hover {
  background: #ffffff !important;
  color: #0b1224 !important;
}
.nx-btn-ghost,
.bulk-upload-btn,
.quiz-bulk-btn,
.flashcard-bulk-btn {
  background: rgba(255,255,255,.11) !important;
  color: #ffffff !important;
  border-color: rgba(255,255,255,.22) !important;
}
.nx-btn-ghost:hover,
.bulk-upload-btn:hover,
.quiz-bulk-btn:hover,
.flashcard-bulk-btn:hover {
  background: rgba(255,255,255,.18) !important;
  color: #ffffff !important;
}
body.gv-theme-grid .nx-sidebar,
body.gv-theme-grid .nx-topbar,
body.gv-theme-grid .nx-footer {
  background: rgba(22, 28, 64, .82) !important;
  border-color: rgba(255,255,255,.08) !important;
  backdrop-filter: blur(18px) !important;
}
body.gv-theme-grid .nx-sidebar .nav-link.active,
body.gv-theme-grid .nx-sidebar .active {
  background: linear-gradient(135deg, #1fb6ff, #15d4ee) !important;
  color: #ffffff !important;
  box-shadow: 0 14px 30px rgba(21, 212, 238, .24) !important;
}

/* ==========================================================
   FINAL PRODUCTION UI FIXES — buttons + native file inputs
   ========================================================== */
:root {
  --gv-btn-primary-a: #27b8ff;
  --gv-btn-primary-b: #19d9ef;
  --gv-btn-text: #ffffff;
  --gv-btn-dark-text: #071226;
  --gv-btn-muted-a: rgba(255,255,255,.96);
  --gv-btn-muted-b: rgba(235,244,255,.92);
  --gv-file-border: rgba(79,172,254,.74);
  --gv-file-bg: rgba(14,26,62,.38);
}

/* Do not allow earlier glow/text-fill rules to make secondary buttons unreadable */
.nx-dialog .dialog-actions .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger),
.nx-dialog .dialog-actions .btn:not(.nx-btn-primary):not(.nx-btn-danger),
.nx-dialog .nx-dialog-footer .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger),
.nx-dialog .nx-modal-footer .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger),
.nx-modal-footer .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger),
.dialog-actions .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger),
.dialog-actions .btn:not(.nx-btn-primary):not(.nx-btn-danger),
.nx-btn.nx-btn-secondary,
.nx-btn.cancel-btn,
.nx-btn[data-role='cancel'],
button.cancel-btn,
button[data-action='cancel'],
button[type='button'].cancel {
  background: linear-gradient(135deg, var(--gv-btn-muted-a), var(--gv-btn-muted-b)) !important;
  color: var(--gv-btn-dark-text) !important;
  -webkit-text-fill-color: var(--gv-btn-dark-text) !important;
  text-shadow: none !important;
  border: 1px solid rgba(255,255,255,.72) !important;
  box-shadow: 0 14px 30px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.74) !important;
  font-weight: 800 !important;
}

.nx-dialog .dialog-actions .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger):hover,
.nx-dialog .dialog-actions .btn:not(.nx-btn-primary):not(.nx-btn-danger):hover,
.dialog-actions .nx-btn:not(.nx-btn-primary):not(.nx-btn-danger):hover,
.nx-btn.nx-btn-secondary:hover,
.nx-btn.cancel-btn:hover,
button.cancel-btn:hover,
button[data-action='cancel']:hover,
button[type='button'].cancel:hover {
  background: #ffffff !important;
  color: var(--gv-btn-dark-text) !important;
  -webkit-text-fill-color: var(--gv-btn-dark-text) !important;
  border-color: rgba(255,255,255,.9) !important;
  transform: translateY(-1px) !important;
}

.nx-dialog .dialog-actions .nx-btn-primary,
.nx-dialog .dialog-actions button[type='submit'],
.nx-btn.nx-btn-primary,
button[type='submit'],
.add-btn,
.grid-add-btn,
.nx-btn-add {
  background: linear-gradient(135deg, var(--gv-btn-primary-a), var(--gv-btn-primary-b)) !important;
  color: var(--gv-btn-text) !important;
  -webkit-text-fill-color: var(--gv-btn-text) !important;
  text-shadow: 0 1px 1px rgba(0,0,0,.24) !important;
  box-shadow: 0 14px 32px rgba(0,210,255,.22), inset 0 1px 0 rgba(255,255,255,.28) !important;
}

.nx-dialog .dialog-actions .nx-btn-danger,
.nx-btn.nx-btn-danger,
button.nx-btn-danger {
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  text-shadow: 0 1px 1px rgba(0,0,0,.22) !important;
}

.nx-btn .material-icons-outlined,
.nx-btn .material-icons,
button .material-icons-outlined,
button .material-icons {
  color: currentColor !important;
  -webkit-text-fill-color: currentColor !important;
}

/* Premium native file inputs for legacy pages that still use <input type=file> */
.nx-dialog input[type='file'],
.dialog-body input[type='file'],
.nx-form-group input[type='file'],
.form-group input[type='file'],
input[type='file'].nx-input {
  width: 100% !important;
  min-height: 54px !important;
  padding: 8px 12px !important;
  border-radius: 14px !important;
  border: 1px solid var(--gv-file-border) !important;
  background:
    radial-gradient(circle at 100% 0%, rgba(0,242,254,.10), transparent 12rem),
    linear-gradient(135deg, rgba(255,255,255,.07), var(--gv-file-bg)) !important;
  color: rgba(255,255,255,.82) !important;
  -webkit-text-fill-color: rgba(255,255,255,.82) !important;
  font-family: var(--gv-font-body, 'Poppins', sans-serif) !important;
  font-weight: 600 !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 10px 24px rgba(0,0,0,.12) !important;
  cursor: pointer !important;
}

.nx-dialog input[type='file']::file-selector-button,
.dialog-body input[type='file']::file-selector-button,
.nx-form-group input[type='file']::file-selector-button,
.form-group input[type='file']::file-selector-button,
input[type='file'].nx-input::file-selector-button {
  margin-right: 14px !important;
  padding: 10px 16px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: linear-gradient(135deg, var(--gv-btn-primary-a), var(--gv-btn-primary-b)) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  font-family: var(--gv-font-body, 'Poppins', sans-serif) !important;
  font-weight: 800 !important;
  cursor: pointer !important;
  box-shadow: 0 10px 24px rgba(0,210,255,.20) !important;
}

.nx-dialog input[type='file']:hover,
.dialog-body input[type='file']:hover,
.nx-form-group input[type='file']:hover,
.form-group input[type='file']:hover {
  border-color: rgba(0,242,254,.92) !important;
  background:
    radial-gradient(circle at 100% 0%, rgba(0,242,254,.14), transparent 12rem),
    linear-gradient(135deg, rgba(255,255,255,.09), rgba(14,26,62,.45)) !important;
}

/* Ensure old custom picker wrappers match the theme */
.custom-image-input,
.custom-audio-input,
.custom-video-input,
.custom-doc-input,
.file-upload-box,
.nx-upload-zone,
.image-upload-zone,
.audio-upload-zone {
  border-color: rgba(79,172,254,.70) !important;
  background:
    radial-gradient(circle at 100% 0%, rgba(0,242,254,.10), transparent 12rem),
    linear-gradient(135deg, rgba(255,255,255,.055), rgba(12,24,58,.35)) !important;
  color: rgba(255,255,255,.82) !important;
}

.custom-image-input:hover,
.custom-audio-input:hover,
.custom-video-input:hover,
.custom-doc-input:hover,
.file-upload-box:hover,
.nx-upload-zone:hover,
.image-upload-zone:hover,
.audio-upload-zone:hover {
  border-color: rgba(0,242,254,.95) !important;
  box-shadow: 0 16px 36px rgba(0,210,255,.12) !important;
}

/* Dialog footer remains readable on every modal size */
.nx-dialog .dialog-actions,
.nx-dialog-footer,
.nx-modal-footer {
  background: linear-gradient(180deg, rgba(37,42,91,.74), rgba(20,28,72,.96)) !important;
  backdrop-filter: blur(14px) !important;
}


/* ==========================================================
   FINAL BRAND + GRID SURFACE ALIGNMENT PATCH
   - Makes grid theme continuous behind sidebar/topbar/footer
   - Removes old purple surface mismatch in grid mode
   - Standardizes GyaanVerse brand text and shell contrast
   ========================================================== */
:root {
  --gv-shell-bg: rgba(7, 18, 38, .66);
  --gv-shell-bg-strong: rgba(7, 18, 38, .76);
  --gv-shell-border: rgba(79, 172, 254, .14);
  --gv-shell-border-soft: rgba(255, 255, 255, .08);
  --gv-shell-shadow: 0 18px 46px rgba(0, 0, 0, .22);
}

body.gv-theme-grid,
body.gv-theme-grid .nx-layout,
body.gv-theme-grid .nx-main-wrapper,
body.gv-theme-grid .nx-main-content,
body.gv-theme-grid .nx-container {
  background-color: transparent !important;
}

body.gv-theme-grid .nx-main-wrapper {
  position: relative !important;
  z-index: 1 !important;
}

body.gv-theme-grid .nx-sidebar,
body.gv-theme-grid .nx-topbar,
body.gv-theme-grid .nx-footer {
  background: linear-gradient(135deg, var(--gv-shell-bg-strong), var(--gv-shell-bg)) !important;
  background-image: none !important;
  border-color: var(--gv-shell-border) !important;
  box-shadow: var(--gv-shell-shadow) !important;
  backdrop-filter: blur(20px) saturate(145%) !important;
  -webkit-backdrop-filter: blur(20px) saturate(145%) !important;
}

body.gv-theme-grid .nx-topbar {
  border-bottom: 1px solid var(--gv-shell-border) !important;
}

body.gv-theme-grid .nx-sidebar {
  border-right: 1px solid var(--gv-shell-border) !important;
}

body.gv-theme-grid .nx-footer {
  border-top: 1px solid var(--gv-shell-border) !important;
}

body.gv-theme-grid .sidebar-header,
body.gv-theme-grid .sidebar-footer,
body.gv-theme-grid .topbar-left,
body.gv-theme-grid .footer-content {
  background: transparent !important;
  border-color: var(--gv-shell-border-soft) !important;
}

body.gv-theme-grid .brand-title,
body.gv-theme-grid .sidebar-title,
body.gv-theme-grid .footer-text,
body.gv-theme-grid .user-greeting {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  text-shadow: none !important;
}

body.gv-theme-grid .brand-title,
body.gv-theme-grid .sidebar-title {
  font-family: var(--gv-font-display) !important;
  font-weight: 800 !important;
  letter-spacing: -.025em !important;
}

body.gv-theme-grid .brand-title {
  color: #27d6ff !important;
  -webkit-text-fill-color: #27d6ff !important;
}

body.gv-theme-grid .sidebar-logo-container,
body.gv-theme-grid .avatar {
  background: rgba(255,255,255,.055) !important;
  border-color: rgba(79,172,254,.20) !important;
  box-shadow: 0 12px 30px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.08) !important;
}

body.gv-theme-grid .sidebar-item:not(.active) {
  background: transparent !important;
  color: rgba(255,255,255,.80) !important;
}

body.gv-theme-grid .sidebar-item:not(.active):hover,
body.gv-theme-grid .profile-menu a:hover {
  background: rgba(255,255,255,.075) !important;
  color: #ffffff !important;
}

body.gv-theme-grid .sidebar-item.active,
body.gv-theme-grid .sidebar-menu .sidebar-item.active {
  background: linear-gradient(135deg, #37b7ff, #17d8ee) !important;
  color: #ffffff !important;
  box-shadow: 0 14px 34px rgba(0, 242, 254, .22) !important;
}

body.gv-theme-grid .menu-toggle {
  background: rgba(255,255,255,.07) !important;
  border: 1px solid rgba(255,255,255,.13) !important;
  color: #ffffff !important;
}

body.gv-theme-grid .menu-toggle:hover {
  background: rgba(79,172,254,.18) !important;
  border-color: rgba(79,172,254,.35) !important;
}

body.gv-theme-grid .profile-menu {
  background: rgba(7, 18, 38, .94) !important;
  border: 1px solid rgba(79,172,254,.22) !important;
  box-shadow: 0 22px 58px rgba(0,0,0,.34) !important;
}

body.gv-theme-grid .version,
body.gv-theme-grid .footer-content .version {
  color: #ff6b88 !important;
  -webkit-text-fill-color: #ff6b88 !important;
}

/* Keep the default star theme untouched except for brand naming readability. */
.brand-title,
.sidebar-title {
  font-family: var(--gv-font-display) !important;
  font-weight: 800 !important;
}

/* Final production marker: safe after GitHub/server deploy. */
