/* CodeZyne — EduBondhu-identical shell, purple brand */
:root {
  --cz-primary: #7C3AED;
  --cz-primary-dark: #6D28D9;
  --cz-primary-soft: #A78BFA;
  --cz-primary-pastel: #DDD6FE;
  --cz-primary-tint: #F5F3FF;
  --cz-header: #8B5CF6;
  --cz-bg: #F3F4F6;
  --cz-card: #FFFFFF;
  --cz-border: #E5E7EB;
  --cz-text: #101828;
  --cz-muted: #6A7282;
}

/* ===== Animations (from EduBondhu CSS) ===== */
@keyframes page-enter {
  0% { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes page-enter-forward {
  0% { opacity: 0; transform: translateX(16px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes page-enter-back {
  0% { opacity: 0; transform: translateX(-16px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes fade-in {
  0% { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes splash-breathe {
  0% { opacity: 0; transform: scale(.85); }
  40% { opacity: 1; transform: scale(1.04); }
  70% { transform: scale(.98); }
  to { transform: scale(1.03); }
}
@keyframes toast-in {
  0% { opacity: 0; transform: translateY(-10px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes toast-timer {
  0% { transform: scaleX(1); }
  to { transform: scaleX(0); }
}
@keyframes toast-badge-pop {
  0% { opacity: 0; transform: scale(.4); }
  60% { opacity: 1; transform: scale(1.08); }
  to { opacity: 1; transform: scale(1); }
}
@keyframes top-progress-advance {
  0% { width: 0%; }
  to { width: 78%; }
}
@keyframes top-progress-finish {
  0% { opacity: 1; width: 78%; }
  80% { opacity: 1; width: 100%; }
  to { opacity: 0; width: 100%; }
}
@supports (view-transition-name: none) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation-duration: .28s;
  }
}
@keyframes pulse-soft {
  0%, 100% { opacity: 1; }
  50% { opacity: .55; }
}

.animate-page-enter { animation: .32s ease-out page-enter; }
.cz-page-forward { animation: .34s cubic-bezier(.22,1,.36,1) page-enter-forward; }
.cz-page-back { animation: .34s cubic-bezier(.22,1,.36,1) page-enter-back; }
.animate-fade-in { animation: .18s ease-out fade-in; }
.animate-splash-breathe { animation: 1.1s cubic-bezier(.34,1.56,.64,1) forwards splash-breathe; }
.animate-toast-in { animation: .25s cubic-bezier(.16,1,.3,1) toast-in; }
.cz-stagger > * { animation: .32s ease-out page-enter both; }
.cz-stagger > *:nth-child(1) { animation-delay: .02s; }
.cz-stagger > *:nth-child(2) { animation-delay: .06s; }
.cz-stagger > *:nth-child(3) { animation-delay: .10s; }
.cz-stagger > *:nth-child(4) { animation-delay: .14s; }
.cz-stagger > *:nth-child(5) { animation-delay: .18s; }
.cz-stagger > *:nth-child(6) { animation-delay: .22s; }

/* Top progress bar (page load) */
#czTopProgress {
  position: fixed; top: 0; left: 0; height: 3px; z-index: 9999;
  background: linear-gradient(90deg, #A855F7, #7C3AED);
  width: 0; pointer-events: none;
}
#czTopProgress.loading { animation: .6s ease-out forwards top-progress-advance; }
#czTopProgress.done { animation: .35s ease-out forwards top-progress-finish; }

/* ===== Legacy dark → light remap (all pages) ===== */

/* Page / card surfaces */
[class*="0B131F"], [class*="0E1726"],
[class*="bg-slate-900"], [class*="bg-slate-950"],
[class*="bg-navy"] {
  background-color: var(--cz-bg) !important;
}
[class*="111C2D"], [class*="16233B"], [class*="16253D"],
[class*="bg-[#FFFFFF]"] {
  background-color: var(--cz-card) !important;
  border-color: var(--cz-border) !important;
}

/* Dark chips / secondary buttons / badges → soft purple */
main [class*="bg-slate-800"],
main [class*="bg-slate-700"],
main [class*="bg-sky-950"],
main [class*="bg-emerald-950"],
main [class*="bg-amber-950"],
main [class*="bg-rose-950"],
main [class*="bg-indigo-950"],
main [class*="bg-violet-950"],
main [class*="bg-[#0D243E]"],
main [class*="bg-[#0B131F]"],
main [class*="bg-[#111C2D]"],
main [class*="bg-[#1D2D46]"],
main [class*="bg-[#16233B]"],
main [class*="bg-[#233B61]"],
main [class*="bg-[#2A3F61]"],
main [class*="bg-[#2A4064]"] {
  background-color: #F5F3FF !important;
  border-color: #E9D5FF !important;
  color: #5B21B6 !important;
}

/* Soft row hover */
main [class*="hover:bg-slate-800"]:hover,
main tr[class*="hover:bg-slate"]:hover {
  background-color: #F5F3FF !important;
}

/* Borders that were dark navy */
[class*="1D2D46"], [class*="233B61"], [class*="2A3F61"], [class*="2A4064"],
[class*="border-[#16416D]"], [class*="border-slate-700"], [class*="border-slate-800"],
[class*="border-sky-800"], [class*="border-emerald-800"] {
  border-color: #E9D5FF !important;
}

/*
 * Many blades still use text-white from the old dark theme.
 * Turn those into readable dark text on light cards —
 * BUT keep white text on real colored action surfaces.
 */
main .text-white {
  color: var(--cz-text) !important;
}

/* Soft muted leftovers */
main .text-slate-200, main .text-slate-300 { color: #374151 !important; }
main .text-slate-400, main .text-slate-500 { color: var(--cz-muted) !important; }
main .text-sky-400, .text-brand-accent { color: var(--cz-primary) !important; }

/* Primary / solid action surfaces → always white text */
main .btn-primary,
main .btn-primary *,
main a.btn-primary,
main button.btn-primary,
main [class*="bg-[#7C3AED]"],
main [class*="bg-[#7C3AED]"] *,
main [class*="bg-[#6D28D9]"],
main [class*="bg-[#6D28D9]"] *,
main [class*="bg-[#8B5CF6]"],
main [class*="bg-[#8B5CF6]"] *,
main [class*="bg-[#A855F7]"],
main [class*="bg-[#A855F7]"] *,
main [class*="bg-violet-500"],
main [class*="bg-violet-500"] *,
main [class*="bg-violet-600"],
main [class*="bg-violet-600"] *,
main [class*="bg-violet-700"],
main [class*="bg-violet-700"] *,
main [class*="bg-fuchsia-500"],
main [class*="bg-fuchsia-500"] *,
main [class*="bg-fuchsia-600"],
main [class*="bg-fuchsia-600"] *,
main [class*="bg-emerald-500"],
main [class*="bg-emerald-500"] *,
main [class*="bg-emerald-600"],
main [class*="bg-emerald-600"] *,
main [class*="bg-rose-500"],
main [class*="bg-rose-500"] *,
main [class*="bg-rose-600"],
main [class*="bg-rose-600"] *,
main [class*="bg-sky-500"],
main [class*="bg-sky-500"] *,
main [class*="bg-sky-600"],
main [class*="bg-sky-600"] *,
main [class*="bg-indigo-500"],
main [class*="bg-indigo-500"] *,
main [class*="bg-indigo-600"],
main [class*="bg-indigo-600"] *,
main [class*="from-sky-"],
main [class*="from-sky-"] *,
main [class*="from-emerald-"],
main [class*="from-emerald-"] *,
main [class*="from-violet-"],
main [class*="from-violet-"] *,
main [class*="from-purple-"],
main [class*="from-purple-"] *,
main [class*="from-fuchsia-"],
main [class*="from-fuchsia-"] *,
main [class*="from-amber-"],
main [class*="from-amber-"] *,
main .badge-success,
main .badge-danger,
.cz-nav-active, .cz-nav-active *,
.cz-rail-active, .cz-rail-active * {
  color: #fff !important;
}

/* Normal cutout sidebar active must stay dark text on light cutout */
#czNormalSidebar .cz-ns-item.is-active,
#czNormalSidebar .cz-ns-item.is-active *,
#czNormalSidebar .cz-ns-item.is-active.cz-nav-active,
#czNormalSidebar .cz-ns-item.is-active.cz-nav-active * {
  color: #322A5C !important;
}

/* Soft purple chips keep purple text (after dark→tint remap) */
main [class*="bg-slate-800"],
main [class*="bg-slate-700"],
main [class*="bg-sky-950"],
main [class*="bg-emerald-950"],
main [class*="bg-[#0D243E]"],
main [class*="bg-[#0D243E]"] * {
  color: #5B21B6 !important;
}

/* On remapped light chips, force readable purple — never purple-on-navy leftovers */
main [class*="bg-sky-950"] [class*="text-"],
main [class*="bg-sky-950"].text-\[\#7C3AED\] {
  color: #5B21B6 !important;
}

/* Explicit primary purple buttons */
[class*="bg-[#00A6F4]"], [class*="bg-[#7C3AED]"], [class*="bg-[#0090D6]"] {
  background-color: var(--cz-primary) !important;
}
[class*="text-[#00A6F4]"], [class*="text-[#7C3AED]"] { color: var(--cz-primary) !important; }

.btn-primary, .btn-primary * { color: #fff !important; }

.card {
  background: #fff !important;
  border: 1px solid #E5E7EB !important;
  border-radius: 1.25rem !important;
  box-shadow: 0 1px 2px rgba(16,24,40,.04), 0 8px 24px rgba(16,24,40,.04) !important;
}

.pb-safe { padding-bottom: max(env(safe-area-inset-bottom), 0px); }

/* EduBondhu-style stat card hover */
.cz-stat-card {
  transition: transform .2s ease, box-shadow .2s ease;
}
.cz-stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(124,58,237,.12);
}
.cz-stat-card:active { transform: scale(.98); transition-duration: .1s; }

/* Icon rail */
.cz-rail-btn {
  width: 44px; height: 44px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  color: #6A7282; transition: all .2s ease;
}
.cz-rail-btn:hover { background: #F5F3FF; color: #7C3AED; }
.cz-rail-active {
  background: #EDE9FE !important;
  color: #7C3AED !important;
}

/* Mobile header curve */
.cz-mobile-hero {
  background: linear-gradient(160deg, #A855F7 0%, #7C3AED 55%, #6D28D9 100%);
  border-radius: 0 0 1.75rem 1.75rem;
  position: relative;
  overflow: hidden;
}
.cz-mobile-hero::before, .cz-mobile-hero::after {
  content: ''; position: absolute; border-radius: 9999px; background: rgba(255,255,255,.12);
  pointer-events: none;
}
.cz-mobile-hero::before { width: 200px; height: 200px; top: -70px; left: -50px; }
.cz-mobile-hero::after { width: 160px; height: 160px; bottom: -50px; right: -40px; }
.cz-mobile-hero, .cz-mobile-hero * { color: #fff !important; }
.cz-mobile-hero .text-white\/80 { color: rgba(255,255,255,.8) !important; }
.cz-mobile-hero .text-white\/90 { color: rgba(255,255,255,.9) !important; }

/* ===== Mobile content polish (all admin pages) ===== */
@media (max-width: 1023px) {
  .cz-main-wrap { overflow-x: clip; }
  main { overflow-x: clip; }
  main .max-w-7xl { max-width: 100%; }

  /* Keep wide tables inside scrollable cards */
  main .overflow-x-auto {
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    max-width: 100%;
  }
  main table { min-width: 560px; }

  /* Stack crowded header action rows */
  main .flex.items-center.gap-3,
  main .flex.items-center.gap-2 {
    flex-wrap: wrap;
  }

  /* Forms / filters breathe better */
  main form.grid { gap: .75rem; }

  /* Soften dense status pill strips */
  main .inline-flex.flex-wrap { max-width: 100%; }

  /* Cards don't blow past viewport */
  main [class*="rounded-2xl"],
  main [class*="rounded-3xl"] {
    max-width: 100%;
  }
}

@media (max-width: 640px) {
  main { padding-left: .875rem !important; padding-right: .875rem !important; }
  main table th,
  main table td {
    padding-left: .75rem !important;
    padding-right: .75rem !important;
  }
  main h2 {
    font-size: 1.05rem !important;
    line-height: 1.35 !important;
  }
}
