diff --git a/assets/AIChatPage-BjyZWRE5.js b/assets/AIChatPage-BNaYJCk8.js similarity index 94% rename from assets/AIChatPage-BjyZWRE5.js rename to assets/AIChatPage-BNaYJCk8.js index 2d87b41aff9916cbfe5010b8f3155dbadea2c355..38d470cdcbb087a29bfa376de2ea11390b6a104d 100644 --- a/assets/AIChatPage-BjyZWRE5.js +++ b/assets/AIChatPage-BNaYJCk8.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Dl2Y5a7s.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-ZLSkO1Xv.css"])))=>i.map(i=>d[i]); -import{aE as B,u as z,_ as F,h as S,m as C,J as D}from"./index-Dl2Y5a7s.js";import{r as o,j as e}from"./vendor-react-B4AQeu28.js";import{B as O}from"./button-pKF8t5En.js";import{I}from"./input-DghAGnRL.js";import H from"./ChatMarkdown-C9qC9oWH.js";import{P as Y}from"./plus-CrmryN2j.js";import{S as G}from"./search-D5s5o6Cr.js";import{T as Q}from"./trash-2-D0AgwsJy.js";import{C as W}from"./chevron-left-BLeucdCi.js";import{S as q}from"./send-Bv1lHqor.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";function J(r){return r?r instanceof Date?r.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):typeof r=="object"&&"toDate"in r?r.toDate().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):String(r):""}const he=()=>{const{sessions:r,activeSessionId:a,isLoading:l,loadingSessionId:A,setActiveSessionId:n,createNewSession:b,sendMessage:L,deleteSession:T,getActiveSession:_}=B(),{userProfile:c}=z(),[m,P]=o.useState(""),[i,g]=o.useState(""),[y,j]=o.useState(!1),x=o.useRef(null),h=o.useRef(!0),u=o.useRef(!1),d=_(),p=d?.messages||[],E=p.some(t=>t.sender==="ai"&&t.id.startsWith("stream-")),v=l&&a===A&&!E,w=(t="auto")=>{const s=x.current;s&&s.scrollTo({top:s.scrollHeight,behavior:t})},M=()=>{const t=x.current;return t?t.scrollHeight-t.scrollTop-t.clientHeight<=120:!0},R=()=>{h.current=M()};o.useEffect(()=>{F(async()=>{const{warmupBackend:t}=await import("./index-Dl2Y5a7s.js").then(s=>s.b6);return{warmupBackend:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])).then(({warmupBackend:t})=>{t()}).catch(t=>{console.warn("AI chat warmup skipped:",t)})},[]),o.useEffect(()=>{if(!h.current)return;const t=window.requestAnimationFrame(()=>w("auto"));return()=>window.cancelAnimationFrame(t)},[p,v]),o.useEffect(()=>{h.current=!0,w("auto")},[a]);const N=async()=>{if(!(!i.trim()||l||y||u.current)){u.current=!0,j(!0);try{let t=a;t||(t=b(),n(t));const s=i.trim();g(""),await L(t,s)}finally{u.current=!1,j(!1)}}},k=()=>{const t=b();n(t)},$=(t,s)=>{s.stopPropagation(),T(t)},f=r.filter(t=>t.title.toLowerCase().includes(m.toLowerCase())||t.preview.toLowerCase().includes(m.toLowerCase()));return e.jsxs("div",{className:"h-full min-h-0 overflow-hidden flex md:gap-4 px-0 md:px-4 sm:px-6 xl:px-10 py-0 md:py-6",children:[e.jsxs("div",{className:`${a?"hidden md:flex":"flex"} w-full md:w-80 min-h-0 flex-col bg-[#f7f9fc] rounded-none md:rounded-3xl border-0 md:border border-[#dde3eb] overflow-hidden`,children:[e.jsxs("div",{className:"p-4 border-b border-[#dde3eb] flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 md:w-12 md:h-12 bg-gradient-to-r from-sky-600 to-sky-500 rounded-xl md:rounded-2xl flex items-center justify-center shrink-0",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-8 h-8 md:w-10 md:h-10 object-contain drop-shadow-md"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm md:text-base font-bold font-display text-[#0a1628]",children:"L.O.L.I."}),e.jsx("p",{className:"text-[10px] text-[#5a6578]",children:"Your AI Math Tutor"})]})]}),e.jsxs("button",{onClick:k,className:"bg-gradient-to-r from-sky-600 to-sky-500 hover:from-sky-700 hover:to-sky-600 text-white px-3 py-2 rounded-xl text-xs font-bold transition-all shadow-md hover:shadow-lg flex items-center justify-center gap-1.5 shrink-0",children:[e.jsx(Y,{size:14}),"New Chat"]})]}),e.jsxs("div",{className:"relative mt-3",children:[e.jsx(G,{className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-500",size:14}),e.jsx(I,{type:"text",placeholder:"Search conversations...",value:m,onChange:t=>P(t.target.value),className:"w-full pl-9 pr-3 py-2 text-xs rounded-xl border-[#dde3eb] focus:border-sky-600 focus:ring-2 focus:ring-sky-100"})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-3 space-y-2",children:[e.jsx("div",{className:"flex items-center justify-between mb-2 px-2",children:e.jsxs("span",{className:"text-xs font-bold text-[#5a6578]",children:[f.length," Conversations"]})}),e.jsx(S,{children:f.map(t=>e.jsxs(C.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},onClick:()=>n(t.id),className:`group p-3 rounded-2xl cursor-pointer transition-all duration-200 border relative ${a===t.id?"bg-sky-50 border-sky-200 shadow-sm":"bg-[#edf1f7] border-transparent hover:bg-[#dde3eb] hover:border-[#dde3eb]"}`,children:[e.jsxs("div",{className:"flex items-start justify-between mb-1",children:[e.jsx("h3",{className:`text-xs font-bold mb-0.5 pr-6 line-clamp-1 ${a===t.id?"text-sky-700":"text-[#0a1628]"}`,children:t.title}),e.jsx("button",{onClick:s=>$(t.id,s),className:"absolute top-2 right-2 p-1.5 rounded-lg opacity-0 group-hover:opacity-100 hover:bg-red-100 text-slate-500 hover:text-red-600 transition-all",children:e.jsx(Q,{size:12})})]}),e.jsx("p",{className:"text-[10px] text-[#5a6578] mb-2 line-clamp-2",children:t.preview}),e.jsxs("div",{className:"flex items-center justify-between text-[10px]",children:[e.jsx("span",{className:"text-slate-500",children:t.date}),e.jsxs("span",{className:`px-2 py-0.5 rounded-full ${a===t.id?"bg-sky-100 text-sky-600":"bg-[#dde3eb] text-[#5a6578]"}`,children:[t.messageCount," msgs"]})]})]},t.id))}),f.length===0&&e.jsxs("div",{className:"text-center py-8",children:[e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-16 h-16 object-contain mx-auto mb-2 opacity-60 drop-shadow-sm grayscale contrast-50"}),e.jsx("p",{className:"text-sm text-slate-500",children:"No conversations found"}),e.jsx("p",{className:"text-xs text-slate-500/60 mt-1",children:"Start a new chat!"})]})]})]}),e.jsx("div",{className:`${a?"flex":"hidden md:flex"} flex-1 min-h-0 flex-col bg-[#f7f9fc] rounded-none md:rounded-3xl border-0 md:border border-[#dde3eb] overflow-hidden`,children:a?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"p-3 md:p-4 border-b border-[#dde3eb] flex items-center justify-between flex-shrink-0 bg-white md:bg-transparent shadow-sm md:shadow-none z-10 relative",children:[e.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[e.jsx("button",{onClick:()=>n(null),className:"md:hidden p-1.5 -ml-1 text-slate-500 hover:text-slate-800 rounded-lg hover:bg-slate-100",children:e.jsx(W,{size:20})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-bold font-display text-[#0a1628] text-sm md:text-base",children:d?.title}),e.jsx("p",{className:"text-[10px] md:text-xs text-[#5a6578]",children:d?.date})]})]}),e.jsx("div",{className:"flex items-center gap-2",children:d?.topics.map((t,s)=>e.jsx("span",{className:"px-3 py-1 bg-sky-50 text-sky-600 text-xs font-bold rounded-lg",children:t},s))})]}),e.jsxs("div",{ref:x,onScroll:R,className:"flex-1 overflow-y-auto overscroll-contain p-4 md:p-6 space-y-4 bg-[#edf1f7] min-h-0",children:[e.jsx(S,{children:p.map(t=>e.jsxs(C.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:`flex items-end gap-2 ${t.sender==="user"?"justify-end":"justify-start"}`,children:[t.sender!=="user"&&e.jsx("div",{className:"w-7 h-7 rounded-full bg-gradient-to-r from-sky-600 to-sky-500 flex items-center justify-center flex-shrink-0 mb-1",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI",className:"w-5 h-5 object-contain"})}),e.jsxs("div",{className:`max-w-[70%] rounded-2xl px-5 py-3 ${t.sender==="user"?"bg-gradient-to-r from-sky-600 to-sky-500 text-white":"bg-white text-[#0a1628] shadow-md border border-[#dde3eb]"}`,children:[t.sender==="user"?e.jsx("p",{className:"text-sm whitespace-pre-wrap leading-relaxed",children:t.text}):e.jsx(H,{children:t.text}),e.jsx("p",{className:`text-[10px] mt-1.5 ${t.sender==="user"?"text-sky-200":"text-slate-500"}`,children:J(t.timestamp)})]}),t.sender==="user"&&e.jsx(D,{src:c?.photo,name:c?.name,gender:c?.gender,className:"w-7 h-7 flex-shrink-0 mb-1",fallbackClassName:"text-[10px]"})]},t.id))}),v&&e.jsx("div",{className:"flex justify-start",children:e.jsx("div",{className:"bg-white text-[#0a1628] shadow-md border border-[#dde3eb] rounded-2xl px-5 py-3 max-w-[70%]",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:150ms]"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:300ms]"})]})})})]}),e.jsx("div",{className:"p-3 md:p-4 border-t border-[#dde3eb] bg-white flex-shrink-0",children:e.jsxs("div",{className:"flex gap-2 md:gap-3",children:[e.jsx(I,{type:"text",value:i,onChange:t=>g(t.target.value),onKeyPress:t=>t.key==="Enter"&&N(),placeholder:"Ask me anything about math...",className:"flex-1 px-5 py-3 rounded-xl border-[#dde3eb] focus:border-sky-600 focus:ring-2 focus:ring-sky-100 text-sm"}),e.jsx(O,{onClick:N,disabled:!i.trim()||l||y,className:"px-6 bg-gradient-to-r from-sky-600 to-sky-500 hover:from-sky-700 hover:to-sky-600 text-white rounded-xl transition-all disabled:opacity-50 disabled:cursor-not-allowed shadow-md hover:shadow-lg",children:e.jsx(q,{size:18})})]})})]}):e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-8 text-center",children:[e.jsx("div",{className:"w-24 h-24 bg-gradient-to-r from-sky-100 to-cyan-100 rounded-3xl flex items-center justify-center mb-6",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-20 h-20 object-contain drop-shadow-lg"})}),e.jsx("h2",{className:"text-2xl font-bold font-display text-[#0a1628] mb-1",children:"Welcome to L.O.L.I."}),e.jsx("p",{className:"text-sky-600 text-sm font-bold tracking-wide uppercase mb-4",children:"Logical Operations & Learning Intelligence"}),e.jsx("p",{className:"text-[#5a6578] mb-6 max-w-md",children:"Your personal AI math tutor is here to help! Start a new conversation or select one from the sidebar."}),e.jsx("button",{onClick:k,className:"px-6 py-3 bg-gradient-to-r from-sky-600 to-sky-500 hover:from-sky-700 hover:to-sky-600 text-white rounded-xl font-bold shadow-lg hover:shadow-xl transition-all",children:"Start Your First Chat"}),e.jsx("div",{className:"mt-8 grid grid-cols-3 gap-4 max-w-2xl",children:["Algebra","Geometry","Calculus"].map(t=>e.jsxs("div",{className:"p-4 bg-[#edf1f7] rounded-xl border border-[#dde3eb]",children:[e.jsx("p",{className:"text-sm font-bold text-[#0a1628]",children:t}),e.jsxs("p",{className:"text-xs text-[#5a6578] mt-1",children:["Get help with ",t.toLowerCase()]})]},t))})]})})]})};export{he as default}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-pcr0VEFr.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-Bm8ni9Xq.css"])))=>i.map(i=>d[i]); +import{aE as B,u as z,_ as F,h as S,m as C,J as D}from"./index-pcr0VEFr.js";import{r as o,j as e}from"./vendor-react-B4AQeu28.js";import{B as O}from"./button-AeTtN-Gk.js";import{I}from"./input-DfDzuOXr.js";import H from"./ChatMarkdown-DD4Fb-Bv.js";import{P as Y}from"./plus-dU-HIq9R.js";import{S as G}from"./search-NTEnzRsF.js";import{T as Q}from"./trash-2-CcKz2OV0.js";import{C as W}from"./chevron-left-DV53pVuv.js";import{S as q}from"./send-gL3P1x3P.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";function J(r){return r?r instanceof Date?r.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):typeof r=="object"&&"toDate"in r?r.toDate().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):String(r):""}const he=()=>{const{sessions:r,activeSessionId:a,isLoading:l,loadingSessionId:A,setActiveSessionId:n,createNewSession:b,sendMessage:L,deleteSession:T,getActiveSession:_}=B(),{userProfile:c}=z(),[m,P]=o.useState(""),[i,g]=o.useState(""),[y,j]=o.useState(!1),x=o.useRef(null),h=o.useRef(!0),u=o.useRef(!1),d=_(),p=d?.messages||[],E=p.some(t=>t.sender==="ai"&&t.id.startsWith("stream-")),v=l&&a===A&&!E,w=(t="auto")=>{const s=x.current;s&&s.scrollTo({top:s.scrollHeight,behavior:t})},M=()=>{const t=x.current;return t?t.scrollHeight-t.scrollTop-t.clientHeight<=120:!0},R=()=>{h.current=M()};o.useEffect(()=>{F(async()=>{const{warmupBackend:t}=await import("./index-pcr0VEFr.js").then(s=>s.b6);return{warmupBackend:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])).then(({warmupBackend:t})=>{t()}).catch(t=>{console.warn("AI chat warmup skipped:",t)})},[]),o.useEffect(()=>{if(!h.current)return;const t=window.requestAnimationFrame(()=>w("auto"));return()=>window.cancelAnimationFrame(t)},[p,v]),o.useEffect(()=>{h.current=!0,w("auto")},[a]);const N=async()=>{if(!(!i.trim()||l||y||u.current)){u.current=!0,j(!0);try{let t=a;t||(t=b(),n(t));const s=i.trim();g(""),await L(t,s)}finally{u.current=!1,j(!1)}}},k=()=>{const t=b();n(t)},$=(t,s)=>{s.stopPropagation(),T(t)},f=r.filter(t=>t.title.toLowerCase().includes(m.toLowerCase())||t.preview.toLowerCase().includes(m.toLowerCase()));return e.jsxs("div",{className:"h-full min-h-0 overflow-hidden flex md:gap-4 px-0 md:px-4 sm:px-6 xl:px-10 py-0 md:py-6",children:[e.jsxs("div",{className:`${a?"hidden md:flex":"flex"} w-full md:w-80 min-h-0 flex-col bg-[#f7f9fc] rounded-none md:rounded-3xl border-0 md:border border-[#dde3eb] overflow-hidden`,children:[e.jsxs("div",{className:"p-4 border-b border-[#dde3eb] flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 md:w-12 md:h-12 bg-gradient-to-r from-sky-600 to-sky-500 rounded-xl md:rounded-2xl flex items-center justify-center shrink-0",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-8 h-8 md:w-10 md:h-10 object-contain drop-shadow-md"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm md:text-base font-bold font-display text-[#0a1628]",children:"L.O.L.I."}),e.jsx("p",{className:"text-[10px] text-[#5a6578]",children:"Your AI Math Tutor"})]})]}),e.jsxs("button",{onClick:k,className:"bg-gradient-to-r from-sky-600 to-sky-500 hover:from-sky-700 hover:to-sky-600 text-white px-3 py-2 rounded-xl text-xs font-bold transition-all shadow-md hover:shadow-lg flex items-center justify-center gap-1.5 shrink-0",children:[e.jsx(Y,{size:14}),"New Chat"]})]}),e.jsxs("div",{className:"relative mt-3",children:[e.jsx(G,{className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-500",size:14}),e.jsx(I,{type:"text",placeholder:"Search conversations...",value:m,onChange:t=>P(t.target.value),className:"w-full pl-9 pr-3 py-2 text-xs rounded-xl border-[#dde3eb] focus:border-sky-600 focus:ring-2 focus:ring-sky-100"})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-3 space-y-2",children:[e.jsx("div",{className:"flex items-center justify-between mb-2 px-2",children:e.jsxs("span",{className:"text-xs font-bold text-[#5a6578]",children:[f.length," Conversations"]})}),e.jsx(S,{children:f.map(t=>e.jsxs(C.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},onClick:()=>n(t.id),className:`group p-3 rounded-2xl cursor-pointer transition-all duration-200 border relative ${a===t.id?"bg-sky-50 border-sky-200 shadow-sm":"bg-[#edf1f7] border-transparent hover:bg-[#dde3eb] hover:border-[#dde3eb]"}`,children:[e.jsxs("div",{className:"flex items-start justify-between mb-1",children:[e.jsx("h3",{className:`text-xs font-bold mb-0.5 pr-6 line-clamp-1 ${a===t.id?"text-sky-700":"text-[#0a1628]"}`,children:t.title}),e.jsx("button",{onClick:s=>$(t.id,s),className:"absolute top-2 right-2 p-1.5 rounded-lg opacity-0 group-hover:opacity-100 hover:bg-red-100 text-slate-500 hover:text-red-600 transition-all",children:e.jsx(Q,{size:12})})]}),e.jsx("p",{className:"text-[10px] text-[#5a6578] mb-2 line-clamp-2",children:t.preview}),e.jsxs("div",{className:"flex items-center justify-between text-[10px]",children:[e.jsx("span",{className:"text-slate-500",children:t.date}),e.jsxs("span",{className:`px-2 py-0.5 rounded-full ${a===t.id?"bg-sky-100 text-sky-600":"bg-[#dde3eb] text-[#5a6578]"}`,children:[t.messageCount," msgs"]})]})]},t.id))}),f.length===0&&e.jsxs("div",{className:"text-center py-8",children:[e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-16 h-16 object-contain mx-auto mb-2 opacity-60 drop-shadow-sm grayscale contrast-50"}),e.jsx("p",{className:"text-sm text-slate-500",children:"No conversations found"}),e.jsx("p",{className:"text-xs text-slate-500/60 mt-1",children:"Start a new chat!"})]})]})]}),e.jsx("div",{className:`${a?"flex":"hidden md:flex"} flex-1 min-h-0 flex-col bg-[#f7f9fc] rounded-none md:rounded-3xl border-0 md:border border-[#dde3eb] overflow-hidden`,children:a?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"p-3 md:p-4 border-b border-[#dde3eb] flex items-center justify-between flex-shrink-0 bg-white md:bg-transparent shadow-sm md:shadow-none z-10 relative",children:[e.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[e.jsx("button",{onClick:()=>n(null),className:"md:hidden p-1.5 -ml-1 text-slate-500 hover:text-slate-800 rounded-lg hover:bg-slate-100",children:e.jsx(W,{size:20})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-bold font-display text-[#0a1628] text-sm md:text-base",children:d?.title}),e.jsx("p",{className:"text-[10px] md:text-xs text-[#5a6578]",children:d?.date})]})]}),e.jsx("div",{className:"flex items-center gap-2",children:d?.topics.map((t,s)=>e.jsx("span",{className:"px-3 py-1 bg-sky-50 text-sky-600 text-xs font-bold rounded-lg",children:t},s))})]}),e.jsxs("div",{ref:x,onScroll:R,className:"flex-1 overflow-y-auto overscroll-contain p-4 md:p-6 space-y-4 bg-[#edf1f7] min-h-0",children:[e.jsx(S,{children:p.map(t=>e.jsxs(C.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:`flex items-end gap-2 ${t.sender==="user"?"justify-end":"justify-start"}`,children:[t.sender!=="user"&&e.jsx("div",{className:"w-7 h-7 rounded-full bg-gradient-to-r from-sky-600 to-sky-500 flex items-center justify-center flex-shrink-0 mb-1",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI",className:"w-5 h-5 object-contain"})}),e.jsxs("div",{className:`max-w-[70%] rounded-2xl px-5 py-3 ${t.sender==="user"?"bg-gradient-to-r from-sky-600 to-sky-500 text-white":"bg-white text-[#0a1628] shadow-md border border-[#dde3eb]"}`,children:[t.sender==="user"?e.jsx("p",{className:"text-sm whitespace-pre-wrap leading-relaxed",children:t.text}):e.jsx(H,{children:t.text}),e.jsx("p",{className:`text-[10px] mt-1.5 ${t.sender==="user"?"text-sky-200":"text-slate-500"}`,children:J(t.timestamp)})]}),t.sender==="user"&&e.jsx(D,{src:c?.photo,name:c?.name,gender:c?.gender,className:"w-7 h-7 flex-shrink-0 mb-1",fallbackClassName:"text-[10px]"})]},t.id))}),v&&e.jsx("div",{className:"flex justify-start",children:e.jsx("div",{className:"bg-white text-[#0a1628] shadow-md border border-[#dde3eb] rounded-2xl px-5 py-3 max-w-[70%]",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:150ms]"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:300ms]"})]})})})]}),e.jsx("div",{className:"p-3 md:p-4 border-t border-[#dde3eb] bg-white flex-shrink-0",children:e.jsxs("div",{className:"flex gap-2 md:gap-3",children:[e.jsx(I,{type:"text",value:i,onChange:t=>g(t.target.value),onKeyPress:t=>t.key==="Enter"&&N(),placeholder:"Ask me anything about math...",className:"flex-1 px-5 py-3 rounded-xl border-[#dde3eb] focus:border-sky-600 focus:ring-2 focus:ring-sky-100 text-sm"}),e.jsx(O,{onClick:N,disabled:!i.trim()||l||y,className:"px-6 bg-gradient-to-r from-sky-600 to-sky-500 hover:from-sky-700 hover:to-sky-600 text-white rounded-xl transition-all disabled:opacity-50 disabled:cursor-not-allowed shadow-md hover:shadow-lg",children:e.jsx(q,{size:18})})]})})]}):e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-8 text-center",children:[e.jsx("div",{className:"w-24 h-24 bg-gradient-to-r from-sky-100 to-cyan-100 rounded-3xl flex items-center justify-center mb-6",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-20 h-20 object-contain drop-shadow-lg"})}),e.jsx("h2",{className:"text-2xl font-bold font-display text-[#0a1628] mb-1",children:"Welcome to L.O.L.I."}),e.jsx("p",{className:"text-sky-600 text-sm font-bold tracking-wide uppercase mb-4",children:"Logical Operations & Learning Intelligence"}),e.jsx("p",{className:"text-[#5a6578] mb-6 max-w-md",children:"Your personal AI math tutor is here to help! Start a new conversation or select one from the sidebar."}),e.jsx("button",{onClick:k,className:"px-6 py-3 bg-gradient-to-r from-sky-600 to-sky-500 hover:from-sky-700 hover:to-sky-600 text-white rounded-xl font-bold shadow-lg hover:shadow-xl transition-all",children:"Start Your First Chat"}),e.jsx("div",{className:"mt-8 grid grid-cols-3 gap-4 max-w-2xl",children:["Algebra","Geometry","Calculus"].map(t=>e.jsxs("div",{className:"p-4 bg-[#edf1f7] rounded-xl border border-[#dde3eb]",children:[e.jsx("p",{className:"text-sm font-bold text-[#0a1628]",children:t}),e.jsxs("p",{className:"text-xs text-[#5a6578] mt-1",children:["Get help with ",t.toLowerCase()]})]},t))})]})})]})};export{he as default}; diff --git a/assets/AdminDashboard-CIi7plOc.js b/assets/AdminDashboard-CIi7plOc.js deleted file mode 100644 index dc892dde215d843df97f76027224a83729a1322b..0000000000000000000000000000000000000000 --- a/assets/AdminDashboard-CIi7plOc.js +++ /dev/null @@ -1,63 +0,0 @@ -import{j as e,r as l,d as qs}from"./vendor-react-B4AQeu28.js";import{C as Vs,S as Es}from"./Sidebar-BDEiqlEK.js";import Ws from"./ConfirmModal-BO62ig7W.js";import{e as xe,n as we,l as je,j as v,h as zt,m as K,p as I,R as ge,a as ze,g as J,N as Et,r as xs,O as Pt,P as Dt,o as Xs,u as Qe,L as Qs,S as ms,x as Ks,v as fe,U as Ce,G as Ve,i as Rt,Q as Ps,V as Ds,W as Rs,q as Tt,A as Ts,Z as Ae,X as Mt,B as $t,T as Ys,F as Lt,Y as Ut,$ as It,D as Ft,M as Ot,J as _t}from"./index-Dl2Y5a7s.js";import{B as k}from"./button-pKF8t5En.js";import{S as V,a as W,b as ke,c as X,d as y}from"./select-DStldRhf.js";import{I as Y}from"./input-DghAGnRL.js";import{S as He}from"./subjects-DcwoUK34.js";import{U as Fe}from"./upload-C4j9TBDs.js";import{D as ie}from"./LogoutActionButton-BeDw8qfE.js";import{F as Ee,A as Pe,I as Js,N as Bt}from"./NotificationDropdown-CwrXQKJ9.js";import{T as ue}from"./trash-2-D0AgwsJy.js";import{S as Ms}from"./sparkles-DXDpj3ao.js";import{S as gs}from"./search-D5s5o6Cr.js";import{S as $s,D as Zs,a as et,b as st,c as tt,e as Gt}from"./dialog-DuLafn8Q.js";import{getDocs as re,collection as Z,query as We,orderBy as ps,limit as Xe,where as Ls,addDoc as Ht,serverTimestamp as qt}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{D as bs}from"./download-Bvx53dXJ.js";import{S as hs}from"./shield-check-DwpyoHVp.js";import{C as fs}from"./clock-Dcq6nfrf.js";import{E as at,a as Vt}from"./eye-BEaH2B-8.js";import{C as lt}from"./chevron-left-BLeucdCi.js";import{C as rt}from"./chevron-right-D8o3zg2m.js";import{C as ve}from"./circle-alert-CmKGy6F7.js";import{C as Wt,a as Xt}from"./vendor-radix-BPuEd8FG.js";import{C as Qt}from"./check-BoG998GJ.js";import{M as Kt}from"./mail-BNL7x2CT.js";import{P as Us}from"./plus-CrmryN2j.js";import{S as it}from"./save-BkInuCbo.js";import{C as Yt}from"./chart-column-CaIU59ve.js";import{u as Jt}from"./useQuery-B50cnw-J.js";import{X as js}from"./x-wHRRR-gQ.js";import{S as cs}from"./skeleton-CWsSRCwx.js";import{D as Zt}from"./dollar-sign-CJnvMNrk.js";import{S as ea}from"./switch-B8xho0UQ.js";import{u as sa,t as ta,a as aa}from"./useSubjectAvailability-DLIjLCt1.js";import{C as la}from"./circle-help-7egOqUPg.js";import{B as ra}from"./bell-D8HSQb3o.js";import{R as os,B as ia,C as na,X as ca,Y as oa,T as da,a as Is,A as xa,d as ma,P as pa,e as ha,b as Fs}from"./vendor-charts-D7t7JfSr.js";import{C as ua}from"./circle-check-OLox8hf3.js";import"./tooltip--nIi8N_-.js";import"./shirt-CyYDebXG.js";import"./log-out-wnJ21BJr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chevron-up-bHLZImYg.js";import"./formatDistanceToNow-E-4T8g7c.js";/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ga=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],ba=xe("arrow-up-right",ga);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const fa=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]],Os=xe("ban",fa);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ja=[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]],va=xe("chart-pie",ja);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const wa=[["path",{d:"M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473",key:"ol2ft2"}],["path",{d:"m16.5 3.5 5 5",key:"15e6fa"}],["path",{d:"m21.5 3.5-5 5",key:"m0lwru"}]],nt=xe("funnel-x",wa);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Na=[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]],ya=xe("list",Na);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ka=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]],Sa=xe("lock-open",ka);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ca=[["path",{d:"M14 22v-4a2 2 0 1 0-4 0v4",key:"hhkicm"}],["path",{d:"m18 10 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-7.382a1 1 0 0 1 .553-.894L6 10",key:"1xqip1"}],["path",{d:"M18 5v17",key:"1sw6gf"}],["path",{d:"m4 6 7.106-3.553a2 2 0 0 1 1.788 0L20 6",key:"9d2mlk"}],["path",{d:"M6 5v17",key:"1xfsm0"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}]],Aa=xe("school",Ca);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const za=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],Oe=xe("square-pen",za);/** - * @license lucide-react v0.487.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ea=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["polyline",{points:"16 11 18 13 22 9",key:"1pwet4"}]],qe=xe("user-check",Ea);function ct({className:s,...a}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:we("w-full caption-bottom text-sm",s),...a})})}function ot({className:s,...a}){return e.jsx("thead",{"data-slot":"table-header",className:we("[&_tr]:border-b",s),...a})}function dt({className:s,...a}){return e.jsx("tbody",{"data-slot":"table-body",className:we("[&_tr:last-child]:border-0",s),...a})}function Se({className:s,...a}){return e.jsx("tr",{"data-slot":"table-row",className:we("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",s),...a})}function he({className:s,...a}){return e.jsx("th",{"data-slot":"table-head",className:we("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",s),...a})}function le({className:s,...a}){return e.jsx("td",{"data-slot":"table-cell",className:we("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",s),...a})}const Pa=({onUploadSuccess:s})=>{const[a,c]=l.useState("upload"),[i,n]=l.useState(!1),[m,b]=l.useState(null),[x,j]=l.useState(!1),[w,p]=l.useState(null),[o,A]=l.useState(""),[C,E]=l.useState(""),[P,h]=l.useState("1"),[N,T]=l.useState(0),[R,L]=l.useState(null),[O,ee]=l.useState(!1),ne=l.useRef(null),H=l.useCallback(async()=>{ee(!0);try{const r=await je.getRagHealth();L({subjects:r.subjects||{},chunkCount:r.chunkCount||0,lastIngested:r.lastIngested||""})}catch{v.error("Failed to load RAG health status")}finally{ee(!1)}},[]);qs.useEffect(()=>{H()},[H]);const se=r=>{if(r.type!=="application/pdf"){v.error("Only PDF files are allowed");return}if(r.size>50*1024*1024){v.error("File size must be under 50MB");return}if(p(r),o){const D=He.find(d=>d.id===o);D&&E(D.name)}},Q=l.useCallback(r=>{r.preventDefault(),j(!1);const D=r.dataTransfer.files[0];D&&se(D)},[o]),_=l.useCallback(r=>{r.preventDefault(),j(!0)},[]),te=l.useCallback(()=>j(!1),[]),q=r=>{A(r);const D=He.find(d=>d.id===r);D&&E(D.name)},F=async()=>{if(!w||!o||!C.trim()){v.error("Please select a PDF file, subject, and enter a subject name");return}n(!0),T(0);try{const r=new FormData;r.append("file",w),r.append("subjectId",o),r.append("subjectName",C.trim()),r.append("quarter",P);const D=setInterval(()=>{T(B=>Math.min(B+15,85))},300),d=await je.uploadModulePdf(r);clearInterval(D),T(100),d.success?(v.success(`${w.name} uploaded! ${d.chunkCount??0} chunks indexed.`),p(null),d.chunkCount!==void 0&&s?.(o,d.chunkCount),H(),setTimeout(()=>c("inventory"),1e3)):v.error(d.error||"Upload failed")}catch(r){v.error(r instanceof Error?r.message:"Upload failed")}finally{n(!1),setTimeout(()=>T(0),500)}},M=async(r,D)=>{b(r);try{const d=await je.reingestModulePdf(r,D);d.success?(v.success(`Re-ingestion complete for ${r}: ${d.chunkCount??0} chunks`),H()):v.error(d.error||"Re-ingestion failed")}catch(d){v.error(d instanceof Error?d.message:"Re-ingestion failed")}finally{b(null)}},f=R?Object.entries(R.subjects).map(([r,D])=>({name:r,chunks:D,storagePath:"",status:D>0?"active":"missing"})).filter(r=>r.chunks>0):[];return e.jsxs("div",{className:"space-y-4 pt-2 xl:pt-4 pb-4 max-w-[1200px] mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1 bg-white p-1 rounded-2xl border border-slate-200 shadow-sm",children:[e.jsxs("button",{onClick:()=>c("upload"),className:`flex items-center gap-2 px-5 py-2 rounded-xl text-[12px] font-black transition-all duration-300 ${a==="upload"?"bg-[#9956DE] text-white shadow-lg shadow-purple-200":"text-slate-400 hover:text-purple-600 hover:bg-purple-50"}`,children:[e.jsx(Fe,{size:14}),"Import"]}),e.jsxs("button",{onClick:()=>c("inventory"),className:`flex items-center gap-2 px-5 py-2 rounded-xl text-[12px] font-black transition-all duration-300 ${a==="inventory"?"bg-[#9956DE] text-white shadow-lg shadow-purple-200":"text-slate-400 hover:text-purple-600 hover:bg-purple-50"}`,children:[e.jsx(ie,{size:14}),"Inventory"]})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("div",{className:"hidden sm:flex items-center gap-3 bg-white/80 backdrop-blur-md px-3 py-1.5 rounded-xl border border-slate-100 shadow-sm",children:[e.jsxs("div",{className:"flex flex-col items-end",children:[e.jsx("span",{className:"text-[8px] font-black text-slate-400 uppercase tracking-widest leading-none",children:"Chunks"}),e.jsx("span",{className:"text-[12px] font-black text-purple-600 leading-none mt-1",children:O?"...":(R?.chunkCount??0).toLocaleString()})]}),e.jsx("div",{className:"w-px h-5 bg-slate-100"}),e.jsxs("div",{className:"flex flex-col items-end",children:[e.jsx("span",{className:"text-[8px] font-black text-slate-400 uppercase tracking-widest leading-none",children:"Health"}),e.jsxs("div",{className:"flex items-center gap-1 mt-1",children:[e.jsx("span",{className:"text-[12px] font-black text-purple-600 leading-none",children:f.length}),e.jsx("div",{className:`w-1.5 h-1.5 rounded-full ${f.length>0?"bg-emerald-500 animate-pulse":"bg-slate-300"}`})]})]})]})})]}),e.jsx(zt,{mode:"wait",children:a==="upload"?e.jsxs(K.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},className:"space-y-4",children:[e.jsxs("div",{className:"bg-white rounded-[24px] border border-slate-200 shadow-sm overflow-hidden group",children:[e.jsxs("div",{className:"p-6 border-b border-slate-50 bg-gradient-to-br from-white to-purple-50/20 relative",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-black text-[#1e293b] tracking-tight",children:"Learning Module Upload"}),e.jsx("p",{className:"text-[11px] text-slate-500 font-medium italic",children:"Provide curriculum context for AI tutoring logic."})]}),e.jsx("div",{className:"w-10 h-10 bg-[#9956DE] rounded-xl flex items-center justify-center text-white shadow-md transition-transform group-hover:scale-110",children:e.jsx(Fe,{size:20})})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{onDrop:Q,onDragOver:_,onDragLeave:te,onClick:()=>!i&&ne.current?.click(),className:` - relative border-2 border-dashed rounded-2xl p-6 text-center cursor-pointer transition-all duration-300 group/drop - ${x?"border-[#9956DE] bg-purple-50 scale-[0.99]":"border-slate-200 hover:border-[#9956DE] bg-white hover:bg-purple-50/30"} - ${i?"cursor-not-allowed opacity-60":""} - min-h-[160px] flex flex-col items-center justify-center - `,children:[e.jsx("input",{ref:ne,type:"file",accept:".pdf",className:"hidden",onChange:r=>r.target.files?.[0]&&se(r.target.files[0])}),w?e.jsxs("div",{className:"flex items-center gap-4 text-left",children:[e.jsx("div",{className:"w-14 h-14 bg-purple-50 rounded-xl flex items-center justify-center text-purple-600 border border-purple-100 shadow-sm shrink-0",children:e.jsx(Ee,{size:28})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"font-black text-[14px] text-[#1e293b] truncate max-w-[300px]",children:w.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-[10px] text-purple-500 font-black uppercase",children:[(w.size/1024/1024).toFixed(2)," MB"]}),e.jsx("span",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest italic",children:"PDF Source"})]}),e.jsxs("button",{onClick:r=>{r.stopPropagation(),p(null)},className:"text-[10px] font-black text-rose-500 hover:text-rose-600 mt-1 flex items-center gap-1",children:[e.jsx(ue,{size:10})," Replace"]})]})]}):e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx("div",{className:"w-12 h-12 bg-slate-50 rounded-xl flex items-center justify-center text-slate-300 mb-4 group-hover/drop:text-purple-500 group-hover/drop:bg-purple-50 transition-all",children:e.jsx(Fe,{size:24})}),e.jsx("h4",{className:"text-[14px] font-black text-[#1e293b]",children:"Drop PDF or click to browse"}),e.jsx("p",{className:"text-[10px] text-slate-400 mt-1 font-medium italic",children:"Max 50MB (SLM, Textbook, Guide)"})]}),N>0&&e.jsx("div",{className:"absolute inset-0 bg-white/95 backdrop-blur-[1px] rounded-2xl flex flex-col items-center justify-center p-8 z-20",children:e.jsxs("div",{className:"w-full max-w-xs space-y-3 text-center",children:[e.jsx("div",{className:"w-12 h-12 bg-[#9956DE] rounded-xl flex items-center justify-center mx-auto mb-2 animate-bounce",children:e.jsx(Ms,{size:24,className:"text-white"})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("h5",{className:"text-sm font-black text-[#1e293b]",children:i?"Analyzing Curriculum...":"Complete!"}),e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Platform Ingestion"})]}),e.jsx("div",{className:"h-2 bg-slate-100 rounded-full overflow-hidden p-0.5 border border-slate-200 mt-2",children:e.jsx(K.div,{className:"h-full bg-gradient-to-r from-purple-500 to-sky-500 rounded-full",initial:{width:0},animate:{width:`${N}%`},transition:{duration:.3}})})]})})]})})]}),e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Curriculum Subject"}),e.jsxs(V,{value:o,onValueChange:q,disabled:i,children:[e.jsx(W,{className:"w-full h-10 bg-slate-50/50 border-slate-200 rounded-xl text-[12px] font-bold focus:ring-purple-500/20",children:e.jsx(ke,{placeholder:"Select subject"})}),e.jsx(X,{className:"rounded-xl border-slate-200",children:He.map(r=>e.jsx(y,{value:r.id,className:"rounded-lg py-2",children:e.jsxs("div",{className:"flex flex-col items-start",children:[e.jsx("span",{className:"font-black text-[12px]",children:r.name}),e.jsxs("span",{className:"text-[9px] text-slate-400 font-bold uppercase",children:[r.gradeLevel," • ",r.semester]})]})},r.id))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Display Label"}),e.jsx(Y,{value:C,onChange:r=>E(r.target.value),placeholder:"e.g. General Mathematics",disabled:i,className:"h-10 bg-slate-50/50 border-slate-200 rounded-xl text-[12px] font-bold px-4 focus-visible:ring-purple-500/20"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Quarter"}),e.jsxs(V,{value:P,onValueChange:h,disabled:i,children:[e.jsx(W,{className:"w-full h-10 bg-slate-50/50 border-slate-200 rounded-xl text-[12px] font-bold focus:ring-purple-500/20",children:e.jsx(ke,{})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"1",className:"rounded-lg text-[12px] font-bold",children:"First Quarter"}),e.jsx(y,{value:"2",className:"rounded-lg text-[12px] font-bold",children:"Second Quarter"}),e.jsx(y,{value:"3",className:"rounded-lg text-[12px] font-bold",children:"Third Quarter"}),e.jsx(y,{value:"4",className:"rounded-lg text-[12px] font-bold",children:"Fourth Quarter"})]})]})]})]}),e.jsx(k,{onClick:F,disabled:i||!w||!o||!C.trim(),className:"w-full h-12 gap-2 bg-[#9956DE] hover:bg-[#8b5cf6] text-white rounded-2xl shadow-lg shadow-purple-100 transition-all hover:scale-[1.01] active:scale-95 text-[14px] font-black",children:i?e.jsxs(e.Fragment,{children:[e.jsx(I,{size:16,className:"animate-spin"})," Ingesting..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Fe,{size:16})," Deploy Knowledge Source"]})})]})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[{icon:Ms,color:"bg-purple-50",iconColor:"text-purple-600",title:"Grounding",desc:"Curriculum-pinned logic."},{icon:ie,color:"bg-sky-50",iconColor:"text-sky-600",title:"Indexing",desc:"Millisecond RAG retrieval."},{icon:Vs,color:"bg-emerald-50",iconColor:"text-emerald-600",title:"Extraction",desc:"Neural chunk parsing."}].map((r,D)=>e.jsxs("div",{className:"bg-white rounded-xl p-3 border border-slate-100 shadow-sm flex items-start gap-3",children:[e.jsx("div",{className:`w-8 h-8 rounded-lg ${r.color} flex items-center justify-center shrink-0`,children:e.jsx(r.icon,{size:14,className:r.iconColor})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-[10px] font-black text-[#1e293b] uppercase tracking-wide leading-none",children:r.title}),e.jsx("p",{className:"text-[9px] text-slate-400 leading-tight mt-1 font-medium italic",children:r.desc})]})]},D))})]},"upload-tab"):e.jsx(K.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},className:"space-y-4",children:e.jsx("div",{className:"bg-white rounded-[24px] border border-slate-200 shadow-sm overflow-hidden relative",children:e.jsxs(ct,{className:"w-full text-left border-collapse",children:[e.jsx(ot,{children:e.jsxs(Se,{className:"bg-[#9956DE] hover:bg-[#9956DE] border-b border-[#8b5cf6] sticky top-0 z-20 shadow-sm",children:[e.jsx(he,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto",children:"Identity"}),e.jsx(he,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto",children:"Density"}),e.jsx(he,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto text-center",children:"Status"}),e.jsx("th",{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsxs("div",{className:"relative group",children:[e.jsx(gs,{className:"w-3 h-3 absolute left-3 top-1/2 -translate-y-1/2 text-white/60 group-focus-within:text-white transition-colors"}),e.jsx(Y,{placeholder:"Filter...",className:"pl-8 h-8 w-32 bg-white/10 border-white/20 rounded-lg text-[10px] font-black placeholder:text-white/40 text-white focus-visible:ring-white/20 transition-all"})]}),e.jsx(k,{variant:"ghost",size:"sm",className:"h-8 px-2 bg-white/10 text-white hover:bg-white/20 rounded-lg",onClick:H,disabled:O,children:e.jsx(ge,{size:12,className:O?"animate-spin":""})})]})})]})}),e.jsx(dt,{className:"divide-y divide-slate-50",children:O?e.jsx(Se,{children:e.jsxs(le,{colSpan:4,className:"h-48 text-center",children:[e.jsx(I,{size:24,className:"animate-spin text-purple-500 mx-auto"}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest mt-2",children:"Syncing Knowledge Base..."})]})}):f.length===0?e.jsx(Se,{children:e.jsxs(le,{colSpan:4,className:"h-48 text-center",children:[e.jsx(ie,{size:24,className:"text-slate-200 mx-auto"}),e.jsx("p",{className:"text-[12px] font-black text-slate-400 mt-2",children:"No data in index."})]})}):f.map(r=>e.jsxs(Se,{className:"group hover:bg-purple-50/10 transition-all border-b border-slate-50",children:[e.jsx(le,{className:"px-6 py-4",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-gradient-to-br from-purple-50 to-white border border-purple-100 flex items-center justify-center text-purple-500 shadow-sm group-hover:scale-110 transition-transform",children:e.jsx(ze,{size:18})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"font-black text-[#1e293b] text-[13px] block group-hover:text-purple-600 transition-colors",children:r.name}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-tighter mt-1 block",children:"Curriculum Source"})]})]})}),e.jsx(le,{className:"px-6 py-4",children:e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("span",{className:"text-[14px] font-display font-black text-purple-600 leading-none",children:[r.chunks.toLocaleString()," ",e.jsx("span",{className:"text-[9px] text-slate-400",children:"units"})]}),e.jsx("div",{className:"w-20 h-1 bg-slate-100 rounded-full overflow-hidden border border-slate-200",children:e.jsx("div",{className:"h-full bg-purple-500 rounded-full",style:{width:"100%"}})})]})}),e.jsx(le,{className:"px-6 py-4 text-center",children:e.jsx("div",{className:"flex flex-col items-center gap-1",children:e.jsxs("span",{className:`inline-flex items-center gap-1 px-3 py-1 rounded-full text-[9px] font-black uppercase tracking-wider border ${r.status==="active"?"bg-emerald-50 text-emerald-600 border-emerald-100":"bg-rose-50 text-rose-600 border-rose-100"}`,children:[e.jsx("div",{className:`w-1 h-1 rounded-full ${r.status==="active"?"bg-emerald-500":"bg-rose-500"}`}),r.status]})})}),e.jsx(le,{className:"px-6 py-4 text-right",children:e.jsxs(k,{variant:"outline",size:"sm",className:"h-8 px-4 gap-1.5 text-[9px] font-black uppercase tracking-widest rounded-lg border-slate-200 hover:bg-purple-600 hover:text-white hover:border-purple-600 transition-all",onClick:()=>M(r.name.toLowerCase().replace(/\s+/g,"-").replace("&",""),r.storagePath),disabled:m===r.name.toLowerCase().replace(/\s+/g,"-").replace("&",""),children:[e.jsx(ge,{size:10,className:m===r.name.toLowerCase()?"animate-spin":""}),"Sync"]})})]},r.name))})]})})},"inventory-tab")})]})};function xt(s){return s?s.charAt(0).toUpperCase()+s.slice(1):"Student"}function us(s){if(!s||!s.toDate)return new Date().toISOString().replace("T"," ").slice(0,19);const a=s.toDate();return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")} ${String(a.getHours()).padStart(2,"0")}:${String(a.getMinutes()).padStart(2,"0")}:${String(a.getSeconds()).padStart(2,"0")}`}function Da(){return us({toDate:()=>new Date})}function Ra(s){if(!s)return"Never";const a=new Date(s);if(Number.isNaN(a.getTime()))return s;const i=Date.now()-a.getTime(),n=Math.floor(i/6e4);if(n<1)return"Just now";if(n<60)return`${n} minute${n!==1?"s":""} ago`;const m=Math.floor(n/60);if(m<24)return`${m} hour${m!==1?"s":""} ago`;const b=Math.floor(m/24);return b<7?`${b} day${b!==1?"s":""} ago`:a.toLocaleDateString()}function Ta(s){const a=(s.grade||"").trim(),c=(s.section||"").trim(),i=[a,c].filter(Boolean).join(" - ");return{id:s.uid,name:s.name||"Unknown",email:s.email||"",role:xt(s.role||""),status:s.status||"Active",department:s.department||(s.role?.toLowerCase()==="student"?i||"Student":""),grade:a,section:c,classSectionId:s.classSectionId||void 0,classSection:i,lrn:(s.lrn||"").trim(),gender:s.gender||null,photo:(s.photo||"").trim(),lastLogin:Ra(s.lastLogin),createdAt:s.createdAt||void 0}}function Ke(s){if(s instanceof Xs){try{const a=JSON.parse(s.responseBody);if(a?.detail&&typeof a.detail=="string")return a.detail}catch{}return`Request failed (${s.status}).`}return s instanceof Error?s.message:"Request failed."}async function Ma(s={}){try{const a=await je.getAdminUsers({page:s.page??1,pageSize:s.pageSize??25,search:s.searchQuery,role:s.roleFilter,status:s.statusFilter,grade:s.gradeFilter,section:s.sectionFilter,classSectionId:s.classSectionId});if(!a.success)throw new Error("Failed to load admin users");return{users:(a.users||[]).map(Ta),page:a.page,pageSize:a.pageSize,total:a.total,totalPages:a.totalPages,hasNextPage:a.hasNextPage}}catch(a){throw console.error("[adminService] getAdminUsersPage error:",a),a instanceof Pt?new Error("Loading users timed out. Please refresh and try again."):a instanceof Dt?new Error("Unable to reach the server. Please check your connection and retry."):a instanceof Xs&&a.status===504?new Error("Loading users took too long. Try narrowing your filters and retrying."):new Error(Ke(a))}}async function $a(s,a){try{await je.updateAdminUser(s,{...a.name!==void 0?{name:a.name}:{},...a.role!==void 0?{role:a.role}:{},...a.status!==void 0?{status:a.status}:{},...a.department!==void 0?{department:a.department}:{},...a.grade!==void 0?{grade:a.grade}:{},...a.section!==void 0?{section:a.section}:{},...a.lrn!==void 0?{lrn:a.lrn}:{}})}catch(c){throw new Error(Ke(c))}}async function La(s){try{const a=await je.createAdminUser({name:s.name.trim(),email:s.email.trim().toLowerCase(),password:s.password,confirmPassword:s.confirmPassword,role:s.role,status:s.status,grade:s.grade.trim(),section:s.section.trim(),...s.lrn?.trim()?{lrn:s.lrn.trim()}:{}});if(!a.success||!a.userCreated||!a.uid)throw new Error(a.message||"Failed to create user account.");return{uid:a.uid,userCreated:a.userCreated,emailSent:a.emailSent,resultCode:a.resultCode,message:a.message,warnings:a.warnings??[],emailError:a.emailError}}catch(a){throw new Error(Ke(a))}}async function Ua(s){try{const a=await je.bulkAdminUsers({action:s.action,userIds:s.userIds??[],excludeUserIds:s.excludeUserIds??[],filters:s.filters,role:s.role,status:s.status,grade:s.grade,section:s.section,lrn:s.lrn,dryRun:s.dryRun,exportFormat:s.exportFormat??"csv"});return{success:a.success,action:a.action,summary:a.summary,results:a.results,warnings:a.warnings||[],exportRows:a.export?.rows||[]}}catch(a){throw new Error(Ke(a))}}async function mt(){try{if(!Et.currentUser)return[];const s=We(Z(J,"accessAuditLogs"),ps("timestamp","desc"),Xe(100)),c=(await re(s)).docs.map(b=>{const x=b.data(),w=x.success!==!1?"Info":"Error",p=x.action||"";let o="System";return x.module==="admin"||p.startsWith("admin_")?o="User":p.includes("login")||p.includes("auth")?o="Auth":(p.includes("upload")||p.includes("course"))&&(o="Content"),{id:b.id,severity:w,timestamp:typeof x.timestamp=="string"?x.timestamp:us(x.timestamp),user:{name:(()=>{const C=x.actorName||x.actorEmail||x.teacherEmail||x.teacherId||"SYSTEM";return C==="Unknown"||!C?"SYSTEM":C.includes("@")?C.split("@")[0].replace(/[._-]/g," ").replace(/\b\w/g,P=>P.toUpperCase()):C})(),role:xt(x.actorRole||x.role||"System"),avatar:null},action:p,category:o,details:x.description||(x.status?`Status: ${x.status}`:"")}}),i=We(Z(J,"auditLogs"),ps("timestampRaw","desc"),Xe(50)),m=(await re(i)).docs.map(b=>{const x=b.data(),j=x.user;return{id:`audit-${b.id}`,severity:x.severity||"Info",timestamp:x.timestamp||us(x.timestampRaw),user:{name:j?.name||"SYSTEM",role:j?.role||"System",avatar:j?.avatar??null},action:x.action||"",category:x.category||"System",details:x.details||""}});return[...c,...m].sort((b,x)=>x.timestamp.localeCompare(b.timestamp)).slice(0,100)}catch(s){const a=s;return a?.code==="permission-denied"||a?.code==="firestore/permission-denied"?[]:(console.error("[adminService] getAuditLogs error:",s),[])}}async function ds(s,a,c,i,n){await Ht(Z(J,"auditLogs"),{severity:c,timestamp:Da(),timestampRaw:qt(),user:n,action:s,category:a,details:i})}async function Ia(){try{const s=await re(Z(J,"users"));let a=0,c=0,i=0;s.docs.forEach(x=>{const j=x.data();j.role==="student"&&(a++,j.overallRisk==="High"&&i++),j.role==="teacher"&&j.status!=="Inactive"&&c++});let n=0;try{n=(await re(Z(J,"classrooms"))).size}catch{}let m=0;try{m=(await re(Z(J,"xpActivities"))).size}catch{}let b=0;try{const x=await re(Z(J,"progress")),j=[];x.docs.forEach(w=>{const p=w.data();typeof p.averageScore=="number"&&j.push(p.averageScore)}),b=j.length>0?Math.round(j.reduce((w,p)=>w+p,0)/j.length):0}catch{}return{totalStudents:a,activeTeachers:c,totalClasses:n,atRiskStudents:i,avgPerformance:b,aiPredictions:m}}catch(s){return console.error("[adminService] getDashboardStats error:",s),{totalStudents:0,activeTeachers:0,totalClasses:0,atRiskStudents:0,avgPerformance:0,aiPredictions:0}}}async function Fa(s=3){const a=i=>{const n=i.data(),m=n.level||1,b=n.currentXP||0,x=Math.min(100,m*8+Math.round(b/100));return{id:i.id,name:n.name||"Student",avatar:n.photo||n.photoURL||xs(n.gender||null),class:n.grade||"Math",performance:x,level:m}},c=i=>i.sort((n,m)=>m.level!==n.level?m.level-n.level:m.performance-n.performance).slice(0,s);try{const i=We(Z(J,"users"),Ls("role","==","student"),ps("level","desc"),Xe(s)),n=await re(i);return c(n.docs.map(a))}catch(i){if(i?.code==="failed-precondition")try{const m=We(Z(J,"users"),Ls("role","==","student"),Xe(Math.max(50,s))),b=await re(m);return c(b.docs.map(a))}catch(m){return console.error("[adminService] getTopPerformers fallback error:",m),[]}return console.error("[adminService] getTopPerformers error:",i),[]}}async function Oa(){try{const s=await re(Z(J,"users"));let a=0,c=0,i=0,n=0,m=0;s.docs.forEach(j=>{const w=j.data();w.role==="student"&&(a++,w.overallRisk==="High"&&i++,w.streak>0&&m++,n+=w.totalXP||0),w.role==="teacher"&&c++});let b=0;try{b=(await re(Z(J,"achievements"))).size}catch{}let x=0;try{x=(await re(Z(J,"chatSessions"))).size}catch{}return{totalActiveUsers:a+c,totalStudents:a,totalTeachers:c,atRiskStudents:i,achievementsUnlocked:b,totalXPEarned:n,activeStreaks:m,aiTutorSessions:x}}catch(s){return console.error("[adminService] getAnalyticsSummary error:",s),{totalActiveUsers:0,totalStudents:0,totalTeachers:0,atRiskStudents:0,achievementsUnlocked:0,totalXPEarned:0,activeStreaks:0,aiTutorSessions:0}}}const _a=[10,25,50,100],_e=({title:s,value:a,subtitle:c,icon:i,variant:n})=>{const m={blue:"bg-[#5154E7] shadow-blue-200/50",purple:"bg-[#9956DE] shadow-purple-200/50",rose:"bg-[#F43F5E] shadow-rose-200/50",emerald:"bg-[#10B981] shadow-emerald-200/50"};return e.jsxs("div",{className:`relative overflow-hidden rounded-[24px] p-5 text-white shadow-lg transition-all hover:scale-[1.02] ${m[n]}`,children:[e.jsx("div",{className:"absolute -right-4 -top-4 opacity-10",children:e.jsx(i,{size:100})}),e.jsx("div",{className:"absolute right-4 top-4 w-8 h-8 rounded-full bg-white/20 flex items-center justify-center",children:e.jsx(i,{size:16})}),e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:s}),e.jsx("h3",{className:"text-2xl font-black mt-2 leading-none",children:a}),e.jsx("p",{className:"text-[10px] font-bold mt-4 opacity-70 uppercase tracking-widest",children:c}),e.jsx("div",{className:"absolute -bottom-8 -left-8 w-20 h-20 bg-white/10 rounded-full blur-2xl"})]})},Ba=()=>{const{userProfile:s,loading:a}=Qe(),[c,i]=l.useState([]),[n,m]=l.useState(!0),[b,x]=l.useState(!1),[j,w]=l.useState(""),[p,o]=l.useState("All Categories"),[A,C]=l.useState("All Severities"),[E,P]=l.useState("All Roles"),[h,N]=l.useState(null),[T,R]=l.useState(1),[L,O]=l.useState(25),ee=l.useCallback(async()=>{if(a||!s)return;const d=String(s.role||"").toLowerCase();if(d!=="admin"&&d!=="teacher"){m(!1),x(!0);return}x(!1),m(!0);try{const B=await mt();i(B)}catch{v.error("Failed to load audit logs")}finally{m(!1)}},[a,s]);l.useEffect(()=>{ee()},[ee]);const ne=c.filter(d=>d.severity==="Info").length;c.filter(d=>d.severity==="Warning").length;const H=c.filter(d=>d.severity==="Error"||d.severity==="Critical").length,se=d=>{switch(d){case"Info":return e.jsx(Js,{size:14});case"Warning":return e.jsx(Ks,{size:14});case"Error":return e.jsx($s,{size:14});case"Critical":return e.jsx(ve,{size:14});default:return e.jsx(Pe,{size:14})}},Q=d=>{switch(d){case"Info":return"bg-sky-50 text-sky-600 border-sky-100";case"Warning":return"bg-amber-50 text-amber-600 border-amber-100";case"Error":return"bg-rose-50 text-rose-600 border-rose-100";case"Critical":return"bg-red-50 text-red-600 border-red-100 ring-1 ring-red-500";default:return"bg-slate-50 text-slate-600 border-slate-100"}},_={"All Categories":"All Categories",Auth:"Authentication",Data:"Data Operations",User:"User Management",System:"System Engine",Content:"Content Pipeline"},te={"All Severities":"All Severities",Info:"Information",Warning:"Warning",Error:"Error",Critical:"Critical"},q={"All Roles":"All Roles",Admin:"Administrator",Teacher:"Educator",Student:"Student"},F=l.useMemo(()=>c.filter(d=>{const B=d.action.toLowerCase().includes(j.toLowerCase())||d.details.toLowerCase().includes(j.toLowerCase())||d.user.name.toLowerCase().includes(j.toLowerCase()),Ne=p==="All Categories"||d.category===p,Ye=A==="All Severities"||d.severity===A,De=E==="All Roles"||d.user.role===E;return B&&Ne&&Ye&&De}),[c,j,p,A,E]),M=Math.max(Math.ceil(F.length/L),1),f=l.useMemo(()=>{const d=(T-1)*L;return F.slice(d,d+L)},[F,T,L]);if(l.useEffect(()=>{R(1)},[j,p,A,E]),b)return e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[400px] text-center p-8 bg-white rounded-[32px] border border-slate-200 mt-8",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-rose-50 flex items-center justify-center mb-6",children:e.jsx(Qs,{size:40,className:"text-rose-500"})}),e.jsx("h3",{className:"text-2xl font-black text-[#1e293b]",children:"Access Denied"}),e.jsx("p",{className:"text-slate-400 font-medium max-w-md mx-auto mt-2 uppercase text-[11px] tracking-widest",children:"Security policy restricts audit log visibility to administrative personnel only."})]});const r=F.length===0?0:(T-1)*L+1,D=Math.min(T*L,F.length);return e.jsxs("div",{className:"flex flex-col min-h-full animate-in fade-in duration-500",children:[e.jsxs("div",{className:"flex-1 space-y-8 pt-6 xl:pt-8 pb-6 px-1 max-w-[1600px] mx-auto w-full",children:[e.jsxs("div",{className:"flex items-center justify-between px-2 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-1.5 h-6 bg-[#9956DE] rounded-full"}),e.jsx("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-[0.2em]",children:"System Governance Pipeline"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{onClick:ee,disabled:n,className:"p-2.5 rounded-xl bg-white border border-slate-200 text-slate-400 hover:text-purple-600 shadow-sm transition-all active:scale-95 group",title:"Synchronize logs",children:e.jsx(ge,{size:14,className:n?"animate-spin":"group-hover:rotate-180 transition-transform duration-500"})}),e.jsxs("button",{disabled:!0,className:"flex items-center gap-2 px-4 py-2 bg-white border border-slate-200 text-slate-400 rounded-xl text-[10px] font-black uppercase tracking-widest opacity-60 cursor-not-allowed",children:[e.jsx(bs,{size:14})," Export Logs"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 shrink-0",children:[e.jsx(_e,{title:"Total Events",value:n?"...":c.length,subtitle:"System-Wide Logs",icon:Ee,variant:"purple"}),e.jsx(_e,{title:"Security Alerts",value:n?"...":H,subtitle:"Critical Incidents",icon:$s,variant:"rose"}),e.jsx(_e,{title:"Operational Info",value:n?"...":ne,subtitle:"Routine Pipelines",icon:qe,variant:"blue"}),e.jsx(_e,{title:"System Health",value:H>0?"Compromised":"Healthy",subtitle:"Live Monitoring",icon:hs,variant:H>0?"rose":"emerald"})]})]}),e.jsx("div",{className:"sticky top-0 z-40 -mx-[24px] xl:-mx-[32px] px-[24px] xl:px-[32px] pt-4 pb-4 bg-[#f8fafc] backdrop-blur-sm",children:e.jsxs("div",{className:"flex flex-col xl:flex-row items-center gap-3",children:[e.jsxs("div",{className:"relative flex-1 w-full group",children:[e.jsx(gs,{className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within:text-[#9956DE] transition-colors",size:16}),e.jsx(Y,{type:"text",placeholder:"Trace user identity, action strings, or operation details...",className:"pl-11 h-12 bg-white border-slate-200/60 rounded-2xl focus-visible:ring-[#9956DE]/20 focus-visible:border-[#9956DE] transition-all text-sm font-medium shadow-md shadow-slate-200/40",value:j,onChange:d=>w(d.target.value)})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 w-full xl:w-auto",children:[e.jsxs(V,{value:p,onValueChange:o,children:[e.jsx(W,{className:"w-[200px] bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 rounded-xl h-12 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:_[p]||p})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Categories",className:"font-bold",children:"All Categories"}),e.jsx(y,{value:"Auth",className:"font-bold",children:"Authentication"}),e.jsx(y,{value:"Data",className:"font-bold",children:"Data Operations"}),e.jsx(y,{value:"User",className:"font-bold",children:"User Management"}),e.jsx(y,{value:"System",className:"font-bold",children:"System Engine"}),e.jsx(y,{value:"Content",className:"font-bold",children:"Content Pipeline"})]})]}),e.jsxs(V,{value:A,onValueChange:C,children:[e.jsx(W,{className:"w-[200px] bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 rounded-xl h-12 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:te[A]||A})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Severities",className:"font-bold",children:"All Severities"}),e.jsx(y,{value:"Info",className:"font-bold",children:"Information"}),e.jsx(y,{value:"Warning",className:"font-bold",children:"Warning"}),e.jsx(y,{value:"Error",className:"font-bold",children:"Error"}),e.jsx(y,{value:"Critical",className:"font-bold",children:"Critical"})]})]}),e.jsxs(V,{value:E,onValueChange:P,children:[e.jsx(W,{className:"w-[200px] bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 rounded-xl h-12 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:q[E]||E})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Roles",className:"font-bold",children:"All Roles"}),e.jsx(y,{value:"Admin",className:"font-bold",children:"Administrator"}),e.jsx(y,{value:"Teacher",className:"font-bold",children:"Educator"}),e.jsx(y,{value:"Student",className:"font-bold",children:"Student"})]})]}),e.jsx(k,{variant:"outline",size:"icon",onClick:()=>{w(""),o("All Categories"),C("All Severities"),P("All Roles")},disabled:!j&&p==="All Categories"&&A==="All Severities"&&E==="All Roles",className:"h-12 w-12 rounded-2xl border-slate-200/60 text-[#9956DE] hover:bg-purple-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all shadow-sm",title:"Reset Filters",children:e.jsx(nt,{size:18})})]})]})}),e.jsx("div",{className:"bg-white rounded-[32px] border border-slate-200/60 shadow-sm shadow-slate-200/40 relative",children:e.jsx("div",{className:"rounded-[32px]",children:e.jsxs("table",{className:"w-full text-left border-collapse min-w-[1000px]",children:[e.jsx("thead",{className:"sticky top-[80px] z-30 bg-[#f8fafc] backdrop-blur-sm shadow-[0_-12px_0_0_#f8fafc]",children:e.jsxs("tr",{className:"border-b border-[#8b5cf6]",children:[e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest whitespace-nowrap rounded-tl-[20px]",children:"Incident Level"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest whitespace-nowrap",children:"Timestamp"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"User Actor"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Action Performed"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Component"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest text-right whitespace-nowrap rounded-tr-[20px]",children:"Review"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-100",children:n?Array(10).fill(0).map((d,B)=>e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"h-20 p-8",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-slate-50 animate-pulse"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"w-32 h-3 bg-slate-50 animate-pulse rounded"}),e.jsx("div",{className:"w-48 h-2 bg-slate-50 animate-pulse rounded"})]})]})})},B)):f.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"h-64 text-center",children:e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx(ms,{size:48,className:"text-slate-100 mb-4"}),e.jsx("p",{className:"text-[16px] font-black text-[#1e293b]",children:"No audit trails captured"}),e.jsx("p",{className:"text-[11px] font-bold text-slate-400 uppercase tracking-widest mt-1",children:"Try adjusting your tracking filters"})]})})}):f.map(d=>e.jsxs("tr",{className:"group hover:bg-purple-50/20 transition-colors",children:[e.jsx("td",{className:"px-8 py-5",children:e.jsxs("span",{className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-full text-[9px] font-black uppercase tracking-wider border ${Q(d.severity)}`,children:[se(d.severity),d.severity]})}),e.jsx("td",{className:"px-8 py-5",children:e.jsxs("div",{className:"flex items-center gap-2.5",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-slate-50 flex items-center justify-center text-slate-400",children:e.jsx(fs,{size:14})}),e.jsx("span",{className:"text-[13px] font-bold text-[#1e293b]",children:d.timestamp})]})}),e.jsx("td",{className:"px-8 py-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-9 h-9 rounded-full bg-slate-50 border border-slate-100 flex items-center justify-center overflow-hidden shrink-0",children:d.user.avatar?e.jsx("img",{src:d.user.avatar,alt:d.user.name,className:"w-full h-full object-cover"}):e.jsx(ms,{size:16,className:"text-slate-300"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-black text-[#1e293b] leading-none group-hover:text-[#9956DE] transition-colors truncate",children:d.user.name||"SYSTEM"}),e.jsx("p",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-tighter mt-1",children:d.user.role||"System"})]})]})}),e.jsxs("td",{className:"px-8 py-5",children:[e.jsx("p",{className:"text-sm font-bold text-[#1e293b] truncate max-w-[250px]",title:d.details,children:d.action}),e.jsx("p",{className:"text-[10px] text-slate-400 font-medium truncate max-w-[250px] mt-0.5",children:d.details})]}),e.jsx("td",{className:"px-8 py-5",children:e.jsx("span",{className:"text-[10px] font-black px-2.5 py-1 rounded-lg bg-slate-50 text-slate-600 border border-slate-100 uppercase tracking-widest",children:d.category})}),e.jsx("td",{className:"px-8 py-5 text-right",children:e.jsx("div",{className:"flex justify-end",children:e.jsx("button",{onClick:()=>N(d),className:"w-9 h-9 rounded-xl border border-slate-200 flex items-center justify-center text-slate-400 hover:text-[#9956DE] hover:border-[#9956DE]/30 hover:bg-purple-50 transition-all ",children:e.jsx(at,{size:16})})})})]},d.id))})]})})}),e.jsxs("div",{className:"sticky bottom-0 z-50 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 px-12 py-3 bg-white border-t-2 border-slate-100 shadow-[0_-8px_30px_rgba(0,0,0,0.08)] -mx-[24px] xl:-mx-[32px] w-[calc(100%+48px)] xl:w-[calc(100%+64px)]",children:[e.jsxs("p",{className:"text-[12px] font-black text-slate-500 uppercase tracking-widest flex items-center gap-4",children:[e.jsx("span",{className:"w-2.5 h-2.5 rounded-full bg-[#9956DE] animate-pulse shadow-[0_0_12px_rgba(153,86,222,0.6)]"}),"Showing ",e.jsxs("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:[r,"–",D]}),e.jsx("span",{className:"text-slate-300 font-bold mx-1",children:"/"}),e.jsx("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:F.length}),e.jsx("span",{className:"text-slate-400 ml-1",children:"Total System Records"})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs(V,{value:String(L),onValueChange:d=>{O(Number(d)),R(1)},children:[e.jsx(W,{className:"h-10 w-[140px] bg-white border border-slate-300 text-[11px] font-black uppercase tracking-wider text-slate-900 rounded-xl hover:border-[#9956DE] transition-all px-4 shadow-sm",children:e.jsxs("span",{className:"truncate",children:[L," / Page"]})}),e.jsx(X,{className:"rounded-xl border-slate-200",children:_a.map(d=>e.jsxs(y,{value:String(d),className:"font-bold",children:[d," / Page"]},d))})]}),e.jsxs("div",{className:"flex items-center gap-2 bg-slate-50 p-1.5 rounded-2xl border border-slate-200 shadow-inner",children:[e.jsx(k,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:T<=1||n,onClick:()=>R(d=>Math.max(d-1,1)),children:e.jsx(lt,{size:18,strokeWidth:3})}),e.jsx("div",{className:"px-5 py-2 bg-white rounded-xl shadow-sm border border-slate-200 flex items-center justify-center min-w-[130px]",children:e.jsxs("span",{className:"text-[11px] font-black text-slate-900 uppercase tracking-widest",children:["Page ",e.jsx("span",{className:"text-[#9956DE] mx-1",children:T}),e.jsx("span",{className:"text-slate-300 mx-1",children:"OF"}),e.jsx("span",{className:"text-slate-500",children:Math.max(M,1)})]})}),e.jsx(k,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:T>=M||n,onClick:()=>R(d=>Math.min(d+1,M||1)),children:e.jsx(rt,{size:18,strokeWidth:3})})]})]})]}),e.jsx(Zs,{open:!!h,onOpenChange:d=>{d||N(null)},children:e.jsxs(et,{className:"sm:max-w-[600px] rounded-[32px] border-none shadow-2xl p-0 overflow-hidden",children:[e.jsx("div",{className:`h-2 w-full ${h?Q(h.severity).split(" ")[0].replace("bg-","bg-").replace("-50","-500"):"bg-purple-600"}`}),e.jsxs("div",{className:"p-8 space-y-6",children:[e.jsx(st,{className:"text-left",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-2xl bg-slate-50 flex items-center justify-center text-[#9956DE] border border-slate-100",children:e.jsx(hs,{size:24})}),e.jsxs("div",{children:[e.jsx(tt,{className:"text-xl font-black text-[#1e293b] leading-tight",children:h?.action||"Audit Event Details"}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] mt-1",children:"Platform Operational Integrity Trail"})]})]})}),h&&e.jsxs("div",{className:"grid grid-cols-2 gap-6 bg-slate-50/50 p-6 rounded-2xl border border-slate-100",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Incident Severity"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h.severity})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Timestamp"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h.timestamp})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Component"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h.category})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"User Actor"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h?.user.name})]}),e.jsxs("div",{className:"col-span-2 space-y-1 mt-2",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Full Operation Details"}),e.jsx("p",{className:"text-sm font-medium text-[#1e293b] leading-relaxed bg-white p-4 rounded-xl border border-slate-100",children:h.details})]})]}),e.jsx("div",{className:"flex justify-end pt-2",children:e.jsx(k,{onClick:()=>N(null),className:"bg-[#9956DE] hover:bg-[#8b5cf6] text-white rounded-xl px-8 font-black uppercase text-[11px] tracking-widest shadow-lg shadow-purple-100 transition-all",children:"Dismiss Review"})})]})]})})]})},Ga=()=>{const[s,a]=l.useState([]),[c,i]=l.useState(0),[n,m]=l.useState(!0),[b,x]=l.useState(null),[j,w]=l.useState(!1),p=l.useCallback(async()=>{m(!0);try{const h=await fe("/api/rag/documents");a(h.documents),i(h.total_chunks)}catch(h){console.error("Failed to fetch RAG documents:",h),v.error("Failed to load RAG inventory")}finally{m(!1)}},[]);l.useEffect(()=>{p()},[p]);const o=qs.useMemo(()=>{const h=new Map;for(const N of s){const T=h.get(N.subject)||[];T.push(N),h.set(N.subject,T)}return Array.from(h.entries()).map(([N,T])=>({subject:N,files:T,totalChunks:T.reduce((R,L)=>R+L.chunk_count,0)}))},[s]),A=async h=>{x(`subject:${h}`);try{const N=await fe(`/api/rag/documents/by-subject/${encodeURIComponent(h)}`,{method:"DELETE"});v.success(N.message),await p()}catch(N){v.error(`Failed to delete subject: ${N}`)}finally{x(null)}},C=async h=>{x(`source:${h}`);try{const N=await fe(`/api/rag/documents/by-source?source_file=${encodeURIComponent(h)}`,{method:"DELETE"});v.success(N.message),await p()}catch(N){v.error(`Failed to delete source: ${N}`)}finally{x(null)}},E=async()=>{x("purge");try{const h=await fe("/api/rag/documents/all",{method:"DELETE"});v.success(h.message),w(!1),await p()}catch(h){v.error(`Purge failed: ${h}`)}finally{x(null)}},P=async()=>{x("reingest");try{await fe("/api/admin/reingest-pdf",{method:"POST",body:JSON.stringify({})}),v.success("Re-ingestion triggered. This may take a few minutes."),setTimeout(p,5e3)}catch(h){v.error(`Re-ingestion failed: ${h}`)}finally{x(null)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-indigo-100 flex items-center justify-center",children:e.jsx(ie,{className:"w-5 h-5 text-indigo-600"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800",children:"RAG Pipeline Manager"}),e.jsx("p",{className:"text-sm text-slate-500",children:"Manage vectorstore content and uploaded files"})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"px-4 py-2 bg-indigo-50 rounded-xl text-center",children:[e.jsx("p",{className:"text-xl font-bold text-indigo-600",children:c}),e.jsx("p",{className:"text-[10px] font-bold text-indigo-400 uppercase",children:"Total Chunks"})]}),e.jsxs("div",{className:"px-4 py-2 bg-emerald-50 rounded-xl text-center",children:[e.jsx("p",{className:"text-xl font-bold text-emerald-600",children:o.length}),e.jsx("p",{className:"text-[10px] font-bold text-emerald-400 uppercase",children:"Subjects"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3 p-4 bg-slate-50 rounded-2xl border border-slate-200",children:[e.jsxs(k,{onClick:p,disabled:n,variant:"outline",className:"gap-2",children:[e.jsx(ge,{size:14,className:n?"animate-spin":""}),"Refresh"]}),e.jsxs(k,{onClick:P,disabled:!!b,variant:"outline",className:"gap-2",children:[b==="reingest"?e.jsx(I,{size:14,className:"animate-spin"}):e.jsx(ge,{size:14}),"Re-ingest All PDFs"]}),e.jsx("div",{className:"flex-1"}),j?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm text-red-600 font-medium flex items-center gap-1",children:[e.jsx(Ks,{size:14})," This will delete ALL RAG content"]}),e.jsxs(k,{onClick:E,disabled:b==="purge",className:"bg-red-600 hover:bg-red-700 text-white gap-2",children:[b==="purge"?e.jsx(I,{size:14,className:"animate-spin"}):e.jsx(ue,{size:14}),"Confirm Purge"]}),e.jsx(k,{onClick:()=>w(!1),variant:"outline",children:"Cancel"})]}):e.jsxs(k,{onClick:()=>w(!0),variant:"outline",className:"gap-2 text-red-600 border-red-200 hover:bg-red-50",children:[e.jsx(ue,{size:14}),"Purge All"]})]}),n?e.jsx("div",{className:"flex items-center justify-center py-16",children:e.jsx(I,{size:32,className:"animate-spin text-indigo-500"})}):o.length===0?e.jsxs("div",{className:"text-center py-16 text-slate-500",children:[e.jsx(ie,{size:48,className:"mx-auto mb-3 text-slate-300"}),e.jsx("p",{className:"font-medium",children:"No RAG content found"}),e.jsx("p",{className:"text-sm",children:"Upload PDFs via the Content tab or trigger re-ingestion"})]}):e.jsx("div",{className:"space-y-4",children:o.map(h=>e.jsxs(K.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"bg-white rounded-2xl border border-slate-200 overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-4 bg-slate-50 border-b border-slate-100",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-indigo-100 flex items-center justify-center",children:e.jsx(Ee,{size:16,className:"text-indigo-600"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-slate-800 capitalize",children:h.subject.replace(/_/g," ")}),e.jsxs("p",{className:"text-xs text-slate-500",children:[h.totalChunks," chunks • ",h.files.length," source file",h.files.length!==1?"s":""]})]})]}),e.jsxs(k,{onClick:()=>A(h.subject),disabled:!!b,variant:"outline",className:"gap-2 text-red-600 border-red-200 hover:bg-red-50 text-xs h-8",children:[b===`subject:${h.subject}`?e.jsx(I,{size:12,className:"animate-spin"}):e.jsx(ue,{size:12}),"Remove Subject"]})]}),e.jsx("div",{className:"divide-y divide-slate-100",children:h.files.map(N=>e.jsxs("div",{className:"flex items-center justify-between px-5 py-3 hover:bg-slate-50 transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Ee,{size:14,className:"text-slate-400"}),e.jsx("span",{className:"text-sm text-slate-700 font-medium truncate max-w-[400px]",children:N.source_file}),e.jsxs("span",{className:"text-xs text-slate-400 bg-slate-100 px-2 py-0.5 rounded-full",children:[N.chunk_count," chunks"]})]}),e.jsx("button",{onClick:()=>C(N.source_file),disabled:!!b,className:"p-1.5 rounded-lg text-slate-400 hover:text-red-500 hover:bg-red-50 transition-colors disabled:opacity-50",children:b===`source:${N.source_file}`?e.jsx(I,{size:14,className:"animate-spin"}):e.jsx(ue,{size:14})})]},N.source_file))})]},h.subject))})]})};function Be({className:s,...a}){return e.jsx(Wt,{"data-slot":"checkbox",className:we("peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...a,children:e.jsx(Xt,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:e.jsx(Qt,{className:"size-3.5"})})})}const Ha=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,qa=/[A-Z]/,Va=/[a-z]/,Wa=/\d/,Xa=/[^A-Za-z0-9]/;function Qa(s){const a={};s.name.trim()||(a.name="Name is required.");const c=s.email.trim().toLowerCase();c?Ha.test(c)||(a.email="Enter a valid email address."):a.email="Email is required.";const i=s.password;return i.length<8?a.password="Password must be at least 8 characters.":qa.test(i)?Va.test(i)?Wa.test(i)?Xa.test(i)||(a.password="Password must include at least one special character."):a.password="Password must include at least one number.":a.password="Password must include at least one lowercase letter.":a.password="Password must include at least one uppercase letter.",s.confirmPassword?s.confirmPassword!==i&&(a.confirmPassword="Passwords do not match."):a.confirmPassword="Confirm password is required.",s.role.trim()||(a.role="Role is required."),s.status.trim()||(a.status="Status is required."),s.grade.trim()||(a.grade="Grade is required."),s.section.trim()||(a.section="Section is required."),s.role.trim().toLowerCase()==="student"&&!s.lrn.trim()&&(a.lrn="LRN is required for student accounts."),a}function Ka(s){return Object.values(s).find(c=>!!c)??null}const _s=(s="Student")=>({name:"",email:"",password:"",confirmPassword:"",role:s,status:"Active",department:s==="Teacher"?"Mathematics":s==="Admin"?"System":"",grade:"Grade 11",section:"Section A",lrn:""}),Ya=["10","25","50","100"];function Bs(s,a){const c=s.trim();if(!(!c||c===a))return c}function Gs(s){const a=String(s??"");return/[",\n]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}const Ja=({createIntentRole:s=null,onCreateIntentConsumed:a})=>{const{userProfile:c}=Qe(),[i,n]=l.useState([]),[m,b]=l.useState(!0),[x,j]=l.useState(null),[w,p]=l.useState(!1),[o,A]=l.useState(!1),[C,E]=l.useState(null),[P,h]=l.useState(1),[N,T]=l.useState(25),[R,L]=l.useState(0),[O,ee]=l.useState(1),[ne,H]=l.useState(!1),[se,Q]=l.useState(""),[_,te]=l.useState("All Roles"),[q,F]=l.useState("All Status"),[M,f]=l.useState(new Set),[r,D]=l.useState(!1),[d,B]=l.useState(new Set),[Ne,Ye]=l.useState({}),[De,pt]=l.useState("Student"),[Je,ht]=l.useState("Active"),[dl,xl]=l.useState("Grade 11"),[ml,pl]=l.useState("Section A"),[ut,Re]=l.useState(!1),[gt,Ze]=l.useState(!1),[Me,vs]=l.useState(!1),[ce,es]=l.useState(null),[U,ws]=l.useState(null),[ss,$e]=l.useState({}),[ts,Le]=l.useState(!1),[hl,as]=l.useState(!1),[g,ae]=l.useState(_s()),$=l.useMemo(()=>({search:se.trim()||void 0,role:Bs(_,"All Roles"),status:Bs(q,"All Status")}),[se,_,q]),oe=l.useCallback(()=>{f(new Set),D(!1),B(new Set)},[]),Ue=l.useCallback(t=>r?!d.has(t):M.has(t),[r,d,M]),G=l.useMemo(()=>r?Math.max(R-d.size,0):M.size,[r,d,M,R]),Ns=l.useMemo(()=>i.length===0?!1:i.every(t=>Ue(t.id)),[i,Ue]),de=l.useMemo(()=>r?[]:Array.from(M).map(t=>Ne[t]).filter(t=>!!t),[r,M,Ne]);l.useMemo(()=>G===0?!1:r?!$.role||$.role.toLowerCase()==="student":de.length!==M.size?!1:de.every(t=>t.role==="Student"),[r,G,de,M.size,$.role]),l.useMemo(()=>G===0?!1:r?$.status?.toLowerCase()!=="active":de.length!==M.size?!1:de.some(t=>t.status!=="Active"),[r,G,de,M.size,$.status]),l.useMemo(()=>G===0?!1:r?$.status?.toLowerCase()!=="inactive":de.length!==M.size?!1:de.some(t=>t.status!=="Inactive"),[r,G,de,M.size,$.status]);const me=l.useCallback(async t=>{b(!0),j(null);try{const u=await Ma({page:t,pageSize:N,searchQuery:$.search,roleFilter:$.role,statusFilter:$.status});n(u.users),h(u.total===0?1:u.page),L(u.total),ee(u.totalPages||1),H(u.hasNextPage),Ye(z=>{const pe={...z};return u.users.forEach(S=>{pe[S.id]=S}),pe})}catch(u){const z=u instanceof Error?u.message:"Failed to load users";j(z),v.error(z)}finally{b(!1)}},[N,$.search,$.role,$.status]);l.useEffect(()=>{me(P)},[me,P]);const ls=l.useCallback((t="Student")=>{ws(null),$e({}),Le(!1),as(!1),ae(_s(t)),Re(!0)},[]);l.useEffect(()=>{s&&(ls(s),a?.())},[s,ls,a]);const ys=l.useCallback(t=>{if(r){B(u=>{const z=new Set(u);return z.has(t)?z.delete(t):z.add(t),z});return}f(u=>{const z=new Set(u);return z.has(t)?z.delete(t):z.add(t),z})},[r]),ks=l.useCallback(()=>{if(i.length===0)return;const t=i.map(u=>u.id);if(r){B(u=>{const z=new Set(u);return t.every(S=>!z.has(S))?t.forEach(S=>z.add(S)):t.forEach(S=>z.delete(S)),z});return}f(u=>{const z=new Set(u);return t.every(S=>z.has(S))?t.forEach(S=>z.delete(S)):t.forEach(S=>z.add(S)),z})},[i,r]),bt=l.useCallback(()=>{D(!0),f(new Set),B(new Set)},[]),Ss=l.useCallback(t=>{if(!t.length){v.info("No rows were returned for export.");return}const u=Array.from(t.reduce((Ie,ns)=>(Object.keys(ns).forEach(At=>Ie.add(At)),Ie),new Set)),z=[u.map(Gs).join(","),...t.map(Ie=>u.map(ns=>Gs(Ie[ns])).join(","))].join(` -`),pe=new Blob([z],{type:"text/csv;charset=utf-8;"}),S=URL.createObjectURL(pe),is=document.createElement("a");is.href=S,is.download=`admin-users-export-${Date.now()}.csv`,is.click(),URL.revokeObjectURL(S)},[]),be=l.useCallback(async(t,u)=>{const z=u.userIds,pe={...$.search?{search:$.search}:{},...$.role?{role:$.role}:{},...$.status?{status:$.status}:{}};if(!z&&G===0){v.error("Select at least one user before applying a bulk action.");return}A(!0);try{const S=await Ua({action:t,...z?{userIds:z}:r?{userIds:[],excludeUserIds:Array.from(d),filters:pe}:{userIds:Array.from(M)},...u.role?{role:u.role}:{},...u.status?{status:u.status}:{},...u.grade?{grade:u.grade}:{},...u.section?{section:u.section}:{},...u.exportFormat?{exportFormat:u.exportFormat}:{}});t==="export"&&Ss(S.exportRows),S.summary.failed>0?v.warning(`Completed with partial failures. ${S.summary.succeeded} succeeded, ${S.summary.failed} failed, ${S.summary.skipped} skipped.`):S.summary.succeeded===0&&S.summary.targeted>0?v.error(S.summary.skipped>0?`Action skipped for ${S.summary.skipped} user(s).`:"Action could not be completed. No users were updated."):v.success(`Action completed. ${S.summary.succeeded} user(s) updated.`),S.warnings.length>0&&v.info(S.warnings[0]);try{await ds(u.auditAction,"User",t==="delete"||t==="deactivate"?"Warning":"Info",`${u.auditDetail}; targeted=${S.summary.targeted}, succeeded=${S.summary.succeeded}, failed=${S.summary.failed}, skipped=${S.summary.skipped}`,{name:c?.name||"Admin",role:"Admin",avatar:c?.photo||null})}catch{}u.skipSelectionReset||oe(),await me(P)}catch(S){v.error(S instanceof Error?S.message:"Bulk action failed")}finally{A(!1)}},[$.search,$.role,$.status,r,d,M,G,c?.name,c?.photo,oe,me,P,Ss]),rs=l.useCallback(t=>{es(t),Ze(!0)},[]),ft=l.useCallback(async()=>{if(!(!ce||Me)){vs(!0);try{await be(ce.action,{...ce.params||{},auditAction:ce.auditAction,auditDetail:ce.auditDetail}),Ze(!1),es(null)}finally{vs(!1)}}},[ce,Me,be]),Cs=t=>{ws(t),$e({}),Le(!1),as(!1),ae({name:t.name,email:t.email,password:"",confirmPassword:"",role:t.role,status:t.status,department:t.department,grade:t.grade||"Grade 11",section:t.section||"Section A",lrn:t.lrn||""}),Re(!0)},jt=async()=>{if(!g.name.trim()||!g.email.trim()){v.error("Name and email are required");return}if(!U){const t=Qa({name:g.name,email:g.email,password:g.password,confirmPassword:g.confirmPassword,role:g.role,status:g.status,grade:g.grade,section:g.section,lrn:g.lrn}),u=Ka(t);if(u){$e(t),v.error(u);return}}p(!0);try{if(U){const t={name:g.name,role:g.role,status:g.status,grade:g.grade,section:g.section,lrn:g.role==="Student"?g.lrn:void 0};g.role!=="Student"&&(t.department=g.department),await $a(U.id,t),await ds("User Updated","User","Info",`Updated user: ${g.name} (${U.email})`,{name:c?.name||"Admin",role:"Admin",avatar:c?.photo||null}),v.success("User updated successfully")}else{const t=await La({email:g.email,name:g.name,password:g.password,confirmPassword:g.confirmPassword,role:g.role,status:g.status,grade:g.grade,section:g.section,lrn:g.role==="Student"?g.lrn:void 0});await ds("Created New User","User","Info",`Created new ${g.role.toLowerCase()} account: ${g.name} (${g.email}), emailSent=${t.emailSent}`,{name:c?.name||"Admin",role:"Admin",avatar:c?.photo||null}),t.emailSent?v.success("User created and welcome email sent"):(v.warning("User created, but welcome email failed to send"),t.emailError?.message&&v.error(t.emailError.message))}U?await me(P):(oe(),h(1),await me(1)),Re(!1),Le(!1),as(!1)}finally{p(!1)}},As=(t,u)=>{rs({title:"Delete User?",message:`Delete user "${u}"? This cannot be undone.`,confirmText:"Delete",action:"delete",params:{userIds:[t]},auditAction:"User Deleted",auditDetail:`Deleted user account: ${u}`})},zs=async t=>{if(C||o)return;if(t.status==="Active"){rs({title:"Deactivate User?",message:`Deactivate "${t.name}"? They will lose access until reactivated.`,confirmText:"Deactivate",action:"deactivate",params:{userIds:[t.id]},auditAction:"User Status Changed",auditDetail:`Deactivated user: ${t.email}`});return}E(t.id);try{await be("activate",{userIds:[t.id],auditAction:"User Status Changed",auditDetail:`Activated user: ${t.email}`,skipSelectionReset:!0})}finally{E(null)}},vt=async()=>{await be("change_role",{role:De,auditAction:"Bulk Role Update",auditDetail:`Updated selected users to role ${De}`})},wt=async()=>{await be("change_status",{status:Je,auditAction:"Bulk Status Update",auditDetail:`Updated selected users to status ${Je}`})},Nt=async()=>{await be("reset_password_email",{auditAction:"Bulk Password Reset",auditDetail:"Sent password reset emails to selected users"})},yt=async()=>{await be("export",{exportFormat:"csv",auditAction:"Bulk Export Users",auditDetail:"Exported selected users"})},kt=()=>{rs({title:"Delete Selected Users?",message:`Delete ${G} selected user(s)? This action cannot be undone.`,confirmText:"Delete Users",action:"delete",auditAction:"Bulk User Deletion",auditDetail:`Deleted ${G} selected users`})};i.filter(t=>t.status==="Active").length,i.filter(t=>t.role==="Admin").length,i.filter(t=>t.role==="Teacher").length,i.filter(t=>t.role==="Student").length;const St=R===0?0:(P-1)*N+1,Ct=R===0?0:Math.min(P*N,R);return e.jsxs("div",{className:"flex flex-col animate-in fade-in duration-500",children:[e.jsx("div",{className:"space-y-8 pt-6 xl:pt-8 pb-6 px-1",children:e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-5 gap-4",children:m&&i.length===0?Array.from({length:5}).map((t,u)=>e.jsxs("div",{className:"bg-white p-5 rounded-[28px] border border-slate-200/60 shadow-sm shadow-slate-200/50 animate-pulse",children:[e.jsx("div",{className:"h-4 w-20 bg-slate-100 rounded-full mb-3"}),e.jsx("div",{className:"h-8 w-12 bg-slate-100 rounded-lg"})]},`stats-skeleton-${u}`)):[{label:"Total Users",value:R,icon:Ce,bg:"bg-[#4f46e5]",shadow:"shadow-indigo-500/20"},{label:"Active Today",value:i.filter(t=>t.status==="Active").length,icon:qe,bg:"bg-[#10b981]",shadow:"shadow-emerald-500/20"},{label:"Admins",value:i.filter(t=>t.role==="Admin").length,icon:ms,bg:"bg-[#0ea5e9]",shadow:"shadow-sky-500/20"},{label:"Teachers",value:i.filter(t=>t.role==="Teacher").length,icon:Ve,bg:"bg-[#8b5cf6]",shadow:"shadow-purple-500/20"},{label:"Students",value:i.filter(t=>t.role==="Student").length,icon:Aa,bg:"bg-[#3b82f6]",shadow:"shadow-blue-500/20"}].map((t,u)=>e.jsxs("div",{className:`relative overflow-hidden ${t.bg} ${t.shadow} p-5 rounded-[28px] text-white flex flex-col gap-3 group hover:scale-[1.02] transition-all duration-300 shadow-lg`,children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-700 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-700 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex items-center justify-between",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:t.label}),e.jsx("div",{className:"bg-white/20 p-2 rounded-xl backdrop-blur-sm group-hover:bg-white/30 transition-colors",children:e.jsx(t.icon,{size:14})})]}),e.jsx("h3",{className:"relative z-10 text-3xl font-display font-black leading-none tracking-tight",children:t.value})]},u))})}),e.jsx("div",{className:"sticky top-0 z-40 -mx-[24px] xl:-mx-[32px] px-[24px] xl:px-[32px] pt-4 pb-4 bg-[#f8fafc] backdrop-blur-sm",children:e.jsxs("div",{className:"flex flex-col xl:flex-row items-center gap-3",children:[e.jsxs("div",{className:"relative flex-1 w-full group",children:[e.jsx(gs,{className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within:text-indigo-500 transition-colors",size:16}),e.jsx(Y,{placeholder:"Search by name, email, or LRN...",className:"pl-11 h-12 bg-white border-slate-200/60 rounded-2xl focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all text-sm font-medium shadow-md shadow-slate-200/40",value:se,onChange:t=>{Q(t.target.value),h(1),oe()}})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 w-full xl:w-auto",children:[e.jsxs(V,{value:_,onValueChange:t=>{te(t),h(1),oe()},children:[e.jsx(W,{className:"w-[180px] h-12 rounded-xl bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:_==="All Roles"?"All Roles":_==="Admin"?"Administrator":_==="Teacher"?"Educator":_})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Roles",className:"font-bold uppercase tracking-widest text-[10px]",children:"All Roles"}),e.jsx(y,{value:"Admin",className:"font-bold uppercase tracking-widest text-[10px]",children:"Administrator"}),e.jsx(y,{value:"Teacher",className:"font-bold uppercase tracking-widest text-[10px]",children:"Educator"}),e.jsx(y,{value:"Student",className:"font-bold uppercase tracking-widest text-[10px]",children:"Student"})]})]}),e.jsxs(V,{value:q,onValueChange:t=>{F(t),h(1),oe()},children:[e.jsx(W,{className:"w-[180px] h-12 rounded-xl bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:q==="All Status"?"All Statuses":q})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Status",className:"font-bold uppercase tracking-widest text-[10px]",children:"All Statuses"}),e.jsx(y,{value:"Active",className:"font-bold uppercase tracking-widest text-[10px]",children:"Active"}),e.jsx(y,{value:"Inactive",className:"font-bold uppercase tracking-widest text-[10px]",children:"Inactive"})]})]})]}),e.jsx(k,{variant:"outline",size:"icon",onClick:()=>{Q(""),te("All Roles"),F("All Status"),h(1),oe()},disabled:!se&&_==="All Roles"&&q==="All Status",className:"h-12 w-12 rounded-xl border-slate-200 text-[#9956DE] hover:bg-purple-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all shadow-md shadow-slate-200/40",title:"Reset Filters",children:e.jsx(nt,{size:18})}),e.jsx(k,{variant:"outline",size:"icon",className:"h-12 w-12 rounded-xl border-slate-200 text-slate-500 hover:bg-slate-50 transition-all shadow-md shadow-slate-200/40",onClick:()=>me(P),disabled:m||o,children:e.jsx(ge,{size:18,className:m?"animate-spin":""})}),e.jsxs(k,{className:"h-12 gap-2 bg-[#9956DE] hover:bg-[#8b5cf6] text-white rounded-xl shadow-lg shadow-purple-200/50 transition-all px-6 font-black uppercase text-[11px] tracking-widest",onClick:()=>ls(),disabled:o,children:[e.jsx(Rt,{size:18}),"Add User"]})]})}),G>0&&e.jsxs("div",{className:"fixed bottom-16 left-1/2 -translate-x-1/2 z-[60] w-[calc(100%-4rem)] max-w-[1100px] bg-[#2d1b69] rounded-2xl p-3 flex flex-col xl:flex-row items-center gap-4 animate-in slide-in-from-bottom-2 duration-300 shadow-2xl shadow-purple-900/50",children:[e.jsxs("div",{className:"flex items-center gap-3 px-3 border-r border-white/10 pr-6",children:[e.jsx("div",{className:"w-8 h-8 rounded-xl bg-purple-500/30 flex items-center justify-center text-white font-black text-xs",children:G}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black text-purple-300 uppercase tracking-widest leading-none",children:"Selected"}),e.jsx("p",{className:"text-[9px] text-white/60 font-medium mt-1",children:r?"All matching users":`${G} users chosen`})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1 bg-white/5 p-1 rounded-xl",children:[e.jsxs(V,{value:De,onValueChange:t=>pt(t),children:[e.jsx(W,{className:"h-8 bg-transparent border-none text-white text-[10px] font-bold min-w-[90px] focus:ring-0",children:e.jsx(ke,{})}),e.jsxs(X,{className:"rounded-xl",children:[e.jsx(y,{value:"Student",children:"Student"}),e.jsx(y,{value:"Teacher",children:"Teacher"}),e.jsx(y,{value:"Admin",children:"Admin"})]})]}),e.jsx(k,{size:"sm",className:"h-8 bg-purple-600 hover:bg-purple-500 text-[10px] font-black rounded-lg",onClick:()=>void vt(),children:"Apply Role"})]}),e.jsxs("div",{className:"flex items-center gap-1 bg-white/5 p-1 rounded-xl",children:[e.jsxs(V,{value:Je,onValueChange:t=>ht(t),children:[e.jsx(W,{className:"h-8 bg-transparent border-none text-white text-[10px] font-bold min-w-[90px] focus:ring-0",children:e.jsx(ke,{})}),e.jsxs(X,{className:"rounded-xl",children:[e.jsx(y,{value:"Active",children:"Active"}),e.jsx(y,{value:"Inactive",children:"Inactive"})]})]}),e.jsx(k,{size:"sm",className:"h-8 bg-purple-600 hover:bg-purple-500 text-[10px] font-black rounded-lg",onClick:()=>void wt(),children:"Set Status"})]}),e.jsx("div",{className:"h-6 w-[1px] bg-white/10 mx-1"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(k,{size:"sm",variant:"ghost",className:"h-9 text-white hover:bg-white/10 text-[10px] font-black uppercase tracking-widest gap-2",onClick:()=>void Nt(),children:[e.jsx(Kt,{size:14})," Reset Pass"]}),e.jsxs(k,{size:"sm",variant:"ghost",className:"h-9 text-white hover:bg-white/10 text-[10px] font-black uppercase tracking-widest gap-2",onClick:()=>void yt(),children:[e.jsx(bs,{size:14})," Export"]}),e.jsxs(k,{size:"sm",variant:"ghost",className:"h-9 text-rose-400 hover:bg-rose-500/10 hover:text-rose-300 text-[10px] font-black uppercase tracking-widest gap-2",onClick:kt,children:[e.jsx(ue,{size:14})," Delete"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pl-4 border-l border-white/10",children:[!r&&Gme(P),disabled:m||o,children:"Retry"})]}):null,e.jsxs("div",{className:"bg-white rounded-[32px] border border-slate-200/60 shadow-sm shadow-slate-200/50 relative",children:[m&&i.length>0&&e.jsx("div",{className:"absolute inset-0 bg-white/40 backdrop-blur-[1px] z-20 flex items-center justify-center",children:e.jsx(I,{className:"animate-spin text-indigo-500",size:32})}),e.jsxs("div",{className:"md:hidden divide-y divide-slate-100",children:[e.jsxs("div",{className:"px-6 py-4 bg-slate-50/50 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("label",{className:"flex items-center gap-3 text-[10px] font-black text-slate-400 uppercase tracking-widest cursor-pointer",children:[e.jsx(Be,{checked:Ns,onCheckedChange:ks,className:"rounded-md border-slate-300"}),"Select Page"]}),e.jsxs("span",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest",children:["Page ",P," of ",O]})]}),m&&i.length===0?e.jsx("div",{className:"px-6 py-12 text-center text-slate-400 font-medium",children:"Loading users..."}):i.length>0?i.map(t=>(t.id,e.jsxs("div",{className:"p-5 space-y-4 group hover:bg-slate-50/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center self-center",children:e.jsx(Be,{checked:Ue(t.id),onCheckedChange:()=>ys(t.id),className:"rounded-md border-slate-300"})}),e.jsxs("div",{className:"relative",children:[e.jsxs(Ps,{className:"h-12 w-12 rounded-full border-2 border-white shadow-sm",children:[e.jsx(Ds,{src:t.photo||xs(t.gender),className:"object-cover"}),e.jsx(Rs,{className:"bg-indigo-50 text-indigo-600 font-bold",children:t.name.charAt(0)})]}),e.jsx("div",{className:`absolute -bottom-1 -right-1 w-4 h-4 rounded-full border-2 border-white shadow-sm ${t.status==="Active"?"bg-emerald-500":"bg-slate-300"}`})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-black text-[#1e293b] truncate text-sm",children:t.name}),e.jsx("p",{className:"text-[11px] font-medium text-slate-400 truncate mt-0.5",children:t.email})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("span",{className:`text-[9px] font-black uppercase tracking-widest px-2 py-1 rounded-lg ${t.role==="Admin"?"bg-sky-50 text-sky-600":t.role==="Teacher"?"bg-purple-50 text-purple-600":"bg-blue-50 text-blue-600"}`,children:t.role}),e.jsxs("span",{className:"text-[9px] font-black uppercase tracking-widest px-2 py-1 rounded-lg bg-slate-50 text-slate-500",children:[t.grade," • ",t.section||t.department]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs(k,{variant:"outline",size:"sm",className:"flex-1 h-9 rounded-xl border-slate-200 text-slate-600 font-bold text-xs gap-2",onClick:()=>Cs(t),children:[e.jsx(Oe,{size:14})," Edit"]}),e.jsxs(k,{variant:"outline",size:"sm",className:`flex-1 h-9 rounded-xl border-slate-200 font-bold text-xs gap-2 ${t.status==="Active"?"text-slate-600":"text-emerald-600"}`,onClick:()=>zs(t),disabled:C===t.id||o,children:[C===t.id?e.jsx(I,{size:14,className:"animate-spin"}):t.status==="Active"?e.jsx(Os,{size:14}):e.jsx(qe,{size:14}),t.status==="Active"?"Ban":"Active"]}),e.jsx(k,{variant:"outline",size:"icon",className:"h-9 w-9 rounded-xl border-slate-200 text-rose-500 hover:bg-rose-50 hover:border-rose-100",onClick:()=>As(t.id,t.name),disabled:o,children:e.jsx(ue,{size:14})})]})]},`mobile-${t.id}`))):e.jsxs("div",{className:"px-6 py-20 text-center space-y-4",children:[e.jsx("div",{className:"w-20 h-20 bg-slate-50 rounded-full flex items-center justify-center mx-auto",children:e.jsx(Ce,{size:32,className:"text-slate-300"})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"font-black text-slate-600 uppercase tracking-widest text-sm",children:"No Users Found"}),e.jsx("p",{className:"text-xs text-slate-400 font-medium max-w-[200px] mx-auto leading-relaxed",children:"We couldn't find any users matching your current filters. Try adjusting your search."})]}),e.jsx(k,{variant:"outline",size:"sm",className:"rounded-xl border-slate-200 text-indigo-600 font-bold",onClick:()=>{Q(""),te("All Roles"),F("All Status")},children:"Clear Filters"})]})]}),e.jsx("div",{className:"hidden md:block",children:e.jsxs("table",{className:"w-full text-left border-collapse",children:[e.jsx("thead",{className:"sticky top-[80px] z-30 bg-[#f8fafc] backdrop-blur-sm shadow-[0_-12px_0_0_#f8fafc]",children:e.jsxs("tr",{className:"border-b border-[#8b5cf6]",children:[e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 w-[60px] rounded-tl-[20px]",children:e.jsx(Be,{checked:Ns,onCheckedChange:ks,className:"rounded-md border-white/50 data-[state=checked]:bg-white data-[state=checked]:text-[#9956DE]"})}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"User Profile"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Role & Access"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Status"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Placement"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Activity"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-right text-[11px] font-black text-white uppercase tracking-widest rounded-tr-[20px]",children:"Actions"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-50",children:m&&i.length===0?e.jsx("tr",{children:e.jsxs("td",{colSpan:7,className:"px-6 py-20 text-center",children:[e.jsx(I,{className:"animate-spin text-indigo-200 mx-auto",size:40}),e.jsx("p",{className:"mt-4 text-[10px] font-black text-slate-300 uppercase tracking-widest",children:"Loading Records..."})]})}):i.length>0?i.map(t=>{const u=C===t.id;return e.jsxs("tr",{className:"hover:bg-slate-50/50 transition-all group",children:[e.jsx("td",{className:"px-6 py-4 align-middle",children:e.jsx(Be,{checked:Ue(t.id),onCheckedChange:()=>ys(t.id),className:"rounded-md border-slate-300 group-hover:border-indigo-400 transition-colors"})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"relative shrink-0",children:e.jsxs(Ps,{className:"h-11 w-11 rounded-full border-2 border-white shadow-sm ring-1 ring-slate-100",children:[e.jsx(Ds,{src:t.photo||xs(t.gender),className:"object-cover"}),e.jsx(Rs,{className:"bg-indigo-50 text-indigo-600 font-bold text-sm",children:t.name.charAt(0)})]})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-black text-[#1e293b] truncate text-sm leading-tight group-hover:text-indigo-600 transition-colors",children:t.name}),e.jsx("p",{className:"text-[11px] font-medium text-slate-400 truncate mt-0.5",children:t.email})]})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("div",{className:"flex items-center gap-1.5",children:e.jsx("span",{className:` - text-[9px] font-black px-2 py-0.5 rounded-lg uppercase tracking-wider - ${t.role==="Admin"?"bg-sky-50 text-sky-600":""} - ${t.role==="Teacher"?"bg-purple-50 text-purple-600":""} - ${t.role==="Student"?"bg-blue-50 text-blue-600":""} - `,children:t.role})}),t.lrn&&e.jsxs("p",{className:"text-[9px] font-black text-slate-300 uppercase tracking-tighter ml-0.5",children:["LRN: ",t.lrn]})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("span",{className:` - inline-flex items-center gap-1.5 px-3 py-1.5 rounded-2xl text-[10px] font-black uppercase tracking-wider border - ${t.status==="Active"?"bg-emerald-50 text-emerald-600 border-emerald-100":"bg-slate-50 text-slate-400 border-slate-100"} - `,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${t.status==="Active"?"bg-emerald-500 animate-pulse":"bg-slate-300"}`}),t.status]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-xs font-black text-slate-600",children:t.grade||"N/A"}),e.jsx("p",{className:"text-[10px] font-medium text-slate-400",children:t.role==="Student"?t.classSection||t.section||"Unassigned":t.department})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-[10px] font-black text-slate-600 uppercase tracking-tighter",children:t.lastLogin?"Recent Activity":"Inactive Account"}),e.jsx("p",{className:"text-[10px] font-medium text-slate-400",children:t.lastLogin||"No login history"})]})}),e.jsx("td",{className:"px-6 py-4 text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(k,{variant:"ghost",size:"icon",onClick:()=>Cs(t),className:"h-9 w-9 rounded-xl text-slate-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all",title:"Edit User",children:e.jsx(Oe,{size:16})}),e.jsx(k,{variant:"ghost",size:"icon",onClick:()=>zs(t),disabled:u||o,className:`h-9 w-9 rounded-xl transition-all ${t.status==="Active"?"text-slate-400 hover:text-amber-600 hover:bg-amber-50":"text-slate-400 hover:text-emerald-600 hover:bg-emerald-50"}`,title:t.status==="Active"?"Deactivate":"Activate",children:u?e.jsx(I,{size:16,className:"animate-spin"}):t.status==="Active"?e.jsx(Os,{size:16}):e.jsx(qe,{size:16})}),e.jsx(k,{variant:"ghost",size:"icon",onClick:()=>As(t.id,t.name),disabled:o,className:"h-9 w-9 rounded-xl text-slate-400 hover:text-rose-600 hover:bg-rose-50 transition-all",title:"Delete User",children:e.jsx(ue,{size:16})})]})})]},t.id)}):e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"px-6 py-32 text-center",children:e.jsxs("div",{className:"max-w-xs mx-auto space-y-6",children:[e.jsx("div",{className:"w-24 h-24 bg-slate-50 rounded-[32px] flex items-center justify-center mx-auto shadow-sm shadow-slate-100 group-hover:scale-110 transition-transform duration-500",children:e.jsx(Ce,{size:40,className:"text-slate-200"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-black text-slate-600 uppercase tracking-widest",children:"No matching users"}),e.jsx("p",{className:"text-xs text-slate-400 font-medium leading-relaxed",children:"We couldn't find any results for your current query. Try broadening your search or clearing filters."})]}),e.jsx(k,{variant:"outline",size:"sm",className:"rounded-xl border-slate-200 text-indigo-600 font-bold px-6 h-10 hover:bg-indigo-50",onClick:()=>{Q(""),te("All Roles"),F("All Status")},children:"Reset Filters"})]})})})})]})})]}),e.jsxs("div",{className:"sticky bottom-0 z-50 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 px-12 py-3 bg-white border-t-2 border-slate-100 shadow-[0_-8px_30px_rgba(0,0,0,0.08)] -mx-[24px] xl:-mx-[32px] w-[calc(100%+48px)] xl:w-[calc(100%+64px)]",children:[e.jsxs("p",{className:"text-[12px] font-black text-slate-500 uppercase tracking-widest flex items-center gap-4",children:[e.jsx("span",{className:"w-2.5 h-2.5 rounded-full bg-[#9956DE] animate-pulse shadow-[0_0_12px_rgba(153,86,222,0.6)]"}),"Showing ",e.jsxs("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:[St,"–",Ct]}),e.jsx("span",{className:"text-slate-300 font-bold mx-1",children:"/"}),e.jsx("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:R}),e.jsx("span",{className:"text-slate-400 ml-1",children:"Total System Records"})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs(V,{value:String(N),onValueChange:t=>{const u=Number(t);Number.isNaN(u)||(T(u),h(1),oe())},children:[e.jsx(W,{className:"h-10 w-[140px] bg-white border border-slate-300 text-[11px] font-black uppercase tracking-wider text-slate-900 rounded-xl hover:border-[#9956DE] transition-all px-4 shadow-sm",children:e.jsxs("span",{className:"truncate",children:[N," / Page"]})}),e.jsx(X,{className:"rounded-xl border-slate-200",children:Ya.map(t=>e.jsxs(y,{value:t,className:"font-bold",children:[t," / Page"]},t))})]}),e.jsxs("div",{className:"flex items-center gap-2 bg-slate-50 p-1.5 rounded-2xl border border-slate-200 shadow-inner",children:[e.jsx(k,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:P<=1||m||o,onClick:()=>h(t=>Math.max(t-1,1)),children:e.jsx(lt,{size:18,strokeWidth:3})}),e.jsx("div",{className:"px-5 py-2 bg-white rounded-xl shadow-sm border border-slate-200 flex items-center justify-center min-w-[130px]",children:e.jsxs("span",{className:"text-[11px] font-black text-slate-900 uppercase tracking-widest",children:["Page ",e.jsx("span",{className:"text-[#9956DE] mx-1",children:P}),e.jsx("span",{className:"text-slate-300 mx-1",children:"OF"}),e.jsx("span",{className:"text-slate-500",children:Math.max(O,1)})]})}),e.jsx(k,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:!ne||m||o||P>=O,onClick:()=>h(t=>Math.min(t+1,O||1)),children:e.jsx(rt,{size:18,strokeWidth:3})})]})]})]}),e.jsx(Zs,{open:ut,onOpenChange:t=>!w&&Re(t),children:e.jsxs(et,{className:"sm:max-w-[850px] rounded-[32px] border-none shadow-2xl p-0 overflow-hidden [&>button:last-child]:hidden",children:[e.jsx("div",{className:`h-2 w-full bg-gradient-to-r ${U?"from-indigo-600 to-purple-600":"from-emerald-600 to-indigo-600"}`}),e.jsxs("div",{className:"p-8 space-y-8",children:[e.jsx(st,{className:"text-left",children:e.jsxs("div",{className:"flex items-center gap-5",children:[e.jsx("div",{className:`w-14 h-14 rounded-2xl flex items-center justify-center shadow-lg transition-transform duration-500 hover:rotate-3 ${U?"bg-indigo-100 text-indigo-700 shadow-indigo-200/50":"bg-emerald-100 text-emerald-700 shadow-emerald-200/50"}`,children:U?e.jsx(Oe,{size:28,className:"drop-shadow-sm"}):e.jsx(Us,{size:28,className:"drop-shadow-sm"})}),e.jsxs("div",{children:[e.jsx(tt,{className:"text-2xl font-display font-black text-[#1e293b] leading-tight",children:U?"Edit User Access":"Onboard New User"}),e.jsxs("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-[0.2em] mt-1 flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-indigo-500 animate-pulse"}),U?"User Identity Management":"System Enrollment Pipeline"]})]})]})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-10 gap-y-6",children:[e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-[11px] font-black text-indigo-600 uppercase tracking-[0.15em] pb-1 border-b border-indigo-50",children:"Identity Details"}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Full Name"}),e.jsxs("div",{className:"relative group",children:[e.jsx(Y,{value:g.name,onChange:t=>{ae({...g,name:t.target.value}),ss.name&&$e(u=>({...u,name:void 0}))},placeholder:"Enter full name",className:`h-12 rounded-xl bg-slate-50 border-slate-200 focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all font-bold text-[#1e293b] ${ss.name?"border-rose-300 bg-rose-50/20":""}`}),ss.name&&e.jsx(ve,{size:14,className:"absolute right-3 top-1/2 -translate-y-1/2 text-rose-500"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Email Address"}),e.jsx(Y,{type:"email",value:g.email,onChange:t=>{U||ae({...g,email:t.target.value})},readOnly:!!U,placeholder:"name@example.com",className:`h-12 rounded-xl bg-slate-50 border-slate-200 focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all font-bold text-[#1e293b] ${U?"opacity-60 grayscale bg-slate-100":""}`})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Access Role"}),e.jsxs(V,{value:g.role,onValueChange:t=>{ae({...g,role:t,lrn:t==="Student"?g.lrn:""})},children:[e.jsx(W,{className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-black text-[#1e293b]",children:e.jsx(ke,{placeholder:"Role"})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"Student",className:"font-bold",children:"Student"}),e.jsx(y,{value:"Teacher",className:"font-bold",children:"Teacher"}),e.jsx(y,{value:"Admin",className:"font-bold",children:"Admin"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Status"}),e.jsxs(V,{value:g.status,onValueChange:t=>ae({...g,status:t}),children:[e.jsx(W,{className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-black text-[#1e293b]",children:e.jsx(ke,{placeholder:"Status"})}),e.jsxs(X,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"Active",className:"font-bold",children:"Active"}),e.jsx(y,{value:"Inactive",className:"font-bold",children:"Inactive"})]})]})]})]})]})}),e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-[11px] font-black text-indigo-600 uppercase tracking-[0.15em] pb-1 border-b border-indigo-50",children:"Contextual Assignment"}),g.role==="Student"?e.jsxs("div",{className:"space-y-4 animate-in fade-in slide-in-from-right-4 duration-500",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Grade Level"}),e.jsx(Y,{value:g.grade,onChange:t=>ae({...g,grade:t.target.value}),placeholder:"Grade 11",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-bold"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Section"}),e.jsx(Y,{value:g.section,onChange:t=>ae({...g,section:t.target.value}),placeholder:"STEM A",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-bold"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"LRN (Learner Reference Number)"}),e.jsx(Y,{value:g.lrn,onChange:t=>ae({...g,lrn:t.target.value}),placeholder:"12-digit number",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-black tracking-widest"})]})]}):e.jsxs("div",{className:"space-y-1.5 animate-in fade-in slide-in-from-right-4 duration-500",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Department / Office"}),e.jsx(Y,{value:g.department,onChange:t=>ae({...g,department:t.target.value}),placeholder:"e.g. Mathematics Department",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-bold"})]}),!U&&e.jsxs("div",{className:"space-y-1.5 pt-2",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Initial Password"}),e.jsxs("div",{className:"relative",children:[e.jsx(Y,{type:ts?"text":"password",value:g.password,onChange:t=>ae({...g,password:t.target.value}),className:"h-12 rounded-xl bg-slate-50 border-slate-200 pr-10 font-black tracking-widest"}),e.jsx("button",{type:"button",onClick:()=>Le(!ts),className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600",children:ts?e.jsx(at,{size:16}):e.jsx(Vt,{size:16})})]})]})]})})]}),e.jsxs(Gt,{className:"grid grid-cols-2 gap-3 pt-6 border-t border-slate-100",children:[e.jsx(k,{variant:"outline",className:`h-12 rounded-xl font-black uppercase tracking-widest text-[10px] transition-all border-2 ${U?"border-indigo-600/50 text-indigo-600 hover:bg-indigo-50":"border-emerald-600/50 text-emerald-600 hover:bg-emerald-50"}`,onClick:()=>Re(!1),disabled:w,children:"Cancel"}),e.jsx(k,{onClick:jt,className:`h-12 rounded-xl font-black uppercase tracking-widest gap-3 text-[10px] shadow-lg transition-all active:scale-95 ${U?"bg-indigo-600 hover:bg-indigo-700 shadow-indigo-500/25":"bg-emerald-600 hover:bg-emerald-700 shadow-emerald-500/25"}`,disabled:w,children:w?e.jsx(I,{size:16,className:"animate-spin"}):U?e.jsxs(e.Fragment,{children:[e.jsx(it,{size:16})," Save Changes"]}):e.jsxs(e.Fragment,{children:[e.jsx(Us,{size:16})," Onboard User"]})})]})]})]})}),e.jsx(Ws,{isOpen:gt,zIndexClass:"z-[70]",onClose:()=>{Me||(Ze(!1),es(null))},onConfirm:ft,title:ce?.title||"Confirm Action",message:ce?.message||"Proceed with this action?",confirmText:Me?"Processing...":ce?.confirmText||"Confirm",cancelText:"Cancel",type:"danger",icon:"delete"})]})},Te=({icon:s,title:a,subtitle:c})=>e.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-12 text-center",children:[e.jsx("div",{className:"w-14 h-14 rounded-2xl bg-slate-50 border border-slate-100 flex items-center justify-center",children:s}),e.jsx("p",{className:"text-[11px] font-black text-slate-500 uppercase tracking-widest",children:a}),c&&e.jsx("p",{className:"text-[10px] text-slate-400 font-medium max-w-xs leading-relaxed",children:c})]}),Za=()=>{const[s,a]=l.useState("30d"),[c,i]=l.useState(null),[n,m]=l.useState(!0),b=()=>{m(!0),Oa().then(i).catch(console.error).finally(()=>m(!1))};l.useEffect(()=>{b()},[]);const x={"7d":"7 Days","30d":"30 Days","90d":"90 Days","12m":"12 Months"},j=[{label:"Total Active Users",value:n?null:(c?.totalActiveUsers??0).toLocaleString(),icon:Ce,bg:"bg-[#4f46e5]",shadow:"shadow-indigo-500/20"},{label:"Completion Rate",value:"N/A",icon:Tt,bg:"bg-[#10b981]",shadow:"shadow-emerald-500/20"},{label:"Session Duration",value:"N/A",icon:fs,bg:"bg-[#8b5cf6]",shadow:"shadow-purple-500/20"},{label:"At-Risk Students",value:n?null:(c?.atRiskStudents??0).toString(),icon:Pe,bg:"bg-[#f43f5e]",shadow:"shadow-rose-500/20"}],w=[{label:"Achievements Unlocked",icon:Ts,color:"text-rose-600",bg:"bg-rose-50",border:"border-rose-100",value:n?null:(c?.achievementsUnlocked??0).toLocaleString()},{label:"XP Earned (Platform)",icon:Ae,color:"text-violet-600",bg:"bg-violet-50",border:"border-violet-100",value:n?null:(c?.totalXPEarned??0)>=1e6?`${((c?.totalXPEarned??0)/1e6).toFixed(1)}M`:(c?.totalXPEarned??0)>=1e3?`${Math.round((c?.totalXPEarned??0)/1e3)}K`:(c?.totalXPEarned??0).toLocaleString()},{label:"Active Streaks",icon:Mt,color:"text-orange-600",bg:"bg-orange-50",border:"border-orange-100",value:n?null:(c?.activeStreaks??0).toLocaleString()},{label:"AI Tutor Sessions",icon:$t,color:"text-sky-600",bg:"bg-sky-50",border:"border-sky-100",value:n?null:(c?.aiTutorSessions??0).toLocaleString()}];return e.jsxs("div",{className:"space-y-6 pt-6 xl:pt-8 pb-10 max-w-[1600px] mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-1.5 h-6 bg-[#9956DE] rounded-full"}),e.jsx("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-[0.2em]",children:"Platform Analytics"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center bg-white rounded-xl p-1 shadow-sm border border-slate-200/60",children:Object.entries(x).map(([p,o])=>e.jsx("button",{onClick:()=>a(p),disabled:!0,title:"Range selection unavailable",className:`px-3 py-1.5 rounded-lg text-[10px] font-black uppercase tracking-widest transition-all ${s===p?"bg-[#9956DE] text-white shadow-sm":"text-slate-500 hover:bg-slate-50"} opacity-50 cursor-not-allowed`,children:o},p))}),e.jsx("button",{onClick:b,disabled:n,title:"Refresh data",className:"p-2.5 rounded-xl bg-white border border-slate-200 text-slate-400 hover:text-[#9956DE] shadow-sm transition-all active:scale-95",children:e.jsx(ge,{size:14,className:n?"animate-spin":""})}),e.jsxs(k,{variant:"outline",disabled:!0,title:"Export unavailable",className:"h-9 px-4 gap-2 rounded-xl border-slate-200 text-[10px] font-black uppercase tracking-widest text-slate-400 opacity-50 cursor-not-allowed shadow-sm",children:[e.jsx(bs,{size:14}),"Export"]})]})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:j.map((p,o)=>{const A=p.icon;return e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.3,delay:o*.05},className:`relative overflow-hidden ${p.bg} ${p.shadow} p-5 rounded-[28px] text-white flex flex-col gap-3 group hover:scale-[1.02] transition-all duration-300 shadow-lg`,children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-700 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-700 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex items-center justify-between",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:p.label}),e.jsx("div",{className:"bg-white/20 p-2 rounded-xl backdrop-blur-sm group-hover:bg-white/30 transition-colors",children:e.jsx(A,{size:14})})]}),n?e.jsx("div",{className:"relative z-10 flex items-center gap-2",children:e.jsx(I,{size:18,className:"animate-spin opacity-60"})}):e.jsx("h3",{className:"relative z-10 text-3xl font-display font-black leading-none tracking-tight",children:p.value})]},p.label)})}),!n&&!c?.totalActiveUsers&&e.jsxs(K.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},className:"flex items-center gap-3 bg-amber-50 border border-amber-100 rounded-2xl px-5 py-3",children:[e.jsx(ie,{size:16,className:"text-amber-600 shrink-0"}),e.jsx("p",{className:"text-[10px] font-black text-amber-700 uppercase tracking-widest",children:"Limited data — KPIs populate as platform usage grows. Charts require time-series data."})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-12 gap-5",children:[e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.1},className:"xl:col-span-8 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center justify-between mb-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-indigo-50 text-indigo-600 flex items-center justify-center border border-indigo-100",children:e.jsx(Ys,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Performance Trends"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Students vs. Teacher Targets"})]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-indigo-400"}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Students"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-purple-400"}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Targets"})]})]})]}),e.jsx(Te,{icon:e.jsx(Yt,{size:22,className:"text-slate-300"}),title:"No performance data yet",subtitle:"Trend charts will generate as students complete quizzes and assessments."})]}),e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.15},className:"xl:col-span-4 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-purple-50 text-purple-600 flex items-center justify-center border border-purple-100",children:e.jsx(va,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Grade Distribution"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Current Term"})]})]}),e.jsx(Te,{icon:e.jsx(ie,{size:22,className:"text-slate-300"}),title:"No grade data",subtitle:"Import quiz results to see grade breakdowns."})]})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-12 gap-5",children:[e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.2},className:"xl:col-span-7 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-sky-50 text-sky-600 flex items-center justify-center border border-sky-100",children:e.jsx(ze,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Subject Engagement"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Enrollment & Completion"})]})]}),e.jsx("div",{className:"rounded-2xl border border-slate-200/60 overflow-hidden",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-slate-50/80",children:[e.jsx("th",{className:"text-left text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Subject"}),e.jsx("th",{className:"text-right text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Enrolled"}),e.jsx("th",{className:"text-right text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Completion"}),e.jsx("th",{className:"text-right text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Avg. Score"}),e.jsx("th",{className:"text-left text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3 w-32",children:"Progress"})]})}),e.jsx("tbody",{children:e.jsx("tr",{children:e.jsx("td",{colSpan:5,className:"px-4 py-8",children:e.jsx(Te,{icon:e.jsx(ie,{size:20,className:"text-slate-300"}),title:"No subject data available",subtitle:"Import class enrollment records to view engagement."})})})})]})})]}),e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.25},className:"xl:col-span-5 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-orange-50 text-orange-600 flex items-center justify-center border border-orange-100",children:e.jsx(Lt,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Weekly Activity"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Sessions Per Day"})]})]}),e.jsx(Te,{icon:e.jsx(Pe,{size:22,className:"text-slate-300"}),title:"No session activity yet",subtitle:"Student logins and session data will appear here."})]})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-12 gap-5",children:[e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.3},className:"xl:col-span-5 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-rose-50 text-rose-600 flex items-center justify-center border border-rose-100",children:e.jsx(Ts,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Gamification Overview"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Engagement Metrics"})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3",children:w.map(p=>{const o=p.icon;return e.jsxs("div",{className:`${p.bg} border ${p.border} rounded-2xl p-4 group hover:scale-[1.02] transition-all duration-200`,children:[e.jsx("div",{className:"flex items-center justify-between mb-2",children:e.jsx(o,{size:18,className:p.color})}),n?e.jsx("div",{className:"w-12 h-5 bg-white/60 rounded-lg mt-1 mb-1 animate-pulse"}):e.jsx("p",{className:"text-xl font-black text-[#1e293b] leading-none",children:p.value}),e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest mt-2",children:p.label})]},p.label)})})]}),e.jsxs(K.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.35},className:"xl:col-span-7 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-emerald-50 text-emerald-600 flex items-center justify-center border border-emerald-100",children:e.jsx(Ve,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Top Performing Classes"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Ranked by Average Score"})]})]}),e.jsx(Te,{icon:e.jsx(ie,{size:22,className:"text-slate-300"}),title:"No class data yet",subtitle:"Import class and student records to see top performers."})]})]})]})};async function el(){return fe("/api/admin/ai-monitoring/summary")}async function sl(){return fe("/api/admin/ai-monitoring/refresh",{method:"POST"})}function tl(){const s=Ut(),{data:a,isLoading:c,isError:i,error:n}=Jt({queryKey:["ai-monitoring"],queryFn:el,refetchInterval:3e4,staleTime:15e3});return{data:a,isLoading:c,isError:i,error:n,refetch:async()=>{await sl(),s.invalidateQueries({queryKey:["ai-monitoring"]})}}}const Ge=({title:s,value:a,subValue:c,icon:i,badge:n,gradient:m="from-slate-800 to-slate-900"})=>e.jsxs("div",{className:`relative rounded-xl bg-gradient-to-br ${m} p-5 text-white shadow-lg overflow-hidden`,children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-white/60 uppercase tracking-wide",children:s}),e.jsx("p",{className:"text-2xl font-bold",children:a}),c&&e.jsx("p",{className:"text-xs text-white/50",children:c})]}),e.jsx("div",{className:"rounded-lg bg-white/10 p-2",children:i})]}),n&&e.jsx("span",{className:"absolute top-2 right-2 rounded-full bg-amber-400/90 px-2 py-0.5 text-[10px] font-semibold text-amber-900",children:n})]}),al=({promoExpiresUtc:s,daysUntilPromoEnds:a,fullPriceInputRate:c,fullPriceOutputRate:i})=>{const[n,m]=l.useState(!1),b=l.useMemo(()=>{if(!s)return a;const x=new Date(s).getTime()-Date.now();return Math.max(0,Math.ceil(x/(1e3*60*60*24)))},[s,a]);return n?null:e.jsxs("div",{className:"relative rounded-lg border border-amber-300/50 bg-amber-50 px-4 py-3 text-sm text-amber-900",children:[e.jsx("button",{onClick:()=>m(!0),className:"absolute top-2 right-2 rounded p-1 hover:bg-amber-200/50","aria-label":"Dismiss",children:e.jsx(js,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"flex items-start gap-2 pr-6",children:[e.jsx(Ae,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-amber-600"}),e.jsxs("div",{children:[e.jsx("span",{className:"font-semibold",children:"DeepSeek V4 Pro is currently 75% OFF"})," ","(cache-miss: $0.435/1M, output: $0.87/1M). Sale ends May 31, 2026 at 15:59 UTC — ",e.jsxs("strong",{children:[b," days remaining"]}),".",e.jsx("br",{}),e.jsxs("span",{className:"text-amber-700",children:["Full price after sale: $",c,"/1M input · $",i,"/1M output."]})]})]})]})},Hs=({title:s,feature:a})=>a?e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4 shadow-sm",children:[e.jsx("p",{className:"text-xs font-medium text-slate-500 uppercase tracking-wide mb-2",children:s}),e.jsx("p",{className:"text-lg font-bold text-slate-900",children:a.featureName}),e.jsxs("div",{className:"mt-2 flex items-center gap-3 text-xs text-slate-600",children:[e.jsxs("span",{children:["$",a.monthlyCost.toFixed(4)]}),e.jsx("span",{className:"text-slate-300",children:"|"}),e.jsxs("span",{children:[a.totalRequests.toLocaleString()," reqs"]}),e.jsx("span",{className:"text-slate-300",children:"|"}),e.jsxs("span",{children:[(a.cacheHitRate*100).toFixed(0),"% cache"]})]})]}):null,ll=({features:s})=>{const a=[...s].sort((c,i)=>i.monthlyCost-c.monthlyCost);return e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4 shadow-sm",children:[e.jsx("p",{className:"text-xs font-medium text-slate-500 uppercase tracking-wide mb-3",children:"Resource Breakdown"}),e.jsx("div",{className:"space-y-2",children:a.map(c=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"truncate font-medium text-slate-700",children:c.featureName}),e.jsxs("span",{className:"text-xs text-slate-500",children:["$",c.monthlyCost.toFixed(4)]})]}),e.jsx("div",{className:"mt-1 h-1.5 w-full rounded-full bg-slate-100 overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-indigo-500",style:{width:`${Math.min(c.costShare,100)}%`}})})]}),e.jsxs("span",{className:"text-xs text-slate-400 w-10 text-right",children:[c.costShare.toFixed(0),"%"]})]},c.featureId))})]})},rl=({open:s,onClose:a,features:c})=>s?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:a,children:e.jsxs("div",{className:"relative w-full max-w-2xl max-h-[80vh] overflow-y-auto rounded-xl bg-white p-6 shadow-xl",onClick:i=>i.stopPropagation(),children:[e.jsx("button",{onClick:a,className:"absolute top-3 right-3 rounded p-1 hover:bg-slate-100","aria-label":"Close",children:e.jsx(js,{className:"h-5 w-5 text-slate-500"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-900 mb-4",children:"AI Feature Directory"}),e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b text-left text-xs text-slate-500 uppercase",children:[e.jsx("th",{className:"pb-2",children:"Feature"}),e.jsx("th",{className:"pb-2",children:"Model"}),e.jsx("th",{className:"pb-2 text-right",children:"Cost"}),e.jsx("th",{className:"pb-2 text-right",children:"Requests"}),e.jsx("th",{className:"pb-2 text-right",children:"Cache Hit"})]})}),e.jsx("tbody",{children:c.map(i=>e.jsxs("tr",{className:"border-b border-slate-100",children:[e.jsx("td",{className:"py-2 font-medium text-slate-800",children:i.featureName}),e.jsx("td",{className:"py-2 text-slate-600",children:i.modelId}),e.jsxs("td",{className:"py-2 text-right",children:["$",i.monthlyCost.toFixed(4)]}),e.jsx("td",{className:"py-2 text-right",children:i.totalRequests.toLocaleString()}),e.jsxs("td",{className:"py-2 text-right",children:[(i.cacheHitRate*100).toFixed(0),"%"]})]},i.featureId))})]})]})}):null,il=({pricingMeta:s})=>{const[a,c]=l.useState(!1);return e.jsxs("div",{className:"relative inline-block",children:[e.jsx("button",{onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),className:"rounded p-1 text-slate-400 hover:text-slate-600","aria-label":"Pricing info",children:e.jsx(Js,{className:"h-4 w-4"})}),a&&e.jsxs("div",{className:"absolute bottom-full left-1/2 z-50 mb-2 w-64 -translate-x-1/2 rounded-lg border border-slate-200 bg-white p-3 text-xs shadow-lg",children:[e.jsx("p",{className:"font-semibold text-slate-800 mb-1",children:s.isPromotional?"Promotional Pricing (75% OFF)":"Standard Pricing"}),e.jsxs("div",{className:"space-y-1 text-slate-600",children:[e.jsxs("p",{children:["Input (cache miss): ",e.jsxs("strong",{children:["$",s.currentInputCacheMissRate,"/1M"]})]}),e.jsxs("p",{children:["Output: ",e.jsxs("strong",{children:["$",s.currentOutputRate,"/1M"]})]}),s.isPromotional&&e.jsxs(e.Fragment,{children:[e.jsx("hr",{className:"my-1 border-slate-100"}),e.jsxs("p",{className:"text-slate-400",children:["Full price: $",s.fullPriceInputRate,"/1M in · $",s.fullPriceOutputRate,"/1M out"]})]})]})]})]})},nl=()=>{const{data:s,isLoading:a,refetch:c}=tl(),[i,n]=l.useState(!1),[m,b]=l.useState(!1),x=async()=>{b(!0);try{await c()}finally{b(!1)}};if(a||!s)return e.jsxs("div",{className:"space-y-4 p-1",children:[e.jsx(cs,{className:"h-12 w-full rounded-lg"}),e.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:Array.from({length:4}).map((p,o)=>e.jsx(cs,{className:"h-32 rounded-xl"},o))}),e.jsx("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:Array.from({length:3}).map((p,o)=>e.jsx(cs,{className:"h-40 rounded-xl"},o))})]});const j=s.features.find(p=>p.isTopSpending),w=s.features.find(p=>p.isMostActive);return e.jsxs("div",{className:"space-y-5 p-1",children:[s.promotionalPricingActive&&e.jsx(al,{promoExpiresUtc:s.pricingMeta.promoExpiresUtc,daysUntilPromoEnds:s.pricingMeta.daysUntilPromoEnds,fullPriceInputRate:s.pricingMeta.fullPriceInputRate,fullPriceOutputRate:s.pricingMeta.fullPriceOutputRate}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(il,{pricingMeta:s.pricingMeta}),e.jsxs("span",{className:"text-xs text-slate-400",children:["Last updated: ",new Date(s.lastUpdated).toLocaleTimeString()]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{onClick:()=>n(!0),className:"inline-flex items-center gap-1.5 rounded-lg border border-slate-200 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-50",children:[e.jsx(ya,{className:"h-3.5 w-3.5"})," Directory"]}),e.jsxs("button",{onClick:x,disabled:m,className:"inline-flex items-center gap-1.5 rounded-lg bg-indigo-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-indigo-700 disabled:opacity-50",children:[e.jsx(ge,{className:`h-3.5 w-3.5 ${m?"animate-spin":""}`})," Refresh"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Ge,{title:"Monthly Cost",value:`$${s.monthlyCost.toFixed(2)}`,subValue:`Would be ~$${s.estimatedCostAfterPromo.toFixed(2)} at full price`,icon:e.jsx(Zt,{className:"h-5 w-5"}),gradient:"from-emerald-600 to-emerald-800"}),e.jsx(Ge,{title:"Active Engine",value:s.activeEngine,subValue:s.engineTier,icon:e.jsx(Vs,{className:"h-5 w-5"}),badge:s.promotionalPricingActive?"75% OFF until May 31":void 0,gradient:"from-indigo-600 to-indigo-800"}),e.jsx(Ge,{title:"Total Requests",value:s.totalUsage.toLocaleString(),subValue:s.billingCycleLabel,icon:e.jsx(Pe,{className:"h-5 w-5"}),gradient:"from-violet-600 to-violet-800"}),e.jsx(Ge,{title:"Cache Efficiency",value:`${(s.cacheHitRate*100).toFixed(1)}%`,subValue:"Cache hits: $0.003625/1M vs miss: $0.435/1M",icon:e.jsx(ie,{className:"h-5 w-5"}),gradient:"from-sky-600 to-sky-800"})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[e.jsx(Hs,{title:"Top Spending",feature:j}),e.jsx(Hs,{title:"Most Active",feature:w}),e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4 shadow-sm",children:[e.jsx("p",{className:"text-xs font-medium text-slate-500 uppercase tracking-wide mb-2",children:"Cost Breakdown"}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-slate-600",children:"Cache Hit"}),e.jsxs("span",{className:"font-medium",children:["$",s.costBreakdown.cacheHitCost.toFixed(6)]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-slate-600",children:"Cache Miss"}),e.jsxs("span",{className:"font-medium",children:["$",s.costBreakdown.cacheMissCost.toFixed(6)]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-slate-600",children:"Output"}),e.jsxs("span",{className:"font-medium",children:["$",s.costBreakdown.outputCost.toFixed(6)]})]})]})]})]}),e.jsx(ll,{features:s.features}),e.jsx(rl,{open:i,onClose:()=>n(!1),features:s.features})]})},ye=He.map(s=>({id:s.id,name:s.name,code:s.code,gradeLevel:s.gradeLevel,semester:s.semester,color:s.color})),cl=()=>{const{userProfile:s}=Qe(),{availability:a,loading:c,error:i}=sa(),[n,m]=l.useState(null),[b,x]=l.useState({}),j=l.useCallback(async(o,A)=>{if(!s?.uid){v.error("You must be logged in as admin to change availability");return}m(o);try{await ta(o,A,s.uid),v.success(`${ye.find(C=>C.id===o)?.name||o} is now ${A?"available":"locked"}`)}catch(C){v.error("Failed to update subject availability"),console.error(C)}finally{m(null)}},[s?.uid]),w=l.useCallback((o,A)=>{x(C=>({...C,[o]:A}))},[]),p=l.useCallback(async o=>{if(!s?.uid){v.error("You must be logged in as admin");return}const A=b[o]?.trim()||null;m(o);try{await aa(o,A,s.uid),v.success("PDF path updated")}catch(C){v.error("Failed to update PDF path"),console.error(C)}finally{m(null)}},[b,s?.uid]);return e.jsxs("div",{className:"flex flex-col min-h-full space-y-8 pt-6 xl:pt-8 animate-in fade-in slide-in-from-bottom-4 duration-700 pb-6",children:[c&&e.jsx("div",{className:"flex items-center justify-end px-2",children:e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 bg-indigo-50 text-indigo-600 rounded-2xl border border-indigo-100 animate-pulse",children:[e.jsx(I,{size:16,className:"animate-spin"}),e.jsx("span",{className:"text-[10px] font-black uppercase tracking-widest",children:"Syncing Subject Cloud Data..."})]})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4",children:[{label:"Total Subjects",value:ye.length,icon:ze,bg:"bg-[#4f46e5]",shadow:"shadow-indigo-500/20"},{label:"Available",value:ye.filter(o=>a[o.id]?.available!==!1).length,icon:Sa,bg:"bg-[#10b981]",shadow:"shadow-emerald-500/20"},{label:"Locked",value:ye.filter(o=>a[o.id]?.available===!1).length,icon:Qs,bg:"bg-[#ef4444]",shadow:"shadow-rose-500/20"},{label:"RAG Sources",value:ye.filter(o=>a[o.id]?.pdfPath).length,icon:Ee,bg:"bg-[#8b5cf6]",shadow:"shadow-purple-500/20"}].map((o,A)=>e.jsxs("div",{className:`relative overflow-hidden ${o.bg} ${o.shadow} p-5 rounded-[28px] text-white flex flex-col gap-3 group hover:scale-[1.02] transition-all duration-300 shadow-lg`,children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-700 ease-out"}),e.jsxs("div",{className:"relative z-10 flex items-center justify-between",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:o.label}),e.jsx("div",{className:"bg-white/20 p-2 rounded-xl backdrop-blur-sm",children:e.jsx(o.icon,{size:14})})]}),e.jsx("h3",{className:"relative z-10 text-3xl font-display font-black leading-none tracking-tight",children:o.value})]},A))}),i&&e.jsxs("div",{className:"rounded-2xl border border-rose-200 bg-rose-50 px-6 py-4 flex items-center gap-3 animate-in shake duration-500",children:[e.jsx(ve,{className:"text-rose-600",size:20}),e.jsx("p",{className:"text-sm font-bold text-rose-700",children:i})]}),e.jsx("div",{className:"bg-white rounded-[32px] border border-slate-200/60 shadow-sm shadow-slate-200/50 overflow-hidden relative",children:e.jsxs(ct,{className:"w-full text-left border-collapse",children:[e.jsx(ot,{children:e.jsxs(Se,{className:"bg-[#9956DE] hover:bg-[#9956DE] border-b border-[#8b5cf6] sticky top-0 z-20 shadow-md",children:[e.jsx(he,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Subject Identity"}),e.jsx(he,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Grade / Semester"}),e.jsx(he,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Access Status"}),e.jsx(he,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Toggle Access"}),e.jsx(he,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"RAG Resource Mapping"})]})}),e.jsx(dt,{className:"divide-y divide-slate-50",children:ye.map(o=>{const A=a[o.id],C=A?.available??!0,E=b[o.id]??A?.pdfPath??"",P=A?.lastUpdated,h=n===o.id;return e.jsxs(Se,{className:"group hover:bg-slate-50/50 transition-all",children:[e.jsx(le,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:`w-12 h-12 rounded-2xl bg-gradient-to-br ${o.color} flex items-center justify-center text-white shadow-lg shadow-indigo-100 group-hover:scale-110 transition-transform duration-500`,children:e.jsx(ze,{size:20,className:"drop-shadow-sm"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-black text-[#1e293b] truncate text-sm leading-tight group-hover:text-indigo-600 transition-colors",children:o.name}),e.jsx("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-tighter mt-1",children:o.code})]})]})}),e.jsx(le,{className:"px-6 py-5",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-black text-slate-700 uppercase tracking-wide",children:o.gradeLevel}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-tight",children:o.semester})]})}),e.jsx(le,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("span",{className:` - inline-flex items-center gap-1.5 px-3 py-1.5 rounded-2xl text-[10px] font-black uppercase tracking-wider border - ${C?"bg-emerald-50 text-emerald-600 border-emerald-100":"bg-slate-50 text-slate-400 border-slate-100"} - `,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${C?"bg-emerald-500 animate-pulse":"bg-slate-300"}`}),C?"Available":"Locked"]}),P&&e.jsxs("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-tighter ml-1 flex items-center gap-1",children:[e.jsx(fs,{size:10}),"Updated: ",P.toLocaleString()]})]})}),e.jsx(le,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ea,{checked:C,onCheckedChange:N=>j(o.id,N),disabled:h,className:"data-[state=checked]:bg-emerald-500 data-[state=unchecked]:bg-slate-200","aria-label":`Toggle ${o.name} availability`}),h&&e.jsx(I,{size:16,className:"animate-spin text-indigo-500"})]})}),e.jsx(le,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative flex-1 group/input",children:[e.jsx(Ee,{size:14,className:"absolute left-3.5 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within/input:text-indigo-500 transition-colors"}),e.jsx(Y,{value:E,onChange:N=>w(o.id,N.target.value),placeholder:"Firebase path (e.g., rag/calculus.pdf)",className:"pl-10 h-10 text-xs font-bold rounded-xl bg-slate-50/50 border-slate-200 focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all",disabled:h})]}),e.jsx(k,{variant:"ghost",size:"icon",className:"h-10 w-10 rounded-xl text-slate-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all",onClick:()=>p(o.id),disabled:h,title:"Save PDF Path",children:h?e.jsx(I,{size:18,className:"animate-spin text-indigo-500"}):e.jsx(it,{size:18})})]})})]},o.id)})})]})})]})},ol=({isOpen:s,onClose:a})=>s?e.jsxs("div",{className:"fixed inset-0 z-[100] flex items-center justify-center p-4 sm:p-6",children:[e.jsx("div",{className:"absolute inset-0 bg-slate-900/40 backdrop-blur-sm animate-in fade-in duration-300",onClick:a}),e.jsxs("div",{className:"relative bg-white w-full max-w-4xl rounded-[40px] shadow-2xl border border-slate-200 overflow-hidden animate-in zoom-in slide-in-from-bottom-8 duration-500",children:[e.jsxs("div",{className:"px-10 pt-10 pb-6 flex items-center justify-between border-b border-slate-50 bg-slate-50/50",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-xl font-black text-[#1e293b] uppercase tracking-wider",children:"How It Works: Subject Governance"}),e.jsx("p",{className:"text-[11px] font-black text-indigo-500 uppercase tracking-[0.2em] mt-1",children:"Platform Curriculum Protocol & RAG Workflow"})]}),e.jsx("button",{onClick:a,className:"w-12 h-12 rounded-2xl flex items-center justify-center bg-white text-slate-400 hover:text-rose-500 hover:bg-rose-50 transition-all border border-slate-200 shadow-sm group",children:e.jsx(js,{size:20,className:"group-hover:rotate-90 transition-transform duration-300"})})]}),e.jsx("div",{className:"p-12",children:e.jsxs("div",{className:"flex flex-col md:flex-row items-center justify-between gap-12 relative",children:[e.jsx("div",{className:"absolute top-12 left-0 right-0 h-0.5 border-t-2 border-dashed border-indigo-100 hidden md:block z-0",style:{left:"10%",right:"10%"}}),[{step:"1",title:"Define Identity",desc:"Assign subject codes and grade levels in the core registry.",icon:ze,color:"text-indigo-600",bg:"bg-indigo-50"},{step:"2",title:"Map RAG Source",desc:"Link Firebase PDF paths to the AI Knowledge Base.",icon:Ae,color:"text-amber-600",bg:"bg-amber-50"},{step:"3",title:"Global Toggle",desc:"Enable or lock subject access across all dashboards instantly.",icon:It,color:"text-emerald-600",bg:"bg-emerald-50"},{step:"4",title:"Audit Sync",desc:"Every modification is logged and synced to the cloud registry.",icon:hs,color:"text-purple-600",bg:"bg-purple-50"}].map((c,i)=>e.jsxs("div",{className:"flex-1 flex flex-col items-center text-center group relative z-10",children:[e.jsxs("div",{className:`relative mb-6 w-24 h-24 ${c.bg} rounded-[32px] flex items-center justify-center transition-all duration-500 group-hover:scale-110 group-hover:rotate-3 shadow-lg shadow-indigo-100/20`,children:[e.jsx(c.icon,{size:36,className:`${c.color} drop-shadow-sm`}),e.jsx("div",{className:"absolute -top-3 -left-3 bg-[#9956DE] text-white text-[12px] font-black w-10 h-10 rounded-2xl flex items-center justify-center shadow-lg border-2 border-white",children:c.step})]}),e.jsx("h4",{className:"text-sm font-black text-[#1e293b] uppercase tracking-wide mb-2",children:c.title}),e.jsx("p",{className:"text-xs text-slate-400 font-bold leading-relaxed max-w-[180px]",children:c.desc})]},i))]})}),e.jsxs("div",{className:"px-12 py-6 bg-slate-50/50 border-t border-slate-100 flex items-center justify-center gap-4",children:[e.jsx("div",{className:"flex -space-x-2",children:[1,2,3].map(c=>e.jsx("div",{className:"w-8 h-8 rounded-full border-2 border-white bg-indigo-100 flex items-center justify-center",children:e.jsx("div",{className:"w-4 h-4 rounded-full bg-indigo-500 animate-pulse"})},c))}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest",children:"Platform Governance Active & Monitored"})]})]})]}):null,dr=({onLogout:s,onOpenProfile:a,onOpenSettings:c})=>{const{userProfile:i}=Qe(),[n,m]=l.useState("Overview"),[b,x]=l.useState(!1),[j,w]=l.useState(!1),[p,o]=l.useState(!1),[A,C]=l.useState(null),[E,P]=l.useState(null),[h,N]=l.useState([]),[T,R]=l.useState([]),[L,O]=l.useState(!0),[ee,ne]=l.useState(!1),{unreadCount:H}=Ft(),[se,Q]=l.useState(!1),[_,te]=l.useState(!1),q=f=>(n===f||(m(f),f==="Subjects"&&(te(!0),setTimeout(()=>te(!1),2e3))),!0),F=f=>{q(f)&&o(!1)};l.useEffect(()=>{if(n!=="Overview"||!i)return;const f=String(i.role||"").toLowerCase(),r=f==="admin"||f==="teacher";let D=!1;return O(!0),Promise.all([Ia(),r?mt():Promise.resolve([]),Fa(3)]).then(([d,B,Ne])=>{D||(P(d),N(B.slice(0,4)),R(Ne))}).catch(console.error).finally(()=>{D||O(!1)}),()=>{D=!0}},[n,i]);const M=[{label:"Active Teachers",value:(E?.activeTeachers??0).toString(),icon:Ve,color:"bg-teal-100",iconColor:"text-teal-600"},{label:"Total Classes",value:(E?.totalClasses??0).toString(),icon:ze,color:"bg-indigo-100",iconColor:"text-indigo-600"},{label:"AI Inferences",value:(E?.aiPredictions??0).toLocaleString(),icon:Ae,color:"bg-amber-100",iconColor:"text-amber-600"},{label:"At-Risk Alerts",value:(E?.atRiskStudents??0).toString(),icon:ve,color:"bg-rose-100",iconColor:"text-rose-600"}];return e.jsxs("div",{className:"flex h-screen w-full bg-[#f8fafc] overflow-hidden font-body",children:[e.jsx("div",{className:"hidden lg:block",children:e.jsx(Es,{activeTab:n,setActiveTab:F,userRole:"admin",onOpenSettings:()=>c?.(),onLogout:()=>x(!0),sidebarCollapsed:j,setSidebarCollapsed:w})}),p&&e.jsxs(e.Fragment,{children:[e.jsx("button",{"aria-label":"Close navigation",className:"fixed inset-0 z-40 bg-slate-900/40 backdrop-blur-[1px] lg:hidden",onClick:()=>o(!1)}),e.jsx("div",{className:"fixed inset-y-0 left-0 z-50 p-3 lg:hidden",children:e.jsx(Es,{mode:"mobile",onRequestClose:()=>o(!1),activeTab:n,setActiveTab:F,userRole:"admin",onOpenSettings:()=>c?.(),onLogout:()=>{x(!0),o(!1)},sidebarCollapsed:!1})})]}),e.jsxs("div",{className:"flex-1 flex flex-col",children:[e.jsx("header",{className:"bg-transparent border-b border-[#e2e8f0]/40 px-[24px] xl:px-[32px] pt-[24px] pb-[16px] flex-shrink-0 z-30",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start justify-between gap-4 mb-0",children:[e.jsxs("div",{className:"flex-1 flex items-start gap-3",children:[e.jsx("button",{type:"button",onClick:()=>o(!0),className:"lg:hidden mt-1 p-2 rounded-lg border border-[#dde3eb] bg-white text-[#5a6578] hover:bg-[#edf1f7] transition-colors","aria-label":"Open navigation",children:e.jsx(Ot,{size:18})}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-[26px] font-bold text-[#1e293b] tracking-tight leading-tight",children:[n==="Overview"&&"Admin Dashboard",n==="Content"&&"Content & RAG",n==="Audit Log"&&"Audit Log",n==="User Management"&&"User Management",n==="Analytics"&&"Analytics",n==="AI Monitoring"&&"AI Monitoring",n==="Subjects"&&"Curriculum Control"]}),e.jsxs("p",{className:"text-[13px] text-[#64748b] mt-1",children:[n==="Overview"&&"System Overview & Management",n==="Content"&&"Upload PDFs for AI-powered content.",n==="Audit Log"&&"Monitor system activity and security.",n==="User Management"&&"Manage all user accounts and roles.",n==="Analytics"&&"Detailed system performance metrics.",n==="AI Monitoring"&&"Platform AI usage and system health.",n==="Subjects"&&"Manage academic subjects, availability, and RAG knowledge sources."]})]}),n==="Overview"&&e.jsxs("div",{className:"hidden xl:flex items-center gap-2 ml-4 mt-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#4f46e5]/10 border border-[#4f46e5]/20 rounded-lg",children:[e.jsx(Ce,{size:13,className:"text-[#4f46e5]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#4f46e5]",children:[(E?.totalStudents??0).toLocaleString()," students"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#0ea5e9]/10 border border-[#0ea5e9]/20 rounded-lg",children:[e.jsx(Ve,{size:13,className:"text-[#0ea5e9]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#0ea5e9]",children:[E?.activeTeachers??0," teachers"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-amber-500/10 border border-amber-500/20 rounded-lg",children:[e.jsx(Ae,{size:13,className:"text-amber-600"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-amber-600",children:[(E?.aiPredictions??0).toLocaleString()," inferences"]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0 self-end sm:self-auto",children:[n==="Subjects"&&e.jsxs("div",{className:"relative",children:[e.jsx("button",{onClick:()=>Q(!0),className:"relative w-10 h-10 flex items-center justify-center bg-indigo-600 hover:bg-indigo-700 rounded-full shadow-lg shadow-indigo-200 text-white transition-all cursor-pointer hover:scale-110 active:scale-95 animate-in zoom-in duration-300","aria-label":"How it works",children:e.jsx(la,{size:20})}),_&&e.jsxs("div",{className:"absolute top-12 left-1/2 -translate-x-1/2 px-3 py-1.5 bg-[#1e293b] text-white text-[10px] font-black uppercase tracking-widest rounded-lg shadow-xl whitespace-nowrap animate-in fade-in slide-in-from-top-2 duration-300 z-50",children:["How It Works?",e.jsx("div",{className:"absolute -top-1 left-1/2 -translate-x-1/2 w-2 h-2 bg-[#1e293b] rotate-45"})]})]}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>ne(!ee),className:"relative w-10 h-10 flex items-center justify-center bg-white/60 hover:bg-white/80 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 text-[#64748b] hover:text-[#1e293b] transition-colors cursor-pointer hover:scale-[1.02]","aria-label":"View notifications",children:[e.jsx(ra,{size:18}),H>0&&e.jsx("span",{className:"absolute top-2.5 right-2.5 w-2 h-2 bg-rose-500 rounded-full border border-white"})]}),e.jsx(Bt,{isOpen:ee,onClose:()=>ne(!1),onViewAll:()=>q("Audit Log")})]}),e.jsxs("div",{onClick:a,className:"flex items-center gap-2 bg-white/60 px-4 py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 cursor-pointer hover:bg-white/80 transition-colors h-10 hover:scale-[1.02]",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-indigo-100 overflow-hidden shrink-0",children:e.jsx(_t,{src:i?.photo,name:i?.name||"Admin",gender:i?.gender,className:"w-full h-full object-cover"})}),e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:i?.name||"Admin"})]})]})]})}),e.jsxs("main",{className:`flex-1 overflow-y-auto px-[24px] xl:px-[32px] scrollbar-hide ${["User Management","Audit Log"].includes(n)?"pb-0":"pb-[32px]"}`,children:[n==="Overview"&&e.jsxs("div",{className:"max-w-[1600px] mx-auto space-y-8 pt-6 xl:pt-8",children:[e.jsxs("div",{className:"grid grid-cols-12 gap-6 h-[170px]",children:[e.jsxs("div",{className:"col-span-12 xl:col-span-4 h-full bg-gradient-to-br from-[#4f46e5] to-[#7c3aed] rounded-[28px] p-6 relative overflow-hidden shadow-sm shadow-indigo-500/10 group",children:[e.jsx("div",{className:"absolute -top-24 -right-24 w-64 h-64 bg-white/10 rounded-full blur-3xl group-hover:bg-white/20 transition-all duration-1000"}),e.jsxs("div",{className:"relative z-10 flex flex-col justify-between h-full",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-white/70 text-[10px] font-black uppercase tracking-[0.2em] mb-1.5",children:"Platform Overview"}),e.jsx("p",{className:"text-white text-4xl font-display font-black tracking-tighter leading-none",children:L?"...":(E?.totalStudents??0).toLocaleString()}),e.jsx("p",{className:"text-white/80 text-xs font-medium mt-1",children:"Total Active Students"})]}),e.jsxs("div",{className:"flex items-center gap-2 py-1 px-3 bg-white/10 backdrop-blur-md rounded-full w-fit border border-white/10",children:[e.jsx(Ys,{size:12,className:"text-emerald-400"}),e.jsx("span",{className:"text-white text-[10px] font-bold tracking-wide",children:"+12.5% increase"})]})]}),e.jsx("div",{className:"absolute -bottom-6 -right-6 opacity-10 group-hover:scale-110 group-hover:rotate-6 transition-all duration-700 pointer-events-none",children:e.jsx(Ce,{size:140,className:"text-white"})})]}),e.jsx("div",{className:"col-span-12 xl:col-span-8 h-full bg-white border border-slate-200/60 rounded-[28px] px-2 py-5 flex items-center shadow-sm shadow-slate-200/50",children:e.jsx("div",{className:"grid grid-cols-4 w-full h-full",children:M.map((f,r)=>e.jsxs("div",{className:`flex flex-col justify-center px-8 ${r!==3?"border-r border-slate-100":""}`,children:[e.jsx("div",{className:`w-10 h-10 ${f.color} rounded-xl flex items-center justify-center mb-3 shadow-sm`,children:e.jsx(f.icon,{size:20,className:f.iconColor})}),e.jsx("p",{className:"text-[24px] font-display font-black text-[#1e293b] leading-tight tracking-tight",children:L?"...":f.value}),e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-[0.15em] mt-0.5",children:f.label})]},r))})})]}),e.jsxs("div",{className:"grid grid-cols-12 gap-6 min-h-[330px]",children:[e.jsxs("div",{className:"col-span-12 xl:col-span-5 bg-white rounded-[28px] border border-slate-200/60 p-6 flex flex-col shadow-sm shadow-slate-200/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[16px] font-bold text-[#1e293b]",children:"System Performance"}),e.jsx("p",{className:"text-[11px] text-slate-400 font-medium",children:"AI vs Manual Activity"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-0.5 bg-slate-50 rounded-lg",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-[#6366f1]"}),e.jsx("span",{className:"text-[9px] font-black text-slate-500 uppercase tracking-wider",children:"AI"})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-0.5 bg-slate-50 rounded-lg",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-slate-200"}),e.jsx("span",{className:"text-[9px] font-black text-slate-500 uppercase tracking-wider",children:"Manual"})]})]})]}),e.jsx("div",{className:"flex-1 w-full min-h-[200px]",children:e.jsx(os,{width:"100%",height:"100%",children:e.jsxs(ia,{data:[{name:"M",ai:400,man:240},{name:"T",ai:300,man:139},{name:"W",ai:520,man:280},{name:"T",ai:480,man:390},{name:"F",ai:600,man:480},{name:"S",ai:200,man:100},{name:"S",ai:150,man:90}],margin:{top:0,right:0,left:-20,bottom:0},children:[e.jsx(na,{strokeDasharray:"4 4",vertical:!1,stroke:"#f1f5f9"}),e.jsx(ca,{dataKey:"name",axisLine:!1,tickLine:!1,tick:{fontSize:9,fontWeight:800,fill:"#cbd5e1"},dy:10}),e.jsx(oa,{axisLine:!1,tickLine:!1,tick:{fontSize:9,fontWeight:800,fill:"#cbd5e1"}}),e.jsx(da,{contentStyle:{borderRadius:"12px",border:"none",boxShadow:"0 15px 20px -5px rgb(0 0 0 / 0.1)",padding:"10px"},cursor:{fill:"#f8fafc"}}),e.jsx(Is,{dataKey:"ai",fill:"#6366f1",radius:[4,4,0,0],barSize:12}),e.jsx(Is,{dataKey:"man",fill:"#e2e8f0",radius:[4,4,0,0],barSize:12})]})})})]}),e.jsxs("div",{className:"col-span-12 xl:col-span-4 bg-white rounded-[28px] border border-slate-200/60 p-6 flex flex-col shadow-sm shadow-slate-200/50 group",children:[e.jsxs("div",{className:"flex items-start justify-between mb-1",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[16px] font-bold text-[#1e293b]",children:"AI Model Status"}),e.jsx("p",{className:"text-[11px] text-slate-400 font-medium",children:"Inference Tracking"})]}),e.jsx("div",{className:"w-9 h-9 bg-indigo-50 rounded-xl flex items-center justify-center",children:e.jsx(Pe,{size:16,className:"text-indigo-600"})})]}),e.jsxs("div",{className:"flex items-baseline gap-2 mb-4",children:[e.jsx("span",{className:"text-[38px] font-display font-black text-indigo-600 tracking-tighter leading-none",children:"160"}),e.jsx("span",{className:"text-[10px] font-black text-emerald-500 bg-emerald-50 px-2 py-0.5 rounded-full uppercase tracking-wider",children:"Optimal"})]}),e.jsx("div",{className:"flex-1 min-h-[120px]",children:e.jsx(os,{width:"100%",height:"100%",children:e.jsxs(xa,{data:[{v:10},{v:15},{v:12},{v:25},{v:18},{v:35},{v:28},{v:45}],children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"colorStatus",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:"#6366f1",stopOpacity:.15}),e.jsx("stop",{offset:"95%",stopColor:"#6366f1",stopOpacity:0})]})}),e.jsx(ma,{type:"monotone",dataKey:"v",stroke:"#6366f1",strokeWidth:3,fillOpacity:1,fill:"url(#colorStatus)"})]})})}),e.jsxs("button",{className:"w-full mt-4 py-3 bg-slate-50 text-[#1e293b] text-[11px] font-black uppercase tracking-[0.15em] rounded-xl hover:bg-indigo-600 hover:text-white transition-all flex items-center justify-center gap-2.5 group/btn",children:["Health Check ",e.jsx(ba,{size:14,className:"group-hover/btn:translate-x-0.5 group-hover/btn:-translate-y-0.5 transition-transform"})]})]}),e.jsxs("div",{className:"col-span-12 xl:col-span-3 flex flex-col gap-4",children:[e.jsx("h3",{className:"text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] pl-2",children:"Top Performers"}),e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[L?e.jsx("div",{className:"flex-1 flex items-center justify-center bg-white rounded-[28px] border border-slate-100",children:e.jsx(I,{size:24,className:"animate-spin text-slate-200"})}):T.slice(0,2).map((f,r)=>e.jsxs("div",{className:`relative rounded-[28px] border p-4 shadow-sm shadow-slate-200/50 transition-all cursor-pointer group overflow-hidden ${r===0?"bg-gradient-to-br from-emerald-50 to-white border-emerald-200/50":"bg-gradient-to-br from-indigo-50 to-white border-indigo-200/50"}`,children:[e.jsx("div",{className:`absolute -top-12 -right-12 w-32 h-32 rounded-full blur-2xl opacity-20 transition-all duration-700 group-hover:scale-125 ${r===0?"bg-emerald-400":"bg-indigo-400"}`}),e.jsxs("div",{className:"flex items-center gap-3 relative z-10",children:[e.jsxs("div",{className:"relative shrink-0",children:[e.jsx("div",{className:`p-[3px] rounded-[20px] shadow-sm ${r===0?"bg-gradient-to-tr from-emerald-500 to-emerald-200":"bg-gradient-to-tr from-indigo-500 to-indigo-200"}`,children:e.jsx("img",{src:f.avatar,alt:"",className:"w-11 h-11 rounded-[17px] object-cover bg-white"})}),e.jsx("div",{className:`absolute -top-2 -right-2 w-6 h-6 text-[10px] font-black rounded-full flex items-center justify-center border-2 border-white shadow-md ${r===0?"bg-emerald-500 text-white":"bg-indigo-500 text-white"}`,children:r===0?"🥇":"🥈"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h4",{className:`text-[13px] font-black truncate transition-colors ${r===0?"text-emerald-900 group-hover:text-emerald-600":"text-indigo-900 group-hover:text-indigo-600"}`,children:f.name}),e.jsx("div",{className:"flex items-center gap-1.5 mt-0.5",children:e.jsx("span",{className:`text-[8px] font-black uppercase tracking-widest px-1.5 py-0.5 rounded-md ${r===0?"bg-emerald-500/10 text-emerald-600":"bg-indigo-500/10 text-indigo-600"}`,children:f.class})})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("p",{className:`text-xl font-display font-black leading-none ${r===0?"text-emerald-600":"text-indigo-600"}`,children:[f.performance,"%"]}),e.jsx("p",{className:"text-[7px] font-black text-slate-400 uppercase tracking-tighter mt-1",children:"Mastery"})]})]})]},f.id)),e.jsx("button",{onClick:()=>m("Analytics"),className:"mt-auto py-2.5 text-[10px] font-black text-indigo-600 uppercase tracking-[0.2em] text-center bg-white border border-slate-200/60 rounded-xl hover:bg-slate-50 transition-all shadow-sm shadow-slate-200/50",children:"All Rankings"})]})]})]}),e.jsxs("div",{className:"flex flex-col xl:flex-row gap-6 pb-8 items-stretch",children:[e.jsxs("div",{className:"w-full xl:w-1/3 flex flex-col gap-6",children:[e.jsxs("div",{className:"bg-[#1e293b] rounded-[28px] p-6 text-white shadow-sm shadow-slate-900/10 relative overflow-hidden group min-h-[190px] flex flex-col justify-between shrink-0",children:[e.jsx("div",{className:"absolute -bottom-10 -right-10 opacity-5 group-hover:scale-110 group-hover:-rotate-12 transition-all duration-700 pointer-events-none",children:e.jsx(ve,{size:200})}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsx("div",{className:"w-10 h-10 bg-rose-500 rounded-xl flex items-center justify-center mb-4 shadow-lg shadow-rose-500/20",children:e.jsx(ve,{size:18,className:"text-white"})}),e.jsxs("div",{className:"px-2.5 py-1 bg-white/10 backdrop-blur-md rounded-full border border-white/10 flex items-center gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-rose-500 animate-pulse"}),e.jsx("span",{className:"text-[9px] font-black uppercase tracking-widest",children:"Urgent"})]})]}),e.jsx("h4",{className:"text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] mb-0.5",children:"Priority Attention"}),e.jsx("h3",{className:"text-xl font-display font-black tracking-tight leading-tight",children:"General Mathematics"})]}),e.jsxs("div",{className:"relative z-10 pt-2 flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-medium text-slate-400",children:"12 At-Risk Students"}),e.jsx("button",{className:"text-[10px] font-black uppercase tracking-widest text-indigo-400 hover:text-indigo-300 transition-colors",children:"Review"})]})]}),e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 p-7 flex flex-col items-center justify-center shadow-sm shadow-slate-200/50 relative overflow-hidden flex-1",children:[e.jsxs("div",{className:"absolute top-7 left-8",children:[e.jsx("h3",{className:"text-[14px] font-bold text-[#1e293b]",children:"Global Mastery"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-medium",children:"Average performance"})]}),e.jsxs("div",{className:"relative w-40 h-40 mt-6",children:[e.jsx(os,{width:"100%",height:"100%",children:e.jsx(pa,{children:e.jsxs(ha,{data:[{name:"Mastery",value:76},{name:"Remaining",value:24}],cx:"50%",cy:"50%",innerRadius:55,outerRadius:75,paddingAngle:8,dataKey:"value",startAngle:90,endAngle:450,stroke:"none",children:[e.jsx(Fs,{fill:"#6366f1"}),e.jsx(Fs,{fill:"#f1f5f9"})]})})}),e.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[e.jsx("span",{className:"text-[36px] font-display font-black text-[#1e293b] leading-none",children:"76%"}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-[0.1em] mt-1",children:"Overall"})]})]}),e.jsxs("div",{className:"mt-8 flex items-center gap-12",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-xl font-display font-black text-indigo-600 leading-none",children:"1,762"}),e.jsx("p",{className:"text-[8px] font-black text-slate-400 uppercase tracking-widest mt-1",children:"Passed"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-xl font-display font-black text-slate-300 leading-none",children:"762"}),e.jsx("p",{className:"text-[8px] font-black text-slate-400 uppercase tracking-widest mt-1",children:"Pending"})]})]}),e.jsx("div",{className:"absolute bottom-0 left-0 w-full h-1 bg-gradient-to-r from-indigo-500/20 to-purple-500/20"})]})]}),e.jsxs("div",{className:"w-full xl:w-2/3 flex flex-col gap-6",children:[e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 shadow-sm shadow-slate-200/50 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"px-6 py-4 border-b border-slate-50 flex items-center justify-between bg-slate-50/30",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"Subject Breakdown"}),e.jsx("p",{className:"text-[11px] text-slate-400 font-medium",children:"Core vs STEM performance"})]}),e.jsx("button",{className:"px-3 py-1.5 bg-white border border-slate-200 text-[10px] font-black text-[#1e293b] uppercase tracking-widest rounded-lg hover:bg-slate-50 transition-all",children:"Export"})]}),e.jsx("div",{className:"flex-1 overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-slate-50/20",children:[e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em]",children:"Subject"}),e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em]",children:"Category"}),e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em] text-center",children:"Enrolled"}),e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em]",children:"Progress"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-50/60",children:[{name:"General Mathematics",type:"Core",count:"4.2k",progress:85},{name:"Pre-Calculus (STEM)",type:"STEM",count:"1.8k",progress:62},{name:"Stats & Probability",type:"Core",count:"3.1k",progress:78},{name:"Basic Calculus",type:"STEM",count:"1.2k",progress:45}].map((f,r)=>e.jsxs("tr",{className:"hover:bg-slate-50/50 transition-colors group",children:[e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[13px] font-bold text-[#1e293b] group-hover:text-indigo-600 transition-colors",children:f.name}),e.jsx("span",{className:"text-[9px] font-medium text-slate-400",children:"Semester 1"})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsx("span",{className:`text-[8px] font-black px-2 py-0.5 rounded-md uppercase tracking-wider ${f.type==="STEM"?"bg-indigo-50 text-indigo-600 border border-indigo-100":"bg-slate-100 text-slate-500 border border-slate-200"}`,children:f.type})}),e.jsx("td",{className:"px-6 py-4 text-center",children:e.jsx("span",{className:"text-[12px] font-bold text-slate-600",children:f.count})}),e.jsx("td",{className:"px-6 py-4 min-w-[180px]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex-1 h-1.5 bg-slate-100 rounded-full overflow-hidden p-[1px]",children:e.jsx("div",{className:`h-full rounded-full ${f.progress>80?"bg-indigo-500":f.progress>60?"bg-indigo-400":"bg-rose-400"} transition-all duration-1000`,style:{width:`${f.progress}%`}})}),e.jsxs("span",{className:"text-[11px] font-black text-[#1e293b] w-8",children:[f.progress,"%"]})]})})]},r))})]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"Activity"}),e.jsx("div",{className:"w-7 h-7 bg-slate-50 rounded-lg flex items-center justify-center",children:e.jsx(Pe,{size:14,className:"text-slate-400"})})]}),e.jsx("div",{className:"space-y-5",children:h.slice(0,3).map((f,r)=>e.jsxs("div",{className:"flex gap-3 group",children:[e.jsx("div",{className:"w-9 h-9 rounded-xl bg-indigo-50 flex items-center justify-center shrink-0 group-hover:scale-110 transition-transform",children:e.jsx(ua,{size:14,className:"text-indigo-600"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[12px] font-bold text-[#1e293b] truncate leading-tight group-hover:text-indigo-600 transition-colors",children:f.action}),e.jsx("p",{className:"text-[10px] font-medium text-slate-400 truncate mt-0.5",children:f.details})]})]},r))})]}),e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"Load"}),e.jsx("div",{className:"w-7 h-7 bg-slate-50 rounded-lg flex items-center justify-center",children:e.jsx(Ae,{size:14,className:"text-slate-400"})})]}),e.jsx("div",{className:"space-y-5",children:[{label:"Foundational",color:"bg-emerald-400",val:45},{label:"Intermediate",color:"bg-indigo-400",val:35},{label:"Advanced",color:"bg-rose-400",val:20}].map((f,r)=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1.5",children:[e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-[0.15em]",children:f.label}),e.jsxs("span",{className:"text-[11px] font-black text-[#1e293b]",children:[f.val,"%"]})]}),e.jsx("div",{className:"h-1.5 bg-slate-50 rounded-full overflow-hidden p-[1px]",children:e.jsx("div",{className:`h-full rounded-full ${f.color}`,style:{width:`${f.val}%`}})})]},r))})]})]})]})]})]}),n==="Content"&&e.jsx(Pa,{}),n==="RAG Manager"&&e.jsx(Ga,{}),n==="Audit Log"&&e.jsx(Ba,{}),n==="User Management"&&e.jsx(Ja,{createIntentRole:A,onCreateIntentConsumed:()=>C(null)}),n==="Analytics"&&e.jsx(Za,{}),n==="AI Monitoring"&&e.jsx(nl,{}),n==="Subjects"&&e.jsx(cl,{})]})]}),e.jsx(ol,{isOpen:se,onClose:()=>Q(!1)}),e.jsx(Ws,{isOpen:b,onClose:()=>x(!1),onConfirm:s,title:"Logout Confirmation",message:"Are you sure you want to log out? This will end your current session.",confirmText:"Logout",cancelText:"Cancel"})]})};export{dr as default}; diff --git a/assets/AdminDashboard-i4G_vjZ1.js b/assets/AdminDashboard-i4G_vjZ1.js new file mode 100644 index 0000000000000000000000000000000000000000..e3bc4afaa4cfe12a360d9601764e53231e430891 --- /dev/null +++ b/assets/AdminDashboard-i4G_vjZ1.js @@ -0,0 +1,63 @@ +import{j as e,r as l,d as ps}from"./vendor-react-B4AQeu28.js";import{C as Vs,S as Ds}from"./Sidebar-Bm5I2Ejg.js";import Ws from"./ConfirmModal-BMBZzISp.js";import{e as fe,n as Ce,g as H,l as Re,j as k,h as Et,m as se,p as B,R as Se,N as zt,r as hs,O as Dt,P as Pt,o as Xs,u as Ze,L as Qs,S as us,x as Ks,v as ye,U as De,G as Ye,i as Rt,Q as Ps,V as Rs,W as Ts,q as Tt,A as Ms,Z as Pe,X as Mt,B as $t,T as Ys,a as Ue,F as Lt,Y as Ut,$ as It,D as Ft,M as Ot,J as _t}from"./index-pcr0VEFr.js";import{B as S}from"./button-AeTtN-Gk.js";import{S as Y,a as J,b as Ee,c as Z,d as y}from"./select-Dgzk2zFj.js";import{I as ie}from"./input-DfDzuOXr.js";import{S as Qe}from"./subjects-DsVN1z_r.js";import{getDocs as ee,query as Te,collection as Q,orderBy as Ie,deleteDoc as Bt,doc as Gt,limit as Je,where as $s,addDoc as Ht,serverTimestamp as qt}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{U as He}from"./upload-BDJuFJqK.js";import{D as ge}from"./LogoutActionButton-Bb9kSxNr.js";import{F as Ne,A as Me,I as Js,N as Vt}from"./NotificationDropdown-5cx88QEU.js";import{T as be}from"./trash-2-CcKz2OV0.js";import{S as Ls}from"./sparkles-CcaVyiD_.js";import{S as Us,D as Zs,a as et,b as st,c as tt,e as Wt}from"./dialog-CD4cPDri.js";import{D as fs}from"./download-DnmwFFXB.js";import{S as gs}from"./shield-check-DFEsr5NL.js";import{S as at}from"./search-NTEnzRsF.js";import{C as js}from"./clock-BUvVFwS_.js";import{E as lt,a as Xt}from"./eye-5Jz6KeDY.js";import{C as rt}from"./chevron-left-DV53pVuv.js";import{C as it}from"./chevron-right-BMVCfzLO.js";import{C as ke}from"./circle-alert-BVTBnraV.js";import{C as Qt,a as Kt}from"./vendor-radix-BPuEd8FG.js";import{C as Yt}from"./check-DcmcqBba.js";import{M as Jt}from"./mail-C-ekjMP7.js";import{P as Is}from"./plus-dU-HIq9R.js";import{S as nt}from"./save-UTAW-exi.js";import{C as Zt}from"./chart-column-BNfaspCb.js";import{u as ea}from"./useQuery-BbNTyvNN.js";import{X as vs}from"./x-W9f2bIhn.js";import{S as ds}from"./skeleton-DLZLprS1.js";import{D as sa}from"./dollar-sign-CsIn4CzM.js";import{S as ta}from"./switch-VziX97fW.js";import{u as aa,t as la,a as ra}from"./useSubjectAvailability-CRpOB4yl.js";import{C as ia}from"./circle-help-DA-BsSug.js";import{B as na}from"./bell-t5TgufAG.js";import{R as xs,B as ca,C as oa,X as da,Y as xa,T as ma,a as Fs,A as pa,d as ha,P as ua,e as ga,b as Os}from"./vendor-charts-D7t7JfSr.js";import{C as ba}from"./circle-check-DWLljvZa.js";import"./tooltip-C238w8wC.js";import"./shirt-DVTcv3em.js";import"./log-out-CXrb7Klg.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chevron-up-D_gmtVKu.js";import"./formatDistanceToNow-rY3oGFbJ.js";/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fa=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],ja=fe("arrow-up-right",fa);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const va=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]],_s=fe("ban",va);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Na=[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]],wa=fe("chart-pie",Na);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ya=[["path",{d:"M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473",key:"ol2ft2"}],["path",{d:"m16.5 3.5 5 5",key:"15e6fa"}],["path",{d:"m21.5 3.5-5 5",key:"m0lwru"}]],ct=fe("funnel-x",ya);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ka=[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]],Sa=fe("list",ka);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ca=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]],Aa=fe("lock-open",Ca);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ea=[["path",{d:"M14 22v-4a2 2 0 1 0-4 0v4",key:"hhkicm"}],["path",{d:"m18 10 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-7.382a1 1 0 0 1 .553-.894L6 10",key:"1xqip1"}],["path",{d:"M18 5v17",key:"1sw6gf"}],["path",{d:"m4 6 7.106-3.553a2 2 0 0 1 1.788 0L20 6",key:"9d2mlk"}],["path",{d:"M6 5v17",key:"1xfsm0"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}]],za=fe("school",Ea);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Da=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],qe=fe("square-pen",Da);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pa=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["polyline",{points:"16 11 18 13 22 9",key:"1pwet4"}]],Ke=fe("user-check",Pa);function ot({className:s,...a}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:Ce("w-full caption-bottom text-sm",s),...a})})}function dt({className:s,...a}){return e.jsx("thead",{"data-slot":"table-header",className:Ce("[&_tr]:border-b",s),...a})}function xt({className:s,...a}){return e.jsx("tbody",{"data-slot":"table-body",className:Ce("[&_tr:last-child]:border-0",s),...a})}function ze({className:s,...a}){return e.jsx("tr",{"data-slot":"table-row",className:Ce("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",s),...a})}function xe({className:s,...a}){return e.jsx("th",{"data-slot":"table-head",className:Ce("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",s),...a})}function te({className:s,...a}){return e.jsx("td",{"data-slot":"table-cell",className:Ce("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",s),...a})}const Ra=({onUploadSuccess:s})=>{const[a,n]=l.useState("upload"),[r,i]=l.useState(!1),[p,b]=l.useState(null),[d,v]=l.useState(!1),[N,m]=l.useState(null),[c,E]=l.useState(""),[A,D]=l.useState(""),[P,h]=l.useState("1"),[w,M]=l.useState(0),[$,U]=l.useState(null),[ne,ae]=l.useState(!1),me=l.useRef(null),[ce,oe]=l.useState([]),[q,G]=l.useState(!1),V=l.useCallback(async()=>{G(!0);try{const[o,T]=await Promise.all([ee(Te(Q(H,"courseMaterials"),Ie("createdAt","desc"))),ee(Te(Q(H,"classRecordImports"),Ie("createdAt","desc")))]),F=[...o.docs.map(le=>{const O=le.data();return{id:le.id,fileName:O.fileName||"Untitled",teacherEmail:O.teacherEmail||"",fileType:O.fileType||"PDF",className:O.className,createdAt:O.createdAt?.toDate?.()||new Date}}),...T.docs.map(le=>{const O=le.data();return{id:le.id,fileName:O.fileName||"Untitled",teacherEmail:O.teacherEmail||"",fileType:O.fileType||"CSV",className:O.className,createdAt:O.createdAt?.toDate?.()||new Date}})].sort((le,O)=>O.createdAt.getTime()-le.createdAt.getTime());oe(F)}catch(o){console.error("Failed to load uploaded files:",o)}finally{G(!1)}},[]),K=async(o,T)=>{try{await Bt(Gt(H,T,o)),k.success("File removed"),V()}catch{k.error("Failed to delete file")}};ps.useEffect(()=>{V()},[V]);const I=l.useCallback(async()=>{ae(!0);try{const o=await Re.getRagHealth();U({subjects:o.subjects||{},chunkCount:o.chunkCount||0,lastIngested:o.lastIngested||""})}catch{k.error("Failed to load RAG health status")}finally{ae(!1)}},[]);ps.useEffect(()=>{I()},[I]);const R=o=>{if(o.type!=="application/pdf"){k.error("Only PDF files are allowed");return}if(o.size>50*1024*1024){k.error("File size must be under 50MB");return}if(m(o),c){const T=Qe.find(F=>F.id===c);T&&D(T.name)}},f=l.useCallback(o=>{o.preventDefault(),v(!1);const T=o.dataTransfer.files[0];T&&R(T)},[c]),j=l.useCallback(o=>{o.preventDefault(),v(!0)},[]),de=l.useCallback(()=>v(!1),[]),x=o=>{E(o);const T=Qe.find(F=>F.id===o);T&&D(T.name)},W=async()=>{if(!N||!c||!A.trim()){k.error("Please select a PDF file, subject, and enter a subject name");return}i(!0),M(0);try{const o=new FormData;o.append("file",N),o.append("subjectId",c),o.append("subjectName",A.trim()),o.append("quarter",P);const T=setInterval(()=>{M(le=>Math.min(le+15,85))},300),F=await Re.uploadModulePdf(o);clearInterval(T),M(100),F.success?(k.success(`${N.name} uploaded! ${F.chunkCount??0} chunks indexed.`),m(null),F.chunkCount!==void 0&&s?.(c,F.chunkCount),I(),setTimeout(()=>n("inventory"),1e3)):k.error(F.error||"Upload failed")}catch(o){k.error(o instanceof Error?o.message:"Upload failed")}finally{i(!1),setTimeout(()=>M(0),500)}};return $&&Object.entries($.subjects).map(([o,T])=>({name:o,chunks:T,storagePath:"",status:T>0?"active":"missing"})).filter(o=>o.chunks>0),e.jsxs("div",{className:"space-y-4 pt-2 xl:pt-4 pb-4 max-w-[1200px] mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1 bg-white p-1 rounded-2xl border border-slate-200 shadow-sm",children:[e.jsxs("button",{onClick:()=>n("upload"),className:`flex items-center gap-2 px-5 py-2 rounded-xl text-[12px] font-black transition-all duration-300 ${a==="upload"?"bg-[#9956DE] text-white shadow-lg shadow-purple-200":"text-slate-400 hover:text-purple-600 hover:bg-purple-50"}`,children:[e.jsx(He,{size:14}),"Import"]}),e.jsxs("button",{onClick:()=>n("inventory"),className:`flex items-center gap-2 px-5 py-2 rounded-xl text-[12px] font-black transition-all duration-300 ${a==="inventory"?"bg-[#9956DE] text-white shadow-lg shadow-purple-200":"text-slate-400 hover:text-purple-600 hover:bg-purple-50"}`,children:[e.jsx(ge,{size:14}),"Inventory"]})]}),e.jsx("div",{className:"flex items-center gap-3"})]}),e.jsx(Et,{mode:"wait",children:a==="upload"?e.jsxs(se.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},className:"space-y-4",children:[e.jsxs("div",{className:"bg-white rounded-[24px] border border-slate-200 shadow-sm overflow-hidden group",children:[e.jsxs("div",{className:"p-6 border-b border-slate-50 bg-gradient-to-br from-white to-purple-50/20 relative",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-black text-[#1e293b] tracking-tight",children:"Learning Module Upload"}),e.jsx("p",{className:"text-[11px] text-slate-500 font-medium italic",children:"Provide curriculum context for AI tutoring logic."})]}),e.jsx("div",{className:"w-10 h-10 bg-[#9956DE] rounded-xl flex items-center justify-center text-white shadow-md transition-transform group-hover:scale-110",children:e.jsx(He,{size:20})})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{onDrop:f,onDragOver:j,onDragLeave:de,onClick:()=>!r&&me.current?.click(),className:` + relative border-2 border-dashed rounded-2xl p-6 text-center cursor-pointer transition-all duration-300 group/drop + ${d?"border-[#9956DE] bg-purple-50 scale-[0.99]":"border-slate-200 hover:border-[#9956DE] bg-white hover:bg-purple-50/30"} + ${r?"cursor-not-allowed opacity-60":""} + min-h-[160px] flex flex-col items-center justify-center + `,children:[e.jsx("input",{ref:me,type:"file",accept:".pdf",className:"hidden",onChange:o=>o.target.files?.[0]&&R(o.target.files[0])}),N?e.jsxs("div",{className:"flex items-center gap-4 text-left",children:[e.jsx("div",{className:"w-14 h-14 bg-purple-50 rounded-xl flex items-center justify-center text-purple-600 border border-purple-100 shadow-sm shrink-0",children:e.jsx(Ne,{size:28})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"font-black text-[14px] text-[#1e293b] truncate max-w-[300px]",children:N.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-[10px] text-purple-500 font-black uppercase",children:[(N.size/1024/1024).toFixed(2)," MB"]}),e.jsx("span",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest italic",children:"PDF Source"})]}),e.jsxs("button",{onClick:o=>{o.stopPropagation(),m(null)},className:"text-[10px] font-black text-rose-500 hover:text-rose-600 mt-1 flex items-center gap-1",children:[e.jsx(be,{size:10})," Replace"]})]})]}):e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx("div",{className:"w-12 h-12 bg-slate-50 rounded-xl flex items-center justify-center text-slate-300 mb-4 group-hover/drop:text-purple-500 group-hover/drop:bg-purple-50 transition-all",children:e.jsx(He,{size:24})}),e.jsx("h4",{className:"text-[14px] font-black text-[#1e293b]",children:"Drop PDF or click to browse"}),e.jsx("p",{className:"text-[10px] text-slate-400 mt-1 font-medium italic",children:"Max 50MB (SLM, Textbook, Guide)"})]}),w>0&&e.jsx("div",{className:"absolute inset-0 bg-white/95 backdrop-blur-[1px] rounded-2xl flex flex-col items-center justify-center p-8 z-20",children:e.jsxs("div",{className:"w-full max-w-xs space-y-3 text-center",children:[e.jsx("div",{className:"w-12 h-12 bg-[#9956DE] rounded-xl flex items-center justify-center mx-auto mb-2 animate-bounce",children:e.jsx(Ls,{size:24,className:"text-white"})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("h5",{className:"text-sm font-black text-[#1e293b]",children:r?"Analyzing Curriculum...":"Complete!"}),e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Platform Ingestion"})]}),e.jsx("div",{className:"h-2 bg-slate-100 rounded-full overflow-hidden p-0.5 border border-slate-200 mt-2",children:e.jsx(se.div,{className:"h-full bg-gradient-to-r from-purple-500 to-sky-500 rounded-full",initial:{width:0},animate:{width:`${w}%`},transition:{duration:.3}})})]})})]})})]}),e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Curriculum Subject"}),e.jsxs(Y,{value:c,onValueChange:x,disabled:r,children:[e.jsx(J,{className:"w-full h-10 bg-slate-50/50 border-slate-200 rounded-xl text-[12px] font-bold focus:ring-purple-500/20",children:e.jsx(Ee,{placeholder:"Select subject"})}),e.jsx(Z,{className:"rounded-xl border-slate-200",children:Qe.map(o=>e.jsx(y,{value:o.id,className:"rounded-lg py-2",children:e.jsxs("div",{className:"flex flex-col items-start",children:[e.jsx("span",{className:"font-black text-[12px]",children:o.name}),e.jsxs("span",{className:"text-[9px] text-slate-400 font-bold uppercase",children:[o.gradeLevel," • ",o.semester]})]})},o.id))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Display Label"}),e.jsx(ie,{value:A,onChange:o=>D(o.target.value),placeholder:"e.g. General Mathematics",disabled:r,className:"h-10 bg-slate-50/50 border-slate-200 rounded-xl text-[12px] font-bold px-4 focus-visible:ring-purple-500/20"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Quarter"}),e.jsxs(Y,{value:P,onValueChange:h,disabled:r,children:[e.jsx(J,{className:"w-full h-10 bg-slate-50/50 border-slate-200 rounded-xl text-[12px] font-bold focus:ring-purple-500/20",children:e.jsx(Ee,{})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"1",className:"rounded-lg text-[12px] font-bold",children:"First Quarter"}),e.jsx(y,{value:"2",className:"rounded-lg text-[12px] font-bold",children:"Second Quarter"}),e.jsx(y,{value:"3",className:"rounded-lg text-[12px] font-bold",children:"Third Quarter"}),e.jsx(y,{value:"4",className:"rounded-lg text-[12px] font-bold",children:"Fourth Quarter"})]})]})]})]}),e.jsx(S,{onClick:W,disabled:r||!N||!c||!A.trim(),className:"w-full h-12 gap-2 bg-[#9956DE] hover:bg-[#8b5cf6] text-white rounded-2xl shadow-lg shadow-purple-100 transition-all hover:scale-[1.01] active:scale-95 text-[14px] font-black",children:r?e.jsxs(e.Fragment,{children:[e.jsx(B,{size:16,className:"animate-spin"})," Ingesting..."]}):e.jsxs(e.Fragment,{children:[e.jsx(He,{size:16})," Deploy Knowledge Source"]})})]})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[{icon:Ls,color:"bg-purple-50",iconColor:"text-purple-600",title:"Grounding",desc:"Curriculum-pinned logic."},{icon:ge,color:"bg-sky-50",iconColor:"text-sky-600",title:"Indexing",desc:"Millisecond RAG retrieval."},{icon:Vs,color:"bg-emerald-50",iconColor:"text-emerald-600",title:"Extraction",desc:"Neural chunk parsing."}].map((o,T)=>e.jsxs("div",{className:"bg-white rounded-xl p-3 border border-slate-100 shadow-sm flex items-start gap-3",children:[e.jsx("div",{className:`w-8 h-8 rounded-lg ${o.color} flex items-center justify-center shrink-0`,children:e.jsx(o.icon,{size:14,className:o.iconColor})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-[10px] font-black text-[#1e293b] uppercase tracking-wide leading-none",children:o.title}),e.jsx("p",{className:"text-[9px] text-slate-400 leading-tight mt-1 font-medium italic",children:o.desc})]})]},T))})]},"upload-tab"):e.jsx(se.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},className:"space-y-4",children:e.jsx("div",{className:"bg-white rounded-[24px] border border-slate-200 shadow-sm overflow-hidden relative",children:e.jsxs(ot,{className:"w-full text-left border-collapse",children:[e.jsx(dt,{children:e.jsxs(ze,{className:"bg-[#9956DE] hover:bg-[#9956DE] border-b border-[#8b5cf6] sticky top-0 z-20 shadow-sm",children:[e.jsx(xe,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto",children:"File Name"}),e.jsx(xe,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto",children:"Uploaded By"}),e.jsx(xe,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto",children:"Type"}),e.jsx(xe,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto",children:"Date"}),e.jsx(xe,{className:"px-6 py-4 text-[10px] font-black text-white uppercase tracking-widest h-auto text-right",children:e.jsx(S,{variant:"ghost",size:"sm",className:"h-8 px-2 bg-white/10 text-white hover:bg-white/20 rounded-lg",onClick:V,disabled:q,children:e.jsx(Se,{size:12,className:q?"animate-spin":""})})})]})}),e.jsx(xt,{className:"divide-y divide-slate-50",children:q?e.jsx(ze,{children:e.jsxs(te,{colSpan:5,className:"h-48 text-center",children:[e.jsx(B,{size:24,className:"animate-spin text-purple-500 mx-auto"}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest mt-2",children:"Loading files..."})]})}):ce.length===0?e.jsx(ze,{children:e.jsxs(te,{colSpan:5,className:"h-48 text-center",children:[e.jsx(Ne,{size:24,className:"text-slate-200 mx-auto"}),e.jsx("p",{className:"text-[12px] font-black text-slate-400 mt-2",children:"No uploaded files found."})]})}):ce.map(o=>e.jsxs(ze,{className:"group hover:bg-purple-50/10 transition-all",children:[e.jsx(te,{className:"px-6 py-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Ne,{size:16,className:"text-purple-500"}),e.jsx("span",{className:"font-bold text-[13px] text-slate-800 truncate max-w-[200px]",children:o.fileName})]})}),e.jsx(te,{className:"px-6 py-4 text-[12px] text-slate-600",children:o.teacherEmail||"—"}),e.jsx(te,{className:"px-6 py-4",children:e.jsx("span",{className:"px-2 py-0.5 rounded-full text-[9px] font-black uppercase bg-slate-100 text-slate-600",children:o.fileType})}),e.jsx(te,{className:"px-6 py-4 text-[12px] text-slate-500",children:o.createdAt.toLocaleDateString()}),e.jsx(te,{className:"px-6 py-4 text-right",children:e.jsx(S,{variant:"ghost",size:"sm",className:"h-7 px-2 text-slate-400 hover:text-red-500 hover:bg-red-50",onClick:()=>K(o.id,"courseMaterials"),children:e.jsx(be,{size:14})})})]},o.id))})]})})},"inventory-tab")})]})};function mt(s){return s?s.charAt(0).toUpperCase()+s.slice(1):"Student"}function bs(s){if(!s||!s.toDate)return new Date().toISOString().replace("T"," ").slice(0,19);const a=s.toDate();return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")} ${String(a.getHours()).padStart(2,"0")}:${String(a.getMinutes()).padStart(2,"0")}:${String(a.getSeconds()).padStart(2,"0")}`}function Ta(){return bs({toDate:()=>new Date})}function Ma(s){if(!s)return"Never";const a=new Date(s);if(Number.isNaN(a.getTime()))return s;const r=Date.now()-a.getTime(),i=Math.floor(r/6e4);if(i<1)return"Just now";if(i<60)return`${i} minute${i!==1?"s":""} ago`;const p=Math.floor(i/60);if(p<24)return`${p} hour${p!==1?"s":""} ago`;const b=Math.floor(p/24);return b<7?`${b} day${b!==1?"s":""} ago`:a.toLocaleDateString()}function $a(s){const a=(s.grade||"").trim(),n=(s.section||"").trim(),r=[a,n].filter(Boolean).join(" - ");return{id:s.uid,name:s.name||"Unknown",email:s.email||"",role:mt(s.role||""),status:s.status||"Active",department:s.department||(s.role?.toLowerCase()==="student"?r||"Student":""),grade:a,section:n,classSectionId:s.classSectionId||void 0,classSection:r,lrn:(s.lrn||"").trim(),gender:s.gender||null,photo:(s.photo||"").trim(),lastLogin:Ma(s.lastLogin),createdAt:s.createdAt||void 0}}function es(s){if(s instanceof Xs){try{const a=JSON.parse(s.responseBody);if(a?.detail&&typeof a.detail=="string")return a.detail}catch{}return`Request failed (${s.status}).`}return s instanceof Error?s.message:"Request failed."}async function La(s={}){try{const a=await Re.getAdminUsers({page:s.page??1,pageSize:s.pageSize??25,search:s.searchQuery,role:s.roleFilter,status:s.statusFilter,grade:s.gradeFilter,section:s.sectionFilter,classSectionId:s.classSectionId});if(!a.success)throw new Error("Failed to load admin users");return{users:(a.users||[]).map($a),page:a.page,pageSize:a.pageSize,total:a.total,totalPages:a.totalPages,hasNextPage:a.hasNextPage}}catch(a){throw console.error("[adminService] getAdminUsersPage error:",a),a instanceof Dt?new Error("Loading users timed out. Please refresh and try again."):a instanceof Pt?new Error("Unable to reach the server. Please check your connection and retry."):a instanceof Xs&&a.status===504?new Error("Loading users took too long. Try narrowing your filters and retrying."):new Error(es(a))}}async function Ua(s,a){try{await Re.updateAdminUser(s,{...a.name!==void 0?{name:a.name}:{},...a.role!==void 0?{role:a.role}:{},...a.status!==void 0?{status:a.status}:{},...a.department!==void 0?{department:a.department}:{},...a.grade!==void 0?{grade:a.grade}:{},...a.section!==void 0?{section:a.section}:{},...a.lrn!==void 0?{lrn:a.lrn}:{}})}catch(n){throw new Error(es(n))}}async function Ia(s){try{const a=await Re.createAdminUser({name:s.name.trim(),email:s.email.trim().toLowerCase(),password:s.password,confirmPassword:s.confirmPassword,role:s.role,status:s.status,grade:s.grade.trim(),section:s.section.trim(),...s.lrn?.trim()?{lrn:s.lrn.trim()}:{}});if(!a.success||!a.userCreated||!a.uid)throw new Error(a.message||"Failed to create user account.");return{uid:a.uid,userCreated:a.userCreated,emailSent:a.emailSent,resultCode:a.resultCode,message:a.message,warnings:a.warnings??[],emailError:a.emailError}}catch(a){throw new Error(es(a))}}async function Fa(s){try{const a=await Re.bulkAdminUsers({action:s.action,userIds:s.userIds??[],excludeUserIds:s.excludeUserIds??[],filters:s.filters,role:s.role,status:s.status,grade:s.grade,section:s.section,lrn:s.lrn,dryRun:s.dryRun,exportFormat:s.exportFormat??"csv"});return{success:a.success,action:a.action,summary:a.summary,results:a.results,warnings:a.warnings||[],exportRows:a.export?.rows||[]}}catch(a){throw new Error(es(a))}}async function pt(){try{if(!zt.currentUser)return[];const s=Te(Q(H,"accessAuditLogs"),Ie("timestamp","desc"),Je(100)),n=(await ee(s)).docs.map(b=>{const d=b.data(),N=d.success!==!1?"Info":"Error",m=d.action||"";let c="System";return d.module==="admin"||m.startsWith("admin_")?c="User":m.includes("login")||m.includes("auth")?c="Auth":(m.includes("upload")||m.includes("course"))&&(c="Content"),{id:b.id,severity:N,timestamp:typeof d.timestamp=="string"?d.timestamp:bs(d.timestamp),user:{name:(()=>{const A=d.actorName||d.actorEmail||d.teacherEmail||d.teacherId||"SYSTEM";return A==="Unknown"||!A?"SYSTEM":A.includes("@")?A.split("@")[0].replace(/[._-]/g," ").replace(/\b\w/g,P=>P.toUpperCase()):A})(),role:mt(d.actorRole||d.role||"System"),avatar:null},action:m,category:c,details:d.description||(d.status?`Status: ${d.status}`:"")}}),r=Te(Q(H,"auditLogs"),Ie("timestampRaw","desc"),Je(50)),p=(await ee(r)).docs.map(b=>{const d=b.data(),v=d.user;return{id:`audit-${b.id}`,severity:d.severity||"Info",timestamp:d.timestamp||bs(d.timestampRaw),user:{name:v?.name||"SYSTEM",role:v?.role||"System",avatar:v?.avatar??null},action:d.action||"",category:d.category||"System",details:d.details||""}});return[...n,...p].sort((b,d)=>d.timestamp.localeCompare(b.timestamp)).slice(0,100)}catch(s){const a=s;return a?.code==="permission-denied"||a?.code==="firestore/permission-denied"?[]:(console.error("[adminService] getAuditLogs error:",s),[])}}async function ms(s,a,n,r,i){await Ht(Q(H,"auditLogs"),{severity:n,timestamp:Ta(),timestampRaw:qt(),user:i,action:s,category:a,details:r})}async function Oa(){try{const s=await ee(Q(H,"users"));let a=0,n=0,r=0;s.docs.forEach(d=>{const v=d.data();v.role==="student"&&(a++,v.overallRisk==="High"&&r++),v.role==="teacher"&&v.status!=="Inactive"&&n++});let i=0;try{i=(await ee(Q(H,"classrooms"))).size}catch{}let p=0;try{p=(await ee(Q(H,"xpActivities"))).size}catch{}let b=0;try{const d=await ee(Q(H,"progress")),v=[];d.docs.forEach(N=>{const m=N.data();typeof m.averageScore=="number"&&v.push(m.averageScore)}),b=v.length>0?Math.round(v.reduce((N,m)=>N+m,0)/v.length):0}catch{}return{totalStudents:a,activeTeachers:n,totalClasses:i,atRiskStudents:r,avgPerformance:b,aiPredictions:p}}catch(s){return console.error("[adminService] getDashboardStats error:",s),{totalStudents:0,activeTeachers:0,totalClasses:0,atRiskStudents:0,avgPerformance:0,aiPredictions:0}}}async function _a(s=3){const a=r=>{const i=r.data(),p=i.level||1,b=i.currentXP||0,d=Math.min(100,p*8+Math.round(b/100));return{id:r.id,name:i.name||"Student",avatar:i.photo||i.photoURL||hs(i.gender||null),class:i.grade||"Math",performance:d,level:p}},n=r=>r.sort((i,p)=>p.level!==i.level?p.level-i.level:p.performance-i.performance).slice(0,s);try{const r=Te(Q(H,"users"),$s("role","==","student"),Ie("level","desc"),Je(s)),i=await ee(r);return n(i.docs.map(a))}catch(r){if(r?.code==="failed-precondition")try{const p=Te(Q(H,"users"),$s("role","==","student"),Je(Math.max(50,s))),b=await ee(p);return n(b.docs.map(a))}catch(p){return console.error("[adminService] getTopPerformers fallback error:",p),[]}return console.error("[adminService] getTopPerformers error:",r),[]}}async function Ba(){try{const s=await ee(Q(H,"users"));let a=0,n=0,r=0,i=0,p=0;s.docs.forEach(v=>{const N=v.data();N.role==="student"&&(a++,N.overallRisk==="High"&&r++,N.streak>0&&p++,i+=N.totalXP||0),N.role==="teacher"&&n++});let b=0;try{b=(await ee(Q(H,"achievements"))).size}catch{}let d=0;try{d=(await ee(Q(H,"chatSessions"))).size}catch{}return{totalActiveUsers:a+n,totalStudents:a,totalTeachers:n,atRiskStudents:r,achievementsUnlocked:b,totalXPEarned:i,activeStreaks:p,aiTutorSessions:d}}catch(s){return console.error("[adminService] getAnalyticsSummary error:",s),{totalActiveUsers:0,totalStudents:0,totalTeachers:0,atRiskStudents:0,achievementsUnlocked:0,totalXPEarned:0,activeStreaks:0,aiTutorSessions:0}}}const Ga=[10,25,50,100],Ve=({title:s,value:a,subtitle:n,icon:r,variant:i})=>{const p={blue:"bg-[#5154E7] shadow-blue-200/50",purple:"bg-[#9956DE] shadow-purple-200/50",rose:"bg-[#F43F5E] shadow-rose-200/50",emerald:"bg-[#10B981] shadow-emerald-200/50"};return e.jsxs("div",{className:`relative overflow-hidden rounded-[24px] p-5 text-white shadow-lg transition-all hover:scale-[1.02] ${p[i]}`,children:[e.jsx("div",{className:"absolute -right-4 -top-4 opacity-10",children:e.jsx(r,{size:100})}),e.jsx("div",{className:"absolute right-4 top-4 w-8 h-8 rounded-full bg-white/20 flex items-center justify-center",children:e.jsx(r,{size:16})}),e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:s}),e.jsx("h3",{className:"text-2xl font-black mt-2 leading-none",children:a}),e.jsx("p",{className:"text-[10px] font-bold mt-4 opacity-70 uppercase tracking-widest",children:n}),e.jsx("div",{className:"absolute -bottom-8 -left-8 w-20 h-20 bg-white/10 rounded-full blur-2xl"})]})},Ha=()=>{const{userProfile:s,loading:a}=Ze(),[n,r]=l.useState([]),[i,p]=l.useState(!0),[b,d]=l.useState(!1),[v,N]=l.useState(""),[m,c]=l.useState("All Categories"),[E,A]=l.useState("All Severities"),[D,P]=l.useState("All Roles"),[h,w]=l.useState(null),[M,$]=l.useState(1),[U,ne]=l.useState(25),ae=l.useCallback(async()=>{if(a||!s)return;const x=String(s.role||"").toLowerCase();if(x!=="admin"&&x!=="teacher"){p(!1),d(!0);return}d(!1),p(!0);try{const W=await pt();r(W)}catch{k.error("Failed to load audit logs")}finally{p(!1)}},[a,s]);l.useEffect(()=>{ae()},[ae]);const me=n.filter(x=>x.severity==="Info").length;n.filter(x=>x.severity==="Warning").length;const ce=n.filter(x=>x.severity==="Error"||x.severity==="Critical").length,oe=x=>{switch(x){case"Info":return e.jsx(Js,{size:14});case"Warning":return e.jsx(Ks,{size:14});case"Error":return e.jsx(Us,{size:14});case"Critical":return e.jsx(ke,{size:14});default:return e.jsx(Me,{size:14})}},q=x=>{switch(x){case"Info":return"bg-sky-50 text-sky-600 border-sky-100";case"Warning":return"bg-amber-50 text-amber-600 border-amber-100";case"Error":return"bg-rose-50 text-rose-600 border-rose-100";case"Critical":return"bg-red-50 text-red-600 border-red-100 ring-1 ring-red-500";default:return"bg-slate-50 text-slate-600 border-slate-100"}},G={"All Categories":"All Categories",Auth:"Authentication",Data:"Data Operations",User:"User Management",System:"System Engine",Content:"Content Pipeline"},V={"All Severities":"All Severities",Info:"Information",Warning:"Warning",Error:"Error",Critical:"Critical"},K={"All Roles":"All Roles",Admin:"Administrator",Teacher:"Educator",Student:"Student"},I=l.useMemo(()=>n.filter(x=>{const W=x.action.toLowerCase().includes(v.toLowerCase())||x.details.toLowerCase().includes(v.toLowerCase())||x.user.name.toLowerCase().includes(v.toLowerCase()),o=m==="All Categories"||x.category===m,T=E==="All Severities"||x.severity===E,F=D==="All Roles"||x.user.role===D;return W&&o&&T&&F}),[n,v,m,E,D]),R=Math.max(Math.ceil(I.length/U),1),f=l.useMemo(()=>{const x=(M-1)*U;return I.slice(x,x+U)},[I,M,U]);if(l.useEffect(()=>{$(1)},[v,m,E,D]),b)return e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[400px] text-center p-8 bg-white rounded-[32px] border border-slate-200 mt-8",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-rose-50 flex items-center justify-center mb-6",children:e.jsx(Qs,{size:40,className:"text-rose-500"})}),e.jsx("h3",{className:"text-2xl font-black text-[#1e293b]",children:"Access Denied"}),e.jsx("p",{className:"text-slate-400 font-medium max-w-md mx-auto mt-2 uppercase text-[11px] tracking-widest",children:"Security policy restricts audit log visibility to administrative personnel only."})]});const j=I.length===0?0:(M-1)*U+1,de=Math.min(M*U,I.length);return e.jsxs("div",{className:"flex flex-col min-h-full animate-in fade-in duration-500",children:[e.jsxs("div",{className:"flex-1 space-y-8 pt-6 xl:pt-8 pb-6 px-1 max-w-[1600px] mx-auto w-full",children:[e.jsxs("div",{className:"flex items-center justify-between px-2 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-1.5 h-6 bg-[#9956DE] rounded-full"}),e.jsx("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-[0.2em]",children:"System Governance Pipeline"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{onClick:ae,disabled:i,className:"p-2.5 rounded-xl bg-white border border-slate-200 text-slate-400 hover:text-purple-600 shadow-sm transition-all active:scale-95 group",title:"Synchronize logs",children:e.jsx(Se,{size:14,className:i?"animate-spin":"group-hover:rotate-180 transition-transform duration-500"})}),e.jsxs("button",{disabled:!0,className:"flex items-center gap-2 px-4 py-2 bg-white border border-slate-200 text-slate-400 rounded-xl text-[10px] font-black uppercase tracking-widest opacity-60 cursor-not-allowed",children:[e.jsx(fs,{size:14})," Export Logs"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 shrink-0",children:[e.jsx(Ve,{title:"Total Events",value:i?"...":n.length,subtitle:"System-Wide Logs",icon:Ne,variant:"purple"}),e.jsx(Ve,{title:"Security Alerts",value:i?"...":ce,subtitle:"Critical Incidents",icon:Us,variant:"rose"}),e.jsx(Ve,{title:"Operational Info",value:i?"...":me,subtitle:"Routine Pipelines",icon:Ke,variant:"blue"}),e.jsx(Ve,{title:"System Health",value:ce>0?"Compromised":"Healthy",subtitle:"Live Monitoring",icon:gs,variant:ce>0?"rose":"emerald"})]})]}),e.jsx("div",{className:"sticky top-0 z-40 -mx-[24px] xl:-mx-[32px] px-[24px] xl:px-[32px] pt-4 pb-4 bg-[#f8fafc] backdrop-blur-sm",children:e.jsxs("div",{className:"flex flex-col xl:flex-row items-center gap-3",children:[e.jsxs("div",{className:"relative flex-1 w-full group",children:[e.jsx(at,{className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within:text-[#9956DE] transition-colors",size:16}),e.jsx(ie,{type:"text",placeholder:"Trace user identity, action strings, or operation details...",className:"pl-11 h-12 bg-white border-slate-200/60 rounded-2xl focus-visible:ring-[#9956DE]/20 focus-visible:border-[#9956DE] transition-all text-sm font-medium shadow-md shadow-slate-200/40",value:v,onChange:x=>N(x.target.value)})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 w-full xl:w-auto",children:[e.jsxs(Y,{value:m,onValueChange:c,children:[e.jsx(J,{className:"w-[200px] bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 rounded-xl h-12 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:G[m]||m})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Categories",className:"font-bold",children:"All Categories"}),e.jsx(y,{value:"Auth",className:"font-bold",children:"Authentication"}),e.jsx(y,{value:"Data",className:"font-bold",children:"Data Operations"}),e.jsx(y,{value:"User",className:"font-bold",children:"User Management"}),e.jsx(y,{value:"System",className:"font-bold",children:"System Engine"}),e.jsx(y,{value:"Content",className:"font-bold",children:"Content Pipeline"})]})]}),e.jsxs(Y,{value:E,onValueChange:A,children:[e.jsx(J,{className:"w-[200px] bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 rounded-xl h-12 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:V[E]||E})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Severities",className:"font-bold",children:"All Severities"}),e.jsx(y,{value:"Info",className:"font-bold",children:"Information"}),e.jsx(y,{value:"Warning",className:"font-bold",children:"Warning"}),e.jsx(y,{value:"Error",className:"font-bold",children:"Error"}),e.jsx(y,{value:"Critical",className:"font-bold",children:"Critical"})]})]}),e.jsxs(Y,{value:D,onValueChange:P,children:[e.jsx(J,{className:"w-[200px] bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 rounded-xl h-12 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:K[D]||D})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Roles",className:"font-bold",children:"All Roles"}),e.jsx(y,{value:"Admin",className:"font-bold",children:"Administrator"}),e.jsx(y,{value:"Teacher",className:"font-bold",children:"Educator"}),e.jsx(y,{value:"Student",className:"font-bold",children:"Student"})]})]}),e.jsx(S,{variant:"outline",size:"icon",onClick:()=>{N(""),c("All Categories"),A("All Severities"),P("All Roles")},disabled:!v&&m==="All Categories"&&E==="All Severities"&&D==="All Roles",className:"h-12 w-12 rounded-2xl border-slate-200/60 text-[#9956DE] hover:bg-purple-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all shadow-sm",title:"Reset Filters",children:e.jsx(ct,{size:18})})]})]})}),e.jsx("div",{className:"bg-white rounded-[32px] border border-slate-200/60 shadow-sm shadow-slate-200/40 relative",children:e.jsx("div",{className:"rounded-[32px]",children:e.jsxs("table",{className:"w-full text-left border-collapse min-w-[1000px]",children:[e.jsx("thead",{className:"sticky top-[80px] z-30 bg-[#f8fafc] backdrop-blur-sm shadow-[0_-12px_0_0_#f8fafc]",children:e.jsxs("tr",{className:"border-b border-[#8b5cf6]",children:[e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest whitespace-nowrap rounded-tl-[20px]",children:"Incident Level"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest whitespace-nowrap",children:"Timestamp"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"User Actor"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Action Performed"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Component"}),e.jsx("th",{className:"bg-[#9956DE] px-8 py-5 text-[11px] font-black text-white uppercase tracking-widest text-right whitespace-nowrap rounded-tr-[20px]",children:"Review"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-100",children:i?Array(10).fill(0).map((x,W)=>e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"h-20 p-8",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-slate-50 animate-pulse"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"w-32 h-3 bg-slate-50 animate-pulse rounded"}),e.jsx("div",{className:"w-48 h-2 bg-slate-50 animate-pulse rounded"})]})]})})},W)):f.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"h-64 text-center",children:e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx(us,{size:48,className:"text-slate-100 mb-4"}),e.jsx("p",{className:"text-[16px] font-black text-[#1e293b]",children:"No audit trails captured"}),e.jsx("p",{className:"text-[11px] font-bold text-slate-400 uppercase tracking-widest mt-1",children:"Try adjusting your tracking filters"})]})})}):f.map(x=>e.jsxs("tr",{className:"group hover:bg-purple-50/20 transition-colors",children:[e.jsx("td",{className:"px-8 py-5",children:e.jsxs("span",{className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-full text-[9px] font-black uppercase tracking-wider border ${q(x.severity)}`,children:[oe(x.severity),x.severity]})}),e.jsx("td",{className:"px-8 py-5",children:e.jsxs("div",{className:"flex items-center gap-2.5",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-slate-50 flex items-center justify-center text-slate-400",children:e.jsx(js,{size:14})}),e.jsx("span",{className:"text-[13px] font-bold text-[#1e293b]",children:x.timestamp})]})}),e.jsx("td",{className:"px-8 py-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-9 h-9 rounded-full bg-slate-50 border border-slate-100 flex items-center justify-center overflow-hidden shrink-0",children:x.user.avatar?e.jsx("img",{src:x.user.avatar,alt:x.user.name,className:"w-full h-full object-cover"}):e.jsx(us,{size:16,className:"text-slate-300"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-black text-[#1e293b] leading-none group-hover:text-[#9956DE] transition-colors truncate",children:x.user.name||"SYSTEM"}),e.jsx("p",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-tighter mt-1",children:x.user.role||"System"})]})]})}),e.jsxs("td",{className:"px-8 py-5",children:[e.jsx("p",{className:"text-sm font-bold text-[#1e293b] truncate max-w-[250px]",title:x.details,children:x.action}),e.jsx("p",{className:"text-[10px] text-slate-400 font-medium truncate max-w-[250px] mt-0.5",children:x.details})]}),e.jsx("td",{className:"px-8 py-5",children:e.jsx("span",{className:"text-[10px] font-black px-2.5 py-1 rounded-lg bg-slate-50 text-slate-600 border border-slate-100 uppercase tracking-widest",children:x.category})}),e.jsx("td",{className:"px-8 py-5 text-right",children:e.jsx("div",{className:"flex justify-end",children:e.jsx("button",{onClick:()=>w(x),className:"w-9 h-9 rounded-xl border border-slate-200 flex items-center justify-center text-slate-400 hover:text-[#9956DE] hover:border-[#9956DE]/30 hover:bg-purple-50 transition-all ",children:e.jsx(lt,{size:16})})})})]},x.id))})]})})}),e.jsxs("div",{className:"sticky bottom-0 z-50 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 px-12 py-3 bg-white border-t-2 border-slate-100 shadow-[0_-8px_30px_rgba(0,0,0,0.08)] -mx-[24px] xl:-mx-[32px] w-[calc(100%+48px)] xl:w-[calc(100%+64px)]",children:[e.jsxs("p",{className:"text-[12px] font-black text-slate-500 uppercase tracking-widest flex items-center gap-4",children:[e.jsx("span",{className:"w-2.5 h-2.5 rounded-full bg-[#9956DE] animate-pulse shadow-[0_0_12px_rgba(153,86,222,0.6)]"}),"Showing ",e.jsxs("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:[j,"–",de]}),e.jsx("span",{className:"text-slate-300 font-bold mx-1",children:"/"}),e.jsx("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:I.length}),e.jsx("span",{className:"text-slate-400 ml-1",children:"Total System Records"})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs(Y,{value:String(U),onValueChange:x=>{ne(Number(x)),$(1)},children:[e.jsx(J,{className:"h-10 w-[140px] bg-white border border-slate-300 text-[11px] font-black uppercase tracking-wider text-slate-900 rounded-xl hover:border-[#9956DE] transition-all px-4 shadow-sm",children:e.jsxs("span",{className:"truncate",children:[U," / Page"]})}),e.jsx(Z,{className:"rounded-xl border-slate-200",children:Ga.map(x=>e.jsxs(y,{value:String(x),className:"font-bold",children:[x," / Page"]},x))})]}),e.jsxs("div",{className:"flex items-center gap-2 bg-slate-50 p-1.5 rounded-2xl border border-slate-200 shadow-inner",children:[e.jsx(S,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:M<=1||i,onClick:()=>$(x=>Math.max(x-1,1)),children:e.jsx(rt,{size:18,strokeWidth:3})}),e.jsx("div",{className:"px-5 py-2 bg-white rounded-xl shadow-sm border border-slate-200 flex items-center justify-center min-w-[130px]",children:e.jsxs("span",{className:"text-[11px] font-black text-slate-900 uppercase tracking-widest",children:["Page ",e.jsx("span",{className:"text-[#9956DE] mx-1",children:M}),e.jsx("span",{className:"text-slate-300 mx-1",children:"OF"}),e.jsx("span",{className:"text-slate-500",children:Math.max(R,1)})]})}),e.jsx(S,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:M>=R||i,onClick:()=>$(x=>Math.min(x+1,R||1)),children:e.jsx(it,{size:18,strokeWidth:3})})]})]})]}),e.jsx(Zs,{open:!!h,onOpenChange:x=>{x||w(null)},children:e.jsxs(et,{className:"sm:max-w-[600px] rounded-[32px] border-none shadow-2xl p-0 overflow-hidden",children:[e.jsx("div",{className:`h-2 w-full ${h?q(h.severity).split(" ")[0].replace("bg-","bg-").replace("-50","-500"):"bg-purple-600"}`}),e.jsxs("div",{className:"p-8 space-y-6",children:[e.jsx(st,{className:"text-left",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-2xl bg-slate-50 flex items-center justify-center text-[#9956DE] border border-slate-100",children:e.jsx(gs,{size:24})}),e.jsxs("div",{children:[e.jsx(tt,{className:"text-xl font-black text-[#1e293b] leading-tight",children:h?.action||"Audit Event Details"}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] mt-1",children:"Platform Operational Integrity Trail"})]})]})}),h&&e.jsxs("div",{className:"grid grid-cols-2 gap-6 bg-slate-50/50 p-6 rounded-2xl border border-slate-100",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Incident Severity"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h.severity})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Timestamp"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h.timestamp})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Component"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h.category})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"User Actor"}),e.jsx("p",{className:"text-sm font-black text-[#1e293b]",children:h?.user.name})]}),e.jsxs("div",{className:"col-span-2 space-y-1 mt-2",children:[e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Full Operation Details"}),e.jsx("p",{className:"text-sm font-medium text-[#1e293b] leading-relaxed bg-white p-4 rounded-xl border border-slate-100",children:h.details})]})]}),e.jsx("div",{className:"flex justify-end pt-2",children:e.jsx(S,{onClick:()=>w(null),className:"bg-[#9956DE] hover:bg-[#8b5cf6] text-white rounded-xl px-8 font-black uppercase text-[11px] tracking-widest shadow-lg shadow-purple-100 transition-all",children:"Dismiss Review"})})]})]})})]})},qa=()=>{const[s,a]=l.useState([]),[n,r]=l.useState(0),[i,p]=l.useState(!0),[b,d]=l.useState(null),[v,N]=l.useState(!1),m=l.useCallback(async()=>{p(!0);try{const h=await ye("/api/rag/documents");a(h.documents),r(h.total_chunks)}catch(h){console.error("Failed to fetch RAG documents:",h),k.error("Failed to load RAG inventory")}finally{p(!1)}},[]);l.useEffect(()=>{m()},[m]);const c=ps.useMemo(()=>{const h=new Map;for(const w of s){const M=h.get(w.subject)||[];M.push(w),h.set(w.subject,M)}return Array.from(h.entries()).map(([w,M])=>({subject:w,files:M,totalChunks:M.reduce(($,U)=>$+U.chunk_count,0)}))},[s]),E=async h=>{d(`subject:${h}`);try{const w=await ye(`/api/rag/documents/by-subject/${encodeURIComponent(h)}`,{method:"DELETE"});k.success(w.message),await m()}catch(w){k.error(`Failed to delete subject: ${w}`)}finally{d(null)}},A=async h=>{d(`source:${h}`);try{const w=await ye(`/api/rag/documents/by-source?source_file=${encodeURIComponent(h)}`,{method:"DELETE"});k.success(w.message),await m()}catch(w){k.error(`Failed to delete source: ${w}`)}finally{d(null)}},D=async()=>{d("purge");try{const h=await ye("/api/rag/documents/all",{method:"DELETE"});k.success(h.message),N(!1),await m()}catch(h){k.error(`Purge failed: ${h}`)}finally{d(null)}},P=async()=>{d("reingest");try{await ye("/api/admin/reingest-pdf",{method:"POST",body:JSON.stringify({})}),k.success("Re-ingestion triggered. This may take a few minutes."),setTimeout(m,5e3)}catch(h){k.error(`Re-ingestion failed: ${h}`)}finally{d(null)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-indigo-100 flex items-center justify-center",children:e.jsx(ge,{className:"w-5 h-5 text-indigo-600"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold text-slate-800",children:"RAG Pipeline Manager"}),e.jsx("p",{className:"text-sm text-slate-500",children:"Manage vectorstore content and uploaded files"})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"px-4 py-2 bg-indigo-50 rounded-xl text-center",children:[e.jsx("p",{className:"text-xl font-bold text-indigo-600",children:n}),e.jsx("p",{className:"text-[10px] font-bold text-indigo-400 uppercase",children:"Total Chunks"})]}),e.jsxs("div",{className:"px-4 py-2 bg-emerald-50 rounded-xl text-center",children:[e.jsx("p",{className:"text-xl font-bold text-emerald-600",children:c.length}),e.jsx("p",{className:"text-[10px] font-bold text-emerald-400 uppercase",children:"Subjects"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3 p-4 bg-slate-50 rounded-2xl border border-slate-200",children:[e.jsxs(S,{onClick:m,disabled:i,variant:"outline",className:"gap-2",children:[e.jsx(Se,{size:14,className:i?"animate-spin":""}),"Refresh"]}),e.jsxs(S,{onClick:P,disabled:!!b,variant:"outline",className:"gap-2",children:[b==="reingest"?e.jsx(B,{size:14,className:"animate-spin"}):e.jsx(Se,{size:14}),"Re-ingest All PDFs"]}),e.jsx("div",{className:"flex-1"}),v?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm text-red-600 font-medium flex items-center gap-1",children:[e.jsx(Ks,{size:14})," This will delete ALL RAG content"]}),e.jsxs(S,{onClick:D,disabled:b==="purge",className:"bg-red-600 hover:bg-red-700 text-white gap-2",children:[b==="purge"?e.jsx(B,{size:14,className:"animate-spin"}):e.jsx(be,{size:14}),"Confirm Purge"]}),e.jsx(S,{onClick:()=>N(!1),variant:"outline",children:"Cancel"})]}):e.jsxs(S,{onClick:()=>N(!0),variant:"outline",className:"gap-2 text-red-600 border-red-200 hover:bg-red-50",children:[e.jsx(be,{size:14}),"Purge All"]})]}),i?e.jsx("div",{className:"flex items-center justify-center py-16",children:e.jsx(B,{size:32,className:"animate-spin text-indigo-500"})}):c.length===0?e.jsxs("div",{className:"text-center py-16 text-slate-500",children:[e.jsx(ge,{size:48,className:"mx-auto mb-3 text-slate-300"}),e.jsx("p",{className:"font-medium",children:"No RAG content found"}),e.jsx("p",{className:"text-sm",children:"Upload PDFs via the Content tab or trigger re-ingestion"})]}):e.jsx("div",{className:"space-y-4",children:c.map(h=>e.jsxs(se.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"bg-white rounded-2xl border border-slate-200 overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-4 bg-slate-50 border-b border-slate-100",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-indigo-100 flex items-center justify-center",children:e.jsx(Ne,{size:16,className:"text-indigo-600"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-slate-800 capitalize",children:h.subject.replace(/_/g," ")}),e.jsxs("p",{className:"text-xs text-slate-500",children:[h.totalChunks," chunks • ",h.files.length," source file",h.files.length!==1?"s":""]})]})]}),e.jsxs(S,{onClick:()=>E(h.subject),disabled:!!b,variant:"outline",className:"gap-2 text-red-600 border-red-200 hover:bg-red-50 text-xs h-8",children:[b===`subject:${h.subject}`?e.jsx(B,{size:12,className:"animate-spin"}):e.jsx(be,{size:12}),"Remove Subject"]})]}),e.jsx("div",{className:"divide-y divide-slate-100",children:h.files.map(w=>e.jsxs("div",{className:"flex items-center justify-between px-5 py-3 hover:bg-slate-50 transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Ne,{size:14,className:"text-slate-400"}),e.jsx("span",{className:"text-sm text-slate-700 font-medium truncate max-w-[400px]",children:w.source_file}),e.jsxs("span",{className:"text-xs text-slate-400 bg-slate-100 px-2 py-0.5 rounded-full",children:[w.chunk_count," chunks"]})]}),e.jsx("button",{onClick:()=>A(w.source_file),disabled:!!b,className:"p-1.5 rounded-lg text-slate-400 hover:text-red-500 hover:bg-red-50 transition-colors disabled:opacity-50",children:b===`source:${w.source_file}`?e.jsx(B,{size:14,className:"animate-spin"}):e.jsx(be,{size:14})})]},w.source_file))})]},h.subject))})]})};function We({className:s,...a}){return e.jsx(Qt,{"data-slot":"checkbox",className:Ce("peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...a,children:e.jsx(Kt,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:e.jsx(Yt,{className:"size-3.5"})})})}const Va=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Wa=/[A-Z]/,Xa=/[a-z]/,Qa=/\d/,Ka=/[^A-Za-z0-9]/;function Ya(s){const a={};s.name.trim()||(a.name="Name is required.");const n=s.email.trim().toLowerCase();n?Va.test(n)||(a.email="Enter a valid email address."):a.email="Email is required.";const r=s.password;return r.length<8?a.password="Password must be at least 8 characters.":Wa.test(r)?Xa.test(r)?Qa.test(r)?Ka.test(r)||(a.password="Password must include at least one special character."):a.password="Password must include at least one number.":a.password="Password must include at least one lowercase letter.":a.password="Password must include at least one uppercase letter.",s.confirmPassword?s.confirmPassword!==r&&(a.confirmPassword="Passwords do not match."):a.confirmPassword="Confirm password is required.",s.role.trim()||(a.role="Role is required."),s.status.trim()||(a.status="Status is required."),s.grade.trim()||(a.grade="Grade is required."),s.section.trim()||(a.section="Section is required."),s.role.trim().toLowerCase()==="student"&&!s.lrn.trim()&&(a.lrn="LRN is required for student accounts."),a}function Ja(s){return Object.values(s).find(n=>!!n)??null}const Bs=(s="Student")=>({name:"",email:"",password:"",confirmPassword:"",role:s,status:"Active",department:s==="Teacher"?"Mathematics":s==="Admin"?"System":"",grade:"Grade 11",section:"Section A",lrn:""}),Za=["10","25","50","100"];function Gs(s,a){const n=s.trim();if(!(!n||n===a))return n}function Hs(s){const a=String(s??"");return/[",\n]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}const el=({createIntentRole:s=null,onCreateIntentConsumed:a})=>{const{userProfile:n}=Ze(),[r,i]=l.useState([]),[p,b]=l.useState(!0),[d,v]=l.useState(null),[N,m]=l.useState(!1),[c,E]=l.useState(!1),[A,D]=l.useState(null),[P,h]=l.useState(1),[w,M]=l.useState(25),[$,U]=l.useState(0),[ne,ae]=l.useState(1),[me,ce]=l.useState(!1),[oe,q]=l.useState(""),[G,V]=l.useState("All Roles"),[K,I]=l.useState("All Status"),[R,f]=l.useState(new Set),[j,de]=l.useState(!1),[x,W]=l.useState(new Set),[o,T]=l.useState({}),[F,le]=l.useState("Student"),[O,ht]=l.useState("Active"),[ml,pl]=l.useState("Grade 11"),[hl,ul]=l.useState("Section A"),[ut,$e]=l.useState(!1),[gt,ss]=l.useState(!1),[Fe,Ns]=l.useState(!1),[pe,ts]=l.useState(null),[_,ws]=l.useState(null),[as,Oe]=l.useState({}),[ls,_e]=l.useState(!1),[gl,rs]=l.useState(!1),[g,re]=l.useState(Bs()),L=l.useMemo(()=>({search:oe.trim()||void 0,role:Gs(G,"All Roles"),status:Gs(K,"All Status")}),[oe,G,K]),he=l.useCallback(()=>{f(new Set),de(!1),W(new Set)},[]),Be=l.useCallback(t=>j?!x.has(t):R.has(t),[j,x,R]),X=l.useMemo(()=>j?Math.max($-x.size,0):R.size,[j,x,R,$]),ys=l.useMemo(()=>r.length===0?!1:r.every(t=>Be(t.id)),[r,Be]),ue=l.useMemo(()=>j?[]:Array.from(R).map(t=>o[t]).filter(t=>!!t),[j,R,o]);l.useMemo(()=>X===0?!1:j?!L.role||L.role.toLowerCase()==="student":ue.length!==R.size?!1:ue.every(t=>t.role==="Student"),[j,X,ue,R.size,L.role]),l.useMemo(()=>X===0?!1:j?L.status?.toLowerCase()!=="active":ue.length!==R.size?!1:ue.some(t=>t.status!=="Active"),[j,X,ue,R.size,L.status]),l.useMemo(()=>X===0?!1:j?L.status?.toLowerCase()!=="inactive":ue.length!==R.size?!1:ue.some(t=>t.status!=="Inactive"),[j,X,ue,R.size,L.status]);const je=l.useCallback(async t=>{b(!0),v(null);try{const u=await La({page:t,pageSize:w,searchQuery:L.search,roleFilter:L.role,statusFilter:L.status});i(u.users),h(u.total===0?1:u.page),U(u.total),ae(u.totalPages||1),ce(u.hasNextPage),T(z=>{const ve={...z};return u.users.forEach(C=>{ve[C.id]=C}),ve})}catch(u){const z=u instanceof Error?u.message:"Failed to load users";v(z),k.error(z)}finally{b(!1)}},[w,L.search,L.role,L.status]);l.useEffect(()=>{je(P)},[je,P]);const is=l.useCallback((t="Student")=>{ws(null),Oe({}),_e(!1),rs(!1),re(Bs(t)),$e(!0)},[]);l.useEffect(()=>{s&&(is(s),a?.())},[s,is,a]);const ks=l.useCallback(t=>{if(j){W(u=>{const z=new Set(u);return z.has(t)?z.delete(t):z.add(t),z});return}f(u=>{const z=new Set(u);return z.has(t)?z.delete(t):z.add(t),z})},[j]),Ss=l.useCallback(()=>{if(r.length===0)return;const t=r.map(u=>u.id);if(j){W(u=>{const z=new Set(u);return t.every(C=>!z.has(C))?t.forEach(C=>z.add(C)):t.forEach(C=>z.delete(C)),z});return}f(u=>{const z=new Set(u);return t.every(C=>z.has(C))?t.forEach(C=>z.delete(C)):t.forEach(C=>z.add(C)),z})},[r,j]),bt=l.useCallback(()=>{de(!0),f(new Set),W(new Set)},[]),Cs=l.useCallback(t=>{if(!t.length){k.info("No rows were returned for export.");return}const u=Array.from(t.reduce((Ge,os)=>(Object.keys(os).forEach(At=>Ge.add(At)),Ge),new Set)),z=[u.map(Hs).join(","),...t.map(Ge=>u.map(os=>Hs(Ge[os])).join(","))].join(` +`),ve=new Blob([z],{type:"text/csv;charset=utf-8;"}),C=URL.createObjectURL(ve),cs=document.createElement("a");cs.href=C,cs.download=`admin-users-export-${Date.now()}.csv`,cs.click(),URL.revokeObjectURL(C)},[]),we=l.useCallback(async(t,u)=>{const z=u.userIds,ve={...L.search?{search:L.search}:{},...L.role?{role:L.role}:{},...L.status?{status:L.status}:{}};if(!z&&X===0){k.error("Select at least one user before applying a bulk action.");return}E(!0);try{const C=await Fa({action:t,...z?{userIds:z}:j?{userIds:[],excludeUserIds:Array.from(x),filters:ve}:{userIds:Array.from(R)},...u.role?{role:u.role}:{},...u.status?{status:u.status}:{},...u.grade?{grade:u.grade}:{},...u.section?{section:u.section}:{},...u.exportFormat?{exportFormat:u.exportFormat}:{}});t==="export"&&Cs(C.exportRows),C.summary.failed>0?k.warning(`Completed with partial failures. ${C.summary.succeeded} succeeded, ${C.summary.failed} failed, ${C.summary.skipped} skipped.`):C.summary.succeeded===0&&C.summary.targeted>0?k.error(C.summary.skipped>0?`Action skipped for ${C.summary.skipped} user(s).`:"Action could not be completed. No users were updated."):k.success(`Action completed. ${C.summary.succeeded} user(s) updated.`),C.warnings.length>0&&k.info(C.warnings[0]);try{await ms(u.auditAction,"User",t==="delete"||t==="deactivate"?"Warning":"Info",`${u.auditDetail}; targeted=${C.summary.targeted}, succeeded=${C.summary.succeeded}, failed=${C.summary.failed}, skipped=${C.summary.skipped}`,{name:n?.name||"Admin",role:"Admin",avatar:n?.photo||null})}catch{}u.skipSelectionReset||he(),await je(P)}catch(C){k.error(C instanceof Error?C.message:"Bulk action failed")}finally{E(!1)}},[L.search,L.role,L.status,j,x,R,X,n?.name,n?.photo,he,je,P,Cs]),ns=l.useCallback(t=>{ts(t),ss(!0)},[]),ft=l.useCallback(async()=>{if(!(!pe||Fe)){Ns(!0);try{await we(pe.action,{...pe.params||{},auditAction:pe.auditAction,auditDetail:pe.auditDetail}),ss(!1),ts(null)}finally{Ns(!1)}}},[pe,Fe,we]),As=t=>{ws(t),Oe({}),_e(!1),rs(!1),re({name:t.name,email:t.email,password:"",confirmPassword:"",role:t.role,status:t.status,department:t.department,grade:t.grade||"Grade 11",section:t.section||"Section A",lrn:t.lrn||""}),$e(!0)},jt=async()=>{if(!g.name.trim()||!g.email.trim()){k.error("Name and email are required");return}if(!_){const t=Ya({name:g.name,email:g.email,password:g.password,confirmPassword:g.confirmPassword,role:g.role,status:g.status,grade:g.grade,section:g.section,lrn:g.lrn}),u=Ja(t);if(u){Oe(t),k.error(u);return}}m(!0);try{if(_){const t={name:g.name,role:g.role,status:g.status,grade:g.grade,section:g.section,lrn:g.role==="Student"?g.lrn:void 0};g.role!=="Student"&&(t.department=g.department),await Ua(_.id,t),await ms("User Updated","User","Info",`Updated user: ${g.name} (${_.email})`,{name:n?.name||"Admin",role:"Admin",avatar:n?.photo||null}),k.success("User updated successfully")}else{const t=await Ia({email:g.email,name:g.name,password:g.password,confirmPassword:g.confirmPassword,role:g.role,status:g.status,grade:g.grade,section:g.section,lrn:g.role==="Student"?g.lrn:void 0});await ms("Created New User","User","Info",`Created new ${g.role.toLowerCase()} account: ${g.name} (${g.email}), emailSent=${t.emailSent}`,{name:n?.name||"Admin",role:"Admin",avatar:n?.photo||null}),t.emailSent?k.success("User created and welcome email sent"):(k.warning("User created, but welcome email failed to send"),t.emailError?.message&&k.error(t.emailError.message))}_?await je(P):(he(),h(1),await je(1)),$e(!1),_e(!1),rs(!1)}finally{m(!1)}},Es=(t,u)=>{ns({title:"Delete User?",message:`Delete user "${u}"? This cannot be undone.`,confirmText:"Delete",action:"delete",params:{userIds:[t]},auditAction:"User Deleted",auditDetail:`Deleted user account: ${u}`})},zs=async t=>{if(A||c)return;if(t.status==="Active"){ns({title:"Deactivate User?",message:`Deactivate "${t.name}"? They will lose access until reactivated.`,confirmText:"Deactivate",action:"deactivate",params:{userIds:[t.id]},auditAction:"User Status Changed",auditDetail:`Deactivated user: ${t.email}`});return}D(t.id);try{await we("activate",{userIds:[t.id],auditAction:"User Status Changed",auditDetail:`Activated user: ${t.email}`,skipSelectionReset:!0})}finally{D(null)}},vt=async()=>{await we("change_role",{role:F,auditAction:"Bulk Role Update",auditDetail:`Updated selected users to role ${F}`})},Nt=async()=>{await we("change_status",{status:O,auditAction:"Bulk Status Update",auditDetail:`Updated selected users to status ${O}`})},wt=async()=>{await we("reset_password_email",{auditAction:"Bulk Password Reset",auditDetail:"Sent password reset emails to selected users"})},yt=async()=>{await we("export",{exportFormat:"csv",auditAction:"Bulk Export Users",auditDetail:"Exported selected users"})},kt=()=>{ns({title:"Delete Selected Users?",message:`Delete ${X} selected user(s)? This action cannot be undone.`,confirmText:"Delete Users",action:"delete",auditAction:"Bulk User Deletion",auditDetail:`Deleted ${X} selected users`})};r.filter(t=>t.status==="Active").length,r.filter(t=>t.role==="Admin").length,r.filter(t=>t.role==="Teacher").length,r.filter(t=>t.role==="Student").length;const St=$===0?0:(P-1)*w+1,Ct=$===0?0:Math.min(P*w,$);return e.jsxs("div",{className:"flex flex-col animate-in fade-in duration-500",children:[e.jsx("div",{className:"space-y-8 pt-6 xl:pt-8 pb-6 px-1",children:e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-5 gap-4",children:p&&r.length===0?Array.from({length:5}).map((t,u)=>e.jsxs("div",{className:"bg-white p-5 rounded-[28px] border border-slate-200/60 shadow-sm shadow-slate-200/50 animate-pulse",children:[e.jsx("div",{className:"h-4 w-20 bg-slate-100 rounded-full mb-3"}),e.jsx("div",{className:"h-8 w-12 bg-slate-100 rounded-lg"})]},`stats-skeleton-${u}`)):[{label:"Total Users",value:$,icon:De,bg:"bg-[#4f46e5]",shadow:"shadow-indigo-500/20"},{label:"Active Today",value:r.filter(t=>t.status==="Active").length,icon:Ke,bg:"bg-[#10b981]",shadow:"shadow-emerald-500/20"},{label:"Admins",value:r.filter(t=>t.role==="Admin").length,icon:us,bg:"bg-[#0ea5e9]",shadow:"shadow-sky-500/20"},{label:"Teachers",value:r.filter(t=>t.role==="Teacher").length,icon:Ye,bg:"bg-[#8b5cf6]",shadow:"shadow-purple-500/20"},{label:"Students",value:r.filter(t=>t.role==="Student").length,icon:za,bg:"bg-[#3b82f6]",shadow:"shadow-blue-500/20"}].map((t,u)=>e.jsxs("div",{className:`relative overflow-hidden ${t.bg} ${t.shadow} p-5 rounded-[28px] text-white flex flex-col gap-3 group hover:scale-[1.02] transition-all duration-300 shadow-lg`,children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-700 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-700 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex items-center justify-between",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:t.label}),e.jsx("div",{className:"bg-white/20 p-2 rounded-xl backdrop-blur-sm group-hover:bg-white/30 transition-colors",children:e.jsx(t.icon,{size:14})})]}),e.jsx("h3",{className:"relative z-10 text-3xl font-display font-black leading-none tracking-tight",children:t.value})]},u))})}),e.jsx("div",{className:"sticky top-0 z-40 -mx-[24px] xl:-mx-[32px] px-[24px] xl:px-[32px] pt-4 pb-4 bg-[#f8fafc] backdrop-blur-sm",children:e.jsxs("div",{className:"flex flex-col xl:flex-row items-center gap-3",children:[e.jsxs("div",{className:"relative flex-1 w-full group",children:[e.jsx(at,{className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within:text-indigo-500 transition-colors",size:16}),e.jsx(ie,{placeholder:"Search by name, email, or LRN...",className:"pl-11 h-12 bg-white border-slate-200/60 rounded-2xl focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all text-sm font-medium shadow-md shadow-slate-200/40",value:oe,onChange:t=>{q(t.target.value),h(1),he()}})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 w-full xl:w-auto",children:[e.jsxs(Y,{value:G,onValueChange:t=>{V(t),h(1),he()},children:[e.jsx(J,{className:"w-[180px] h-12 rounded-xl bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:G==="All Roles"?"All Roles":G==="Admin"?"Administrator":G==="Teacher"?"Educator":G})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Roles",className:"font-bold uppercase tracking-widest text-[10px]",children:"All Roles"}),e.jsx(y,{value:"Admin",className:"font-bold uppercase tracking-widest text-[10px]",children:"Administrator"}),e.jsx(y,{value:"Teacher",className:"font-bold uppercase tracking-widest text-[10px]",children:"Educator"}),e.jsx(y,{value:"Student",className:"font-bold uppercase tracking-widest text-[10px]",children:"Student"})]})]}),e.jsxs(Y,{value:K,onValueChange:t=>{I(t),h(1),he()},children:[e.jsx(J,{className:"w-[180px] h-12 rounded-xl bg-white border border-slate-200 hover:border-[#9956DE] transition-all focus:ring-2 focus:ring-[#9956DE]/10 text-[10px] font-black uppercase tracking-widest text-slate-900 shadow-md shadow-slate-200/40 px-4",children:e.jsx("span",{className:"truncate",children:K==="All Status"?"All Statuses":K})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"All Status",className:"font-bold uppercase tracking-widest text-[10px]",children:"All Statuses"}),e.jsx(y,{value:"Active",className:"font-bold uppercase tracking-widest text-[10px]",children:"Active"}),e.jsx(y,{value:"Inactive",className:"font-bold uppercase tracking-widest text-[10px]",children:"Inactive"})]})]})]}),e.jsx(S,{variant:"outline",size:"icon",onClick:()=>{q(""),V("All Roles"),I("All Status"),h(1),he()},disabled:!oe&&G==="All Roles"&&K==="All Status",className:"h-12 w-12 rounded-xl border-slate-200 text-[#9956DE] hover:bg-purple-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all shadow-md shadow-slate-200/40",title:"Reset Filters",children:e.jsx(ct,{size:18})}),e.jsx(S,{variant:"outline",size:"icon",className:"h-12 w-12 rounded-xl border-slate-200 text-slate-500 hover:bg-slate-50 transition-all shadow-md shadow-slate-200/40",onClick:()=>je(P),disabled:p||c,children:e.jsx(Se,{size:18,className:p?"animate-spin":""})}),e.jsxs(S,{className:"h-12 gap-2 bg-[#9956DE] hover:bg-[#8b5cf6] text-white rounded-xl shadow-lg shadow-purple-200/50 transition-all px-6 font-black uppercase text-[11px] tracking-widest",onClick:()=>is(),disabled:c,children:[e.jsx(Rt,{size:18}),"Add User"]})]})}),X>0&&e.jsxs("div",{className:"fixed bottom-16 left-1/2 -translate-x-1/2 z-[60] w-[calc(100%-4rem)] max-w-[1100px] bg-[#2d1b69] rounded-2xl p-3 flex flex-col xl:flex-row items-center gap-4 animate-in slide-in-from-bottom-2 duration-300 shadow-2xl shadow-purple-900/50",children:[e.jsxs("div",{className:"flex items-center gap-3 px-3 border-r border-white/10 pr-6",children:[e.jsx("div",{className:"w-8 h-8 rounded-xl bg-purple-500/30 flex items-center justify-center text-white font-black text-xs",children:X}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black text-purple-300 uppercase tracking-widest leading-none",children:"Selected"}),e.jsx("p",{className:"text-[9px] text-white/60 font-medium mt-1",children:j?"All matching users":`${X} users chosen`})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1 bg-white/5 p-1 rounded-xl",children:[e.jsxs(Y,{value:F,onValueChange:t=>le(t),children:[e.jsx(J,{className:"h-8 bg-transparent border-none text-white text-[10px] font-bold min-w-[90px] focus:ring-0",children:e.jsx(Ee,{})}),e.jsxs(Z,{className:"rounded-xl",children:[e.jsx(y,{value:"Student",children:"Student"}),e.jsx(y,{value:"Teacher",children:"Teacher"}),e.jsx(y,{value:"Admin",children:"Admin"})]})]}),e.jsx(S,{size:"sm",className:"h-8 bg-purple-600 hover:bg-purple-500 text-[10px] font-black rounded-lg",onClick:()=>void vt(),children:"Apply Role"})]}),e.jsxs("div",{className:"flex items-center gap-1 bg-white/5 p-1 rounded-xl",children:[e.jsxs(Y,{value:O,onValueChange:t=>ht(t),children:[e.jsx(J,{className:"h-8 bg-transparent border-none text-white text-[10px] font-bold min-w-[90px] focus:ring-0",children:e.jsx(Ee,{})}),e.jsxs(Z,{className:"rounded-xl",children:[e.jsx(y,{value:"Active",children:"Active"}),e.jsx(y,{value:"Inactive",children:"Inactive"})]})]}),e.jsx(S,{size:"sm",className:"h-8 bg-purple-600 hover:bg-purple-500 text-[10px] font-black rounded-lg",onClick:()=>void Nt(),children:"Set Status"})]}),e.jsx("div",{className:"h-6 w-[1px] bg-white/10 mx-1"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(S,{size:"sm",variant:"ghost",className:"h-9 text-white hover:bg-white/10 text-[10px] font-black uppercase tracking-widest gap-2",onClick:()=>void wt(),children:[e.jsx(Jt,{size:14})," Reset Pass"]}),e.jsxs(S,{size:"sm",variant:"ghost",className:"h-9 text-white hover:bg-white/10 text-[10px] font-black uppercase tracking-widest gap-2",onClick:()=>void yt(),children:[e.jsx(fs,{size:14})," Export"]}),e.jsxs(S,{size:"sm",variant:"ghost",className:"h-9 text-rose-400 hover:bg-rose-500/10 hover:text-rose-300 text-[10px] font-black uppercase tracking-widest gap-2",onClick:kt,children:[e.jsx(be,{size:14})," Delete"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pl-4 border-l border-white/10",children:[!j&&X<$&&e.jsxs(S,{variant:"ghost",className:"h-9 text-indigo-200 hover:text-white hover:bg-white/10 text-[10px] font-black uppercase tracking-widest",onClick:bt,children:["Select All ",$]}),e.jsx(S,{size:"icon",variant:"ghost",className:"h-9 w-9 text-white/40 hover:text-white hover:bg-white/10 rounded-xl",onClick:he,children:e.jsx(qe,{size:16,className:"rotate-45"})})]})]}),d?e.jsxs("div",{className:"rounded-xl border border-red-200 bg-red-50 px-4 py-3 flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-2 min-w-0",children:[e.jsx(ke,{size:18,className:"text-red-600 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-semibold text-red-700",children:"Unable to load users"}),e.jsx("p",{className:"text-sm text-red-600 break-words",children:d})]})]}),e.jsx(S,{type:"button",variant:"outline",className:"border-red-200 text-red-700 hover:bg-red-100",onClick:()=>je(P),disabled:p||c,children:"Retry"})]}):null,e.jsxs("div",{className:"bg-white rounded-[32px] border border-slate-200/60 shadow-sm shadow-slate-200/50 relative",children:[p&&r.length>0&&e.jsx("div",{className:"absolute inset-0 bg-white/40 backdrop-blur-[1px] z-20 flex items-center justify-center",children:e.jsx(B,{className:"animate-spin text-indigo-500",size:32})}),e.jsxs("div",{className:"md:hidden divide-y divide-slate-100",children:[e.jsxs("div",{className:"px-6 py-4 bg-slate-50/50 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("label",{className:"flex items-center gap-3 text-[10px] font-black text-slate-400 uppercase tracking-widest cursor-pointer",children:[e.jsx(We,{checked:ys,onCheckedChange:Ss,className:"rounded-md border-slate-300"}),"Select Page"]}),e.jsxs("span",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest",children:["Page ",P," of ",ne]})]}),p&&r.length===0?e.jsx("div",{className:"px-6 py-12 text-center text-slate-400 font-medium",children:"Loading users..."}):r.length>0?r.map(t=>(t.id,e.jsxs("div",{className:"p-5 space-y-4 group hover:bg-slate-50/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center self-center",children:e.jsx(We,{checked:Be(t.id),onCheckedChange:()=>ks(t.id),className:"rounded-md border-slate-300"})}),e.jsxs("div",{className:"relative",children:[e.jsxs(Ps,{className:"h-12 w-12 rounded-full border-2 border-white shadow-sm",children:[e.jsx(Rs,{src:t.photo||hs(t.gender),className:"object-cover"}),e.jsx(Ts,{className:"bg-indigo-50 text-indigo-600 font-bold",children:t.name.charAt(0)})]}),e.jsx("div",{className:`absolute -bottom-1 -right-1 w-4 h-4 rounded-full border-2 border-white shadow-sm ${t.status==="Active"?"bg-emerald-500":"bg-slate-300"}`})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-black text-[#1e293b] truncate text-sm",children:t.name}),e.jsx("p",{className:"text-[11px] font-medium text-slate-400 truncate mt-0.5",children:t.email})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("span",{className:`text-[9px] font-black uppercase tracking-widest px-2 py-1 rounded-lg ${t.role==="Admin"?"bg-sky-50 text-sky-600":t.role==="Teacher"?"bg-purple-50 text-purple-600":"bg-blue-50 text-blue-600"}`,children:t.role}),e.jsxs("span",{className:"text-[9px] font-black uppercase tracking-widest px-2 py-1 rounded-lg bg-slate-50 text-slate-500",children:[t.grade," • ",t.section||t.department]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs(S,{variant:"outline",size:"sm",className:"flex-1 h-9 rounded-xl border-slate-200 text-slate-600 font-bold text-xs gap-2",onClick:()=>As(t),children:[e.jsx(qe,{size:14})," Edit"]}),e.jsxs(S,{variant:"outline",size:"sm",className:`flex-1 h-9 rounded-xl border-slate-200 font-bold text-xs gap-2 ${t.status==="Active"?"text-slate-600":"text-emerald-600"}`,onClick:()=>zs(t),disabled:A===t.id||c,children:[A===t.id?e.jsx(B,{size:14,className:"animate-spin"}):t.status==="Active"?e.jsx(_s,{size:14}):e.jsx(Ke,{size:14}),t.status==="Active"?"Ban":"Active"]}),e.jsx(S,{variant:"outline",size:"icon",className:"h-9 w-9 rounded-xl border-slate-200 text-rose-500 hover:bg-rose-50 hover:border-rose-100",onClick:()=>Es(t.id,t.name),disabled:c,children:e.jsx(be,{size:14})})]})]},`mobile-${t.id}`))):e.jsxs("div",{className:"px-6 py-20 text-center space-y-4",children:[e.jsx("div",{className:"w-20 h-20 bg-slate-50 rounded-full flex items-center justify-center mx-auto",children:e.jsx(De,{size:32,className:"text-slate-300"})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"font-black text-slate-600 uppercase tracking-widest text-sm",children:"No Users Found"}),e.jsx("p",{className:"text-xs text-slate-400 font-medium max-w-[200px] mx-auto leading-relaxed",children:"We couldn't find any users matching your current filters. Try adjusting your search."})]}),e.jsx(S,{variant:"outline",size:"sm",className:"rounded-xl border-slate-200 text-indigo-600 font-bold",onClick:()=>{q(""),V("All Roles"),I("All Status")},children:"Clear Filters"})]})]}),e.jsx("div",{className:"hidden md:block",children:e.jsxs("table",{className:"w-full text-left border-collapse",children:[e.jsx("thead",{className:"sticky top-[80px] z-30 bg-[#f8fafc] backdrop-blur-sm shadow-[0_-12px_0_0_#f8fafc]",children:e.jsxs("tr",{className:"border-b border-[#8b5cf6]",children:[e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 w-[60px] rounded-tl-[20px]",children:e.jsx(We,{checked:ys,onCheckedChange:Ss,className:"rounded-md border-white/50 data-[state=checked]:bg-white data-[state=checked]:text-[#9956DE]"})}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"User Profile"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Role & Access"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Status"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Placement"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-[11px] font-black text-white uppercase tracking-widest",children:"Activity"}),e.jsx("th",{className:"bg-[#9956DE] px-6 py-4 text-right text-[11px] font-black text-white uppercase tracking-widest rounded-tr-[20px]",children:"Actions"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-50",children:p&&r.length===0?e.jsx("tr",{children:e.jsxs("td",{colSpan:7,className:"px-6 py-20 text-center",children:[e.jsx(B,{className:"animate-spin text-indigo-200 mx-auto",size:40}),e.jsx("p",{className:"mt-4 text-[10px] font-black text-slate-300 uppercase tracking-widest",children:"Loading Records..."})]})}):r.length>0?r.map(t=>{const u=A===t.id;return e.jsxs("tr",{className:"hover:bg-slate-50/50 transition-all group",children:[e.jsx("td",{className:"px-6 py-4 align-middle",children:e.jsx(We,{checked:Be(t.id),onCheckedChange:()=>ks(t.id),className:"rounded-md border-slate-300 group-hover:border-indigo-400 transition-colors"})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"relative shrink-0",children:e.jsxs(Ps,{className:"h-11 w-11 rounded-full border-2 border-white shadow-sm ring-1 ring-slate-100",children:[e.jsx(Rs,{src:t.photo||hs(t.gender),className:"object-cover"}),e.jsx(Ts,{className:"bg-indigo-50 text-indigo-600 font-bold text-sm",children:t.name.charAt(0)})]})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-black text-[#1e293b] truncate text-sm leading-tight group-hover:text-indigo-600 transition-colors",children:t.name}),e.jsx("p",{className:"text-[11px] font-medium text-slate-400 truncate mt-0.5",children:t.email})]})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("div",{className:"flex items-center gap-1.5",children:e.jsx("span",{className:` + text-[9px] font-black px-2 py-0.5 rounded-lg uppercase tracking-wider + ${t.role==="Admin"?"bg-sky-50 text-sky-600":""} + ${t.role==="Teacher"?"bg-purple-50 text-purple-600":""} + ${t.role==="Student"?"bg-blue-50 text-blue-600":""} + `,children:t.role})}),t.lrn&&e.jsxs("p",{className:"text-[9px] font-black text-slate-300 uppercase tracking-tighter ml-0.5",children:["LRN: ",t.lrn]})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("span",{className:` + inline-flex items-center gap-1.5 px-3 py-1.5 rounded-2xl text-[10px] font-black uppercase tracking-wider border + ${t.status==="Active"?"bg-emerald-50 text-emerald-600 border-emerald-100":"bg-slate-50 text-slate-400 border-slate-100"} + `,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${t.status==="Active"?"bg-emerald-500 animate-pulse":"bg-slate-300"}`}),t.status]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-xs font-black text-slate-600",children:t.grade||"N/A"}),e.jsx("p",{className:"text-[10px] font-medium text-slate-400",children:t.role==="Student"?t.classSection||t.section||"Unassigned":t.department})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-[10px] font-black text-slate-600 uppercase tracking-tighter",children:t.lastLogin?"Recent Activity":"Inactive Account"}),e.jsx("p",{className:"text-[10px] font-medium text-slate-400",children:t.lastLogin||"No login history"})]})}),e.jsx("td",{className:"px-6 py-4 text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(S,{variant:"ghost",size:"icon",onClick:()=>As(t),className:"h-9 w-9 rounded-xl text-slate-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all",title:"Edit User",children:e.jsx(qe,{size:16})}),e.jsx(S,{variant:"ghost",size:"icon",onClick:()=>zs(t),disabled:u||c,className:`h-9 w-9 rounded-xl transition-all ${t.status==="Active"?"text-slate-400 hover:text-amber-600 hover:bg-amber-50":"text-slate-400 hover:text-emerald-600 hover:bg-emerald-50"}`,title:t.status==="Active"?"Deactivate":"Activate",children:u?e.jsx(B,{size:16,className:"animate-spin"}):t.status==="Active"?e.jsx(_s,{size:16}):e.jsx(Ke,{size:16})}),e.jsx(S,{variant:"ghost",size:"icon",onClick:()=>Es(t.id,t.name),disabled:c,className:"h-9 w-9 rounded-xl text-slate-400 hover:text-rose-600 hover:bg-rose-50 transition-all",title:"Delete User",children:e.jsx(be,{size:16})})]})})]},t.id)}):e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"px-6 py-32 text-center",children:e.jsxs("div",{className:"max-w-xs mx-auto space-y-6",children:[e.jsx("div",{className:"w-24 h-24 bg-slate-50 rounded-[32px] flex items-center justify-center mx-auto shadow-sm shadow-slate-100 group-hover:scale-110 transition-transform duration-500",children:e.jsx(De,{size:40,className:"text-slate-200"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-black text-slate-600 uppercase tracking-widest",children:"No matching users"}),e.jsx("p",{className:"text-xs text-slate-400 font-medium leading-relaxed",children:"We couldn't find any results for your current query. Try broadening your search or clearing filters."})]}),e.jsx(S,{variant:"outline",size:"sm",className:"rounded-xl border-slate-200 text-indigo-600 font-bold px-6 h-10 hover:bg-indigo-50",onClick:()=>{q(""),V("All Roles"),I("All Status")},children:"Reset Filters"})]})})})})]})})]}),e.jsxs("div",{className:"sticky bottom-0 z-50 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 px-12 py-3 bg-white border-t-2 border-slate-100 shadow-[0_-8px_30px_rgba(0,0,0,0.08)] -mx-[24px] xl:-mx-[32px] w-[calc(100%+48px)] xl:w-[calc(100%+64px)]",children:[e.jsxs("p",{className:"text-[12px] font-black text-slate-500 uppercase tracking-widest flex items-center gap-4",children:[e.jsx("span",{className:"w-2.5 h-2.5 rounded-full bg-[#9956DE] animate-pulse shadow-[0_0_12px_rgba(153,86,222,0.6)]"}),"Showing ",e.jsxs("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:[St,"–",Ct]}),e.jsx("span",{className:"text-slate-300 font-bold mx-1",children:"/"}),e.jsx("span",{className:"text-slate-900 font-black border-b-2 border-[#9956DE]/40 pb-0.5",children:$}),e.jsx("span",{className:"text-slate-400 ml-1",children:"Total System Records"})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs(Y,{value:String(w),onValueChange:t=>{const u=Number(t);Number.isNaN(u)||(M(u),h(1),he())},children:[e.jsx(J,{className:"h-10 w-[140px] bg-white border border-slate-300 text-[11px] font-black uppercase tracking-wider text-slate-900 rounded-xl hover:border-[#9956DE] transition-all px-4 shadow-sm",children:e.jsxs("span",{className:"truncate",children:[w," / Page"]})}),e.jsx(Z,{className:"rounded-xl border-slate-200",children:Za.map(t=>e.jsxs(y,{value:t,className:"font-bold",children:[t," / Page"]},t))})]}),e.jsxs("div",{className:"flex items-center gap-2 bg-slate-50 p-1.5 rounded-2xl border border-slate-200 shadow-inner",children:[e.jsx(S,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:P<=1||p||c,onClick:()=>h(t=>Math.max(t-1,1)),children:e.jsx(rt,{size:18,strokeWidth:3})}),e.jsx("div",{className:"px-5 py-2 bg-white rounded-xl shadow-sm border border-slate-200 flex items-center justify-center min-w-[130px]",children:e.jsxs("span",{className:"text-[11px] font-black text-slate-900 uppercase tracking-widest",children:["Page ",e.jsx("span",{className:"text-[#9956DE] mx-1",children:P}),e.jsx("span",{className:"text-slate-300 mx-1",children:"OF"}),e.jsx("span",{className:"text-slate-500",children:Math.max(ne,1)})]})}),e.jsx(S,{variant:"outline",size:"sm",className:"h-9 w-9 p-0 rounded-xl bg-[#9956DE] border-none text-white hover:bg-[#8b5cf6] hover:scale-105 active:scale-95 disabled:opacity-30 transition-all shadow-lg shadow-purple-200/60",disabled:!me||p||c||P>=ne,onClick:()=>h(t=>Math.min(t+1,ne||1)),children:e.jsx(it,{size:18,strokeWidth:3})})]})]})]}),e.jsx(Zs,{open:ut,onOpenChange:t=>!N&&$e(t),children:e.jsxs(et,{className:"sm:max-w-[850px] rounded-[32px] border-none shadow-2xl p-0 overflow-hidden [&>button:last-child]:hidden",children:[e.jsx("div",{className:`h-2 w-full bg-gradient-to-r ${_?"from-indigo-600 to-purple-600":"from-emerald-600 to-indigo-600"}`}),e.jsxs("div",{className:"p-8 space-y-8",children:[e.jsx(st,{className:"text-left",children:e.jsxs("div",{className:"flex items-center gap-5",children:[e.jsx("div",{className:`w-14 h-14 rounded-2xl flex items-center justify-center shadow-lg transition-transform duration-500 hover:rotate-3 ${_?"bg-indigo-100 text-indigo-700 shadow-indigo-200/50":"bg-emerald-100 text-emerald-700 shadow-emerald-200/50"}`,children:_?e.jsx(qe,{size:28,className:"drop-shadow-sm"}):e.jsx(Is,{size:28,className:"drop-shadow-sm"})}),e.jsxs("div",{children:[e.jsx(tt,{className:"text-2xl font-display font-black text-[#1e293b] leading-tight",children:_?"Edit User Access":"Onboard New User"}),e.jsxs("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-[0.2em] mt-1 flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-indigo-500 animate-pulse"}),_?"User Identity Management":"System Enrollment Pipeline"]})]})]})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-10 gap-y-6",children:[e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-[11px] font-black text-indigo-600 uppercase tracking-[0.15em] pb-1 border-b border-indigo-50",children:"Identity Details"}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Full Name"}),e.jsxs("div",{className:"relative group",children:[e.jsx(ie,{value:g.name,onChange:t=>{re({...g,name:t.target.value}),as.name&&Oe(u=>({...u,name:void 0}))},placeholder:"Enter full name",className:`h-12 rounded-xl bg-slate-50 border-slate-200 focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all font-bold text-[#1e293b] ${as.name?"border-rose-300 bg-rose-50/20":""}`}),as.name&&e.jsx(ke,{size:14,className:"absolute right-3 top-1/2 -translate-y-1/2 text-rose-500"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Email Address"}),e.jsx(ie,{type:"email",value:g.email,onChange:t=>{_||re({...g,email:t.target.value})},readOnly:!!_,placeholder:"name@example.com",className:`h-12 rounded-xl bg-slate-50 border-slate-200 focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all font-bold text-[#1e293b] ${_?"opacity-60 grayscale bg-slate-100":""}`})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Access Role"}),e.jsxs(Y,{value:g.role,onValueChange:t=>{re({...g,role:t,lrn:t==="Student"?g.lrn:""})},children:[e.jsx(J,{className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-black text-[#1e293b]",children:e.jsx(Ee,{placeholder:"Role"})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"Student",className:"font-bold",children:"Student"}),e.jsx(y,{value:"Teacher",className:"font-bold",children:"Teacher"}),e.jsx(y,{value:"Admin",className:"font-bold",children:"Admin"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Status"}),e.jsxs(Y,{value:g.status,onValueChange:t=>re({...g,status:t}),children:[e.jsx(J,{className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-black text-[#1e293b]",children:e.jsx(Ee,{placeholder:"Status"})}),e.jsxs(Z,{className:"rounded-xl border-slate-200",children:[e.jsx(y,{value:"Active",className:"font-bold",children:"Active"}),e.jsx(y,{value:"Inactive",className:"font-bold",children:"Inactive"})]})]})]})]})]})}),e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-[11px] font-black text-indigo-600 uppercase tracking-[0.15em] pb-1 border-b border-indigo-50",children:"Contextual Assignment"}),g.role==="Student"?e.jsxs("div",{className:"space-y-4 animate-in fade-in slide-in-from-right-4 duration-500",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Grade Level"}),e.jsx(ie,{value:g.grade,onChange:t=>re({...g,grade:t.target.value}),placeholder:"Grade 11",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-bold"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Section"}),e.jsx(ie,{value:g.section,onChange:t=>re({...g,section:t.target.value}),placeholder:"STEM A",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-bold"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"LRN (Learner Reference Number)"}),e.jsx(ie,{value:g.lrn,onChange:t=>re({...g,lrn:t.target.value}),placeholder:"12-digit number",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-black tracking-widest"})]})]}):e.jsxs("div",{className:"space-y-1.5 animate-in fade-in slide-in-from-right-4 duration-500",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Department / Office"}),e.jsx(ie,{value:g.department,onChange:t=>re({...g,department:t.target.value}),placeholder:"e.g. Mathematics Department",className:"h-12 rounded-xl bg-slate-50 border-slate-200 font-bold"})]}),!_&&e.jsxs("div",{className:"space-y-1.5 pt-2",children:[e.jsx("label",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest ml-1",children:"Initial Password"}),e.jsxs("div",{className:"relative",children:[e.jsx(ie,{type:ls?"text":"password",value:g.password,onChange:t=>re({...g,password:t.target.value}),className:"h-12 rounded-xl bg-slate-50 border-slate-200 pr-10 font-black tracking-widest"}),e.jsx("button",{type:"button",onClick:()=>_e(!ls),className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600",children:ls?e.jsx(lt,{size:16}):e.jsx(Xt,{size:16})})]})]})]})})]}),e.jsxs(Wt,{className:"grid grid-cols-2 gap-3 pt-6 border-t border-slate-100",children:[e.jsx(S,{variant:"outline",className:`h-12 rounded-xl font-black uppercase tracking-widest text-[10px] transition-all border-2 ${_?"border-indigo-600/50 text-indigo-600 hover:bg-indigo-50":"border-emerald-600/50 text-emerald-600 hover:bg-emerald-50"}`,onClick:()=>$e(!1),disabled:N,children:"Cancel"}),e.jsx(S,{onClick:jt,className:`h-12 rounded-xl font-black uppercase tracking-widest gap-3 text-[10px] shadow-lg transition-all active:scale-95 ${_?"bg-indigo-600 hover:bg-indigo-700 shadow-indigo-500/25":"bg-emerald-600 hover:bg-emerald-700 shadow-emerald-500/25"}`,disabled:N,children:N?e.jsx(B,{size:16,className:"animate-spin"}):_?e.jsxs(e.Fragment,{children:[e.jsx(nt,{size:16})," Save Changes"]}):e.jsxs(e.Fragment,{children:[e.jsx(Is,{size:16})," Onboard User"]})})]})]})]})}),e.jsx(Ws,{isOpen:gt,zIndexClass:"z-[70]",onClose:()=>{Fe||(ss(!1),ts(null))},onConfirm:ft,title:pe?.title||"Confirm Action",message:pe?.message||"Proceed with this action?",confirmText:Fe?"Processing...":pe?.confirmText||"Confirm",cancelText:"Cancel",type:"danger",icon:"delete"})]})},Le=({icon:s,title:a,subtitle:n})=>e.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-12 text-center",children:[e.jsx("div",{className:"w-14 h-14 rounded-2xl bg-slate-50 border border-slate-100 flex items-center justify-center",children:s}),e.jsx("p",{className:"text-[11px] font-black text-slate-500 uppercase tracking-widest",children:a}),n&&e.jsx("p",{className:"text-[10px] text-slate-400 font-medium max-w-xs leading-relaxed",children:n})]}),sl=()=>{const[s,a]=l.useState("30d"),[n,r]=l.useState(null),[i,p]=l.useState(!0),b=()=>{p(!0),Ba().then(r).catch(console.error).finally(()=>p(!1))};l.useEffect(()=>{b()},[]);const d={"7d":"7 Days","30d":"30 Days","90d":"90 Days","12m":"12 Months"},v=[{label:"Total Active Users",value:i?null:(n?.totalActiveUsers??0).toLocaleString(),icon:De,bg:"bg-[#4f46e5]",shadow:"shadow-indigo-500/20"},{label:"Completion Rate",value:"N/A",icon:Tt,bg:"bg-[#10b981]",shadow:"shadow-emerald-500/20"},{label:"Session Duration",value:"N/A",icon:js,bg:"bg-[#8b5cf6]",shadow:"shadow-purple-500/20"},{label:"At-Risk Students",value:i?null:(n?.atRiskStudents??0).toString(),icon:Me,bg:"bg-[#f43f5e]",shadow:"shadow-rose-500/20"}],N=[{label:"Achievements Unlocked",icon:Ms,color:"text-rose-600",bg:"bg-rose-50",border:"border-rose-100",value:i?null:(n?.achievementsUnlocked??0).toLocaleString()},{label:"XP Earned (Platform)",icon:Pe,color:"text-violet-600",bg:"bg-violet-50",border:"border-violet-100",value:i?null:(n?.totalXPEarned??0)>=1e6?`${((n?.totalXPEarned??0)/1e6).toFixed(1)}M`:(n?.totalXPEarned??0)>=1e3?`${Math.round((n?.totalXPEarned??0)/1e3)}K`:(n?.totalXPEarned??0).toLocaleString()},{label:"Active Streaks",icon:Mt,color:"text-orange-600",bg:"bg-orange-50",border:"border-orange-100",value:i?null:(n?.activeStreaks??0).toLocaleString()},{label:"AI Tutor Sessions",icon:$t,color:"text-sky-600",bg:"bg-sky-50",border:"border-sky-100",value:i?null:(n?.aiTutorSessions??0).toLocaleString()}];return e.jsxs("div",{className:"space-y-6 pt-6 xl:pt-8 pb-10 max-w-[1600px] mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-1.5 h-6 bg-[#9956DE] rounded-full"}),e.jsx("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-[0.2em]",children:"Platform Analytics"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center bg-white rounded-xl p-1 shadow-sm border border-slate-200/60",children:Object.entries(d).map(([m,c])=>e.jsx("button",{onClick:()=>a(m),disabled:!0,title:"Range selection unavailable",className:`px-3 py-1.5 rounded-lg text-[10px] font-black uppercase tracking-widest transition-all ${s===m?"bg-[#9956DE] text-white shadow-sm":"text-slate-500 hover:bg-slate-50"} opacity-50 cursor-not-allowed`,children:c},m))}),e.jsx("button",{onClick:b,disabled:i,title:"Refresh data",className:"p-2.5 rounded-xl bg-white border border-slate-200 text-slate-400 hover:text-[#9956DE] shadow-sm transition-all active:scale-95",children:e.jsx(Se,{size:14,className:i?"animate-spin":""})}),e.jsxs(S,{variant:"outline",disabled:!0,title:"Export unavailable",className:"h-9 px-4 gap-2 rounded-xl border-slate-200 text-[10px] font-black uppercase tracking-widest text-slate-400 opacity-50 cursor-not-allowed shadow-sm",children:[e.jsx(fs,{size:14}),"Export"]})]})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:v.map((m,c)=>{const E=m.icon;return e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.3,delay:c*.05},className:`relative overflow-hidden ${m.bg} ${m.shadow} p-5 rounded-[28px] text-white flex flex-col gap-3 group hover:scale-[1.02] transition-all duration-300 shadow-lg`,children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-700 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-700 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex items-center justify-between",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:m.label}),e.jsx("div",{className:"bg-white/20 p-2 rounded-xl backdrop-blur-sm group-hover:bg-white/30 transition-colors",children:e.jsx(E,{size:14})})]}),i?e.jsx("div",{className:"relative z-10 flex items-center gap-2",children:e.jsx(B,{size:18,className:"animate-spin opacity-60"})}):e.jsx("h3",{className:"relative z-10 text-3xl font-display font-black leading-none tracking-tight",children:m.value})]},m.label)})}),!i&&!n?.totalActiveUsers&&e.jsxs(se.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},className:"flex items-center gap-3 bg-amber-50 border border-amber-100 rounded-2xl px-5 py-3",children:[e.jsx(ge,{size:16,className:"text-amber-600 shrink-0"}),e.jsx("p",{className:"text-[10px] font-black text-amber-700 uppercase tracking-widest",children:"Limited data — KPIs populate as platform usage grows. Charts require time-series data."})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-12 gap-5",children:[e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.1},className:"xl:col-span-8 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center justify-between mb-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-indigo-50 text-indigo-600 flex items-center justify-center border border-indigo-100",children:e.jsx(Ys,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Performance Trends"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Students vs. Teacher Targets"})]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-indigo-400"}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Students"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-purple-400"}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest",children:"Targets"})]})]})]}),e.jsx(Le,{icon:e.jsx(Zt,{size:22,className:"text-slate-300"}),title:"No performance data yet",subtitle:"Trend charts will generate as students complete quizzes and assessments."})]}),e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.15},className:"xl:col-span-4 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-purple-50 text-purple-600 flex items-center justify-center border border-purple-100",children:e.jsx(wa,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Grade Distribution"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Current Term"})]})]}),e.jsx(Le,{icon:e.jsx(ge,{size:22,className:"text-slate-300"}),title:"No grade data",subtitle:"Import quiz results to see grade breakdowns."})]})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-12 gap-5",children:[e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.2},className:"xl:col-span-7 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-sky-50 text-sky-600 flex items-center justify-center border border-sky-100",children:e.jsx(Ue,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Subject Engagement"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Enrollment & Completion"})]})]}),e.jsx("div",{className:"rounded-2xl border border-slate-200/60 overflow-hidden",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-slate-50/80",children:[e.jsx("th",{className:"text-left text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Subject"}),e.jsx("th",{className:"text-right text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Enrolled"}),e.jsx("th",{className:"text-right text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Completion"}),e.jsx("th",{className:"text-right text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3",children:"Avg. Score"}),e.jsx("th",{className:"text-left text-[10px] font-black text-slate-400 uppercase tracking-widest px-5 py-3 w-32",children:"Progress"})]})}),e.jsx("tbody",{children:e.jsx("tr",{children:e.jsx("td",{colSpan:5,className:"px-4 py-8",children:e.jsx(Le,{icon:e.jsx(ge,{size:20,className:"text-slate-300"}),title:"No subject data available",subtitle:"Import class enrollment records to view engagement."})})})})]})})]}),e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.25},className:"xl:col-span-5 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-orange-50 text-orange-600 flex items-center justify-center border border-orange-100",children:e.jsx(Lt,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Weekly Activity"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Sessions Per Day"})]})]}),e.jsx(Le,{icon:e.jsx(Me,{size:22,className:"text-slate-300"}),title:"No session activity yet",subtitle:"Student logins and session data will appear here."})]})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-12 gap-5",children:[e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.3},className:"xl:col-span-5 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-rose-50 text-rose-600 flex items-center justify-center border border-rose-100",children:e.jsx(Ms,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Gamification Overview"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Engagement Metrics"})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3",children:N.map(m=>{const c=m.icon;return e.jsxs("div",{className:`${m.bg} border ${m.border} rounded-2xl p-4 group hover:scale-[1.02] transition-all duration-200`,children:[e.jsx("div",{className:"flex items-center justify-between mb-2",children:e.jsx(c,{size:18,className:m.color})}),i?e.jsx("div",{className:"w-12 h-5 bg-white/60 rounded-lg mt-1 mb-1 animate-pulse"}):e.jsx("p",{className:"text-xl font-black text-[#1e293b] leading-none",children:m.value}),e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-widest mt-2",children:m.label})]},m.label)})})]}),e.jsxs(se.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:.35},className:"xl:col-span-7 bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/40",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl bg-emerald-50 text-emerald-600 flex items-center justify-center border border-emerald-100",children:e.jsx(Ye,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-black text-[#1e293b] tracking-tight",children:"Top Performing Classes"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-widest mt-0.5",children:"Ranked by Average Score"})]})]}),e.jsx(Le,{icon:e.jsx(ge,{size:22,className:"text-slate-300"}),title:"No class data yet",subtitle:"Import class and student records to see top performers."})]})]})]})};async function tl(){return ye("/api/admin/ai-monitoring/summary")}async function al(){return ye("/api/admin/ai-monitoring/refresh",{method:"POST"})}function ll(){const s=Ut(),{data:a,isLoading:n,isError:r,error:i}=ea({queryKey:["ai-monitoring"],queryFn:tl,refetchInterval:3e4,staleTime:15e3});return{data:a,isLoading:n,isError:r,error:i,refetch:async()=>{await al(),s.invalidateQueries({queryKey:["ai-monitoring"]})}}}const Xe=({title:s,value:a,subValue:n,icon:r,badge:i,gradient:p="from-slate-800 to-slate-900"})=>e.jsxs("div",{className:`relative rounded-xl bg-gradient-to-br ${p} p-5 text-white shadow-lg overflow-hidden`,children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-white/60 uppercase tracking-wide",children:s}),e.jsx("p",{className:"text-2xl font-bold",children:a}),n&&e.jsx("p",{className:"text-xs text-white/50",children:n})]}),e.jsx("div",{className:"rounded-lg bg-white/10 p-2",children:r})]}),i&&e.jsx("span",{className:"absolute top-2 right-2 rounded-full bg-amber-400/90 px-2 py-0.5 text-[10px] font-semibold text-amber-900",children:i})]}),rl=({promoExpiresUtc:s,daysUntilPromoEnds:a,fullPriceInputRate:n,fullPriceOutputRate:r})=>{const[i,p]=l.useState(!1),b=l.useMemo(()=>{if(!s)return a;const d=new Date(s).getTime()-Date.now();return Math.max(0,Math.ceil(d/(1e3*60*60*24)))},[s,a]);return i?null:e.jsxs("div",{className:"relative rounded-lg border border-amber-300/50 bg-amber-50 px-4 py-3 text-sm text-amber-900",children:[e.jsx("button",{onClick:()=>p(!0),className:"absolute top-2 right-2 rounded p-1 hover:bg-amber-200/50","aria-label":"Dismiss",children:e.jsx(vs,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"flex items-start gap-2 pr-6",children:[e.jsx(Pe,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-amber-600"}),e.jsxs("div",{children:[e.jsx("span",{className:"font-semibold",children:"DeepSeek V4 Pro is currently 75% OFF"})," ","(cache-miss: $0.435/1M, output: $0.87/1M). Sale ends May 31, 2026 at 15:59 UTC — ",e.jsxs("strong",{children:[b," days remaining"]}),".",e.jsx("br",{}),e.jsxs("span",{className:"text-amber-700",children:["Full price after sale: $",n,"/1M input · $",r,"/1M output."]})]})]})]})},qs=({title:s,feature:a})=>a?e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4 shadow-sm",children:[e.jsx("p",{className:"text-xs font-medium text-slate-500 uppercase tracking-wide mb-2",children:s}),e.jsx("p",{className:"text-lg font-bold text-slate-900",children:a.featureName}),e.jsxs("div",{className:"mt-2 flex items-center gap-3 text-xs text-slate-600",children:[e.jsxs("span",{children:["$",a.monthlyCost.toFixed(4)]}),e.jsx("span",{className:"text-slate-300",children:"|"}),e.jsxs("span",{children:[a.totalRequests.toLocaleString()," reqs"]}),e.jsx("span",{className:"text-slate-300",children:"|"}),e.jsxs("span",{children:[(a.cacheHitRate*100).toFixed(0),"% cache"]})]})]}):null,il=({features:s})=>{const a=[...s].sort((n,r)=>r.monthlyCost-n.monthlyCost);return e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4 shadow-sm",children:[e.jsx("p",{className:"text-xs font-medium text-slate-500 uppercase tracking-wide mb-3",children:"Resource Breakdown"}),e.jsx("div",{className:"space-y-2",children:a.map(n=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"truncate font-medium text-slate-700",children:n.featureName}),e.jsxs("span",{className:"text-xs text-slate-500",children:["$",n.monthlyCost.toFixed(4)]})]}),e.jsx("div",{className:"mt-1 h-1.5 w-full rounded-full bg-slate-100 overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-indigo-500",style:{width:`${Math.min(n.costShare,100)}%`}})})]}),e.jsxs("span",{className:"text-xs text-slate-400 w-10 text-right",children:[n.costShare.toFixed(0),"%"]})]},n.featureId))})]})},nl=({open:s,onClose:a,features:n})=>s?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:a,children:e.jsxs("div",{className:"relative w-full max-w-2xl max-h-[80vh] overflow-y-auto rounded-xl bg-white p-6 shadow-xl",onClick:r=>r.stopPropagation(),children:[e.jsx("button",{onClick:a,className:"absolute top-3 right-3 rounded p-1 hover:bg-slate-100","aria-label":"Close",children:e.jsx(vs,{className:"h-5 w-5 text-slate-500"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-900 mb-4",children:"AI Feature Directory"}),e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b text-left text-xs text-slate-500 uppercase",children:[e.jsx("th",{className:"pb-2",children:"Feature"}),e.jsx("th",{className:"pb-2",children:"Model"}),e.jsx("th",{className:"pb-2 text-right",children:"Cost"}),e.jsx("th",{className:"pb-2 text-right",children:"Requests"}),e.jsx("th",{className:"pb-2 text-right",children:"Cache Hit"})]})}),e.jsx("tbody",{children:n.map(r=>e.jsxs("tr",{className:"border-b border-slate-100",children:[e.jsx("td",{className:"py-2 font-medium text-slate-800",children:r.featureName}),e.jsx("td",{className:"py-2 text-slate-600",children:r.modelId}),e.jsxs("td",{className:"py-2 text-right",children:["$",r.monthlyCost.toFixed(4)]}),e.jsx("td",{className:"py-2 text-right",children:r.totalRequests.toLocaleString()}),e.jsxs("td",{className:"py-2 text-right",children:[(r.cacheHitRate*100).toFixed(0),"%"]})]},r.featureId))})]})]})}):null,cl=({pricingMeta:s})=>{const[a,n]=l.useState(!1);return e.jsxs("div",{className:"relative inline-block",children:[e.jsx("button",{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),className:"rounded p-1 text-slate-400 hover:text-slate-600","aria-label":"Pricing info",children:e.jsx(Js,{className:"h-4 w-4"})}),a&&e.jsxs("div",{className:"absolute bottom-full left-1/2 z-50 mb-2 w-64 -translate-x-1/2 rounded-lg border border-slate-200 bg-white p-3 text-xs shadow-lg",children:[e.jsx("p",{className:"font-semibold text-slate-800 mb-1",children:s.isPromotional?"Promotional Pricing (75% OFF)":"Standard Pricing"}),e.jsxs("div",{className:"space-y-1 text-slate-600",children:[e.jsxs("p",{children:["Input (cache miss): ",e.jsxs("strong",{children:["$",s.currentInputCacheMissRate,"/1M"]})]}),e.jsxs("p",{children:["Output: ",e.jsxs("strong",{children:["$",s.currentOutputRate,"/1M"]})]}),s.isPromotional&&e.jsxs(e.Fragment,{children:[e.jsx("hr",{className:"my-1 border-slate-100"}),e.jsxs("p",{className:"text-slate-400",children:["Full price: $",s.fullPriceInputRate,"/1M in · $",s.fullPriceOutputRate,"/1M out"]})]})]})]})]})},ol=()=>{const{data:s,isLoading:a,refetch:n}=ll(),[r,i]=l.useState(!1),[p,b]=l.useState(!1),d=async()=>{b(!0);try{await n()}finally{b(!1)}};if(a||!s)return e.jsxs("div",{className:"space-y-4 p-1",children:[e.jsx(ds,{className:"h-12 w-full rounded-lg"}),e.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:Array.from({length:4}).map((m,c)=>e.jsx(ds,{className:"h-32 rounded-xl"},c))}),e.jsx("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:Array.from({length:3}).map((m,c)=>e.jsx(ds,{className:"h-40 rounded-xl"},c))})]});const v=s.features.find(m=>m.isTopSpending),N=s.features.find(m=>m.isMostActive);return e.jsxs("div",{className:"space-y-5 p-1",children:[s.promotionalPricingActive&&e.jsx(rl,{promoExpiresUtc:s.pricingMeta.promoExpiresUtc,daysUntilPromoEnds:s.pricingMeta.daysUntilPromoEnds,fullPriceInputRate:s.pricingMeta.fullPriceInputRate,fullPriceOutputRate:s.pricingMeta.fullPriceOutputRate}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(cl,{pricingMeta:s.pricingMeta}),e.jsxs("span",{className:"text-xs text-slate-400",children:["Last updated: ",new Date(s.lastUpdated).toLocaleTimeString()]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{onClick:()=>i(!0),className:"inline-flex items-center gap-1.5 rounded-lg border border-slate-200 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-50",children:[e.jsx(Sa,{className:"h-3.5 w-3.5"})," Directory"]}),e.jsxs("button",{onClick:d,disabled:p,className:"inline-flex items-center gap-1.5 rounded-lg bg-indigo-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-indigo-700 disabled:opacity-50",children:[e.jsx(Se,{className:`h-3.5 w-3.5 ${p?"animate-spin":""}`})," Refresh"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Xe,{title:"Monthly Cost",value:`$${s.monthlyCost.toFixed(2)}`,subValue:`Would be ~$${s.estimatedCostAfterPromo.toFixed(2)} at full price`,icon:e.jsx(sa,{className:"h-5 w-5"}),gradient:"from-emerald-600 to-emerald-800"}),e.jsx(Xe,{title:"Active Engine",value:s.activeEngine,subValue:s.engineTier,icon:e.jsx(Vs,{className:"h-5 w-5"}),badge:s.promotionalPricingActive?"75% OFF until May 31":void 0,gradient:"from-indigo-600 to-indigo-800"}),e.jsx(Xe,{title:"Total Requests",value:s.totalUsage.toLocaleString(),subValue:s.billingCycleLabel,icon:e.jsx(Me,{className:"h-5 w-5"}),gradient:"from-violet-600 to-violet-800"}),e.jsx(Xe,{title:"Cache Efficiency",value:`${(s.cacheHitRate*100).toFixed(1)}%`,subValue:"Cache hits: $0.003625/1M vs miss: $0.435/1M",icon:e.jsx(ge,{className:"h-5 w-5"}),gradient:"from-sky-600 to-sky-800"})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[e.jsx(qs,{title:"Top Spending",feature:v}),e.jsx(qs,{title:"Most Active",feature:N}),e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4 shadow-sm",children:[e.jsx("p",{className:"text-xs font-medium text-slate-500 uppercase tracking-wide mb-2",children:"Cost Breakdown"}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-slate-600",children:"Cache Hit"}),e.jsxs("span",{className:"font-medium",children:["$",s.costBreakdown.cacheHitCost.toFixed(6)]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-slate-600",children:"Cache Miss"}),e.jsxs("span",{className:"font-medium",children:["$",s.costBreakdown.cacheMissCost.toFixed(6)]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-slate-600",children:"Output"}),e.jsxs("span",{className:"font-medium",children:["$",s.costBreakdown.outputCost.toFixed(6)]})]})]})]})]}),e.jsx(il,{features:s.features}),e.jsx(nl,{open:r,onClose:()=>i(!1),features:s.features})]})},Ae=Qe.map(s=>({id:s.id,name:s.name,code:s.code,gradeLevel:s.gradeLevel,semester:s.semester,color:s.color})),dl=()=>{const{userProfile:s}=Ze(),{availability:a,loading:n,error:r}=aa(),[i,p]=l.useState(null),[b,d]=l.useState({}),v=l.useCallback(async(c,E)=>{if(!s?.uid){k.error("You must be logged in as admin to change availability");return}p(c);try{await la(c,E,s.uid),k.success(`${Ae.find(A=>A.id===c)?.name||c} is now ${E?"available":"locked"}`)}catch(A){k.error("Failed to update subject availability"),console.error(A)}finally{p(null)}},[s?.uid]),N=l.useCallback((c,E)=>{d(A=>({...A,[c]:E}))},[]),m=l.useCallback(async c=>{if(!s?.uid){k.error("You must be logged in as admin");return}const E=b[c]?.trim()||null;p(c);try{await ra(c,E,s.uid),k.success("PDF path updated")}catch(A){k.error("Failed to update PDF path"),console.error(A)}finally{p(null)}},[b,s?.uid]);return e.jsxs("div",{className:"flex flex-col min-h-full space-y-8 pt-6 xl:pt-8 animate-in fade-in slide-in-from-bottom-4 duration-700 pb-6",children:[n&&e.jsx("div",{className:"flex items-center justify-end px-2",children:e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 bg-indigo-50 text-indigo-600 rounded-2xl border border-indigo-100 animate-pulse",children:[e.jsx(B,{size:16,className:"animate-spin"}),e.jsx("span",{className:"text-[10px] font-black uppercase tracking-widest",children:"Syncing Subject Cloud Data..."})]})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4",children:[{label:"Total Subjects",value:Ae.length,icon:Ue,bg:"bg-[#4f46e5]",shadow:"shadow-indigo-500/20"},{label:"Available",value:Ae.filter(c=>a[c.id]?.available!==!1).length,icon:Aa,bg:"bg-[#10b981]",shadow:"shadow-emerald-500/20"},{label:"Locked",value:Ae.filter(c=>a[c.id]?.available===!1).length,icon:Qs,bg:"bg-[#ef4444]",shadow:"shadow-rose-500/20"},{label:"RAG Sources",value:Ae.filter(c=>a[c.id]?.pdfPath).length,icon:Ne,bg:"bg-[#8b5cf6]",shadow:"shadow-purple-500/20"}].map((c,E)=>e.jsxs("div",{className:`relative overflow-hidden ${c.bg} ${c.shadow} p-5 rounded-[28px] text-white flex flex-col gap-3 group hover:scale-[1.02] transition-all duration-300 shadow-lg`,children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-700 ease-out"}),e.jsxs("div",{className:"relative z-10 flex items-center justify-between",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.2em] opacity-80",children:c.label}),e.jsx("div",{className:"bg-white/20 p-2 rounded-xl backdrop-blur-sm",children:e.jsx(c.icon,{size:14})})]}),e.jsx("h3",{className:"relative z-10 text-3xl font-display font-black leading-none tracking-tight",children:c.value})]},E))}),r&&e.jsxs("div",{className:"rounded-2xl border border-rose-200 bg-rose-50 px-6 py-4 flex items-center gap-3 animate-in shake duration-500",children:[e.jsx(ke,{className:"text-rose-600",size:20}),e.jsx("p",{className:"text-sm font-bold text-rose-700",children:r})]}),e.jsx("div",{className:"bg-white rounded-[32px] border border-slate-200/60 shadow-sm shadow-slate-200/50 overflow-hidden relative",children:e.jsxs(ot,{className:"w-full text-left border-collapse",children:[e.jsx(dt,{children:e.jsxs(ze,{className:"bg-[#9956DE] hover:bg-[#9956DE] border-b border-[#8b5cf6] sticky top-0 z-20 shadow-md",children:[e.jsx(xe,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Subject Identity"}),e.jsx(xe,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Grade / Semester"}),e.jsx(xe,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Access Status"}),e.jsx(xe,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"Toggle Access"}),e.jsx(xe,{className:"px-6 py-5 text-[11px] font-black text-white uppercase tracking-widest",children:"RAG Resource Mapping"})]})}),e.jsx(xt,{className:"divide-y divide-slate-50",children:Ae.map(c=>{const E=a[c.id],A=E?.available??!0,D=b[c.id]??E?.pdfPath??"",P=E?.lastUpdated,h=i===c.id;return e.jsxs(ze,{className:"group hover:bg-slate-50/50 transition-all",children:[e.jsx(te,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:`w-12 h-12 rounded-2xl bg-gradient-to-br ${c.color} flex items-center justify-center text-white shadow-lg shadow-indigo-100 group-hover:scale-110 transition-transform duration-500`,children:e.jsx(Ue,{size:20,className:"drop-shadow-sm"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-black text-[#1e293b] truncate text-sm leading-tight group-hover:text-indigo-600 transition-colors",children:c.name}),e.jsx("p",{className:"text-[11px] font-black text-slate-400 uppercase tracking-tighter mt-1",children:c.code})]})]})}),e.jsx(te,{className:"px-6 py-5",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-black text-slate-700 uppercase tracking-wide",children:c.gradeLevel}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-tight",children:c.semester})]})}),e.jsx(te,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("span",{className:` + inline-flex items-center gap-1.5 px-3 py-1.5 rounded-2xl text-[10px] font-black uppercase tracking-wider border + ${A?"bg-emerald-50 text-emerald-600 border-emerald-100":"bg-slate-50 text-slate-400 border-slate-100"} + `,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${A?"bg-emerald-500 animate-pulse":"bg-slate-300"}`}),A?"Available":"Locked"]}),P&&e.jsxs("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-tighter ml-1 flex items-center gap-1",children:[e.jsx(js,{size:10}),"Updated: ",P.toLocaleString()]})]})}),e.jsx(te,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ta,{checked:A,onCheckedChange:w=>v(c.id,w),disabled:h,className:"data-[state=checked]:bg-emerald-500 data-[state=unchecked]:bg-slate-200","aria-label":`Toggle ${c.name} availability`}),h&&e.jsx(B,{size:16,className:"animate-spin text-indigo-500"})]})}),e.jsx(te,{className:"px-6 py-5",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative flex-1 group/input",children:[e.jsx(Ne,{size:14,className:"absolute left-3.5 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within/input:text-indigo-500 transition-colors"}),e.jsx(ie,{value:D,onChange:w=>N(c.id,w.target.value),placeholder:"Firebase path (e.g., rag/calculus.pdf)",className:"pl-10 h-10 text-xs font-bold rounded-xl bg-slate-50/50 border-slate-200 focus-visible:ring-indigo-500/20 focus-visible:border-indigo-500 transition-all",disabled:h})]}),e.jsx(S,{variant:"ghost",size:"icon",className:"h-10 w-10 rounded-xl text-slate-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all",onClick:()=>m(c.id),disabled:h,title:"Save PDF Path",children:h?e.jsx(B,{size:18,className:"animate-spin text-indigo-500"}):e.jsx(nt,{size:18})})]})})]},c.id)})})]})})]})},xl=({isOpen:s,onClose:a})=>s?e.jsxs("div",{className:"fixed inset-0 z-[100] flex items-center justify-center p-4 sm:p-6",children:[e.jsx("div",{className:"absolute inset-0 bg-slate-900/40 backdrop-blur-sm animate-in fade-in duration-300",onClick:a}),e.jsxs("div",{className:"relative bg-white w-full max-w-4xl rounded-[40px] shadow-2xl border border-slate-200 overflow-hidden animate-in zoom-in slide-in-from-bottom-8 duration-500",children:[e.jsxs("div",{className:"px-10 pt-10 pb-6 flex items-center justify-between border-b border-slate-50 bg-slate-50/50",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-xl font-black text-[#1e293b] uppercase tracking-wider",children:"How It Works: Subject Governance"}),e.jsx("p",{className:"text-[11px] font-black text-indigo-500 uppercase tracking-[0.2em] mt-1",children:"Platform Curriculum Protocol & RAG Workflow"})]}),e.jsx("button",{onClick:a,className:"w-12 h-12 rounded-2xl flex items-center justify-center bg-white text-slate-400 hover:text-rose-500 hover:bg-rose-50 transition-all border border-slate-200 shadow-sm group",children:e.jsx(vs,{size:20,className:"group-hover:rotate-90 transition-transform duration-300"})})]}),e.jsx("div",{className:"p-12",children:e.jsxs("div",{className:"flex flex-col md:flex-row items-center justify-between gap-12 relative",children:[e.jsx("div",{className:"absolute top-12 left-0 right-0 h-0.5 border-t-2 border-dashed border-indigo-100 hidden md:block z-0",style:{left:"10%",right:"10%"}}),[{step:"1",title:"Define Identity",desc:"Assign subject codes and grade levels in the core registry.",icon:Ue,color:"text-indigo-600",bg:"bg-indigo-50"},{step:"2",title:"Map RAG Source",desc:"Link Firebase PDF paths to the AI Knowledge Base.",icon:Pe,color:"text-amber-600",bg:"bg-amber-50"},{step:"3",title:"Global Toggle",desc:"Enable or lock subject access across all dashboards instantly.",icon:It,color:"text-emerald-600",bg:"bg-emerald-50"},{step:"4",title:"Audit Sync",desc:"Every modification is logged and synced to the cloud registry.",icon:gs,color:"text-purple-600",bg:"bg-purple-50"}].map((n,r)=>e.jsxs("div",{className:"flex-1 flex flex-col items-center text-center group relative z-10",children:[e.jsxs("div",{className:`relative mb-6 w-24 h-24 ${n.bg} rounded-[32px] flex items-center justify-center transition-all duration-500 group-hover:scale-110 group-hover:rotate-3 shadow-lg shadow-indigo-100/20`,children:[e.jsx(n.icon,{size:36,className:`${n.color} drop-shadow-sm`}),e.jsx("div",{className:"absolute -top-3 -left-3 bg-[#9956DE] text-white text-[12px] font-black w-10 h-10 rounded-2xl flex items-center justify-center shadow-lg border-2 border-white",children:n.step})]}),e.jsx("h4",{className:"text-sm font-black text-[#1e293b] uppercase tracking-wide mb-2",children:n.title}),e.jsx("p",{className:"text-xs text-slate-400 font-bold leading-relaxed max-w-[180px]",children:n.desc})]},r))]})}),e.jsxs("div",{className:"px-12 py-6 bg-slate-50/50 border-t border-slate-100 flex items-center justify-center gap-4",children:[e.jsx("div",{className:"flex -space-x-2",children:[1,2,3].map(n=>e.jsx("div",{className:"w-8 h-8 rounded-full border-2 border-white bg-indigo-100 flex items-center justify-center",children:e.jsx("div",{className:"w-4 h-4 rounded-full bg-indigo-500 animate-pulse"})},n))}),e.jsx("p",{className:"text-[10px] font-black text-slate-400 uppercase tracking-widest",children:"Platform Governance Active & Monitored"})]})]})]}):null,mr=({onLogout:s,onOpenProfile:a,onOpenSettings:n})=>{const{userProfile:r}=Ze(),[i,p]=l.useState("Overview"),[b,d]=l.useState(!1),[v,N]=l.useState(!1),[m,c]=l.useState(!1),[E,A]=l.useState(null),[D,P]=l.useState(null),[h,w]=l.useState([]),[M,$]=l.useState([]),[U,ne]=l.useState(!0),[ae,me]=l.useState(!1),{unreadCount:ce}=Ft(),[oe,q]=l.useState(!1),[G,V]=l.useState(!1),K=f=>(i===f||(p(f),f==="Subjects"&&(V(!0),setTimeout(()=>V(!1),2e3))),!0),I=f=>{K(f)&&c(!1)};l.useEffect(()=>{if(i!=="Overview"||!r)return;const f=String(r.role||"").toLowerCase(),j=f==="admin"||f==="teacher";let de=!1;return ne(!0),Promise.all([Oa(),j?pt():Promise.resolve([]),_a(3)]).then(([x,W,o])=>{de||(P(x),w(W.slice(0,4)),$(o))}).catch(console.error).finally(()=>{de||ne(!1)}),()=>{de=!0}},[i,r]);const R=[{label:"Active Teachers",value:(D?.activeTeachers??0).toString(),icon:Ye,color:"bg-teal-100",iconColor:"text-teal-600"},{label:"Total Classes",value:(D?.totalClasses??0).toString(),icon:Ue,color:"bg-indigo-100",iconColor:"text-indigo-600"},{label:"AI Inferences",value:(D?.aiPredictions??0).toLocaleString(),icon:Pe,color:"bg-amber-100",iconColor:"text-amber-600"},{label:"At-Risk Alerts",value:(D?.atRiskStudents??0).toString(),icon:ke,color:"bg-rose-100",iconColor:"text-rose-600"}];return e.jsxs("div",{className:"flex h-screen w-full bg-[#f8fafc] overflow-hidden font-body",children:[e.jsx("div",{className:"hidden lg:block",children:e.jsx(Ds,{activeTab:i,setActiveTab:I,userRole:"admin",onOpenSettings:()=>n?.(),onLogout:()=>d(!0),sidebarCollapsed:v,setSidebarCollapsed:N})}),m&&e.jsxs(e.Fragment,{children:[e.jsx("button",{"aria-label":"Close navigation",className:"fixed inset-0 z-40 bg-slate-900/40 backdrop-blur-[1px] lg:hidden",onClick:()=>c(!1)}),e.jsx("div",{className:"fixed inset-y-0 left-0 z-50 p-3 lg:hidden",children:e.jsx(Ds,{mode:"mobile",onRequestClose:()=>c(!1),activeTab:i,setActiveTab:I,userRole:"admin",onOpenSettings:()=>n?.(),onLogout:()=>{d(!0),c(!1)},sidebarCollapsed:!1})})]}),e.jsxs("div",{className:"flex-1 flex flex-col",children:[e.jsx("header",{className:"bg-transparent border-b border-[#e2e8f0]/40 px-[24px] xl:px-[32px] pt-[24px] pb-[16px] flex-shrink-0 z-30",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start justify-between gap-4 mb-0",children:[e.jsxs("div",{className:"flex-1 flex items-start gap-3",children:[e.jsx("button",{type:"button",onClick:()=>c(!0),className:"lg:hidden mt-1 p-2 rounded-lg border border-[#dde3eb] bg-white text-[#5a6578] hover:bg-[#edf1f7] transition-colors","aria-label":"Open navigation",children:e.jsx(Ot,{size:18})}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-[26px] font-bold text-[#1e293b] tracking-tight leading-tight",children:[i==="Overview"&&"Admin Dashboard",i==="Content"&&"Content",i==="Audit Log"&&"Audit Log",i==="User Management"&&"User Management",i==="Analytics"&&"Analytics",i==="AI Monitoring"&&"AI Monitoring",i==="Subjects"&&"Curriculum Control"]}),e.jsxs("p",{className:"text-[13px] text-[#64748b] mt-1",children:[i==="Overview"&&"System Overview & Management",i==="Content"&&"Upload PDFs for AI-powered content.",i==="Audit Log"&&"Monitor system activity and security.",i==="User Management"&&"Manage all user accounts and roles.",i==="Analytics"&&"Detailed system performance metrics.",i==="AI Monitoring"&&"Platform AI usage and system health.",i==="Subjects"&&"Manage academic subjects, availability, and RAG knowledge sources."]})]}),i==="Overview"&&e.jsxs("div",{className:"hidden xl:flex items-center gap-2 ml-4 mt-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#4f46e5]/10 border border-[#4f46e5]/20 rounded-lg",children:[e.jsx(De,{size:13,className:"text-[#4f46e5]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#4f46e5]",children:[(D?.totalStudents??0).toLocaleString()," students"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#0ea5e9]/10 border border-[#0ea5e9]/20 rounded-lg",children:[e.jsx(Ye,{size:13,className:"text-[#0ea5e9]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#0ea5e9]",children:[D?.activeTeachers??0," teachers"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-amber-500/10 border border-amber-500/20 rounded-lg",children:[e.jsx(Pe,{size:13,className:"text-amber-600"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-amber-600",children:[(D?.aiPredictions??0).toLocaleString()," inferences"]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0 self-end sm:self-auto",children:[i==="Subjects"&&e.jsxs("div",{className:"relative",children:[e.jsx("button",{onClick:()=>q(!0),className:"relative w-10 h-10 flex items-center justify-center bg-indigo-600 hover:bg-indigo-700 rounded-full shadow-lg shadow-indigo-200 text-white transition-all cursor-pointer hover:scale-110 active:scale-95 animate-in zoom-in duration-300","aria-label":"How it works",children:e.jsx(ia,{size:20})}),G&&e.jsxs("div",{className:"absolute top-12 left-1/2 -translate-x-1/2 px-3 py-1.5 bg-[#1e293b] text-white text-[10px] font-black uppercase tracking-widest rounded-lg shadow-xl whitespace-nowrap animate-in fade-in slide-in-from-top-2 duration-300 z-50",children:["How It Works?",e.jsx("div",{className:"absolute -top-1 left-1/2 -translate-x-1/2 w-2 h-2 bg-[#1e293b] rotate-45"})]})]}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>me(!ae),className:"relative w-10 h-10 flex items-center justify-center bg-white/60 hover:bg-white/80 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 text-[#64748b] hover:text-[#1e293b] transition-colors cursor-pointer hover:scale-[1.02]","aria-label":"View notifications",children:[e.jsx(na,{size:18}),ce>0&&e.jsx("span",{className:"absolute top-2.5 right-2.5 w-2 h-2 bg-rose-500 rounded-full border border-white"})]}),e.jsx(Vt,{isOpen:ae,onClose:()=>me(!1),onViewAll:()=>K("Audit Log")})]}),e.jsxs("div",{onClick:a,className:"flex items-center gap-2 bg-white/60 px-4 py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 cursor-pointer hover:bg-white/80 transition-colors h-10 hover:scale-[1.02]",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-indigo-100 overflow-hidden shrink-0",children:e.jsx(_t,{src:r?.photo,name:r?.name||"Admin",gender:r?.gender,className:"w-full h-full object-cover"})}),e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:r?.name||"Admin"})]})]})]})}),e.jsxs("main",{className:`flex-1 overflow-y-auto px-[24px] xl:px-[32px] scrollbar-hide ${["User Management","Audit Log"].includes(i)?"pb-0":"pb-[32px]"}`,children:[i==="Overview"&&e.jsxs("div",{className:"max-w-[1600px] mx-auto space-y-8 pt-6 xl:pt-8",children:[e.jsxs("div",{className:"grid grid-cols-12 gap-6 h-[170px]",children:[e.jsxs("div",{className:"col-span-12 xl:col-span-4 h-full bg-gradient-to-br from-[#4f46e5] to-[#7c3aed] rounded-[28px] p-6 relative overflow-hidden shadow-sm shadow-indigo-500/10 group",children:[e.jsx("div",{className:"absolute -top-24 -right-24 w-64 h-64 bg-white/10 rounded-full blur-3xl group-hover:bg-white/20 transition-all duration-1000"}),e.jsxs("div",{className:"relative z-10 flex flex-col justify-between h-full",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-white/70 text-[10px] font-black uppercase tracking-[0.2em] mb-1.5",children:"Platform Overview"}),e.jsx("p",{className:"text-white text-4xl font-display font-black tracking-tighter leading-none",children:U?"...":(D?.totalStudents??0).toLocaleString()}),e.jsx("p",{className:"text-white/80 text-xs font-medium mt-1",children:"Total Active Students"})]}),e.jsxs("div",{className:"flex items-center gap-2 py-1 px-3 bg-white/10 backdrop-blur-md rounded-full w-fit border border-white/10",children:[e.jsx(Ys,{size:12,className:"text-emerald-400"}),e.jsx("span",{className:"text-white text-[10px] font-bold tracking-wide",children:"+12.5% increase"})]})]}),e.jsx("div",{className:"absolute -bottom-6 -right-6 opacity-10 group-hover:scale-110 group-hover:rotate-6 transition-all duration-700 pointer-events-none",children:e.jsx(De,{size:140,className:"text-white"})})]}),e.jsx("div",{className:"col-span-12 xl:col-span-8 h-full bg-white border border-slate-200/60 rounded-[28px] px-2 py-5 flex items-center shadow-sm shadow-slate-200/50",children:e.jsx("div",{className:"grid grid-cols-4 w-full h-full",children:R.map((f,j)=>e.jsxs("div",{className:`flex flex-col justify-center px-8 ${j!==3?"border-r border-slate-100":""}`,children:[e.jsx("div",{className:`w-10 h-10 ${f.color} rounded-xl flex items-center justify-center mb-3 shadow-sm`,children:e.jsx(f.icon,{size:20,className:f.iconColor})}),e.jsx("p",{className:"text-[24px] font-display font-black text-[#1e293b] leading-tight tracking-tight",children:U?"...":f.value}),e.jsx("p",{className:"text-[9px] font-black text-slate-400 uppercase tracking-[0.15em] mt-0.5",children:f.label})]},j))})})]}),e.jsxs("div",{className:"grid grid-cols-12 gap-6 min-h-[330px]",children:[e.jsxs("div",{className:"col-span-12 xl:col-span-5 bg-white rounded-[28px] border border-slate-200/60 p-6 flex flex-col shadow-sm shadow-slate-200/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[16px] font-bold text-[#1e293b]",children:"System Performance"}),e.jsx("p",{className:"text-[11px] text-slate-400 font-medium",children:"AI vs Manual Activity"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-0.5 bg-slate-50 rounded-lg",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-[#6366f1]"}),e.jsx("span",{className:"text-[9px] font-black text-slate-500 uppercase tracking-wider",children:"AI"})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-0.5 bg-slate-50 rounded-lg",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-slate-200"}),e.jsx("span",{className:"text-[9px] font-black text-slate-500 uppercase tracking-wider",children:"Manual"})]})]})]}),e.jsx("div",{className:"flex-1 w-full min-h-[200px]",children:e.jsx(xs,{width:"100%",height:"100%",children:e.jsxs(ca,{data:[{name:"M",ai:400,man:240},{name:"T",ai:300,man:139},{name:"W",ai:520,man:280},{name:"T",ai:480,man:390},{name:"F",ai:600,man:480},{name:"S",ai:200,man:100},{name:"S",ai:150,man:90}],margin:{top:0,right:0,left:-20,bottom:0},children:[e.jsx(oa,{strokeDasharray:"4 4",vertical:!1,stroke:"#f1f5f9"}),e.jsx(da,{dataKey:"name",axisLine:!1,tickLine:!1,tick:{fontSize:9,fontWeight:800,fill:"#cbd5e1"},dy:10}),e.jsx(xa,{axisLine:!1,tickLine:!1,tick:{fontSize:9,fontWeight:800,fill:"#cbd5e1"}}),e.jsx(ma,{contentStyle:{borderRadius:"12px",border:"none",boxShadow:"0 15px 20px -5px rgb(0 0 0 / 0.1)",padding:"10px"},cursor:{fill:"#f8fafc"}}),e.jsx(Fs,{dataKey:"ai",fill:"#6366f1",radius:[4,4,0,0],barSize:12}),e.jsx(Fs,{dataKey:"man",fill:"#e2e8f0",radius:[4,4,0,0],barSize:12})]})})})]}),e.jsxs("div",{className:"col-span-12 xl:col-span-4 bg-white rounded-[28px] border border-slate-200/60 p-6 flex flex-col shadow-sm shadow-slate-200/50 group",children:[e.jsxs("div",{className:"flex items-start justify-between mb-1",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[16px] font-bold text-[#1e293b]",children:"AI Model Status"}),e.jsx("p",{className:"text-[11px] text-slate-400 font-medium",children:"Inference Tracking"})]}),e.jsx("div",{className:"w-9 h-9 bg-indigo-50 rounded-xl flex items-center justify-center",children:e.jsx(Me,{size:16,className:"text-indigo-600"})})]}),e.jsxs("div",{className:"flex items-baseline gap-2 mb-4",children:[e.jsx("span",{className:"text-[38px] font-display font-black text-indigo-600 tracking-tighter leading-none",children:"160"}),e.jsx("span",{className:"text-[10px] font-black text-emerald-500 bg-emerald-50 px-2 py-0.5 rounded-full uppercase tracking-wider",children:"Optimal"})]}),e.jsx("div",{className:"flex-1 min-h-[120px]",children:e.jsx(xs,{width:"100%",height:"100%",children:e.jsxs(pa,{data:[{v:10},{v:15},{v:12},{v:25},{v:18},{v:35},{v:28},{v:45}],children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"colorStatus",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:"#6366f1",stopOpacity:.15}),e.jsx("stop",{offset:"95%",stopColor:"#6366f1",stopOpacity:0})]})}),e.jsx(ha,{type:"monotone",dataKey:"v",stroke:"#6366f1",strokeWidth:3,fillOpacity:1,fill:"url(#colorStatus)"})]})})}),e.jsxs("button",{className:"w-full mt-4 py-3 bg-slate-50 text-[#1e293b] text-[11px] font-black uppercase tracking-[0.15em] rounded-xl hover:bg-indigo-600 hover:text-white transition-all flex items-center justify-center gap-2.5 group/btn",children:["Health Check ",e.jsx(ja,{size:14,className:"group-hover/btn:translate-x-0.5 group-hover/btn:-translate-y-0.5 transition-transform"})]})]}),e.jsxs("div",{className:"col-span-12 xl:col-span-3 flex flex-col gap-4",children:[e.jsx("h3",{className:"text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] pl-2",children:"Top Performers"}),e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[U?e.jsx("div",{className:"flex-1 flex items-center justify-center bg-white rounded-[28px] border border-slate-100",children:e.jsx(B,{size:24,className:"animate-spin text-slate-200"})}):M.slice(0,2).map((f,j)=>e.jsxs("div",{className:`relative rounded-[28px] border p-4 shadow-sm shadow-slate-200/50 transition-all cursor-pointer group overflow-hidden ${j===0?"bg-gradient-to-br from-emerald-50 to-white border-emerald-200/50":"bg-gradient-to-br from-indigo-50 to-white border-indigo-200/50"}`,children:[e.jsx("div",{className:`absolute -top-12 -right-12 w-32 h-32 rounded-full blur-2xl opacity-20 transition-all duration-700 group-hover:scale-125 ${j===0?"bg-emerald-400":"bg-indigo-400"}`}),e.jsxs("div",{className:"flex items-center gap-3 relative z-10",children:[e.jsxs("div",{className:"relative shrink-0",children:[e.jsx("div",{className:`p-[3px] rounded-[20px] shadow-sm ${j===0?"bg-gradient-to-tr from-emerald-500 to-emerald-200":"bg-gradient-to-tr from-indigo-500 to-indigo-200"}`,children:e.jsx("img",{src:f.avatar,alt:"",className:"w-11 h-11 rounded-[17px] object-cover bg-white"})}),e.jsx("div",{className:`absolute -top-2 -right-2 w-6 h-6 text-[10px] font-black rounded-full flex items-center justify-center border-2 border-white shadow-md ${j===0?"bg-emerald-500 text-white":"bg-indigo-500 text-white"}`,children:j===0?"🥇":"🥈"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h4",{className:`text-[13px] font-black truncate transition-colors ${j===0?"text-emerald-900 group-hover:text-emerald-600":"text-indigo-900 group-hover:text-indigo-600"}`,children:f.name}),e.jsx("div",{className:"flex items-center gap-1.5 mt-0.5",children:e.jsx("span",{className:`text-[8px] font-black uppercase tracking-widest px-1.5 py-0.5 rounded-md ${j===0?"bg-emerald-500/10 text-emerald-600":"bg-indigo-500/10 text-indigo-600"}`,children:f.class})})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("p",{className:`text-xl font-display font-black leading-none ${j===0?"text-emerald-600":"text-indigo-600"}`,children:[f.performance,"%"]}),e.jsx("p",{className:"text-[7px] font-black text-slate-400 uppercase tracking-tighter mt-1",children:"Mastery"})]})]})]},f.id)),e.jsx("button",{onClick:()=>p("Analytics"),className:"mt-auto py-2.5 text-[10px] font-black text-indigo-600 uppercase tracking-[0.2em] text-center bg-white border border-slate-200/60 rounded-xl hover:bg-slate-50 transition-all shadow-sm shadow-slate-200/50",children:"All Rankings"})]})]})]}),e.jsxs("div",{className:"flex flex-col xl:flex-row gap-6 pb-8 items-stretch",children:[e.jsxs("div",{className:"w-full xl:w-1/3 flex flex-col gap-6",children:[e.jsxs("div",{className:"bg-[#1e293b] rounded-[28px] p-6 text-white shadow-sm shadow-slate-900/10 relative overflow-hidden group min-h-[190px] flex flex-col justify-between shrink-0",children:[e.jsx("div",{className:"absolute -bottom-10 -right-10 opacity-5 group-hover:scale-110 group-hover:-rotate-12 transition-all duration-700 pointer-events-none",children:e.jsx(ke,{size:200})}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsx("div",{className:"w-10 h-10 bg-rose-500 rounded-xl flex items-center justify-center mb-4 shadow-lg shadow-rose-500/20",children:e.jsx(ke,{size:18,className:"text-white"})}),e.jsxs("div",{className:"px-2.5 py-1 bg-white/10 backdrop-blur-md rounded-full border border-white/10 flex items-center gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-rose-500 animate-pulse"}),e.jsx("span",{className:"text-[9px] font-black uppercase tracking-widest",children:"Urgent"})]})]}),e.jsx("h4",{className:"text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] mb-0.5",children:"Priority Attention"}),e.jsx("h3",{className:"text-xl font-display font-black tracking-tight leading-tight",children:"General Mathematics"})]}),e.jsxs("div",{className:"relative z-10 pt-2 flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-medium text-slate-400",children:"12 At-Risk Students"}),e.jsx("button",{className:"text-[10px] font-black uppercase tracking-widest text-indigo-400 hover:text-indigo-300 transition-colors",children:"Review"})]})]}),e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 p-7 flex flex-col items-center justify-center shadow-sm shadow-slate-200/50 relative overflow-hidden flex-1",children:[e.jsxs("div",{className:"absolute top-7 left-8",children:[e.jsx("h3",{className:"text-[14px] font-bold text-[#1e293b]",children:"Global Mastery"}),e.jsx("p",{className:"text-[10px] text-slate-400 font-medium",children:"Average performance"})]}),e.jsxs("div",{className:"relative w-40 h-40 mt-6",children:[e.jsx(xs,{width:"100%",height:"100%",children:e.jsx(ua,{children:e.jsxs(ga,{data:[{name:"Mastery",value:76},{name:"Remaining",value:24}],cx:"50%",cy:"50%",innerRadius:55,outerRadius:75,paddingAngle:8,dataKey:"value",startAngle:90,endAngle:450,stroke:"none",children:[e.jsx(Os,{fill:"#6366f1"}),e.jsx(Os,{fill:"#f1f5f9"})]})})}),e.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[e.jsx("span",{className:"text-[36px] font-display font-black text-[#1e293b] leading-none",children:"76%"}),e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-[0.1em] mt-1",children:"Overall"})]})]}),e.jsxs("div",{className:"mt-8 flex items-center gap-12",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-xl font-display font-black text-indigo-600 leading-none",children:"1,762"}),e.jsx("p",{className:"text-[8px] font-black text-slate-400 uppercase tracking-widest mt-1",children:"Passed"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-xl font-display font-black text-slate-300 leading-none",children:"762"}),e.jsx("p",{className:"text-[8px] font-black text-slate-400 uppercase tracking-widest mt-1",children:"Pending"})]})]}),e.jsx("div",{className:"absolute bottom-0 left-0 w-full h-1 bg-gradient-to-r from-indigo-500/20 to-purple-500/20"})]})]}),e.jsxs("div",{className:"w-full xl:w-2/3 flex flex-col gap-6",children:[e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 shadow-sm shadow-slate-200/50 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"px-6 py-4 border-b border-slate-50 flex items-center justify-between bg-slate-50/30",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"Subject Breakdown"}),e.jsx("p",{className:"text-[11px] text-slate-400 font-medium",children:"Core vs STEM performance"})]}),e.jsx("button",{className:"px-3 py-1.5 bg-white border border-slate-200 text-[10px] font-black text-[#1e293b] uppercase tracking-widest rounded-lg hover:bg-slate-50 transition-all",children:"Export"})]}),e.jsx("div",{className:"flex-1 overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-slate-50/20",children:[e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em]",children:"Subject"}),e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em]",children:"Category"}),e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em] text-center",children:"Enrolled"}),e.jsx("th",{className:"px-6 py-3 text-[9px] font-black text-slate-300 uppercase tracking-[0.2em]",children:"Progress"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-50/60",children:[{name:"General Mathematics",type:"Core",count:"4.2k",progress:85},{name:"Pre-Calculus (STEM)",type:"STEM",count:"1.8k",progress:62},{name:"Stats & Probability",type:"Core",count:"3.1k",progress:78},{name:"Basic Calculus",type:"STEM",count:"1.2k",progress:45}].map((f,j)=>e.jsxs("tr",{className:"hover:bg-slate-50/50 transition-colors group",children:[e.jsx("td",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[13px] font-bold text-[#1e293b] group-hover:text-indigo-600 transition-colors",children:f.name}),e.jsx("span",{className:"text-[9px] font-medium text-slate-400",children:"Semester 1"})]})}),e.jsx("td",{className:"px-6 py-4",children:e.jsx("span",{className:`text-[8px] font-black px-2 py-0.5 rounded-md uppercase tracking-wider ${f.type==="STEM"?"bg-indigo-50 text-indigo-600 border border-indigo-100":"bg-slate-100 text-slate-500 border border-slate-200"}`,children:f.type})}),e.jsx("td",{className:"px-6 py-4 text-center",children:e.jsx("span",{className:"text-[12px] font-bold text-slate-600",children:f.count})}),e.jsx("td",{className:"px-6 py-4 min-w-[180px]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex-1 h-1.5 bg-slate-100 rounded-full overflow-hidden p-[1px]",children:e.jsx("div",{className:`h-full rounded-full ${f.progress>80?"bg-indigo-500":f.progress>60?"bg-indigo-400":"bg-rose-400"} transition-all duration-1000`,style:{width:`${f.progress}%`}})}),e.jsxs("span",{className:"text-[11px] font-black text-[#1e293b] w-8",children:[f.progress,"%"]})]})})]},j))})]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"Activity"}),e.jsx("div",{className:"w-7 h-7 bg-slate-50 rounded-lg flex items-center justify-center",children:e.jsx(Me,{size:14,className:"text-slate-400"})})]}),e.jsx("div",{className:"space-y-5",children:h.slice(0,3).map((f,j)=>e.jsxs("div",{className:"flex gap-3 group",children:[e.jsx("div",{className:"w-9 h-9 rounded-xl bg-indigo-50 flex items-center justify-center shrink-0 group-hover:scale-110 transition-transform",children:e.jsx(ba,{size:14,className:"text-indigo-600"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[12px] font-bold text-[#1e293b] truncate leading-tight group-hover:text-indigo-600 transition-colors",children:f.action}),e.jsx("p",{className:"text-[10px] font-medium text-slate-400 truncate mt-0.5",children:f.details})]})]},j))})]}),e.jsxs("div",{className:"bg-white rounded-[28px] border border-slate-200/60 p-6 shadow-sm shadow-slate-200/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"Load"}),e.jsx("div",{className:"w-7 h-7 bg-slate-50 rounded-lg flex items-center justify-center",children:e.jsx(Pe,{size:14,className:"text-slate-400"})})]}),e.jsx("div",{className:"space-y-5",children:[{label:"Foundational",color:"bg-emerald-400",val:45},{label:"Intermediate",color:"bg-indigo-400",val:35},{label:"Advanced",color:"bg-rose-400",val:20}].map((f,j)=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1.5",children:[e.jsx("span",{className:"text-[9px] font-black text-slate-400 uppercase tracking-[0.15em]",children:f.label}),e.jsxs("span",{className:"text-[11px] font-black text-[#1e293b]",children:[f.val,"%"]})]}),e.jsx("div",{className:"h-1.5 bg-slate-50 rounded-full overflow-hidden p-[1px]",children:e.jsx("div",{className:`h-full rounded-full ${f.color}`,style:{width:`${f.val}%`}})})]},j))})]})]})]})]})]}),i==="Content"&&e.jsx(Ra,{}),i==="RAG Manager"&&e.jsx(qa,{}),i==="Audit Log"&&e.jsx(Ha,{}),i==="User Management"&&e.jsx(el,{createIntentRole:E,onCreateIntentConsumed:()=>A(null)}),i==="Analytics"&&e.jsx(sl,{}),i==="AI Monitoring"&&e.jsx(ol,{}),i==="Subjects"&&e.jsx(dl,{})]})]}),e.jsx(xl,{isOpen:oe,onClose:()=>q(!1)}),e.jsx(Ws,{isOpen:b,onClose:()=>d(!1),onConfirm:s,title:"Logout Confirmation",message:"Are you sure you want to log out? This will end your current session.",confirmText:"Logout",cancelText:"Cancel"})]})};export{mr as default}; diff --git a/assets/AssessmentPage-BlVH5UUU.js b/assets/AssessmentPage-CX2nNZ46.js similarity index 96% rename from assets/AssessmentPage-BlVH5UUU.js rename to assets/AssessmentPage-CX2nNZ46.js index dd3dc64e66e21e4e74df0ea2fdf1ee58e8896867..1de801ba0749b3a74ed7c50cfef815de7ec62014 100644 --- a/assets/AssessmentPage-BlVH5UUU.js +++ b/assets/AssessmentPage-CX2nNZ46.js @@ -1,4 +1,4 @@ -import{r,j as e}from"./vendor-react-B4AQeu28.js";import{B as Q}from"./button-pKF8t5En.js";import{s as Y}from"./diagnosticService-Db0MAPHF.js";import{e as J,m as i,Z as O,h as U,T as Z,E as G,q as H}from"./index-Dl2Y5a7s.js";import{M as W}from"./maximize-2-BkIrwX5U.js";import{X}from"./x-wHRRR-gQ.js";import{C as K}from"./clock-Dcq6nfrf.js";import{C as V}from"./circle-check-big-D4jhmnoW.js";import{C as ee}from"./chevron-right-D8o3zg2m.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";/** +import{r,j as e}from"./vendor-react-B4AQeu28.js";import{B as Q}from"./button-AeTtN-Gk.js";import{s as Y}from"./diagnosticService-DXc8cCUG.js";import{e as J,m as i,Z as O,h as U,T as Z,E as G,q as H}from"./index-pcr0VEFr.js";import{M as W}from"./maximize-2-B618Jqze.js";import{X}from"./x-W9f2bIhn.js";import{C as K}from"./clock-BUvVFwS_.js";import{C as V}from"./circle-check-big-C3Ampp76.js";import{C as ee}from"./chevron-right-BMVCfzLO.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/AvatarShop-CpnsOARn.js b/assets/AvatarShop-Dfbf05y9.js similarity index 97% rename from assets/AvatarShop-CpnsOARn.js rename to assets/AvatarShop-Dfbf05y9.js index 47e677e2a0aeab3dc930d912ab5a2863185db470..2b3c1e23930731062e969bd9d263a16b2648ada8 100644 --- a/assets/AvatarShop-CpnsOARn.js +++ b/assets/AvatarShop-Dfbf05y9.js @@ -1,4 +1,4 @@ -import{r as i,j as e}from"./vendor-react-B4AQeu28.js";import{e as se,L as ae,g as re,f as oe}from"./vendor-radix-BPuEd8FG.js";import{e as S,u as le,L as w,a4 as R,m as y,h as ie,j as c,aM as ne,aN as ce}from"./index-Dl2Y5a7s.js";import{u as de}from"./useFeatureAccess-Drs6_TME.js";import{T as me,a as ue,b as xe}from"./tooltip--nIi8N_-.js";import{C as pe}from"./CompositeAvatar-Col05lJc.js";import{M as j}from"./avatarData-BuQSOXo3.js";import{S as O}from"./save-BkInuCbo.js";import{S as V}from"./sparkles-DXDpj3ao.js";import{S as fe}from"./shirt-CyYDebXG.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";/** +import{r as i,j as e}from"./vendor-react-B4AQeu28.js";import{e as se,L as ae,g as re,f as oe}from"./vendor-radix-BPuEd8FG.js";import{e as S,u as le,L as w,a4 as R,m as y,h as ie,j as c,aM as ne,aN as ce}from"./index-pcr0VEFr.js";import{u as de}from"./useFeatureAccess-BSo8Mi8o.js";import{T as me,a as ue,b as xe}from"./tooltip-C238w8wC.js";import{C as pe}from"./CompositeAvatar-Col05lJc.js";import{M as j}from"./avatarData-BuQSOXo3.js";import{S as O}from"./save-UTAW-exi.js";import{S as V}from"./sparkles-CcaVyiD_.js";import{S as fe}from"./shirt-DVTcv3em.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/ChatMarkdown-C9qC9oWH.js b/assets/ChatMarkdown-DD4Fb-Bv.js similarity index 97% rename from assets/ChatMarkdown-C9qC9oWH.js rename to assets/ChatMarkdown-DD4Fb-Bv.js index 26838c2be326b31c1369cb7134e39798af06e857..2407a13022a7c5cb1e158bd5aa5b7bfbfb1e1b88 100644 --- a/assets/ChatMarkdown-C9qC9oWH.js +++ b/assets/ChatMarkdown-DD4Fb-Bv.js @@ -1,2 +1,2 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-react-B4AQeu28.js","assets/vendor-markdown-CfVKi3_s.css"])))=>i.map(i=>d[i]); -import{b4 as d,_ as c}from"./index-Dl2Y5a7s.js";import{r as m,j as r}from"./vendor-react-B4AQeu28.js";import{M as h,r as x,a as y}from"./vendor-markdown-yqZQ_iQm.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";let a=null;const p=()=>(a||(a=c(()=>import("./vendor-markdown-yqZQ_iQm.js").then(l=>l.k),__vite__mapDeps([0,1,2]))),a),M=({children:l})=>{if(m.useEffect(()=>{p()},[]),!l||typeof l!="string")return null;const t=d(l);return r.jsx("div",{className:"chat-markdown",children:r.jsx(h,{remarkPlugins:[y],rehypePlugins:[x],components:{a:({href:e,children:s})=>r.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:underline",children:s}),code:e=>{const{inline:s,className:o,children:n,...i}=e;return r.jsx("code",{className:`${s?"bg-gray-100 dark:bg-gray-800 rounded px-1 py-0.5 text-sm":"block bg-gray-100 dark:bg-gray-900 rounded p-3 overflow-x-auto my-2"} ${o||""}`,...i,children:n})},blockquote:({children:e})=>r.jsx("blockquote",{className:"border-l-4 border-gray-300 dark:border-gray-600 pl-4 italic text-gray-600 dark:text-gray-400 my-2",children:e}),h1:({children:e})=>r.jsx("h1",{className:"text-2xl font-bold my-2",children:e}),h2:({children:e})=>r.jsx("h2",{className:"text-xl font-bold my-2",children:e}),h3:({children:e})=>r.jsx("h3",{className:"text-lg font-bold my-2",children:e}),h4:({children:e})=>r.jsx("h4",{className:"text-base font-bold my-2",children:e}),h5:({children:e})=>r.jsx("h5",{className:"text-sm font-bold my-2",children:e}),h6:({children:e})=>r.jsx("h6",{className:"text-xs font-bold my-2",children:e}),ul:({children:e})=>r.jsx("ul",{className:"list-disc list-inside my-2",children:e}),ol:({children:e})=>r.jsx("ol",{className:"list-decimal list-inside my-2",children:e}),li:({children:e})=>r.jsx("li",{className:"ml-2",children:e}),hr:()=>r.jsx("hr",{className:"my-4 border-t border-gray-300 dark:border-gray-600"}),p:({children:e})=>r.jsx("p",{className:"my-1",children:e})},children:t})})};export{M as default}; +import{b4 as d,_ as c}from"./index-pcr0VEFr.js";import{r as m,j as r}from"./vendor-react-B4AQeu28.js";import{M as h,r as x,a as y}from"./vendor-markdown-yqZQ_iQm.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";let a=null;const p=()=>(a||(a=c(()=>import("./vendor-markdown-yqZQ_iQm.js").then(l=>l.k),__vite__mapDeps([0,1,2]))),a),M=({children:l})=>{if(m.useEffect(()=>{p()},[]),!l||typeof l!="string")return null;const t=d(l);return r.jsx("div",{className:"chat-markdown",children:r.jsx(h,{remarkPlugins:[y],rehypePlugins:[x],components:{a:({href:e,children:s})=>r.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:underline",children:s}),code:e=>{const{inline:s,className:o,children:n,...i}=e;return r.jsx("code",{className:`${s?"bg-gray-100 dark:bg-gray-800 rounded px-1 py-0.5 text-sm":"block bg-gray-100 dark:bg-gray-900 rounded p-3 overflow-x-auto my-2"} ${o||""}`,...i,children:n})},blockquote:({children:e})=>r.jsx("blockquote",{className:"border-l-4 border-gray-300 dark:border-gray-600 pl-4 italic text-gray-600 dark:text-gray-400 my-2",children:e}),h1:({children:e})=>r.jsx("h1",{className:"text-2xl font-bold my-2",children:e}),h2:({children:e})=>r.jsx("h2",{className:"text-xl font-bold my-2",children:e}),h3:({children:e})=>r.jsx("h3",{className:"text-lg font-bold my-2",children:e}),h4:({children:e})=>r.jsx("h4",{className:"text-base font-bold my-2",children:e}),h5:({children:e})=>r.jsx("h5",{className:"text-sm font-bold my-2",children:e}),h6:({children:e})=>r.jsx("h6",{className:"text-xs font-bold my-2",children:e}),ul:({children:e})=>r.jsx("ul",{className:"list-disc list-inside my-2",children:e}),ol:({children:e})=>r.jsx("ol",{className:"list-decimal list-inside my-2",children:e}),li:({children:e})=>r.jsx("li",{className:"ml-2",children:e}),hr:()=>r.jsx("hr",{className:"my-4 border-t border-gray-300 dark:border-gray-600"}),p:({children:e})=>r.jsx("p",{className:"my-1",children:e})},children:t})})};export{M as default}; diff --git a/assets/CompetencyRadarChart-jpfAisiB.js b/assets/CompetencyRadarChart-SUEb2v3B.js similarity index 97% rename from assets/CompetencyRadarChart-jpfAisiB.js rename to assets/CompetencyRadarChart-SUEb2v3B.js index 6febd08ee084dd87d83da1c1a6bbe953de0808d6..02d471ef2f95977a6dfc6a137d002bc3442259be 100644 --- a/assets/CompetencyRadarChart-jpfAisiB.js +++ b/assets/CompetencyRadarChart-SUEb2v3B.js @@ -1 +1 @@ -import{r as g,j as t}from"./vendor-react-B4AQeu28.js";import{g as A,ab as I,u as B,m as L,B as O,R as W,a as H}from"./index-Dl2Y5a7s.js";import{collection as R,getDocs as q,query as K,orderBy as U,limit as $,Timestamp as G,getDoc as J,doc as V}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as X,s as Y}from"./subjects-DcwoUK34.js";import{S as Z}from"./sparkles-DXDpj3ao.js";import{R as ee,g as te,h as se,i as ne,j as ae,k as oe,T as re}from"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chart-column-CaIU59ve.js";const P=["#1FA7E1","#9956DE","#75D06A","#FFB356","#7274ED","#FF8B8B","#6ED1CF","#FB96BB"];async function ie(a){try{const r=R(A,"users",a,"quizResults"),d=K(r,U("timestamp","desc"),$(500)),l=await q(d);return l.empty?F(a):l.docs.map(s=>{const e=s.data();return{quizId:s.id,moduleId:e.moduleId||"",subjectId:e.subjectId||"",score:typeof e.score=="number"?e.score:0,totalQuestions:e.totalQuestions||0,correctAnswers:e.correctAnswers||0,questionType:e.questionType||"multiple_choice",timestamp:e.timestamp instanceof G||e.timestamp?.toDate?e.timestamp.toDate():new Date,timeSpent:e.timeSpent||0}})}catch(r){return console.error("[competencyService] fetchQuizResults failed, falling back:",r),F(a)}}async function F(a){const r=await J(V(A,"progress",a));return r.exists()?(r.data().quizAttempts||[]).map((s,e)=>({quizId:String(s.quizId||`attempt-${e}`),moduleId:String(s.moduleId||s.quizId||""),subjectId:String(s.subjectId||""),score:typeof s.score=="number"?s.score:0,totalQuestions:s.totalQuestions||0,correctAnswers:typeof s.correctAnswers=="number"?s.correctAnswers:0,questionType:s.questionType||"multiple_choice",timestamp:s.completedAt?new Date(s.completedAt):new Date,timeSpent:s.timeSpent||0})):[]}async function ce(a){try{const r=R(A,"users",a,"moduleProgress"),d=await q(r);if(d.empty)return{};const l={};return d.forEach(s=>{const e=s.data();l[s.id]={moduleId:s.id,subjectId:e.subjectId||"",sessionsCompleted:e.sessionsCompleted||0,lastActive:e.lastActive?e.lastActive instanceof G?e.lastActive.toDate():new Date(e.lastActive):new Date,moduleTitle:e.moduleTitle||s.id,lessonsCompleted:e.lessonsCompleted||[],quizzesCompleted:e.quizzesCompleted||[]}}),l}catch(r){return console.error("[competencyService] fetchModuleProgress failed:",r),{}}}function _(a,r,d,l){const s=r.filter(p=>p.moduleId===a),e=s.length>0?s.reduce((p,b)=>p+b.score,0)/s.length:0,h=["identification","multiple_choice"],u=s.filter(p=>h.includes(p.questionType)),i=u.length>0?u.reduce((p,b)=>p+b.score,0)/u.length:e*.9,o=["word_problem","equation_based","enumeration"],n=s.filter(p=>o.includes(p.questionType)),c=n.length>0?n.reduce((p,b)=>p+b.score,0)/n.length:e*.85,m=d,f=m?.lessonsCompleted?.length||0,N=m?.quizzesCompleted?.length||0,D=m?.sessionsCompleted||0,y=l.find(p=>p.id===a),x=y?.lessons?.length||1,k=y?.quizzes?.length||1,z=Math.min(100,f/x*100),C=Math.min(100,N/k*100),v=Math.min(100,(z+C+D*5)/2.5);if(s.length<2){const p=v>50?60+v*.3:v*.8;return{overallMastery:e,conceptGrasp:i,application:c,engagement:v,consistency:Math.min(100,p)}}const w=s.map(p=>p.score),M=w.reduce((p,b)=>p+b,0)/w.length,E=w.reduce((p,b)=>p+Math.pow(b-M,2),0)/w.length,j=Math.sqrt(E)/Math.max(M,1),S=Math.max(0,Math.min(100,(1-j)*100));return{overallMastery:Math.round(e),conceptGrasp:Math.round(i),application:Math.round(c),engagement:Math.round(v),consistency:Math.round(S)}}async function le(a){try{const r=R(A,"users",a,"competencyMatrix"),d=await q(r);if(d.empty)return{};const l={};return d.forEach(s=>{const e=s.data();l[s.id]={moduleId:s.id,moduleName:e.moduleName||s.id,overallMastery:e.overallMastery??0,conceptGrasp:e.conceptGrasp??0,application:e.application??0,engagement:e.engagement??0,consistency:e.consistency??0,computedAt:e.computedAt?.toDate?.()||new Date}}),l}catch(r){return console.error("[competencyService] fetchCachedCompetencyMatrix failed:",r),{}}}const Q=[{key:"progress",label:"Overall Mastery"},{key:"concept",label:"Concept Grasp"},{key:"application",label:"Application"},{key:"engagement",label:"Engagement"},{key:"consistency",label:"Consistency"}];function de(a){const[r,d]=g.useState([]),[l,s]=g.useState([]),[e,h]=g.useState("N/A"),[u,i]=g.useState(!0),[o,n]=g.useState(null),[c,m]=g.useState(!1),f=g.useRef(0),N=g.useCallback(async(y,x)=>{if(x!==f.current)return;const z=X(null)[0]??"gen-math",C=Y.find(j=>j.id===z)?.modules||[],v=C.map((j,S)=>({id:j.id,name:j.title.length>15?j.title.substring(0,15).trim()+"...":j.title,color:P[S%P.length]})),w=await le(a);if(x!==f.current)return;if(Object.keys(w).length>0){ue(w,v,d,h),m(!1),i(!1);return}const M=await ie(a),E=await ce(a);if(x!==f.current)return;const T=M.length>0;m(!T),pe(M,E,v,C,d,h),i(!1)},[a]),D=g.useCallback(async()=>{if(!a){i(!1);return}const y=++f.current;i(!0),n(null);try{const x=await new Promise(k=>{const z=I(a,C=>{z(),k(C)})});if(y!==f.current)return;await N(x,y)}catch(x){console.error("[useCompetencyMatrix] Failed to load:",x),y===f.current&&(n("Failed to load competency data. Please try again."),i(!1))}},[a,N]);return g.useEffect(()=>{if(!a)return;const y=I(a,x=>{const k=++f.current;N(x,k)});return()=>y()},[a,N]),{data:r,modulesList:l,topModule:e,loading:u,error:o,isEmpty:c,refresh:D}}function ue(a,r,d,l){let s=-1,e="N/A";const h=Q.map(u=>{const i={metric:u.label,fullMark:100};return r.forEach(o=>{const n=a[o.id];n&&(u.key==="progress"?i[o.id]=n.overallMastery:u.key==="concept"?i[o.id]=n.conceptGrasp:u.key==="application"?i[o.id]=n.application:u.key==="engagement"?i[o.id]=n.engagement:u.key==="consistency"&&(i[o.id]=n.consistency))}),i});r.forEach(u=>{const i=a[u.id];if(i){const o=(i.overallMastery+i.conceptGrasp+i.application+i.engagement+i.consistency)/5;o>s&&(s=o,e=u.name)}}),l(e),d(h)}function pe(a,r,d,l,s,e){let h=-1,u="N/A";const i=Q.map(o=>{const n={metric:o.label,fullMark:100};return l.forEach(c=>{const m=r[c.id],f=_(c.id,a,m??{moduleId:c.id,sessionsCompleted:0,moduleTitle:c.title,lessonsCompleted:[],quizzesCompleted:[]},l);o.key==="progress"?n[c.id]=f.overallMastery:o.key==="concept"?n[c.id]=f.conceptGrasp:o.key==="application"?n[c.id]=f.application:o.key==="engagement"?n[c.id]=f.engagement:o.key==="consistency"&&(n[c.id]=f.consistency)}),n});l.forEach(o=>{const n=r[o.id],c=_(o.id,a,n??{moduleId:o.id,sessionsCompleted:0,moduleTitle:o.title,lessonsCompleted:[],quizzesCompleted:[]},l),m=(c.overallMastery+c.conceptGrasp+c.application+c.engagement+c.consistency)/5;m>h&&(h=m,u=d.find(f=>f.id===o.id)?.name||"N/A")}),e(u),s(i)}const ze=()=>{const{userProfile:a}=B(),{data:r,modulesList:d,topModule:l,loading:s,error:e,isEmpty:h,refresh:u}=de(a?.uid??""),[i,o]=g.useState(!1);return t.jsxs(L.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,ease:[.22,1,.36,1]},className:"relative overflow-hidden bg-white rounded-[16px] border border-slate-200 shadow-sm p-6 lg:p-8 group",onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[t.jsx("div",{className:"absolute -right-12 -bottom-12 w-32 h-32 bg-[#9956DE]/5 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),t.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between mb-6 relative z-10 gap-4",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:"w-10 h-10 rounded-[12px] bg-gradient-to-br from-[#a855f7] to-[#9333ea] flex items-center justify-center shadow-[0_4px_12px_rgba(168,85,247,0.2)]",children:t.jsx(O,{size:20,className:"text-white"})}),t.jsxs("div",{children:[t.jsx("h3",{className:"text-[15px] font-bold text-slate-900",children:"Competency Matrix"}),t.jsx("p",{className:"text-[12px] text-slate-500",children:"Realtime performance across modules"})]})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[!s&&!h&&!e&&t.jsxs("div",{className:"flex items-center gap-2 bg-[#f5f3ff] border border-[#e0e7ff] px-3 py-1.5 rounded-full",children:[t.jsx(Z,{size:12,className:"text-amber-500"}),t.jsx("span",{className:"text-[11px] font-bold text-[#9956DE] uppercase tracking-wider",children:l})]}),!s&&t.jsx("button",{onClick:u,className:"w-8 h-8 rounded-full bg-white border border-slate-200 flex items-center justify-center hover:bg-[#f5f3ff] hover:border-[#9956DE]/30 transition-colors shadow-sm",title:"Refresh",children:t.jsx(W,{size:13,className:"text-slate-400"})})]})]}),t.jsx("div",{className:"h-[300px] sm:h-[360px] w-full relative z-10",children:s?t.jsx("div",{className:"w-full h-full flex items-center justify-center",children:t.jsxs("div",{className:"flex flex-col items-center gap-3",children:[t.jsx("div",{className:"w-8 h-8 border-4 border-[#9956DE]/20 border-t-[#9956DE] rounded-full animate-spin"}),t.jsx("p",{className:"text-[13px] text-slate-400 font-medium",children:"Analyzing skill vectors..."})]})}):h||e?t.jsxs("div",{className:"w-full h-full flex flex-col items-center justify-center gap-4",children:[t.jsx("div",{className:"w-14 h-14 rounded-[16px] bg-gradient-to-br from-slate-100 to-slate-50 flex items-center justify-center border border-slate-200",children:t.jsx(H,{size:24,className:"text-slate-400"})}),t.jsxs("div",{className:"text-center",children:[t.jsx("p",{className:"text-[13px] font-semibold text-slate-600 mb-1",children:e?"Unable to load competency data":"No activity yet"}),t.jsx("p",{className:"text-[12px] text-slate-400 max-w-[260px]",children:e||"Complete quizzes and lessons to see your competency matrix here."})]}),e&&t.jsx("button",{onClick:u,className:"px-4 py-2 text-[12px] font-semibold bg-[#9956DE] text-white rounded-full hover:bg-[#8b45d1] transition-colors shadow-md",children:"Try Again"})]}):t.jsx(ee,{width:"100%",height:"100%",children:t.jsxs(te,{cx:"50%",cy:"50%",outerRadius:i?"75%":"70%",data:r,children:[t.jsx(se,{stroke:"#e2e8f0",strokeDasharray:"4 4",polarRadius:[20,40,60,80,100]}),t.jsx(ne,{dataKey:"metric",tick:{fill:"#475569",fontSize:12,fontWeight:600}}),t.jsx(ae,{angle:90,domain:[0,100],tick:{fill:"#94a3b8",fontSize:10},tickCount:6,axisLine:!1}),d.map(n=>t.jsx(oe,{name:n.name,dataKey:n.id,stroke:n.color,strokeWidth:2,fill:n.color,fillOpacity:.3,dot:{r:3,fill:"#fff",stroke:n.color,strokeWidth:2},activeDot:{r:5,fill:n.color,stroke:"#fff",strokeWidth:2},isAnimationActive:!0,animationDuration:1500,animationEasing:"ease-out"},n.id)),t.jsx(re,{cursor:!1,content:({active:n,payload:c})=>n&&c&&c.length?t.jsxs("div",{className:"bg-white/95 backdrop-blur-[12px] shadow-[0_8px_24px_rgba(0,0,0,0.12)] border border-slate-100 rounded-[12px] p-4",children:[t.jsx("p",{className:"font-bold text-slate-800 text-[13px] mb-2",children:c[0].payload.metric}),t.jsx("div",{className:"flex flex-col gap-1.5",children:c.map(m=>t.jsxs("div",{className:"flex items-center justify-between gap-4",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:m.stroke}}),t.jsx("span",{className:"text-[11px] font-semibold text-slate-600 truncate max-w-[120px]",children:String(m.name)})]}),t.jsxs("span",{className:"text-[13px] font-bold",style:{color:m.stroke},children:[Math.round(m.value),"%"]})]},m.name))})]}):null})]})})}),!s&&!h&&!e&&d.length>0&&t.jsx("div",{className:"flex flex-wrap justify-center items-center gap-3 mt-4 relative z-10",children:d.map(n=>t.jsxs("div",{className:"flex items-center gap-1.5 bg-slate-50 px-2.5 py-1 rounded-full border border-slate-100",children:[t.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:n.color}}),t.jsx("span",{className:"text-[10px] font-bold text-slate-600 uppercase tracking-wider",children:n.name.length>15?n.name.substring(0,12)+"...":n.name})]},n.id))})]})};export{ze as CompetencyRadarChart}; +import{r as g,j as t}from"./vendor-react-B4AQeu28.js";import{g as A,ab as I,u as B,m as L,B as O,R as W,a as H}from"./index-pcr0VEFr.js";import{collection as R,getDocs as q,query as K,orderBy as U,limit as $,Timestamp as G,getDoc as J,doc as V}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as X,s as Y}from"./subjects-DsVN1z_r.js";import{S as Z}from"./sparkles-CcaVyiD_.js";import{R as ee,g as te,h as se,i as ne,j as ae,k as oe,T as re}from"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chart-column-BNfaspCb.js";const P=["#1FA7E1","#9956DE","#75D06A","#FFB356","#7274ED","#FF8B8B","#6ED1CF","#FB96BB"];async function ie(a){try{const r=R(A,"users",a,"quizResults"),d=K(r,U("timestamp","desc"),$(500)),l=await q(d);return l.empty?F(a):l.docs.map(s=>{const e=s.data();return{quizId:s.id,moduleId:e.moduleId||"",subjectId:e.subjectId||"",score:typeof e.score=="number"?e.score:0,totalQuestions:e.totalQuestions||0,correctAnswers:e.correctAnswers||0,questionType:e.questionType||"multiple_choice",timestamp:e.timestamp instanceof G||e.timestamp?.toDate?e.timestamp.toDate():new Date,timeSpent:e.timeSpent||0}})}catch(r){return console.error("[competencyService] fetchQuizResults failed, falling back:",r),F(a)}}async function F(a){const r=await J(V(A,"progress",a));return r.exists()?(r.data().quizAttempts||[]).map((s,e)=>({quizId:String(s.quizId||`attempt-${e}`),moduleId:String(s.moduleId||s.quizId||""),subjectId:String(s.subjectId||""),score:typeof s.score=="number"?s.score:0,totalQuestions:s.totalQuestions||0,correctAnswers:typeof s.correctAnswers=="number"?s.correctAnswers:0,questionType:s.questionType||"multiple_choice",timestamp:s.completedAt?new Date(s.completedAt):new Date,timeSpent:s.timeSpent||0})):[]}async function ce(a){try{const r=R(A,"users",a,"moduleProgress"),d=await q(r);if(d.empty)return{};const l={};return d.forEach(s=>{const e=s.data();l[s.id]={moduleId:s.id,subjectId:e.subjectId||"",sessionsCompleted:e.sessionsCompleted||0,lastActive:e.lastActive?e.lastActive instanceof G?e.lastActive.toDate():new Date(e.lastActive):new Date,moduleTitle:e.moduleTitle||s.id,lessonsCompleted:e.lessonsCompleted||[],quizzesCompleted:e.quizzesCompleted||[]}}),l}catch(r){return console.error("[competencyService] fetchModuleProgress failed:",r),{}}}function _(a,r,d,l){const s=r.filter(p=>p.moduleId===a),e=s.length>0?s.reduce((p,b)=>p+b.score,0)/s.length:0,h=["identification","multiple_choice"],u=s.filter(p=>h.includes(p.questionType)),i=u.length>0?u.reduce((p,b)=>p+b.score,0)/u.length:e*.9,o=["word_problem","equation_based","enumeration"],n=s.filter(p=>o.includes(p.questionType)),c=n.length>0?n.reduce((p,b)=>p+b.score,0)/n.length:e*.85,m=d,f=m?.lessonsCompleted?.length||0,N=m?.quizzesCompleted?.length||0,D=m?.sessionsCompleted||0,y=l.find(p=>p.id===a),x=y?.lessons?.length||1,k=y?.quizzes?.length||1,z=Math.min(100,f/x*100),C=Math.min(100,N/k*100),v=Math.min(100,(z+C+D*5)/2.5);if(s.length<2){const p=v>50?60+v*.3:v*.8;return{overallMastery:e,conceptGrasp:i,application:c,engagement:v,consistency:Math.min(100,p)}}const w=s.map(p=>p.score),M=w.reduce((p,b)=>p+b,0)/w.length,E=w.reduce((p,b)=>p+Math.pow(b-M,2),0)/w.length,j=Math.sqrt(E)/Math.max(M,1),S=Math.max(0,Math.min(100,(1-j)*100));return{overallMastery:Math.round(e),conceptGrasp:Math.round(i),application:Math.round(c),engagement:Math.round(v),consistency:Math.round(S)}}async function le(a){try{const r=R(A,"users",a,"competencyMatrix"),d=await q(r);if(d.empty)return{};const l={};return d.forEach(s=>{const e=s.data();l[s.id]={moduleId:s.id,moduleName:e.moduleName||s.id,overallMastery:e.overallMastery??0,conceptGrasp:e.conceptGrasp??0,application:e.application??0,engagement:e.engagement??0,consistency:e.consistency??0,computedAt:e.computedAt?.toDate?.()||new Date}}),l}catch(r){return console.error("[competencyService] fetchCachedCompetencyMatrix failed:",r),{}}}const Q=[{key:"progress",label:"Overall Mastery"},{key:"concept",label:"Concept Grasp"},{key:"application",label:"Application"},{key:"engagement",label:"Engagement"},{key:"consistency",label:"Consistency"}];function de(a){const[r,d]=g.useState([]),[l,s]=g.useState([]),[e,h]=g.useState("N/A"),[u,i]=g.useState(!0),[o,n]=g.useState(null),[c,m]=g.useState(!1),f=g.useRef(0),N=g.useCallback(async(y,x)=>{if(x!==f.current)return;const z=X(null)[0]??"gen-math",C=Y.find(j=>j.id===z)?.modules||[],v=C.map((j,S)=>({id:j.id,name:j.title.length>15?j.title.substring(0,15).trim()+"...":j.title,color:P[S%P.length]})),w=await le(a);if(x!==f.current)return;if(Object.keys(w).length>0){ue(w,v,d,h),m(!1),i(!1);return}const M=await ie(a),E=await ce(a);if(x!==f.current)return;const T=M.length>0;m(!T),pe(M,E,v,C,d,h),i(!1)},[a]),D=g.useCallback(async()=>{if(!a){i(!1);return}const y=++f.current;i(!0),n(null);try{const x=await new Promise(k=>{const z=I(a,C=>{z(),k(C)})});if(y!==f.current)return;await N(x,y)}catch(x){console.error("[useCompetencyMatrix] Failed to load:",x),y===f.current&&(n("Failed to load competency data. Please try again."),i(!1))}},[a,N]);return g.useEffect(()=>{if(!a)return;const y=I(a,x=>{const k=++f.current;N(x,k)});return()=>y()},[a,N]),{data:r,modulesList:l,topModule:e,loading:u,error:o,isEmpty:c,refresh:D}}function ue(a,r,d,l){let s=-1,e="N/A";const h=Q.map(u=>{const i={metric:u.label,fullMark:100};return r.forEach(o=>{const n=a[o.id];n&&(u.key==="progress"?i[o.id]=n.overallMastery:u.key==="concept"?i[o.id]=n.conceptGrasp:u.key==="application"?i[o.id]=n.application:u.key==="engagement"?i[o.id]=n.engagement:u.key==="consistency"&&(i[o.id]=n.consistency))}),i});r.forEach(u=>{const i=a[u.id];if(i){const o=(i.overallMastery+i.conceptGrasp+i.application+i.engagement+i.consistency)/5;o>s&&(s=o,e=u.name)}}),l(e),d(h)}function pe(a,r,d,l,s,e){let h=-1,u="N/A";const i=Q.map(o=>{const n={metric:o.label,fullMark:100};return l.forEach(c=>{const m=r[c.id],f=_(c.id,a,m??{moduleId:c.id,sessionsCompleted:0,moduleTitle:c.title,lessonsCompleted:[],quizzesCompleted:[]},l);o.key==="progress"?n[c.id]=f.overallMastery:o.key==="concept"?n[c.id]=f.conceptGrasp:o.key==="application"?n[c.id]=f.application:o.key==="engagement"?n[c.id]=f.engagement:o.key==="consistency"&&(n[c.id]=f.consistency)}),n});l.forEach(o=>{const n=r[o.id],c=_(o.id,a,n??{moduleId:o.id,sessionsCompleted:0,moduleTitle:o.title,lessonsCompleted:[],quizzesCompleted:[]},l),m=(c.overallMastery+c.conceptGrasp+c.application+c.engagement+c.consistency)/5;m>h&&(h=m,u=d.find(f=>f.id===o.id)?.name||"N/A")}),e(u),s(i)}const ze=()=>{const{userProfile:a}=B(),{data:r,modulesList:d,topModule:l,loading:s,error:e,isEmpty:h,refresh:u}=de(a?.uid??""),[i,o]=g.useState(!1);return t.jsxs(L.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,ease:[.22,1,.36,1]},className:"relative overflow-hidden bg-white rounded-[16px] border border-slate-200 shadow-sm p-6 lg:p-8 group",onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[t.jsx("div",{className:"absolute -right-12 -bottom-12 w-32 h-32 bg-[#9956DE]/5 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),t.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between mb-6 relative z-10 gap-4",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:"w-10 h-10 rounded-[12px] bg-gradient-to-br from-[#a855f7] to-[#9333ea] flex items-center justify-center shadow-[0_4px_12px_rgba(168,85,247,0.2)]",children:t.jsx(O,{size:20,className:"text-white"})}),t.jsxs("div",{children:[t.jsx("h3",{className:"text-[15px] font-bold text-slate-900",children:"Competency Matrix"}),t.jsx("p",{className:"text-[12px] text-slate-500",children:"Realtime performance across modules"})]})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[!s&&!h&&!e&&t.jsxs("div",{className:"flex items-center gap-2 bg-[#f5f3ff] border border-[#e0e7ff] px-3 py-1.5 rounded-full",children:[t.jsx(Z,{size:12,className:"text-amber-500"}),t.jsx("span",{className:"text-[11px] font-bold text-[#9956DE] uppercase tracking-wider",children:l})]}),!s&&t.jsx("button",{onClick:u,className:"w-8 h-8 rounded-full bg-white border border-slate-200 flex items-center justify-center hover:bg-[#f5f3ff] hover:border-[#9956DE]/30 transition-colors shadow-sm",title:"Refresh",children:t.jsx(W,{size:13,className:"text-slate-400"})})]})]}),t.jsx("div",{className:"h-[300px] sm:h-[360px] w-full relative z-10",children:s?t.jsx("div",{className:"w-full h-full flex items-center justify-center",children:t.jsxs("div",{className:"flex flex-col items-center gap-3",children:[t.jsx("div",{className:"w-8 h-8 border-4 border-[#9956DE]/20 border-t-[#9956DE] rounded-full animate-spin"}),t.jsx("p",{className:"text-[13px] text-slate-400 font-medium",children:"Analyzing skill vectors..."})]})}):h||e?t.jsxs("div",{className:"w-full h-full flex flex-col items-center justify-center gap-4",children:[t.jsx("div",{className:"w-14 h-14 rounded-[16px] bg-gradient-to-br from-slate-100 to-slate-50 flex items-center justify-center border border-slate-200",children:t.jsx(H,{size:24,className:"text-slate-400"})}),t.jsxs("div",{className:"text-center",children:[t.jsx("p",{className:"text-[13px] font-semibold text-slate-600 mb-1",children:e?"Unable to load competency data":"No activity yet"}),t.jsx("p",{className:"text-[12px] text-slate-400 max-w-[260px]",children:e||"Complete quizzes and lessons to see your competency matrix here."})]}),e&&t.jsx("button",{onClick:u,className:"px-4 py-2 text-[12px] font-semibold bg-[#9956DE] text-white rounded-full hover:bg-[#8b45d1] transition-colors shadow-md",children:"Try Again"})]}):t.jsx(ee,{width:"100%",height:"100%",children:t.jsxs(te,{cx:"50%",cy:"50%",outerRadius:i?"75%":"70%",data:r,children:[t.jsx(se,{stroke:"#e2e8f0",strokeDasharray:"4 4",polarRadius:[20,40,60,80,100]}),t.jsx(ne,{dataKey:"metric",tick:{fill:"#475569",fontSize:12,fontWeight:600}}),t.jsx(ae,{angle:90,domain:[0,100],tick:{fill:"#94a3b8",fontSize:10},tickCount:6,axisLine:!1}),d.map(n=>t.jsx(oe,{name:n.name,dataKey:n.id,stroke:n.color,strokeWidth:2,fill:n.color,fillOpacity:.3,dot:{r:3,fill:"#fff",stroke:n.color,strokeWidth:2},activeDot:{r:5,fill:n.color,stroke:"#fff",strokeWidth:2},isAnimationActive:!0,animationDuration:1500,animationEasing:"ease-out"},n.id)),t.jsx(re,{cursor:!1,content:({active:n,payload:c})=>n&&c&&c.length?t.jsxs("div",{className:"bg-white/95 backdrop-blur-[12px] shadow-[0_8px_24px_rgba(0,0,0,0.12)] border border-slate-100 rounded-[12px] p-4",children:[t.jsx("p",{className:"font-bold text-slate-800 text-[13px] mb-2",children:c[0].payload.metric}),t.jsx("div",{className:"flex flex-col gap-1.5",children:c.map(m=>t.jsxs("div",{className:"flex items-center justify-between gap-4",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:m.stroke}}),t.jsx("span",{className:"text-[11px] font-semibold text-slate-600 truncate max-w-[120px]",children:String(m.name)})]}),t.jsxs("span",{className:"text-[13px] font-bold",style:{color:m.stroke},children:[Math.round(m.value),"%"]})]},m.name))})]}):null})]})})}),!s&&!h&&!e&&d.length>0&&t.jsx("div",{className:"flex flex-wrap justify-center items-center gap-3 mt-4 relative z-10",children:d.map(n=>t.jsxs("div",{className:"flex items-center gap-1.5 bg-slate-50 px-2.5 py-1 rounded-full border border-slate-100",children:[t.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:n.color}}),t.jsx("span",{className:"text-[10px] font-bold text-slate-600 uppercase tracking-wider",children:n.name.length>15?n.name.substring(0,12)+"...":n.name})]},n.id))})]})};export{ze as CompetencyRadarChart}; diff --git a/assets/ConfirmModal-BO62ig7W.js b/assets/ConfirmModal-BMBZzISp.js similarity index 91% rename from assets/ConfirmModal-BO62ig7W.js rename to assets/ConfirmModal-BMBZzISp.js index cde545d9a14be09dfa52eab497bb8040fe04abff..f882b2937636075262dd5398cd18d61c96a4bac5 100644 --- a/assets/ConfirmModal-BO62ig7W.js +++ b/assets/ConfirmModal-BMBZzISp.js @@ -1 +1 @@ -import{j as e}from"./vendor-react-B4AQeu28.js";import{B as i}from"./button-pKF8t5En.js";import{h as u,m as r,x as f}from"./index-Dl2Y5a7s.js";import{X as y}from"./x-wHRRR-gQ.js";import{T as j}from"./trash-2-D0AgwsJy.js";import{L as w}from"./log-out-wnJ21BJr.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";const O=({isOpen:s,onClose:t,onConfirm:n,title:a,message:l,confirmText:c="Confirm",cancelText:d="Cancel",type:x="warning",icon:m="warning",zIndexClass:g="z-50"})=>{const b=()=>{switch(m){case"logout":return e.jsx(w,{size:32});case"delete":return e.jsx(j,{size:32});case"warning":default:return e.jsx(f,{size:32})}},o=(()=>{switch(x){case"danger":return{iconBg:"bg-red-100",iconColor:"text-red-600",buttonBg:"bg-red-600 hover:bg-red-700",buttonText:"text-white"};case"warning":return{iconBg:"bg-rose-100",iconColor:"text-rose-600",buttonBg:"bg-rose-600 hover:bg-rose-700",buttonText:"text-white"};case"info":default:return{iconBg:"bg-sky-100",iconColor:"text-sky-600",buttonBg:"bg-sky-600 hover:bg-sky-700",buttonText:"text-white"}}})(),p=async()=>{try{await n(),t()}catch{}};return e.jsx(u,{children:s&&e.jsx(e.Fragment,{children:e.jsx(r.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:t,className:`fixed inset-0 bg-black/50 backdrop-blur-sm ${g} flex items-center justify-center p-4`,children:e.jsxs(r.div,{initial:{opacity:0,scale:.9,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.9,y:20},transition:{type:"spring",damping:25,stiffness:300},onClick:h=>h.stopPropagation(),className:"bg-[#f7f9fc] rounded-3xl shadow-2xl max-w-md w-full overflow-hidden border border-[#dde3eb]",children:[e.jsx("button",{onClick:t,className:"absolute top-4 right-4 p-2 text-slate-500 hover:text-[#0a1628] hover:bg-[#dde3eb] rounded-xl transition-colors z-10",children:e.jsx(y,{size:20})}),e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(r.div,{initial:{scale:0},animate:{scale:1},transition:{delay:.1,type:"spring",damping:15},className:`w-20 h-20 ${o.iconBg} rounded-full flex items-center justify-center mx-auto mb-6 ${o.iconColor}`,children:b()}),e.jsx("h2",{className:"text-2xl font-display font-bold text-[#0a1628] mb-3",children:a}),e.jsx("p",{className:"text-[#5a6578] mb-8 leading-relaxed",children:l}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(i,{onClick:t,variant:"outline",size:"lg",className:"flex-1 h-12 rounded-xl border-[#dde3eb] hover:border-[#d1cec6] hover:bg-[#edf1f7] font-bold",children:d}),e.jsx(i,{onClick:p,size:"lg",className:`flex-1 h-12 rounded-xl font-bold ${o.buttonBg} ${o.buttonText} transition-colors shadow-lg`,children:c})]})]})]})})})})};export{O as default}; +import{j as e}from"./vendor-react-B4AQeu28.js";import{B as i}from"./button-AeTtN-Gk.js";import{h as u,m as r,x as f}from"./index-pcr0VEFr.js";import{X as y}from"./x-W9f2bIhn.js";import{T as j}from"./trash-2-CcKz2OV0.js";import{L as w}from"./log-out-CXrb7Klg.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";const O=({isOpen:s,onClose:t,onConfirm:n,title:a,message:l,confirmText:c="Confirm",cancelText:d="Cancel",type:x="warning",icon:m="warning",zIndexClass:g="z-50"})=>{const b=()=>{switch(m){case"logout":return e.jsx(w,{size:32});case"delete":return e.jsx(j,{size:32});case"warning":default:return e.jsx(f,{size:32})}},o=(()=>{switch(x){case"danger":return{iconBg:"bg-red-100",iconColor:"text-red-600",buttonBg:"bg-red-600 hover:bg-red-700",buttonText:"text-white"};case"warning":return{iconBg:"bg-rose-100",iconColor:"text-rose-600",buttonBg:"bg-rose-600 hover:bg-rose-700",buttonText:"text-white"};case"info":default:return{iconBg:"bg-sky-100",iconColor:"text-sky-600",buttonBg:"bg-sky-600 hover:bg-sky-700",buttonText:"text-white"}}})(),p=async()=>{try{await n(),t()}catch{}};return e.jsx(u,{children:s&&e.jsx(e.Fragment,{children:e.jsx(r.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:t,className:`fixed inset-0 bg-black/50 backdrop-blur-sm ${g} flex items-center justify-center p-4`,children:e.jsxs(r.div,{initial:{opacity:0,scale:.9,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.9,y:20},transition:{type:"spring",damping:25,stiffness:300},onClick:h=>h.stopPropagation(),className:"bg-[#f7f9fc] rounded-3xl shadow-2xl max-w-md w-full overflow-hidden border border-[#dde3eb]",children:[e.jsx("button",{onClick:t,className:"absolute top-4 right-4 p-2 text-slate-500 hover:text-[#0a1628] hover:bg-[#dde3eb] rounded-xl transition-colors z-10",children:e.jsx(y,{size:20})}),e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(r.div,{initial:{scale:0},animate:{scale:1},transition:{delay:.1,type:"spring",damping:15},className:`w-20 h-20 ${o.iconBg} rounded-full flex items-center justify-center mx-auto mb-6 ${o.iconColor}`,children:b()}),e.jsx("h2",{className:"text-2xl font-display font-bold text-[#0a1628] mb-3",children:a}),e.jsx("p",{className:"text-[#5a6578] mb-8 leading-relaxed",children:l}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(i,{onClick:t,variant:"outline",size:"lg",className:"flex-1 h-12 rounded-xl border-[#dde3eb] hover:border-[#d1cec6] hover:bg-[#edf1f7] font-bold",children:d}),e.jsx(i,{onClick:p,size:"lg",className:`flex-1 h-12 rounded-xl font-bold ${o.buttonBg} ${o.buttonText} transition-colors shadow-lg`,children:c})]})]})]})})})})};export{O as default}; diff --git a/assets/FloatingAITutor-DJ8KxCL3.js b/assets/FloatingAITutor-DKZKREY2.js similarity index 93% rename from assets/FloatingAITutor-DJ8KxCL3.js rename to assets/FloatingAITutor-DKZKREY2.js index f44c50ca7d12a0e209e8443cf145ac8eead65567..b2ac0681c93eb5a2c4ccc77f70f24cf9d5223f2b 100644 --- a/assets/FloatingAITutor-DJ8KxCL3.js +++ b/assets/FloatingAITutor-DKZKREY2.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatMarkdown-C9qC9oWH.js","assets/index-Dl2Y5a7s.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-ZLSkO1Xv.css"])))=>i.map(i=>d[i]); -import{aE as C,_ as y,m as b,I as A}from"./index-Dl2Y5a7s.js";import{r as i,j as e}from"./vendor-react-B4AQeu28.js";import{M}from"./maximize-2-BkIrwX5U.js";import{M as w}from"./minus-BUZ8QSLu.js";import{X as g}from"./x-wHRRR-gQ.js";import{S as L}from"./send-Bv1lHqor.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const E=i.lazy(()=>y(()=>import("./ChatMarkdown-C9qC9oWH.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])));function O(a){return a?a instanceof Date?a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):typeof a=="object"&&"toDate"in a?a.toDate().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):String(a):""}const Q=({constraintsRef:a,onFullScreen:j})=>{const{activeSessionId:r,setActiveSessionId:v,createNewSession:N,getActiveSession:k,sendMessage:I,isLoading:o}=C(),[s,l]=i.useState(!1),[c,u]=i.useState(()=>typeof window>"u"?!1:window.localStorage.getItem("floating_ai_tutor_minimized")==="1"),[n,m]=i.useState(""),h=i.useRef(null);i.useEffect(()=>{typeof window>"u"||window.localStorage.setItem("floating_ai_tutor_minimized",c?"1":"0")},[c]),i.useEffect(()=>{s&&y(async()=>{const{warmupBackend:t}=await import("./index-Dl2Y5a7s.js").then(d=>d.b6);return{warmupBackend:t}},__vite__mapDeps([1,2,3,4,5,6,7,8,9,10,11,12])).then(({warmupBackend:t})=>{t()}).catch(t=>{console.warn("Floating tutor warmup skipped:",t)})},[s]),i.useEffect(()=>{if(s&&!r){const t={id:"1",sender:"ai",text:"Hi! I'm your AI math tutor. What would you like to learn about today?",timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})},d=N(t);v(d)}},[s]);const x=k()?.messages||[],S=()=>{h.current?.scrollIntoView({behavior:"smooth"})};i.useEffect(()=>{S()},[x]);const p=async()=>{if(!n.trim()||!r||o)return;const t=n.trim();m(""),await I(r,t)},_=()=>{j()},f=()=>{l(!1),u(!0)},z=()=>{u(!1)};return e.jsxs("div",{className:"pointer-events-none flex flex-col items-end",children:[e.jsxs("div",{className:`pointer-events-auto mb-4 w-80 bg-[#f7f9fc] rounded-3xl shadow-2xl border border-[#dde3eb] flex flex-col overflow-hidden transition-all duration-300 origin-bottom-right select-none ${s?"opacity-100 scale-100 translate-y-0":"opacity-0 scale-95 translate-y-10 pointer-events-none h-0"}`,style:{"--max-h":s?"32rem":"0",willChange:"transform, opacity"},children:[e.jsxs("div",{className:"bg-gradient-to-r from-sky-600 to-sky-500 p-4 flex items-center justify-between flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 bg-white/20 rounded-xl flex items-center justify-center backdrop-blur-sm",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-9 h-9 object-contain drop-shadow-md"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-white font-bold text-sm",children:"L.O.L.I."}),e.jsxs("p",{className:"text-sky-100 text-[10px] leading-tight",children:["Logical Operations &",e.jsx("br",{}),"Learning Intelligence"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:_,type:"button","aria-label":"Open fullscreen",className:"p-2 hover:bg-white/20 rounded-lg transition-colors",title:"Open fullscreen",children:e.jsx(M,{size:16,className:"text-white"})}),e.jsx("button",{type:"button","aria-label":"Minimize AI tutor launcher",onClick:f,className:"p-2 hover:bg-white/20 rounded-lg transition-colors",title:"Minimize",children:e.jsx(w,{size:16,className:"text-white"})}),e.jsx("button",{type:"button","aria-label":"Close chat",onClick:()=>l(!1),className:"p-2 hover:bg-white/20 rounded-lg transition-colors",children:e.jsx(g,{size:16,className:"text-white"})})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-3 bg-[#edf1f7]",children:[x.map(t=>e.jsx("div",{className:`flex ${t.sender==="user"?"justify-end":"justify-start"}`,children:e.jsxs("div",{className:`max-w-[75%] rounded-2xl px-4 py-2.5 ${t.sender==="user"?"bg-sky-600 text-white":"bg-white text-[#0a1628] shadow-sm border border-[#dde3eb]"}`,children:[t.sender==="user"?e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:t.text}):e.jsx(i.Suspense,{fallback:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:t.text}),children:e.jsx(E,{children:t.text})}),e.jsx("p",{className:`text-[10px] mt-1 ${t.sender==="user"?"text-sky-200":"text-slate-500"}`,children:O(t.timestamp)})]})},t.id)),o&&e.jsx("div",{className:"flex justify-start",children:e.jsx("div",{className:"bg-white text-[#0a1628] shadow-sm border border-[#dde3eb] rounded-2xl px-4 py-2.5 max-w-[75%]",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:150ms]"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:300ms]"})]})})}),e.jsx("div",{ref:h})]}),e.jsx("div",{className:"p-4 border-t border-[#dde3eb] bg-white flex-shrink-0",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{id:"ai-tutor-input",name:"ai-tutor-input","aria-label":"Ask AI tutor a question",type:"text",value:n,onChange:t=>m(t.target.value),onKeyPress:t=>t.key==="Enter"&&p(),placeholder:"Ask me anything...",className:"flex-1 px-4 py-2.5 rounded-xl border border-[#dde3eb] focus:outline-none focus:ring-2 focus:ring-sky-500 text-sm bg-[#f7f9fc]"}),e.jsx("button",{type:"button","aria-label":"Send message",onClick:p,className:"p-2.5 bg-sky-600 hover:bg-sky-700 text-white rounded-xl transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:!n.trim()||o,children:e.jsx(L,{size:18})})]})})]}),e.jsx("div",{className:"pointer-events-auto relative self-end",children:c?e.jsx(b.button,{type:"button",onClick:z,whileHover:{scale:1.08},whileTap:{scale:.95},transition:{duration:.15,ease:"easeOut"},className:"h-9 w-9 rounded-full bg-slate-900/85 text-white shadow-lg ring-1 ring-white/20 backdrop-blur-sm flex items-center justify-center","aria-label":"Restore AI tutor launcher",title:"Show AI tutor",style:{willChange:"transform"},children:e.jsx(A,{size:14})}):e.jsxs("div",{className:"relative group",children:[!s&&e.jsxs("div",{className:"absolute right-full mr-4 top-1/2 -translate-y-1/2 px-4 py-2 bg-slate-800 text-white text-sm rounded-xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none whitespace-nowrap shadow-xl z-50",children:["Hello! I'm L.O.L.I., how may I help you?",e.jsx("div",{className:"absolute top-1/2 -translate-y-1/2 -right-1 w-3 h-3 bg-slate-800 rotate-45"})]}),!s&&e.jsx("button",{type:"button","aria-label":"Minimize AI tutor launcher",title:"Minimize",onClick:f,className:"absolute -top-2 -left-2 z-10 h-6 w-6 rounded-full bg-white text-slate-700 border border-slate-200 shadow-md hover:bg-slate-100 transition-colors flex items-center justify-center",children:e.jsx(w,{size:12})}),e.jsx(b.button,{type:"button",onClick:()=>l(!s),whileHover:{scale:1.1},whileTap:{scale:.9},transition:{duration:.15,ease:"easeOut"},className:"w-16 h-16 bg-gradient-to-br from-sky-600 to-sky-500 rounded-xl shadow-2xl flex items-center justify-center text-white hover:shadow-sky-300/50 transition-all","aria-label":s?"Close AI tutor chat":"Open AI tutor chat",style:{willChange:"transform"},children:s?e.jsx(g,{size:28}):e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-14 h-14 object-contain drop-shadow-lg"})})]})})]})};export{Q as default}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatMarkdown-DD4Fb-Bv.js","assets/index-pcr0VEFr.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-Bm8ni9Xq.css"])))=>i.map(i=>d[i]); +import{aE as C,_ as y,m as b,I as A}from"./index-pcr0VEFr.js";import{r as i,j as e}from"./vendor-react-B4AQeu28.js";import{M}from"./maximize-2-B618Jqze.js";import{M as w}from"./minus-Br3D3UVG.js";import{X as g}from"./x-W9f2bIhn.js";import{S as L}from"./send-gL3P1x3P.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const E=i.lazy(()=>y(()=>import("./ChatMarkdown-DD4Fb-Bv.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])));function O(a){return a?a instanceof Date?a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):typeof a=="object"&&"toDate"in a?a.toDate().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):String(a):""}const Q=({constraintsRef:a,onFullScreen:j})=>{const{activeSessionId:r,setActiveSessionId:v,createNewSession:N,getActiveSession:k,sendMessage:I,isLoading:o}=C(),[s,l]=i.useState(!1),[c,u]=i.useState(()=>typeof window>"u"?!1:window.localStorage.getItem("floating_ai_tutor_minimized")==="1"),[n,m]=i.useState(""),h=i.useRef(null);i.useEffect(()=>{typeof window>"u"||window.localStorage.setItem("floating_ai_tutor_minimized",c?"1":"0")},[c]),i.useEffect(()=>{s&&y(async()=>{const{warmupBackend:t}=await import("./index-pcr0VEFr.js").then(d=>d.b6);return{warmupBackend:t}},__vite__mapDeps([1,2,3,4,5,6,7,8,9,10,11,12])).then(({warmupBackend:t})=>{t()}).catch(t=>{console.warn("Floating tutor warmup skipped:",t)})},[s]),i.useEffect(()=>{if(s&&!r){const t={id:"1",sender:"ai",text:"Hi! I'm your AI math tutor. What would you like to learn about today?",timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})},d=N(t);v(d)}},[s]);const x=k()?.messages||[],S=()=>{h.current?.scrollIntoView({behavior:"smooth"})};i.useEffect(()=>{S()},[x]);const p=async()=>{if(!n.trim()||!r||o)return;const t=n.trim();m(""),await I(r,t)},_=()=>{j()},f=()=>{l(!1),u(!0)},z=()=>{u(!1)};return e.jsxs("div",{className:"pointer-events-none flex flex-col items-end",children:[e.jsxs("div",{className:`pointer-events-auto mb-4 w-80 bg-[#f7f9fc] rounded-3xl shadow-2xl border border-[#dde3eb] flex flex-col overflow-hidden transition-all duration-300 origin-bottom-right select-none ${s?"opacity-100 scale-100 translate-y-0":"opacity-0 scale-95 translate-y-10 pointer-events-none h-0"}`,style:{"--max-h":s?"32rem":"0",willChange:"transform, opacity"},children:[e.jsxs("div",{className:"bg-gradient-to-r from-sky-600 to-sky-500 p-4 flex items-center justify-between flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 bg-white/20 rounded-xl flex items-center justify-center backdrop-blur-sm",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-9 h-9 object-contain drop-shadow-md"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-white font-bold text-sm",children:"L.O.L.I."}),e.jsxs("p",{className:"text-sky-100 text-[10px] leading-tight",children:["Logical Operations &",e.jsx("br",{}),"Learning Intelligence"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:_,type:"button","aria-label":"Open fullscreen",className:"p-2 hover:bg-white/20 rounded-lg transition-colors",title:"Open fullscreen",children:e.jsx(M,{size:16,className:"text-white"})}),e.jsx("button",{type:"button","aria-label":"Minimize AI tutor launcher",onClick:f,className:"p-2 hover:bg-white/20 rounded-lg transition-colors",title:"Minimize",children:e.jsx(w,{size:16,className:"text-white"})}),e.jsx("button",{type:"button","aria-label":"Close chat",onClick:()=>l(!1),className:"p-2 hover:bg-white/20 rounded-lg transition-colors",children:e.jsx(g,{size:16,className:"text-white"})})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-3 bg-[#edf1f7]",children:[x.map(t=>e.jsx("div",{className:`flex ${t.sender==="user"?"justify-end":"justify-start"}`,children:e.jsxs("div",{className:`max-w-[75%] rounded-2xl px-4 py-2.5 ${t.sender==="user"?"bg-sky-600 text-white":"bg-white text-[#0a1628] shadow-sm border border-[#dde3eb]"}`,children:[t.sender==="user"?e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:t.text}):e.jsx(i.Suspense,{fallback:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:t.text}),children:e.jsx(E,{children:t.text})}),e.jsx("p",{className:`text-[10px] mt-1 ${t.sender==="user"?"text-sky-200":"text-slate-500"}`,children:O(t.timestamp)})]})},t.id)),o&&e.jsx("div",{className:"flex justify-start",children:e.jsx("div",{className:"bg-white text-[#0a1628] shadow-sm border border-[#dde3eb] rounded-2xl px-4 py-2.5 max-w-[75%]",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:150ms]"}),e.jsx("div",{className:"w-2 h-2 bg-sky-400 rounded-full animate-bounce [animation-delay:300ms]"})]})})}),e.jsx("div",{ref:h})]}),e.jsx("div",{className:"p-4 border-t border-[#dde3eb] bg-white flex-shrink-0",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{id:"ai-tutor-input",name:"ai-tutor-input","aria-label":"Ask AI tutor a question",type:"text",value:n,onChange:t=>m(t.target.value),onKeyPress:t=>t.key==="Enter"&&p(),placeholder:"Ask me anything...",className:"flex-1 px-4 py-2.5 rounded-xl border border-[#dde3eb] focus:outline-none focus:ring-2 focus:ring-sky-500 text-sm bg-[#f7f9fc]"}),e.jsx("button",{type:"button","aria-label":"Send message",onClick:p,className:"p-2.5 bg-sky-600 hover:bg-sky-700 text-white rounded-xl transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:!n.trim()||o,children:e.jsx(L,{size:18})})]})})]}),e.jsx("div",{className:"pointer-events-auto relative self-end",children:c?e.jsx(b.button,{type:"button",onClick:z,whileHover:{scale:1.08},whileTap:{scale:.95},transition:{duration:.15,ease:"easeOut"},className:"h-9 w-9 rounded-full bg-slate-900/85 text-white shadow-lg ring-1 ring-white/20 backdrop-blur-sm flex items-center justify-center","aria-label":"Restore AI tutor launcher",title:"Show AI tutor",style:{willChange:"transform"},children:e.jsx(A,{size:14})}):e.jsxs("div",{className:"relative group",children:[!s&&e.jsxs("div",{className:"absolute right-full mr-4 top-1/2 -translate-y-1/2 px-4 py-2 bg-slate-800 text-white text-sm rounded-xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none whitespace-nowrap shadow-xl z-50",children:["Hello! I'm L.O.L.I., how may I help you?",e.jsx("div",{className:"absolute top-1/2 -translate-y-1/2 -right-1 w-3 h-3 bg-slate-800 rotate-45"})]}),!s&&e.jsx("button",{type:"button","aria-label":"Minimize AI tutor launcher",title:"Minimize",onClick:f,className:"absolute -top-2 -left-2 z-10 h-6 w-6 rounded-full bg-white text-slate-700 border border-slate-200 shadow-md hover:bg-slate-100 transition-colors flex items-center justify-center",children:e.jsx(w,{size:12})}),e.jsx(b.button,{type:"button",onClick:()=>l(!s),whileHover:{scale:1.1},whileTap:{scale:.9},transition:{duration:.15,ease:"easeOut"},className:"w-16 h-16 bg-gradient-to-br from-sky-600 to-sky-500 rounded-xl shadow-2xl flex items-center justify-center text-white hover:shadow-sky-300/50 transition-all","aria-label":s?"Close AI tutor chat":"Open AI tutor chat",style:{willChange:"transform"},children:s?e.jsx(g,{size:28}):e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Tutor",className:"w-14 h-14 object-contain drop-shadow-lg"})})]})})]})};export{Q as default}; diff --git a/assets/GradesPage-BX_8Snp_.js b/assets/GradesPage-Czo_osam.js similarity index 97% rename from assets/GradesPage-BX_8Snp_.js rename to assets/GradesPage-Czo_osam.js index 3bade214972d70ac9b13605c8044802ee1492cf1..8cb0adf58bd201d87dced4543c577eaed4b1ff1c 100644 --- a/assets/GradesPage-BX_8Snp_.js +++ b/assets/GradesPage-Czo_osam.js @@ -1,2 +1,2 @@ -import{r as o,j as e}from"./vendor-react-B4AQeu28.js";import{B as v}from"./button-pKF8t5En.js";import{u as q,aF as ee,aG as se,g as E,F as te,A as ae,q as $,T as D,B as re}from"./index-Dl2Y5a7s.js";import{g as le,S as P}from"./subjects-DcwoUK34.js";import{u as ne}from"./useCurriculum-DnU6Jf3F.js";import{getDoc as M,doc as F}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{D as oe}from"./download-Bvx53dXJ.js";import{C as ie}from"./circle-check-OLox8hf3.js";import{C as de}from"./circle-alert-CmKGy6F7.js";import{F as G}from"./funnel-C3sJcU2r.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chart-column-CaIU59ve.js";const Ce=()=>{const{currentUser:n,userProfile:N}=q(),[d,y]=o.useState("all"),[x,Q]=o.useState("all"),[B,u]=o.useState(!0),[b,U]=o.useState(null),[O,I]=o.useState([]),[r,S]=o.useState(null),k=N?.grade,_=le(k),A=new Set(_),{isLoading:H}=ne(k);o.useEffect(()=>{},[H]);const Y=s=>{if(s==null)return"N/A";const t=s instanceof Date?s:new Date(s);return Number.isNaN(t.getTime())?"N/A":t.toISOString().split("T")[0]};o.useEffect(()=>{if(!n)return;u(!0);const s=ee(n.uid,a=>{U(a),u(!1)}),t=se(n.uid,a=>{I(a),u(!1)});return()=>{s(),t()}},[n]),o.useEffect(()=>{n?.uid&&(async()=>{try{const s=await M(F(E,"users",n.uid,"dashboardSummary","heroBannerModal"));if(s.exists()){const a=s.data();if(a.status==="ready"){S({score:a.latestScorePercent||0,riskLevel:a.latestRiskLevel||"Unknown",weaknesses:a.weaknesses||[],recommendation:a.recommendation||""});return}}const t=await M(F(E,"users",n.uid));if(t.exists()){const a=t.data();(a.initialAssessmentCompleted||a.hasCompletedInitialAssessment)&&S({score:0,riskLevel:a.atRiskSubjects?.length>0?"Moderate":"Low",weaknesses:a.atRiskSubjects||[],recommendation:"Continue with your personalized learning path."})}}catch{}})()},[n?.uid]);const g=b?.averageScore?Math.round(b.averageScore):0,V=b?.quizzesCompleted??0,J=g>0?(g/100*4).toFixed(2):"0.00",K={"gen-math":"indigo","stats-prob":"violet"},C={indigo:{dot:"bg-indigo-500",bar:"bg-indigo-500"},violet:{dot:"bg-violet-500",bar:"bg-violet-500"},fuchsia:{dot:"bg-fuchsia-500",bar:"bg-fuchsia-500"},purple:{dot:"bg-purple-500",bar:"bg-purple-500"},slate:{dot:"bg-slate-500",bar:"bg-slate-500"}},T=P.reduce((s,t)=>(s[t.id]={label:t.name,color:K[t.id]||"slate"},s),{}),c=P.filter(s=>A.has(s.id)).map(s=>s.name),L=Object.entries({}).filter(([s])=>A.has(s)).map(([s,t])=>{const a=T[s]||{label:s,color:"slate"},i=[],f=i.length>0?Math.round(i.reduce((j,h)=>j+h.score,0)/i.length):Math.round(t?.progress??0);return{subject:a.label,average:f,quizzes:i.length||t?.completedModules,color:a.color}}),W=_.map(s=>{const t=T[s]||{label:s,color:"slate"};return{subject:t.label,average:0,quizzes:0,color:t.color}}),R=L.length>0?L:W,z=O.slice().sort((s,t)=>{const a=s.completedAt?.toDate?.()?.getTime()??0;return(t.completedAt?.toDate?.()?.getTime()??0)-a}).slice(0,10).map((s,t)=>({id:t+1,title:s.title||`Assessment ${t+1}`,subject:s.subject||"General",score:s.score,date:s.completedAt?Y(s.completedAt.toDate()):"N/A",type:s.type==="practice"?"practice":(s.type==="diagnostic","module"),status:s.score>=80?"Excellent":s.score>=60?"Passing":"Needs Review"})).filter(s=>c.includes(s.subject)),p=z.filter(s=>{if(!c.includes(s.subject))return!1;const t=d==="all"||s.subject===d,a=x==="all"||s.type===x;return t&&a});o.useEffect(()=>{d!=="all"&&(c.includes(d)||y("all"))},[c,d]);const X=()=>{const s=l=>{const w=String(l??"");return/[",\n]/.test(w)?`"${w.replace(/"/g,'""')}"`:w},t=[],a=N?.name||n?.displayName||n?.email||"Student",i=new Date().toISOString().split("T")[0];t.push("Grade Report"),t.push(`Student,${s(a)}`),t.push(`Export Date,${s(i)}`),t.push(`Subject Filter,${s(d)}`),t.push(`Type Filter,${s(x)}`),t.push(""),t.push("Subject Performance"),t.push("Subject,Average Score"),R.forEach(l=>{t.push([s(l.subject),s(l.average)].join(","))}),t.push(""),t.push("Recent Quizzes"),t.push("Title,Subject,Score,Date,Type,Status"),p.length===0?t.push("No quiz data available for the selected filters"):p.forEach(l=>{t.push([s(l.title),s(l.subject),s(l.score),s(l.date),s(l.type),s(l.status)].join(","))});const f=t.join(` +import{r as o,j as e}from"./vendor-react-B4AQeu28.js";import{B as v}from"./button-AeTtN-Gk.js";import{u as q,aF as ee,aG as se,g as E,F as te,A as ae,q as $,T as D,B as re}from"./index-pcr0VEFr.js";import{g as le,S as P}from"./subjects-DsVN1z_r.js";import{u as ne}from"./useCurriculum-0U0j41i7.js";import{getDoc as M,doc as F}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{D as oe}from"./download-DnmwFFXB.js";import{C as ie}from"./circle-check-DWLljvZa.js";import{C as de}from"./circle-alert-BVTBnraV.js";import{F as G}from"./funnel-qr3WhEld.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chart-column-BNfaspCb.js";const Ce=()=>{const{currentUser:n,userProfile:N}=q(),[d,y]=o.useState("all"),[x,Q]=o.useState("all"),[B,u]=o.useState(!0),[b,U]=o.useState(null),[O,I]=o.useState([]),[r,S]=o.useState(null),k=N?.grade,_=le(k),A=new Set(_),{isLoading:H}=ne(k);o.useEffect(()=>{},[H]);const Y=s=>{if(s==null)return"N/A";const t=s instanceof Date?s:new Date(s);return Number.isNaN(t.getTime())?"N/A":t.toISOString().split("T")[0]};o.useEffect(()=>{if(!n)return;u(!0);const s=ee(n.uid,a=>{U(a),u(!1)}),t=se(n.uid,a=>{I(a),u(!1)});return()=>{s(),t()}},[n]),o.useEffect(()=>{n?.uid&&(async()=>{try{const s=await M(F(E,"users",n.uid,"dashboardSummary","heroBannerModal"));if(s.exists()){const a=s.data();if(a.status==="ready"){S({score:a.latestScorePercent||0,riskLevel:a.latestRiskLevel||"Unknown",weaknesses:a.weaknesses||[],recommendation:a.recommendation||""});return}}const t=await M(F(E,"users",n.uid));if(t.exists()){const a=t.data();(a.initialAssessmentCompleted||a.hasCompletedInitialAssessment)&&S({score:0,riskLevel:a.atRiskSubjects?.length>0?"Moderate":"Low",weaknesses:a.atRiskSubjects||[],recommendation:"Continue with your personalized learning path."})}}catch{}})()},[n?.uid]);const g=b?.averageScore?Math.round(b.averageScore):0,V=b?.quizzesCompleted??0,J=g>0?(g/100*4).toFixed(2):"0.00",K={"gen-math":"indigo","stats-prob":"violet"},C={indigo:{dot:"bg-indigo-500",bar:"bg-indigo-500"},violet:{dot:"bg-violet-500",bar:"bg-violet-500"},fuchsia:{dot:"bg-fuchsia-500",bar:"bg-fuchsia-500"},purple:{dot:"bg-purple-500",bar:"bg-purple-500"},slate:{dot:"bg-slate-500",bar:"bg-slate-500"}},T=P.reduce((s,t)=>(s[t.id]={label:t.name,color:K[t.id]||"slate"},s),{}),c=P.filter(s=>A.has(s.id)).map(s=>s.name),L=Object.entries({}).filter(([s])=>A.has(s)).map(([s,t])=>{const a=T[s]||{label:s,color:"slate"},i=[],f=i.length>0?Math.round(i.reduce((j,h)=>j+h.score,0)/i.length):Math.round(t?.progress??0);return{subject:a.label,average:f,quizzes:i.length||t?.completedModules,color:a.color}}),W=_.map(s=>{const t=T[s]||{label:s,color:"slate"};return{subject:t.label,average:0,quizzes:0,color:t.color}}),R=L.length>0?L:W,z=O.slice().sort((s,t)=>{const a=s.completedAt?.toDate?.()?.getTime()??0;return(t.completedAt?.toDate?.()?.getTime()??0)-a}).slice(0,10).map((s,t)=>({id:t+1,title:s.title||`Assessment ${t+1}`,subject:s.subject||"General",score:s.score,date:s.completedAt?Y(s.completedAt.toDate()):"N/A",type:s.type==="practice"?"practice":(s.type==="diagnostic","module"),status:s.score>=80?"Excellent":s.score>=60?"Passing":"Needs Review"})).filter(s=>c.includes(s.subject)),p=z.filter(s=>{if(!c.includes(s.subject))return!1;const t=d==="all"||s.subject===d,a=x==="all"||s.type===x;return t&&a});o.useEffect(()=>{d!=="all"&&(c.includes(d)||y("all"))},[c,d]);const X=()=>{const s=l=>{const w=String(l??"");return/[",\n]/.test(w)?`"${w.replace(/"/g,'""')}"`:w},t=[],a=N?.name||n?.displayName||n?.email||"Student",i=new Date().toISOString().split("T")[0];t.push("Grade Report"),t.push(`Student,${s(a)}`),t.push(`Export Date,${s(i)}`),t.push(`Subject Filter,${s(d)}`),t.push(`Type Filter,${s(x)}`),t.push(""),t.push("Subject Performance"),t.push("Subject,Average Score"),R.forEach(l=>{t.push([s(l.subject),s(l.average)].join(","))}),t.push(""),t.push("Recent Quizzes"),t.push("Title,Subject,Score,Date,Type,Status"),p.length===0?t.push("No quiz data available for the selected filters"):p.forEach(l=>{t.push([s(l.title),s(l.subject),s(l.score),s(l.date),s(l.type),s(l.status)].join(","))});const f=t.join(` `),j=new Blob([f],{type:"text/csv;charset=utf-8;"}),h=window.URL.createObjectURL(j),m=document.createElement("a"),Z=a.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").toLowerCase()||"student";m.href=h,m.setAttribute("download",`grade-report-${Z}-${i}.csv`),document.body.appendChild(m),m.click(),document.body.removeChild(m),window.URL.revokeObjectURL(h)};return B?e.jsx("div",{className:"p-8 flex justify-center items-center h-full",children:e.jsx("div",{className:"w-10 h-10 border-4 border-indigo-500 border-t-transparent rounded-full animate-spin"})}):e.jsxs("div",{className:"p-4 sm:p-6 lg:p-8 space-y-6 lg:space-y-8 max-w-7xl mx-auto",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 bg-white p-5 sm:p-6 rounded-[1.5rem] sm:rounded-[2rem] shadow-[0_8px_30px_-12px_rgba(0,0,0,0.06)] border border-slate-50",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-display font-black text-slate-800 tracking-tight",children:"Assessment"}),e.jsx("p",{className:"text-slate-400 font-bold mt-1 text-[13px]",children:"Review your performance across subjects"})]}),e.jsxs("div",{className:"flex gap-3 w-full sm:w-auto",children:[e.jsxs(v,{variant:"outline",className:"flex-1 sm:flex-none border-slate-200 text-slate-500 font-bold rounded-xl h-11 px-5 hover:bg-slate-50 hover:text-slate-700",children:[e.jsx(te,{className:"w-4 h-4 mr-2 text-slate-400"}),"This Quarter"]}),e.jsxs(v,{className:"flex-1 sm:flex-none bg-indigo-600 hover:bg-indigo-700 text-white font-bold rounded-xl h-11 px-5 shadow-[0_8px_20px_-8px_rgba(79,70,229,0.5)] hover:-translate-y-0.5 transition-all",onClick:X,children:[e.jsx(oe,{className:"w-4 h-4 mr-2"}),"Report"]})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3 sm:gap-6",children:[e.jsxs("div",{className:"bg-white rounded-[1.2rem] sm:rounded-[2rem] border border-slate-100 p-4 sm:p-8 shadow-[0_8px_24px_-10px_rgba(0,0,0,0.05)] relative overflow-hidden group hover:border-indigo-100 transition-colors",children:[e.jsx("div",{className:"absolute -right-6 -top-6 sm:-right-8 sm:-top-8 w-20 h-20 sm:w-32 sm:h-32 bg-indigo-50 rounded-full group-hover:scale-110 transition-transform duration-500"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"w-10 h-10 sm:w-14 sm:h-14 bg-indigo-100 text-indigo-600 rounded-xl sm:rounded-2xl flex items-center justify-center mb-3 sm:mb-6 shadow-sm",children:e.jsx(ae,{className:"w-5 h-5 sm:w-7 sm:h-7"})}),e.jsxs("p",{className:"text-slate-400 font-bold text-[9px] sm:text-sm tracking-wider sm:tracking-wide uppercase h-6 sm:h-auto flex items-end sm:block",children:[e.jsx("span",{className:"sm:hidden",children:"GPA"}),e.jsx("span",{className:"hidden sm:inline",children:"Overall GPA"})]}),e.jsx("div",{className:"flex items-end gap-2 mt-1 sm:mt-2",children:e.jsx("h3",{className:"text-xl sm:text-4xl font-display font-black text-slate-800",children:J})})]})]}),e.jsxs("div",{className:"bg-white rounded-[1.2rem] sm:rounded-[2rem] border border-slate-100 p-4 sm:p-8 shadow-[0_8px_24px_-10px_rgba(0,0,0,0.05)] relative overflow-hidden group hover:border-emerald-100 transition-colors",children:[e.jsx("div",{className:"absolute -right-6 -top-6 sm:-right-8 sm:-top-8 w-20 h-20 sm:w-32 sm:h-32 bg-emerald-50 rounded-full group-hover:scale-110 transition-transform duration-500"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"w-10 h-10 sm:w-14 sm:h-14 bg-emerald-100 text-emerald-600 rounded-xl sm:rounded-2xl flex items-center justify-center mb-3 sm:mb-6 shadow-sm",children:e.jsx($,{className:"w-5 h-5 sm:w-7 sm:h-7"})}),e.jsxs("p",{className:"text-slate-400 font-bold text-[9px] sm:text-sm tracking-wider sm:tracking-wide uppercase h-6 sm:h-auto flex items-end sm:block",children:[e.jsx("span",{className:"sm:hidden",children:"Avg Score"}),e.jsx("span",{className:"hidden sm:inline",children:"Average Score"})]}),e.jsx("div",{className:"flex items-end gap-2 mt-1 sm:mt-2",children:e.jsxs("h3",{className:"text-xl sm:text-4xl font-display font-black text-slate-800",children:[g,"%"]})})]})]}),e.jsxs("div",{className:"bg-white rounded-[1.2rem] sm:rounded-[2rem] border border-slate-100 p-4 sm:p-8 shadow-[0_8px_24px_-10px_rgba(0,0,0,0.05)] relative overflow-hidden group hover:border-violet-100 transition-colors",children:[e.jsx("div",{className:"absolute -right-6 -top-6 sm:-right-8 sm:-top-8 w-20 h-20 sm:w-32 sm:h-32 bg-violet-50 rounded-full group-hover:scale-110 transition-transform duration-500"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"w-10 h-10 sm:w-14 sm:h-14 bg-violet-100 text-violet-600 rounded-xl sm:rounded-2xl flex items-center justify-center mb-3 sm:mb-6 shadow-sm",children:e.jsx(D,{className:"w-5 h-5 sm:w-7 sm:h-7"})}),e.jsxs("p",{className:"text-slate-400 font-bold text-[9px] sm:text-sm tracking-wider sm:tracking-wide uppercase h-6 sm:h-auto flex items-end sm:block",children:[e.jsx("span",{className:"sm:hidden",children:"Quizzes"}),e.jsx("span",{className:"hidden sm:inline",children:"Quizzes Completed"})]}),e.jsx("div",{className:"flex items-end gap-2 mt-1 sm:mt-2",children:e.jsx("h3",{className:"text-xl sm:text-4xl font-display font-black text-slate-800",children:V})})]})]})]}),r&&e.jsxs("div",{className:"bg-white rounded-2xl border border-slate-100 p-6 shadow-sm",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 bg-indigo-100 rounded-xl flex items-center justify-center",children:e.jsx(re,{className:"w-5 h-5 text-indigo-600"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-slate-800",children:"Diagnostic Assessment Results"}),e.jsx("p",{className:"text-xs text-slate-500",children:"Your initial competency evaluation"})]})]}),e.jsxs("span",{className:`px-3 py-1 rounded-full text-xs font-bold flex items-center gap-1.5 ${r.riskLevel==="Low"?"bg-emerald-100 text-emerald-700":r.riskLevel==="High"||r.riskLevel==="At Risk"?"bg-red-100 text-red-700":"bg-amber-100 text-amber-700"}`,children:[r.riskLevel==="Low"?e.jsx(ie,{size:12}):e.jsx(de,{size:12}),r.riskLevel]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[r.score>0&&e.jsxs("div",{className:"bg-slate-50 rounded-xl p-4",children:[e.jsx("p",{className:"text-xs font-bold text-slate-400 uppercase mb-1",children:"Score"}),e.jsxs("p",{className:"text-2xl font-black text-slate-800",children:[r.score,"%"]})]}),r.weaknesses.length>0&&e.jsxs("div",{className:"bg-amber-50 border border-amber-100 rounded-xl p-4",children:[e.jsx("p",{className:"text-xs font-bold text-amber-600 uppercase mb-2",children:"Focus Areas"}),e.jsx("ul",{className:"space-y-1",children:r.weaknesses.map((s,t)=>e.jsxs("li",{className:"text-sm text-amber-800 flex items-center gap-2",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),s]},t))})]}),r.recommendation&&e.jsxs("div",{className:"bg-indigo-50 border border-indigo-100 rounded-xl p-4",children:[e.jsx("p",{className:"text-xs font-bold text-indigo-600 uppercase mb-2",children:"Recommendation"}),e.jsx("p",{className:"text-sm text-indigo-800",children:r.recommendation})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[e.jsx("div",{className:"lg:col-span-2",children:e.jsxs("div",{className:"bg-white rounded-[1.5rem] sm:rounded-[2rem] border border-slate-100 shadow-[0_8px_30px_-12px_rgba(0,0,0,0.06)] overflow-hidden flex flex-col h-full w-full",children:[e.jsxs("div",{className:"p-5 sm:p-8 border-b border-slate-50 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 sm:gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-display font-black text-xl text-slate-800",children:"Recent Assessments"}),e.jsx("p",{className:"text-slate-400 font-bold text-[13px] mt-1",children:"Your latest quiz and practice results"})]}),e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 w-full sm:w-auto",children:[e.jsxs("div",{className:"relative flex-1 sm:flex-none",children:[e.jsxs("select",{value:d,onChange:s=>y(s.target.value),className:"appearance-none w-full pl-3 pr-8 py-2.5 border-none bg-slate-50 rounded-xl text-xs sm:text-sm font-bold text-slate-600 focus:ring-2 focus:ring-indigo-500/30 transition-all cursor-pointer min-w-0 sm:min-w-[140px] shadow-sm",children:[e.jsx("option",{value:"all",children:"All Subjects"}),c.map(s=>e.jsx("option",{value:s,children:s},s))]}),e.jsx(G,{className:"w-4 h-4 text-slate-400 absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]}),e.jsxs("div",{className:"relative flex-1 sm:flex-none",children:[e.jsxs("select",{value:x,onChange:s=>Q(s.target.value),className:"appearance-none w-full pl-3 pr-8 py-2.5 border-none bg-slate-50 rounded-xl text-xs sm:text-sm font-bold text-slate-600 focus:ring-2 focus:ring-indigo-500/30 transition-all cursor-pointer min-w-0 sm:min-w-[120px] shadow-sm",children:[e.jsx("option",{value:"all",children:"All Types"}),e.jsx("option",{value:"module",children:"Module Quiz"}),e.jsx("option",{value:"practice",children:"Practice"})]}),e.jsx(G,{className:"w-4 h-4 text-slate-400 absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]})]})]}),e.jsx("div",{className:"overflow-x-auto no-scrollbar flex-1 px-4 sm:px-6 pb-4 -mx-4 sm:mx-0",children:e.jsxs("table",{className:"w-full text-left border-separate border-spacing-y-2 mb-4 whitespace-nowrap md:whitespace-normal",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-4 py-3 text-[11px] font-bold text-slate-400 uppercase tracking-wider border-b border-transparent",children:"Assessment"}),e.jsx("th",{className:"px-4 py-3 text-[11px] font-bold text-slate-400 uppercase tracking-wider border-b border-transparent min-w-[120px]",children:"Subject"}),e.jsx("th",{className:"px-4 py-3 text-[11px] font-bold text-slate-400 uppercase tracking-wider border-b border-transparent",children:"Type"}),e.jsx("th",{className:"px-4 py-3 text-[11px] font-bold text-slate-400 uppercase tracking-wider text-right border-b border-transparent",children:"Score"})]})}),e.jsx("tbody",{children:p.length>0?p.map(s=>e.jsxs("tr",{className:"group hover:bg-slate-50/70 transition-colors",children:[e.jsxs("td",{className:"px-4 py-4 rounded-l-2xl",children:[e.jsx("p",{className:"text-[14px] font-bold text-slate-800",children:s.title}),e.jsx("p",{className:"text-[11px] font-bold text-slate-400 mt-1",children:s.date})]}),e.jsx("td",{className:"px-4 py-4",children:e.jsx("span",{className:"inline-flex flex-col gap-1 items-start",children:e.jsx("span",{className:"text-[13px] font-bold text-slate-600 truncate max-w-[140px] block",children:s.subject})})}),e.jsx("td",{className:"px-4 py-4",children:e.jsx("span",{className:`inline-flex items-center px-3 py-1.5 rounded-lg text-[11px] font-bold uppercase tracking-wide ${s.type==="practice"?"bg-emerald-100/50 text-emerald-600":"bg-indigo-100/50 text-indigo-600"}`,children:s.type==="practice"?"Practice":"Quiz"})}),e.jsx("td",{className:"px-4 py-4 text-right rounded-r-2xl",children:e.jsxs("span",{className:`inline-flex items-center px-3 py-1.5 rounded-xl text-[13px] font-black ${s.score>=80?"bg-emerald-100 text-emerald-700":s.score>=60?"bg-amber-100 text-amber-700":"bg-rose-100 text-rose-700"}`,children:[s.score,"%"]})})]},s.id)):e.jsx("tr",{children:e.jsx("td",{colSpan:4,className:"px-6 py-16 text-center",children:e.jsxs("div",{className:"flex flex-col items-center justify-center",children:[e.jsx("div",{className:"w-16 h-16 bg-slate-50 rounded-full flex items-center justify-center mb-4",children:e.jsx($,{className:"w-8 h-8 text-slate-300"})}),e.jsx("p",{className:"text-slate-500 font-bold text-sm",children:"No recent assessments match the selected filters."})]})})})})]})})]})}),e.jsxs("div",{className:"space-y-6 lg:space-y-8 flex flex-col",children:[e.jsxs("div",{className:"bg-white rounded-[1.5rem] sm:rounded-[2rem] border border-slate-100 p-5 sm:p-8 shadow-[0_8px_30px_-12px_rgba(0,0,0,0.06)]",children:[e.jsx("div",{className:"flex items-center justify-between mb-8",children:e.jsx("h3",{className:"font-display font-black text-lg text-slate-800",children:"Subject Performance"})}),e.jsx("div",{className:"space-y-7",children:R.map((s,t)=>{const a=C[s.color]||C.slate;return e.jsxs("div",{className:"group",children:[e.jsxs("div",{className:"flex justify-between items-end mb-3",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-[14px] font-bold text-slate-800 flex items-center gap-2",children:[e.jsx("span",{className:`w-2 h-2 rounded-full ${a.dot} group-hover:scale-125 transition-transform`}),s.subject]}),e.jsxs("p",{className:"text-[11px] text-slate-400 font-bold ml-4 mt-0.5",children:[s.quizzes," activities"]})]}),e.jsxs("span",{className:"text-[15px] font-black text-slate-800",children:[s.average,"%"]})]}),e.jsx("div",{className:"h-2.5 w-full bg-slate-100 rounded-full overflow-hidden shadow-inner",children:e.jsx("div",{className:`h-full rounded-full e-w ${a.bar} shadow-sm relative overflow-hidden transition-all duration-1000`,style:{"--w":`${Math.max(s.average,5)}%`},children:e.jsx("div",{className:"absolute inset-0 bg-white/20 w-1/2 -skew-x-12 translate-x-[-100%] group-hover:animate-[shimmer_1.5s_ease-out]"})})})]},t)})})]}),e.jsxs("div",{className:"relative bg-gradient-to-br from-indigo-600 to-violet-700 rounded-[1.5rem] sm:rounded-[2rem] p-5 sm:p-8 shadow-[0_12px_30px_-10px_rgba(79,70,229,0.5)] text-white overflow-hidden group",children:[e.jsx("div",{className:"absolute top-0 right-0 w-48 h-48 bg-white/10 rounded-full blur-3xl -mt-10 -mr-10 group-hover:bg-white/20 transition-all duration-700 ease-in-out"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-32 h-32 bg-indigo-400/30 rounded-full blur-2xl -mb-10 -ml-10"}),e.jsxs("div",{className:"relative z-10",children:[e.jsx("div",{className:"w-12 h-12 bg-white/10 rounded-2xl flex items-center justify-center mb-5 backdrop-blur-sm border border-white/20 shadow-sm group-hover:scale-110 transition-transform",children:e.jsx(D,{className:"w-6 h-6 text-white"})}),e.jsx("h3",{className:"text-2xl font-display font-black tracking-tight mb-2 leading-tight",children:"Keep up the momentum!"}),e.jsxs("p",{className:"text-white/80 text-[13px] font-medium leading-relaxed mb-8 max-w-[90%]",children:["You've completed ",e.jsx("span",{className:"font-black text-white",children:z.length})," activities recently. Try a practice session to boost your lowest scores."]}),e.jsx(v,{onClick:()=>{sessionStorage.setItem("mathpulse_modules_tab","practice"),window.dispatchEvent(new CustomEvent("mathpulse:navigate",{detail:{tab:"Modules"}}))},className:"w-full bg-white text-indigo-600 hover:bg-slate-50 border-0 font-black h-12 rounded-xl shadow-[0_8px_16px_rgba(0,0,0,0.15)] hover:shadow-[0_8px_24px_rgba(0,0,0,0.2)] hover:-translate-y-0.5 transition-all",children:"Start Practice Session"})]})]})]})]})]})};export{Ce as default}; diff --git a/assets/HeroBanner-CHubdhsr.js b/assets/HeroBanner-BDsbfXfG.js similarity index 98% rename from assets/HeroBanner-CHubdhsr.js rename to assets/HeroBanner-BDsbfXfG.js index 8f735a8ddc92fe75f21e401151df1e8d7cc15d47..9a3e745327cb6f0476cb228f3aa616b1e8af0fb0 100644 --- a/assets/HeroBanner-CHubdhsr.js +++ b/assets/HeroBanner-BDsbfXfG.js @@ -1,3 +1,3 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardAvatar-CbAKGmA6.js","assets/vendor-react-B4AQeu28.js","assets/avatarData-BuQSOXo3.js"])))=>i.map(i=>d[i]); -import{T as R,g as b,a1 as M,h as _,m as f,a2 as E,A as G,B as S,q as z,Z as Y,b as F,_ as Q}from"./index-Dl2Y5a7s.js";import{j as e,r as m}from"./vendor-react-B4AQeu28.js";import{D as W,a as q,S as V}from"./dialog-DuLafn8Q.js";import{R as K,L as X,C as U,X as Z,Y as O,T as I,f as J}from"./vendor-charts-D7t7JfSr.js";import{collection as v,query as w,limit as N,orderBy as k,getDocs as A,getDoc as L,doc as C}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{X as ee}from"./x-wHRRR-gQ.js";import{C as H}from"./circle-alert-CmKGy6F7.js";import{C as se}from"./circle-check-OLox8hf3.js";import{S as te}from"./sparkles-DXDpj3ao.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-markdown-yqZQ_iQm.js";const ae=({history:s})=>{if(s.length===0)return e.jsxs("div",{className:"text-center py-12 text-slate-400",children:[e.jsx(R,{className:"w-12 h-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{className:"text-sm",children:"Complete more assessments to see your progress history."})]});const a=s.map(r=>({date:new Date(r.completedAt).toLocaleDateString("en-US",{month:"short",day:"numeric"}),score:r.percentage,level:r.proficiencyLevel}));return e.jsx("div",{className:"w-full",children:e.jsx(K,{width:"100%",height:250,children:e.jsxs(X,{data:a,margin:{top:10,right:20,left:0,bottom:5},children:[e.jsx(U,{strokeDasharray:"3 3",stroke:"#e2e8f0"}),e.jsx(Z,{dataKey:"date",tick:{fontSize:12,fill:"#64748b"}}),e.jsx(O,{domain:[0,100],tick:{fontSize:12,fill:"#64748b"}}),e.jsx(I,{contentStyle:{borderRadius:"12px",border:"1px solid #e2e8f0",boxShadow:"0 4px 12px rgba(0,0,0,0.08)"}}),e.jsx(J,{type:"monotone",dataKey:"score",stroke:"#0ea5e9",strokeWidth:3,dot:{fill:"#0ea5e9",strokeWidth:2,r:5},activeDot:{r:7,fill:"#0284c7"}})]})})})};async function re(s){const a=v(b,"assessmentResults",s,"attempts"),r=w(a,k("completedAt","desc"),N(10));return(await A(r)).docs.map(i=>{const n=i.data();return{attemptId:n.attemptId,score:n.score,totalQuestions:n.totalQuestions,percentage:n.percentage,completedAt:n.completedAt?.toDate?.()?.toISOString()||n.completedAt,proficiencyLevel:n.proficiencyLevel}})}async function le(s){const a=v(b,"assessmentResults",s,"attempts"),r=w(a,k("completedAt","desc"),N(1)),c=await A(r);if(c.empty)return null;const n=c.docs[0].data();return{...n,completedAt:n.completedAt?.toDate?.()?.toISOString()||n.completedAt}}const oe={Beginner:"bg-amber-100 text-amber-700 border-amber-300",Developing:"bg-blue-100 text-blue-700 border-blue-300",Proficient:"bg-emerald-100 text-emerald-700 border-emerald-300",Advanced:"bg-violet-100 text-violet-700 border-violet-300"},ne=({result:s})=>e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"bg-gradient-to-br from-sky-500 to-teal-600 rounded-xl p-6 text-white",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sky-200 text-sm font-medium",children:"Total Score"}),e.jsxs("p",{className:"text-4xl font-bold",children:[s.score,"/",s.totalQuestions]}),e.jsxs("p",{className:"text-sky-200 text-sm mt-1",children:[s.percentage,"% Correct"]})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"text-sky-200 text-sm font-medium",children:"Proficiency"}),e.jsx("span",{className:`inline-block mt-1 px-3 py-1 rounded-full text-sm font-semibold border ${oe[s.proficiencyLevel]}`,children:s.proficiencyLevel})]})]})}),e.jsxs("div",{children:[e.jsxs("h3",{className:"font-semibold text-slate-800 mb-3 flex items-center gap-2",children:[e.jsx(S,{className:"w-4 h-4 text-sky-500"}),"Competency Breakdown"]}),e.jsx("div",{className:"space-y-2",children:s.competencyBreakdown.map((a,r)=>e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-slate-50 rounded-lg",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-slate-700",children:a.topic}),e.jsxs("p",{className:"text-xs text-slate-500",children:[a.correctAnswers,"/",a.totalQuestions," correct"]})]}),e.jsx("div",{className:"w-20 h-2 bg-slate-200 rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full ${a.accuracyPercent>=70?"bg-emerald-500":"bg-red-400"}`,style:{width:`${a.accuracyPercent}%`}})}),e.jsxs("span",{className:"text-sm font-semibold text-slate-600 w-10 text-right",children:[a.accuracyPercent,"%"]})]},r))})]}),s.aiNarrative&&e.jsx("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(te,{className:"w-4 h-4 text-amber-500 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm text-amber-800 leading-relaxed",children:s.aiNarrative})]})}),e.jsxs("div",{children:[e.jsxs("h3",{className:"font-semibold text-slate-800 mb-3 flex items-center gap-2",children:[e.jsx(z,{className:"w-4 h-4 text-sky-500"}),"Question Breakdown"]}),e.jsx("div",{className:"space-y-3",children:s.answers.map((a,r)=>e.jsxs("div",{className:`p-4 rounded-xl border-2 ${a.isCorrect?"border-emerald-200 bg-emerald-50/30":"border-red-200 bg-red-50/30"}`,children:[e.jsxs("p",{className:"text-sm font-medium text-slate-800 mb-2",children:["Q",r+1,". ",a.questionText]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm",children:[e.jsxs("span",{className:"text-slate-500",children:["Your answer: ",e.jsx("span",{className:a.isCorrect?"text-emerald-600 font-medium":"text-red-500 font-medium",children:a.userAnswer||"—"})]}),!a.isCorrect&&e.jsxs("span",{className:"text-slate-500",children:["Correct: ",e.jsx("span",{className:"text-emerald-600 font-medium",children:a.correctAnswer})]})]}),a.explanation&&e.jsx("p",{className:"text-xs text-slate-500 mt-2 leading-relaxed",children:a.explanation})]},r))})]})]}),ie=({summary:s})=>e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between",children:[e.jsxs("div",{className:"bg-sky-50 border border-sky-100 rounded-2xl p-4 flex items-center gap-4 flex-1",children:[e.jsxs("div",{className:"w-12 h-12 bg-sky-500 rounded-full flex items-center justify-center text-white font-bold text-lg shadow-sm",children:[s.latestScorePercent,"%"]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-slate-500",children:"Latest Score"}),e.jsx("p",{className:"text-slate-800 font-bold",children:s.headline})]})]}),s.latestRiskLevel&&e.jsxs("div",{className:`px-4 py-2 rounded-full text-sm font-semibold flex items-center gap-2 +import{T as R,g as b,a1 as M,h as _,m as f,a2 as E,A as G,B as S,q as z,Z as Y,b as F,_ as Q}from"./index-pcr0VEFr.js";import{j as e,r as m}from"./vendor-react-B4AQeu28.js";import{D as W,a as q,S as V}from"./dialog-CD4cPDri.js";import{R as K,L as X,C as U,X as Z,Y as O,T as I,f as J}from"./vendor-charts-D7t7JfSr.js";import{collection as v,query as w,limit as N,orderBy as k,getDocs as A,getDoc as L,doc as C}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{X as ee}from"./x-W9f2bIhn.js";import{C as H}from"./circle-alert-BVTBnraV.js";import{C as se}from"./circle-check-DWLljvZa.js";import{S as te}from"./sparkles-CcaVyiD_.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-markdown-yqZQ_iQm.js";const ae=({history:s})=>{if(s.length===0)return e.jsxs("div",{className:"text-center py-12 text-slate-400",children:[e.jsx(R,{className:"w-12 h-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{className:"text-sm",children:"Complete more assessments to see your progress history."})]});const a=s.map(r=>({date:new Date(r.completedAt).toLocaleDateString("en-US",{month:"short",day:"numeric"}),score:r.percentage,level:r.proficiencyLevel}));return e.jsx("div",{className:"w-full",children:e.jsx(K,{width:"100%",height:250,children:e.jsxs(X,{data:a,margin:{top:10,right:20,left:0,bottom:5},children:[e.jsx(U,{strokeDasharray:"3 3",stroke:"#e2e8f0"}),e.jsx(Z,{dataKey:"date",tick:{fontSize:12,fill:"#64748b"}}),e.jsx(O,{domain:[0,100],tick:{fontSize:12,fill:"#64748b"}}),e.jsx(I,{contentStyle:{borderRadius:"12px",border:"1px solid #e2e8f0",boxShadow:"0 4px 12px rgba(0,0,0,0.08)"}}),e.jsx(J,{type:"monotone",dataKey:"score",stroke:"#0ea5e9",strokeWidth:3,dot:{fill:"#0ea5e9",strokeWidth:2,r:5},activeDot:{r:7,fill:"#0284c7"}})]})})})};async function re(s){const a=v(b,"assessmentResults",s,"attempts"),r=w(a,k("completedAt","desc"),N(10));return(await A(r)).docs.map(i=>{const n=i.data();return{attemptId:n.attemptId,score:n.score,totalQuestions:n.totalQuestions,percentage:n.percentage,completedAt:n.completedAt?.toDate?.()?.toISOString()||n.completedAt,proficiencyLevel:n.proficiencyLevel}})}async function le(s){const a=v(b,"assessmentResults",s,"attempts"),r=w(a,k("completedAt","desc"),N(1)),c=await A(r);if(c.empty)return null;const n=c.docs[0].data();return{...n,completedAt:n.completedAt?.toDate?.()?.toISOString()||n.completedAt}}const oe={Beginner:"bg-amber-100 text-amber-700 border-amber-300",Developing:"bg-blue-100 text-blue-700 border-blue-300",Proficient:"bg-emerald-100 text-emerald-700 border-emerald-300",Advanced:"bg-violet-100 text-violet-700 border-violet-300"},ne=({result:s})=>e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"bg-gradient-to-br from-sky-500 to-teal-600 rounded-xl p-6 text-white",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sky-200 text-sm font-medium",children:"Total Score"}),e.jsxs("p",{className:"text-4xl font-bold",children:[s.score,"/",s.totalQuestions]}),e.jsxs("p",{className:"text-sky-200 text-sm mt-1",children:[s.percentage,"% Correct"]})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"text-sky-200 text-sm font-medium",children:"Proficiency"}),e.jsx("span",{className:`inline-block mt-1 px-3 py-1 rounded-full text-sm font-semibold border ${oe[s.proficiencyLevel]}`,children:s.proficiencyLevel})]})]})}),e.jsxs("div",{children:[e.jsxs("h3",{className:"font-semibold text-slate-800 mb-3 flex items-center gap-2",children:[e.jsx(S,{className:"w-4 h-4 text-sky-500"}),"Competency Breakdown"]}),e.jsx("div",{className:"space-y-2",children:s.competencyBreakdown.map((a,r)=>e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-slate-50 rounded-lg",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-slate-700",children:a.topic}),e.jsxs("p",{className:"text-xs text-slate-500",children:[a.correctAnswers,"/",a.totalQuestions," correct"]})]}),e.jsx("div",{className:"w-20 h-2 bg-slate-200 rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full ${a.accuracyPercent>=70?"bg-emerald-500":"bg-red-400"}`,style:{width:`${a.accuracyPercent}%`}})}),e.jsxs("span",{className:"text-sm font-semibold text-slate-600 w-10 text-right",children:[a.accuracyPercent,"%"]})]},r))})]}),s.aiNarrative&&e.jsx("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(te,{className:"w-4 h-4 text-amber-500 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm text-amber-800 leading-relaxed",children:s.aiNarrative})]})}),e.jsxs("div",{children:[e.jsxs("h3",{className:"font-semibold text-slate-800 mb-3 flex items-center gap-2",children:[e.jsx(z,{className:"w-4 h-4 text-sky-500"}),"Question Breakdown"]}),e.jsx("div",{className:"space-y-3",children:s.answers.map((a,r)=>e.jsxs("div",{className:`p-4 rounded-xl border-2 ${a.isCorrect?"border-emerald-200 bg-emerald-50/30":"border-red-200 bg-red-50/30"}`,children:[e.jsxs("p",{className:"text-sm font-medium text-slate-800 mb-2",children:["Q",r+1,". ",a.questionText]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm",children:[e.jsxs("span",{className:"text-slate-500",children:["Your answer: ",e.jsx("span",{className:a.isCorrect?"text-emerald-600 font-medium":"text-red-500 font-medium",children:a.userAnswer||"—"})]}),!a.isCorrect&&e.jsxs("span",{className:"text-slate-500",children:["Correct: ",e.jsx("span",{className:"text-emerald-600 font-medium",children:a.correctAnswer})]})]}),a.explanation&&e.jsx("p",{className:"text-xs text-slate-500 mt-2 leading-relaxed",children:a.explanation})]},r))})]})]}),ie=({summary:s})=>e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between",children:[e.jsxs("div",{className:"bg-sky-50 border border-sky-100 rounded-2xl p-4 flex items-center gap-4 flex-1",children:[e.jsxs("div",{className:"w-12 h-12 bg-sky-500 rounded-full flex items-center justify-center text-white font-bold text-lg shadow-sm",children:[s.latestScorePercent,"%"]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-slate-500",children:"Latest Score"}),e.jsx("p",{className:"text-slate-800 font-bold",children:s.headline})]})]}),s.latestRiskLevel&&e.jsxs("div",{className:`px-4 py-2 rounded-full text-sm font-semibold flex items-center gap-2 ${s.latestRiskLevel==="At Risk"?"bg-red-100 text-red-700":s.latestRiskLevel==="Needs Attention"?"bg-amber-100 text-amber-700":"bg-emerald-100 text-emerald-700"}`,children:[s.latestRiskLevel==="At Risk"?e.jsx(V,{className:"w-4 h-4"}):s.latestRiskLevel==="Needs Attention"?e.jsx(H,{className:"w-4 h-4"}):e.jsx(se,{className:"w-4 h-4"}),s.latestRiskLevel]})]}),e.jsx("div",{className:"bg-slate-50 p-5 rounded-2xl border border-slate-100",children:e.jsx("p",{className:"text-slate-700 leading-relaxed",children:s.summary})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[s.strengths?.length>0&&e.jsxs("div",{className:"border border-emerald-100 bg-emerald-50/30 rounded-xl p-4",children:[e.jsxs("h4",{className:"font-semibold text-emerald-800 mb-3 flex items-center gap-2",children:[e.jsx(R,{className:"w-4 h-4"}),"Strengths"]}),e.jsx("ul",{className:"space-y-2",children:s.strengths.map((a,r)=>e.jsxs("li",{className:"text-sm text-emerald-700 flex items-start gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-emerald-400 mt-1.5 flex-shrink-0"}),e.jsx("span",{children:a})]},r))})]}),s.weaknesses?.length>0&&e.jsxs("div",{className:"border border-amber-100 bg-amber-50/30 rounded-xl p-4",children:[e.jsxs("h4",{className:"font-semibold text-amber-800 mb-3 flex items-center gap-2",children:[e.jsx(z,{className:"w-4 h-4"}),"Focus Areas"]}),e.jsx("ul",{className:"space-y-2",children:s.weaknesses.map((a,r)=>e.jsxs("li",{className:"text-sm text-amber-700 flex items-start gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400 mt-1.5 flex-shrink-0"}),e.jsx("span",{children:a})]},r))})]})]}),s.recommendation&&e.jsxs("div",{className:"bg-gradient-to-br from-indigo-50 to-purple-50 rounded-xl p-5 border border-indigo-100",children:[e.jsxs("h4",{className:"font-semibold text-indigo-900 mb-2 flex items-center gap-2",children:[e.jsx(S,{className:"w-4 h-4 text-indigo-500"}),"Recommended Next Step"]}),e.jsx("p",{className:"text-sm text-indigo-800 leading-relaxed",children:s.recommendation})]})]}),de=({heroBannerSummary:s,latestResult:a,loading:r})=>r?e.jsxs("div",{className:"animate-pulse space-y-4",children:[e.jsx("div",{className:"h-32 bg-slate-200 rounded-xl"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"h-4 bg-slate-200 rounded w-3/4"}),e.jsx("div",{className:"h-4 bg-slate-200 rounded w-1/2"}),e.jsx("div",{className:"h-4 bg-slate-200 rounded w-5/6"})]})]}):!s&&!a?e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"w-16 h-16 bg-sky-100 rounded-full flex items-center justify-center mx-auto mb-4",children:e.jsx(S,{className:"w-8 h-8 text-sky-500"})}),e.jsx("h3",{className:"text-lg font-bold text-slate-800 mb-2",children:"Let's personalize your learning"}),e.jsx("p",{className:"text-sm text-slate-500 max-w-xs mx-auto",children:"Complete your diagnostic assessment so I can understand your strengths, weak areas, and the best next lessons for you."})]}):s?.status==="ready"?e.jsx(ie,{summary:s}):a?e.jsx(ne,{result:a}):e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"w-16 h-16 bg-amber-100 rounded-full flex items-center justify-center mx-auto mb-4",children:e.jsx(H,{className:"w-8 h-8 text-amber-500"})}),e.jsx("h3",{className:"text-lg font-bold text-slate-800 mb-2",children:"Your learning summary is being prepared"}),e.jsx("p",{className:"text-sm text-slate-500 max-w-xs mx-auto",children:"Please try opening this again in a moment."})]});async function ce(s){const a=await L(C(b,"competencyProfiles",s)).catch(()=>null);if(a?.exists()){const t=a.data(),l=t.primaryStrength?[t.primaryStrength]:[],o=t.primaryWeakness?[t.primaryWeakness]:[];return{status:"ready",headline:t.overallScore>=70?"Good job — keep it up!":"Let's build your foundation",summary:o.length>0?`Focus on strengthening ${o[0]} to improve your overall performance.`:"Keep practicing to maintain and expand your skills.",strengths:l,weaknesses:o,recommendation:t.suggestedModule?`Start with the ${t.suggestedModule} module.`:"Continue with your personalized learning path.",latestAssessmentId:"",latestScorePercent:t.overallScore||0,latestRiskLevel:t.overallScore>=70?"Low":t.overallScore>=50?"Moderate":"High",updatedAt:t.updatedAt?.toDate?.()||new Date}}const r=await A(w(v(b,"assessments",s,"attempts"),k("completedAt","desc"),N(1))).catch(()=>null);if(r&&!r.empty){const t=r.docs[0].data(),l=t.rawScore||t.overallScorePercent||0,o=t.proficiencyProfile;return{status:"ready",headline:l>=70?"Good job — keep it up!":"Let's build your foundation",summary:o?.weaknesses?.length>0?`Focus on strengthening ${o.weaknesses[0]} to improve.`:l>=70?"You have a solid foundation!":"With practice, you'll build confidence.",strengths:o?.strengths||[],weaknesses:o?.weaknesses||[],recommendation:o?.suggestedStartingModule?`Start with ${o.suggestedStartingModule}.`:"Follow your personalized learning path.",latestAssessmentId:t.assessmentId||"",latestScorePercent:l,latestRiskLevel:l>=70?"Low":l>=50?"Moderate":"High",updatedAt:t.completedAt?.toDate?.()||new Date}}const c=await L(C(b,"diagnosticResults",s)).catch(()=>null);if(c?.exists()){const t=c.data(),l=t.overallScorePercent||t.overall_score_percent||0,o=t.riskProfile?.weak_domains||[];return{status:"ready",headline:l>=70?"Good job — keep it up!":"Let's build your foundation",summary:o.length>0?`Areas to focus on: ${o.join(", ")}.`:"Assessment completed. Follow your learning path.",strengths:[],weaknesses:o,recommendation:t.recommended_intervention||"Continue with your personalized learning path.",latestAssessmentId:"",latestScorePercent:l,latestRiskLevel:t.overall_risk||(l>=70?"Low":"Moderate"),updatedAt:t.completedAt?.toDate?.()||new Date}}const i=await A(w(v(b,"users",s,"assessments"),k("completedAt","desc"),N(5))).catch(()=>null);if(i&&!i.empty){const t=i.docs.map(p=>p.data()),l=t[0],o=l.score||l.scorePercent||0,x=t.length,j=Math.round(t.reduce((p,u)=>p+(u.score||u.scorePercent||0),0)/x);return{status:"ready",headline:o>=70?"Good job — keep it up!":"Let's build your foundation",summary:`You've completed ${x} diagnostic assessment${x>1?"s":""}. Your latest score is ${o}% (average: ${j}%).`,strengths:[],weaknesses:l.risk==="At Risk"||l.risk==="High"?[l.subject||"General Mathematics"]:[],recommendation:"Continue with your personalized learning path to strengthen weak areas.",latestAssessmentId:l.testId||"",latestScorePercent:o,latestRiskLevel:l.risk||(o>=70?"Low":o>=50?"Moderate":"High"),updatedAt:l.completedAt?.toDate?.()||new Date}}const n=await L(C(b,"users",s)).catch(()=>null);if(n?.exists()){const t=n.data();if(t.initialAssessmentCompleted||t.hasCompletedInitialAssessment){const l=t.atRiskSubjects||[];return{status:"ready",headline:"Assessment Complete! ✓",summary:l.length>0?`Areas to focus on: ${l.join(", ")}. Follow your personalized learning path to improve.`:"Your diagnostic assessment is complete. Your personalized learning path is ready.",strengths:[],weaknesses:l,recommendation:"Continue with your recommended lessons to strengthen your skills.",latestAssessmentId:"",latestScorePercent:0,latestRiskLevel:l.length>0?"Moderate":"Low",updatedAt:t.assessmentCompletedAt?.toDate?.()||new Date}}}return null}const me=({isOpen:s,onClose:a,studentId:r,latestResult:c,heroBannerSummary:i})=>{const[n,t]=m.useState("latest"),[l,o]=m.useState(c||null),[x,j]=m.useState([]),[p,u]=m.useState(!1),[g,y]=m.useState(null);m.useEffect(()=>{if(s&&r&&!i){const d=M(r,h=>{y(h)});return()=>d()}},[s,r,i]);const $=i||g;m.useEffect(()=>{s&&r&&(u(!0),(async()=>{try{const[h,T]=await Promise.all([c?Promise.resolve(c):le(r),re(r)]);if(o(h),j(T),!i&&!g){const D=await E(r);if(D)y(D);else{const P=await ce(r);P&&y(P)}}}catch(h){console.error("[AssessmentResultsModal] fetch error:",h)}finally{u(!1)}})())},[s,r,c]);const B=[{key:"latest",label:"Last Results",icon:e.jsx(G,{className:"w-4 h-4"})},{key:"history",label:"History & Trends",icon:e.jsx(R,{className:"w-4 h-4"})}];return e.jsx(W,{open:s,onOpenChange:d=>!d&&a(),children:e.jsxs(q,{className:"max-w-2xl max-h-[85vh] overflow-y-auto p-0 bg-white rounded-2xl shadow-2xl border-0",children:[e.jsxs("div",{className:"sticky top-0 z-10 bg-white border-b border-slate-200 rounded-t-2xl px-6 py-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("h2",{className:"text-xl font-bold text-slate-800",children:"Assessment Results"}),e.jsx("button",{onClick:a,className:"p-1.5 rounded-lg hover:bg-slate-100 transition-colors",children:e.jsx(ee,{className:"w-5 h-5 text-slate-400"})})]}),e.jsx("div",{className:"flex gap-1 bg-slate-100 p-1 rounded-lg",children:B.map(d=>e.jsxs("button",{onClick:()=>t(d.key),className:`flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-all ${n===d.key?"bg-white text-sky-600 shadow-sm":"text-slate-600 hover:text-slate-800"}`,children:[d.icon,d.label]},d.key))})]}),e.jsx("div",{className:"px-6 py-5",children:e.jsxs(_,{mode:"wait",children:[n==="latest"&&e.jsx(f.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},children:e.jsx(de,{heroBannerSummary:$,latestResult:l,loading:p})},"latest"),n==="history"&&e.jsxs(f.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},children:[e.jsx(ae,{history:x}),x.length>0&&e.jsxs("div",{className:"mt-6 space-y-2",children:[e.jsx("h3",{className:"font-semibold text-slate-800 mb-3",children:"All Attempts"}),x.map((d,h)=>e.jsxs("div",{className:"flex items-center justify-between p-3 bg-slate-50 rounded-lg",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-sm font-medium text-slate-700",children:["Attempt ",x.length-h]}),e.jsx("p",{className:"text-xs text-slate-500",children:new Date(d.completedAt).toLocaleDateString()})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("p",{className:"text-sm font-semibold text-sky-600",children:[d.percentage,"%"]}),e.jsx("p",{className:"text-xs text-slate-500",children:d.proficiencyLevel})]})]},h))]})]},"history")]})})]})})},xe=m.lazy(()=>Q(()=>import("./DashboardAvatar-CbAKGmA6.js"),__vite__mapDeps([0,1,2]))),Ce=({userName:s="Student",userLevel:a=1,avatarLayers:r,onContinueLearning:c,showAssessmentTooltip:i,onOpenAssessment:n,studentId:t,assessmentCompleted:l=!1})=>{const[o,x]=m.useState(!1),[j,p]=m.useState(null);m.useEffect(()=>{if(!o||!t)return;const g=M(t,y=>{p(y)});return()=>g()},[o,t]),m.useEffect(()=>{o||p(null)},[o]);const u=()=>{const g=new Date().getHours();return g<12?"Good Morning":g<18?"Good Afternoon":"Good Evening"};return e.jsxs(f.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,ease:[.22,1,.36,1]},className:"relative w-full mt-0 rounded-2xl md:rounded-[2rem] p-5 md:p-6 lg:p-8 bg-gradient-to-br from-white via-sky-50/50 to-white border border-slate-200/80 card-elevated-lg",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden rounded-2xl md:rounded-[2rem] pointer-events-none",children:[e.jsx("div",{className:"absolute top-0 left-0 right-0 h-px bg-gradient-to-r from-transparent via-sky-400/50 to-transparent"}),e.jsx("div",{className:"absolute top-0 right-0 w-96 h-96 bg-sky-100/40 rounded-full blur-3xl -translate-y-1/2 translate-x-1/4"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-64 h-64 bg-rose-100/30 rounded-full blur-3xl translate-y-1/2 -translate-x-1/4"}),e.jsx("div",{className:"absolute inset-0 bg-dot-pattern opacity-40"})]}),e.jsx("div",{className:"relative z-10 flex flex-col md:flex-row min-h-[140px] lg:min-h-[160px] items-start md:items-center justify-between gap-4 md:gap-6 pb-0",children:e.jsxs("div",{className:"flex-1 w-full md:w-auto min-w-0 pr-0 md:pr-40 lg:pr-[280px] pb-2 md:pb-0 py-1",children:[e.jsxs("div",{className:"flex flex-wrap md:flex-nowrap items-center gap-2 mb-3 md:mb-2",children:[e.jsx("div",{className:"px-3 md:px-4 py-1.5 rounded-full bg-sky-100 border border-sky-200",children:e.jsxs("span",{className:"text-xs md:text-sm font-body font-bold text-sky-700",children:["Level ",a]})}),e.jsxs("div",{className:"px-3 md:px-4 py-1.5 rounded-full bg-rose-50 border border-rose-200",children:[e.jsx(Y,{size:14,className:"inline -mt-0.5 text-rose-500 mr-1"}),e.jsx("span",{className:"text-xs md:text-sm font-body font-bold text-rose-700",children:"Active"})]})]}),e.jsxs("h1",{className:"text-2xl md:text-2xl lg:text-3xl font-display font-black text-[#0a1628] mb-1.5 tracking-tight leading-[1.1]",children:[u(),", ",s,"!"]}),e.jsx("p",{className:"text-slate-500 mb-2 md:mb-1 text-sm md:text-sm font-body font-bold pr-[155px] md:pr-0",children:"Today is a great day to move one step forward in math mastery."}),e.jsx("p",{className:"text-xs md:text-xs text-slate-400 font-body mb-5 md:mb-4 pr-[150px] md:pr-0",children:"Focus on your next recommended lesson and keep your momentum."}),e.jsxs(f.button,{onClick:c,whileHover:{scale:1.03},whileTap:{scale:.97},className:"mt-2 md:mt-2 bg-gradient-to-r from-purple-600 to-[#9956DE] text-white px-5 py-3 md:py-2 rounded-xl font-body font-bold text-base md:text-sm shadow-lg shadow-purple-500/20 hover:shadow-purple-500/30 transition-all flex justify-center md:justify-start items-center gap-2 group w-auto md:w-auto",children:["Continue Learning",e.jsx(F,{size:14,className:"group-hover:translate-x-1 transition-transform"})]})]})}),i&&e.jsx(f.div,{initial:{opacity:0,scale:.9,x:10},animate:{opacity:1,scale:1,x:0},transition:{delay:.5,type:"spring"},onClick:n,className:"absolute hidden md:block right-[150px] lg:right-[250px] bottom-16 lg:bottom-20 z-30 cursor-pointer drop-shadow-lg group",children:e.jsxs("div",{className:"bg-white px-4 py-3 rounded-2xl rounded-br-sm border-2 border-amber-300 relative transition-all group-hover:bg-amber-50 group-hover:border-amber-400 group-hover:-translate-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-amber-500",children:e.jsx(S,{size:16})}),e.jsxs("p",{className:"text-xs lg:text-sm font-bold text-amber-900 leading-tight",children:["Don't forget to take the",e.jsx("br",{}),"Initial Assessment!"]})]}),e.jsx("div",{className:"absolute -right-2 bottom-0 w-4 h-4 bg-white border-2 border-transparent border-r-amber-300 border-b-amber-300 rotate-45 group-hover:bg-amber-50 group-hover:border-r-amber-400 group-hover:border-b-amber-400 transition-colors"})]})}),l&&!i&&e.jsx(f.div,{initial:{opacity:0,scale:.9,x:10},animate:{opacity:1,scale:1,x:0},transition:{delay:.5,type:"spring"},onClick:()=>window.dispatchEvent(new CustomEvent("mathpulse:navigate",{detail:{tab:"Grades"}})),className:"absolute hidden md:block right-[150px] lg:right-[250px] bottom-16 lg:bottom-20 z-30 cursor-pointer drop-shadow-lg group",children:e.jsxs("div",{className:"bg-white px-4 py-3 rounded-2xl rounded-br-sm border-2 border-teal-300 relative transition-all group-hover:bg-teal-50 group-hover:border-teal-400 group-hover:-translate-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-6 h-6 bg-teal-100 rounded-full flex items-center justify-center shrink-0",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",className:"text-teal-600",children:e.jsx("polyline",{points:"20 6 9 17 4 12"})})}),e.jsxs("p",{className:"text-xs lg:text-sm font-bold text-teal-900 leading-tight",children:["Assessment Complete!",e.jsx("br",{}),e.jsx("span",{className:"text-[10px] lg:text-[11px] font-normal text-teal-700",children:"View results & history"})]})]}),e.jsx("div",{className:"absolute -right-2 bottom-0 w-4 h-4 bg-white border-2 border-transparent border-r-teal-300 border-b-teal-300 rotate-45 group-hover:bg-teal-50 group-hover:border-r-teal-400 group-hover:border-b-teal-400 transition-colors"})]})}),o&&t&&e.jsx(me,{isOpen:o,onClose:()=>x(!1),studentId:t,heroBannerSummary:j}),e.jsx("div",{className:"absolute right-0 bottom-0 lg:right-10 w-[160px] md:w-[150px] lg:w-[270px] pointer-events-none z-20",style:{clipPath:"inset(-100% -50% 0 -50%)"},children:e.jsx("div",{className:"relative w-full aspect-[4/5] translate-y-[10%] md:translate-y-[21%] lg:translate-y-[19%] drop-shadow-2xl",children:e.jsx(m.Suspense,{fallback:e.jsx("div",{className:"w-full h-full scale-[1.15] md:scale-[1.25] lg:scale-[1.3] origin-bottom"}),children:e.jsx(xe,{layers:r,className:"w-full h-full scale-[1.35] md:scale-[1.25] lg:scale-[1.3] origin-bottom"})})})})]})};export{Ce as default}; diff --git a/assets/InitialAssessmentModal-DkLM9iVL.js b/assets/InitialAssessmentModal-Z0B8mPEg.js similarity index 94% rename from assets/InitialAssessmentModal-DkLM9iVL.js rename to assets/InitialAssessmentModal-Z0B8mPEg.js index 5686577020d8210f5f3192853e46c506235c97be..0bc3a04fc6173dbaf96e75712cb224d555c5bae0 100644 --- a/assets/InitialAssessmentModal-DkLM9iVL.js +++ b/assets/InitialAssessmentModal-Z0B8mPEg.js @@ -1 +1 @@ -import{r as l,j as e}from"./vendor-react-B4AQeu28.js";import{B as j}from"./button-pKF8t5En.js";import{g as y}from"./diagnosticService-Db0MAPHF.js";import{updateDoc as N,doc as v,serverTimestamp as w}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{m as o,B as k,x as C,p as L,g as z}from"./index-Dl2Y5a7s.js";import{X as S}from"./x-wHRRR-gQ.js";import{C as A}from"./circle-check-big-D4jhmnoW.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";const H=({isOpen:n,onClose:d,onDismiss:m,userId:c,strand:x,gradeLevel:p,onAssessmentStart:u,onAssessmentComplete:I})=>{const[t,a]=l.useState(!1),[r,i]=l.useState(null),h=async()=>{a(!0),i(null);try{const s=await y(x,p);sessionStorage.setItem("mathpulse_diagnostic",JSON.stringify({testId:s.test_id,questions:s.questions,totalItems:s.total_items,estimatedMinutes:s.estimated_minutes})),u(s.test_id,s.questions)}catch(s){const b=s instanceof Error?s.message:"Failed to load assessment";i(b),a(!1)}},f=()=>{sessionStorage.setItem("mathpulse_iar_session_dismissed","true"),d()},g=async()=>{try{await N(v(z,"users",c),{assessmentDismissed:!0,assessmentDismissedAt:w()})}catch(s){console.error("[diagnostic] Failed to save dismiss state:",s)}m()};return n?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.stopPropagation(),children:e.jsxs(o.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{type:"spring",damping:25,stiffness:200},className:"bg-white rounded-2xl shadow-2xl max-w-[44rem] w-full flex flex-col overflow-hidden pointer-events-auto",onClick:s=>s.stopPropagation(),style:{willChange:"transform, opacity"},children:[e.jsxs("div",{className:"px-5 py-3 border-b border-[#dde3eb] flex items-center justify-between bg-[#edf1f7] flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 bg-purple-100 rounded-lg flex items-center justify-center text-purple-600",children:e.jsx(k,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-bold text-[#0a1628] leading-tight",children:"Initial Assessment"}),e.jsx("p",{className:"text-[11px] text-[#5a6578]",children:"Analyze your strengths & weaknesses"})]})]}),e.jsx("button",{onClick:f,"aria-label":"Close assessment modal",className:"ml-auto w-8 h-8 rounded-lg flex items-center justify-center text-[#5a6578] hover:bg-[#dde3eb] hover:text-[#0a1628] transition-colors",children:e.jsx(S,{size:18})})]}),e.jsx("div",{className:"p-5 text-center space-y-3",children:e.jsxs(o.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},transition:{duration:.3,ease:"easeOut"},children:[e.jsx("div",{className:"w-20 h-20 bg-purple-50 rounded-full flex items-center justify-center mx-auto mb-3",children:e.jsx("svg",{className:"w-9 h-9 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z"})})}),e.jsx("h3",{className:"text-lg font-bold text-[#0a1628]",children:"Welcome to MathPulse AI!"}),e.jsx("p",{className:"text-[13px] text-[#5a6578] max-w-[24rem] mx-auto leading-relaxed",children:"To personalize your learning path, complete a DepEd competency-based SHS diagnostic (15 items, around 11.6 minutes)."}),e.jsxs("div",{className:"grid grid-cols-2 gap-2.5 max-w-[28rem] mx-auto text-left mt-4",children:[e.jsxs("div",{className:"bg-[#edf1f7] p-2.5 rounded-lg border border-[#dde3eb]",children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-bold text-[13px] text-[#0a1628] mb-1",children:[e.jsx(A,{size:14,className:"text-teal-500"}),"Personalized Path"]}),e.jsx("p",{className:"text-[10px] text-[#5a6578] pl-[18px]",children:"Get recommendations based on your level."})]}),e.jsxs("div",{className:"bg-[#edf1f7] p-2.5 rounded-lg border border-[#dde3eb]",children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-bold text-[13px] text-[#0a1628] mb-1",children:[e.jsx(C,{size:14,className:"text-rose-500"}),"Identify Risks"]}),e.jsx("p",{className:"text-[10px] text-[#5a6578] pl-[18px]",children:"Spot areas that need more attention early."})]})]}),r&&e.jsx("div",{className:"mt-3 p-2.5 bg-red-50 border border-red-200 rounded-lg",children:e.jsx("p",{className:"text-xs text-red-700",children:r})}),e.jsxs("div",{className:"pt-3 space-y-2.5",children:[e.jsx(j,{onClick:h,disabled:t,className:"bg-gradient-to-r from-purple-600 to-purple-500 hover:from-purple-700 hover:to-purple-600 text-white px-5 py-3 rounded-xl text-sm font-bold shadow-lg shadow-purple-200 w-full max-w-[380px] mx-auto",children:t?e.jsxs(e.Fragment,{children:[e.jsx(L,{size:16,className:"animate-spin mr-2"}),"Crafting your assessment..."]}):"Start Assessment"}),t&&e.jsx("p",{className:"text-[10px] text-slate-400 max-w-[24rem] mx-auto text-center leading-relaxed",children:"This may take up to 90 seconds while AI generates your personalized test."}),!t&&e.jsx("button",{onClick:g,disabled:t,className:"block mx-auto text-xs text-slate-500 hover:text-[#5a6578] transition-colors font-medium disabled:opacity-40",children:"Skip for now"})]})]})})]})}):null};export{H as default}; +import{r as l,j as e}from"./vendor-react-B4AQeu28.js";import{B as j}from"./button-AeTtN-Gk.js";import{g as y}from"./diagnosticService-DXc8cCUG.js";import{updateDoc as N,doc as v,serverTimestamp as w}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{m as o,B as k,x as C,p as L,g as z}from"./index-pcr0VEFr.js";import{X as S}from"./x-W9f2bIhn.js";import{C as A}from"./circle-check-big-C3Ampp76.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";const H=({isOpen:n,onClose:d,onDismiss:m,userId:c,strand:x,gradeLevel:p,onAssessmentStart:u,onAssessmentComplete:I})=>{const[t,a]=l.useState(!1),[r,i]=l.useState(null),h=async()=>{a(!0),i(null);try{const s=await y(x,p);sessionStorage.setItem("mathpulse_diagnostic",JSON.stringify({testId:s.test_id,questions:s.questions,totalItems:s.total_items,estimatedMinutes:s.estimated_minutes})),u(s.test_id,s.questions)}catch(s){const b=s instanceof Error?s.message:"Failed to load assessment";i(b),a(!1)}},f=()=>{sessionStorage.setItem("mathpulse_iar_session_dismissed","true"),d()},g=async()=>{try{await N(v(z,"users",c),{assessmentDismissed:!0,assessmentDismissedAt:w()})}catch(s){console.error("[diagnostic] Failed to save dismiss state:",s)}m()};return n?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.stopPropagation(),children:e.jsxs(o.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{type:"spring",damping:25,stiffness:200},className:"bg-white rounded-2xl shadow-2xl max-w-[44rem] w-full flex flex-col overflow-hidden pointer-events-auto",onClick:s=>s.stopPropagation(),style:{willChange:"transform, opacity"},children:[e.jsxs("div",{className:"px-5 py-3 border-b border-[#dde3eb] flex items-center justify-between bg-[#edf1f7] flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 bg-purple-100 rounded-lg flex items-center justify-center text-purple-600",children:e.jsx(k,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-bold text-[#0a1628] leading-tight",children:"Initial Assessment"}),e.jsx("p",{className:"text-[11px] text-[#5a6578]",children:"Analyze your strengths & weaknesses"})]})]}),e.jsx("button",{onClick:f,"aria-label":"Close assessment modal",className:"ml-auto w-8 h-8 rounded-lg flex items-center justify-center text-[#5a6578] hover:bg-[#dde3eb] hover:text-[#0a1628] transition-colors",children:e.jsx(S,{size:18})})]}),e.jsx("div",{className:"p-5 text-center space-y-3",children:e.jsxs(o.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},transition:{duration:.3,ease:"easeOut"},children:[e.jsx("div",{className:"w-20 h-20 bg-purple-50 rounded-full flex items-center justify-center mx-auto mb-3",children:e.jsx("svg",{className:"w-9 h-9 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z"})})}),e.jsx("h3",{className:"text-lg font-bold text-[#0a1628]",children:"Welcome to MathPulse AI!"}),e.jsx("p",{className:"text-[13px] text-[#5a6578] max-w-[24rem] mx-auto leading-relaxed",children:"To personalize your learning path, complete a DepEd competency-based SHS diagnostic (15 items, around 11.6 minutes)."}),e.jsxs("div",{className:"grid grid-cols-2 gap-2.5 max-w-[28rem] mx-auto text-left mt-4",children:[e.jsxs("div",{className:"bg-[#edf1f7] p-2.5 rounded-lg border border-[#dde3eb]",children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-bold text-[13px] text-[#0a1628] mb-1",children:[e.jsx(A,{size:14,className:"text-teal-500"}),"Personalized Path"]}),e.jsx("p",{className:"text-[10px] text-[#5a6578] pl-[18px]",children:"Get recommendations based on your level."})]}),e.jsxs("div",{className:"bg-[#edf1f7] p-2.5 rounded-lg border border-[#dde3eb]",children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-bold text-[13px] text-[#0a1628] mb-1",children:[e.jsx(C,{size:14,className:"text-rose-500"}),"Identify Risks"]}),e.jsx("p",{className:"text-[10px] text-[#5a6578] pl-[18px]",children:"Spot areas that need more attention early."})]})]}),r&&e.jsx("div",{className:"mt-3 p-2.5 bg-red-50 border border-red-200 rounded-lg",children:e.jsx("p",{className:"text-xs text-red-700",children:r})}),e.jsxs("div",{className:"pt-3 space-y-2.5",children:[e.jsx(j,{onClick:h,disabled:t,className:"bg-gradient-to-r from-purple-600 to-purple-500 hover:from-purple-700 hover:to-purple-600 text-white px-5 py-3 rounded-xl text-sm font-bold shadow-lg shadow-purple-200 w-full max-w-[380px] mx-auto",children:t?e.jsxs(e.Fragment,{children:[e.jsx(L,{size:16,className:"animate-spin mr-2"}),"Crafting your assessment..."]}):"Start Assessment"}),t&&e.jsx("p",{className:"text-[10px] text-slate-400 max-w-[24rem] mx-auto text-center leading-relaxed",children:"This may take up to 90 seconds while AI generates your personalized test."}),!t&&e.jsx("button",{onClick:g,disabled:t,className:"block mx-auto text-xs text-slate-500 hover:text-[#5a6578] transition-colors font-medium disabled:opacity-40",children:"Skip for now"})]})]})})]})}):null};export{H as default}; diff --git a/assets/LeaderboardPage-CZ8M4eNL.js b/assets/LeaderboardPage-CP8e3_-L.js similarity index 99% rename from assets/LeaderboardPage-CZ8M4eNL.js rename to assets/LeaderboardPage-CP8e3_-L.js index 7d4d87c23d80ea147a6d252bb8c36e0be8a37698..6c9ff7e5b01268f124e2ee5ea4d5910f37de95ac 100644 --- a/assets/LeaderboardPage-CZ8M4eNL.js +++ b/assets/LeaderboardPage-CP8e3_-L.js @@ -1,4 +1,4 @@ -import{r as l,j as e}from"./vendor-react-B4AQeu28.js";import{e as O,aI as W,h as q,m as n,a as y,q as P,A as k,E as m,T as E,p as _,a4 as I,a5 as H,X as U,u as $,aJ as G,R as J,L as K,z as X}from"./index-Dl2Y5a7s.js";import{X as Q}from"./x-wHRRR-gQ.js";import{C as V}from"./clock-Dcq6nfrf.js";import{u as Z}from"./useFeatureAccess-Drs6_TME.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";/** +import{r as l,j as e}from"./vendor-react-B4AQeu28.js";import{e as O,aI as W,h as q,m as n,a as y,q as P,A as k,E as m,T as E,p as _,a4 as I,a5 as H,X as U,u as $,aJ as G,R as J,L as K,z as X}from"./index-pcr0VEFr.js";import{X as Q}from"./x-W9f2bIhn.js";import{C as V}from"./clock-BUvVFwS_.js";import{u as Z}from"./useFeatureAccess-BSo8Mi8o.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/LearningPath-vROmF4Dn.js b/assets/LearningPath-DjGP7KJN.js similarity index 91% rename from assets/LearningPath-vROmF4Dn.js rename to assets/LearningPath-DjGP7KJN.js index 3a38854c952a11cd3dd363f54fae62f83c1a0293..536418b70156b0adec898ef819bcd1af6e074365 100644 --- a/assets/LearningPath-vROmF4Dn.js +++ b/assets/LearningPath-DjGP7KJN.js @@ -1 +1 @@ -import{r as p,d as g,j as r}from"./vendor-react-B4AQeu28.js";import{u as b,a9 as j,aa as N,y as k,a as P,b as I}from"./index-Dl2Y5a7s.js";import{M as v}from"./ModuleFolderCard-C1jLEevg.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./useSubjectAvailability-DLIjLCt1.js";import"./clock-Dcq6nfrf.js";const z=({onNavigateToModules:m,atRiskSubjects:l=[],priorityTopics:o=[],modules:i})=>{const{userProfile:d}=b(),[x,h]=p.useState(null),a=g.useMemo(()=>{const e=o.length>0?o:l.map(s=>j(s)).filter(s=>s!==null),t=new Set;return e.filter(s=>t.has(s)?!1:(t.add(s),!0))},[o,l]),u=g.useMemo(()=>{if(a.length===0)return i.slice(0,3);const e=new Map(a.map((t,s)=>[N[t],s]));return[...i].sort((t,s)=>{const n=e.get(t.id)??Number.POSITIVE_INFINITY,w=e.get(s.id)??Number.POSITIVE_INFINITY;return n-w}).slice(0,3)},[i,a]);p.useEffect(()=>{d?.uid&&k(d.uid).then(h).catch(console.error)},[d?.uid]);const c=u.slice(0,3).map(e=>{const t=x?.subjects?.[e.subject]?.modulesProgress?.[e.id],s=e.lessons.length,n=t?.progress??(s>0?Math.round((t?.lessonsCompleted?.length||0)/s*100):0);return{...e,progress:n,status:n===100?"Completed":n>0?"In Progress":"Not Started"}}),f=c.some(e=>e.progress>0)?"Continue Learning":"Start Learning";return r.jsxs("div",{children:[r.jsxs("div",{className:"flex justify-between items-center mb-4 md:mb-6 px-1",children:[r.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[r.jsx("div",{className:"w-8 h-8 md:w-10 md:h-10 shrink-0 rounded-xl md:rounded-[14px] bg-indigo-50 border border-indigo-100 flex items-center justify-center text-indigo-500 shadow-inner",children:r.jsx(P,{className:"w-4 h-4 md:w-5 md:h-5",strokeWidth:2.5})}),r.jsx("h2",{className:"font-display font-black text-lg md:text-[24px] text-slate-800 tracking-tight whitespace-nowrap",children:f})]}),r.jsxs("button",{onClick:()=>m?.(),className:"text-primary font-bold text-xs md:text-sm flex shrink-0 items-center gap-1 hover:gap-2 transition-all bg-primary/10 px-3 py-1.5 md:px-4 md:py-2 rounded-lg md:rounded-xl hover:bg-primary/20 whitespace-nowrap",children:["View All ",r.jsx(I,{className:"w-3.5 h-3.5 md:w-4 md:h-4"})]})]}),r.jsx("div",{className:"flex overflow-x-auto snap-x snap-mandatory scrollbar-hide -mx-4 px-4 pb-4 gap-4 md:grid md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3 md:gap-6 md:pb-0 md:mx-0 md:px-0 md:overflow-visible",children:c.map((e,t)=>r.jsx("div",{className:"w-[72vw] max-w-[260px] h-[220px] shrink-0 snap-center md:min-w-0 md:max-w-none md:w-auto md:shrink md:h-auto",children:r.jsx(v,{module:e,index:t,onClick:()=>m?.(e.id),isAtRisk:a.length>0,badgeLabel:e.status!=="Not Started"?e.status:void 0})},e.id))})]})};export{z as default}; +import{r as p,d as g,j as r}from"./vendor-react-B4AQeu28.js";import{u as b,a9 as j,aa as N,y as k,a as P,b as I}from"./index-pcr0VEFr.js";import{M as v}from"./ModuleFolderCard-C2bCHQpq.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./useSubjectAvailability-CRpOB4yl.js";import"./clock-BUvVFwS_.js";const z=({onNavigateToModules:m,atRiskSubjects:l=[],priorityTopics:o=[],modules:i})=>{const{userProfile:d}=b(),[x,h]=p.useState(null),a=g.useMemo(()=>{const e=o.length>0?o:l.map(s=>j(s)).filter(s=>s!==null),t=new Set;return e.filter(s=>t.has(s)?!1:(t.add(s),!0))},[o,l]),u=g.useMemo(()=>{if(a.length===0)return i.slice(0,3);const e=new Map(a.map((t,s)=>[N[t],s]));return[...i].sort((t,s)=>{const n=e.get(t.id)??Number.POSITIVE_INFINITY,w=e.get(s.id)??Number.POSITIVE_INFINITY;return n-w}).slice(0,3)},[i,a]);p.useEffect(()=>{d?.uid&&k(d.uid).then(h).catch(console.error)},[d?.uid]);const c=u.slice(0,3).map(e=>{const t=x?.subjects?.[e.subject]?.modulesProgress?.[e.id],s=e.lessons.length,n=t?.progress??(s>0?Math.round((t?.lessonsCompleted?.length||0)/s*100):0);return{...e,progress:n,status:n===100?"Completed":n>0?"In Progress":"Not Started"}}),f=c.some(e=>e.progress>0)?"Continue Learning":"Start Learning";return r.jsxs("div",{children:[r.jsxs("div",{className:"flex justify-between items-center mb-4 md:mb-6 px-1",children:[r.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[r.jsx("div",{className:"w-8 h-8 md:w-10 md:h-10 shrink-0 rounded-xl md:rounded-[14px] bg-indigo-50 border border-indigo-100 flex items-center justify-center text-indigo-500 shadow-inner",children:r.jsx(P,{className:"w-4 h-4 md:w-5 md:h-5",strokeWidth:2.5})}),r.jsx("h2",{className:"font-display font-black text-lg md:text-[24px] text-slate-800 tracking-tight whitespace-nowrap",children:f})]}),r.jsxs("button",{onClick:()=>m?.(),className:"text-primary font-bold text-xs md:text-sm flex shrink-0 items-center gap-1 hover:gap-2 transition-all bg-primary/10 px-3 py-1.5 md:px-4 md:py-2 rounded-lg md:rounded-xl hover:bg-primary/20 whitespace-nowrap",children:["View All ",r.jsx(I,{className:"w-3.5 h-3.5 md:w-4 md:h-4"})]})]}),r.jsx("div",{className:"flex overflow-x-auto snap-x snap-mandatory scrollbar-hide -mx-4 px-4 pb-4 gap-4 md:grid md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3 md:gap-6 md:pb-0 md:mx-0 md:px-0 md:overflow-visible",children:c.map((e,t)=>r.jsx("div",{className:"w-[72vw] max-w-[260px] h-[220px] shrink-0 snap-center md:min-w-0 md:max-w-none md:w-auto md:shrink md:h-auto",children:r.jsx(v,{module:e,index:t,onClick:()=>m?.(e.id),isAtRisk:a.length>0,badgeLabel:e.status!=="Not Started"?e.status:void 0})},e.id))})]})};export{z as default}; diff --git a/assets/LoginPage-D-1Glnvg.js b/assets/LoginPage-DSKY9f8E.js similarity index 98% rename from assets/LoginPage-D-1Glnvg.js rename to assets/LoginPage-DSKY9f8E.js index 0539a8dc0f841dda1b31c65629535a6f12b03ed0..4e7747a5f3da1ac55d87d1ec9c30670155df4821 100644 --- a/assets/LoginPage-D-1Glnvg.js +++ b/assets/LoginPage-DSKY9f8E.js @@ -1 +1 @@ -import{r as s,j as e}from"./vendor-react-B4AQeu28.js";import{B as Se}from"./button-pKF8t5En.js";import{I as L}from"./input-DghAGnRL.js";import{m as i,B as Pe,T as Ae,A as Ee,U as ee,a as te,L as se,b as ae,G as Me,s as re,c as Te,d as ie}from"./index-Dl2Y5a7s.js";import{S as Re}from"./sparkles-DXDpj3ao.js";import{M as Ce}from"./mail-BNL7x2CT.js";import{E as Ie,a as Le}from"./eye-BEaH2B-8.js";import{S as De}from"./shield-check-DwpyoHVp.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";const le="/assets/shader-bg-DA7bEbBA.mp4",ze=[{id:"length",label:"At least 8 characters",test:a=>a.length>=8},{id:"upper-lower",label:"Contains uppercase and lowercase letters",test:a=>/[A-Z]/.test(a)&&/[a-z]/.test(a)},{id:"number",label:"Contains at least one number",test:a=>/\d/.test(a)},{id:"special",label:"Contains at least one special character",test:a=>/[^A-Za-z0-9]/.test(a)}],D="Use at least 8 characters with uppercase, lowercase, number, and special character.",_e=a=>{const n=typeof a=="object"&&a!==null?a:null,l=a instanceof Error?a.message:"";if(n?.code&&typeof n.code=="string")return{code:n.code.toLowerCase(),message:l};const m=l.match(/auth\/[a-z-]+/i);return{code:m?m[0].toLowerCase():"",message:l}},qe=a=>a.replace(/^Firebase:\s*/i,"").replace(/\s*\(auth\/[a-z-]+\)\.?/i,"").trim(),oe=(a,n)=>{const{code:l,message:m}=_e(a),u=qe(m);return l==="auth/invalid-credential"||l==="auth/wrong-password"||l==="auth/user-not-found"?"Invalid email or password. Please check your credentials and try again.":l==="auth/email-already-in-use"?"This email is already registered. Please sign in instead.":l==="auth/weak-password"||l==="auth/password-does-not-meet-requirements"?u?`Password does not meet signup requirements. ${u}`:`Password does not meet signup requirements. ${D}`:l==="auth/too-many-requests"?"Access to this account has been temporarily disabled due to many failed login attempts. You can immediately restore it by resetting your password or you can try again later.":l==="auth/network-request-failed"?"Network error. Please check your internet connection and try again.":l.startsWith("auth/")?u||n:m.includes("Firebase:")||m.includes("auth/")?n:m||n},at=()=>{const a={"Grade 11":["Academic","Tech-Pro"]},n={teacher:["Mathematics","Science","English","Technology","Humanities"]},[l,m]=s.useState(""),[u,z]=s.useState(""),[P,ne]=s.useState(!1),[o,_]=s.useState(!1),[A,ce]=s.useState(""),[c,q]=s.useState("student"),[f,Be]=s.useState("Grade 11"),[j,B]=s.useState(a["Grade 11"][0]),[b,O]=s.useState("Mathematics"),[V,y]=s.useState(!1),[g,p]=s.useState(null),[de,me]=s.useState(!1),[ue,pe]=s.useState(!1),[E,xe]=s.useState(16),[F,G]=s.useState("primary"),[U,M]=s.useState(0),T=s.useRef(null),R=s.useRef(null),w=de&&ue,v=s.useRef("primary"),N=s.useRef(0),k=s.useRef(!1),$=1.1,W=.34,H=t=>{const r=Math.max(0,Math.min(1,t));Math.abs(N.current-r)<.02||(N.current=r,M(r))},Y=t=>{!Number.isFinite(t)||t<=0||Math.abs(E-t)>.05&&xe(t)},C=s.useMemo(()=>ze.map(t=>({...t,met:t.test(u)})),[u]),Z=s.useMemo(()=>C.every(t=>t.met),[C]),ye=s.useMemo(()=>{if(!o||!g)return!1;const t=g.toLowerCase();return t.includes("password requirements not met")||t.includes("password does not meet")},[g,o]),he=()=>{const t=T.current?.duration;t&&Number.isFinite(t)&&t>0&&Y(t)},fe=()=>{const t=R.current?.duration;t&&Number.isFinite(t)&&t>0&&Y(t)};s.useEffect(()=>{if(!w)return;const t=T.current,r=R.current;if(!t||!r)return;let d=!1,x=0;v.current="primary",G("primary"),k.current=!1,N.current=0,M(0),t.loop=!1,r.loop=!1,t.currentTime=0,r.currentTime=0,r.pause(),t.play().catch(()=>{});const S=()=>{if(d)return;const h=v.current==="primary"?t:r,X=v.current==="primary"?r:t,Ne=Number.isFinite(h.duration)&&h.duration>0?h.duration:E,I=Math.max(Ne-h.currentTime,0);if(I<=$){k.current||(k.current=!0,X.currentTime=0,X.play().catch(()=>{}));const ke=1-I/$;if(H(ke),I<=.03||h.ended){h.pause(),h.currentTime=0;const K=v.current==="primary"?"secondary":"primary";v.current=K,G(K),k.current=!1,N.current=0,M(0)}}else H(0);x=window.requestAnimationFrame(S)};return x=window.requestAnimationFrame(S),()=>{d=!0,x&&window.cancelAnimationFrame(x)}},[E,w]);const J=w?W*(1-U):0,Q=w?W*U:0,be=F==="primary"?J:Q,ge=F==="secondary"?J:Q;s.useEffect(()=>{c==="teacher"&&!n.teacher.includes(b)&&O(n.teacher[0])},[b,c]),s.useEffect(()=>{const t=a[f]||[];t.length>0&&!t.includes(j)&&B(t[0])},[f,j]);const ve=[{label:"Student",role:"student",email:"teststudent@school.edu",password:"TestPass123!",icon:Me,color:"sky"},{label:"Teacher",role:"teacher",email:"testteacher@school.edu",password:"TestPass123!",icon:te,color:"emerald"},{label:"Admin",role:"admin",email:"testadmin@school.edu",password:"TestPass123!",icon:De,color:"rose"}],je=async(t,r,d)=>{p(null),y(!0),m(t),z(r),q(d),_(!1);try{re(d),await ie(t,r)}catch(x){p(oe(x,"Demo sign-in failed. Please try again.")),y(!1)}},we=async t=>{t.preventDefault(),p(null),y(!0);try{if(o){if(!A.trim()){p("Please enter your name"),y(!1);return}if(c==="student"&&!f){p("Please select a grade level"),y(!1);return}if(c!=="student"&&!b){p("Please select a department"),y(!1);return}if(c==="admin"){p("Admin account creation is restricted. Please contact an existing administrator."),y(!1);return}if(!Z){p(`Password does not meet signup requirements. ${D}`),y(!1);return}re(c),await Te(l,u,A,c,c==="student"?{grade:f,section:j}:{department:b})}else await ie(l,u)}catch(r){const d=o?`Sign-up failed. ${D}`:"Sign-in failed. Please check your credentials and try again.";p(oe(r,d)),y(!1)}};return e.jsxs("div",{className:"min-h-screen w-full flex items-center justify-center px-4 sm:px-6 py-8 overflow-y-auto relative login-bg",children:[e.jsx("video",{ref:T,autoPlay:!0,muted:!0,playsInline:!0,preload:"auto",onCanPlay:()=>me(!0),onLoadedMetadata:he,className:"absolute inset-0 w-full h-full object-cover transition-opacity duration-150 e-opacity",style:{"--o":be},src:le}),e.jsx("video",{ref:R,autoPlay:!0,muted:!0,playsInline:!0,preload:"auto",onCanPlay:()=>pe(!0),onLoadedMetadata:fe,className:"absolute inset-0 w-full h-full object-cover transition-opacity duration-150 e-opacity",style:{"--o":ge},src:le}),e.jsx("div",{className:"absolute inset-0 pointer-events-none login-frost-overlay"}),e.jsx("div",{className:"absolute top-[10%] left-[-10%] w-[60%] h-[60%] rounded-full blur-[140px] pointer-events-none mix-blend-multiply login-orb-purple"}),e.jsx("div",{className:"absolute bottom-[-10%] right-[-10%] w-[70%] h-[70%] rounded-full blur-[160px] pointer-events-none mix-blend-multiply login-orb-pink"}),e.jsx("div",{className:"absolute top-[40%] left-[40%] w-[40%] h-[40%] rounded-full blur-[120px] pointer-events-none mix-blend-screen login-orb-blue"}),e.jsx("div",{className:"relative z-10 w-full max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-12 items-center",children:[e.jsxs(i.div,{initial:{opacity:0,x:-40},animate:{opacity:1,x:0},transition:{duration:.8,ease:[.22,1,.36,1]},className:"flex flex-col items-center lg:items-start justify-center space-y-5 lg:space-y-8 text-center lg:text-left",children:[e.jsxs(i.div,{className:"flex items-center justify-center lg:justify-start gap-2.5",children:[e.jsx(i.div,{className:"relative flex items-center justify-center drop-shadow-md",children:e.jsx("img",{src:"/mathpulse_final_logo.png",alt:"MathPulse AI Logo",className:"w-10 h-10 lg:w-16 lg:h-16 object-contain flex-shrink-0"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl lg:text-3xl font-display font-black tracking-tight text-slate-900 bg-clip-text text-transparent bg-gradient-to-r from-purple-600 via-pink-600 to-sky-500",children:"MathPulse"}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(Re,{size:12,className:"text-rose-500"}),e.jsx("span",{className:"text-xs text-slate-500 font-body font-medium tracking-wide",children:"Powered by Machine Learning"})]})]})]}),e.jsxs(i.div,{className:"space-y-3 lg:space-y-5",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.2,duration:.8},children:[e.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl xl:text-[3.4rem] font-display font-extrabold leading-[1.1] tracking-tight text-slate-900",children:["Transform Your",e.jsx("br",{}),e.jsx("span",{className:"bg-gradient-to-r from-sky-600 via-cyan-500 to-sky-500 bg-clip-text text-transparent",children:"Math Journey"})]}),e.jsx("p",{className:"text-sm lg:text-base text-slate-500 leading-relaxed max-w-md mx-auto lg:mx-0 font-body",children:"AI-powered predictive system designed to identify at-risk students and provide personalized learning recommendations."})]}),e.jsx("div",{className:"grid grid-cols-3 gap-2 lg:gap-3",children:[{icon:Pe,label:"AI Predictions",desc:"Smart detection",color:"sky"},{icon:Ae,label:"Analytics",desc:"Real-time data",color:"rose"},{icon:Ee,label:"Gamified",desc:"Learn & earn",color:"emerald"}].map((t,r)=>{const d=t.icon,x={sky:"border-sky-200/60 hover:border-sky-300",rose:"border-rose-200/60 hover:border-rose-300",emerald:"border-emerald-200/60 hover:border-emerald-300"},S={sky:"text-sky-600",rose:"text-rose-500",emerald:"text-emerald-600"},h={sky:"bg-sky-100",rose:"bg-rose-100",emerald:"bg-emerald-100"};return e.jsxs(i.div,{className:`bg-white/80 backdrop-blur-xl border ${x[t.color]} rounded-xl p-3 lg:p-4 transition-all cursor-pointer group shadow-md shadow-slate-900/[0.04]`,initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.5+r*.1},whileHover:{scale:1.03,y:-4},children:[e.jsx("div",{className:`w-7 h-7 lg:w-9 lg:h-9 rounded-lg ${h[t.color]} flex items-center justify-center mx-auto lg:mx-0 mb-2 lg:mb-3`,children:e.jsx(d,{size:15,className:S[t.color]})}),e.jsx("h3",{className:"text-xs lg:text-sm font-display font-semibold text-slate-800 mb-0.5",children:t.label}),e.jsx("p",{className:"text-[10px] lg:text-xs text-slate-400 font-body",children:t.desc})]},r)})})]}),e.jsx(i.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.8,delay:.15,ease:[.22,1,.36,1]},className:"relative flex justify-center lg:justify-end",children:e.jsxs("div",{className:"bg-white/85 backdrop-blur-2xl border border-slate-200/60 rounded-3xl p-6 sm:p-7 w-full max-w-md relative overflow-hidden shadow-[0_20px_60px_-15px_rgba(168,85,247,0.15)] max-h-[85vh] overflow-y-auto",children:[e.jsx("div",{className:"absolute top-0 left-0 right-0 h-[3px] bg-gradient-to-r from-purple-500 via-pink-500 to-sky-500"}),e.jsx("div",{className:"absolute -top-40 left-1/2 -translate-x-1/2 w-80 h-80 bg-gradient-to-br from-purple-400/20 to-pink-400/20 rounded-full blur-[60px] pointer-events-none"}),e.jsxs("div",{className:"text-center mb-4 relative",children:[e.jsx(i.h3,{className:"text-2xl font-display font-bold text-slate-900 mb-2",initial:{opacity:0},animate:{opacity:1},transition:{delay:.4},children:o?"Create Account":"Welcome Back"}),e.jsx(i.p,{className:"text-sm text-slate-500 font-body",initial:{opacity:0},animate:{opacity:1},transition:{delay:.5},children:o?"Begin your learning journey":"Sign in to continue learning"})]}),e.jsxs("form",{onSubmit:we,className:"space-y-3 mb-4 relative",children:[g&&!ye&&e.jsx(i.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},className:"bg-rose-50 border border-rose-200 text-rose-600 px-4 py-3 rounded-lg text-sm font-body",children:g}),o&&e.jsxs(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Full Name"}),e.jsxs("div",{className:"relative",children:[e.jsx(ee,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx(L,{type:"text",placeholder:"Your Name",value:A,onChange:t=>ce(t.target.value),className:"w-full pl-11 pr-4 py-3 rounded-lg bg-slate-100/70 border-slate-200/80 text-slate-900 placeholder:text-slate-400 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all",required:!0})]})]}),o&&e.jsxs(i.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.45},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Account Type"}),e.jsx("div",{className:"grid grid-cols-2 gap-2",children:[{role:"student",label:"Student"},{role:"teacher",label:"Teacher"}].map(t=>{const r=c===t.role;return e.jsx("button",{type:"button",onClick:()=>q(t.role),className:`rounded-lg border px-3 py-2.5 text-sm font-body font-semibold transition-all ${r?"border-sky-400 bg-sky-50 text-sky-700":"border-slate-200 bg-slate-50 text-slate-500 hover:border-slate-300"}`,children:t.label},t.role)})})]}),o&&c==="student"&&e.jsx(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},className:"space-y-3",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Section"}),e.jsxs("div",{className:"relative",children:[e.jsx(ee,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx("select",{value:j,onChange:t=>B(t.target.value),className:"w-full pl-11 pr-4 py-2.5 rounded-lg bg-slate-100/70 border border-slate-200/80 text-slate-900 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all appearance-none",required:!0,children:(a[f]||[]).map(t=>e.jsx("option",{value:t,children:t},t))})]})]})}),o&&c!=="student"&&e.jsxs(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Department"}),e.jsxs("div",{className:"relative",children:[e.jsx(te,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx("select",{value:b,onChange:t=>O(t.target.value),className:"w-full pl-11 pr-4 py-2.5 rounded-lg bg-slate-100/70 border border-slate-200/80 text-slate-900 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all appearance-none",required:!0,children:n.teacher.map(t=>e.jsx("option",{value:t,children:t},t))})]})]}),e.jsxs(i.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.5},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Email Address"}),e.jsxs("div",{className:"relative",children:[e.jsx(Ce,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx(L,{type:"email",placeholder:"your.email@school.edu",value:l,onChange:t=>m(t.target.value),className:"w-full pl-11 pr-4 py-3 rounded-lg bg-slate-100/70 border-slate-200/80 text-slate-900 placeholder:text-slate-400 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all",required:!0})]})]}),e.jsxs(i.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.6},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Password"}),e.jsxs("div",{className:"relative",children:[e.jsx(se,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx(L,{type:P?"text":"password",placeholder:"••••••••",value:u,onChange:t=>z(t.target.value),className:"w-full pl-11 pr-11 py-3 rounded-lg bg-slate-100/70 border-slate-200/80 text-slate-900 placeholder:text-slate-400 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all",required:!0,minLength:o?8:6}),e.jsx(i.button,{type:"button",onClick:()=>ne(!P),className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 transition-colors",whileTap:{scale:.9},children:P?e.jsx(Ie,{size:16}):e.jsx(Le,{size:16})})]}),o&&u.length>0&&!Z&&e.jsxs("div",{className:"mt-2 rounded-lg border border-sky-100/80 bg-sky-50/70 px-3 py-2",children:[e.jsx("p",{className:"text-[11px] font-body font-semibold uppercase tracking-wider text-slate-600",children:"Password requirements"}),e.jsx("ul",{className:"mt-2 space-y-1",children:C.map(t=>e.jsxs("li",{className:`flex items-center gap-2 text-[11px] font-body ${t.met?"text-emerald-700":"text-slate-500"}`,children:[e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${t.met?"bg-emerald-500":"bg-slate-300"}`}),e.jsx("span",{children:t.label})]},t.id))})]})]}),e.jsx(i.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.7},children:e.jsxs(Se,{type:"submit",disabled:V,className:"w-full bg-gradient-to-r from-purple-600 to-pink-500 hover:from-purple-500 hover:to-pink-400 text-white font-body font-semibold py-3 rounded-xl shadow-lg shadow-purple-600/25 hover:shadow-pink-500/35 hover:scale-[1.02] transition-all text-sm group relative overflow-hidden disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx(i.span,{className:"absolute inset-0 bg-gradient-to-r from-white/0 via-white/15 to-white/0",animate:{x:["-100%","100%"]},transition:{duration:3,repeat:1/0,repeatDelay:2}}),e.jsxs("span",{className:"relative flex items-center justify-center gap-2",children:[V?"Please wait...":o?"Create Account":"Sign In",e.jsx(ae,{size:16,className:"group-hover:translate-x-1 transition-transform"})]})]})}),e.jsx("div",{className:"text-center",children:e.jsx("button",{type:"button",onClick:()=>{_(!o),p(null)},className:"text-sm text-slate-400 hover:text-sky-500 font-body font-medium transition-colors",children:o?"Already have an account? Sign in":"Don't have an account? Create one"})})]}),!o&&e.jsxs(i.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.85},className:"mb-4 relative",children:[e.jsxs("div",{className:"relative flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"flex-1 h-px bg-slate-200"}),e.jsx("span",{className:"text-[10px] font-body font-semibold text-slate-400 uppercase tracking-widest",children:"Quick Demo Access"}),e.jsx("div",{className:"flex-1 h-px bg-slate-200"})]}),e.jsx("div",{className:"flex flex-col gap-2",children:ve.map(t=>{const r=t.icon,d={sky:"bg-sky-100",emerald:"bg-emerald-100",rose:"bg-rose-100"},x={sky:"text-sky-600",emerald:"text-emerald-600",rose:"text-rose-500"};return e.jsxs(i.button,{type:"button",onClick:()=>je(t.email,t.password,t.role),className:"group flex items-center gap-3 w-full px-4 py-2.5 rounded-lg bg-slate-50/80 border border-slate-200/70 hover:border-sky-300 hover:bg-sky-50/80 hover:shadow-sm transition-all text-left",whileHover:{scale:1.01},whileTap:{scale:.99},children:[e.jsx("div",{className:`w-8 h-8 rounded-md flex items-center justify-center shrink-0 ${d[t.color]}`,children:e.jsx(r,{size:15,className:x[t.color]})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-xs font-body font-semibold text-slate-700 group-hover:text-sky-600 transition-colors",children:[t.label," Account"]}),e.jsx("p",{className:"text-[10px] text-slate-400 font-body truncate",children:t.email})]}),e.jsx(ae,{size:14,className:"text-slate-300 group-hover:text-sky-500 group-hover:translate-x-0.5 transition-all shrink-0"})]},t.label)})})]}),e.jsxs(i.p,{className:"text-xs text-slate-400 text-center mt-4 font-body relative",initial:{opacity:0},animate:{opacity:1},transition:{delay:1},children:[e.jsx(se,{size:10,className:"inline mr-1 -mt-0.5"})," Your data is encrypted and secure"]})]})})]})})]})};export{at as default}; +import{r as s,j as e}from"./vendor-react-B4AQeu28.js";import{B as Se}from"./button-AeTtN-Gk.js";import{I as L}from"./input-DfDzuOXr.js";import{m as i,B as Pe,T as Ae,A as Ee,U as ee,a as te,L as se,b as ae,G as Me,s as re,c as Te,d as ie}from"./index-pcr0VEFr.js";import{S as Re}from"./sparkles-CcaVyiD_.js";import{M as Ce}from"./mail-C-ekjMP7.js";import{E as Ie,a as Le}from"./eye-5Jz6KeDY.js";import{S as De}from"./shield-check-DFEsr5NL.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";const le="/assets/shader-bg-DA7bEbBA.mp4",ze=[{id:"length",label:"At least 8 characters",test:a=>a.length>=8},{id:"upper-lower",label:"Contains uppercase and lowercase letters",test:a=>/[A-Z]/.test(a)&&/[a-z]/.test(a)},{id:"number",label:"Contains at least one number",test:a=>/\d/.test(a)},{id:"special",label:"Contains at least one special character",test:a=>/[^A-Za-z0-9]/.test(a)}],D="Use at least 8 characters with uppercase, lowercase, number, and special character.",_e=a=>{const n=typeof a=="object"&&a!==null?a:null,l=a instanceof Error?a.message:"";if(n?.code&&typeof n.code=="string")return{code:n.code.toLowerCase(),message:l};const m=l.match(/auth\/[a-z-]+/i);return{code:m?m[0].toLowerCase():"",message:l}},qe=a=>a.replace(/^Firebase:\s*/i,"").replace(/\s*\(auth\/[a-z-]+\)\.?/i,"").trim(),oe=(a,n)=>{const{code:l,message:m}=_e(a),u=qe(m);return l==="auth/invalid-credential"||l==="auth/wrong-password"||l==="auth/user-not-found"?"Invalid email or password. Please check your credentials and try again.":l==="auth/email-already-in-use"?"This email is already registered. Please sign in instead.":l==="auth/weak-password"||l==="auth/password-does-not-meet-requirements"?u?`Password does not meet signup requirements. ${u}`:`Password does not meet signup requirements. ${D}`:l==="auth/too-many-requests"?"Access to this account has been temporarily disabled due to many failed login attempts. You can immediately restore it by resetting your password or you can try again later.":l==="auth/network-request-failed"?"Network error. Please check your internet connection and try again.":l.startsWith("auth/")?u||n:m.includes("Firebase:")||m.includes("auth/")?n:m||n},at=()=>{const a={"Grade 11":["Academic","Tech-Pro"]},n={teacher:["Mathematics","Science","English","Technology","Humanities"]},[l,m]=s.useState(""),[u,z]=s.useState(""),[P,ne]=s.useState(!1),[o,_]=s.useState(!1),[A,ce]=s.useState(""),[c,q]=s.useState("student"),[f,Be]=s.useState("Grade 11"),[j,B]=s.useState(a["Grade 11"][0]),[b,O]=s.useState("Mathematics"),[V,y]=s.useState(!1),[g,p]=s.useState(null),[de,me]=s.useState(!1),[ue,pe]=s.useState(!1),[E,xe]=s.useState(16),[F,G]=s.useState("primary"),[U,M]=s.useState(0),T=s.useRef(null),R=s.useRef(null),w=de&&ue,v=s.useRef("primary"),N=s.useRef(0),k=s.useRef(!1),$=1.1,W=.34,H=t=>{const r=Math.max(0,Math.min(1,t));Math.abs(N.current-r)<.02||(N.current=r,M(r))},Y=t=>{!Number.isFinite(t)||t<=0||Math.abs(E-t)>.05&&xe(t)},C=s.useMemo(()=>ze.map(t=>({...t,met:t.test(u)})),[u]),Z=s.useMemo(()=>C.every(t=>t.met),[C]),ye=s.useMemo(()=>{if(!o||!g)return!1;const t=g.toLowerCase();return t.includes("password requirements not met")||t.includes("password does not meet")},[g,o]),he=()=>{const t=T.current?.duration;t&&Number.isFinite(t)&&t>0&&Y(t)},fe=()=>{const t=R.current?.duration;t&&Number.isFinite(t)&&t>0&&Y(t)};s.useEffect(()=>{if(!w)return;const t=T.current,r=R.current;if(!t||!r)return;let d=!1,x=0;v.current="primary",G("primary"),k.current=!1,N.current=0,M(0),t.loop=!1,r.loop=!1,t.currentTime=0,r.currentTime=0,r.pause(),t.play().catch(()=>{});const S=()=>{if(d)return;const h=v.current==="primary"?t:r,X=v.current==="primary"?r:t,Ne=Number.isFinite(h.duration)&&h.duration>0?h.duration:E,I=Math.max(Ne-h.currentTime,0);if(I<=$){k.current||(k.current=!0,X.currentTime=0,X.play().catch(()=>{}));const ke=1-I/$;if(H(ke),I<=.03||h.ended){h.pause(),h.currentTime=0;const K=v.current==="primary"?"secondary":"primary";v.current=K,G(K),k.current=!1,N.current=0,M(0)}}else H(0);x=window.requestAnimationFrame(S)};return x=window.requestAnimationFrame(S),()=>{d=!0,x&&window.cancelAnimationFrame(x)}},[E,w]);const J=w?W*(1-U):0,Q=w?W*U:0,be=F==="primary"?J:Q,ge=F==="secondary"?J:Q;s.useEffect(()=>{c==="teacher"&&!n.teacher.includes(b)&&O(n.teacher[0])},[b,c]),s.useEffect(()=>{const t=a[f]||[];t.length>0&&!t.includes(j)&&B(t[0])},[f,j]);const ve=[{label:"Student",role:"student",email:"teststudent@school.edu",password:"TestPass123!",icon:Me,color:"sky"},{label:"Teacher",role:"teacher",email:"testteacher@school.edu",password:"TestPass123!",icon:te,color:"emerald"},{label:"Admin",role:"admin",email:"testadmin@school.edu",password:"TestPass123!",icon:De,color:"rose"}],je=async(t,r,d)=>{p(null),y(!0),m(t),z(r),q(d),_(!1);try{re(d),await ie(t,r)}catch(x){p(oe(x,"Demo sign-in failed. Please try again.")),y(!1)}},we=async t=>{t.preventDefault(),p(null),y(!0);try{if(o){if(!A.trim()){p("Please enter your name"),y(!1);return}if(c==="student"&&!f){p("Please select a grade level"),y(!1);return}if(c!=="student"&&!b){p("Please select a department"),y(!1);return}if(c==="admin"){p("Admin account creation is restricted. Please contact an existing administrator."),y(!1);return}if(!Z){p(`Password does not meet signup requirements. ${D}`),y(!1);return}re(c),await Te(l,u,A,c,c==="student"?{grade:f,section:j}:{department:b})}else await ie(l,u)}catch(r){const d=o?`Sign-up failed. ${D}`:"Sign-in failed. Please check your credentials and try again.";p(oe(r,d)),y(!1)}};return e.jsxs("div",{className:"min-h-screen w-full flex items-center justify-center px-4 sm:px-6 py-8 overflow-y-auto relative login-bg",children:[e.jsx("video",{ref:T,autoPlay:!0,muted:!0,playsInline:!0,preload:"auto",onCanPlay:()=>me(!0),onLoadedMetadata:he,className:"absolute inset-0 w-full h-full object-cover transition-opacity duration-150 e-opacity",style:{"--o":be},src:le}),e.jsx("video",{ref:R,autoPlay:!0,muted:!0,playsInline:!0,preload:"auto",onCanPlay:()=>pe(!0),onLoadedMetadata:fe,className:"absolute inset-0 w-full h-full object-cover transition-opacity duration-150 e-opacity",style:{"--o":ge},src:le}),e.jsx("div",{className:"absolute inset-0 pointer-events-none login-frost-overlay"}),e.jsx("div",{className:"absolute top-[10%] left-[-10%] w-[60%] h-[60%] rounded-full blur-[140px] pointer-events-none mix-blend-multiply login-orb-purple"}),e.jsx("div",{className:"absolute bottom-[-10%] right-[-10%] w-[70%] h-[70%] rounded-full blur-[160px] pointer-events-none mix-blend-multiply login-orb-pink"}),e.jsx("div",{className:"absolute top-[40%] left-[40%] w-[40%] h-[40%] rounded-full blur-[120px] pointer-events-none mix-blend-screen login-orb-blue"}),e.jsx("div",{className:"relative z-10 w-full max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-12 items-center",children:[e.jsxs(i.div,{initial:{opacity:0,x:-40},animate:{opacity:1,x:0},transition:{duration:.8,ease:[.22,1,.36,1]},className:"flex flex-col items-center lg:items-start justify-center space-y-5 lg:space-y-8 text-center lg:text-left",children:[e.jsxs(i.div,{className:"flex items-center justify-center lg:justify-start gap-2.5",children:[e.jsx(i.div,{className:"relative flex items-center justify-center drop-shadow-md",children:e.jsx("img",{src:"/mathpulse_final_logo.png",alt:"MathPulse AI Logo",className:"w-10 h-10 lg:w-16 lg:h-16 object-contain flex-shrink-0"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl lg:text-3xl font-display font-black tracking-tight text-slate-900 bg-clip-text text-transparent bg-gradient-to-r from-purple-600 via-pink-600 to-sky-500",children:"MathPulse"}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(Re,{size:12,className:"text-rose-500"}),e.jsx("span",{className:"text-xs text-slate-500 font-body font-medium tracking-wide",children:"Powered by Machine Learning"})]})]})]}),e.jsxs(i.div,{className:"space-y-3 lg:space-y-5",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.2,duration:.8},children:[e.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl xl:text-[3.4rem] font-display font-extrabold leading-[1.1] tracking-tight text-slate-900",children:["Transform Your",e.jsx("br",{}),e.jsx("span",{className:"bg-gradient-to-r from-sky-600 via-cyan-500 to-sky-500 bg-clip-text text-transparent",children:"Math Journey"})]}),e.jsx("p",{className:"text-sm lg:text-base text-slate-500 leading-relaxed max-w-md mx-auto lg:mx-0 font-body",children:"AI-powered predictive system designed to identify at-risk students and provide personalized learning recommendations."})]}),e.jsx("div",{className:"grid grid-cols-3 gap-2 lg:gap-3",children:[{icon:Pe,label:"AI Predictions",desc:"Smart detection",color:"sky"},{icon:Ae,label:"Analytics",desc:"Real-time data",color:"rose"},{icon:Ee,label:"Gamified",desc:"Learn & earn",color:"emerald"}].map((t,r)=>{const d=t.icon,x={sky:"border-sky-200/60 hover:border-sky-300",rose:"border-rose-200/60 hover:border-rose-300",emerald:"border-emerald-200/60 hover:border-emerald-300"},S={sky:"text-sky-600",rose:"text-rose-500",emerald:"text-emerald-600"},h={sky:"bg-sky-100",rose:"bg-rose-100",emerald:"bg-emerald-100"};return e.jsxs(i.div,{className:`bg-white/80 backdrop-blur-xl border ${x[t.color]} rounded-xl p-3 lg:p-4 transition-all cursor-pointer group shadow-md shadow-slate-900/[0.04]`,initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.5+r*.1},whileHover:{scale:1.03,y:-4},children:[e.jsx("div",{className:`w-7 h-7 lg:w-9 lg:h-9 rounded-lg ${h[t.color]} flex items-center justify-center mx-auto lg:mx-0 mb-2 lg:mb-3`,children:e.jsx(d,{size:15,className:S[t.color]})}),e.jsx("h3",{className:"text-xs lg:text-sm font-display font-semibold text-slate-800 mb-0.5",children:t.label}),e.jsx("p",{className:"text-[10px] lg:text-xs text-slate-400 font-body",children:t.desc})]},r)})})]}),e.jsx(i.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.8,delay:.15,ease:[.22,1,.36,1]},className:"relative flex justify-center lg:justify-end",children:e.jsxs("div",{className:"bg-white/85 backdrop-blur-2xl border border-slate-200/60 rounded-3xl p-6 sm:p-7 w-full max-w-md relative overflow-hidden shadow-[0_20px_60px_-15px_rgba(168,85,247,0.15)] max-h-[85vh] overflow-y-auto",children:[e.jsx("div",{className:"absolute top-0 left-0 right-0 h-[3px] bg-gradient-to-r from-purple-500 via-pink-500 to-sky-500"}),e.jsx("div",{className:"absolute -top-40 left-1/2 -translate-x-1/2 w-80 h-80 bg-gradient-to-br from-purple-400/20 to-pink-400/20 rounded-full blur-[60px] pointer-events-none"}),e.jsxs("div",{className:"text-center mb-4 relative",children:[e.jsx(i.h3,{className:"text-2xl font-display font-bold text-slate-900 mb-2",initial:{opacity:0},animate:{opacity:1},transition:{delay:.4},children:o?"Create Account":"Welcome Back"}),e.jsx(i.p,{className:"text-sm text-slate-500 font-body",initial:{opacity:0},animate:{opacity:1},transition:{delay:.5},children:o?"Begin your learning journey":"Sign in to continue learning"})]}),e.jsxs("form",{onSubmit:we,className:"space-y-3 mb-4 relative",children:[g&&!ye&&e.jsx(i.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},className:"bg-rose-50 border border-rose-200 text-rose-600 px-4 py-3 rounded-lg text-sm font-body",children:g}),o&&e.jsxs(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Full Name"}),e.jsxs("div",{className:"relative",children:[e.jsx(ee,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx(L,{type:"text",placeholder:"Your Name",value:A,onChange:t=>ce(t.target.value),className:"w-full pl-11 pr-4 py-3 rounded-lg bg-slate-100/70 border-slate-200/80 text-slate-900 placeholder:text-slate-400 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all",required:!0})]})]}),o&&e.jsxs(i.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.45},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Account Type"}),e.jsx("div",{className:"grid grid-cols-2 gap-2",children:[{role:"student",label:"Student"},{role:"teacher",label:"Teacher"}].map(t=>{const r=c===t.role;return e.jsx("button",{type:"button",onClick:()=>q(t.role),className:`rounded-lg border px-3 py-2.5 text-sm font-body font-semibold transition-all ${r?"border-sky-400 bg-sky-50 text-sky-700":"border-slate-200 bg-slate-50 text-slate-500 hover:border-slate-300"}`,children:t.label},t.role)})})]}),o&&c==="student"&&e.jsx(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},className:"space-y-3",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Section"}),e.jsxs("div",{className:"relative",children:[e.jsx(ee,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx("select",{value:j,onChange:t=>B(t.target.value),className:"w-full pl-11 pr-4 py-2.5 rounded-lg bg-slate-100/70 border border-slate-200/80 text-slate-900 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all appearance-none",required:!0,children:(a[f]||[]).map(t=>e.jsx("option",{value:t,children:t},t))})]})]})}),o&&c!=="student"&&e.jsxs(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Department"}),e.jsxs("div",{className:"relative",children:[e.jsx(te,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx("select",{value:b,onChange:t=>O(t.target.value),className:"w-full pl-11 pr-4 py-2.5 rounded-lg bg-slate-100/70 border border-slate-200/80 text-slate-900 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all appearance-none",required:!0,children:n.teacher.map(t=>e.jsx("option",{value:t,children:t},t))})]})]}),e.jsxs(i.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.5},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Email Address"}),e.jsxs("div",{className:"relative",children:[e.jsx(Ce,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx(L,{type:"email",placeholder:"your.email@school.edu",value:l,onChange:t=>m(t.target.value),className:"w-full pl-11 pr-4 py-3 rounded-lg bg-slate-100/70 border-slate-200/80 text-slate-900 placeholder:text-slate-400 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all",required:!0})]})]}),e.jsxs(i.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.6},children:[e.jsx("label",{className:"block text-xs font-body font-semibold text-slate-500 mb-2 uppercase tracking-wider",children:"Password"}),e.jsxs("div",{className:"relative",children:[e.jsx(se,{size:16,className:"absolute left-4 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx(L,{type:P?"text":"password",placeholder:"••••••••",value:u,onChange:t=>z(t.target.value),className:"w-full pl-11 pr-11 py-3 rounded-lg bg-slate-100/70 border-slate-200/80 text-slate-900 placeholder:text-slate-400 focus:border-sky-400 focus:ring-2 focus:ring-sky-400/20 focus:bg-white text-sm font-body transition-all",required:!0,minLength:o?8:6}),e.jsx(i.button,{type:"button",onClick:()=>ne(!P),className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 transition-colors",whileTap:{scale:.9},children:P?e.jsx(Ie,{size:16}):e.jsx(Le,{size:16})})]}),o&&u.length>0&&!Z&&e.jsxs("div",{className:"mt-2 rounded-lg border border-sky-100/80 bg-sky-50/70 px-3 py-2",children:[e.jsx("p",{className:"text-[11px] font-body font-semibold uppercase tracking-wider text-slate-600",children:"Password requirements"}),e.jsx("ul",{className:"mt-2 space-y-1",children:C.map(t=>e.jsxs("li",{className:`flex items-center gap-2 text-[11px] font-body ${t.met?"text-emerald-700":"text-slate-500"}`,children:[e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${t.met?"bg-emerald-500":"bg-slate-300"}`}),e.jsx("span",{children:t.label})]},t.id))})]})]}),e.jsx(i.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.7},children:e.jsxs(Se,{type:"submit",disabled:V,className:"w-full bg-gradient-to-r from-purple-600 to-pink-500 hover:from-purple-500 hover:to-pink-400 text-white font-body font-semibold py-3 rounded-xl shadow-lg shadow-purple-600/25 hover:shadow-pink-500/35 hover:scale-[1.02] transition-all text-sm group relative overflow-hidden disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx(i.span,{className:"absolute inset-0 bg-gradient-to-r from-white/0 via-white/15 to-white/0",animate:{x:["-100%","100%"]},transition:{duration:3,repeat:1/0,repeatDelay:2}}),e.jsxs("span",{className:"relative flex items-center justify-center gap-2",children:[V?"Please wait...":o?"Create Account":"Sign In",e.jsx(ae,{size:16,className:"group-hover:translate-x-1 transition-transform"})]})]})}),e.jsx("div",{className:"text-center",children:e.jsx("button",{type:"button",onClick:()=>{_(!o),p(null)},className:"text-sm text-slate-400 hover:text-sky-500 font-body font-medium transition-colors",children:o?"Already have an account? Sign in":"Don't have an account? Create one"})})]}),!o&&e.jsxs(i.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.85},className:"mb-4 relative",children:[e.jsxs("div",{className:"relative flex items-center gap-3 mb-4",children:[e.jsx("div",{className:"flex-1 h-px bg-slate-200"}),e.jsx("span",{className:"text-[10px] font-body font-semibold text-slate-400 uppercase tracking-widest",children:"Quick Demo Access"}),e.jsx("div",{className:"flex-1 h-px bg-slate-200"})]}),e.jsx("div",{className:"flex flex-col gap-2",children:ve.map(t=>{const r=t.icon,d={sky:"bg-sky-100",emerald:"bg-emerald-100",rose:"bg-rose-100"},x={sky:"text-sky-600",emerald:"text-emerald-600",rose:"text-rose-500"};return e.jsxs(i.button,{type:"button",onClick:()=>je(t.email,t.password,t.role),className:"group flex items-center gap-3 w-full px-4 py-2.5 rounded-lg bg-slate-50/80 border border-slate-200/70 hover:border-sky-300 hover:bg-sky-50/80 hover:shadow-sm transition-all text-left",whileHover:{scale:1.01},whileTap:{scale:.99},children:[e.jsx("div",{className:`w-8 h-8 rounded-md flex items-center justify-center shrink-0 ${d[t.color]}`,children:e.jsx(r,{size:15,className:x[t.color]})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-xs font-body font-semibold text-slate-700 group-hover:text-sky-600 transition-colors",children:[t.label," Account"]}),e.jsx("p",{className:"text-[10px] text-slate-400 font-body truncate",children:t.email})]}),e.jsx(ae,{size:14,className:"text-slate-300 group-hover:text-sky-500 group-hover:translate-x-0.5 transition-all shrink-0"})]},t.label)})})]}),e.jsxs(i.p,{className:"text-xs text-slate-400 text-center mt-4 font-body relative",initial:{opacity:0},animate:{opacity:1},transition:{delay:1},children:[e.jsx(se,{size:10,className:"inline mr-1 -mt-0.5"})," Your data is encrypted and secure"]})]})})]})})]})};export{at as default}; diff --git a/assets/LogoutActionButton-BeDw8qfE.js b/assets/LogoutActionButton-Bb9kSxNr.js similarity index 94% rename from assets/LogoutActionButton-BeDw8qfE.js rename to assets/LogoutActionButton-Bb9kSxNr.js index 14faa80b38901db3f3615298847589ffc71224a9..1e5bef08558e364f2fa7bdce6da217998e5d1da4 100644 --- a/assets/LogoutActionButton-BeDw8qfE.js +++ b/assets/LogoutActionButton-Bb9kSxNr.js @@ -1,4 +1,4 @@ -import{e,m as r,n as l}from"./index-Dl2Y5a7s.js";import{j as t}from"./vendor-react-B4AQeu28.js";import{L as n}from"./log-out-wnJ21BJr.js";/** +import{e,m as r,n as l}from"./index-pcr0VEFr.js";import{j as t}from"./vendor-react-B4AQeu28.js";import{L as n}from"./log-out-CXrb7Klg.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/ModuleFolderCard-C1jLEevg.js b/assets/ModuleFolderCard-C2bCHQpq.js similarity index 97% rename from assets/ModuleFolderCard-C1jLEevg.js rename to assets/ModuleFolderCard-C2bCHQpq.js index ec41ad44d6daa19fa36de622c9418966da96be5f..f566d15c875795534c4a2f5422e4a5ec18d1a4a3 100644 --- a/assets/ModuleFolderCard-C1jLEevg.js +++ b/assets/ModuleFolderCard-C2bCHQpq.js @@ -1,4 +1,4 @@ -import{j as e}from"./vendor-react-B4AQeu28.js";import{u}from"./useSubjectAvailability-DLIjLCt1.js";import{e as w,m as f,a as j,x as v,L as y}from"./index-Dl2Y5a7s.js";import{C as k}from"./clock-Dcq6nfrf.js";/** +import{j as e}from"./vendor-react-B4AQeu28.js";import{u}from"./useSubjectAvailability-CRpOB4yl.js";import{e as w,m as f,a as j,x as v,L as y}from"./index-pcr0VEFr.js";import{C as k}from"./clock-BUvVFwS_.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/ModulesPage-CGi0VHmG.js b/assets/ModulesPage-D50pSjZj.js similarity index 99% rename from assets/ModulesPage-CGi0VHmG.js rename to assets/ModulesPage-D50pSjZj.js index b770bb7d450c3ceae8a77e5e370810369d0bb392..d53cd77305461a3a29f055a4ce6c6b5a3e1e9de6 100644 --- a/assets/ModulesPage-CGi0VHmG.js +++ b/assets/ModulesPage-D50pSjZj.js @@ -1,5 +1,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-core-whx8i25I.js"])))=>i.map(i=>d[i]); -import{r as s,j as e,b as Ct,d as Te,c as aa}from"./vendor-react-B4AQeu28.js";import{u as ra}from"./useQuery-B50cnw-J.js";import{getDoc as Kt,doc as zt,onSnapshot as ts,runTransaction as la,serverTimestamp as na,query as ia,where as oa,collection as ca}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{e as oe,m as S,Z as rt,C as Nt,h as tt,X as qs,M as da,b as bt,T as At,q as it,a5 as ss,R as Hs,E as Bt,_ as as,v as qt,I as ma,N as xa,u as Ht,A as Pt,a as Je,n as It,x as Os,ab as hs,ac as ua,ad as fs,ae as pa,p as Qs,af as ha,L as Ws,g as ct,B as fa,ag as ba,ah as ga,ai as Us,aj as wa,ak as ya,al as ja,a9 as va,w as Na,am as bs,an as ka,ao as gs,G as Ca,j as Mt,a7 as Sa,aa as za}from"./index-Dl2Y5a7s.js";import{M as Zt}from"./ModuleFolderCard-C1jLEevg.js";import{B as Fe}from"./button-pKF8t5En.js";import rs from"./ScientificCalculator-BQeFLSJX.js";import{C as Dt}from"./check-BoG998GJ.js";import{X as et}from"./x-wHRRR-gQ.js";import{V as Ft,a as $t,M as ls,b as ns}from"./volume-x-Cd_Nj-77.js";import{C as Rt}from"./chevron-left-BLeucdCi.js";import{C as qe}from"./chevron-right-D8o3zg2m.js";import{C as Gs}from"./circle-help-7egOqUPg.js";import{P as Xs,A as Jt,b as es,c as Ma,L as _a}from"./quizService-C2o983YM.js";import{C as ot}from"./circle-check-big-D4jhmnoW.js";import{logLessonView as Aa}from"./trackingService-D8Xl_0W8.js";import{C as St}from"./clock-Dcq6nfrf.js";import{C as Ea}from"./clipboard-check-CVikGlbr.js";import{s as Gt,S as ws}from"./subjects-DcwoUK34.js";import{C as Vs}from"./circle-check-OLox8hf3.js";import{C as Ta}from"./chart-column-CaIU59ve.js";import{D as Pa}from"./dollar-sign-CJnvMNrk.js";import{triggerQuizSubmitted as La}from"./automationService-D0yPPxhq.js";import ys from"./confetti.module-C94ZD2ww.js";import{u as Ia}from"./useCurriculum-DnU6Jf3F.js";import{S as Da}from"./search-D5s5o6Cr.js";import{F as Fa}from"./funnel-C3sJcU2r.js";import{S as $a}from"./sparkles-DXDpj3ao.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./useSubjectAvailability-DLIjLCt1.js";import"./chevron-up-bHLZImYg.js";/** +import{r as s,j as e,b as Ct,d as Te,c as aa}from"./vendor-react-B4AQeu28.js";import{u as ra}from"./useQuery-BbNTyvNN.js";import{getDoc as Kt,doc as zt,onSnapshot as ts,runTransaction as la,serverTimestamp as na,query as ia,where as oa,collection as ca}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{e as oe,m as S,Z as rt,C as Nt,h as tt,X as qs,M as da,b as bt,T as At,q as it,a5 as ss,R as Hs,E as Bt,_ as as,v as qt,I as ma,N as xa,u as Ht,A as Pt,a as Je,n as It,x as Os,ab as hs,ac as ua,ad as fs,ae as pa,p as Qs,af as ha,L as Ws,g as ct,B as fa,ag as ba,ah as ga,ai as Us,aj as wa,ak as ya,al as ja,a9 as va,w as Na,am as bs,an as ka,ao as gs,G as Ca,j as Mt,a7 as Sa,aa as za}from"./index-pcr0VEFr.js";import{M as Zt}from"./ModuleFolderCard-C2bCHQpq.js";import{B as Fe}from"./button-AeTtN-Gk.js";import rs from"./ScientificCalculator-7T0QjPrs.js";import{C as Dt}from"./check-DcmcqBba.js";import{X as et}from"./x-W9f2bIhn.js";import{V as Ft,a as $t,M as ls,b as ns}from"./volume-x-Bg34ud3a.js";import{C as Rt}from"./chevron-left-DV53pVuv.js";import{C as qe}from"./chevron-right-BMVCfzLO.js";import{C as Gs}from"./circle-help-DA-BsSug.js";import{P as Xs,A as Jt,b as es,c as Ma,L as _a}from"./quizService-oId-3Lm2.js";import{C as ot}from"./circle-check-big-C3Ampp76.js";import{logLessonView as Aa}from"./trackingService-DVTIYmY9.js";import{C as St}from"./clock-BUvVFwS_.js";import{C as Ea}from"./clipboard-check-CrnXJj6c.js";import{s as Gt,S as ws}from"./subjects-DsVN1z_r.js";import{C as Vs}from"./circle-check-DWLljvZa.js";import{C as Ta}from"./chart-column-BNfaspCb.js";import{D as Pa}from"./dollar-sign-CsIn4CzM.js";import{triggerQuizSubmitted as La}from"./automationService-wHepcbie.js";import ys from"./confetti.module-C94ZD2ww.js";import{u as Ia}from"./useCurriculum-0U0j41i7.js";import{S as Da}from"./search-NTEnzRsF.js";import{F as Fa}from"./funnel-qr3WhEld.js";import{S as $a}from"./sparkles-CcaVyiD_.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./useSubjectAvailability-CRpOB4yl.js";import"./chevron-up-D_gmtVKu.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/NotificationDropdown-CwrXQKJ9.js b/assets/NotificationDropdown-5cx88QEU.js similarity index 94% rename from assets/NotificationDropdown-CwrXQKJ9.js rename to assets/NotificationDropdown-5cx88QEU.js index 694579d8895d352c80b077d99e8af9f4862bcbad..562e3455a805b3c95ba690592abf06dd7d14d1ff 100644 --- a/assets/NotificationDropdown-CwrXQKJ9.js +++ b/assets/NotificationDropdown-5cx88QEU.js @@ -1,4 +1,4 @@ -import{e as a,D as b,u as N,h as w,m as y,b as j,U as k}from"./index-Dl2Y5a7s.js";import{r as _,j as e}from"./vendor-react-B4AQeu28.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import{C as g,f as v}from"./formatDistanceToNow-E-4T8g7c.js";import{B as n}from"./bell-D8HSQb3o.js";import{C}from"./circle-check-OLox8hf3.js";import{C as A}from"./circle-alert-CmKGy6F7.js";import{S as M}from"./sparkles-DXDpj3ao.js";/** +import{e as a,D as b,u as N,h as w,m as y,b as j,U as k}from"./index-pcr0VEFr.js";import{r as _,j as e}from"./vendor-react-B4AQeu28.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import{C as g,f as v}from"./formatDistanceToNow-rY3oGFbJ.js";import{B as n}from"./bell-t5TgufAG.js";import{C}from"./circle-check-DWLljvZa.js";import{C as A}from"./circle-alert-BVTBnraV.js";import{S as M}from"./sparkles-CcaVyiD_.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/ProfileModal-Cqe9yb5X.js b/assets/ProfileModal-CMm42gXn.js similarity index 96% rename from assets/ProfileModal-Cqe9yb5X.js rename to assets/ProfileModal-CMm42gXn.js index 4887bee6c5549f5ec3c9153b338f531a005e6093..82e9e883f98916751597853317a7362341234beb 100644 --- a/assets/ProfileModal-Cqe9yb5X.js +++ b/assets/ProfileModal-CMm42gXn.js @@ -1,4 +1,4 @@ -import{r,j as e}from"./vendor-react-B4AQeu28.js";import{e as R,h as U,m as k,U as u,A as x,a as w,F as _,$ as D,aJ as T,aS as B,j as $}from"./index-Dl2Y5a7s.js";import{B as b}from"./button-pKF8t5En.js";import{I as d}from"./input-DghAGnRL.js";import{S as q,a as G,c as V,d as p}from"./select-DStldRhf.js";import{P as X,M as z,V as C}from"./ProfilePictureUploader-5SyI9dXS.js";import{X as Y}from"./x-wHRRR-gQ.js";import{M as H}from"./mail-BNL7x2CT.js";import{C as L}from"./circle-help-7egOqUPg.js";import{S as J}from"./save-BkInuCbo.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chevron-up-bHLZImYg.js";import"./check-BoG998GJ.js";import"./minus-BUZ8QSLu.js";import"./plus-CrmryN2j.js";import"./upload-C4j9TBDs.js";/** +import{r,j as e}from"./vendor-react-B4AQeu28.js";import{e as R,h as U,m as k,U as u,A as x,a as w,F as _,$ as D,aJ as T,aS as B,j as $}from"./index-pcr0VEFr.js";import{B as b}from"./button-AeTtN-Gk.js";import{I as d}from"./input-DfDzuOXr.js";import{S as q,a as G,c as V,d as p}from"./select-Dgzk2zFj.js";import{P as X,M as z,V as C}from"./ProfilePictureUploader-Bce8Kzgs.js";import{X as Y}from"./x-W9f2bIhn.js";import{M as H}from"./mail-C-ekjMP7.js";import{C as L}from"./circle-help-DA-BsSug.js";import{S as J}from"./save-UTAW-exi.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chevron-up-D_gmtVKu.js";import"./check-DcmcqBba.js";import"./minus-Br3D3UVG.js";import"./plus-dU-HIq9R.js";import"./upload-BDJuFJqK.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/ProfilePictureUploader-5SyI9dXS.js b/assets/ProfilePictureUploader-Bce8Kzgs.js similarity index 98% rename from assets/ProfilePictureUploader-5SyI9dXS.js rename to assets/ProfilePictureUploader-Bce8Kzgs.js index ca663e3b32c6b9e26a2aa07a36cd721aa57f5a78..43e7efd8bf677ababd06e4e7516ab4d58f1145ae 100644 --- a/assets/ProfilePictureUploader-5SyI9dXS.js +++ b/assets/ProfilePictureUploader-Bce8Kzgs.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/index-Dl2Y5a7s.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-ZLSkO1Xv.css"])))=>i.map(i=>d[i]); -import{e as V,n as B,N as K,_ as $,b1 as ge,b2 as we,u as xe,Q as ye,V as be,W as Ce,h as Pe,m as J,j as Q}from"./index-Dl2Y5a7s.js";import{g as Re,r as x,j as p}from"./vendor-react-B4AQeu28.js";import{_ as Ee,o as b,p as Se,q as _e,r as ze,s as De}from"./vendor-radix-BPuEd8FG.js";import{B as ee}from"./button-pKF8t5En.js";import{updateProfile as Me}from"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-core-whx8i25I.js";import{r as Ae,u as Te,a as Ne}from"./vendor-firebase-storage-Ct9KPL22.js";import{X as je}from"./x-wHRRR-gQ.js";import{M as Ue}from"./minus-BUZ8QSLu.js";import{P as Fe}from"./plus-CrmryN2j.js";import{U as Ie}from"./upload-C4j9TBDs.js";/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/index-pcr0VEFr.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-Bm8ni9Xq.css"])))=>i.map(i=>d[i]); +import{e as V,n as B,N as K,_ as $,b1 as ge,b2 as we,u as xe,Q as ye,V as be,W as Ce,h as Pe,m as J,j as Q}from"./index-pcr0VEFr.js";import{g as Re,r as x,j as p}from"./vendor-react-B4AQeu28.js";import{_ as Ee,o as b,p as Se,q as _e,r as ze,s as De}from"./vendor-radix-BPuEd8FG.js";import{B as ee}from"./button-AeTtN-Gk.js";import{updateProfile as Me}from"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-core-whx8i25I.js";import{r as Ae,u as Te,a as Ne}from"./vendor-firebase-storage-Ct9KPL22.js";import{X as je}from"./x-W9f2bIhn.js";import{M as Ue}from"./minus-Br3D3UVG.js";import{P as Fe}from"./plus-dU-HIq9R.js";import{U as Ie}from"./upload-BDJuFJqK.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. @@ -107,4 +107,4 @@ import{e as V,n as B,N as K,_ as $,b1 as ge,b2 as we,u as xe,Q as ye,V as be,W a border-left: 0; border-right: 0; } -`,nt=1,at=3,st=1,ct=(function(a){Ee(o,a);function o(){var e=a!==null&&a.apply(this,arguments)||this;return e.cropperRef=x.createRef(),e.imageRef=x.createRef(),e.videoRef=x.createRef(),e.containerPosition={x:0,y:0},e.containerRef=null,e.styleRef=null,e.containerRect=null,e.mediaSize={width:0,height:0,naturalWidth:0,naturalHeight:0},e.dragStartPosition={x:0,y:0},e.dragStartCrop={x:0,y:0},e.gestureZoomStart=0,e.gestureRotationStart=0,e.isTouching=!1,e.lastPinchDistance=0,e.lastPinchRotation=0,e.rafDragTimeout=null,e.rafPinchTimeout=null,e.wheelTimer=null,e.currentDoc=typeof document<"u"?document:null,e.currentWindow=typeof window<"u"?window:null,e.resizeObserver=null,e.previousCropSize=null,e.isInitialized=!1,e.state={cropSize:null,hasWheelJustStarted:!1,mediaObjectFit:void 0},e.initResizeObserver=function(){if(!(typeof window.ResizeObserver>"u"||!e.containerRef)){var t=!0;e.resizeObserver=new window.ResizeObserver(function(r){if(t){t=!1;return}e.computeSizes()}),e.resizeObserver.observe(e.containerRef)}},e.preventZoomSafari=function(t){return t.preventDefault()},e.cleanEvents=function(){e.currentDoc&&(e.currentDoc.removeEventListener("mousemove",e.onMouseMove),e.currentDoc.removeEventListener("mouseup",e.onDragStopped),e.currentDoc.removeEventListener("touchmove",e.onTouchMove),e.currentDoc.removeEventListener("touchend",e.onDragStopped),e.currentDoc.removeEventListener("gesturechange",e.onGestureChange),e.currentDoc.removeEventListener("gestureend",e.onGestureEnd),e.currentDoc.removeEventListener("scroll",e.onScroll))},e.clearScrollEvent=function(){e.containerRef&&e.containerRef.removeEventListener("wheel",e.onWheel),e.wheelTimer&&clearTimeout(e.wheelTimer)},e.onMediaLoad=function(){var t=e.computeSizes();t&&(e.previousCropSize=t,e.emitCropData(),e.setInitialCrop(t),e.isInitialized=!0),e.props.onMediaLoaded&&e.props.onMediaLoaded(e.mediaSize)},e.setInitialCrop=function(t){if(e.props.initialCroppedAreaPercentages){var r=et(e.props.initialCroppedAreaPercentages,e.mediaSize,e.props.rotation,t,e.props.minZoom,e.props.maxZoom),i=r.crop,n=r.zoom;e.props.onCropChange(i),e.props.onZoomChange&&e.props.onZoomChange(n)}else if(e.props.initialCroppedAreaPixels){var s=rt(e.props.initialCroppedAreaPixels,e.mediaSize,e.props.rotation,t,e.props.minZoom,e.props.maxZoom),i=s.crop,n=s.zoom;e.props.onCropChange(i),e.props.onZoomChange&&e.props.onZoomChange(n)}},e.computeSizes=function(){var t,r,i,n,s,c,l=e.imageRef.current||e.videoRef.current;if(l&&e.containerRef){e.containerRect=e.containerRef.getBoundingClientRect(),e.saveContainerPosition();var u=e.containerRect.width/e.containerRect.height,h=((t=e.imageRef.current)===null||t===void 0?void 0:t.naturalWidth)||((r=e.videoRef.current)===null||r===void 0?void 0:r.videoWidth)||0,d=((i=e.imageRef.current)===null||i===void 0?void 0:i.naturalHeight)||((n=e.videoRef.current)===null||n===void 0?void 0:n.videoHeight)||0,m=l.offsetWidthw?{width:e.containerRect.height*w,height:e.containerRect.height}:{width:e.containerRect.width,height:e.containerRect.width/w};break;case"horizontal-cover":v={width:e.containerRect.width,height:e.containerRect.width/w};break;case"vertical-cover":v={width:e.containerRect.height*w,height:e.containerRect.height};break}else v={width:l.offsetWidth,height:l.offsetHeight};e.mediaSize=b(b({},v),{naturalWidth:h,naturalHeight:d}),e.props.setMediaSize&&e.props.setMediaSize(e.mediaSize);var f=e.props.cropSize?e.props.cropSize:Xe(e.mediaSize.width,e.mediaSize.height,e.containerRect.width,e.containerRect.height,e.props.aspect,e.props.rotation);return(((s=e.state.cropSize)===null||s===void 0?void 0:s.height)!==f.height||((c=e.state.cropSize)===null||c===void 0?void 0:c.width)!==f.width)&&e.props.onCropSizeChange&&e.props.onCropSizeChange(f),e.setState({cropSize:f},e.recomputeCropPosition),e.props.setCropSize&&e.props.setCropSize(f),f}},e.saveContainerPosition=function(){if(e.containerRef){var t=e.containerRef.getBoundingClientRect();e.containerPosition={x:t.left,y:t.top}}},e.onMouseDown=function(t){e.currentDoc&&(t.preventDefault(),e.currentDoc.addEventListener("mousemove",e.onMouseMove),e.currentDoc.addEventListener("mouseup",e.onDragStopped),e.saveContainerPosition(),e.onDragStart(o.getMousePoint(t)))},e.onMouseMove=function(t){return e.onDrag(o.getMousePoint(t))},e.onScroll=function(t){e.currentDoc&&(t.preventDefault(),e.saveContainerPosition())},e.onTouchStart=function(t){e.currentDoc&&(e.isTouching=!0,!(e.props.onTouchRequest&&!e.props.onTouchRequest(t))&&(e.currentDoc.addEventListener("touchmove",e.onTouchMove,{passive:!1}),e.currentDoc.addEventListener("touchend",e.onDragStopped),e.saveContainerPosition(),t.touches.length===2?e.onPinchStart(t):t.touches.length===1&&e.onDragStart(o.getTouchPoint(t.touches[0]))))},e.onTouchMove=function(t){t.preventDefault(),t.touches.length===2?e.onPinchMove(t):t.touches.length===1&&e.onDrag(o.getTouchPoint(t.touches[0]))},e.onGestureStart=function(t){e.currentDoc&&(t.preventDefault(),e.currentDoc.addEventListener("gesturechange",e.onGestureChange),e.currentDoc.addEventListener("gestureend",e.onGestureEnd),e.gestureZoomStart=e.props.zoom,e.gestureRotationStart=e.props.rotation)},e.onGestureChange=function(t){if(t.preventDefault(),!e.isTouching){var r=o.getMousePoint(t),i=e.gestureZoomStart-1+t.scale;if(e.setNewZoom(i,r,{shouldUpdatePosition:!0}),e.props.onRotationChange){var n=e.gestureRotationStart+t.rotation;e.props.onRotationChange(n)}}},e.onGestureEnd=function(t){e.cleanEvents()},e.onDragStart=function(t){var r,i,n=t.x,s=t.y;e.dragStartPosition={x:n,y:s},e.dragStartCrop=b({},e.props.crop),(i=(r=e.props).onInteractionStart)===null||i===void 0||i.call(r)},e.onDrag=function(t){var r=t.x,i=t.y;e.currentWindow&&(e.rafDragTimeout&&e.currentWindow.cancelAnimationFrame(e.rafDragTimeout),e.rafDragTimeout=e.currentWindow.requestAnimationFrame(function(){if(e.state.cropSize&&!(r===void 0||i===void 0)){var n=r-e.dragStartPosition.x,s=i-e.dragStartPosition.y,c={x:e.dragStartCrop.x+n,y:e.dragStartCrop.y+s},l=e.props.restrictPosition?N(c,e.mediaSize,e.state.cropSize,e.props.zoom,e.props.rotation):c;e.props.onCropChange(l)}}))},e.onDragStopped=function(){var t,r;e.isTouching=!1,e.cleanEvents(),e.emitCropData(),(r=(t=e.props).onInteractionEnd)===null||r===void 0||r.call(t)},e.onWheel=function(t){if(e.currentWindow&&!(e.props.onWheelRequest&&!e.props.onWheelRequest(t))){t.preventDefault();var r=o.getMousePoint(t),i=Ye(t).pixelY,n=e.props.zoom-i*e.props.zoomSpeed/200;e.setNewZoom(n,r,{shouldUpdatePosition:!0}),e.state.hasWheelJustStarted||e.setState({hasWheelJustStarted:!0},function(){var s,c;return(c=(s=e.props).onInteractionStart)===null||c===void 0?void 0:c.call(s)}),e.wheelTimer&&clearTimeout(e.wheelTimer),e.wheelTimer=e.currentWindow.setTimeout(function(){return e.setState({hasWheelJustStarted:!1},function(){var s,c;return(c=(s=e.props).onInteractionEnd)===null||c===void 0?void 0:c.call(s)})},250)}},e.getPointOnContainer=function(t,r){var i=t.x,n=t.y;if(!e.containerRect)throw new Error("The Cropper is not mounted");return{x:e.containerRect.width/2-(i-r.x),y:e.containerRect.height/2-(n-r.y)}},e.getPointOnMedia=function(t){var r=t.x,i=t.y,n=e.props,s=n.crop,c=n.zoom;return{x:(r+s.x)/c,y:(i+s.y)/c}},e.setNewZoom=function(t,r,i){var n=i===void 0?{}:i,s=n.shouldUpdatePosition,c=s===void 0?!0:s;if(!(!e.state.cropSize||!e.props.onZoomChange)){var l=O(t,e.props.minZoom,e.props.maxZoom);if(c){var u=e.getPointOnContainer(r,e.containerPosition),h=e.getPointOnMedia(u),d={x:h.x*l-u.x,y:h.y*l-u.y},m=e.props.restrictPosition?N(d,e.mediaSize,e.state.cropSize,l,e.props.rotation):d;e.props.onCropChange(m)}e.props.onZoomChange(l)}},e.getCropData=function(){if(!e.state.cropSize)return null;var t=e.props.restrictPosition?N(e.props.crop,e.mediaSize,e.state.cropSize,e.props.zoom,e.props.rotation):e.props.crop;return Ke(t,e.mediaSize,e.state.cropSize,e.getAspect(),e.props.zoom,e.props.rotation,e.props.restrictPosition)},e.emitCropData=function(){var t=e.getCropData();if(t){var r=t.croppedAreaPercentages,i=t.croppedAreaPixels;e.props.onCropComplete&&e.props.onCropComplete(r,i),e.props.onCropAreaChange&&e.props.onCropAreaChange(r,i)}},e.emitCropAreaChange=function(){var t=e.getCropData();if(t){var r=t.croppedAreaPercentages,i=t.croppedAreaPixels;e.props.onCropAreaChange&&e.props.onCropAreaChange(r,i)}},e.recomputeCropPosition=function(){var t,r;if(e.state.cropSize){var i=e.props.crop;if(e.isInitialized&&(!((t=e.previousCropSize)===null||t===void 0)&&t.width)&&(!((r=e.previousCropSize)===null||r===void 0)&&r.height)){var n=Math.abs(e.previousCropSize.width-e.state.cropSize.width)>1e-6||Math.abs(e.previousCropSize.height-e.state.cropSize.height)>1e-6;if(n){var s=e.state.cropSize.width/e.previousCropSize.width,c=e.state.cropSize.height/e.previousCropSize.height;i={x:e.props.crop.x*s,y:e.props.crop.y*c}}}var l=e.props.restrictPosition?N(i,e.mediaSize,e.state.cropSize,e.props.zoom,e.props.rotation):i;e.previousCropSize=e.state.cropSize,e.props.onCropChange(l),e.emitCropData()}},e.onKeyDown=function(t){var r,i,n=e.props,s=n.crop,c=n.onCropChange,l=n.keyboardStep,u=n.zoom,h=n.rotation,d=l;if(e.state.cropSize){t.shiftKey&&(d*=.2);var m=b({},s);switch(t.key){case"ArrowUp":m.y-=d,t.preventDefault();break;case"ArrowDown":m.y+=d,t.preventDefault();break;case"ArrowLeft":m.x-=d,t.preventDefault();break;case"ArrowRight":m.x+=d,t.preventDefault();break;default:return}e.props.restrictPosition&&(m=N(m,e.mediaSize,e.state.cropSize,u,h)),t.repeat||(i=(r=e.props).onInteractionStart)===null||i===void 0||i.call(r),c(m)}},e.onKeyUp=function(t){var r,i;switch(t.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":t.preventDefault();break;default:return}e.emitCropData(),(i=(r=e.props).onInteractionEnd)===null||i===void 0||i.call(r)},e}return o.prototype.componentDidMount=function(){!this.currentDoc||!this.currentWindow||(this.containerRef&&(this.containerRef.ownerDocument&&(this.currentDoc=this.containerRef.ownerDocument),this.currentDoc.defaultView&&(this.currentWindow=this.currentDoc.defaultView),this.initResizeObserver(),typeof window.ResizeObserver>"u"&&this.currentWindow.addEventListener("resize",this.computeSizes),this.props.zoomWithScroll&&this.containerRef.addEventListener("wheel",this.onWheel,{passive:!1}),this.containerRef.addEventListener("gesturestart",this.onGestureStart)),this.currentDoc.addEventListener("scroll",this.onScroll),this.props.disableAutomaticStylesInjection||(this.styleRef=this.currentDoc.createElement("style"),this.styleRef.setAttribute("type","text/css"),this.props.nonce&&this.styleRef.setAttribute("nonce",this.props.nonce),this.styleRef.innerHTML=it,this.currentDoc.head.appendChild(this.styleRef)),this.imageRef.current&&this.imageRef.current.complete&&this.onMediaLoad(),this.props.setImageRef&&this.props.setImageRef(this.imageRef),this.props.setVideoRef&&this.props.setVideoRef(this.videoRef),this.props.setCropperRef&&this.props.setCropperRef(this.cropperRef))},o.prototype.componentWillUnmount=function(){var e,t;!this.currentDoc||!this.currentWindow||(typeof window.ResizeObserver>"u"&&this.currentWindow.removeEventListener("resize",this.computeSizes),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),this.containerRef&&this.containerRef.removeEventListener("gesturestart",this.preventZoomSafari),this.styleRef&&((t=this.styleRef.parentNode)===null||t===void 0||t.removeChild(this.styleRef)),this.cleanEvents(),this.props.zoomWithScroll&&this.clearScrollEvent())},o.prototype.componentDidUpdate=function(e){var t,r,i,n,s,c,l,u,h;e.rotation!==this.props.rotation?(this.computeSizes(),this.recomputeCropPosition()):e.aspect!==this.props.aspect?this.computeSizes():e.objectFit!==this.props.objectFit?this.computeSizes():e.zoom!==this.props.zoom?this.recomputeCropPosition():((t=e.cropSize)===null||t===void 0?void 0:t.height)!==((r=this.props.cropSize)===null||r===void 0?void 0:r.height)||((i=e.cropSize)===null||i===void 0?void 0:i.width)!==((n=this.props.cropSize)===null||n===void 0?void 0:n.width)?this.computeSizes():(((s=e.crop)===null||s===void 0?void 0:s.x)!==((c=this.props.crop)===null||c===void 0?void 0:c.x)||((l=e.crop)===null||l===void 0?void 0:l.y)!==((u=this.props.crop)===null||u===void 0?void 0:u.y))&&this.emitCropAreaChange(),e.zoomWithScroll!==this.props.zoomWithScroll&&this.containerRef&&(this.props.zoomWithScroll?this.containerRef.addEventListener("wheel",this.onWheel,{passive:!1}):this.clearScrollEvent()),e.video!==this.props.video&&((h=this.videoRef.current)===null||h===void 0||h.load());var d=this.getObjectFit();d!==this.state.mediaObjectFit&&this.setState({mediaObjectFit:d},this.computeSizes)},o.prototype.getAspect=function(){var e=this.props,t=e.cropSize,r=e.aspect;return t?t.width/t.height:r},o.prototype.getObjectFit=function(){var e,t,r,i;if(this.props.objectFit==="cover"){var n=this.imageRef.current||this.videoRef.current;if(n&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect();var s=this.containerRect.width/this.containerRect.height,c=((e=this.imageRef.current)===null||e===void 0?void 0:e.naturalWidth)||((t=this.videoRef.current)===null||t===void 0?void 0:t.videoWidth)||0,l=((r=this.imageRef.current)===null||r===void 0?void 0:r.naturalHeight)||((i=this.videoRef.current)===null||i===void 0?void 0:i.videoHeight)||0,u=c/l;return uArray.isArray(e)?e:Array.isArray(o)?o:[t,r],[e,o,t,r]);return p.jsxs(Se,{"data-slot":"slider",defaultValue:o,value:e,min:t,max:r,className:B("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",a),...i,children:[p.jsx(_e,{"data-slot":"slider-track",className:B("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),children:p.jsx(ze,{"data-slot":"slider-range",className:B("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:n.length},(s,c)=>p.jsx(De,{"data-slot":"slider-thumb",className:"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"},c))]})}const de=["image/png","image/jpeg","image/webp"],he=2*1024*1024,fe=256,ut=a=>{const o=a.normalize("NFKD").toLowerCase(),e=o.lastIndexOf("."),t=e>0?o.slice(0,e):o,r=e>0?o.slice(e).replace(/[^.a-z0-9]/g,""):"";return`${t.replace(/[^a-z0-9]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"profile-picture"}${r}`},pt=(a,o,e=Date.now())=>`profile-pictures/${a}/${e}-${ut(o)}`,me=a=>de.includes(a.type)?a.size>he?"Profile pictures must be 2MB or smaller.":a.name.trim()?null:"Please choose a valid image file.":"Only PNG, JPEG, and WebP images are allowed.",dt=a=>new Promise((o,e)=>{const t=URL.createObjectURL(a),r=new Image,i=setTimeout(()=>{URL.revokeObjectURL(t),e(new Error("Image loading timed out. Please try a different file."))},15e3);r.onload=()=>{clearTimeout(i),URL.revokeObjectURL(t),o(r)},r.onerror=()=>{clearTimeout(i),URL.revokeObjectURL(t),e(new Error("Unable to read the selected image. Please try another file."))},r.crossOrigin="anonymous",r.src=t}),ue=(a,o,e)=>new Promise((t,r)=>{a.toBlob(i=>{if(!i){r(new Error("Failed to prepare the image for upload."));return}t(i)},o,e)}),ht=async(a,o=fe)=>{const e=await dt(a),t=document.createElement("canvas");t.width=o,t.height=o;const r=t.getContext("2d");if(!r)throw new Error("Your browser cannot process image uploads right now.");const i=e.naturalWidth||e.width,n=e.naturalHeight||e.height,s=Math.min(i,n),c=Math.max(0,(i-s)/2),l=Math.max(0,(n-s)/2);r.clearRect(0,0,o,o),r.drawImage(e,c,l,s,s,0,0,o,o);try{return await ue(t,"image/webp",.9)}catch{return await ue(t,"image/jpeg",.9)}},j=(a,o,e)=>{let t;const r=new Promise((i,n)=>{t=setTimeout(()=>n(new Error(`${e} timed out after ${Math.round(o/1e3)}s`)),o)});return Promise.race([a,r]).finally(()=>clearTimeout(t))},ft=async(a,o,e)=>{const t=we.options.projectId;if(!t)throw new Error("Firebase project ID is not configured.");const r=await a.getIdToken(),i=`https://firestore.googleapis.com/v1/projects/${t}/databases/(default)/documents/users/${o}?updateMask.fieldPaths=photo&updateMask.fieldPaths=updatedAt`,n=await fetch(i,{method:"PATCH",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({fields:{photo:{stringValue:e},updatedAt:{timestampValue:new Date().toISOString()}}})});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(`Firestore REST update failed (${n.status}): ${s}`)}},mt=async({file:a,uid:o,currentUser:e=K.currentUser,syncFirestore:t=!0})=>{const r=me(a);if(r)throw new Error(r);const i=e??K.currentUser;if(!i)throw new Error("You need to be signed in to change your profile picture.");const n=o||i.uid;if(!n)throw new Error("Unable to determine which profile should be updated.");if(i.uid!==n)throw new Error("The signed-in user does not match the profile being edited.");const s=await j(ht(a,fe),2e4,"Image processing"),c=pt(n,a.name),l=Ae(ge,c),u=await j(Te(l,s,{contentType:s.type||"image/webp",cacheControl:"public, max-age=31536000, immutable"}),3e4,"Storage upload"),h=await j(Ne(u.ref),1e4,"Download URL retrieval");try{await j(Me(i,{photoURL:h}),1e4,"Auth profile update")}catch(d){console.warn("[PROFILE UPLOAD] Auth profile update failed (non-fatal):",d)}if(t){try{await j(ft(i,n,h),1e4,"Firestore profile sync")}catch(d){console.error("[PROFILE UPLOAD] Firestore REST sync failed:",d),console.warn("[PROFILE UPLOAD] Photo was uploaded but the database record may be stale. It will refresh on next login.")}try{const{doc:d,updateDoc:m}=await $(async()=>{const{doc:v,updateDoc:f}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{doc:v,updateDoc:f}},__vite__mapDeps([0,1])),{db:w}=await $(async()=>{const{db:v}=await import("./index-Dl2Y5a7s.js").then(f=>f.b5);return{db:v}},__vite__mapDeps([2,3,0,1,4,5,6,7,8,9,10,11]));await m(d(w,"leaderboard",n),{photo:h}).catch(()=>$(async()=>{const{setDoc:v}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{setDoc:v}},__vite__mapDeps([0,1])).then(({setDoc:v})=>v(d(w,"leaderboard",n),{photo:h},{merge:!0})))}catch{}}return h},vt=a=>`${(a/(1024*1024)).toFixed(1)} MB`,gt=a=>{const o=(a||"").trim();return o?o.split(/\s+/).slice(0,2).map(e=>e[0]?.toUpperCase()).join(""):"U"},wt=a=>new Promise((o,e)=>{const t=new Image;t.onload=()=>o(t),t.onerror=()=>e(new Error("Unable to load the image for cropping.")),t.src=a}),pe=(a,o,e)=>new Promise((t,r)=>{a.toBlob(i=>{if(!i){r(new Error("Failed to prepare the cropped image."));return}t(i)},o,e)}),xt=async(a,o,e)=>{const t=await wt(a),r=document.createElement("canvas"),i=640;r.width=i,r.height=i;const n=r.getContext("2d");if(!n)throw new Error("Your browser cannot process the selected image right now.");n.clearRect(0,0,i,i),n.drawImage(t,o.x,o.y,o.width,o.height,0,0,i,i);let s;try{s=await pe(r,"image/webp",.92)}catch{s=await pe(r,"image/jpeg",.92)}if(!s)throw new Error("Could not create an image from the cropped area.");const c=s.type==="image/webp"?"webp":"jpg",u=`${e.name.replace(/\.[^/.]+$/,"")||"profile-picture"}-cropped.${c}`;return new File([s],u,{type:s.type,lastModified:Date.now()})},Nt=({uid:a,photoURL:o,displayName:e,className:t="",onUploaded:r,syncFirestore:i=!0})=>{const{currentUser:n,refreshProfile:s}=xe(),[c,l]=x.useState(null),[u,h]=x.useState(null),[d,m]=x.useState({x:0,y:0}),[w,v]=x.useState(1),[f,R]=x.useState(null),[y,g]=x.useState(""),[E,_]=x.useState(!1),P=x.useRef(null);x.useEffect(()=>{if(!c){h(null);return}const C=URL.createObjectURL(c);return h(C),()=>URL.revokeObjectURL(C)},[c]);const W=u||o||"",k=x.useMemo(()=>`${de.map(S=>S.replace("image/","").toUpperCase()).join(", ")} up to ${vt(he)}. The image will be cropped to a circular avatar.`,[]),D=()=>{l(null),m({x:0,y:0}),v(1),R(null),g(""),P.current&&(P.current.value="")},z=C=>{const S=C.target.files?.[0]||null;if(!S)return;const M=me(S);if(M){g(M),l(null),C.target.value="";return}g(""),l(S),m({x:0,y:0}),v(1),R(null)},T=async()=>{if(!c){g("Choose an image before saving.");return}_(!0),g("");const C=6e4;let S;try{const M=(async()=>{const I=u&&f?await xt(u,f,c):c,Z=a||n?.uid;return mt({file:I,uid:Z,currentUser:n,syncFirestore:i})})(),F=new Promise((I,Z)=>{S=setTimeout(()=>Z(new Error("Upload timed out. Please check your connection and try again.")),C)}),ve=await Promise.race([M,F]);r?.(ve),s().catch(I=>console.warn("[ProfilePictureUploader] refreshProfile failed:",I)),Q.success("Profile picture updated."),D()}catch(M){const F=M instanceof Error?M.message:"Failed to update your profile picture.";g(F),Q.error(F)}finally{clearTimeout(S),_(!1)}},U=()=>{P.current?.click()};return p.jsxs(p.Fragment,{children:[p.jsxs("section",{className:`flex items-center gap-4 rounded-xl border border-slate-200 bg-white p-4 shadow-sm ${t}`,children:[p.jsxs("div",{className:"relative cursor-pointer group",onClick:U,role:"button",tabIndex:0,onKeyDown:C=>C.key==="Enter"&&U(),"aria-label":"Change profile picture",children:[p.jsxs(ye,{className:"size-16 sm:size-20 ring-4 ring-sky-50 shadow-sm transition-transform duration-200 group-hover:scale-105",children:[p.jsx(be,{src:W,alt:`${e||"User"} profile picture`}),p.jsx(Ce,{className:"bg-gradient-to-br from-sky-600 to-cyan-500 text-lg font-semibold text-white",children:gt(e)})]}),p.jsx("span",{className:"absolute -right-1 -top-1 inline-flex items-center justify-center rounded-full bg-slate-900 p-1.5 text-white shadow-md transition-colors group-hover:bg-slate-700",children:p.jsx(Oe,{size:14})})]}),p.jsxs("div",{className:"space-y-1 flex-1",children:[p.jsx("p",{className:"text-sm font-semibold text-slate-900",children:"Profile picture"}),p.jsx("p",{className:"text-xs text-slate-500",children:"Click your avatar to upload a new photo."}),y&&p.jsx("p",{className:"text-xs font-medium text-rose-600 mt-1",children:y})]}),p.jsx("input",{ref:P,type:"file",accept:"image/*",onChange:z,className:"sr-only","aria-label":"Choose profile picture"})]}),p.jsx(Pe,{children:u&&p.jsxs(p.Fragment,{children:[p.jsx(J.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-black/60 backdrop-blur-sm z-[60]",onClick:D}),p.jsx(J.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{type:"spring",duration:.5,bounce:.3},className:"fixed inset-0 z-[60] flex items-center justify-center p-4 sm:p-6",onClick:C=>C.stopPropagation(),children:p.jsxs("div",{className:"bg-white rounded-2xl shadow-xl w-full max-w-lg overflow-hidden flex flex-col",children:[p.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-slate-100",children:[p.jsx("h3",{className:"text-lg font-bold text-slate-900",children:"Update profile picture"}),p.jsx("button",{onClick:D,className:"p-2 text-slate-400 hover:text-slate-600 hover:bg-slate-100 rounded-full transition-colors","aria-label":"Close modal",children:p.jsx(je,{size:20})})]}),p.jsxs("div",{className:"p-4 sm:p-6 bg-slate-50 flex flex-col items-center",children:[p.jsx("div",{className:"relative h-[350px] sm:h-[450px] w-[350px] sm:w-[450px] mx-auto overflow-hidden rounded-xl bg-slate-100 ring-1 ring-inset ring-slate-200 shadow-inner",children:p.jsx(ct,{image:u,crop:d,zoom:w,aspect:1,cropShape:"round",showGrid:!1,objectFit:"cover",restrictPosition:!0,onCropChange:m,onZoomChange:v,onCropComplete:(C,S)=>R(S),style:{containerStyle:{backgroundColor:"#f8fafc"}}})}),p.jsxs("div",{className:"mt-6 w-full max-w-xs flex items-center gap-4",children:[p.jsx(Ue,{size:18,className:"text-slate-500"}),p.jsx(lt,{value:[w],min:1,max:3,step:.05,onValueChange:C=>v(C[0]||1),"aria-label":"Profile picture zoom",className:"flex-1 cursor-pointer"}),p.jsx(Fe,{size:18,className:"text-slate-500"})]}),p.jsx("p",{className:"mt-4 text-xs text-slate-500 text-center",children:k})]}),p.jsxs("div",{className:"p-4 border-t border-slate-100 flex items-center justify-end gap-3 bg-white",children:[p.jsx(ee,{type:"button",variant:"ghost",onClick:D,disabled:E,className:"font-medium text-slate-600 hover:text-slate-900 hover:bg-slate-100 px-5",children:"Cancel"}),p.jsx(ee,{type:"button",onClick:T,disabled:E||!c,className:"bg-sky-600 hover:bg-sky-700 text-white min-w-[120px] gap-2 shadow-sm",children:E?p.jsxs(p.Fragment,{children:[p.jsx(Ie,{size:16,className:"animate-pulse"}),"Saving..."]}):"Save picture"})]})]})})]})})]})};export{At as M,Nt as P,Tt as V}; +`,nt=1,at=3,st=1,ct=(function(a){Ee(o,a);function o(){var e=a!==null&&a.apply(this,arguments)||this;return e.cropperRef=x.createRef(),e.imageRef=x.createRef(),e.videoRef=x.createRef(),e.containerPosition={x:0,y:0},e.containerRef=null,e.styleRef=null,e.containerRect=null,e.mediaSize={width:0,height:0,naturalWidth:0,naturalHeight:0},e.dragStartPosition={x:0,y:0},e.dragStartCrop={x:0,y:0},e.gestureZoomStart=0,e.gestureRotationStart=0,e.isTouching=!1,e.lastPinchDistance=0,e.lastPinchRotation=0,e.rafDragTimeout=null,e.rafPinchTimeout=null,e.wheelTimer=null,e.currentDoc=typeof document<"u"?document:null,e.currentWindow=typeof window<"u"?window:null,e.resizeObserver=null,e.previousCropSize=null,e.isInitialized=!1,e.state={cropSize:null,hasWheelJustStarted:!1,mediaObjectFit:void 0},e.initResizeObserver=function(){if(!(typeof window.ResizeObserver>"u"||!e.containerRef)){var t=!0;e.resizeObserver=new window.ResizeObserver(function(r){if(t){t=!1;return}e.computeSizes()}),e.resizeObserver.observe(e.containerRef)}},e.preventZoomSafari=function(t){return t.preventDefault()},e.cleanEvents=function(){e.currentDoc&&(e.currentDoc.removeEventListener("mousemove",e.onMouseMove),e.currentDoc.removeEventListener("mouseup",e.onDragStopped),e.currentDoc.removeEventListener("touchmove",e.onTouchMove),e.currentDoc.removeEventListener("touchend",e.onDragStopped),e.currentDoc.removeEventListener("gesturechange",e.onGestureChange),e.currentDoc.removeEventListener("gestureend",e.onGestureEnd),e.currentDoc.removeEventListener("scroll",e.onScroll))},e.clearScrollEvent=function(){e.containerRef&&e.containerRef.removeEventListener("wheel",e.onWheel),e.wheelTimer&&clearTimeout(e.wheelTimer)},e.onMediaLoad=function(){var t=e.computeSizes();t&&(e.previousCropSize=t,e.emitCropData(),e.setInitialCrop(t),e.isInitialized=!0),e.props.onMediaLoaded&&e.props.onMediaLoaded(e.mediaSize)},e.setInitialCrop=function(t){if(e.props.initialCroppedAreaPercentages){var r=et(e.props.initialCroppedAreaPercentages,e.mediaSize,e.props.rotation,t,e.props.minZoom,e.props.maxZoom),i=r.crop,n=r.zoom;e.props.onCropChange(i),e.props.onZoomChange&&e.props.onZoomChange(n)}else if(e.props.initialCroppedAreaPixels){var s=rt(e.props.initialCroppedAreaPixels,e.mediaSize,e.props.rotation,t,e.props.minZoom,e.props.maxZoom),i=s.crop,n=s.zoom;e.props.onCropChange(i),e.props.onZoomChange&&e.props.onZoomChange(n)}},e.computeSizes=function(){var t,r,i,n,s,c,l=e.imageRef.current||e.videoRef.current;if(l&&e.containerRef){e.containerRect=e.containerRef.getBoundingClientRect(),e.saveContainerPosition();var u=e.containerRect.width/e.containerRect.height,h=((t=e.imageRef.current)===null||t===void 0?void 0:t.naturalWidth)||((r=e.videoRef.current)===null||r===void 0?void 0:r.videoWidth)||0,d=((i=e.imageRef.current)===null||i===void 0?void 0:i.naturalHeight)||((n=e.videoRef.current)===null||n===void 0?void 0:n.videoHeight)||0,m=l.offsetWidthw?{width:e.containerRect.height*w,height:e.containerRect.height}:{width:e.containerRect.width,height:e.containerRect.width/w};break;case"horizontal-cover":v={width:e.containerRect.width,height:e.containerRect.width/w};break;case"vertical-cover":v={width:e.containerRect.height*w,height:e.containerRect.height};break}else v={width:l.offsetWidth,height:l.offsetHeight};e.mediaSize=b(b({},v),{naturalWidth:h,naturalHeight:d}),e.props.setMediaSize&&e.props.setMediaSize(e.mediaSize);var f=e.props.cropSize?e.props.cropSize:Xe(e.mediaSize.width,e.mediaSize.height,e.containerRect.width,e.containerRect.height,e.props.aspect,e.props.rotation);return(((s=e.state.cropSize)===null||s===void 0?void 0:s.height)!==f.height||((c=e.state.cropSize)===null||c===void 0?void 0:c.width)!==f.width)&&e.props.onCropSizeChange&&e.props.onCropSizeChange(f),e.setState({cropSize:f},e.recomputeCropPosition),e.props.setCropSize&&e.props.setCropSize(f),f}},e.saveContainerPosition=function(){if(e.containerRef){var t=e.containerRef.getBoundingClientRect();e.containerPosition={x:t.left,y:t.top}}},e.onMouseDown=function(t){e.currentDoc&&(t.preventDefault(),e.currentDoc.addEventListener("mousemove",e.onMouseMove),e.currentDoc.addEventListener("mouseup",e.onDragStopped),e.saveContainerPosition(),e.onDragStart(o.getMousePoint(t)))},e.onMouseMove=function(t){return e.onDrag(o.getMousePoint(t))},e.onScroll=function(t){e.currentDoc&&(t.preventDefault(),e.saveContainerPosition())},e.onTouchStart=function(t){e.currentDoc&&(e.isTouching=!0,!(e.props.onTouchRequest&&!e.props.onTouchRequest(t))&&(e.currentDoc.addEventListener("touchmove",e.onTouchMove,{passive:!1}),e.currentDoc.addEventListener("touchend",e.onDragStopped),e.saveContainerPosition(),t.touches.length===2?e.onPinchStart(t):t.touches.length===1&&e.onDragStart(o.getTouchPoint(t.touches[0]))))},e.onTouchMove=function(t){t.preventDefault(),t.touches.length===2?e.onPinchMove(t):t.touches.length===1&&e.onDrag(o.getTouchPoint(t.touches[0]))},e.onGestureStart=function(t){e.currentDoc&&(t.preventDefault(),e.currentDoc.addEventListener("gesturechange",e.onGestureChange),e.currentDoc.addEventListener("gestureend",e.onGestureEnd),e.gestureZoomStart=e.props.zoom,e.gestureRotationStart=e.props.rotation)},e.onGestureChange=function(t){if(t.preventDefault(),!e.isTouching){var r=o.getMousePoint(t),i=e.gestureZoomStart-1+t.scale;if(e.setNewZoom(i,r,{shouldUpdatePosition:!0}),e.props.onRotationChange){var n=e.gestureRotationStart+t.rotation;e.props.onRotationChange(n)}}},e.onGestureEnd=function(t){e.cleanEvents()},e.onDragStart=function(t){var r,i,n=t.x,s=t.y;e.dragStartPosition={x:n,y:s},e.dragStartCrop=b({},e.props.crop),(i=(r=e.props).onInteractionStart)===null||i===void 0||i.call(r)},e.onDrag=function(t){var r=t.x,i=t.y;e.currentWindow&&(e.rafDragTimeout&&e.currentWindow.cancelAnimationFrame(e.rafDragTimeout),e.rafDragTimeout=e.currentWindow.requestAnimationFrame(function(){if(e.state.cropSize&&!(r===void 0||i===void 0)){var n=r-e.dragStartPosition.x,s=i-e.dragStartPosition.y,c={x:e.dragStartCrop.x+n,y:e.dragStartCrop.y+s},l=e.props.restrictPosition?N(c,e.mediaSize,e.state.cropSize,e.props.zoom,e.props.rotation):c;e.props.onCropChange(l)}}))},e.onDragStopped=function(){var t,r;e.isTouching=!1,e.cleanEvents(),e.emitCropData(),(r=(t=e.props).onInteractionEnd)===null||r===void 0||r.call(t)},e.onWheel=function(t){if(e.currentWindow&&!(e.props.onWheelRequest&&!e.props.onWheelRequest(t))){t.preventDefault();var r=o.getMousePoint(t),i=Ye(t).pixelY,n=e.props.zoom-i*e.props.zoomSpeed/200;e.setNewZoom(n,r,{shouldUpdatePosition:!0}),e.state.hasWheelJustStarted||e.setState({hasWheelJustStarted:!0},function(){var s,c;return(c=(s=e.props).onInteractionStart)===null||c===void 0?void 0:c.call(s)}),e.wheelTimer&&clearTimeout(e.wheelTimer),e.wheelTimer=e.currentWindow.setTimeout(function(){return e.setState({hasWheelJustStarted:!1},function(){var s,c;return(c=(s=e.props).onInteractionEnd)===null||c===void 0?void 0:c.call(s)})},250)}},e.getPointOnContainer=function(t,r){var i=t.x,n=t.y;if(!e.containerRect)throw new Error("The Cropper is not mounted");return{x:e.containerRect.width/2-(i-r.x),y:e.containerRect.height/2-(n-r.y)}},e.getPointOnMedia=function(t){var r=t.x,i=t.y,n=e.props,s=n.crop,c=n.zoom;return{x:(r+s.x)/c,y:(i+s.y)/c}},e.setNewZoom=function(t,r,i){var n=i===void 0?{}:i,s=n.shouldUpdatePosition,c=s===void 0?!0:s;if(!(!e.state.cropSize||!e.props.onZoomChange)){var l=O(t,e.props.minZoom,e.props.maxZoom);if(c){var u=e.getPointOnContainer(r,e.containerPosition),h=e.getPointOnMedia(u),d={x:h.x*l-u.x,y:h.y*l-u.y},m=e.props.restrictPosition?N(d,e.mediaSize,e.state.cropSize,l,e.props.rotation):d;e.props.onCropChange(m)}e.props.onZoomChange(l)}},e.getCropData=function(){if(!e.state.cropSize)return null;var t=e.props.restrictPosition?N(e.props.crop,e.mediaSize,e.state.cropSize,e.props.zoom,e.props.rotation):e.props.crop;return Ke(t,e.mediaSize,e.state.cropSize,e.getAspect(),e.props.zoom,e.props.rotation,e.props.restrictPosition)},e.emitCropData=function(){var t=e.getCropData();if(t){var r=t.croppedAreaPercentages,i=t.croppedAreaPixels;e.props.onCropComplete&&e.props.onCropComplete(r,i),e.props.onCropAreaChange&&e.props.onCropAreaChange(r,i)}},e.emitCropAreaChange=function(){var t=e.getCropData();if(t){var r=t.croppedAreaPercentages,i=t.croppedAreaPixels;e.props.onCropAreaChange&&e.props.onCropAreaChange(r,i)}},e.recomputeCropPosition=function(){var t,r;if(e.state.cropSize){var i=e.props.crop;if(e.isInitialized&&(!((t=e.previousCropSize)===null||t===void 0)&&t.width)&&(!((r=e.previousCropSize)===null||r===void 0)&&r.height)){var n=Math.abs(e.previousCropSize.width-e.state.cropSize.width)>1e-6||Math.abs(e.previousCropSize.height-e.state.cropSize.height)>1e-6;if(n){var s=e.state.cropSize.width/e.previousCropSize.width,c=e.state.cropSize.height/e.previousCropSize.height;i={x:e.props.crop.x*s,y:e.props.crop.y*c}}}var l=e.props.restrictPosition?N(i,e.mediaSize,e.state.cropSize,e.props.zoom,e.props.rotation):i;e.previousCropSize=e.state.cropSize,e.props.onCropChange(l),e.emitCropData()}},e.onKeyDown=function(t){var r,i,n=e.props,s=n.crop,c=n.onCropChange,l=n.keyboardStep,u=n.zoom,h=n.rotation,d=l;if(e.state.cropSize){t.shiftKey&&(d*=.2);var m=b({},s);switch(t.key){case"ArrowUp":m.y-=d,t.preventDefault();break;case"ArrowDown":m.y+=d,t.preventDefault();break;case"ArrowLeft":m.x-=d,t.preventDefault();break;case"ArrowRight":m.x+=d,t.preventDefault();break;default:return}e.props.restrictPosition&&(m=N(m,e.mediaSize,e.state.cropSize,u,h)),t.repeat||(i=(r=e.props).onInteractionStart)===null||i===void 0||i.call(r),c(m)}},e.onKeyUp=function(t){var r,i;switch(t.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":t.preventDefault();break;default:return}e.emitCropData(),(i=(r=e.props).onInteractionEnd)===null||i===void 0||i.call(r)},e}return o.prototype.componentDidMount=function(){!this.currentDoc||!this.currentWindow||(this.containerRef&&(this.containerRef.ownerDocument&&(this.currentDoc=this.containerRef.ownerDocument),this.currentDoc.defaultView&&(this.currentWindow=this.currentDoc.defaultView),this.initResizeObserver(),typeof window.ResizeObserver>"u"&&this.currentWindow.addEventListener("resize",this.computeSizes),this.props.zoomWithScroll&&this.containerRef.addEventListener("wheel",this.onWheel,{passive:!1}),this.containerRef.addEventListener("gesturestart",this.onGestureStart)),this.currentDoc.addEventListener("scroll",this.onScroll),this.props.disableAutomaticStylesInjection||(this.styleRef=this.currentDoc.createElement("style"),this.styleRef.setAttribute("type","text/css"),this.props.nonce&&this.styleRef.setAttribute("nonce",this.props.nonce),this.styleRef.innerHTML=it,this.currentDoc.head.appendChild(this.styleRef)),this.imageRef.current&&this.imageRef.current.complete&&this.onMediaLoad(),this.props.setImageRef&&this.props.setImageRef(this.imageRef),this.props.setVideoRef&&this.props.setVideoRef(this.videoRef),this.props.setCropperRef&&this.props.setCropperRef(this.cropperRef))},o.prototype.componentWillUnmount=function(){var e,t;!this.currentDoc||!this.currentWindow||(typeof window.ResizeObserver>"u"&&this.currentWindow.removeEventListener("resize",this.computeSizes),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),this.containerRef&&this.containerRef.removeEventListener("gesturestart",this.preventZoomSafari),this.styleRef&&((t=this.styleRef.parentNode)===null||t===void 0||t.removeChild(this.styleRef)),this.cleanEvents(),this.props.zoomWithScroll&&this.clearScrollEvent())},o.prototype.componentDidUpdate=function(e){var t,r,i,n,s,c,l,u,h;e.rotation!==this.props.rotation?(this.computeSizes(),this.recomputeCropPosition()):e.aspect!==this.props.aspect?this.computeSizes():e.objectFit!==this.props.objectFit?this.computeSizes():e.zoom!==this.props.zoom?this.recomputeCropPosition():((t=e.cropSize)===null||t===void 0?void 0:t.height)!==((r=this.props.cropSize)===null||r===void 0?void 0:r.height)||((i=e.cropSize)===null||i===void 0?void 0:i.width)!==((n=this.props.cropSize)===null||n===void 0?void 0:n.width)?this.computeSizes():(((s=e.crop)===null||s===void 0?void 0:s.x)!==((c=this.props.crop)===null||c===void 0?void 0:c.x)||((l=e.crop)===null||l===void 0?void 0:l.y)!==((u=this.props.crop)===null||u===void 0?void 0:u.y))&&this.emitCropAreaChange(),e.zoomWithScroll!==this.props.zoomWithScroll&&this.containerRef&&(this.props.zoomWithScroll?this.containerRef.addEventListener("wheel",this.onWheel,{passive:!1}):this.clearScrollEvent()),e.video!==this.props.video&&((h=this.videoRef.current)===null||h===void 0||h.load());var d=this.getObjectFit();d!==this.state.mediaObjectFit&&this.setState({mediaObjectFit:d},this.computeSizes)},o.prototype.getAspect=function(){var e=this.props,t=e.cropSize,r=e.aspect;return t?t.width/t.height:r},o.prototype.getObjectFit=function(){var e,t,r,i;if(this.props.objectFit==="cover"){var n=this.imageRef.current||this.videoRef.current;if(n&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect();var s=this.containerRect.width/this.containerRect.height,c=((e=this.imageRef.current)===null||e===void 0?void 0:e.naturalWidth)||((t=this.videoRef.current)===null||t===void 0?void 0:t.videoWidth)||0,l=((r=this.imageRef.current)===null||r===void 0?void 0:r.naturalHeight)||((i=this.videoRef.current)===null||i===void 0?void 0:i.videoHeight)||0,u=c/l;return uArray.isArray(e)?e:Array.isArray(o)?o:[t,r],[e,o,t,r]);return p.jsxs(Se,{"data-slot":"slider",defaultValue:o,value:e,min:t,max:r,className:B("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",a),...i,children:[p.jsx(_e,{"data-slot":"slider-track",className:B("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),children:p.jsx(ze,{"data-slot":"slider-range",className:B("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:n.length},(s,c)=>p.jsx(De,{"data-slot":"slider-thumb",className:"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"},c))]})}const de=["image/png","image/jpeg","image/webp"],he=2*1024*1024,fe=256,ut=a=>{const o=a.normalize("NFKD").toLowerCase(),e=o.lastIndexOf("."),t=e>0?o.slice(0,e):o,r=e>0?o.slice(e).replace(/[^.a-z0-9]/g,""):"";return`${t.replace(/[^a-z0-9]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"profile-picture"}${r}`},pt=(a,o,e=Date.now())=>`profile-pictures/${a}/${e}-${ut(o)}`,me=a=>de.includes(a.type)?a.size>he?"Profile pictures must be 2MB or smaller.":a.name.trim()?null:"Please choose a valid image file.":"Only PNG, JPEG, and WebP images are allowed.",dt=a=>new Promise((o,e)=>{const t=URL.createObjectURL(a),r=new Image,i=setTimeout(()=>{URL.revokeObjectURL(t),e(new Error("Image loading timed out. Please try a different file."))},15e3);r.onload=()=>{clearTimeout(i),URL.revokeObjectURL(t),o(r)},r.onerror=()=>{clearTimeout(i),URL.revokeObjectURL(t),e(new Error("Unable to read the selected image. Please try another file."))},r.crossOrigin="anonymous",r.src=t}),ue=(a,o,e)=>new Promise((t,r)=>{a.toBlob(i=>{if(!i){r(new Error("Failed to prepare the image for upload."));return}t(i)},o,e)}),ht=async(a,o=fe)=>{const e=await dt(a),t=document.createElement("canvas");t.width=o,t.height=o;const r=t.getContext("2d");if(!r)throw new Error("Your browser cannot process image uploads right now.");const i=e.naturalWidth||e.width,n=e.naturalHeight||e.height,s=Math.min(i,n),c=Math.max(0,(i-s)/2),l=Math.max(0,(n-s)/2);r.clearRect(0,0,o,o),r.drawImage(e,c,l,s,s,0,0,o,o);try{return await ue(t,"image/webp",.9)}catch{return await ue(t,"image/jpeg",.9)}},j=(a,o,e)=>{let t;const r=new Promise((i,n)=>{t=setTimeout(()=>n(new Error(`${e} timed out after ${Math.round(o/1e3)}s`)),o)});return Promise.race([a,r]).finally(()=>clearTimeout(t))},ft=async(a,o,e)=>{const t=we.options.projectId;if(!t)throw new Error("Firebase project ID is not configured.");const r=await a.getIdToken(),i=`https://firestore.googleapis.com/v1/projects/${t}/databases/(default)/documents/users/${o}?updateMask.fieldPaths=photo&updateMask.fieldPaths=updatedAt`,n=await fetch(i,{method:"PATCH",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({fields:{photo:{stringValue:e},updatedAt:{timestampValue:new Date().toISOString()}}})});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(`Firestore REST update failed (${n.status}): ${s}`)}},mt=async({file:a,uid:o,currentUser:e=K.currentUser,syncFirestore:t=!0})=>{const r=me(a);if(r)throw new Error(r);const i=e??K.currentUser;if(!i)throw new Error("You need to be signed in to change your profile picture.");const n=o||i.uid;if(!n)throw new Error("Unable to determine which profile should be updated.");if(i.uid!==n)throw new Error("The signed-in user does not match the profile being edited.");const s=await j(ht(a,fe),2e4,"Image processing"),c=pt(n,a.name),l=Ae(ge,c),u=await j(Te(l,s,{contentType:s.type||"image/webp",cacheControl:"public, max-age=31536000, immutable"}),3e4,"Storage upload"),h=await j(Ne(u.ref),1e4,"Download URL retrieval");try{await j(Me(i,{photoURL:h}),1e4,"Auth profile update")}catch(d){console.warn("[PROFILE UPLOAD] Auth profile update failed (non-fatal):",d)}if(t){try{await j(ft(i,n,h),1e4,"Firestore profile sync")}catch(d){console.error("[PROFILE UPLOAD] Firestore REST sync failed:",d),console.warn("[PROFILE UPLOAD] Photo was uploaded but the database record may be stale. It will refresh on next login.")}try{const{doc:d,updateDoc:m}=await $(async()=>{const{doc:v,updateDoc:f}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{doc:v,updateDoc:f}},__vite__mapDeps([0,1])),{db:w}=await $(async()=>{const{db:v}=await import("./index-pcr0VEFr.js").then(f=>f.b5);return{db:v}},__vite__mapDeps([2,3,0,1,4,5,6,7,8,9,10,11]));await m(d(w,"leaderboard",n),{photo:h}).catch(()=>$(async()=>{const{setDoc:v}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{setDoc:v}},__vite__mapDeps([0,1])).then(({setDoc:v})=>v(d(w,"leaderboard",n),{photo:h},{merge:!0})))}catch{}}return h},vt=a=>`${(a/(1024*1024)).toFixed(1)} MB`,gt=a=>{const o=(a||"").trim();return o?o.split(/\s+/).slice(0,2).map(e=>e[0]?.toUpperCase()).join(""):"U"},wt=a=>new Promise((o,e)=>{const t=new Image;t.onload=()=>o(t),t.onerror=()=>e(new Error("Unable to load the image for cropping.")),t.src=a}),pe=(a,o,e)=>new Promise((t,r)=>{a.toBlob(i=>{if(!i){r(new Error("Failed to prepare the cropped image."));return}t(i)},o,e)}),xt=async(a,o,e)=>{const t=await wt(a),r=document.createElement("canvas"),i=640;r.width=i,r.height=i;const n=r.getContext("2d");if(!n)throw new Error("Your browser cannot process the selected image right now.");n.clearRect(0,0,i,i),n.drawImage(t,o.x,o.y,o.width,o.height,0,0,i,i);let s;try{s=await pe(r,"image/webp",.92)}catch{s=await pe(r,"image/jpeg",.92)}if(!s)throw new Error("Could not create an image from the cropped area.");const c=s.type==="image/webp"?"webp":"jpg",u=`${e.name.replace(/\.[^/.]+$/,"")||"profile-picture"}-cropped.${c}`;return new File([s],u,{type:s.type,lastModified:Date.now()})},Nt=({uid:a,photoURL:o,displayName:e,className:t="",onUploaded:r,syncFirestore:i=!0})=>{const{currentUser:n,refreshProfile:s}=xe(),[c,l]=x.useState(null),[u,h]=x.useState(null),[d,m]=x.useState({x:0,y:0}),[w,v]=x.useState(1),[f,R]=x.useState(null),[y,g]=x.useState(""),[E,_]=x.useState(!1),P=x.useRef(null);x.useEffect(()=>{if(!c){h(null);return}const C=URL.createObjectURL(c);return h(C),()=>URL.revokeObjectURL(C)},[c]);const W=u||o||"",k=x.useMemo(()=>`${de.map(S=>S.replace("image/","").toUpperCase()).join(", ")} up to ${vt(he)}. The image will be cropped to a circular avatar.`,[]),D=()=>{l(null),m({x:0,y:0}),v(1),R(null),g(""),P.current&&(P.current.value="")},z=C=>{const S=C.target.files?.[0]||null;if(!S)return;const M=me(S);if(M){g(M),l(null),C.target.value="";return}g(""),l(S),m({x:0,y:0}),v(1),R(null)},T=async()=>{if(!c){g("Choose an image before saving.");return}_(!0),g("");const C=6e4;let S;try{const M=(async()=>{const I=u&&f?await xt(u,f,c):c,Z=a||n?.uid;return mt({file:I,uid:Z,currentUser:n,syncFirestore:i})})(),F=new Promise((I,Z)=>{S=setTimeout(()=>Z(new Error("Upload timed out. Please check your connection and try again.")),C)}),ve=await Promise.race([M,F]);r?.(ve),s().catch(I=>console.warn("[ProfilePictureUploader] refreshProfile failed:",I)),Q.success("Profile picture updated."),D()}catch(M){const F=M instanceof Error?M.message:"Failed to update your profile picture.";g(F),Q.error(F)}finally{clearTimeout(S),_(!1)}},U=()=>{P.current?.click()};return p.jsxs(p.Fragment,{children:[p.jsxs("section",{className:`flex items-center gap-4 rounded-xl border border-slate-200 bg-white p-4 shadow-sm ${t}`,children:[p.jsxs("div",{className:"relative cursor-pointer group",onClick:U,role:"button",tabIndex:0,onKeyDown:C=>C.key==="Enter"&&U(),"aria-label":"Change profile picture",children:[p.jsxs(ye,{className:"size-16 sm:size-20 ring-4 ring-sky-50 shadow-sm transition-transform duration-200 group-hover:scale-105",children:[p.jsx(be,{src:W,alt:`${e||"User"} profile picture`}),p.jsx(Ce,{className:"bg-gradient-to-br from-sky-600 to-cyan-500 text-lg font-semibold text-white",children:gt(e)})]}),p.jsx("span",{className:"absolute -right-1 -top-1 inline-flex items-center justify-center rounded-full bg-slate-900 p-1.5 text-white shadow-md transition-colors group-hover:bg-slate-700",children:p.jsx(Oe,{size:14})})]}),p.jsxs("div",{className:"space-y-1 flex-1",children:[p.jsx("p",{className:"text-sm font-semibold text-slate-900",children:"Profile picture"}),p.jsx("p",{className:"text-xs text-slate-500",children:"Click your avatar to upload a new photo."}),y&&p.jsx("p",{className:"text-xs font-medium text-rose-600 mt-1",children:y})]}),p.jsx("input",{ref:P,type:"file",accept:"image/*",onChange:z,className:"sr-only","aria-label":"Choose profile picture"})]}),p.jsx(Pe,{children:u&&p.jsxs(p.Fragment,{children:[p.jsx(J.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-black/60 backdrop-blur-sm z-[60]",onClick:D}),p.jsx(J.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{type:"spring",duration:.5,bounce:.3},className:"fixed inset-0 z-[60] flex items-center justify-center p-4 sm:p-6",onClick:C=>C.stopPropagation(),children:p.jsxs("div",{className:"bg-white rounded-2xl shadow-xl w-full max-w-lg overflow-hidden flex flex-col",children:[p.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-slate-100",children:[p.jsx("h3",{className:"text-lg font-bold text-slate-900",children:"Update profile picture"}),p.jsx("button",{onClick:D,className:"p-2 text-slate-400 hover:text-slate-600 hover:bg-slate-100 rounded-full transition-colors","aria-label":"Close modal",children:p.jsx(je,{size:20})})]}),p.jsxs("div",{className:"p-4 sm:p-6 bg-slate-50 flex flex-col items-center",children:[p.jsx("div",{className:"relative h-[350px] sm:h-[450px] w-[350px] sm:w-[450px] mx-auto overflow-hidden rounded-xl bg-slate-100 ring-1 ring-inset ring-slate-200 shadow-inner",children:p.jsx(ct,{image:u,crop:d,zoom:w,aspect:1,cropShape:"round",showGrid:!1,objectFit:"cover",restrictPosition:!0,onCropChange:m,onZoomChange:v,onCropComplete:(C,S)=>R(S),style:{containerStyle:{backgroundColor:"#f8fafc"}}})}),p.jsxs("div",{className:"mt-6 w-full max-w-xs flex items-center gap-4",children:[p.jsx(Ue,{size:18,className:"text-slate-500"}),p.jsx(lt,{value:[w],min:1,max:3,step:.05,onValueChange:C=>v(C[0]||1),"aria-label":"Profile picture zoom",className:"flex-1 cursor-pointer"}),p.jsx(Fe,{size:18,className:"text-slate-500"})]}),p.jsx("p",{className:"mt-4 text-xs text-slate-500 text-center",children:k})]}),p.jsxs("div",{className:"p-4 border-t border-slate-100 flex items-center justify-end gap-3 bg-white",children:[p.jsx(ee,{type:"button",variant:"ghost",onClick:D,disabled:E,className:"font-medium text-slate-600 hover:text-slate-900 hover:bg-slate-100 px-5",children:"Cancel"}),p.jsx(ee,{type:"button",onClick:T,disabled:E||!c,className:"bg-sky-600 hover:bg-sky-700 text-white min-w-[120px] gap-2 shadow-sm",children:E?p.jsxs(p.Fragment,{children:[p.jsx(Ie,{size:16,className:"animate-pulse"}),"Saving..."]}):"Save picture"})]})]})})]})})]})};export{At as M,Nt as P,Tt as V}; diff --git a/assets/QuizBattlePage-Dsgg_cNb.js b/assets/QuizBattlePage-BFiR3wAo.js similarity index 99% rename from assets/QuizBattlePage-Dsgg_cNb.js rename to assets/QuizBattlePage-BFiR3wAo.js index 763d00ecd30391cbee3c26e5f1774a814ed986ea..bf3ad50bece93d0fc1bd1691588db99c540b256e 100644 --- a/assets/QuizBattlePage-Dsgg_cNb.js +++ b/assets/QuizBattlePage-BFiR3wAo.js @@ -1,4 +1,4 @@ -import{e as ma,n as u,m as y,g as et,aK as De,N as st,aL as Q,X as $a,q as St,M as Oa,I as Te,U as ge,h as Ze,p as Ke,u as Ha,_ as Va,a0 as gt,a5 as wt,E as Kt,a4 as Jt}from"./index-Dl2Y5a7s.js";import{r as i,j as e,d as Mt}from"./vendor-react-B4AQeu28.js";import{q as vt}from"./quiz_battle_avatar-BXHPSput.js";import{g as Ua,s as ea}from"./subjects-DcwoUK34.js";import{doc as Wa,getDoc as Ya,where as ta,orderBy as xa,limit as At,getDocs as zt,query as Ct,collection as It}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{a4 as q,a5 as pa,a6 as ha,a7 as _e,a8 as Xa}from"./vendor-firebase-core-whx8i25I.js";import{B as A}from"./button-pKF8t5En.js";import{e as Ga,f as Za}from"./vendor-radix-BPuEd8FG.js";import{S as Me,a as Fe,b as Ee,c as Re,d as de}from"./select-DStldRhf.js";import{I as Ka}from"./input-DghAGnRL.js";import{S as Ja}from"./switch-B8xho0UQ.js";import{S as xe}from"./skeleton-CWsSRCwx.js";import{V as ba,a as fa,M as es,b as ts}from"./volume-x-Cd_Nj-77.js";import{C as as}from"./CompositeAvatar-Col05lJc.js";import{S as Je}from"./sparkles-DXDpj3ao.js";import{C as jt}from"./check-BoG998GJ.js";import{H as ss,C as aa}from"./history-C0vXaWOF.js";import{C as Ue}from"./chevron-right-D8o3zg2m.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chart-column-CaIU59ve.js";import"./chevron-up-bHLZImYg.js";import"./avatarData-BuQSOXo3.js";/** +import{e as ma,n as u,m as y,g as et,aK as De,N as st,aL as Q,X as $a,q as St,M as Oa,I as Te,U as ge,h as Ze,p as Ke,u as Ha,_ as Va,a0 as gt,a5 as wt,E as Kt,a4 as Jt}from"./index-pcr0VEFr.js";import{r as i,j as e,d as Mt}from"./vendor-react-B4AQeu28.js";import{q as vt}from"./quiz_battle_avatar-BXHPSput.js";import{g as Ua,s as ea}from"./subjects-DsVN1z_r.js";import{doc as Wa,getDoc as Ya,where as ta,orderBy as xa,limit as At,getDocs as zt,query as Ct,collection as It}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{a4 as q,a5 as pa,a6 as ha,a7 as _e,a8 as Xa}from"./vendor-firebase-core-whx8i25I.js";import{B as A}from"./button-AeTtN-Gk.js";import{e as Ga,f as Za}from"./vendor-radix-BPuEd8FG.js";import{S as Me,a as Fe,b as Ee,c as Re,d as de}from"./select-Dgzk2zFj.js";import{I as Ka}from"./input-DfDzuOXr.js";import{S as Ja}from"./switch-VziX97fW.js";import{S as xe}from"./skeleton-DLZLprS1.js";import{V as ba,a as fa,M as es,b as ts}from"./volume-x-Bg34ud3a.js";import{C as as}from"./CompositeAvatar-Col05lJc.js";import{S as Je}from"./sparkles-CcaVyiD_.js";import{C as jt}from"./check-DcmcqBba.js";import{H as ss,C as aa}from"./history-CQZVqTob.js";import{C as Ue}from"./chevron-right-BMVCfzLO.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chart-column-BNfaspCb.js";import"./chevron-up-D_gmtVKu.js";import"./avatarData-BuQSOXo3.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/RewardsModal-DHn4d03T.js b/assets/RewardsModal-DhmptbGU.js similarity index 99% rename from assets/RewardsModal-DHn4d03T.js rename to assets/RewardsModal-DhmptbGU.js index 00060f750ad51e2ddaa263275b41ef0b8adce333..bc5f0362897b8c2ad7dcd3f4f9e062b7d731e614 100644 --- a/assets/RewardsModal-DHn4d03T.js +++ b/assets/RewardsModal-DhmptbGU.js @@ -1 +1 @@ -import{r as i,j as e}from"./vendor-react-B4AQeu28.js";import{getDoc as F,doc as S}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{aO as g,A as u,aP as U,aQ as P,U as $,F as B,i as I,z as R,$ as q,T as j,aR as T,a4 as N,R as L,S as M,a0 as X,X as v,a5 as w,B as G,Z as H,q as Q,E as Z,G as O,a as V,aI as W,g as J}from"./index-Dl2Y5a7s.js";import{X as K}from"./x-wHRRR-gQ.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const Y={BookOpen:V,GraduationCap:O,Trophy:Z,Target:Q,Zap:H,Brain:G,Star:w,Flame:v,Swords:X,Shield:M,RefreshCw:L,Crown:N,Sun:T,TrendingUp:j,Globe:q,User:R,UserPlus:I,Calendar:B,Users:$,Compass:P,Heart:U,Award:u},me=({isOpen:o,onClose:c,userLevel:n,currentXP:x,xpToNextLevel:m,totalXP:p,userId:d})=>{const[y,b]=i.useState(!0),[k,_]=i.useState(new Set),[E,C]=i.useState({});i.useEffect(()=>{if(!o||!d)return;(async()=>{b(!0);try{const t=await W(d);_(new Set(t.map(a=>a.id)));const l=await F(S(J,"progress",d));l.exists()&&C(l.data())}catch(t){console.error("Error loading achievements:",t)}finally{b(!1)}})()},[o,d]);const D=s=>{const{condition:t,threshold:l}=s,a=E;let r=0,f=l??1;switch(t){case"lesson_complete":r=a.totalLessonsCompleted||0;break;case"quiz_complete":r=a.totalQuizzesCompleted||0;break;case"battle_win":case"battle_undefeated":r=a.battleWins||0;break;case"mastery_10":case"social_streak_30":case"social_daily_return":r=a.consecutiveDaysActive||0;break;case"mastery_xp":r=p;break;case"explore_friend_added":case"social_friend":case"explore_social":r=a.friendsAdded||0;break;case"perfect_score":{r=(a.quizAttempts||[]).filter(A=>A.score===100).length;break}default:return}return{progress:Math.min(r,f),total:f}},h=g.map(s=>{const t=Y[s.icon.name]??u,l=k.has(s.id),a=D(s);return{id:s.id,icon:t,title:s.title,description:s.description,progress:a?.progress,total:a?.total,unlocked:l,color:l?s.iconColor:"text-slate-500",bgColor:l?s.iconColor.replace("text-","bg-").replace("-500","/10").replace("-400","/10").replace("-600","/10"):"bg-slate-100"}}),z=h.filter(s=>s.unlocked).length;return o?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-2 sm:p-8",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:c}),e.jsxs("div",{className:"relative bg-[#f7f9fc] rounded-2xl shadow-2xl border border-[#dde3eb] w-full max-w-2xl max-h-[90vh] sm:max-h-[85vh] flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"bg-gradient-to-r from-[#9956DE] via-[#7274ED] to-[#1FA7E1] p-4 md:p-6 text-white relative flex-shrink-0",children:[e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(circle_at_14%_12%,rgba(251,150,187,0.35),transparent_42%),radial-gradient(circle_at_80%_80%,rgba(117,208,106,0.25),transparent_38%)]"}),e.jsxs("div",{className:"flex items-center justify-between mb-4 relative z-10",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl md:text-2xl font-display font-bold",children:"Rewards & Achievements"}),e.jsxs("p",{className:"text-white/90 text-sm font-body",children:[z," / ",g.length," Achievements Unlocked"]})]}),e.jsx("button",{onClick:c,className:"text-white/90 hover:text-white hover:bg-white/20 p-2 rounded-xl transition-colors",children:e.jsx(K,{size:24})})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2 md:gap-3 relative z-10",children:[e.jsxs("div",{className:"bg-white/15 backdrop-blur-sm rounded-xl p-3 md:p-4 border border-white/25",children:[e.jsxs("div",{className:"flex items-center gap-1 md:gap-2 mb-1",children:[e.jsx(N,{size:16,className:"text-[#FFB356]"}),e.jsx("span",{className:"text-[10px] md:text-xs font-medium text-white/90 font-body",children:"Level"})]}),e.jsx("p",{className:"text-xl md:text-2xl font-bold",children:n})]}),e.jsxs("div",{className:"bg-white/15 backdrop-blur-sm rounded-xl p-3 md:p-4 border border-white/25",children:[e.jsxs("div",{className:"flex items-center gap-1 md:gap-2 mb-1",children:[e.jsx(w,{size:16,className:"text-[#6ED1CF]"}),e.jsx("span",{className:"text-[10px] md:text-xs font-medium text-white/90 font-body",children:"Total XP"})]}),e.jsx("p",{className:"text-xl md:text-2xl font-bold",children:p.toLocaleString()})]}),e.jsxs("div",{className:"bg-white/15 backdrop-blur-sm rounded-xl p-3 md:p-4 border border-white/25",children:[e.jsxs("div",{className:"flex items-center gap-1 md:gap-2 mb-1",children:[e.jsx(v,{size:16,className:"text-[#FF8B8B]"}),e.jsx("span",{className:"text-[10px] md:text-xs font-medium text-white/90 font-body",children:"Daily Rewards"})]}),e.jsx("p",{className:"text-xl md:text-2xl font-bold",children:"Check-in"})]})]}),e.jsxs("div",{className:"mt-4 relative z-10",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsxs("span",{className:"text-sm font-bold text-white font-body",children:["Level ",n]}),e.jsxs("span",{className:"text-sm font-bold text-white font-body",children:["Level ",n+1]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"flex justify-between items-center mb-1",children:e.jsxs("span",{className:"text-xs text-white/90",children:[x," / ",m," XP"]})}),e.jsx("div",{className:"h-3 bg-white/20 rounded-full overflow-hidden border border-white/20",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-[#6ED1CF] via-[#75D06A] to-[#FFB356] rounded-full transition-all duration-500 e-w",style:{"--w":`${x/m*100}%`}})})]})]})]}),e.jsx("div",{className:"p-4 md:p-6 overflow-y-auto flex-1",children:y?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("div",{className:"animate-spin w-8 h-8 border-2 border-[#9956DE] border-t-transparent rounded-full"})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"text-lg font-display font-bold text-[#0a1628] mb-4",children:"Achievements"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:h.map(s=>{const t=s.icon;return e.jsx("div",{className:`${s.unlocked?"bg-white border-[#9956DE]/25":"bg-[#edf1f7] border-[#dde3eb]"} border-2 rounded-xl p-4 transition-all ${s.unlocked?"shadow-md":"opacity-60"}`,children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:`w-12 h-12 ${s.bgColor} rounded-xl flex items-center justify-center flex-shrink-0`,children:e.jsx(t,{size:24,className:s.color})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h4",{className:`text-sm font-bold ${s.unlocked?"text-[#0a1628]":"text-slate-500"} font-body`,children:s.title}),s.unlocked&&e.jsx("span",{className:"px-2 py-0.5 bg-[#75D06A] text-white text-[9px] font-bold rounded-full",children:"Unlocked"})]}),e.jsx("p",{className:`text-xs ${s.unlocked?"text-[#5a6578]":"text-slate-500"} mb-2`,children:s.description}),s.progress!==void 0&&s.total!==void 0&&!s.unlocked&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1",children:[e.jsx("span",{className:"text-[10px] text-slate-500",children:"Progress"}),e.jsxs("span",{className:"text-[10px] font-bold text-[#5a6578]",children:[s.progress," / ",s.total]})]}),e.jsx("div",{className:"h-1.5 bg-[#dde3eb] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-[#7274ED] to-[#1FA7E1] rounded-full transition-all e-w",style:{"--w":`${s.progress/s.total*100}%`}})})]})]})]})},s.id)})})]}),e.jsxs("div",{className:"bg-white rounded-xl p-5 border border-[#dde3eb]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[e.jsx("div",{className:"w-8 h-8 bg-gradient-to-br from-[#7274ED] to-[#1FA7E1] rounded-lg flex items-center justify-center",children:e.jsx(j,{size:16,className:"text-white"})}),e.jsx("h3",{className:"text-base font-display font-bold text-[#0a1628]",children:"How to Earn XP"})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:[{activity:"Complete a video lesson",xp:50},{activity:"Complete exercises",xp:100},{activity:"Perfect quiz score",xp:150},{activity:"Finish a quiz",xp:75},{activity:"Daily check-in",xp:"20-100"}].map((s,t)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 bg-[#1FA7E1] rounded-full"}),e.jsxs("span",{className:"text-xs text-[#5a6578] font-body",children:[s.activity,":"]}),e.jsxs("span",{className:"text-xs font-bold text-[#7274ED]",children:["+",s.xp," XP"]})]},t))})]})]})})]})]}):null};export{me as default}; +import{r as i,j as e}from"./vendor-react-B4AQeu28.js";import{getDoc as F,doc as S}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{aO as g,A as u,aP as U,aQ as P,U as $,F as B,i as I,z as R,$ as q,T as j,aR as T,a4 as N,R as L,S as M,a0 as X,X as v,a5 as w,B as G,Z as H,q as Q,E as Z,G as O,a as V,aI as W,g as J}from"./index-pcr0VEFr.js";import{X as K}from"./x-W9f2bIhn.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const Y={BookOpen:V,GraduationCap:O,Trophy:Z,Target:Q,Zap:H,Brain:G,Star:w,Flame:v,Swords:X,Shield:M,RefreshCw:L,Crown:N,Sun:T,TrendingUp:j,Globe:q,User:R,UserPlus:I,Calendar:B,Users:$,Compass:P,Heart:U,Award:u},me=({isOpen:o,onClose:c,userLevel:n,currentXP:x,xpToNextLevel:m,totalXP:p,userId:d})=>{const[y,b]=i.useState(!0),[k,_]=i.useState(new Set),[E,C]=i.useState({});i.useEffect(()=>{if(!o||!d)return;(async()=>{b(!0);try{const t=await W(d);_(new Set(t.map(a=>a.id)));const l=await F(S(J,"progress",d));l.exists()&&C(l.data())}catch(t){console.error("Error loading achievements:",t)}finally{b(!1)}})()},[o,d]);const D=s=>{const{condition:t,threshold:l}=s,a=E;let r=0,f=l??1;switch(t){case"lesson_complete":r=a.totalLessonsCompleted||0;break;case"quiz_complete":r=a.totalQuizzesCompleted||0;break;case"battle_win":case"battle_undefeated":r=a.battleWins||0;break;case"mastery_10":case"social_streak_30":case"social_daily_return":r=a.consecutiveDaysActive||0;break;case"mastery_xp":r=p;break;case"explore_friend_added":case"social_friend":case"explore_social":r=a.friendsAdded||0;break;case"perfect_score":{r=(a.quizAttempts||[]).filter(A=>A.score===100).length;break}default:return}return{progress:Math.min(r,f),total:f}},h=g.map(s=>{const t=Y[s.icon.name]??u,l=k.has(s.id),a=D(s);return{id:s.id,icon:t,title:s.title,description:s.description,progress:a?.progress,total:a?.total,unlocked:l,color:l?s.iconColor:"text-slate-500",bgColor:l?s.iconColor.replace("text-","bg-").replace("-500","/10").replace("-400","/10").replace("-600","/10"):"bg-slate-100"}}),z=h.filter(s=>s.unlocked).length;return o?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-2 sm:p-8",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:c}),e.jsxs("div",{className:"relative bg-[#f7f9fc] rounded-2xl shadow-2xl border border-[#dde3eb] w-full max-w-2xl max-h-[90vh] sm:max-h-[85vh] flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"bg-gradient-to-r from-[#9956DE] via-[#7274ED] to-[#1FA7E1] p-4 md:p-6 text-white relative flex-shrink-0",children:[e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(circle_at_14%_12%,rgba(251,150,187,0.35),transparent_42%),radial-gradient(circle_at_80%_80%,rgba(117,208,106,0.25),transparent_38%)]"}),e.jsxs("div",{className:"flex items-center justify-between mb-4 relative z-10",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl md:text-2xl font-display font-bold",children:"Rewards & Achievements"}),e.jsxs("p",{className:"text-white/90 text-sm font-body",children:[z," / ",g.length," Achievements Unlocked"]})]}),e.jsx("button",{onClick:c,className:"text-white/90 hover:text-white hover:bg-white/20 p-2 rounded-xl transition-colors",children:e.jsx(K,{size:24})})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2 md:gap-3 relative z-10",children:[e.jsxs("div",{className:"bg-white/15 backdrop-blur-sm rounded-xl p-3 md:p-4 border border-white/25",children:[e.jsxs("div",{className:"flex items-center gap-1 md:gap-2 mb-1",children:[e.jsx(N,{size:16,className:"text-[#FFB356]"}),e.jsx("span",{className:"text-[10px] md:text-xs font-medium text-white/90 font-body",children:"Level"})]}),e.jsx("p",{className:"text-xl md:text-2xl font-bold",children:n})]}),e.jsxs("div",{className:"bg-white/15 backdrop-blur-sm rounded-xl p-3 md:p-4 border border-white/25",children:[e.jsxs("div",{className:"flex items-center gap-1 md:gap-2 mb-1",children:[e.jsx(w,{size:16,className:"text-[#6ED1CF]"}),e.jsx("span",{className:"text-[10px] md:text-xs font-medium text-white/90 font-body",children:"Total XP"})]}),e.jsx("p",{className:"text-xl md:text-2xl font-bold",children:p.toLocaleString()})]}),e.jsxs("div",{className:"bg-white/15 backdrop-blur-sm rounded-xl p-3 md:p-4 border border-white/25",children:[e.jsxs("div",{className:"flex items-center gap-1 md:gap-2 mb-1",children:[e.jsx(v,{size:16,className:"text-[#FF8B8B]"}),e.jsx("span",{className:"text-[10px] md:text-xs font-medium text-white/90 font-body",children:"Daily Rewards"})]}),e.jsx("p",{className:"text-xl md:text-2xl font-bold",children:"Check-in"})]})]}),e.jsxs("div",{className:"mt-4 relative z-10",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsxs("span",{className:"text-sm font-bold text-white font-body",children:["Level ",n]}),e.jsxs("span",{className:"text-sm font-bold text-white font-body",children:["Level ",n+1]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"flex justify-between items-center mb-1",children:e.jsxs("span",{className:"text-xs text-white/90",children:[x," / ",m," XP"]})}),e.jsx("div",{className:"h-3 bg-white/20 rounded-full overflow-hidden border border-white/20",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-[#6ED1CF] via-[#75D06A] to-[#FFB356] rounded-full transition-all duration-500 e-w",style:{"--w":`${x/m*100}%`}})})]})]})]}),e.jsx("div",{className:"p-4 md:p-6 overflow-y-auto flex-1",children:y?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("div",{className:"animate-spin w-8 h-8 border-2 border-[#9956DE] border-t-transparent rounded-full"})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"text-lg font-display font-bold text-[#0a1628] mb-4",children:"Achievements"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:h.map(s=>{const t=s.icon;return e.jsx("div",{className:`${s.unlocked?"bg-white border-[#9956DE]/25":"bg-[#edf1f7] border-[#dde3eb]"} border-2 rounded-xl p-4 transition-all ${s.unlocked?"shadow-md":"opacity-60"}`,children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:`w-12 h-12 ${s.bgColor} rounded-xl flex items-center justify-center flex-shrink-0`,children:e.jsx(t,{size:24,className:s.color})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h4",{className:`text-sm font-bold ${s.unlocked?"text-[#0a1628]":"text-slate-500"} font-body`,children:s.title}),s.unlocked&&e.jsx("span",{className:"px-2 py-0.5 bg-[#75D06A] text-white text-[9px] font-bold rounded-full",children:"Unlocked"})]}),e.jsx("p",{className:`text-xs ${s.unlocked?"text-[#5a6578]":"text-slate-500"} mb-2`,children:s.description}),s.progress!==void 0&&s.total!==void 0&&!s.unlocked&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1",children:[e.jsx("span",{className:"text-[10px] text-slate-500",children:"Progress"}),e.jsxs("span",{className:"text-[10px] font-bold text-[#5a6578]",children:[s.progress," / ",s.total]})]}),e.jsx("div",{className:"h-1.5 bg-[#dde3eb] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-[#7274ED] to-[#1FA7E1] rounded-full transition-all e-w",style:{"--w":`${s.progress/s.total*100}%`}})})]})]})]})},s.id)})})]}),e.jsxs("div",{className:"bg-white rounded-xl p-5 border border-[#dde3eb]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[e.jsx("div",{className:"w-8 h-8 bg-gradient-to-br from-[#7274ED] to-[#1FA7E1] rounded-lg flex items-center justify-center",children:e.jsx(j,{size:16,className:"text-white"})}),e.jsx("h3",{className:"text-base font-display font-bold text-[#0a1628]",children:"How to Earn XP"})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:[{activity:"Complete a video lesson",xp:50},{activity:"Complete exercises",xp:100},{activity:"Perfect quiz score",xp:150},{activity:"Finish a quiz",xp:75},{activity:"Daily check-in",xp:"20-100"}].map((s,t)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-1.5 h-1.5 bg-[#1FA7E1] rounded-full"}),e.jsxs("span",{className:"text-xs text-[#5a6578] font-body",children:[s.activity,":"]}),e.jsxs("span",{className:"text-xs font-bold text-[#7274ED]",children:["+",s.xp," XP"]})]},t))})]})]})})]})]}):null};export{me as default}; diff --git a/assets/RightSidebar-Bqzdu2TQ.js b/assets/RightSidebar-WvOWGMnC.js similarity index 98% rename from assets/RightSidebar-Bqzdu2TQ.js rename to assets/RightSidebar-WvOWGMnC.js index fe9df2c59245471ecc68667ad65496f49b80a786..50f7e2c272b43aa7ea15e484559efc8ce00a9e66 100644 --- a/assets/RightSidebar-Bqzdu2TQ.js +++ b/assets/RightSidebar-WvOWGMnC.js @@ -1 +1 @@ -import{r as o,j as e}from"./vendor-react-B4AQeu28.js";import{q as S}from"./quiz_battle_avatar-BXHPSput.js";import{h as B,m as c,Z as _,a0 as q,a3 as P,E as W,a4 as v,a5 as X,p as Y,z as k}from"./index-Dl2Y5a7s.js";import{C as M}from"./circle-check-big-D4jhmnoW.js";import{T as O,a as Z,b as H}from"./tooltip--nIi8N_-.js";import{C as T}from"./chevron-right-D8o3zg2m.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const E=[{id:1,title:"Quiz Battle",subtitle:"Challenge players worldwide!",bgColor:"bg-[#9956de]",orbColor:"bg-[#6D28D9]",icon:e.jsx(q,{size:24,className:"text-white"}),buttonText:"Join Battle",actionType:"quiz-battle",avatarText:"Waiting for you to join..."},{id:2,title:"Topic Explorer",subtitle:"Dive into a new math topic today",bgColor:"bg-[#FF8B8B]",orbColor:"bg-[#E06A6A]",icon:e.jsx(_,{size:24,className:"text-white"}),buttonText:"Explore",actionType:"explore",avatarText:"Knowledge is power!"},{id:3,title:"Speed Runner",subtitle:"Finish a quiz in under 5 mins",bgColor:"bg-[#75D06A]",orbColor:"bg-[#58B34D]",icon:e.jsx(M,{size:24,className:"text-white"}),buttonText:null,actionType:null,avatarText:"Ready for action!"}],J=({onNavigateToQuizBattle:s,userPhoto:a})=>{const[x,m]=o.useState(0);o.useEffect(()=>{const r=setInterval(()=>{m(l=>(l+1)%E.length)},5e3);return()=>clearInterval(r)},[]);const t=E[x];return e.jsx("div",{className:"bg-white rounded-[24px] p-4 shadow-sm border border-slate-100 flex flex-col gap-6 mt-4 relative overflow-hidden",children:e.jsx("div",{className:"relative h-[185px] rounded-[-20px] rounded-2xl overflow-hidden cursor-pointer group",children:e.jsx(B,{mode:"wait",children:e.jsxs(c.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.3},className:`absolute inset-0 ${t.bgColor} p-4 sm:p-5 flex flex-col justify-between overflow-hidden`,children:[e.jsxs("div",{className:"absolute top-4 right-4 flex gap-1 items-center z-20",children:[e.jsx("div",{className:"w-3 h-1.5 rounded-full bg-white/60"}),e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-white/40"}),e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-white/40"})]}),t.actionType==="quiz-battle"&&e.jsx("div",{className:"absolute -right-4 -bottom-6 w-32 h-32 opacity-25 mix-blend-overlay pointer-events-none z-0 transform group-hover:scale-105 transition-transform duration-700",children:e.jsx("img",{src:S,alt:"",className:"w-full h-full object-contain"})}),e.jsx("div",{className:`absolute -right-4 -top-8 w-36 h-36 rounded-full ${t.orbColor} opacity-90 blur-2xl group-hover:scale-110 transition-transform duration-700 pointer-events-none`}),e.jsx("div",{className:"absolute right-4 top-1/2 -translate-y-1/2 w-[48px] h-[48px] rounded-2xl rotate-12 bg-white/20 backdrop-blur-md shadow-sm border border-white/20 group-hover:rotate-[25deg] group-hover:scale-110 transition-transform duration-700 flex items-center justify-center z-10",children:t.icon}),e.jsxs("div",{className:"relative z-10 w-full pr-[60px]",children:[e.jsx("h3",{className:"font-display font-bold text-[20px] leading-tight text-white mb-0.5",children:t.title}),e.jsx("p",{className:"text-[12px] font-medium text-white/90 leading-snug",children:t.subtitle}),t.buttonText&&e.jsx("button",{onClick:r=>{r.stopPropagation(),t.actionType==="quiz-battle"&&s&&s()},className:"mt-2.5 bg-white text-[#0a1628] px-2 py-1 rounded-lg font-bold text-xs shadow-sm hover:scale-105 transition-transform uppercase tracking-wider whitespace-nowrap w-fit",children:t.buttonText})]}),e.jsxs("div",{className:"flex items-center gap-2.5 relative z-10 mt-auto pt-2",children:[a?e.jsxs("div",{className:"relative group/avatar shrink-0",children:[e.jsx("div",{className:"absolute inset-0 bg-white/40 blur-md rounded-full animate-pulse"}),e.jsx("img",{src:a,alt:"You",className:"w-8 h-8 rounded-full border-[2px] border-white object-cover relative z-10 shadow-md group-hover/avatar:scale-110 transition-transform"}),t.actionType==="quiz-battle"&&e.jsx("div",{className:"absolute -bottom-1 -right-1 w-[16px] h-[16px] bg-[#75D06A] border-2 border-[#7C3AED] rounded-full z-20 flex items-center justify-center",children:e.jsx(_,{size:8,className:"text-white",fill:"currentColor"})})]}):null,e.jsx("span",{className:"text-[12px] font-bold text-white tracking-wide leading-tight flex-1 pr-[60px]",children:t.avatarText})]})]},t.id)})})})},K=s=>{if(s>=1e3){const a=s/1e3;return a>=10?`${Math.round(a)}k`:`${a.toFixed(1)}k`}return`${s}`},G=({entry:s,rank:a,isYou:x,userPhoto:m,rankColor:t})=>{const r=x?s?.photo||m:s?.photo,l=x?"You":s?.name||"---",h=s?.xp||0;return e.jsxs(e.Fragment,{children:[e.jsxs(c.div,{initial:{y:20,opacity:0},animate:{y:0,opacity:1},transition:{delay:.3+a*.1},className:"relative mb-2",children:[a===1&&e.jsx("div",{className:"absolute -top-4 left-1/2 -translate-x-1/2 z-20",children:e.jsx(v,{size:22,className:"text-amber-400 drop-shadow-md mb-1",fill:"#fbbf24",strokeWidth:1.5})}),e.jsx("div",{className:`w-10 h-10 rounded-full border-[3px] ${a===1?"w-[52px] h-[52px]":""} ${t.border} z-10 relative overflow-hidden ${t.shadow} bg-white`,children:r?e.jsx("img",{src:r,alt:l,className:"w-full h-full object-cover",onError:f=>{f.target.style.display="none"}}):e.jsx("div",{className:"w-full h-full bg-gradient-to-br from-slate-200 to-slate-300 flex items-center justify-center",children:e.jsx(k,{size:a===1?22:16,className:"text-slate-400"})})}),e.jsx("div",{className:`absolute -bottom-2 left-1/2 -translate-x-1/2 ${t.badge} text-white text-[10px] font-bold px-2 py-0.5 rounded-full z-20 shadow-sm`,children:a})]}),e.jsxs("div",{className:"mt-2 text-center",children:[e.jsx("span",{className:`block ${a===1?"text-[13px] font-black":"text-[12px] font-bold"} text-[#0a1628] truncate max-w-[80px]`,children:l}),e.jsxs("span",{className:`block ${a===1?"text-[11px]":"text-[10px]"} ${t.badge.replace("bg-","text-").replace("-500","-600").replace("-400","-600").replace("amber","amber")} font-bold`,children:[K(h)," XP"]})]})]})},ce=({currentUserId:s,onOpenRewards:a,onOpenLeaderboard:x,onNavigateToModules:m,onNavigateToQuizBattle:t,userLevel:r,userPhoto:l,currentXP:h,xpToNextLevel:f})=>{const N=h/f*100,[$,D]=o.useState([]),[F,u]=o.useState(!0),[y,g]=o.useState(null),p=o.useRef(null),n=o.useRef(null);o.useEffect(()=>{if(!s){u(!1);return}u(!0),g(null);const d=P(b=>{D(b),u(!1),g(null),n.current&&(clearTimeout(n.current),n.current=null)},s,!1,"all",3);return p.current=d,n.current=setTimeout(()=>{u(!1),g("Leaderboard data unavailable")},15e3),()=>{n.current&&(clearTimeout(n.current),n.current=null),p.current&&(p.current(),p.current=null)}},[s]);const i=$.slice(0,3);i.some(d=>d.userId===s);const z=[{bg:"from-amber-100 to-amber-50",border:"border-amber-400",badge:"bg-amber-500",shadow:"shadow-md"},{bg:"from-slate-200 to-slate-100",border:"border-sky-400",badge:"bg-sky-500",shadow:"shadow-sm"},{bg:"from-orange-50 to-slate-50",border:"border-orange-400",badge:"bg-orange-500",shadow:"shadow-sm"}],A=["74px","54px","38px"],L=["w-[78px]","w-[70px]","w-[70px]"],w=(d,b,C,R,j)=>e.jsxs("div",{className:"flex flex-col items-center relative z-10",children:[e.jsx(G,{entry:d,rank:C,isYou:R==="You",userPhoto:l,rankColor:z[j]}),e.jsxs(c.div,{initial:{height:0},animate:{height:A[b]},transition:{delay:.2+b*.1,duration:.5,ease:"easeOut"},className:`${L[b]} bg-gradient-to-b ${z[j].bg} rounded-t-xl rounded-b-md border-t-2 border-white/20 flex items-center justify-center relative shadow-[inset_0_-4px_6px_rgba(0,0,0,0.05),0_4px_6px_rgba(0,0,0,0.05)]`,children:[e.jsx("span",{className:`${j===0?"text-amber-400 text-3xl":"text-slate-400 text-2xl"} font-black opacity-40 translate-y-1`,children:C}),e.jsx("div",{className:"absolute top-0 left-0 right-0 h-1.5 bg-white/70 rounded-t-xl"})]})]});return e.jsxs("div",{className:"space-y-2.5",children:[e.jsxs(c.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.1,duration:.4,ease:[.22,1,.36,1]},onClick:a,className:"rounded-2xl border border-[#9956DE]/25 cursor-pointer transition-all group relative overflow-hidden bg-gradient-to-br from-[#9956DE] via-[#7274ED] to-[#1FA7E1] hover:shadow-[0_16px_40px_rgba(114,116,237,0.28)] hover:-translate-y-0.5",children:[e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(circle_at_18%_8%,rgba(251,150,187,0.32),transparent_42%),radial-gradient(circle_at_85%_84%,rgba(117,208,106,0.24),transparent_40%)]"}),e.jsxs("div",{className:"relative z-10 p-3",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"shrink-0 w-8 h-8 bg-white/20 rounded-xl flex items-center justify-center border border-white/35 backdrop-blur-sm",children:e.jsx(W,{size:14,className:"text-white"})}),e.jsxs("h3",{className:"font-display font-bold text-[13px] leading-tight text-white tracking-wide",children:["Rewards & ",e.jsx("br",{className:"hidden 2xl:block"})," Achievements"]})]}),e.jsx(T,{size:14,className:"shrink-0 text-white/80 group-hover:text-white group-hover:translate-x-0.5 transition-all"})]}),e.jsxs("div",{className:"flex items-center justify-between gap-1 mb-3 bg-white/10 p-1.5 rounded-xl border border-white/20 backdrop-blur-sm",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-body px-1 text-white",children:[e.jsx(v,{size:12,className:"text-[#FFB356]"}),e.jsxs("span",{className:"font-bold",children:["Lv ",r]})]}),e.jsx("div",{className:"w-px h-3 bg-white/35"}),e.jsxs(O,{children:[e.jsx(Z,{asChild:!0,children:e.jsxs("button",{onClick:d=>{d.stopPropagation(),m?.()},className:"flex items-center gap-1.5 text-xs font-body px-1 text-white cursor-pointer transition-colors active:scale-95",children:[e.jsx(X,{size:12,className:"text-[#6ED1CF]"}),e.jsxs("span",{className:"font-bold whitespace-nowrap",children:[h," XP"]})]})}),e.jsx(H,{side:"top",className:"bg-slate-900 text-white border border-slate-700",children:"Review more lessons to earn more XP!"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1.5",children:[e.jsxs("span",{className:"text-[11px] font-body text-white/90",children:["Next: Level ",r+1]}),e.jsxs("span",{className:"text-[11px] font-body font-semibold text-white",children:[Math.round(N),"%"]})]}),e.jsx("div",{className:"h-2 bg-white/25 rounded-full overflow-hidden border border-white/20",children:e.jsx(c.div,{initial:{width:0},animate:{width:`${N}%`},transition:{duration:1,ease:"easeOut"},className:"h-full bg-gradient-to-r from-[#6ED1CF] via-[#75D06A] to-[#FFB356] rounded-full"})})]})]})]}),e.jsx(c.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.2,duration:.4,ease:[.22,1,.36,1]},children:e.jsx(J,{onNavigateToQuizBattle:t,userPhoto:l})}),e.jsxs(c.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.3,duration:.4,ease:[.22,1,.36,1]},onClick:x,className:"bg-white rounded-xl border border-slate-200/80 hover:shadow-md hover:border-amber-200/60 transition-all group overflow-hidden cursor-pointer",children:[e.jsxs("div",{className:"p-3 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-7 h-7 bg-amber-50 rounded-lg flex items-center justify-center border border-amber-200/60 transition-colors group-hover:bg-amber-100/50",children:e.jsx(v,{size:14,className:"text-amber-500"})}),e.jsx("h3",{className:"font-display font-bold text-sm text-[#0a1628]",children:"Leaderboards"})]}),e.jsx(T,{size:14,className:"text-slate-400 group-hover:translate-x-0.5 group-hover:text-amber-500 transition-transform"})]}),e.jsx("div",{className:"pt-8 pb-3 px-2 bg-gradient-to-b from-slate-50/30 to-white flex items-end justify-center gap-1.5 min-h-[170px]",children:F?e.jsxs("div",{className:"flex flex-col items-center justify-center h-full py-8",children:[e.jsx(Y,{className:"w-5 h-5 animate-spin text-amber-400 mb-2"}),e.jsx("span",{className:"text-xs text-slate-400",children:"Loading rankings..."})]}):y||i.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center h-full py-8",children:[e.jsx(k,{className:"w-8 h-8 text-slate-300 mb-2"}),e.jsx("span",{className:"text-xs text-slate-400 text-center",children:y||"No rankings available yet"})]}):e.jsxs(e.Fragment,{children:[w(i[1],1,2,i[1]?.name||"---",1),w(i[0],0,1,i[0]?.name||"---",0),w(i[2],2,3,i[2]?.name||"---",2)]})})]})]})};export{ce as default}; +import{r as o,j as e}from"./vendor-react-B4AQeu28.js";import{q as S}from"./quiz_battle_avatar-BXHPSput.js";import{h as B,m as c,Z as _,a0 as q,a3 as P,E as W,a4 as v,a5 as X,p as Y,z as k}from"./index-pcr0VEFr.js";import{C as M}from"./circle-check-big-C3Ampp76.js";import{T as O,a as Z,b as H}from"./tooltip-C238w8wC.js";import{C as T}from"./chevron-right-BMVCfzLO.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const E=[{id:1,title:"Quiz Battle",subtitle:"Challenge players worldwide!",bgColor:"bg-[#9956de]",orbColor:"bg-[#6D28D9]",icon:e.jsx(q,{size:24,className:"text-white"}),buttonText:"Join Battle",actionType:"quiz-battle",avatarText:"Waiting for you to join..."},{id:2,title:"Topic Explorer",subtitle:"Dive into a new math topic today",bgColor:"bg-[#FF8B8B]",orbColor:"bg-[#E06A6A]",icon:e.jsx(_,{size:24,className:"text-white"}),buttonText:"Explore",actionType:"explore",avatarText:"Knowledge is power!"},{id:3,title:"Speed Runner",subtitle:"Finish a quiz in under 5 mins",bgColor:"bg-[#75D06A]",orbColor:"bg-[#58B34D]",icon:e.jsx(M,{size:24,className:"text-white"}),buttonText:null,actionType:null,avatarText:"Ready for action!"}],J=({onNavigateToQuizBattle:s,userPhoto:a})=>{const[x,m]=o.useState(0);o.useEffect(()=>{const r=setInterval(()=>{m(l=>(l+1)%E.length)},5e3);return()=>clearInterval(r)},[]);const t=E[x];return e.jsx("div",{className:"bg-white rounded-[24px] p-4 shadow-sm border border-slate-100 flex flex-col gap-6 mt-4 relative overflow-hidden",children:e.jsx("div",{className:"relative h-[185px] rounded-[-20px] rounded-2xl overflow-hidden cursor-pointer group",children:e.jsx(B,{mode:"wait",children:e.jsxs(c.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.3},className:`absolute inset-0 ${t.bgColor} p-4 sm:p-5 flex flex-col justify-between overflow-hidden`,children:[e.jsxs("div",{className:"absolute top-4 right-4 flex gap-1 items-center z-20",children:[e.jsx("div",{className:"w-3 h-1.5 rounded-full bg-white/60"}),e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-white/40"}),e.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-white/40"})]}),t.actionType==="quiz-battle"&&e.jsx("div",{className:"absolute -right-4 -bottom-6 w-32 h-32 opacity-25 mix-blend-overlay pointer-events-none z-0 transform group-hover:scale-105 transition-transform duration-700",children:e.jsx("img",{src:S,alt:"",className:"w-full h-full object-contain"})}),e.jsx("div",{className:`absolute -right-4 -top-8 w-36 h-36 rounded-full ${t.orbColor} opacity-90 blur-2xl group-hover:scale-110 transition-transform duration-700 pointer-events-none`}),e.jsx("div",{className:"absolute right-4 top-1/2 -translate-y-1/2 w-[48px] h-[48px] rounded-2xl rotate-12 bg-white/20 backdrop-blur-md shadow-sm border border-white/20 group-hover:rotate-[25deg] group-hover:scale-110 transition-transform duration-700 flex items-center justify-center z-10",children:t.icon}),e.jsxs("div",{className:"relative z-10 w-full pr-[60px]",children:[e.jsx("h3",{className:"font-display font-bold text-[20px] leading-tight text-white mb-0.5",children:t.title}),e.jsx("p",{className:"text-[12px] font-medium text-white/90 leading-snug",children:t.subtitle}),t.buttonText&&e.jsx("button",{onClick:r=>{r.stopPropagation(),t.actionType==="quiz-battle"&&s&&s()},className:"mt-2.5 bg-white text-[#0a1628] px-2 py-1 rounded-lg font-bold text-xs shadow-sm hover:scale-105 transition-transform uppercase tracking-wider whitespace-nowrap w-fit",children:t.buttonText})]}),e.jsxs("div",{className:"flex items-center gap-2.5 relative z-10 mt-auto pt-2",children:[a?e.jsxs("div",{className:"relative group/avatar shrink-0",children:[e.jsx("div",{className:"absolute inset-0 bg-white/40 blur-md rounded-full animate-pulse"}),e.jsx("img",{src:a,alt:"You",className:"w-8 h-8 rounded-full border-[2px] border-white object-cover relative z-10 shadow-md group-hover/avatar:scale-110 transition-transform"}),t.actionType==="quiz-battle"&&e.jsx("div",{className:"absolute -bottom-1 -right-1 w-[16px] h-[16px] bg-[#75D06A] border-2 border-[#7C3AED] rounded-full z-20 flex items-center justify-center",children:e.jsx(_,{size:8,className:"text-white",fill:"currentColor"})})]}):null,e.jsx("span",{className:"text-[12px] font-bold text-white tracking-wide leading-tight flex-1 pr-[60px]",children:t.avatarText})]})]},t.id)})})})},K=s=>{if(s>=1e3){const a=s/1e3;return a>=10?`${Math.round(a)}k`:`${a.toFixed(1)}k`}return`${s}`},G=({entry:s,rank:a,isYou:x,userPhoto:m,rankColor:t})=>{const r=x?s?.photo||m:s?.photo,l=x?"You":s?.name||"---",h=s?.xp||0;return e.jsxs(e.Fragment,{children:[e.jsxs(c.div,{initial:{y:20,opacity:0},animate:{y:0,opacity:1},transition:{delay:.3+a*.1},className:"relative mb-2",children:[a===1&&e.jsx("div",{className:"absolute -top-4 left-1/2 -translate-x-1/2 z-20",children:e.jsx(v,{size:22,className:"text-amber-400 drop-shadow-md mb-1",fill:"#fbbf24",strokeWidth:1.5})}),e.jsx("div",{className:`w-10 h-10 rounded-full border-[3px] ${a===1?"w-[52px] h-[52px]":""} ${t.border} z-10 relative overflow-hidden ${t.shadow} bg-white`,children:r?e.jsx("img",{src:r,alt:l,className:"w-full h-full object-cover",onError:f=>{f.target.style.display="none"}}):e.jsx("div",{className:"w-full h-full bg-gradient-to-br from-slate-200 to-slate-300 flex items-center justify-center",children:e.jsx(k,{size:a===1?22:16,className:"text-slate-400"})})}),e.jsx("div",{className:`absolute -bottom-2 left-1/2 -translate-x-1/2 ${t.badge} text-white text-[10px] font-bold px-2 py-0.5 rounded-full z-20 shadow-sm`,children:a})]}),e.jsxs("div",{className:"mt-2 text-center",children:[e.jsx("span",{className:`block ${a===1?"text-[13px] font-black":"text-[12px] font-bold"} text-[#0a1628] truncate max-w-[80px]`,children:l}),e.jsxs("span",{className:`block ${a===1?"text-[11px]":"text-[10px]"} ${t.badge.replace("bg-","text-").replace("-500","-600").replace("-400","-600").replace("amber","amber")} font-bold`,children:[K(h)," XP"]})]})]})},ce=({currentUserId:s,onOpenRewards:a,onOpenLeaderboard:x,onNavigateToModules:m,onNavigateToQuizBattle:t,userLevel:r,userPhoto:l,currentXP:h,xpToNextLevel:f})=>{const N=h/f*100,[$,D]=o.useState([]),[F,u]=o.useState(!0),[y,g]=o.useState(null),p=o.useRef(null),n=o.useRef(null);o.useEffect(()=>{if(!s){u(!1);return}u(!0),g(null);const d=P(b=>{D(b),u(!1),g(null),n.current&&(clearTimeout(n.current),n.current=null)},s,!1,"all",3);return p.current=d,n.current=setTimeout(()=>{u(!1),g("Leaderboard data unavailable")},15e3),()=>{n.current&&(clearTimeout(n.current),n.current=null),p.current&&(p.current(),p.current=null)}},[s]);const i=$.slice(0,3);i.some(d=>d.userId===s);const z=[{bg:"from-amber-100 to-amber-50",border:"border-amber-400",badge:"bg-amber-500",shadow:"shadow-md"},{bg:"from-slate-200 to-slate-100",border:"border-sky-400",badge:"bg-sky-500",shadow:"shadow-sm"},{bg:"from-orange-50 to-slate-50",border:"border-orange-400",badge:"bg-orange-500",shadow:"shadow-sm"}],A=["74px","54px","38px"],L=["w-[78px]","w-[70px]","w-[70px]"],w=(d,b,C,R,j)=>e.jsxs("div",{className:"flex flex-col items-center relative z-10",children:[e.jsx(G,{entry:d,rank:C,isYou:R==="You",userPhoto:l,rankColor:z[j]}),e.jsxs(c.div,{initial:{height:0},animate:{height:A[b]},transition:{delay:.2+b*.1,duration:.5,ease:"easeOut"},className:`${L[b]} bg-gradient-to-b ${z[j].bg} rounded-t-xl rounded-b-md border-t-2 border-white/20 flex items-center justify-center relative shadow-[inset_0_-4px_6px_rgba(0,0,0,0.05),0_4px_6px_rgba(0,0,0,0.05)]`,children:[e.jsx("span",{className:`${j===0?"text-amber-400 text-3xl":"text-slate-400 text-2xl"} font-black opacity-40 translate-y-1`,children:C}),e.jsx("div",{className:"absolute top-0 left-0 right-0 h-1.5 bg-white/70 rounded-t-xl"})]})]});return e.jsxs("div",{className:"space-y-2.5",children:[e.jsxs(c.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.1,duration:.4,ease:[.22,1,.36,1]},onClick:a,className:"rounded-2xl border border-[#9956DE]/25 cursor-pointer transition-all group relative overflow-hidden bg-gradient-to-br from-[#9956DE] via-[#7274ED] to-[#1FA7E1] hover:shadow-[0_16px_40px_rgba(114,116,237,0.28)] hover:-translate-y-0.5",children:[e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(circle_at_18%_8%,rgba(251,150,187,0.32),transparent_42%),radial-gradient(circle_at_85%_84%,rgba(117,208,106,0.24),transparent_40%)]"}),e.jsxs("div",{className:"relative z-10 p-3",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"shrink-0 w-8 h-8 bg-white/20 rounded-xl flex items-center justify-center border border-white/35 backdrop-blur-sm",children:e.jsx(W,{size:14,className:"text-white"})}),e.jsxs("h3",{className:"font-display font-bold text-[13px] leading-tight text-white tracking-wide",children:["Rewards & ",e.jsx("br",{className:"hidden 2xl:block"})," Achievements"]})]}),e.jsx(T,{size:14,className:"shrink-0 text-white/80 group-hover:text-white group-hover:translate-x-0.5 transition-all"})]}),e.jsxs("div",{className:"flex items-center justify-between gap-1 mb-3 bg-white/10 p-1.5 rounded-xl border border-white/20 backdrop-blur-sm",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-body px-1 text-white",children:[e.jsx(v,{size:12,className:"text-[#FFB356]"}),e.jsxs("span",{className:"font-bold",children:["Lv ",r]})]}),e.jsx("div",{className:"w-px h-3 bg-white/35"}),e.jsxs(O,{children:[e.jsx(Z,{asChild:!0,children:e.jsxs("button",{onClick:d=>{d.stopPropagation(),m?.()},className:"flex items-center gap-1.5 text-xs font-body px-1 text-white cursor-pointer transition-colors active:scale-95",children:[e.jsx(X,{size:12,className:"text-[#6ED1CF]"}),e.jsxs("span",{className:"font-bold whitespace-nowrap",children:[h," XP"]})]})}),e.jsx(H,{side:"top",className:"bg-slate-900 text-white border border-slate-700",children:"Review more lessons to earn more XP!"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-1.5",children:[e.jsxs("span",{className:"text-[11px] font-body text-white/90",children:["Next: Level ",r+1]}),e.jsxs("span",{className:"text-[11px] font-body font-semibold text-white",children:[Math.round(N),"%"]})]}),e.jsx("div",{className:"h-2 bg-white/25 rounded-full overflow-hidden border border-white/20",children:e.jsx(c.div,{initial:{width:0},animate:{width:`${N}%`},transition:{duration:1,ease:"easeOut"},className:"h-full bg-gradient-to-r from-[#6ED1CF] via-[#75D06A] to-[#FFB356] rounded-full"})})]})]})]}),e.jsx(c.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.2,duration:.4,ease:[.22,1,.36,1]},children:e.jsx(J,{onNavigateToQuizBattle:t,userPhoto:l})}),e.jsxs(c.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.3,duration:.4,ease:[.22,1,.36,1]},onClick:x,className:"bg-white rounded-xl border border-slate-200/80 hover:shadow-md hover:border-amber-200/60 transition-all group overflow-hidden cursor-pointer",children:[e.jsxs("div",{className:"p-3 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-7 h-7 bg-amber-50 rounded-lg flex items-center justify-center border border-amber-200/60 transition-colors group-hover:bg-amber-100/50",children:e.jsx(v,{size:14,className:"text-amber-500"})}),e.jsx("h3",{className:"font-display font-bold text-sm text-[#0a1628]",children:"Leaderboards"})]}),e.jsx(T,{size:14,className:"text-slate-400 group-hover:translate-x-0.5 group-hover:text-amber-500 transition-transform"})]}),e.jsx("div",{className:"pt-8 pb-3 px-2 bg-gradient-to-b from-slate-50/30 to-white flex items-end justify-center gap-1.5 min-h-[170px]",children:F?e.jsxs("div",{className:"flex flex-col items-center justify-center h-full py-8",children:[e.jsx(Y,{className:"w-5 h-5 animate-spin text-amber-400 mb-2"}),e.jsx("span",{className:"text-xs text-slate-400",children:"Loading rankings..."})]}):y||i.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center h-full py-8",children:[e.jsx(k,{className:"w-8 h-8 text-slate-300 mb-2"}),e.jsx("span",{className:"text-xs text-slate-400 text-center",children:y||"No rankings available yet"})]}):e.jsxs(e.Fragment,{children:[w(i[1],1,2,i[1]?.name||"---",1),w(i[0],0,1,i[0]?.name||"---",0),w(i[2],2,3,i[2]?.name||"---",2)]})})]})]})};export{ce as default}; diff --git a/assets/ScientificCalculator-BQeFLSJX.js b/assets/ScientificCalculator-7T0QjPrs.js similarity index 99% rename from assets/ScientificCalculator-BQeFLSJX.js rename to assets/ScientificCalculator-7T0QjPrs.js index faa2922c64492334cf1419e320971439d8f72a9c..730bcb65577fd638c381bba557e43f0b4b0a5a30 100644 --- a/assets/ScientificCalculator-BQeFLSJX.js +++ b/assets/ScientificCalculator-7T0QjPrs.js @@ -1,4 +1,4 @@ -import{r as c,j as e}from"./vendor-react-B4AQeu28.js";import{e as Z,l as de,h as U,m as ue}from"./index-Dl2Y5a7s.js";import{a as fe,C as pe}from"./chevron-up-bHLZImYg.js";import{X as be}from"./x-wHRRR-gQ.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";/** +import{r as c,j as e}from"./vendor-react-B4AQeu28.js";import{e as Z,l as de,h as U,m as ue}from"./index-pcr0VEFr.js";import{a as fe,C as pe}from"./chevron-up-D_gmtVKu.js";import{X as be}from"./x-W9f2bIhn.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/SettingsModal-CKvK-HcP.js b/assets/SettingsModal-PUs-qSAt.js similarity index 96% rename from assets/SettingsModal-CKvK-HcP.js rename to assets/SettingsModal-PUs-qSAt.js index bff4b500192d506f6e74e084a23d21f340e48be3..c8fdc4defa224d9ca3d0bc03845540a6eb6ce0b6 100644 --- a/assets/SettingsModal-CKvK-HcP.js +++ b/assets/SettingsModal-PUs-qSAt.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Dl2Y5a7s.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-ZLSkO1Xv.css"])))=>i.map(i=>d[i]); -import{e as D,u as Me,aT as Le,aU as De,aV as qe,aW as Ie,aX as Fe,aY as Ve,z as Oe,S as He,$ as Ge,a as Ue,h as $e,m as G,L as Xe,E as Be,a0 as Ye,X as Qe,_ as U,j as d,aZ as We,aS as Je,a_ as Ke,a$ as Ze,b0 as es}from"./index-Dl2Y5a7s.js";import{r as a,j as e}from"./vendor-react-B4AQeu28.js";import{S as ss,a as ts,b as as,c as ns,d as te}from"./select-DStldRhf.js";import{B as p}from"./button-pKF8t5En.js";import{I as n}from"./input-DghAGnRL.js";import{S as x}from"./switch-B8xho0UQ.js";import je from"./ConfirmModal-BO62ig7W.js";import{P as is,M as rs,V as ls}from"./ProfilePictureUploader-5SyI9dXS.js";import{B as ge}from"./bell-D8HSQb3o.js";import{D as ve}from"./download-Bvx53dXJ.js";import{X as Ne}from"./x-wHRRR-gQ.js";import{C as cs}from"./circle-help-7egOqUPg.js";import{C as os}from"./chart-column-CaIU59ve.js";import{M as ds}from"./megaphone-BGBgZ1iC.js";import{C as xs}from"./clock-Dcq6nfrf.js";import{T as ms}from"./trash-2-D0AgwsJy.js";import{E as hs,a as us}from"./eye-BEaH2B-8.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chevron-up-bHLZImYg.js";import"./check-BoG998GJ.js";import"./log-out-wnJ21BJr.js";import"./minus-BUZ8QSLu.js";import"./plus-CrmryN2j.js";import"./upload-C4j9TBDs.js";/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-pcr0VEFr.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-Bm8ni9Xq.css"])))=>i.map(i=>d[i]); +import{e as D,u as Me,aT as Le,aU as De,aV as qe,aW as Ie,aX as Fe,aY as Ve,z as Oe,S as He,$ as Ge,a as Ue,h as $e,m as G,L as Xe,E as Be,a0 as Ye,X as Qe,_ as U,j as d,aZ as We,aS as Je,a_ as Ke,a$ as Ze,b0 as es}from"./index-pcr0VEFr.js";import{r as a,j as e}from"./vendor-react-B4AQeu28.js";import{S as ss,a as ts,b as as,c as ns,d as te}from"./select-Dgzk2zFj.js";import{B as p}from"./button-AeTtN-Gk.js";import{I as n}from"./input-DfDzuOXr.js";import{S as x}from"./switch-VziX97fW.js";import je from"./ConfirmModal-BMBZzISp.js";import{P as is,M as rs,V as ls}from"./ProfilePictureUploader-Bce8Kzgs.js";import{B as ge}from"./bell-t5TgufAG.js";import{D as ve}from"./download-DnmwFFXB.js";import{X as Ne}from"./x-W9f2bIhn.js";import{C as cs}from"./circle-help-DA-BsSug.js";import{C as os}from"./chart-column-BNfaspCb.js";import{M as ds}from"./megaphone-D890PW9A.js";import{C as xs}from"./clock-BUvVFwS_.js";import{T as ms}from"./trash-2-CcKz2OV0.js";import{E as hs,a as us}from"./eye-5Jz6KeDY.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";import"./chevron-up-D_gmtVKu.js";import"./check-DcmcqBba.js";import"./log-out-CXrb7Klg.js";import"./minus-Br3D3UVG.js";import"./plus-dU-HIq9R.js";import"./upload-BDJuFJqK.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. @@ -24,4 +24,4 @@ import{e as D,u as Me,aT as Le,aU as De,aV as qe,aW as Ie,aX as Fe,aY as Ve,z as * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const ks=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],ws=D("smartphone",ks),Cs=()=>{const{userProfile:m,userRole:y}=Me(),[r,z]=a.useState(Le),[_,R]=a.useState(De),[k,T]=a.useState(!1),[q,E]=a.useState(null);a.useEffect(()=>{if(!m?.uid)return;(async()=>{T(!0),E(null);try{if(y==="teacher"){const u=await Fe(m.uid);z(u)}if(y==="admin"){const u=await Ve();R(u)}}catch(u){E(u instanceof Error?u.message:"Failed to load settings")}finally{T(!1)}})()},[m?.uid,y]);const o=a.useCallback(async g=>{if(!m?.uid)return;const u=await qe(m.uid,g);z(u)},[m?.uid]),M=a.useCallback(async g=>{const u=await Ie(g);R(u)},[]);return{teacherPrefs:r,adminConfig:_,loading:k,error:q,saveTeacherPrefs:o,saveAdminConfig:M}},ae=()=>JSON.parse(JSON.stringify(We)),rt=({isOpen:m,onClose:y,profileData:r,onSave:z,settingsData:_,onSaveSettings:R,onApplySettingsPreview:k,onExportData:T,onClearCache:q,onResetData:E})=>{const o=r?.role||"student",{teacherPrefs:M,adminConfig:g,saveTeacherPrefs:u,saveAdminConfig:ke}=Cs(),[b,ne]=a.useState("account"),[l,h]=a.useState({}),[i,ie]=a.useState(ae()),[w,C]=a.useState(M),[j,$]=a.useState(g),[X,re]=a.useState(!1),[I,le]=a.useState(!1),[B,ce]=a.useState(!1),[Y,oe]=a.useState(!1),[de,Ss]=a.useState(!1),[we,F]=a.useState(!1),[Ce,V]=a.useState(!1),[Se,P]=a.useState(!1),[L,xe]=a.useState(""),[f,Ae]=a.useState(null),[v,me]=a.useState(!1),[Q,he]=a.useState(!1),[W,ue]=a.useState(""),[O,be]=a.useState(""),J=a.useRef(!1),K=a.useRef(ae());a.useEffect(()=>{if(!m){J.current=!1;return}if(J.current)return;J.current=!0;const s=_?JSON.parse(JSON.stringify(_)):ae();K.current=s,h({uid:r?.uid,name:r?.name||"",email:r?.email||"",phone:r?.phone||"",photo:r?.photo||"",avatarLayers:r?.avatarLayers,role:r?.role,gender:r?.gender,lrn:r?.lrn||"",grade:r?.grade||"",section:r?.section||"",school:r?.school||"",department:r?.department||"",subject:r?.subject||"",yearsOfExperience:r?.yearsOfExperience||"",qualification:r?.qualification||"",position:r?.position||""}),ie(s),C(M),$(g)},[m,r,_,M,g]),a.useEffect(()=>{m&&k?.(i)},[m,i,k]),a.useEffect(()=>{if(!m)return;const s=t=>{t.key==="Escape"&&(k?.(K.current),y())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[m,y,k]);const Z=a.useMemo(()=>{const s=[{id:"account",label:"Account",icon:Oe},{id:"notifications",label:"Notifications",icon:ge},{id:"appearance",label:"Appearance",icon:gs}];return o==="student"&&(s.push({id:"privacy",label:"Privacy & Security",icon:He}),s.push({id:"learning",label:"Learning",icon:Ge})),o==="teacher"&&s.push({id:"teaching",label:"Teaching",icon:Ue}),o==="admin"&&s.push({id:"system",label:"System",icon:Ns}),s.push({id:"data",label:"Data & Storage",icon:ve}),s},[o]),c=s=>{ie(t=>s(t))},ee=s=>{Ae(s),xe(""),he(!1),s==="password"&&ue(""),s==="email"&&be(l.email||""),P(!0)},fe=async()=>{if(!L.trim()){d.error("Current password is required");return}me(!0);try{if(f==="password"){if(W.length<8){d.error("New password must be at least 8 characters");return}await Ke(L,W),d.success("Password updated")}else if(f==="email"){if(!O.includes("@")){d.error("Enter a valid email");return}await Ze(L,O),h(s=>({...s,email:O})),d.success("Email updated")}else if(f==="delete"){await es(L,l.uid||""),d.success("Account deleted"),y();return}P(!1)}catch(s){d.error(s instanceof Error?s.message:"Authentication failed")}finally{me(!1)}},Ee=async()=>{const s=Je({name:l.name,phone:l.phone});if(s){d.error(s);return}re(!0);try{z&&await z(l),R&&await R(i),o==="teacher"&&await u(w),o==="admin"&&await ke(j),y()}catch(t){d.error(t instanceof Error?t.message:"Failed to save settings")}finally{re(!1)}},se=()=>{P(!1),F(!1),V(!1),k?.(K.current),y()},Pe=async()=>{if(!(!T||B)){ce(!0);try{await T()}catch(s){d.error(s instanceof Error?s.message:"Failed to export data")}finally{ce(!1)}}},ze=async()=>{if(!(!q||Y)){oe(!0);try{await q()}catch(s){d.error(s instanceof Error?s.message:"Failed to clear cache")}finally{oe(!1)}}},_e=async()=>{if(!(!E||I)){F(!1),le(!0);try{await E(),d.success("Testing data reset completed")}catch(s){d.error(s instanceof Error?s.message:"Failed to reset testing data")}finally{le(!1)}}},Re=()=>{V(!1),ee("delete")};return m?e.jsx($e,{children:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"fixed inset-0 z-[100] flex items-end sm:items-center justify-center sm:p-4",children:[e.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:se,className:"absolute inset-0 bg-black/50 backdrop-blur-sm"}),e.jsxs(G.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},className:"relative bg-[#f7f9fc] rounded-t-2xl sm:rounded-2xl shadow-2xl border border-[#dde3eb] w-full sm:max-w-4xl h-[92vh] sm:max-h-[85vh] overflow-hidden flex flex-col sm:flex-row",children:[e.jsxs("div",{className:"hidden sm:flex w-64 flex-shrink-0 bg-slate-50 border-r border-slate-200 flex-col p-6 overflow-y-auto",children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-xl font-display font-bold text-[#0a1628]",children:"Settings"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1 font-body",children:"Manage your preferences"})]}),e.jsx("nav",{className:"space-y-1",children:Z.map(s=>{const t=s.icon;return e.jsxs("button",{onClick:()=>ne(s.id),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-left transition-all ${b===s.id?"bg-sky-50 text-sky-700 shadow-sm":"text-slate-500 hover:bg-slate-100 hover:text-sky-700"}`,children:[e.jsx(t,{size:18}),e.jsx("span",{className:"text-sm font-medium",children:s.label})]},s.id)})})]}),e.jsxs("div",{className:"flex-1 flex flex-col min-h-0",children:[e.jsx("div",{className:"sm:hidden flex items-center border-b border-[#dde3eb] bg-slate-50 overflow-x-auto no-scrollbar px-2",children:Z.map(s=>{const t=s.icon;return e.jsxs("button",{onClick:()=>ne(s.id),className:`flex flex-col items-center gap-0.5 px-3 py-2.5 shrink-0 text-xs font-medium border-b-2 transition-colors ${b===s.id?"border-sky-600 text-sky-700":"border-transparent text-slate-500"}`,children:[e.jsx(t,{size:16}),e.jsx("span",{className:"whitespace-nowrap",children:s.label})]},s.id)})}),e.jsxs("div",{className:"flex items-center justify-between px-4 sm:px-6 py-3 sm:py-4 border-b border-[#dde3eb]",children:[e.jsx("h3",{className:"text-base sm:text-lg font-display font-bold text-[#0a1628]",children:Z.find(s=>s.id===b)?.label}),e.jsx("button",{onClick:se,className:"p-2 hover:bg-[#edf1f7] rounded-xl transition-colors",children:e.jsx(Ne,{size:20,className:"text-[#5a6578]"})})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 sm:p-6",children:[b==="account"&&e.jsxs("div",{className:"space-y-6",children:[e.jsx(is,{uid:l.uid,photoURL:l.photo,displayName:l.name,onUploaded:s=>h(t=>({...t,photo:s}))}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Full Name"}),e.jsx(n,{type:"text",value:l.name||"",onChange:s=>h(t=>({...t,name:s.target.value})),maxLength:100,autoComplete:"name",className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Email Address"}),e.jsxs("div",{className:"flex items-center gap-2 max-w-md",children:[e.jsx(n,{type:"email",value:l.email||"",disabled:!0,className:"flex-1 bg-slate-100"}),e.jsx(p,{variant:"outline",size:"sm",onClick:()=>ee("email"),children:"Change"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Phone Number"}),e.jsx(n,{type:"tel",value:l.phone||"",onChange:s=>h(t=>({...t,phone:s.target.value})),maxLength:20,inputMode:"tel",autoComplete:"tel",pattern:"^\\+?[0-9 ()\\-.]{7,20}$",placeholder:"+63 912 345 6789",className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Gender"}),e.jsxs(ss,{value:l.gender||"",onValueChange:s=>h(t=>({...t,gender:s})),children:[e.jsx(ts,{className:"max-w-md bg-white border-[#dde3eb] rounded-lg",children:e.jsx(as,{placeholder:"Select gender (optional)"})}),e.jsxs(ns,{children:[e.jsx(te,{value:"male",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(rs,{className:"size-4 text-blue-500"}),e.jsx("span",{children:"Male"})]})}),e.jsx(te,{value:"female",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ls,{className:"size-4 text-pink-500"}),e.jsx("span",{children:"Female"})]})}),e.jsx(te,{value:"prefer_not_to_say",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(cs,{className:"size-4 text-gray-500"}),e.jsx("span",{children:"Prefer not to say"})]})})]})]})]}),o==="student"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"LRN"}),e.jsx(n,{value:l.lrn||"",onChange:s=>h(t=>({...t,lrn:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Grade Level"}),e.jsx(n,{value:l.grade||"",onChange:s=>h(t=>({...t,grade:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Section"}),e.jsx(n,{value:l.section||"",onChange:s=>h(t=>({...t,section:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"School"}),e.jsx(n,{value:l.school||"",onChange:s=>h(t=>({...t,school:s.target.value})),className:"max-w-md"})]})]}),o==="teacher"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Department"}),e.jsx(n,{value:l.department||"",onChange:s=>h(t=>({...t,department:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Subject"}),e.jsx(n,{value:l.subject||"",onChange:s=>h(t=>({...t,subject:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Years of Experience"}),e.jsx(n,{value:l.yearsOfExperience||"",onChange:s=>h(t=>({...t,yearsOfExperience:s.target.value})),className:"max-w-md"})]})]}),o==="admin"&&e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Position"}),e.jsx(n,{value:l.position||"",onChange:s=>h(t=>({...t,position:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Change Password"}),e.jsxs(p,{variant:"outline",className:"rounded-xl",onClick:()=>ee("password"),children:[e.jsx(Xe,{size:16,className:"mr-2"}),"Update Password"]})]})]}),b==="notifications"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Push Notifications"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Get notified on your device"})]}),e.jsx(x,{checked:i.notifications.pushNotifications,onCheckedChange:s=>c(t=>({...t,notifications:{...t.notifications,pushNotifications:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Sound Effects"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Play sounds for notifications"})]}),e.jsx(x,{checked:i.notifications.soundEnabled,onCheckedChange:s=>c(t=>({...t,notifications:{...t.notifications,soundEnabled:s}}))})]}),o==="teacher"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Student Submissions"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Notify when students submit work"})]}),e.jsx(x,{checked:w.notifyOnSubmission,onCheckedChange:s=>C(t=>({...t,notifyOnSubmission:s}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Student Activity Alerts"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Notify on at-risk student activity"})]}),e.jsx(x,{checked:w.notifyOnStudentActivity,onCheckedChange:s=>C(t=>({...t,notifyOnStudentActivity:s}))})]})]}),e.jsxs("div",{className:"pt-4",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] mb-3 font-body",children:"Notification Types"}),e.jsx("div",{className:"space-y-3",children:[{key:"quizReminders",label:"Quiz Reminders"},{key:"newContent",label:"New Content"},{key:"achievements",label:"Achievements"},{key:"streakAlerts",label:"Streak Alerts"},{key:"weeklySummary",label:"Weekly Summary"}].map(s=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("input",{type:"checkbox",checked:i.notifications.notificationTypes[s.key],onChange:t=>c(N=>({...N,notifications:{...N.notifications,notificationTypes:{...N.notifications.notificationTypes,[s.key]:t.target.checked}}})),className:"w-4 h-4 rounded border-[#dde3eb] text-sky-600 focus:ring-sky-500"}),e.jsx("span",{className:"text-sm text-[#0a1628] font-body",children:s.label})]},s.key))})]}),e.jsxs("div",{className:"pt-4 border-t border-[#dde3eb]",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] mb-1 font-body",children:"Push Notification Categories"}),e.jsx("p",{className:"text-xs text-slate-500 mb-3",children:"Choose which kinds of pushes you want to receive on this device."}),e.jsxs("div",{className:"flex items-center justify-between py-2 mb-2 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h5",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Enable Push (master)"}),e.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:"Turn off to silence ALL push categories."})]}),e.jsx(x,{checked:i.pushPreferences.pushEnabled,onCheckedChange:s=>c(t=>({...t,pushPreferences:{...t.pushPreferences,pushEnabled:s}}))})]}),e.jsx("div",{className:"space-y-2",children:[{key:"achievement",label:"Achievements unlocked",icon:Be},{key:"quiz_battle",label:"Quiz battle invites & results",icon:Ye},{key:"daily_reward",label:"Daily reward reminders",icon:ys},{key:"assignment",label:"New assignments / deadlines",icon:fs},{key:"streak_reminder",label:"Streak reminders",icon:Qe},{key:"leaderboard",label:"Leaderboard updates",icon:os},{key:"system",label:"System announcements",icon:ds}].map(s=>{const t=s.key,N=s.icon;return e.jsxs("label",{className:"flex items-center justify-between py-1.5",children:[e.jsxs("span",{className:"text-sm text-[#0a1628] font-body flex items-center gap-2",children:[e.jsx(N,{className:"h-4 w-4 text-[#6c47ff]"}),s.label]}),e.jsx(x,{checked:!!i.pushPreferences[t],onCheckedChange:pe=>c(H=>({...H,pushPreferences:{...H.pushPreferences,[s.key]:pe}})),disabled:!i.pushPreferences.pushEnabled&&t!=="pushEnabled"})]},s.key)})}),e.jsx("div",{className:"mt-4",children:e.jsxs(p,{type:"button",variant:"outline",size:"sm",onClick:async()=>{try{const{requestPushPermissionAndRegister:s}=await U(async()=>{const{requestPushPermissionAndRegister:S}=await import("./index-Dl2Y5a7s.js").then(A=>A.b7);return{requestPushPermissionAndRegister:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),{auth:t}=await U(async()=>{const{auth:S}=await import("./index-Dl2Y5a7s.js").then(A=>A.b5);return{auth:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),N=t.currentUser?.uid;if(!N){d.error("You must be signed in to test push notifications.");return}if(!await s(N)){d.error("Push setup failed. Check that VITE_FIREBASE_VAPID_KEY is configured and notifications are allowed.");return}const{httpsCallable:H}=await U(async()=>{const{httpsCallable:S}=await import("./vendor-firebase-core-whx8i25I.js").then(A=>A.a9);return{httpsCallable:S}},[]),{cloudFunctions:Te}=await U(async()=>{const{cloudFunctions:S}=await import("./index-Dl2Y5a7s.js").then(A=>A.b5);return{cloudFunctions:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),ye=(await H(Te,"sendTestPush")({}))?.data?.sent??0;ye>0?d.success(`Sent test push to ${ye} device(s).`):d.message("No active devices found. Enable browser notifications first.")}catch(s){d.error(s instanceof Error?s.message:"Failed to send test push")}},children:[e.jsx(ge,{size:14,className:"mr-2"}),"Send test push"]})})]}),e.jsxs("div",{className:"pt-4 border-t border-[#dde3eb]",children:[e.jsxs("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:[e.jsx(xs,{size:16,className:"inline mr-2"}),"Quiet Hours"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(n,{type:"time",value:i.notifications.quietHours.start,onChange:s=>c(t=>({...t,notifications:{...t.notifications,quietHours:{...t.notifications.quietHours,start:s.target.value}}})),className:"w-32"}),e.jsx("span",{className:"text-[#5a6578]",children:"to"}),e.jsx(n,{type:"time",value:i.notifications.quietHours.end,onChange:s=>c(t=>({...t,notifications:{...t.notifications,quietHours:{...t.notifications.quietHours,end:s.target.value}}})),className:"w-32"})]})]})]}),b==="appearance"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Dark Mode"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Toggle dark theme"})]}),e.jsx(x,{checked:i.appearance.darkMode,onCheckedChange:s=>c(t=>({...t,appearance:{...t.appearance,darkMode:s}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-3 block font-body uppercase tracking-wider text-xs",children:"Font Size"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-xs text-slate-500",children:"Small"}),e.jsx("input",{type:"range",min:"12",max:"20",value:i.appearance.fontSize,onChange:s=>c(t=>({...t,appearance:{...t.appearance,fontSize:Number(s.target.value)}})),className:"flex-1"}),e.jsx("span",{className:"text-xs text-slate-500",children:"Large"}),e.jsxs("span",{className:"text-xs font-mono text-slate-600 w-8",children:[i.appearance.fontSize,"px"]})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Compact View"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Show more content on screen"})]}),e.jsx(x,{checked:i.appearance.compactView,onCheckedChange:s=>c(t=>({...t,appearance:{...t.appearance,compactView:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Reduce Animations"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Minimize motion effects"})]}),e.jsx(x,{checked:i.appearance.reduceAnimations,onCheckedChange:s=>c(t=>({...t,appearance:{...t.appearance,reduceAnimations:s}}))})]})]}),b==="privacy"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Profile Visibility"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Who can see your profile"})]}),e.jsxs("select",{value:i.privacy.profileVisibility,onChange:s=>c(t=>({...t,privacy:{...t.privacy,profileVisibility:s.target.value}})),className:"px-3 py-2 border border-[#dde3eb] rounded-lg text-sm bg-white text-[#0a1628]",children:[e.jsx("option",{value:"everyone",children:"Everyone"}),e.jsx("option",{value:"students_and_staff",children:"Students and Staff"}),e.jsx("option",{value:"private",children:"Private"})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Show Activity Status"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Let others see when you're online"})]}),e.jsx(x,{checked:i.privacy.showActivityStatus,onCheckedChange:s=>c(t=>({...t,privacy:{...t.privacy,showActivityStatus:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Data Sharing"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Share anonymous usage data"})]}),e.jsx(x,{checked:i.privacy.dataSharing,onCheckedChange:s=>c(t=>({...t,privacy:{...t.privacy,dataSharing:s}}))})]})]}),b==="learning"&&o==="student"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Daily XP Goal"}),e.jsx(n,{type:"number",value:i.learning.dailyXpGoal,onChange:s=>c(t=>({...t,learning:{...t.learning,dailyXpGoal:Number(s.target.value||0)}})),className:"max-w-xs"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Preferred Study Time"}),e.jsxs("select",{value:i.learning.preferredStudyTime,onChange:s=>c(t=>({...t,learning:{...t.learning,preferredStudyTime:s.target.value}})),className:"px-3 py-2 border border-[#dde3eb] rounded-lg text-sm w-full max-w-xs bg-white text-[#0a1628]",children:[e.jsx("option",{value:"morning",children:"Morning (6AM - 12PM)"}),e.jsx("option",{value:"afternoon",children:"Afternoon (12PM - 6PM)"}),e.jsx("option",{value:"evening",children:"Evening (6PM - 12PM)"}),e.jsx("option",{value:"night",children:"Night (12AM - 6AM)"})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Auto-play Next Lesson"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Automatically start the next lesson"})]}),e.jsx(x,{checked:i.learning.autoPlayLessons,onCheckedChange:s=>c(t=>({...t,learning:{...t.learning,autoPlayLessons:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Show Hints During Quizzes"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Display helpful hints for questions"})]}),e.jsx(x,{checked:i.learning.showHints,onCheckedChange:s=>c(t=>({...t,learning:{...t.learning,showHints:s}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Quiz Difficulty Preference"}),e.jsxs("select",{value:i.learning.quizDifficultyPreference,onChange:s=>c(t=>({...t,learning:{...t.learning,quizDifficultyPreference:s.target.value}})),className:"px-3 py-2 border border-[#dde3eb] rounded-lg text-sm w-full max-w-xs bg-white text-[#0a1628]",children:[e.jsx("option",{value:"adaptive",children:"Adaptive (Recommended)"}),e.jsx("option",{value:"easy",children:"Easy"}),e.jsx("option",{value:"medium",children:"Medium"}),e.jsx("option",{value:"hard",children:"Hard"})]})]}),e.jsxs("div",{className:"pt-4 border-t border-[#dde3eb]",children:[e.jsxs("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:[e.jsx(ws,{size:16,className:"inline mr-2"}),"Study Reminders"]}),e.jsx(n,{type:"time",value:i.learning.studyReminderTime,onChange:s=>c(t=>({...t,learning:{...t.learning,studyReminderTime:s.target.value}})),className:"w-32"})]})]}),b==="teaching"&&o==="teacher"&&e.jsxs("div",{className:"space-y-6",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Quiz Defaults"}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Time Limit (min)"}),e.jsx(n,{type:"number",value:w.quizDefaults.timeLimitMinutes,onChange:s=>C(t=>({...t,quizDefaults:{...t.quizDefaults,timeLimitMinutes:Number(s.target.value)}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Passing Score (%)"}),e.jsx(n,{type:"number",value:w.quizDefaults.passingScore,onChange:s=>C(t=>({...t,quizDefaults:{...t.quizDefaults,passingScore:Number(s.target.value)}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Max Attempts"}),e.jsx(n,{type:"number",value:w.quizDefaults.maxAttempts,onChange:s=>C(t=>({...t,quizDefaults:{...t.quizDefaults,maxAttempts:Number(s.target.value)}}))})]})]}),e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body pt-4",children:"Class Preferences"}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-t border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Student Analytics Visibility"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Let students see their leaderboard rank"})]}),e.jsx(x,{checked:w.studentAnalyticsVisibility,onCheckedChange:s=>C(t=>({...t,studentAnalyticsVisibility:s}))})]})]}),b==="system"&&o==="admin"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Maintenance Mode"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Disable platform access for non-admins"})]}),e.jsx(x,{checked:j.maintenanceMode,onCheckedChange:s=>$(t=>({...t,maintenanceMode:s}))})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Default Grade Level"}),e.jsx(n,{value:j.defaultGradeLevel,disabled:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Default Curriculum"}),e.jsx(n,{value:j.defaultCurriculum,disabled:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Max Class Size"}),e.jsx(n,{type:"number",value:j.maxClassSize,disabled:!0})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Audit Log Visible"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Show audit logs in admin dashboard"})]}),e.jsx(x,{checked:j.auditLogVisible,onCheckedChange:s=>$(t=>({...t,auditLogVisible:s}))})]}),e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body pt-4",children:"AI Configuration"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Model Name"}),e.jsx(n,{value:j.aiConfig.modelName,disabled:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Temperature"}),e.jsx(n,{type:"number",value:j.aiConfig.temperature,disabled:!0})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"API Endpoint"}),e.jsx(n,{value:j.aiConfig.endpoint,disabled:!0})]})]})]}),b==="data"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"p-4 bg-sky-50 border border-sky-200 rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-sky-900 mb-1 font-body",children:"Download Your Data"}),e.jsx("p",{className:"text-xs text-sky-700 mb-3",children:"Export all your learning data and progress"}),e.jsxs(p,{variant:"outline",size:"sm",className:"rounded-xl",onClick:Pe,disabled:B,children:[e.jsx(ve,{size:16,className:"mr-2"}),B?"Exporting...":"Request Data Export"]})]}),e.jsxs("div",{className:"p-4 bg-white border border-[#dde3eb] rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] mb-1 font-body",children:"Clear Cache"}),e.jsx("p",{className:"text-xs text-[#5a6578] mb-3",children:"Free up space by clearing cached data"}),e.jsx(p,{variant:"outline",size:"sm",className:"rounded-xl",onClick:ze,disabled:Y,children:Y?"Clearing...":"Clear Cache"})]}),e.jsxs("div",{className:"p-4 bg-rose-50 border border-rose-200 rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-rose-900 mb-1",children:"Reset Progress"}),e.jsxs("p",{className:"text-xs text-rose-700 mb-3",children:[o==="student"&&"Reset quizzes, diagnostic state, XP, and learning progress for retesting.",o==="teacher"&&"Reset imported records, managed classrooms, and teacher-generated quiz artifacts.",o==="admin"&&"Reset admin testing artifacts like personal audit/content update records."]}),e.jsx(p,{variant:"outline",size:"sm",className:"rounded-xl text-rose-700 border-rose-300",disabled:!E||I,onClick:()=>F(!0),children:I?"Resetting...":"Reset Testing Data"})]}),e.jsxs("div",{className:"p-4 bg-red-50 border border-red-200 rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-red-900 mb-1",children:"Delete Account"}),e.jsx("p",{className:"text-xs text-red-700 mb-3",children:"Permanently delete your account and all data"}),e.jsxs(p,{variant:"outline",size:"sm",className:"rounded-xl text-red-700 border-red-300",onClick:()=>V(!0),disabled:de,children:[e.jsx(ms,{size:16,className:"mr-2"}),de?"Deleting...":"Delete Account"]})]})]})]}),e.jsxs("div",{className:"shrink-0 px-4 sm:px-6 py-3 sm:py-4 border-t border-[#dde3eb] bg-[#edf1f7] flex flex-col sm:flex-row items-stretch sm:items-center justify-between gap-2 sm:gap-0",children:[e.jsx("p",{className:"text-xs text-slate-500 font-body text-center sm:text-left",children:"MathPulse AI v2.1.0"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(p,{variant:"outline",onClick:se,className:"rounded-lg border-[#dde3eb] flex-1 sm:flex-none",disabled:X,children:"Cancel"}),e.jsx(p,{onClick:Ee,className:"rounded-lg bg-sky-600 hover:bg-sky-700 text-white flex-1 sm:flex-none",disabled:X,children:X?"Saving...":"Save Changes"})]})]})]})]})]}),Se&&e.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-[130] bg-black/50 backdrop-blur-sm flex items-center justify-center p-4",onClick:()=>{v||P(!1)},children:e.jsxs(G.div,{initial:{opacity:0,scale:.95,y:12},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:12},transition:{duration:.2},className:"w-full max-w-md rounded-2xl border border-[#dde3eb] bg-[#f7f9fc] shadow-2xl",onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-[#dde3eb] px-6 py-4",children:[e.jsxs("h4",{className:"text-lg font-display font-bold text-[#0a1628]",children:[f==="password"&&"Change Password",f==="email"&&"Change Email",f==="delete"&&"Delete Account"]}),e.jsx("button",{onClick:()=>{v||P(!1)},className:"p-2 rounded-xl hover:bg-[#edf1f7] transition-colors","aria-label":"Close",children:e.jsx(Ne,{size:18,className:"text-[#5a6578]"})})]}),e.jsxs("div",{className:"px-6 py-5 space-y-4",children:[e.jsx("p",{className:"text-sm text-[#5a6578]",children:"Enter your current password to continue."}),e.jsxs("div",{className:"relative",children:[e.jsx(n,{type:Q?"text":"password",value:L,onChange:s=>xe(s.target.value),placeholder:"Current password",autoFocus:!0,className:"pr-10",disabled:v,onKeyDown:s=>{s.key==="Enter"&&fe()}}),e.jsx("button",{type:"button",onClick:()=>he(!Q),className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600",tabIndex:-1,children:Q?e.jsx(hs,{size:16}):e.jsx(us,{size:16})})]}),f==="password"&&e.jsx("div",{className:"relative",children:e.jsx(n,{type:"password",value:W,onChange:s=>ue(s.target.value),placeholder:"New password (min 8 chars)",disabled:v})}),f==="email"&&e.jsx(n,{type:"email",value:O,onChange:s=>be(s.target.value),placeholder:"New email address",disabled:v}),f==="delete"&&e.jsx("p",{className:"text-sm text-red-600 font-medium",children:"This action is permanent and cannot be undone."}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(p,{variant:"outline",onClick:()=>P(!1),disabled:v,children:"Cancel"}),e.jsx(p,{onClick:()=>void fe(),className:f==="delete"?"bg-red-600 hover:bg-red-700 text-white":"bg-sky-600 hover:bg-sky-700 text-white",disabled:v,children:v?"Processing...":f==="delete"?"Delete Forever":"Confirm"})]})]})]})}),e.jsx(je,{isOpen:we,onClose:()=>F(!1),onConfirm:_e,title:"Reset Testing Data?",message:`Reset ${o} testing data? This will clear quizzes, diagnostic assessments, assessment history, XP, and learning progress. This action cannot be undone.`,confirmText:I?"Resetting...":"Reset Data",cancelText:"Cancel",type:"warning",icon:"warning",zIndexClass:"z-[130]"}),e.jsx(je,{isOpen:Ce,onClose:()=>V(!1),onConfirm:Re,title:"Delete Account?",message:"You will need to re-authenticate to permanently delete your account. This cannot be undone.",confirmText:"Continue",cancelText:"Cancel",type:"danger",icon:"delete",zIndexClass:"z-[130]"})]})}):null};export{rt as default}; + */const ks=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],ws=D("smartphone",ks),Cs=()=>{const{userProfile:m,userRole:y}=Me(),[r,z]=a.useState(Le),[_,R]=a.useState(De),[k,T]=a.useState(!1),[q,E]=a.useState(null);a.useEffect(()=>{if(!m?.uid)return;(async()=>{T(!0),E(null);try{if(y==="teacher"){const u=await Fe(m.uid);z(u)}if(y==="admin"){const u=await Ve();R(u)}}catch(u){E(u instanceof Error?u.message:"Failed to load settings")}finally{T(!1)}})()},[m?.uid,y]);const o=a.useCallback(async g=>{if(!m?.uid)return;const u=await qe(m.uid,g);z(u)},[m?.uid]),M=a.useCallback(async g=>{const u=await Ie(g);R(u)},[]);return{teacherPrefs:r,adminConfig:_,loading:k,error:q,saveTeacherPrefs:o,saveAdminConfig:M}},ae=()=>JSON.parse(JSON.stringify(We)),rt=({isOpen:m,onClose:y,profileData:r,onSave:z,settingsData:_,onSaveSettings:R,onApplySettingsPreview:k,onExportData:T,onClearCache:q,onResetData:E})=>{const o=r?.role||"student",{teacherPrefs:M,adminConfig:g,saveTeacherPrefs:u,saveAdminConfig:ke}=Cs(),[b,ne]=a.useState("account"),[l,h]=a.useState({}),[i,ie]=a.useState(ae()),[w,C]=a.useState(M),[j,$]=a.useState(g),[X,re]=a.useState(!1),[I,le]=a.useState(!1),[B,ce]=a.useState(!1),[Y,oe]=a.useState(!1),[de,Ss]=a.useState(!1),[we,F]=a.useState(!1),[Ce,V]=a.useState(!1),[Se,P]=a.useState(!1),[L,xe]=a.useState(""),[f,Ae]=a.useState(null),[v,me]=a.useState(!1),[Q,he]=a.useState(!1),[W,ue]=a.useState(""),[O,be]=a.useState(""),J=a.useRef(!1),K=a.useRef(ae());a.useEffect(()=>{if(!m){J.current=!1;return}if(J.current)return;J.current=!0;const s=_?JSON.parse(JSON.stringify(_)):ae();K.current=s,h({uid:r?.uid,name:r?.name||"",email:r?.email||"",phone:r?.phone||"",photo:r?.photo||"",avatarLayers:r?.avatarLayers,role:r?.role,gender:r?.gender,lrn:r?.lrn||"",grade:r?.grade||"",section:r?.section||"",school:r?.school||"",department:r?.department||"",subject:r?.subject||"",yearsOfExperience:r?.yearsOfExperience||"",qualification:r?.qualification||"",position:r?.position||""}),ie(s),C(M),$(g)},[m,r,_,M,g]),a.useEffect(()=>{m&&k?.(i)},[m,i,k]),a.useEffect(()=>{if(!m)return;const s=t=>{t.key==="Escape"&&(k?.(K.current),y())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[m,y,k]);const Z=a.useMemo(()=>{const s=[{id:"account",label:"Account",icon:Oe},{id:"notifications",label:"Notifications",icon:ge},{id:"appearance",label:"Appearance",icon:gs}];return o==="student"&&(s.push({id:"privacy",label:"Privacy & Security",icon:He}),s.push({id:"learning",label:"Learning",icon:Ge})),o==="teacher"&&s.push({id:"teaching",label:"Teaching",icon:Ue}),o==="admin"&&s.push({id:"system",label:"System",icon:Ns}),s.push({id:"data",label:"Data & Storage",icon:ve}),s},[o]),c=s=>{ie(t=>s(t))},ee=s=>{Ae(s),xe(""),he(!1),s==="password"&&ue(""),s==="email"&&be(l.email||""),P(!0)},fe=async()=>{if(!L.trim()){d.error("Current password is required");return}me(!0);try{if(f==="password"){if(W.length<8){d.error("New password must be at least 8 characters");return}await Ke(L,W),d.success("Password updated")}else if(f==="email"){if(!O.includes("@")){d.error("Enter a valid email");return}await Ze(L,O),h(s=>({...s,email:O})),d.success("Email updated")}else if(f==="delete"){await es(L,l.uid||""),d.success("Account deleted"),y();return}P(!1)}catch(s){d.error(s instanceof Error?s.message:"Authentication failed")}finally{me(!1)}},Ee=async()=>{const s=Je({name:l.name,phone:l.phone});if(s){d.error(s);return}re(!0);try{z&&await z(l),R&&await R(i),o==="teacher"&&await u(w),o==="admin"&&await ke(j),y()}catch(t){d.error(t instanceof Error?t.message:"Failed to save settings")}finally{re(!1)}},se=()=>{P(!1),F(!1),V(!1),k?.(K.current),y()},Pe=async()=>{if(!(!T||B)){ce(!0);try{await T()}catch(s){d.error(s instanceof Error?s.message:"Failed to export data")}finally{ce(!1)}}},ze=async()=>{if(!(!q||Y)){oe(!0);try{await q()}catch(s){d.error(s instanceof Error?s.message:"Failed to clear cache")}finally{oe(!1)}}},_e=async()=>{if(!(!E||I)){F(!1),le(!0);try{await E(),d.success("Testing data reset completed")}catch(s){d.error(s instanceof Error?s.message:"Failed to reset testing data")}finally{le(!1)}}},Re=()=>{V(!1),ee("delete")};return m?e.jsx($e,{children:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"fixed inset-0 z-[100] flex items-end sm:items-center justify-center sm:p-4",children:[e.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:se,className:"absolute inset-0 bg-black/50 backdrop-blur-sm"}),e.jsxs(G.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},className:"relative bg-[#f7f9fc] rounded-t-2xl sm:rounded-2xl shadow-2xl border border-[#dde3eb] w-full sm:max-w-4xl h-[92vh] sm:max-h-[85vh] overflow-hidden flex flex-col sm:flex-row",children:[e.jsxs("div",{className:"hidden sm:flex w-64 flex-shrink-0 bg-slate-50 border-r border-slate-200 flex-col p-6 overflow-y-auto",children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-xl font-display font-bold text-[#0a1628]",children:"Settings"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1 font-body",children:"Manage your preferences"})]}),e.jsx("nav",{className:"space-y-1",children:Z.map(s=>{const t=s.icon;return e.jsxs("button",{onClick:()=>ne(s.id),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-left transition-all ${b===s.id?"bg-sky-50 text-sky-700 shadow-sm":"text-slate-500 hover:bg-slate-100 hover:text-sky-700"}`,children:[e.jsx(t,{size:18}),e.jsx("span",{className:"text-sm font-medium",children:s.label})]},s.id)})})]}),e.jsxs("div",{className:"flex-1 flex flex-col min-h-0",children:[e.jsx("div",{className:"sm:hidden flex items-center border-b border-[#dde3eb] bg-slate-50 overflow-x-auto no-scrollbar px-2",children:Z.map(s=>{const t=s.icon;return e.jsxs("button",{onClick:()=>ne(s.id),className:`flex flex-col items-center gap-0.5 px-3 py-2.5 shrink-0 text-xs font-medium border-b-2 transition-colors ${b===s.id?"border-sky-600 text-sky-700":"border-transparent text-slate-500"}`,children:[e.jsx(t,{size:16}),e.jsx("span",{className:"whitespace-nowrap",children:s.label})]},s.id)})}),e.jsxs("div",{className:"flex items-center justify-between px-4 sm:px-6 py-3 sm:py-4 border-b border-[#dde3eb]",children:[e.jsx("h3",{className:"text-base sm:text-lg font-display font-bold text-[#0a1628]",children:Z.find(s=>s.id===b)?.label}),e.jsx("button",{onClick:se,className:"p-2 hover:bg-[#edf1f7] rounded-xl transition-colors",children:e.jsx(Ne,{size:20,className:"text-[#5a6578]"})})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-4 sm:p-6",children:[b==="account"&&e.jsxs("div",{className:"space-y-6",children:[e.jsx(is,{uid:l.uid,photoURL:l.photo,displayName:l.name,onUploaded:s=>h(t=>({...t,photo:s}))}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Full Name"}),e.jsx(n,{type:"text",value:l.name||"",onChange:s=>h(t=>({...t,name:s.target.value})),maxLength:100,autoComplete:"name",className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Email Address"}),e.jsxs("div",{className:"flex items-center gap-2 max-w-md",children:[e.jsx(n,{type:"email",value:l.email||"",disabled:!0,className:"flex-1 bg-slate-100"}),e.jsx(p,{variant:"outline",size:"sm",onClick:()=>ee("email"),children:"Change"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Phone Number"}),e.jsx(n,{type:"tel",value:l.phone||"",onChange:s=>h(t=>({...t,phone:s.target.value})),maxLength:20,inputMode:"tel",autoComplete:"tel",pattern:"^\\+?[0-9 ()\\-.]{7,20}$",placeholder:"+63 912 345 6789",className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Gender"}),e.jsxs(ss,{value:l.gender||"",onValueChange:s=>h(t=>({...t,gender:s})),children:[e.jsx(ts,{className:"max-w-md bg-white border-[#dde3eb] rounded-lg",children:e.jsx(as,{placeholder:"Select gender (optional)"})}),e.jsxs(ns,{children:[e.jsx(te,{value:"male",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(rs,{className:"size-4 text-blue-500"}),e.jsx("span",{children:"Male"})]})}),e.jsx(te,{value:"female",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ls,{className:"size-4 text-pink-500"}),e.jsx("span",{children:"Female"})]})}),e.jsx(te,{value:"prefer_not_to_say",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(cs,{className:"size-4 text-gray-500"}),e.jsx("span",{children:"Prefer not to say"})]})})]})]})]}),o==="student"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"LRN"}),e.jsx(n,{value:l.lrn||"",onChange:s=>h(t=>({...t,lrn:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Grade Level"}),e.jsx(n,{value:l.grade||"",onChange:s=>h(t=>({...t,grade:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Section"}),e.jsx(n,{value:l.section||"",onChange:s=>h(t=>({...t,section:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"School"}),e.jsx(n,{value:l.school||"",onChange:s=>h(t=>({...t,school:s.target.value})),className:"max-w-md"})]})]}),o==="teacher"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Department"}),e.jsx(n,{value:l.department||"",onChange:s=>h(t=>({...t,department:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Subject"}),e.jsx(n,{value:l.subject||"",onChange:s=>h(t=>({...t,subject:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Years of Experience"}),e.jsx(n,{value:l.yearsOfExperience||"",onChange:s=>h(t=>({...t,yearsOfExperience:s.target.value})),className:"max-w-md"})]})]}),o==="admin"&&e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Position"}),e.jsx(n,{value:l.position||"",onChange:s=>h(t=>({...t,position:s.target.value})),className:"max-w-md"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Change Password"}),e.jsxs(p,{variant:"outline",className:"rounded-xl",onClick:()=>ee("password"),children:[e.jsx(Xe,{size:16,className:"mr-2"}),"Update Password"]})]})]}),b==="notifications"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Push Notifications"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Get notified on your device"})]}),e.jsx(x,{checked:i.notifications.pushNotifications,onCheckedChange:s=>c(t=>({...t,notifications:{...t.notifications,pushNotifications:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Sound Effects"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Play sounds for notifications"})]}),e.jsx(x,{checked:i.notifications.soundEnabled,onCheckedChange:s=>c(t=>({...t,notifications:{...t.notifications,soundEnabled:s}}))})]}),o==="teacher"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Student Submissions"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Notify when students submit work"})]}),e.jsx(x,{checked:w.notifyOnSubmission,onCheckedChange:s=>C(t=>({...t,notifyOnSubmission:s}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Student Activity Alerts"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Notify on at-risk student activity"})]}),e.jsx(x,{checked:w.notifyOnStudentActivity,onCheckedChange:s=>C(t=>({...t,notifyOnStudentActivity:s}))})]})]}),e.jsxs("div",{className:"pt-4",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] mb-3 font-body",children:"Notification Types"}),e.jsx("div",{className:"space-y-3",children:[{key:"quizReminders",label:"Quiz Reminders"},{key:"newContent",label:"New Content"},{key:"achievements",label:"Achievements"},{key:"streakAlerts",label:"Streak Alerts"},{key:"weeklySummary",label:"Weekly Summary"}].map(s=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("input",{type:"checkbox",checked:i.notifications.notificationTypes[s.key],onChange:t=>c(N=>({...N,notifications:{...N.notifications,notificationTypes:{...N.notifications.notificationTypes,[s.key]:t.target.checked}}})),className:"w-4 h-4 rounded border-[#dde3eb] text-sky-600 focus:ring-sky-500"}),e.jsx("span",{className:"text-sm text-[#0a1628] font-body",children:s.label})]},s.key))})]}),e.jsxs("div",{className:"pt-4 border-t border-[#dde3eb]",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] mb-1 font-body",children:"Push Notification Categories"}),e.jsx("p",{className:"text-xs text-slate-500 mb-3",children:"Choose which kinds of pushes you want to receive on this device."}),e.jsxs("div",{className:"flex items-center justify-between py-2 mb-2 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h5",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Enable Push (master)"}),e.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:"Turn off to silence ALL push categories."})]}),e.jsx(x,{checked:i.pushPreferences.pushEnabled,onCheckedChange:s=>c(t=>({...t,pushPreferences:{...t.pushPreferences,pushEnabled:s}}))})]}),e.jsx("div",{className:"space-y-2",children:[{key:"achievement",label:"Achievements unlocked",icon:Be},{key:"quiz_battle",label:"Quiz battle invites & results",icon:Ye},{key:"daily_reward",label:"Daily reward reminders",icon:ys},{key:"assignment",label:"New assignments / deadlines",icon:fs},{key:"streak_reminder",label:"Streak reminders",icon:Qe},{key:"leaderboard",label:"Leaderboard updates",icon:os},{key:"system",label:"System announcements",icon:ds}].map(s=>{const t=s.key,N=s.icon;return e.jsxs("label",{className:"flex items-center justify-between py-1.5",children:[e.jsxs("span",{className:"text-sm text-[#0a1628] font-body flex items-center gap-2",children:[e.jsx(N,{className:"h-4 w-4 text-[#6c47ff]"}),s.label]}),e.jsx(x,{checked:!!i.pushPreferences[t],onCheckedChange:pe=>c(H=>({...H,pushPreferences:{...H.pushPreferences,[s.key]:pe}})),disabled:!i.pushPreferences.pushEnabled&&t!=="pushEnabled"})]},s.key)})}),e.jsx("div",{className:"mt-4",children:e.jsxs(p,{type:"button",variant:"outline",size:"sm",onClick:async()=>{try{const{requestPushPermissionAndRegister:s}=await U(async()=>{const{requestPushPermissionAndRegister:S}=await import("./index-pcr0VEFr.js").then(A=>A.b7);return{requestPushPermissionAndRegister:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),{auth:t}=await U(async()=>{const{auth:S}=await import("./index-pcr0VEFr.js").then(A=>A.b5);return{auth:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),N=t.currentUser?.uid;if(!N){d.error("You must be signed in to test push notifications.");return}if(!await s(N)){d.error("Push setup failed. Check that VITE_FIREBASE_VAPID_KEY is configured and notifications are allowed.");return}const{httpsCallable:H}=await U(async()=>{const{httpsCallable:S}=await import("./vendor-firebase-core-whx8i25I.js").then(A=>A.a9);return{httpsCallable:S}},[]),{cloudFunctions:Te}=await U(async()=>{const{cloudFunctions:S}=await import("./index-pcr0VEFr.js").then(A=>A.b5);return{cloudFunctions:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),ye=(await H(Te,"sendTestPush")({}))?.data?.sent??0;ye>0?d.success(`Sent test push to ${ye} device(s).`):d.message("No active devices found. Enable browser notifications first.")}catch(s){d.error(s instanceof Error?s.message:"Failed to send test push")}},children:[e.jsx(ge,{size:14,className:"mr-2"}),"Send test push"]})})]}),e.jsxs("div",{className:"pt-4 border-t border-[#dde3eb]",children:[e.jsxs("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:[e.jsx(xs,{size:16,className:"inline mr-2"}),"Quiet Hours"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(n,{type:"time",value:i.notifications.quietHours.start,onChange:s=>c(t=>({...t,notifications:{...t.notifications,quietHours:{...t.notifications.quietHours,start:s.target.value}}})),className:"w-32"}),e.jsx("span",{className:"text-[#5a6578]",children:"to"}),e.jsx(n,{type:"time",value:i.notifications.quietHours.end,onChange:s=>c(t=>({...t,notifications:{...t.notifications,quietHours:{...t.notifications.quietHours,end:s.target.value}}})),className:"w-32"})]})]})]}),b==="appearance"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Dark Mode"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Toggle dark theme"})]}),e.jsx(x,{checked:i.appearance.darkMode,onCheckedChange:s=>c(t=>({...t,appearance:{...t.appearance,darkMode:s}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-3 block font-body uppercase tracking-wider text-xs",children:"Font Size"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-xs text-slate-500",children:"Small"}),e.jsx("input",{type:"range",min:"12",max:"20",value:i.appearance.fontSize,onChange:s=>c(t=>({...t,appearance:{...t.appearance,fontSize:Number(s.target.value)}})),className:"flex-1"}),e.jsx("span",{className:"text-xs text-slate-500",children:"Large"}),e.jsxs("span",{className:"text-xs font-mono text-slate-600 w-8",children:[i.appearance.fontSize,"px"]})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Compact View"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Show more content on screen"})]}),e.jsx(x,{checked:i.appearance.compactView,onCheckedChange:s=>c(t=>({...t,appearance:{...t.appearance,compactView:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Reduce Animations"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Minimize motion effects"})]}),e.jsx(x,{checked:i.appearance.reduceAnimations,onCheckedChange:s=>c(t=>({...t,appearance:{...t.appearance,reduceAnimations:s}}))})]})]}),b==="privacy"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Profile Visibility"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Who can see your profile"})]}),e.jsxs("select",{value:i.privacy.profileVisibility,onChange:s=>c(t=>({...t,privacy:{...t.privacy,profileVisibility:s.target.value}})),className:"px-3 py-2 border border-[#dde3eb] rounded-lg text-sm bg-white text-[#0a1628]",children:[e.jsx("option",{value:"everyone",children:"Everyone"}),e.jsx("option",{value:"students_and_staff",children:"Students and Staff"}),e.jsx("option",{value:"private",children:"Private"})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Show Activity Status"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Let others see when you're online"})]}),e.jsx(x,{checked:i.privacy.showActivityStatus,onCheckedChange:s=>c(t=>({...t,privacy:{...t.privacy,showActivityStatus:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Data Sharing"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Share anonymous usage data"})]}),e.jsx(x,{checked:i.privacy.dataSharing,onCheckedChange:s=>c(t=>({...t,privacy:{...t.privacy,dataSharing:s}}))})]})]}),b==="learning"&&o==="student"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Daily XP Goal"}),e.jsx(n,{type:"number",value:i.learning.dailyXpGoal,onChange:s=>c(t=>({...t,learning:{...t.learning,dailyXpGoal:Number(s.target.value||0)}})),className:"max-w-xs"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Preferred Study Time"}),e.jsxs("select",{value:i.learning.preferredStudyTime,onChange:s=>c(t=>({...t,learning:{...t.learning,preferredStudyTime:s.target.value}})),className:"px-3 py-2 border border-[#dde3eb] rounded-lg text-sm w-full max-w-xs bg-white text-[#0a1628]",children:[e.jsx("option",{value:"morning",children:"Morning (6AM - 12PM)"}),e.jsx("option",{value:"afternoon",children:"Afternoon (12PM - 6PM)"}),e.jsx("option",{value:"evening",children:"Evening (6PM - 12PM)"}),e.jsx("option",{value:"night",children:"Night (12AM - 6AM)"})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Auto-play Next Lesson"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Automatically start the next lesson"})]}),e.jsx(x,{checked:i.learning.autoPlayLessons,onCheckedChange:s=>c(t=>({...t,learning:{...t.learning,autoPlayLessons:s}}))})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Show Hints During Quizzes"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Display helpful hints for questions"})]}),e.jsx(x,{checked:i.learning.showHints,onCheckedChange:s=>c(t=>({...t,learning:{...t.learning,showHints:s}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:"Quiz Difficulty Preference"}),e.jsxs("select",{value:i.learning.quizDifficultyPreference,onChange:s=>c(t=>({...t,learning:{...t.learning,quizDifficultyPreference:s.target.value}})),className:"px-3 py-2 border border-[#dde3eb] rounded-lg text-sm w-full max-w-xs bg-white text-[#0a1628]",children:[e.jsx("option",{value:"adaptive",children:"Adaptive (Recommended)"}),e.jsx("option",{value:"easy",children:"Easy"}),e.jsx("option",{value:"medium",children:"Medium"}),e.jsx("option",{value:"hard",children:"Hard"})]})]}),e.jsxs("div",{className:"pt-4 border-t border-[#dde3eb]",children:[e.jsxs("label",{className:"text-sm font-bold text-[#5a6578] mb-2 block font-body uppercase tracking-wider text-xs",children:[e.jsx(ws,{size:16,className:"inline mr-2"}),"Study Reminders"]}),e.jsx(n,{type:"time",value:i.learning.studyReminderTime,onChange:s=>c(t=>({...t,learning:{...t.learning,studyReminderTime:s.target.value}})),className:"w-32"})]})]}),b==="teaching"&&o==="teacher"&&e.jsxs("div",{className:"space-y-6",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Quiz Defaults"}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Time Limit (min)"}),e.jsx(n,{type:"number",value:w.quizDefaults.timeLimitMinutes,onChange:s=>C(t=>({...t,quizDefaults:{...t.quizDefaults,timeLimitMinutes:Number(s.target.value)}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Passing Score (%)"}),e.jsx(n,{type:"number",value:w.quizDefaults.passingScore,onChange:s=>C(t=>({...t,quizDefaults:{...t.quizDefaults,passingScore:Number(s.target.value)}}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Max Attempts"}),e.jsx(n,{type:"number",value:w.quizDefaults.maxAttempts,onChange:s=>C(t=>({...t,quizDefaults:{...t.quizDefaults,maxAttempts:Number(s.target.value)}}))})]})]}),e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body pt-4",children:"Class Preferences"}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-t border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Student Analytics Visibility"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Let students see their leaderboard rank"})]}),e.jsx(x,{checked:w.studentAnalyticsVisibility,onCheckedChange:s=>C(t=>({...t,studentAnalyticsVisibility:s}))})]})]}),b==="system"&&o==="admin"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Maintenance Mode"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Disable platform access for non-admins"})]}),e.jsx(x,{checked:j.maintenanceMode,onCheckedChange:s=>$(t=>({...t,maintenanceMode:s}))})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Default Grade Level"}),e.jsx(n,{value:j.defaultGradeLevel,disabled:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Default Curriculum"}),e.jsx(n,{value:j.defaultCurriculum,disabled:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Max Class Size"}),e.jsx(n,{type:"number",value:j.maxClassSize,disabled:!0})]})]}),e.jsxs("div",{className:"flex items-center justify-between py-3 border-b border-[#dde3eb]",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body",children:"Audit Log Visible"}),e.jsx("p",{className:"text-xs text-slate-500 mt-1",children:"Show audit logs in admin dashboard"})]}),e.jsx(x,{checked:j.auditLogVisible,onCheckedChange:s=>$(t=>({...t,auditLogVisible:s}))})]}),e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] font-body pt-4",children:"AI Configuration"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Model Name"}),e.jsx(n,{value:j.aiConfig.modelName,disabled:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"Temperature"}),e.jsx(n,{type:"number",value:j.aiConfig.temperature,disabled:!0})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{className:"text-xs text-[#5a6578] block mb-1",children:"API Endpoint"}),e.jsx(n,{value:j.aiConfig.endpoint,disabled:!0})]})]})]}),b==="data"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"p-4 bg-sky-50 border border-sky-200 rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-sky-900 mb-1 font-body",children:"Download Your Data"}),e.jsx("p",{className:"text-xs text-sky-700 mb-3",children:"Export all your learning data and progress"}),e.jsxs(p,{variant:"outline",size:"sm",className:"rounded-xl",onClick:Pe,disabled:B,children:[e.jsx(ve,{size:16,className:"mr-2"}),B?"Exporting...":"Request Data Export"]})]}),e.jsxs("div",{className:"p-4 bg-white border border-[#dde3eb] rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] mb-1 font-body",children:"Clear Cache"}),e.jsx("p",{className:"text-xs text-[#5a6578] mb-3",children:"Free up space by clearing cached data"}),e.jsx(p,{variant:"outline",size:"sm",className:"rounded-xl",onClick:ze,disabled:Y,children:Y?"Clearing...":"Clear Cache"})]}),e.jsxs("div",{className:"p-4 bg-rose-50 border border-rose-200 rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-rose-900 mb-1",children:"Reset Progress"}),e.jsxs("p",{className:"text-xs text-rose-700 mb-3",children:[o==="student"&&"Reset quizzes, diagnostic state, XP, and learning progress for retesting.",o==="teacher"&&"Reset imported records, managed classrooms, and teacher-generated quiz artifacts.",o==="admin"&&"Reset admin testing artifacts like personal audit/content update records."]}),e.jsx(p,{variant:"outline",size:"sm",className:"rounded-xl text-rose-700 border-rose-300",disabled:!E||I,onClick:()=>F(!0),children:I?"Resetting...":"Reset Testing Data"})]}),e.jsxs("div",{className:"p-4 bg-red-50 border border-red-200 rounded-xl",children:[e.jsx("h4",{className:"text-sm font-bold text-red-900 mb-1",children:"Delete Account"}),e.jsx("p",{className:"text-xs text-red-700 mb-3",children:"Permanently delete your account and all data"}),e.jsxs(p,{variant:"outline",size:"sm",className:"rounded-xl text-red-700 border-red-300",onClick:()=>V(!0),disabled:de,children:[e.jsx(ms,{size:16,className:"mr-2"}),de?"Deleting...":"Delete Account"]})]})]})]}),e.jsxs("div",{className:"shrink-0 px-4 sm:px-6 py-3 sm:py-4 border-t border-[#dde3eb] bg-[#edf1f7] flex flex-col sm:flex-row items-stretch sm:items-center justify-between gap-2 sm:gap-0",children:[e.jsx("p",{className:"text-xs text-slate-500 font-body text-center sm:text-left",children:"MathPulse AI v2.1.0"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(p,{variant:"outline",onClick:se,className:"rounded-lg border-[#dde3eb] flex-1 sm:flex-none",disabled:X,children:"Cancel"}),e.jsx(p,{onClick:Ee,className:"rounded-lg bg-sky-600 hover:bg-sky-700 text-white flex-1 sm:flex-none",disabled:X,children:X?"Saving...":"Save Changes"})]})]})]})]})]}),Se&&e.jsx(G.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-[130] bg-black/50 backdrop-blur-sm flex items-center justify-center p-4",onClick:()=>{v||P(!1)},children:e.jsxs(G.div,{initial:{opacity:0,scale:.95,y:12},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:12},transition:{duration:.2},className:"w-full max-w-md rounded-2xl border border-[#dde3eb] bg-[#f7f9fc] shadow-2xl",onClick:s=>s.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-[#dde3eb] px-6 py-4",children:[e.jsxs("h4",{className:"text-lg font-display font-bold text-[#0a1628]",children:[f==="password"&&"Change Password",f==="email"&&"Change Email",f==="delete"&&"Delete Account"]}),e.jsx("button",{onClick:()=>{v||P(!1)},className:"p-2 rounded-xl hover:bg-[#edf1f7] transition-colors","aria-label":"Close",children:e.jsx(Ne,{size:18,className:"text-[#5a6578]"})})]}),e.jsxs("div",{className:"px-6 py-5 space-y-4",children:[e.jsx("p",{className:"text-sm text-[#5a6578]",children:"Enter your current password to continue."}),e.jsxs("div",{className:"relative",children:[e.jsx(n,{type:Q?"text":"password",value:L,onChange:s=>xe(s.target.value),placeholder:"Current password",autoFocus:!0,className:"pr-10",disabled:v,onKeyDown:s=>{s.key==="Enter"&&fe()}}),e.jsx("button",{type:"button",onClick:()=>he(!Q),className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600",tabIndex:-1,children:Q?e.jsx(hs,{size:16}):e.jsx(us,{size:16})})]}),f==="password"&&e.jsx("div",{className:"relative",children:e.jsx(n,{type:"password",value:W,onChange:s=>ue(s.target.value),placeholder:"New password (min 8 chars)",disabled:v})}),f==="email"&&e.jsx(n,{type:"email",value:O,onChange:s=>be(s.target.value),placeholder:"New email address",disabled:v}),f==="delete"&&e.jsx("p",{className:"text-sm text-red-600 font-medium",children:"This action is permanent and cannot be undone."}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(p,{variant:"outline",onClick:()=>P(!1),disabled:v,children:"Cancel"}),e.jsx(p,{onClick:()=>void fe(),className:f==="delete"?"bg-red-600 hover:bg-red-700 text-white":"bg-sky-600 hover:bg-sky-700 text-white",disabled:v,children:v?"Processing...":f==="delete"?"Delete Forever":"Confirm"})]})]})]})}),e.jsx(je,{isOpen:we,onClose:()=>F(!1),onConfirm:_e,title:"Reset Testing Data?",message:`Reset ${o} testing data? This will clear quizzes, diagnostic assessments, assessment history, XP, and learning progress. This action cannot be undone.`,confirmText:I?"Resetting...":"Reset Data",cancelText:"Cancel",type:"warning",icon:"warning",zIndexClass:"z-[130]"}),e.jsx(je,{isOpen:Ce,onClose:()=>V(!1),onConfirm:Re,title:"Delete Account?",message:"You will need to re-authenticate to permanently delete your account. This cannot be undone.",confirmText:"Continue",cancelText:"Cancel",type:"danger",icon:"delete",zIndexClass:"z-[130]"})]})}):null};export{rt as default}; diff --git a/assets/Sidebar-BDEiqlEK.js b/assets/Sidebar-Bm5I2Ejg.js similarity index 93% rename from assets/Sidebar-BDEiqlEK.js rename to assets/Sidebar-Bm5I2Ejg.js index 77b2106c99d96149ae631f9b46a72b70d42092f8..049bc7dcc386570b6404e42fd44bcce8cdb6f9f8 100644 --- a/assets/Sidebar-BDEiqlEK.js +++ b/assets/Sidebar-Bm5I2Ejg.js @@ -1,4 +1,4 @@ -import{r as x,j as e}from"./vendor-react-B4AQeu28.js";import{S as H,a as $,L as u,D as B,M as D}from"./LogoutActionButton-BeDw8qfE.js";import{e as G,m as c,n as P,U as S,G as N,a as m,S as U,a0 as q,E as F}from"./index-Dl2Y5a7s.js";import{T as M,a as L,b as C}from"./tooltip--nIi8N_-.js";import{X as Q}from"./x-wHRRR-gQ.js";import{C as W}from"./chevron-right-D8o3zg2m.js";import{C as R}from"./chevron-left-BLeucdCi.js";import{C as A}from"./chart-column-CaIU59ve.js";import{S as X}from"./shirt-CyYDebXG.js";/** +import{r as x,j as e}from"./vendor-react-B4AQeu28.js";import{S as H,a as $,L as u,D as B,M as D}from"./LogoutActionButton-Bb9kSxNr.js";import{e as G,m as c,n as P,U as S,G as N,a as m,S as U,a0 as q,E as F}from"./index-pcr0VEFr.js";import{T as M,a as L,b as C}from"./tooltip-C238w8wC.js";import{X as Q}from"./x-W9f2bIhn.js";import{C as W}from"./chevron-right-BMVCfzLO.js";import{C as R}from"./chevron-left-DV53pVuv.js";import{C as A}from"./chart-column-BNfaspCb.js";import{S as X}from"./shirt-DVTcv3em.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/SupplementalBanner-D8_daQur.js b/assets/SupplementalBanner-DcjEtH8Q.js similarity index 97% rename from assets/SupplementalBanner-D8_daQur.js rename to assets/SupplementalBanner-DcjEtH8Q.js index b5bf1701915e8896637ecc2ff35d7023bc06389b..bfe9eff4d873db23a6f35ab64f1acf8604de1e9e 100644 --- a/assets/SupplementalBanner-D8_daQur.js +++ b/assets/SupplementalBanner-DcjEtH8Q.js @@ -1 +1 @@ -import{j as e,r as y}from"./vendor-react-B4AQeu28.js";import{h as j,m as p,x as h,a as f,T as m,B as u}from"./index-Dl2Y5a7s.js";import{X as v}from"./x-wHRRR-gQ.js";import{S as w}from"./sparkles-DXDpj3ao.js";import{C as g}from"./chevron-right-D8o3zg2m.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const b={"General Mathematics":[{label:"Functions Deep Dive",description:"Interactive review of function types and graphs",icon:e.jsx(m,{size:14})},{label:"Business Math Basics",description:"Simple & compound interest practice",icon:e.jsx(f,{size:14})}],"Statistics and Probability":[{label:"Distribution Visualizer",description:"Explore normal distribution curves",icon:e.jsx(m,{size:14})},{label:"Hypothesis Practice",description:"Step-by-step hypothesis testing",icon:e.jsx(u,{size:14})}],"Pre-Calculus":[{label:"Conic Sections Explorer",description:"Visual parabola, ellipse, hyperbola tool",icon:e.jsx(m,{size:14})},{label:"Trig Identity Practice",description:"Identity verification drill set",icon:e.jsx(u,{size:14})}],"Basic Calculus":[{label:"Limits Visualizer",description:"Graphical approach to limits",icon:e.jsx(m,{size:14})},{label:"Derivative Rules Drill",description:"Practice chain rule & implicit diff",icon:e.jsx(u,{size:14})}]};function x(i){const s=i.toLowerCase();return s==="functions"||s.includes("function")||s==="businessmath"||s.includes("business")||s==="logic"||s.includes("reason")||s.includes("general")||s.includes("gen-math")||s.includes("gen math")?"General Mathematics":s.includes("stat")||s.includes("prob")?"Statistics and Probability":s.includes("pre-calc")||s.includes("pre calc")||s.includes("precalc")?"Pre-Calculus":s.includes("basic")||s.includes("calc")?"Basic Calculus":null}function N(i){const s=i.trim().toLowerCase();return s==="functions"?"Functions and Graphs":s==="businessmath"?"Business and Financial Mathematics":s==="logic"?"Logic and Reasoning":i}const k=({atRiskSubjects:i=[],onAction:s,onDismiss:n})=>{const[l,a]=y.useState(!1);if(l||i.length===0)return null;const r=()=>{a(!0),n?.()};return e.jsx(j,{children:!l&&e.jsx(p.div,{initial:{opacity:0,y:-10,height:0},animate:{opacity:1,y:0,height:"auto"},exit:{opacity:0,y:-10,height:0},className:"overflow-hidden",children:e.jsxs("div",{className:"relative bg-gradient-to-r from-sky-600 via-sky-500 to-sky-600 rounded-2xl p-5 text-white shadow-lg shadow-sky-500/20",children:[e.jsx("button",{onClick:r,className:"absolute top-3 right-3 w-7 h-7 bg-white/20 hover:bg-white/30 rounded-full flex items-center justify-center transition-colors",children:e.jsx(v,{size:14})}),e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"w-12 h-12 bg-white/20 rounded-xl flex items-center justify-center flex-shrink-0",children:e.jsx(w,{size:24})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"font-bold text-lg mb-1",children:"Supplemental Materials Available"}),e.jsx("p",{className:"text-sky-100 text-sm mb-3",children:"Based on your diagnostic assessment, we've identified topics that could use extra practice. Strengthening these areas will improve your overall performance."}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-3",children:i.map(t=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 bg-white/20 backdrop-blur-sm px-3 py-1 rounded-full text-xs font-semibold",children:[e.jsx(h,{size:12}),N(t)]},t))}),e.jsxs("button",{onClick:s,className:"inline-flex items-center gap-2 bg-white text-sky-600 font-bold text-sm px-4 py-2 rounded-xl hover:bg-sky-50 transition-colors",children:["Review Topics",e.jsx(g,{size:16})]})]})]})]})})})},z=({quizSubject:i,atRiskSubjects:s=[]})=>{const n=i?x(i):null;if(!s.some(r=>{const t=x(r);return t&&t===n})||!n)return null;const a=b[n]||[];return e.jsx(p.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},className:"mb-4 overflow-hidden",children:e.jsxs("div",{className:"bg-gradient-to-r from-rose-50 to-orange-50 border border-rose-200 rounded-xl p-3",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1.5",children:[e.jsx(h,{size:14,className:"text-rose-600"}),e.jsxs("span",{className:"text-xs font-bold text-rose-800",children:["Supplemental Focus Area — ",n]})]}),e.jsx("p",{className:"text-xs text-rose-700 mb-2",children:"This topic was flagged in your diagnostic. Take your time and review the explanations carefully."}),a.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:a.slice(0,2).map((r,t)=>e.jsxs("span",{className:"inline-flex items-center gap-1 bg-rose-100 text-rose-700 px-2 py-0.5 rounded-md text-xs font-medium",children:[r.icon,r.label]},t))})]})})},C=({quizSubject:i,quizScore:s=0,atRiskSubjects:n=[],onAction:l})=>{const a=i?x(i):null,r=n.some(c=>{const d=x(c);return d&&d===a});if(s>=70&&!r)return null;const t=a?b[a]||[]:[],o=s<70;return e.jsx(p.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.5},className:"mt-4",children:e.jsx("div",{className:`rounded-2xl p-4 border-2 ${o?"bg-orange-50 border-orange-200":"bg-sky-50 border-sky-200"}`,children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center flex-shrink-0 ${o?"bg-orange-500":"bg-sky-500"}`,children:e.jsx(f,{size:20,className:"text-white"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"font-display font-bold text-[#0a1628] text-sm mb-1",children:o?"Review Recommended":"Supplemental Materials"}),e.jsx("p",{className:"text-xs text-[#5a6578] mb-2",children:o?`You scored ${s}% on this quiz. We recommend reviewing the following resources to strengthen your understanding.`:"This topic was identified as an area for growth. Check out these additional resources."}),t.length>0&&e.jsx("div",{className:"space-y-1.5 mb-3",children:t.map((c,d)=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:`w-5 h-5 rounded flex items-center justify-center ${o?"bg-orange-100 text-orange-600":"bg-sky-100 text-sky-600"}`,children:c.icon}),e.jsx("span",{className:"font-medium text-[#0a1628]",children:c.label}),e.jsxs("span",{className:"text-slate-500",children:["— ",c.description]})]},d))}),l&&e.jsxs("button",{onClick:l,className:`inline-flex items-center gap-1.5 text-xs font-bold px-3 py-1.5 rounded-lg transition-colors ${o?"bg-orange-500 hover:bg-orange-600 text-white":"bg-sky-500 hover:bg-sky-600 text-white"}`,children:["Review Topics",e.jsx(g,{size:12})]})]})]})})})},I=i=>{switch(i.variant){case"compact":return e.jsx(z,{...i});case"results":return e.jsx(C,{...i});case"full":default:return e.jsx(k,{...i})}};export{I as default}; +import{j as e,r as y}from"./vendor-react-B4AQeu28.js";import{h as j,m as p,x as h,a as f,T as m,B as u}from"./index-pcr0VEFr.js";import{X as v}from"./x-W9f2bIhn.js";import{S as w}from"./sparkles-CcaVyiD_.js";import{C as g}from"./chevron-right-BMVCfzLO.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const b={"General Mathematics":[{label:"Functions Deep Dive",description:"Interactive review of function types and graphs",icon:e.jsx(m,{size:14})},{label:"Business Math Basics",description:"Simple & compound interest practice",icon:e.jsx(f,{size:14})}],"Statistics and Probability":[{label:"Distribution Visualizer",description:"Explore normal distribution curves",icon:e.jsx(m,{size:14})},{label:"Hypothesis Practice",description:"Step-by-step hypothesis testing",icon:e.jsx(u,{size:14})}],"Pre-Calculus":[{label:"Conic Sections Explorer",description:"Visual parabola, ellipse, hyperbola tool",icon:e.jsx(m,{size:14})},{label:"Trig Identity Practice",description:"Identity verification drill set",icon:e.jsx(u,{size:14})}],"Basic Calculus":[{label:"Limits Visualizer",description:"Graphical approach to limits",icon:e.jsx(m,{size:14})},{label:"Derivative Rules Drill",description:"Practice chain rule & implicit diff",icon:e.jsx(u,{size:14})}]};function x(i){const s=i.toLowerCase();return s==="functions"||s.includes("function")||s==="businessmath"||s.includes("business")||s==="logic"||s.includes("reason")||s.includes("general")||s.includes("gen-math")||s.includes("gen math")?"General Mathematics":s.includes("stat")||s.includes("prob")?"Statistics and Probability":s.includes("pre-calc")||s.includes("pre calc")||s.includes("precalc")?"Pre-Calculus":s.includes("basic")||s.includes("calc")?"Basic Calculus":null}function N(i){const s=i.trim().toLowerCase();return s==="functions"?"Functions and Graphs":s==="businessmath"?"Business and Financial Mathematics":s==="logic"?"Logic and Reasoning":i}const k=({atRiskSubjects:i=[],onAction:s,onDismiss:n})=>{const[l,a]=y.useState(!1);if(l||i.length===0)return null;const r=()=>{a(!0),n?.()};return e.jsx(j,{children:!l&&e.jsx(p.div,{initial:{opacity:0,y:-10,height:0},animate:{opacity:1,y:0,height:"auto"},exit:{opacity:0,y:-10,height:0},className:"overflow-hidden",children:e.jsxs("div",{className:"relative bg-gradient-to-r from-sky-600 via-sky-500 to-sky-600 rounded-2xl p-5 text-white shadow-lg shadow-sky-500/20",children:[e.jsx("button",{onClick:r,className:"absolute top-3 right-3 w-7 h-7 bg-white/20 hover:bg-white/30 rounded-full flex items-center justify-center transition-colors",children:e.jsx(v,{size:14})}),e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"w-12 h-12 bg-white/20 rounded-xl flex items-center justify-center flex-shrink-0",children:e.jsx(w,{size:24})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"font-bold text-lg mb-1",children:"Supplemental Materials Available"}),e.jsx("p",{className:"text-sky-100 text-sm mb-3",children:"Based on your diagnostic assessment, we've identified topics that could use extra practice. Strengthening these areas will improve your overall performance."}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-3",children:i.map(t=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 bg-white/20 backdrop-blur-sm px-3 py-1 rounded-full text-xs font-semibold",children:[e.jsx(h,{size:12}),N(t)]},t))}),e.jsxs("button",{onClick:s,className:"inline-flex items-center gap-2 bg-white text-sky-600 font-bold text-sm px-4 py-2 rounded-xl hover:bg-sky-50 transition-colors",children:["Review Topics",e.jsx(g,{size:16})]})]})]})]})})})},z=({quizSubject:i,atRiskSubjects:s=[]})=>{const n=i?x(i):null;if(!s.some(r=>{const t=x(r);return t&&t===n})||!n)return null;const a=b[n]||[];return e.jsx(p.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},className:"mb-4 overflow-hidden",children:e.jsxs("div",{className:"bg-gradient-to-r from-rose-50 to-orange-50 border border-rose-200 rounded-xl p-3",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1.5",children:[e.jsx(h,{size:14,className:"text-rose-600"}),e.jsxs("span",{className:"text-xs font-bold text-rose-800",children:["Supplemental Focus Area — ",n]})]}),e.jsx("p",{className:"text-xs text-rose-700 mb-2",children:"This topic was flagged in your diagnostic. Take your time and review the explanations carefully."}),a.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:a.slice(0,2).map((r,t)=>e.jsxs("span",{className:"inline-flex items-center gap-1 bg-rose-100 text-rose-700 px-2 py-0.5 rounded-md text-xs font-medium",children:[r.icon,r.label]},t))})]})})},C=({quizSubject:i,quizScore:s=0,atRiskSubjects:n=[],onAction:l})=>{const a=i?x(i):null,r=n.some(c=>{const d=x(c);return d&&d===a});if(s>=70&&!r)return null;const t=a?b[a]||[]:[],o=s<70;return e.jsx(p.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:.5},className:"mt-4",children:e.jsx("div",{className:`rounded-2xl p-4 border-2 ${o?"bg-orange-50 border-orange-200":"bg-sky-50 border-sky-200"}`,children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center flex-shrink-0 ${o?"bg-orange-500":"bg-sky-500"}`,children:e.jsx(f,{size:20,className:"text-white"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"font-display font-bold text-[#0a1628] text-sm mb-1",children:o?"Review Recommended":"Supplemental Materials"}),e.jsx("p",{className:"text-xs text-[#5a6578] mb-2",children:o?`You scored ${s}% on this quiz. We recommend reviewing the following resources to strengthen your understanding.`:"This topic was identified as an area for growth. Check out these additional resources."}),t.length>0&&e.jsx("div",{className:"space-y-1.5 mb-3",children:t.map((c,d)=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:`w-5 h-5 rounded flex items-center justify-center ${o?"bg-orange-100 text-orange-600":"bg-sky-100 text-sky-600"}`,children:c.icon}),e.jsx("span",{className:"font-medium text-[#0a1628]",children:c.label}),e.jsxs("span",{className:"text-slate-500",children:["— ",c.description]})]},d))}),l&&e.jsxs("button",{onClick:l,className:`inline-flex items-center gap-1.5 text-xs font-bold px-3 py-1.5 rounded-lg transition-colors ${o?"bg-orange-500 hover:bg-orange-600 text-white":"bg-sky-500 hover:bg-sky-600 text-white"}`,children:["Review Topics",e.jsx(g,{size:12})]})]})]})})})},I=i=>{switch(i.variant){case"compact":return e.jsx(z,{...i});case"results":return e.jsx(C,{...i});case"full":default:return e.jsx(k,{...i})}};export{I as default}; diff --git a/assets/SupplementalPillCarousel-o-QfEIUf.js b/assets/SupplementalPillCarousel-jsoA7qpk.js similarity index 94% rename from assets/SupplementalPillCarousel-o-QfEIUf.js rename to assets/SupplementalPillCarousel-jsoA7qpk.js index b2952d757eca251871799b4eabfdc33f2d7b2692..d8be591420d0166610c46b8438734bac1909387f 100644 --- a/assets/SupplementalPillCarousel-o-QfEIUf.js +++ b/assets/SupplementalPillCarousel-jsoA7qpk.js @@ -1,4 +1,4 @@ -import{r as a,j as e}from"./vendor-react-B4AQeu28.js";import{m as f,x}from"./index-Dl2Y5a7s.js";import{C as n}from"./chevron-right-D8o3zg2m.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const o={pillBg:"#E9D5FF",pillText:"#6B21A8",headerText:"#1F2937",arrowBg:"#F3F4F6"},b={functions:"Functions & Graphs",businessmath:"Business Math",logic:"Logic & Reasoning",statistics:"Statistics",probability:"Probability",precalc:"Pre-Calculus",calculus:"Basic Calculus",geometry:"Geometry",trigonometry:"Trigonometry",algebra:"Algebra"};function g(t){const s=t.toLowerCase().trim();return b[s]||t.split(/[-_]/).map(l=>l.charAt(0).toUpperCase()+l.slice(1)).join(" ")}const L=({atRiskSubjects:t=[],onTopicClick:s})=>{const l=a.useRef(null),[c,m]=a.useState(!1);if(t.length===0)return null;const h=()=>{if(l.current){const{scrollLeft:r,scrollWidth:i,clientWidth:d}=l.current;m(r+d{s?.(r)},u=()=>{l.current&&l.current.scrollBy({left:200,behavior:"smooth"})};return e.jsxs(f.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},className:"mb-4",children:[e.jsx("h3",{className:"text-base font-bold mb-3",style:{color:o.headerText},children:"Recommended for Review"}),e.jsxs("div",{className:"relative flex items-center",children:[e.jsx("div",{ref:l,onScroll:h,className:"flex gap-2 overflow-x-auto scrollbar-hide pb-1",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:t.slice(0,8).map((r,i)=>e.jsxs("button",{onClick:()=>p(r),className:"flex items-center gap-1.5 px-4 py-2 rounded-full text-sm font-semibold transition-all hover:scale-[1.02] whitespace-nowrap",style:{backgroundColor:o.pillBg,color:o.pillText},children:[e.jsx(x,{size:14}),g(r),e.jsx(n,{size:14})]},`${r}-${i}`))}),c&&e.jsx("button",{onClick:u,className:"flex-shrink-0 ml-2 w-8 h-8 rounded-full flex items-center justify-center transition-colors",style:{backgroundColor:o.arrowBg},"aria-label":"Scroll right",children:e.jsx(n,{size:16,className:"text-gray-600"})})]}),e.jsx("style",{children:` +import{r as a,j as e}from"./vendor-react-B4AQeu28.js";import{m as f,x}from"./index-pcr0VEFr.js";import{C as n}from"./chevron-right-BMVCfzLO.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const o={pillBg:"#E9D5FF",pillText:"#6B21A8",headerText:"#1F2937",arrowBg:"#F3F4F6"},b={functions:"Functions & Graphs",businessmath:"Business Math",logic:"Logic & Reasoning",statistics:"Statistics",probability:"Probability",precalc:"Pre-Calculus",calculus:"Basic Calculus",geometry:"Geometry",trigonometry:"Trigonometry",algebra:"Algebra"};function g(t){const s=t.toLowerCase().trim();return b[s]||t.split(/[-_]/).map(l=>l.charAt(0).toUpperCase()+l.slice(1)).join(" ")}const L=({atRiskSubjects:t=[],onTopicClick:s})=>{const l=a.useRef(null),[c,m]=a.useState(!1);if(t.length===0)return null;const h=()=>{if(l.current){const{scrollLeft:r,scrollWidth:i,clientWidth:d}=l.current;m(r+d{s?.(r)},u=()=>{l.current&&l.current.scrollBy({left:200,behavior:"smooth"})};return e.jsxs(f.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},className:"mb-4",children:[e.jsx("h3",{className:"text-base font-bold mb-3",style:{color:o.headerText},children:"Recommended for Review"}),e.jsxs("div",{className:"relative flex items-center",children:[e.jsx("div",{ref:l,onScroll:h,className:"flex gap-2 overflow-x-auto scrollbar-hide pb-1",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:t.slice(0,8).map((r,i)=>e.jsxs("button",{onClick:()=>p(r),className:"flex items-center gap-1.5 px-4 py-2 rounded-full text-sm font-semibold transition-all hover:scale-[1.02] whitespace-nowrap",style:{backgroundColor:o.pillBg,color:o.pillText},children:[e.jsx(x,{size:14}),g(r),e.jsx(n,{size:14})]},`${r}-${i}`))}),c&&e.jsx("button",{onClick:u,className:"flex-shrink-0 ml-2 w-8 h-8 rounded-full flex items-center justify-center transition-colors",style:{backgroundColor:o.arrowBg},"aria-label":"Scroll right",children:e.jsx(n,{size:16,className:"text-gray-600"})})]}),e.jsx("style",{children:` .scrollbar-hide::-webkit-scrollbar { display: none; } diff --git a/assets/TeacherDashboard-BwfdR72-.js b/assets/TeacherDashboard-wimn3zBd.js similarity index 99% rename from assets/TeacherDashboard-BwfdR72-.js rename to assets/TeacherDashboard-wimn3zBd.js index f89efa308bd3156acb0bc0121feb65a5e7416175..1d409d4b26a53bee5c23f734ad55b615639e9cba 100644 --- a/assets/TeacherDashboard-BwfdR72-.js +++ b/assets/TeacherDashboard-wimn3zBd.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Dl2Y5a7s.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-ZLSkO1Xv.css"])))=>i.map(i=>d[i]); -import{e as ht,t as gl,f as jn,g as Ve,_ as _r,u as ds,h as Et,m as Re,i as Ko,j as me,k as bl,l as nt,n as Xo,a as Gt,G as Jo,B as Mr,Z as vl,o as qa,p as dt,A as Zo,U as os,q as vs,T as Ta,r as Ga,C as wl,v as yn,R as zs,w as Nl,x as Xs,y as Sn,z as kn,D as ei,E as jl,F as Ya,H as yl,M as Sl,I as Cn,J as kl,K as Cl}from"./index-Dl2Y5a7s.js";import{d as de,j as e,r as m,c as Ar}from"./vendor-react-B4AQeu28.js";import{B as xt,c as Il}from"./button-pKF8t5En.js";import{I as ws}from"./input-DghAGnRL.js";import Tl from"./ConfirmModal-BO62ig7W.js";import{collection as $t,query as kt,limit as Vr,where as jt,getDocs as Dt,doc as pt,getDoc as js,updateDoc as Zt,serverTimestamp as lt,setDoc as is,Timestamp as El,orderBy as Rl,onSnapshot as ti,deleteDoc as _l}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{X as cs}from"./x-wHRRR-gQ.js";import{S as Os}from"./search-D5s5o6Cr.js";import{C as Mt}from"./check-BoG998GJ.js";import{P as Js}from"./plus-CrmryN2j.js";import{I as ga,F as gs,N as Ml,A as si}from"./NotificationDropdown-CwrXQKJ9.js";import{M as Al,L as zl,D as Ll,S as Dl,a as $l}from"./LogoutActionButton-BeDw8qfE.js";import{s as In,f as ai,L as Ka,d as Fl,p as Ol,a as Bl,A as Xa,P as Pl,b as Hl}from"./quizService-C2o983YM.js";import{S as Gl}from"./vendor-radix-BPuEd8FG.js";import{T as Ql,a as Ul,b as Vl}from"./tooltip--nIi8N_-.js";import{C as Wl}from"./circle-help-7egOqUPg.js";import{E as ql,a as Yl}from"./eye-BEaH2B-8.js";import{S as La}from"./send-Bv1lHqor.js";import{T as ri}from"./trash-2-D0AgwsJy.js";import{C as or}from"./circle-alert-CmKGy6F7.js";import{C as Tt,a as wa}from"./chevron-up-bHLZImYg.js";import{M as Tn}from"./minus-BUZ8QSLu.js";import{C as Ds}from"./chart-column-CaIU59ve.js";import{C as zr,H as En}from"./history-C0vXaWOF.js";import{D as Kl}from"./download-Bvx53dXJ.js";import{C as Ss}from"./chevron-left-BLeucdCi.js";import{C as ys}from"./chevron-right-D8o3zg2m.js";import{S as ni}from"./save-BkInuCbo.js";import{C as Wr}from"./circle-check-OLox8hf3.js";import{S as $s}from"./sparkles-DXDpj3ao.js";import{U as Rn}from"./upload-C4j9TBDs.js";import{u as Xl}from"./useQuery-B50cnw-J.js";import{S as _n,g as Jl,G as Zl,s as Mn}from"./subjects-DcwoUK34.js";import{u as ec}from"./useCurriculum-DnU6Jf3F.js";import{C as qr}from"./circle-check-big-D4jhmnoW.js";import tc from"./ChatMarkdown-C9qC9oWH.js";import{c as sc,a as oi,C as ac,f as rc}from"./formatDistanceToNow-E-4T8g7c.js";import{C as Zs}from"./clock-Dcq6nfrf.js";import{B as Ja}from"./bell-D8HSQb3o.js";import{D as An,a as zn,b as nc,c as oc,d as ic,S as lc}from"./dialog-DuLafn8Q.js";import{S as Ln}from"./skeleton-CWsSRCwx.js";import{u as Vt,r as cc}from"./vendor-xlsx-uZelXSz_.js";import{C as ii}from"./clipboard-check-CVikGlbr.js";import{R as Dn,B as $n,C as Fn,X as On,Y as Bn,T as Pn,a as Hn,b as Gn}from"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";import"./log-out-wnJ21BJr.js";/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-pcr0VEFr.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-Bm8ni9Xq.css"])))=>i.map(i=>d[i]); +import{e as ht,t as gl,f as jn,g as Ve,_ as _r,u as ds,h as Et,m as Re,i as Ko,j as me,k as bl,l as nt,n as Xo,a as Gt,G as Jo,B as Mr,Z as vl,o as qa,p as dt,A as Zo,U as os,q as vs,T as Ta,r as Ga,C as wl,v as yn,R as zs,w as Nl,x as Xs,y as Sn,z as kn,D as ei,E as jl,F as Ya,H as yl,M as Sl,I as Cn,J as kl,K as Cl}from"./index-pcr0VEFr.js";import{d as de,j as e,r as m,c as Ar}from"./vendor-react-B4AQeu28.js";import{B as xt,c as Il}from"./button-AeTtN-Gk.js";import{I as ws}from"./input-DfDzuOXr.js";import Tl from"./ConfirmModal-BMBZzISp.js";import{collection as $t,query as kt,limit as Vr,where as jt,getDocs as Dt,doc as pt,getDoc as js,updateDoc as Zt,serverTimestamp as lt,setDoc as is,Timestamp as El,orderBy as Rl,onSnapshot as ti,deleteDoc as _l}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{X as cs}from"./x-W9f2bIhn.js";import{S as Os}from"./search-NTEnzRsF.js";import{C as Mt}from"./check-DcmcqBba.js";import{P as Js}from"./plus-dU-HIq9R.js";import{I as ga,F as gs,N as Ml,A as si}from"./NotificationDropdown-5cx88QEU.js";import{M as Al,L as zl,D as Ll,S as Dl,a as $l}from"./LogoutActionButton-Bb9kSxNr.js";import{s as In,f as ai,L as Ka,d as Fl,p as Ol,a as Bl,A as Xa,P as Pl,b as Hl}from"./quizService-oId-3Lm2.js";import{S as Gl}from"./vendor-radix-BPuEd8FG.js";import{T as Ql,a as Ul,b as Vl}from"./tooltip-C238w8wC.js";import{C as Wl}from"./circle-help-DA-BsSug.js";import{E as ql,a as Yl}from"./eye-5Jz6KeDY.js";import{S as La}from"./send-gL3P1x3P.js";import{T as ri}from"./trash-2-CcKz2OV0.js";import{C as or}from"./circle-alert-BVTBnraV.js";import{C as Tt,a as wa}from"./chevron-up-D_gmtVKu.js";import{M as Tn}from"./minus-Br3D3UVG.js";import{C as Ds}from"./chart-column-BNfaspCb.js";import{C as zr,H as En}from"./history-CQZVqTob.js";import{D as Kl}from"./download-DnmwFFXB.js";import{C as Ss}from"./chevron-left-DV53pVuv.js";import{C as ys}from"./chevron-right-BMVCfzLO.js";import{S as ni}from"./save-UTAW-exi.js";import{C as Wr}from"./circle-check-DWLljvZa.js";import{S as $s}from"./sparkles-CcaVyiD_.js";import{U as Rn}from"./upload-BDJuFJqK.js";import{u as Xl}from"./useQuery-BbNTyvNN.js";import{S as _n,g as Jl,G as Zl,s as Mn}from"./subjects-DsVN1z_r.js";import{u as ec}from"./useCurriculum-0U0j41i7.js";import{C as qr}from"./circle-check-big-C3Ampp76.js";import tc from"./ChatMarkdown-DD4Fb-Bv.js";import{c as sc,a as oi,C as ac,f as rc}from"./formatDistanceToNow-rY3oGFbJ.js";import{C as Zs}from"./clock-BUvVFwS_.js";import{B as Ja}from"./bell-t5TgufAG.js";import{D as An,a as zn,b as nc,c as oc,d as ic,S as lc}from"./dialog-CD4cPDri.js";import{S as Ln}from"./skeleton-DLZLprS1.js";import{u as Vt,r as cc}from"./vendor-xlsx-uZelXSz_.js";import{C as ii}from"./clipboard-check-CrnXJj6c.js";import{R as Dn,B as $n,C as Fn,X as On,Y as Bn,T as Pn,a as Hn,b as Gn}from"./vendor-charts-D7t7JfSr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-markdown-yqZQ_iQm.js";import"./log-out-CXrb7Klg.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. @@ -89,7 +89,7 @@ import{e as ht,t as gl,f as jn,g as Ve,_ as _r,u as ds,h as Et,m as Re,i as Ko,j * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const $c=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],Dr=ht("wand-sparkles",$c);function Fc(t,s){const a=gl(t);return isNaN(s)?sc(t,NaN):(a.setDate(a.getDate()+s),a)}function mi(t,s){const a=jn(t),r=jn(s);return+a==+r}function Un(t){return mi(t,oi(t))}function Oc(t,s){return Fc(t,-1)}function Vn(t){return mi(t,Oc(oi(t)))}const ir=0,Cs=1,ea=2,ui=4;function Wn(t){return()=>t}function Bc(t){t()}function xi(t,s){return a=>t(s(a))}function qn(t,s){return()=>t(s)}function Pc(t,s){return a=>t(s,a)}function Yr(t){return t!==void 0}function Hc(...t){return()=>{t.map(Bc)}}function ta(){}function lr(t,s){return s(t),t}function Gc(t,s){return s(t)}function Ze(...t){return t}function Ue(t,s){return t(Cs,s)}function Ie(t,s){t(ir,s)}function Kr(t){t(ea)}function tt(t){return t(ui)}function ue(t,s){return Ue(t,Pc(s,ir))}function es(t,s){const a=t(Cs,r=>{a(),s(r)});return a}function Yn(t){let s,a;return r=>o=>{s=o,a&&clearTimeout(a),a=setTimeout(()=>{r(s)},t)}}function pi(t,s){return t===s}function Je(t=pi){let s;return a=>r=>{t(s,r)||(s=r,a(r))}}function ve(t){return s=>a=>{t(a)&&s(a)}}function ie(t){return s=>xi(s,t)}function rs(t){return s=>()=>{s(t)}}function Q(t,...s){const a=Qc(...s);return((r,o)=>{switch(r){case ea:Kr(t);return;case Cs:return Ue(t,a(o))}})}function ns(t,s){return a=>r=>{a(s=t(s,r))}}function Fs(t){return s=>a=>{t>0?t--:s(a)}}function bs(t){let s=null,a;return r=>o=>{s=o,!a&&(a=setTimeout(()=>{a=void 0,r(s)},t))}}function Te(...t){const s=new Array(t.length);let a=0,r=null;const o=2**t.length-1;return t.forEach((n,i)=>{const l=2**i;Ue(n,c=>{const d=a;a|=l,s[i]=c,d!==o&&a===o&&r&&(r(),r=null)})}),n=>i=>{const l=()=>{n([i].concat(s))};a===o?l():r=l}}function Qc(...t){return s=>t.reduceRight(Gc,s)}function Uc(t){let s,a;const r=()=>s?.();return function(o,n){switch(o){case Cs:return n?a===n?void 0:(r(),a=n,s=Ue(t,n),s):(r(),ta);case ea:r(),a=null;return}}}function W(t){let s=t;const a=Le();return((r,o)=>{switch(r){case ir:s=o;break;case Cs:{o(s);break}case ui:return s}return a(r,o)})}function yt(t,s){return lr(W(s),a=>ue(t,a))}function Le(){const t=[];return((s,a)=>{switch(s){case ir:t.slice().forEach(r=>{r(a)});return;case ea:t.splice(0,t.length);return;case Cs:return t.push(a),()=>{const r=t.indexOf(a);r>-1&&t.splice(r,1)}}})}function zt(t){return lr(Le(),s=>ue(t,s))}function He(t,s=[],{singleton:a}={singleton:!0}){return{constructor:t,dependencies:s,id:Vc(),singleton:a}}const Vc=()=>Symbol();function Wc(t){const s=new Map,a=({constructor:r,dependencies:o,id:n,singleton:i})=>{if(i&&s.has(n))return s.get(n);const l=r(o.map(c=>a(c)));return i&&s.set(n,l),l};return a(t)}function ct(...t){const s=Le(),a=new Array(t.length);let r=0;const o=2**t.length-1;return t.forEach((n,i)=>{const l=2**i;Ue(n,c=>{a[i]=c,r|=l,r===o&&Ie(s,a)})}),function(n,i){switch(n){case ea:{Kr(s);return}case Cs:return r===o&&i(a),Ue(s,i)}}}function be(t,s=pi){return Q(t,Je(s))}function $r(...t){return function(s,a){switch(s){case ea:return;case Cs:return Hc(...t.map(r=>Ue(r,a)))}}}const ut={DEBUG:0,INFO:1,WARN:2,ERROR:3},qc={[ut.DEBUG]:"debug",[ut.ERROR]:"error",[ut.INFO]:"log",[ut.WARN]:"warn"},Yc=()=>typeof globalThis>"u"?window:globalThis,Is=He(()=>{const t=W(ut.ERROR);return{log:W((s,a,r=ut.INFO)=>{const o=Yc().VIRTUOSO_LOG_LEVEL??tt(t);r>=o&&console[qc[r]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",s,a)}),logLevel:t}},[],{singleton:!0});function Bs(t,s,a){return Xr(t,s,a).callbackRef}function Xr(t,s,a){const r=de.useRef(null);let o=i=>{};const n=de.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(i=>{const l=()=>{const c=i[0].target;c.offsetParent!==null&&t(c)};a?l():requestAnimationFrame(l)}):null,[t,a]);return o=i=>{i&&s?(n?.observe(i),r.current=i):(r.current&&n?.unobserve(r.current),r.current=null)},{callbackRef:o,ref:r}}function Kc(t,s,a,r,o,n,i,l,c){const d=de.useCallback(u=>{const f=Xc(u.children,s,l?"offsetWidth":"offsetHeight",o);let h=u.parentElement;for(;h.dataset.virtuosoScroller===void 0;)h=h.parentElement;const b=h.lastElementChild.dataset.viewportType==="window";let k;b&&(k=h.ownerDocument.defaultView);const j=i?l?i.scrollLeft:i.scrollTop:b?l?k.scrollX||k.document.documentElement.scrollLeft:k.scrollY||k.document.documentElement.scrollTop:l?h.scrollLeft:h.scrollTop,S=i?l?i.scrollWidth:i.scrollHeight:b?l?k.document.documentElement.scrollWidth:k.document.documentElement.scrollHeight:l?h.scrollWidth:h.scrollHeight,p=i?l?i.offsetWidth:i.offsetHeight:b?l?k.innerWidth:k.innerHeight:l?h.offsetWidth:h.offsetHeight;r({scrollHeight:S,scrollTop:Math.max(j,0),viewportHeight:p}),n?.(l?Kn("column-gap",getComputedStyle(u).columnGap,o):Kn("row-gap",getComputedStyle(u).rowGap,o)),f!==null&&t(f)},[t,s,o,n,i,r,l]);return Xr(d,a,c)}function Xc(t,s,a,r){const o=t.length;if(o===0)return null;const n=[];for(let i=0;i{if(!c?.offsetParent)return;const d=c.getBoundingClientRect(),u=d.width;let f,h;if(s){const b=s.getBoundingClientRect(),k=d.top-b.top;h=b.height-Math.max(0,k),f=k+s.scrollTop}else{const b=i.current.ownerDocument.defaultView;h=b.innerHeight-Math.max(0,d.top),f=d.top+b.scrollY}r.current={listHeight:d.height,offsetTop:f,visibleHeight:h,visibleWidth:u},t(r.current)},[t,s]),{callbackRef:n,ref:i}=Xr(o,!0,a),l=de.useCallback(()=>{o(i.current)},[o,i]);return de.useEffect(()=>{if(s){s.addEventListener("scroll",l);const d=new ResizeObserver(()=>{requestAnimationFrame(l)});return d.observe(s),()=>{s.removeEventListener("scroll",l),d.unobserve(s)}}const c=i.current?.ownerDocument.defaultView;return c?.addEventListener("scroll",l),c?.addEventListener("resize",l),()=>{c?.removeEventListener("scroll",l),c?.removeEventListener("resize",l)}},[l,s,i]),n}const Ct=He(()=>{const t=Le(),s=Le(),a=W(0),r=Le(),o=W(0),n=Le(),i=Le(),l=W(0),c=W(0),d=W(0),u=W(0),f=Le(),h=Le(),b=W(!1),k=W(!1),j=W(!1);return ue(Q(t,ie(({scrollTop:S})=>S)),s),ue(Q(t,ie(({scrollHeight:S})=>S)),i),ue(s,o),{deviation:a,fixedFooterHeight:d,fixedHeaderHeight:c,footerHeight:u,headerHeight:l,horizontalDirection:k,scrollBy:h,scrollContainerState:t,scrollHeight:i,scrollingInProgress:b,scrollTo:f,scrollTop:s,skipAnimationFrameInResizeObserver:j,smoothScrollTargetReached:r,statefulScrollTop:o,viewportHeight:n}},[],{singleton:!0}),Na={lvl:0};function fi(t,s){const a=t.length;if(a===0)return[];let{index:r,value:o}=s(t[0]);const n=[];for(let i=1;is&&(l=l.concat(Or(o,s,a))),r>=s&&r<=a&&l.push({k:r,v:i}),r<=a&&(l=l.concat(Or(n,s,a))),l}function Qa(t){const{l:s,lvl:a,r}=t;if(r.lvl>=a-1&&s.lvl>=a-1)return t;if(a>r.lvl+1){if(vr(s))return wi(mt(t,{lvl:a-1}));if(!qe(s)&&!qe(s.r))return mt(s.r,{l:mt(s,{r:s.r.l}),lvl:a,r:mt(t,{l:s.r.r,lvl:a-1})});throw new Error("Unexpected empty nodes")}if(vr(t))return Br(mt(t,{lvl:a-1}));if(!qe(r)&&!qe(r.l)){const o=r.l,n=vr(o)?r.lvl-1:r.lvl;return mt(o,{l:mt(t,{lvl:a-1,r:o.l}),lvl:o.lvl+1,r:Br(mt(r,{l:o.r,lvl:n}))})}throw new Error("Unexpected empty nodes")}function mt(t,s){return vi(s.k!==void 0?s.k:t.k,s.v!==void 0?s.v:t.v,s.lvl!==void 0?s.lvl:t.lvl,s.l!==void 0?s.l:t.l,s.r!==void 0?s.r:t.r)}function gi(t){return qe(t.r)?t.l:Qa(mt(t,{r:gi(t.r)}))}function vr(t){return qe(t)||t.lvl>t.r.lvl}function bi(t){return qe(t.r)?[t.k,t.v]:bi(t.r)}function vi(t,s,a,r=Na,o=Na){return{k:t,l:r,lvl:a,r:o,v:s}}function Xn(t){return Br(wi(t))}function wi(t){const{l:s}=t;return!qe(s)&&s.lvl===t.lvl?mt(s,{r:mt(t,{l:s.r})}):t}function Br(t){const{lvl:s,r:a}=t;return!qe(a)&&!qe(a.r)&&a.lvl===s&&a.r.lvl===s?mt(a,{l:mt(t,{r:a.l}),lvl:s+1}):t}function Jc(t){return fi(t,({k:s,v:a})=>({index:s,value:a}))}function Ni(t,s){return!!(t&&t.startIndex===s.startIndex&&t.endIndex===s.endIndex)}function ya(t,s){return!!(t&&t[0]===s[0]&&t[1]===s[1])}const Jr=He(()=>({recalcInProgress:W(!1)}),[],{singleton:!0});function ji(t,s,a){return t[er(t,s,a)]}function er(t,s,a,r=0){let o=t.length-1;for(;r<=o;){const n=Math.floor((r+o)/2),i=t[n],l=a(i,s);if(l===0)return n;if(l===-1){if(o-r<2)return n-1;o=n-1}else{if(o===r)return n;r=n+1}}throw new Error(`Failed binary finding record in array - ${t.join(",")}, searched for ${s}`)}function Zc(t,s,a,r){const o=er(t,s,r),n=er(t,a,r,o);return t.slice(o,n+1)}function ks(t,s){return Math.round(t.getBoundingClientRect()[s])}function cr(t){return!qe(t.groupOffsetTree)}function Zr({index:t},s){return s===t?0:s=f||n===h)&&(t=Fr(t,f)):(d=h!==n,c=!0),u>o&&o>=f&&h!==n&&(t=At(t,o+1,h));d&&(t=At(t,i,n))}return[t,a]}function sd(t){return typeof t.groupIndex<"u"}function ad({offset:t},s){return s===t?0:s0?l+a:l}function yi(t,s){if(!cr(s))return t;let a=0;for(;s.groupIndices[a]<=t+a;)a++;return t+a}function Si(t,s,a){if(sd(t))return s.groupIndices[t.groupIndex]+1;const r=t.index==="LAST"?a:t.index;let o=yi(r,s);return o=Math.max(0,o,Math.min(a,o)),o}function rd(t,s,a,r=0){return r>0&&(s=Math.max(s,ji(t,r,Zr).offset)),fi(Zc(t,s,a,ad),id)}function nd(t,[s,a,r,o]){s.length>0&&r("received item sizes",s,ut.DEBUG);const n=t.sizeTree;let i=n,l=0;if(a.length>0&&qe(n)&&s.length===2){const h=s[0].size,b=s[1].size;i=a.reduce((k,j)=>At(At(k,j,h),j+1,b),i)}else[i,l]=td(i,s);if(i===n)return t;const{lastIndex:c,lastOffset:d,lastSize:u,offsetTree:f}=Pr(t.offsetTree,l,i,o);return{groupIndices:a,groupOffsetTree:a.reduce((h,b)=>At(h,b,Sa(b,f,o)),Ys()),lastIndex:c,lastOffset:d,lastSize:u,offsetTree:f,sizeTree:i}}function od(t){return Ls(t).map(({k:s,v:a},r,o)=>{const n=o[r+1];return{endIndex:n!==void 0?n.k-1:1/0,size:a,startIndex:s}})}function Jn(t,s){let a=0,r=0;for(;ao.start===r&&(o.end===s||o.end===1/0)&&o.value===a}const cd={offsetHeight:"height",offsetWidth:"width"},ms=He(([{log:t},{recalcInProgress:s}])=>{const a=Le(),r=Le(),o=yt(r,0),n=Le(),i=Le(),l=W(0),c=W([]),d=W(void 0),u=W(void 0),f=W(void 0),h=W(void 0),b=W((v,y)=>ks(v,cd[y])),k=W(void 0),j=W(0),S=ed(),p=yt(Q(a,Te(c,t,j),ns(nd,S),Je()),S),N=yt(Q(c,Je(),ns((v,y)=>({current:y,prev:v.current}),{current:[],prev:[]}),ie(({prev:v})=>v)),[]);ue(Q(c,ve(v=>v.length>0),Te(p,j),ie(([v,y,w])=>{const A=v.reduce((B,E,F)=>At(B,E,Sa(E,y.offsetTree,w)||F),Ys());return{...y,groupIndices:v,groupOffsetTree:A}})),p),ue(Q(r,Te(p),ve(([v,{lastIndex:y}])=>v[{endIndex:y,size:w,startIndex:v}])),a),ue(d,u);const C=yt(Q(d,ie(v=>v===void 0)),!0);ue(Q(u,ve(v=>v!==void 0&&qe(tt(p).sizeTree)),ie(v=>{const y=tt(f),w=tt(c).length>0;return y!==void 0&&y!==0?w?[{endIndex:0,size:y,startIndex:0},{endIndex:1,size:v,startIndex:1}]:[]:[{endIndex:0,size:v,startIndex:0}]})),a),ue(Q(h,ve(v=>v!==void 0&&v.length>0&&qe(tt(p).sizeTree)),ie(v=>{const y=[];let w=v[0],A=0;for(let B=1;Bv!==void 0&&y!==void 0),ie(([v,y,w])=>{const A=[];for(let B=0;B({changed:w!==v,sizes:w}),{changed:!1,sizes:S}),ie(v=>v.changed)));Ue(Q(l,ns((v,y)=>({diff:v.prev-y,prev:y}),{diff:0,prev:0}),ie(v=>v.diff)),v=>{const{groupIndices:y}=tt(p);if(v>0)Ie(s,!0),Ie(n,v+Jn(v,y));else if(v<0){const w=tt(N);w.length>0&&(v-=Jn(-v,w)),Ie(i,v)}}),Ue(Q(l,Te(t)),([v,y])=>{v<0&&y("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:l},ut.ERROR)});const I=zt(n);ue(Q(n,Te(p),ie(([v,y])=>{const w=y.groupIndices.length>0,A=[],B=y.lastSize;if(w){const E=ja(y.sizeTree,0);let F=0,X=0;for(;F{let he=ce.ranges;return ce.prevSize!==0&&(he=[...ce.ranges,{endIndex:ne+v-1,size:ce.prevSize,startIndex:ce.prevIndex}]),{prevIndex:ne+v,prevSize:xe,ranges:he}},{prevIndex:v,prevSize:0,ranges:A}).ranges}return Ls(y.sizeTree).reduce((E,{k:F,v:X})=>({prevIndex:F+v,prevSize:X,ranges:[...E.ranges,{endIndex:F+v-1,size:E.prevSize,startIndex:E.prevIndex}]}),{prevIndex:0,prevSize:B,ranges:[]}).ranges})),a);const U=zt(Q(i,Te(p,j),ie(([v,{offsetTree:y},w])=>{const A=-v;return Sa(A,y,w)})));return ue(Q(i,Te(p,j),ie(([v,y,w])=>{if(y.groupIndices.length>0){if(qe(y.sizeTree))return y;let B=Ys();const E=tt(N);let F=0,X=0,J=0;for(;F<-v;){J=E[X];const ce=E[X+1]-J-1;X++,F+=ce+1}if(B=Ls(y.sizeTree).reduce((ce,{k:ne,v:xe})=>At(ce,Math.max(0,ne+v),xe),B),F!==-v){const ce=ja(y.sizeTree,J);B=At(B,0,ce);const ne=ts(y.sizeTree,-v+1)[1];B=At(B,1,ne)}return{...y,sizeTree:B,...Pr(y.offsetTree,0,B,w)}}const A=Ls(y.sizeTree).reduce((B,{k:E,v:F})=>At(B,Math.max(0,E+v),F),Ys());return{...y,sizeTree:A,...Pr(y.offsetTree,0,A,w)}})),p),{beforeUnshiftWith:I,data:k,defaultItemSize:u,firstItemIndex:l,fixedItemSize:d,fixedGroupSize:f,gap:j,groupIndices:c,heightEstimates:h,itemSize:b,listRefresh:z,shiftWith:i,shiftWithOffset:U,sizeRanges:a,sizes:p,statefulTotalCount:o,totalCount:r,trackItemSizes:C,unshiftWith:n}},Ze(Is,Jr),{singleton:!0});function dd(t){return t.reduce((s,a)=>(s.groupIndices.push(s.totalCount),s.totalCount+=a+1,s),{groupIndices:[],totalCount:0})}const ki=He(([{groupIndices:t,sizes:s,totalCount:a},{headerHeight:r,scrollTop:o}])=>{const n=Le(),i=Le(),l=zt(Q(n,ie(dd)));return ue(Q(l,ie(c=>c.totalCount)),a),ue(Q(l,ie(c=>c.groupIndices)),t),ue(Q(ct(o,s,r),ve(([c,d])=>cr(d)),ie(([c,d,u])=>ts(d.groupOffsetTree,Math.max(c-u,0),"v")[0]),Je(),ie(c=>[c])),i),{groupCounts:n,topItemsIndexes:i}},Ze(ms,Ct)),Ts=He(([{log:t}])=>{const s=W(!1),a=zt(Q(s,ve(r=>r),Je()));return Ue(s,r=>{r&&tt(t)("props updated",{},ut.DEBUG)}),{didMount:a,propsReady:s}},Ze(Is),{singleton:!0}),md=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function Ci(t){const s=typeof t=="number"?{index:t}:t;return s.align||(s.align="start"),(!s.behavior||!md)&&(s.behavior="auto"),s.offset===void 0&&(s.offset=0),s}const Ea=He(([{gap:t,listRefresh:s,sizes:a,totalCount:r},{fixedFooterHeight:o,fixedHeaderHeight:n,footerHeight:i,headerHeight:l,scrollingInProgress:c,scrollTo:d,smoothScrollTargetReached:u,viewportHeight:f},{log:h}])=>{const b=Le(),k=Le(),j=W(0);let S=null,p=null,N=null;function C(){S!==null&&(S(),S=null),N!==null&&(N(),N=null),p&&(clearTimeout(p),p=null),Ie(c,!1)}return ue(Q(b,Te(a,f,r,j,l,i,h),Te(t,n,o),ie(([[z,I,U,v,y,w,A,B],E,F,X])=>{const J=Ci(z),{align:ce,behavior:ne,offset:xe}=J,he=v-1,H=Si(J,I,he);let q=Sa(H,I.offsetTree,E)+w;ce==="end"?(q+=F+ts(I.sizeTree,H)[1]-U+X,H===he&&(q+=A)):ce==="center"?q+=(F+ts(I.sizeTree,H)[1]-U+X)/2:q-=y,xe!==void 0&&xe!==0&&(q+=xe);const M=Y=>{C(),Y?(B("retrying to scroll to",{location:z},ut.DEBUG),Ie(b,z)):(Ie(k,!0),B("list did not change, scroll successful",{},ut.DEBUG))};if(C(),ne==="smooth"){let Y=!1;N=Ue(s,ae=>{Y=Y||ae}),S=es(u,()=>{M(Y)})}else S=es(Q(s,ud(150)),M);return p=setTimeout(()=>{C()},1200),Ie(c,!0),B("scrolling from index to",{behavior:ne,index:H,top:q},ut.DEBUG),{behavior:ne,top:q}})),d),{scrollTargetReached:k,scrollToIndex:b,topListHeight:j}},Ze(ms,Ct,Is),{singleton:!0});function ud(t){return s=>{const a=setTimeout(()=>{s(!1)},t);return r=>{r&&(s(!0),clearTimeout(a))}}}function en(t,s){t===0?s():requestAnimationFrame(()=>{en(t-1,s)})}function tn(t,s){const a=s-1;return typeof t=="number"?t:t.index==="LAST"?a:t.index}const Ra=He(([{defaultItemSize:t,listRefresh:s,sizes:a},{scrollTop:r},{scrollTargetReached:o,scrollToIndex:n},{didMount:i}])=>{const l=W(!0),c=W(0),d=W(!0);return ue(Q(i,Te(c),ve(([u,f])=>f!==0),rs(!1)),l),ue(Q(i,Te(c),ve(([u,f])=>f!==0),rs(!1)),d),Ue(Q(ct(s,i),Te(l,a,t,d),ve(([[,u],f,{sizeTree:h},b,k])=>u&&(!qe(h)||Yr(b))&&!f&&!k),Te(c)),([,u])=>{es(o,()=>{Ie(d,!0)}),en(4,()=>{es(r,()=>{Ie(l,!0)}),Ie(n,u)})}),{initialItemFinalLocationReached:d,initialTopMostItemIndex:c,scrolledToInitialItem:l}},Ze(ms,Ct,Ea,Ts),{singleton:!0});function Ii(t,s){return Math.abs(t-s)<1.01}const ka="up",ba="down",xd="none",pd={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},hd=0,_a=He(([{footerHeight:t,headerHeight:s,scrollBy:a,scrollContainerState:r,scrollTop:o,viewportHeight:n}])=>{const i=W(!1),l=W(!0),c=Le(),d=Le(),u=W(4),f=W(hd),h=yt(Q($r(Q(be(o),Fs(1),rs(!0)),Q(be(o),Fs(1),rs(!1),Yn(100))),Je()),!1),b=yt(Q($r(Q(a,rs(!0)),Q(a,rs(!1),Yn(200))),Je()),!1);ue(Q(ct(be(o),be(f)),ie(([N,C])=>N<=C),Je()),l),ue(Q(l,bs(50)),d);const k=zt(Q(ct(r,be(n),be(s),be(t),be(u)),ns((N,[{scrollHeight:C,scrollTop:z},I,U,v,y])=>{const w=z+I-C>-y,A={scrollHeight:C,scrollTop:z,viewportHeight:I};if(w){let E,F;return z>N.state.scrollTop?(E="SCROLLED_DOWN",F=N.state.scrollTop-z):(E="SIZE_DECREASED",F=N.state.scrollTop-z||N.scrollTopDelta),{atBottom:!0,atBottomBecause:E,scrollTopDelta:F,state:A}}let B;return A.scrollHeight>N.state.scrollHeight?B="SIZE_INCREASED":IN!==void 0&&N.atBottom===C.atBottom))),j=yt(Q(r,ns((N,{scrollHeight:C,scrollTop:z,viewportHeight:I})=>{if(!Ii(N.scrollHeight,C)){const U=C-(z+I)<1;return N.scrollTop!==z&&U?{changed:!0,jump:N.scrollTop-z,scrollHeight:C,scrollTop:z}:{changed:!0,jump:0,scrollHeight:C,scrollTop:z}}return{changed:!1,jump:0,scrollHeight:C,scrollTop:z}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),ve(N=>N.changed),ie(N=>N.jump)),0);ue(Q(k,ie(N=>N.atBottom)),i),ue(Q(i,bs(50)),c);const S=W(ba);ue(Q(r,ie(({scrollTop:N})=>N),Je(),ns((N,C)=>tt(b)?{direction:N.direction,prevScrollTop:C}:{direction:CN.direction)),S),ue(Q(r,bs(50),rs(xd)),S);const p=W(0);return ue(Q(h,ve(N=>!N),rs(0)),p),ue(Q(o,bs(100),Te(h),ve(([N,C])=>C),ns(([N,C],[z])=>[C,z],[0,0]),ie(([N,C])=>C-N)),p),{atBottomState:k,atBottomStateChange:c,atBottomThreshold:u,atTopStateChange:d,atTopThreshold:f,isAtBottom:i,isAtTop:l,isScrolling:h,lastJumpDueToItemResize:j,scrollDirection:S,scrollVelocity:p}},Ze(Ct)),Ca="top",Ia="bottom",Zn="none";function eo(t,s,a){return typeof t=="number"?a===ka&&s===Ca||a===ba&&s===Ia?t:0:a===ka?s===Ca?t.main:t.reverse:s===Ia?t.main:t.reverse}function to(t,s){return typeof t=="number"?t:t[s]??0}const sn=He(([{deviation:t,fixedHeaderHeight:s,headerHeight:a,scrollTop:r,viewportHeight:o}])=>{const n=Le(),i=W(0),l=W(0),c=W(0),d=yt(Q(ct(be(r),be(o),be(a),be(n,ya),be(c),be(i),be(s),be(t),be(l)),ie(([u,f,h,[b,k],j,S,p,N,C])=>{const z=u-N,I=S+p,U=Math.max(h-z,0);let v=Zn;const y=to(C,Ca),w=to(C,Ia);return b-=N,b+=h+p,k+=h+p,k-=N,b>u+I-y&&(v=ka),ku!==null),Je(ya)),[0,0]);return{increaseViewportBy:l,listBoundary:n,overscan:c,topListHeight:i,visibleRange:d}},Ze(Ct),{singleton:!0});function fd(t,s,a){if(cr(s)){const r=yi(t,s);return[{index:ts(s.groupOffsetTree,r)[0],offset:0,size:0},{data:a?.[0],index:r,offset:0,size:0}]}return[{data:a?.[0],index:t,offset:0,size:0}]}const wr={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Ua(t,s,a,r,o,n){const{lastIndex:i,lastOffset:l,lastSize:c}=o;let d=0,u=0;if(t.length>0){d=t[0].offset;const j=t[t.length-1];u=j.offset+j.size}const f=a-i,h=l+f*c+(f-1)*r,b=d,k=h-u;return{bottom:u,firstItemIndex:n,items:so(t,o,n),offsetBottom:k,offsetTop:d,top:b,topItems:so(s,o,n),topListHeight:s.reduce((j,S)=>S.size+j,0),totalCount:a}}function Ti(t,s,a,r,o,n){let i=0;if(a.groupIndices.length>0)for(const u of a.groupIndices){if(u-i>=t)break;i++}const l=t+i,c=tn(s,l),d=Array.from({length:l}).map((u,f)=>({data:n[f+c],index:f+c,offset:0,size:0}));return Ua(d,[],l,o,a,r)}function so(t,s,a){if(t.length===0)return[];if(!cr(s))return t.map(d=>({...d,index:d.index+a,originalIndex:d.index}));const r=t[0].index,o=t[t.length-1].index,n=[],i=Ks(s.groupOffsetTree,r,o);let l,c=0;for(const d of t){(!l||l.end{const j=W([]),S=W(0),p=Le(),N=W(0);ue(n.topItemsIndexes,j);const C=yt(Q(ct(b,k,be(c,ya),be(o),be(r),be(d),u,be(j),be(s),be(a),be(N),t),ve(([v,y,,w,,,,,,,,A])=>{const B=A!==void 0&&A.length!==w;return v&&!y&&!B}),ie(([,,[v,y],w,A,B,E,F,X,J,ce,ne])=>{const xe=A,{offsetTree:he,sizeTree:H}=xe,q=tt(S);if(w===0)return{...wr,totalCount:w};if(v===0&&y===0)return q===0?{...wr,totalCount:w}:Ti(q,B,A,X,J,ne||[]);if(qe(H))return q>0?null:Ua(fd(tn(B,w),xe,ne),[],w,J,xe,X);const M=[];if(F.length>0){const te=F[0],g=F[F.length-1];let T=0;for(const R of Ks(H,te,g)){const K=R.value,Z=Math.max(R.start,te),re=Math.min(R.end,g);for(let le=Z;le<=re;le++)M.push({data:ne?.[le],index:le,offset:T,size:K}),T+=K}}if(!E)return Ua([],M,w,J,xe,X);const Y=F.length>0?F[F.length-1]+1:0,ae=rd(he,v,y,Y);if(ae.length===0)return null;const $e=w-1,Me=lr([],te=>{for(const g of ae){const T=g.value;let R=T.offset,K=g.start;const Z=T.size;if(T.offset=y);le++)te.push({data:ne?.[le],index:le,offset:R,size:Z}),R+=Z+J}}),Ge=ao(ce,Ca),G=ao(ce,Ia);if(Me.length>0&&(Ge>0||G>0)){const te=Me[0],g=Me[Me.length-1];if(Ge>0&&te.index>Y){const T=Math.min(Ge,te.index-Y),R=[];let K=te.offset;for(let Z=te.index-1;Z>=te.index-T;Z--){const re=Ks(H,Z,Z)[0]?.value??te.size;K-=re+J,R.unshift({data:ne?.[Z],index:Z,offset:K,size:re})}Me.unshift(...R)}if(G>0&&g.index<$e){const T=Math.min(G,$e-g.index);let R=g.offset+g.size+J;for(let K=g.index+1;K<=g.index+T;K++){const Z=Ks(H,K,K)[0]?.value??g.size;Me.push({data:ne?.[K],index:K,offset:R,size:Z}),R+=Z+J}}}return Ua(Me,M,w,J,xe,X)}),ve(v=>v!==null),Je()),wr);ue(Q(t,ve(Yr),ie(v=>v?.length)),o),ue(Q(C,ie(v=>v.topListHeight)),f),ue(f,l),ue(Q(C,ie(v=>[v.top,v.bottom])),i),ue(Q(C,ie(v=>v.items)),p);const z=zt(Q(C,ve(({items:v})=>v.length>0),Te(o,t),ve(([{items:v},y])=>v[v.length-1].originalIndex===y-1),ie(([,v,y])=>[v-1,y]),Je(ya),ie(([v])=>v))),I=zt(Q(C,bs(200),ve(({items:v,topItems:y})=>v.length>0&&v[0].originalIndex===y.length),ie(({items:v})=>v[0].index),Je())),U=zt(Q(C,ve(({items:v})=>v.length>0),ie(({items:v})=>{let y=0,w=v.length-1;for(;v[y].type==="group"&&yy;)w--;return{endIndex:v[w].index,startIndex:v[y].index}}),Je(Ni)));return{endReached:z,initialItemCount:S,itemsRendered:p,listState:C,minOverscanItemCount:N,rangeChanged:U,startReached:I,topItemsIndexes:j,...h}},Ze(ms,ki,sn,Ra,Ea,_a,Ts,Jr),{singleton:!0}),Ei=He(([{fixedFooterHeight:t,fixedHeaderHeight:s,footerHeight:a,headerHeight:r},{listState:o}])=>{const n=Le(),i=yt(Q(ct(a,t,r,s,o),ie(([l,c,d,u,f])=>l+c+d+u+f.offsetBottom+f.bottom)),0);return ue(be(i),n),{totalListHeight:i,totalListHeightChanged:n}},Ze(Ct,Ps),{singleton:!0}),gd=He(([{viewportHeight:t},{totalListHeight:s}])=>{const a=W(!1),r=yt(Q(ct(a,t,s),ve(([o])=>o),ie(([,o,n])=>Math.max(0,o-n)),bs(0),Je()),0);return{alignToBottom:a,paddingTopAddition:r}},Ze(Ct,Ei),{singleton:!0}),Ri=He(()=>({context:W(null)})),bd=({itemBottom:t,itemTop:s,locationParams:{align:a,behavior:r,...o},viewportBottom:n,viewportTop:i})=>sn?{...o,align:a??"end",...r!==void 0?{behavior:r}:{}}:null,_i=He(([{gap:t,sizes:s,totalCount:a},{fixedFooterHeight:r,fixedHeaderHeight:o,headerHeight:n,scrollingInProgress:i,scrollTop:l,viewportHeight:c},{scrollToIndex:d}])=>{const u=Le();return ue(Q(u,Te(s,c,a,n,o,r,l),Te(t),ie(([[f,h,b,k,j,S,p,N],C])=>{const{calculateViewLocation:z=bd,done:I,...U}=f,v=Si(f,h,k-1),y=Sa(v,h.offsetTree,C)+j+S,w=y+ts(h.sizeTree,v)[1],A=N+S,B=N+b-p,E=z({itemBottom:w,itemTop:y,locationParams:U,viewportBottom:B,viewportTop:A});return E!==null?I&&es(Q(i,ve(F=>!F),Fs(tt(i)?1:2)),I):I?.(),E}),ve(f=>f!==null)),d),{scrollIntoView:u}},Ze(ms,Ct,Ea,Ps,Is),{singleton:!0});function ro(t){return t===!1?!1:t==="smooth"?"smooth":"auto"}const vd=(t,s)=>typeof t=="function"?ro(t(s)):s&&ro(t),wd=He(([{listRefresh:t,totalCount:s,fixedItemSize:a,data:r},{atBottomState:o,isAtBottom:n},{scrollToIndex:i},{scrolledToInitialItem:l},{didMount:c,propsReady:d},{log:u},{scrollingInProgress:f},{context:h},{scrollIntoView:b}])=>{const k=W(!1),j=Le();let S=null;function p(I){Ie(i,{align:"end",behavior:I,index:"LAST"})}Ue(Q(ct(Q(be(s),Fs(1)),c),Te(be(k),n,l,f),ie(([[I,U],v,y,w,A])=>{let B=U&&w,E="auto";return B&&(E=vd(v,y||A),B=B&&E!==!1),{followOutputBehavior:E,shouldFollow:B,totalCount:I}}),ve(({shouldFollow:I})=>I)),({followOutputBehavior:I,totalCount:U})=>{S!==null&&(S(),S=null),tt(a)!==void 0?requestAnimationFrame(()=>{tt(u)("following output to ",{totalCount:U},ut.DEBUG),p(I)}):S=es(t,()=>{tt(u)("following output to ",{totalCount:U},ut.DEBUG),p(I),S=null})});function N(I){const U=es(o,v=>{I&&!v.atBottom&&v.notAtBottomBecause==="SIZE_INCREASED"&&S===null&&(tt(u)("scrolling to bottom due to increased size",{},ut.DEBUG),p("auto"))});setTimeout(U,100)}Ue(Q(ct(be(k),s,d),ve(([I,,U])=>I!==!1&&U),ns(({value:I},[,U])=>({refreshed:I===U,value:U}),{refreshed:!1,value:0}),ve(({refreshed:I})=>I),Te(k,s)),([,I])=>{tt(l)&&N(I!==!1)}),Ue(j,()=>{N(tt(k)!==!1)}),Ue(ct(be(k),o),([I,U])=>{I!==!1&&!U.atBottom&&U.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&p("auto")});const C=W(null),z=Le();return ue($r(Q(be(r),ie(I=>I?.length??0)),Q(be(s))),z),Ue(Q(ct(Q(z,Fs(1)),c),Te(be(C),l,f,h),ie(([[I,U],v,y,w,A])=>U&&y&&v?.({context:A,totalCount:I,scrollingInProgress:w})),ve(I=>!!I),bs(0)),I=>{S!==null&&(S(),S=null),tt(a)!==void 0?requestAnimationFrame(()=>{tt(u)("scrolling into view",{}),Ie(b,I)}):S=es(t,()=>{tt(u)("scrolling into view",{}),Ie(b,I),S=null})}),{autoscrollToBottom:j,followOutput:k,scrollIntoViewOnChange:C}},Ze(ms,_a,Ea,Ra,Ts,Is,Ct,Ri,_i)),Nd=He(([{data:t,firstItemIndex:s,gap:a,sizes:r},{initialTopMostItemIndex:o},{initialItemCount:n,listState:i},{didMount:l}])=>(ue(Q(l,Te(n),ve(([,c])=>c!==0),Te(o,r,s,a,t),ie(([[,c],d,u,f,h,b=[]])=>Ti(c,d,u,f,h,b))),i),{}),Ze(ms,Ra,Ps,Ts),{singleton:!0}),jd=He(([{didMount:t},{scrollTo:s},{listState:a}])=>{const r=W(0);return Ue(Q(t,Te(r),ve(([,o])=>o!==0),ie(([,o])=>({top:o}))),o=>{es(Q(a,Fs(1),ve(n=>n.items.length>1)),()=>{requestAnimationFrame(()=>{Ie(s,o)})})}),{initialScrollTop:r}},Ze(Ts,Ct,Ps),{singleton:!0}),Mi=He(([{scrollVelocity:t}])=>{const s=W(!1),a=Le(),r=W(!1);return ue(Q(t,Te(r,s,a),ve(([o,n])=>n!==!1&&n!==void 0),ie(([o,n,i,l])=>{const{enter:c,exit:d}=n;if(i){if(d(o,l))return!1}else if(c(o,l))return!0;return i}),Je()),s),Ue(Q(ct(s,t,a),Te(r)),([[o,n,i],l])=>{o&&l!==!1&&l!==void 0&&l.change&&l.change(n,i)}),{isSeeking:s,scrollSeekConfiguration:r,scrollSeekRangeChanged:a,scrollVelocity:t}},Ze(_a),{singleton:!0}),an=He(([{scrollContainerState:t,scrollTo:s}])=>{const a=Le(),r=Le(),o=Le(),n=W(!1),i=W(void 0);return ue(Q(ct(a,r),ie(([{scrollTop:l,viewportHeight:c},{offsetTop:d,listHeight:u}])=>({scrollHeight:u,scrollTop:Math.max(0,l-d),viewportHeight:c}))),t),ue(Q(s,Te(r),ie(([l,{offsetTop:c}])=>({...l,top:l.top+c}))),o),{customScrollParent:i,useWindowScroll:n,windowScrollContainerState:a,windowScrollTo:o,windowViewportRect:r}},Ze(Ct)),yd=He(([{sizeRanges:t,sizes:s},{headerHeight:a,scrollTop:r},{initialTopMostItemIndex:o},{didMount:n},{useWindowScroll:i,windowScrollContainerState:l,windowViewportRect:c}])=>{const d=Le(),u=W(void 0),f=W(null),h=W(null);return ue(l,f),ue(c,h),Ue(Q(d,Te(s,r,i,f,h,a)),([b,k,j,S,p,N,C])=>{const z=od(k.sizeTree);S&&p!==null&&N!==null&&(j=p.scrollTop-N.offsetTop),j-=C,b({ranges:z,scrollTop:j})}),ue(Q(u,ve(Yr),ie(Sd)),o),ue(Q(n,Te(u),ve(([,b])=>b!==void 0),Je(),ie(([,b])=>b.ranges)),t),{getState:d,restoreStateFrom:u}},Ze(ms,Ct,Ra,Ts,an));function Sd(t){return{align:"start",index:0,offset:t.scrollTop}}const kd=He(([{topItemsIndexes:t}])=>{const s=W(0);return ue(Q(s,ve(a=>a>=0),ie(a=>Array.from({length:a}).map((r,o)=>o))),t),{topItemCount:s}},Ze(Ps));function Ai(t){let s=!1,a;return(()=>(s||(s=!0,a=t()),a))}const Cd=Ai(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),Id=He(([{deviation:t,scrollBy:s,scrollingInProgress:a,scrollTop:r},{isAtBottom:o,isScrolling:n,lastJumpDueToItemResize:i,scrollDirection:l},{listState:c},{beforeUnshiftWith:d,gap:u,shiftWithOffset:f,sizes:h},{log:b},{recalcInProgress:k}])=>{const j=zt(Q(c,Te(i),ns(([,p,N,C],[{bottom:z,items:I,offsetBottom:U,totalCount:v},y])=>{const w=z+U;let A=0;return N===v&&p.length>0&&I.length>0&&(I[0].originalIndex===0&&p[0].originalIndex===0||(A=w-C,A!==0&&(A+=y))),[A,I,v,w]},[0,[],0,0]),ve(([p])=>p!==0),Te(r,l,a,o,b,k),ve(([,p,N,C,,,z])=>!z&&!C&&p!==0&&N===ka),ie(([[p],,,,,N])=>(N("Upward scrolling compensation",{amount:p},ut.DEBUG),p))));function S(p){p>0?(Ie(s,{behavior:"auto",top:-p}),Ie(t,0)):(Ie(t,0),Ie(s,{behavior:"auto",top:-p}))}return Ue(Q(j,Te(t,n)),([p,N,C])=>{C&&Cd()?Ie(t,N-p):S(-p)}),Ue(Q(ct(yt(n,!1),t,k),ve(([p,N,C])=>!p&&!C&&N!==0),ie(([p,N])=>N),bs(1)),S),ue(Q(f,ie(p=>({top:-p}))),s),Ue(Q(d,Te(h,u),ie(([p,{groupIndices:N,lastSize:C,sizeTree:z},I])=>{function U(B){return B*(C+I)}if(N.length===0)return U(p);let v=0;const y=ja(z,0);let w=0,A=0;for(;wp&&(v-=y,B=p-w+1),w+=B,v+=U(B),A++}return v})),p=>{Ie(t,p),requestAnimationFrame(()=>{Ie(s,{top:p}),requestAnimationFrame(()=>{Ie(t,0),Ie(k,!1)})})}),{deviation:t}},Ze(Ct,_a,Ps,ms,Is,Jr)),Td=He(([t,s,a,r,o,n,i,l,c,d,u])=>({...t,...s,...a,...r,...o,...n,...i,...l,...c,...d,...u}),Ze(sn,Nd,Ts,Mi,Ei,jd,gd,an,_i,Is,Ri)),zi=He(([{data:t,defaultItemSize:s,firstItemIndex:a,fixedItemSize:r,fixedGroupSize:o,gap:n,groupIndices:i,heightEstimates:l,itemSize:c,sizeRanges:d,sizes:u,statefulTotalCount:f,totalCount:h,trackItemSizes:b},{initialItemFinalLocationReached:k,initialTopMostItemIndex:j,scrolledToInitialItem:S},p,N,C,z,{scrollToIndex:I},U,{topItemCount:v},{groupCounts:y},w])=>{const{listState:A,minOverscanItemCount:B,topItemsIndexes:E,rangeChanged:F,...X}=z;return ue(F,w.scrollSeekRangeChanged),ue(Q(w.windowViewportRect,ie(J=>J.visibleHeight)),p.viewportHeight),{data:t,defaultItemHeight:s,firstItemIndex:a,fixedItemHeight:r,fixedGroupHeight:o,gap:n,groupCounts:y,heightEstimates:l,initialItemFinalLocationReached:k,initialTopMostItemIndex:j,scrolledToInitialItem:S,sizeRanges:d,topItemCount:v,topItemsIndexes:E,totalCount:h,...C,groupIndices:i,itemSize:c,listState:A,minOverscanItemCount:B,scrollToIndex:I,statefulTotalCount:f,trackItemSizes:b,rangeChanged:F,...X,...w,...p,sizes:u,...N}},Ze(ms,Ra,Ct,yd,wd,Ps,Ea,Id,kd,ki,Td));function Ed(t,s){const a={},r={};let o=0;const n=t.length;for(;o(p[N]=C=>{const z=S[s.methods[N]];Ie(z,C)},p),{})}function u(S){return i.reduce((p,N)=>(p[N]=Uc(S[s.events[N]]),p),{})}const f=de.forwardRef(function(S,p){const{children:N,...C}=S,[z]=de.useState(()=>lr(Wc(t),v=>{c(v,C)})),[I]=de.useState(qn(u,z));Da(()=>{for(const v of i)v in C&&Ue(I[v],C[v]);return()=>{Object.values(I).map(Kr)}},[C,I,z]),Da(()=>{c(z,C)}),de.useImperativeHandle(p,Wn(d(z)));const U=a;return e.jsx(l.Provider,{value:z,children:a!==void 0?e.jsx(U,{...Ed([...r,...o,...i],C),children:N}):N})}),h=S=>{const p=de.useContext(l);return de.useCallback(N=>{Ie(p[S],N)},[p,S])},b=S=>{const p=de.useContext(l)[S],N=de.useCallback(C=>Ue(p,C),[p]);return de.useSyncExternalStore(N,()=>tt(p),()=>tt(p))},k=S=>{const p=de.useContext(l)[S],[N,C]=de.useState(qn(tt,p));return Da(()=>Ue(p,z=>{z!==N&&C(Wn(z))}),[p,N]),N},j=parseInt(de.version)>=18?b:k;return{Component:f,useEmitter:(S,p)=>{const N=de.useContext(l)[S];Da(()=>Ue(N,p),[p,N])},useEmitterValue:j,usePublisher:h}}const Di=de.createContext(void 0),$i=de.createContext(void 0),Nr="-webkit-sticky",no="sticky",rn=Ai(()=>{if(typeof document>"u")return no;const t=document.createElement("div");return t.style.position=Nr,t.style.position===Nr?Nr:no}),Fi=typeof document<"u"?de.useLayoutEffect:de.useEffect;function jr(t){return"self"in t}function Rd(t){return"body"in t}function Oi(t,s,a,r=ta,o,n){const i=de.useRef(null),l=de.useRef(null),c=de.useRef(null),d=de.useCallback(h=>{let b,k,j;const S=h.target;if(Rd(S)||jr(S)){const N=jr(S)?S:S.defaultView;j=n===!0?N.scrollX:N.scrollY,b=n===!0?N.document.documentElement.scrollWidth:N.document.documentElement.scrollHeight,k=n===!0?N.innerWidth:N.innerHeight}else j=n===!0?S.scrollLeft:S.scrollTop,b=n===!0?S.scrollWidth:S.scrollHeight,k=n===!0?S.offsetWidth:S.offsetHeight;const p=()=>{t({scrollHeight:b,scrollTop:Math.max(j,0),viewportHeight:k})};h.suppressFlushSync===!0?p():Ar.flushSync(p),l.current!==null&&(j===l.current||j<=0||j===b-k)&&(l.current=null,s(!0),c.current&&(clearTimeout(c.current),c.current=null))},[t,s,n]);de.useEffect(()=>{const h=o||i.current;return r(o||i.current),d({suppressFlushSync:!0,target:h}),h.addEventListener("scroll",d,{passive:!0}),()=>{r(null),h.removeEventListener("scroll",d)}},[i,d,a,r,o]);function u(h){const b=i.current;if(!b||(n===!0?"offsetWidth"in b&&b.offsetWidth===0:"offsetHeight"in b&&b.offsetHeight===0))return;const k=h.behavior==="smooth";let j,S,p;jr(b)?(S=Math.max(ks(b.document.documentElement,n===!0?"width":"height"),n===!0?b.document.documentElement.scrollWidth:b.document.documentElement.scrollHeight),j=n===!0?b.innerWidth:b.innerHeight,p=n===!0?window.scrollX:window.scrollY):(S=b[n===!0?"scrollWidth":"scrollHeight"],j=ks(b,n===!0?"width":"height"),p=b[n===!0?"scrollLeft":"scrollTop"]);const N=S-j;if(h.top=Math.ceil(Math.max(Math.min(N,h.top),0)),Ii(j,S)||h.top===p){t({scrollHeight:S,scrollTop:p,viewportHeight:j}),k&&s(!0);return}k?(l.current=h.top,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,l.current=null,s(!0)},1e3)):l.current=null,n===!0&&(h={...h.behavior!==void 0?{behavior:h.behavior}:{},left:h.top}),b.scrollTo(h)}function f(h){n===!0&&(h={...h.behavior!==void 0?{behavior:h.behavior}:{},...h.top!==void 0?{left:h.top}:{}}),i.current.scrollBy(h)}return{scrollByCallback:f,scrollerRef:i,scrollToCallback:u}}function nn(t){return t}const _d=He(()=>{const t=W(l=>`Item ${l}`),s=W(l=>`Group ${l}`),a=W({}),r=W(nn),o=W("div"),n=W(ta),i=(l,c=null)=>yt(Q(a,ie(d=>d[l]),Je()),c);return{components:a,computeItemKey:r,EmptyPlaceholder:i("EmptyPlaceholder"),FooterComponent:i("Footer"),GroupComponent:i("Group","div"),groupContent:s,HeaderComponent:i("Header"),HeaderFooterTag:o,ItemComponent:i("Item","div"),itemContent:t,ListComponent:i("List","div"),ScrollerComponent:i("Scroller","div"),scrollerRef:n,ScrollSeekPlaceholder:i("ScrollSeekPlaceholder"),TopItemListComponent:i("TopItemList")}}),Md=He(([t,s])=>({...t,...s}),Ze(zi,_d)),Ad=({height:t})=>e.jsx("div",{style:{height:t}}),zd={overflowAnchor:"none",position:rn(),zIndex:1},Bi={overflowAnchor:"none"},Ld={...Bi,display:"inline-block",height:"100%"},oo=de.memo(function({showTopList:t=!1}){const s=ye("listState"),a=Qt("sizeRanges"),r=ye("useWindowScroll"),o=ye("customScrollParent"),n=Qt("windowScrollContainerState"),i=Qt("scrollContainerState"),l=o||r?n:i,c=ye("itemContent"),d=ye("context"),u=ye("groupContent"),f=ye("trackItemSizes"),h=ye("itemSize"),b=ye("log"),k=Qt("gap"),j=ye("horizontalDirection"),{callbackRef:S}=Kc(a,h,f,t?ta:l,b,k,o,j,ye("skipAnimationFrameInResizeObserver")),[p,N]=de.useState(0);ln("deviation",X=>{p!==X&&N(X)});const C=ye("EmptyPlaceholder"),z=ye("ScrollSeekPlaceholder")??Ad,I=ye("ListComponent"),U=ye("ItemComponent"),v=ye("GroupComponent"),y=ye("computeItemKey"),w=ye("isSeeking"),A=ye("groupIndices").length>0,B=ye("alignToBottom"),E=ye("initialItemFinalLocationReached"),F=t?{}:{boxSizing:"border-box",...j?{display:"inline-block",height:"100%",marginLeft:p!==0?p:B?"auto":0,paddingLeft:s.offsetTop,paddingRight:s.offsetBottom,whiteSpace:"nowrap"}:{marginTop:p!==0?p:B?"auto":0,paddingBottom:s.offsetBottom,paddingTop:s.offsetTop},...E?{}:{visibility:"hidden"}};return!t&&s.totalCount===0&&C!==null&&C!==void 0?e.jsx(C,{...Nt(C,d)}):e.jsx(I,{...Nt(I,d),"data-testid":t?"virtuoso-top-item-list":"virtuoso-item-list",ref:S,style:F,children:(t?s.topItems:s.items).map(X=>{const J=X.originalIndex,ce=y(J+s.firstItemIndex,X.data,d);return w?m.createElement(z,{...Nt(z,d),height:X.size,index:X.index,key:ce,type:X.type||"item",...X.type==="group"?{}:{groupIndex:X.groupIndex}}):X.type==="group"?m.createElement(v,{...Nt(v,d),"data-index":J,"data-item-index":X.index,"data-known-size":X.size,key:ce,style:zd},u(X.index,d)):m.createElement(U,{...Nt(U,d),...Od(U,X.data),"data-index":J,"data-item-group-index":X.groupIndex,"data-item-index":X.index,"data-known-size":X.size,key:ce,style:j?Ld:Bi},A?c(X.index,X.groupIndex,X.data,d):c(X.index,X.data,d))})})}),Dd={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},$d={outline:"none",overflowX:"auto",position:"relative"},on=t=>({height:"100%",position:"absolute",top:0,width:"100%",...t?{display:"flex",flexDirection:"column"}:void 0}),Pi=(t,s,a=0)=>({...on(t),position:s?"relative":"absolute",top:s?-a:0}),Fd={position:rn(),top:0,width:"100%",zIndex:1};function Nt(t,s){if(typeof t!="string")return{context:s}}function Od(t,s){return{item:typeof t=="string"?void 0:s}}const Bd=de.memo(function(){const t=ye("HeaderComponent"),s=Qt("headerHeight"),a=ye("HeaderFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,ye("skipAnimationFrameInResizeObserver")),o=ye("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null}),Pd=de.memo(function(){const t=ye("FooterComponent"),s=Qt("footerHeight"),a=ye("HeaderFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,ye("skipAnimationFrameInResizeObserver")),o=ye("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null});function Hi({useEmitter:t,useEmitterValue:s,usePublisher:a}){return de.memo(function({children:r,style:o,context:n,...i}){const l=a("scrollContainerState"),c=s("ScrollerComponent"),d=a("smoothScrollTargetReached"),u=s("scrollerRef"),f=s("horizontalDirection")||!1,{scrollByCallback:h,scrollerRef:b,scrollToCallback:k}=Oi(l,d,c,u,void 0,f);return t("scrollTo",k),t("scrollBy",h),e.jsx(c,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:b,style:{...f?$d:Dd,...o},tabIndex:0,...i,...Nt(c,n),children:r})})}function Gi({useEmitter:t,useEmitterValue:s,usePublisher:a}){return de.memo(function({children:r,style:o,context:n,...i}){const l=a("windowScrollContainerState"),c=s("ScrollerComponent"),d=a("smoothScrollTargetReached"),u=s("totalListHeight"),f=s("deviation"),h=s("customScrollParent"),b=de.useRef(null),k=s("scrollerRef"),{scrollByCallback:j,scrollerRef:S,scrollToCallback:p}=Oi(l,d,c,k,h);return Fi(()=>(S.current=h||b.current?.ownerDocument.defaultView,()=>{S.current=null}),[S,h]),t("windowScrollTo",p),t("scrollBy",j),e.jsx(c,{ref:b,"data-virtuoso-scroller":!0,style:{position:"relative",...o,...u!==0?{height:u+f}:void 0},...i,...Nt(c,n),children:r})})}const Hd=({children:t})=>{const s=de.useContext(Di),a=Qt("viewportHeight"),r=Qt("fixedItemHeight"),o=ye("alignToBottom"),n=ye("horizontalDirection"),i=de.useMemo(()=>xi(a,c=>ks(c,n?"width":"height")),[a,n]),l=Bs(i,!0,ye("skipAnimationFrameInResizeObserver"));return de.useEffect(()=>{s&&(a(s.viewportHeight),r(s.itemHeight))},[s,a,r]),e.jsx("div",{"data-viewport-type":"element",ref:l,style:on(o),children:t})},Gd=({children:t})=>{const s=de.useContext(Di),a=Qt("windowViewportRect"),r=Qt("fixedItemHeight"),o=ye("customScrollParent"),n=ye("useWindowScroll"),i=ye("topListHeight"),l=hi(a,o,ye("skipAnimationFrameInResizeObserver")),c=ye("alignToBottom");return de.useEffect(()=>{s&&(r(s.itemHeight),a({listHeight:0,offsetTop:0,visibleHeight:s.viewportHeight,visibleWidth:100}))},[s,a,r]),e.jsx("div",{"data-viewport-type":"window",ref:l,style:Pi(c,n,i),children:t})},Qd=({children:t})=>{const s=ye("TopItemListComponent")??"div",a=ye("headerHeight"),r={...Fd,marginTop:`${a}px`},o=ye("context");return e.jsx(s,{style:r,...Nt(s,o),children:t})},Ud=de.memo(function(t){const s=ye("useWindowScroll"),a=ye("topItemsIndexes").length>0,r=ye("customScrollParent"),o=ye("context");return e.jsxs(r||s?qd:Wd,{...t,context:o,children:[a&&e.jsx(Qd,{children:e.jsx(oo,{showTopList:!0})}),e.jsxs(r||s?Gd:Hd,{children:[e.jsx(Bd,{}),e.jsx(oo,{}),e.jsx(Pd,{})]})]})}),{Component:Vd,useEmitter:ln,useEmitterValue:ye,usePublisher:Qt}=Li(Md,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ud),Wd=Hi({useEmitter:ln,useEmitterValue:ye,usePublisher:Qt}),qd=Gi({useEmitter:ln,useEmitterValue:ye,usePublisher:Qt}),Yd=Vd,Kd=He(()=>{const t=W(d=>e.jsxs("td",{children:["Item $",d]})),s=W(null),a=W(d=>e.jsxs("td",{colSpan:1e3,children:["Group ",d]})),r=W(null),o=W(null),n=W({}),i=W(nn),l=W(ta),c=(d,u=null)=>yt(Q(n,ie(f=>f[d]),Je()),u);return{components:n,computeItemKey:i,context:s,EmptyPlaceholder:c("EmptyPlaceholder"),FillerRow:c("FillerRow"),fixedFooterContent:o,fixedHeaderContent:r,itemContent:t,groupContent:a,ScrollerComponent:c("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:c("ScrollSeekPlaceholder"),TableBodyComponent:c("TableBody","tbody"),TableComponent:c("Table","table"),TableFooterComponent:c("TableFoot","tfoot"),TableHeadComponent:c("TableHead","thead"),TableRowComponent:c("TableRow","tr"),GroupComponent:c("Group","tr")}});Ze(zi,Kd);rn();const io={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},Xd={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:lo,floor:tr,max:va,min:yr,round:co}=Math;function mo(t,s,a){return Array.from({length:s-t+1}).map((r,o)=>({data:a===null?null:a[o+t],index:o+t}))}function Jd(t){return{...Xd,items:t}}function $a(t,s){return t!==void 0&&t.width===s.width&&t.height===s.height}function Zd(t,s){return t!==void 0&&t.column===s.column&&t.row===s.row}const em=He(([{increaseViewportBy:t,listBoundary:s,overscan:a,visibleRange:r},{footerHeight:o,headerHeight:n,scrollBy:i,scrollContainerState:l,scrollTo:c,scrollTop:d,smoothScrollTargetReached:u,viewportHeight:f},h,b,{didMount:k,propsReady:j},{customScrollParent:S,useWindowScroll:p,windowScrollContainerState:N,windowScrollTo:C,windowViewportRect:z},I])=>{const U=W(0),v=W(0),y=W(io),w=W({height:0,width:0}),A=W({height:0,width:0}),B=Le(),E=Le(),F=W(0),X=W(null),J=W({column:0,row:0}),ce=Le(),ne=Le(),xe=W(!1),he=W(0),H=W(!0),q=W(!1),M=W(!1);Ue(Q(k,Te(he),ve(([G,te])=>te!==0)),()=>{Ie(H,!1)}),Ue(Q(ct(k,H,A,w,he,q),ve(([G,te,g,T,,R])=>G&&!te&&g.height!==0&&T.height!==0&&!R)),([,,,,G])=>{Ie(q,!0),en(1,()=>{Ie(B,G)}),es(Q(d),()=>{Ie(s,[0,0]),Ie(H,!0)})}),ue(Q(ne,ve(G=>G!=null&&G.scrollTop>0),rs(0)),v),Ue(Q(k,Te(ne),ve(([,G])=>G!=null)),([,G])=>{G&&(Ie(w,G.viewport),Ie(A,G.item),Ie(J,G.gap),G.scrollTop>0&&(Ie(xe,!0),es(Q(d,Fs(1)),te=>{Ie(xe,!1)}),Ie(c,{top:G.scrollTop})))}),ue(Q(w,ie(({height:G})=>G)),f),ue(Q(ct(be(w,$a),be(A,$a),be(J,(G,te)=>G!==void 0&&G.column===te.column&&G.row===te.row),be(d)),ie(([G,te,g,T])=>({gap:g,item:te,scrollTop:T,viewport:G}))),ce),ue(Q(ct(be(U),r,be(J,Zd),be(A,$a),be(w,$a),be(X),be(v),be(xe),be(H),be(he)),ve(([,,,,,,,G])=>!G),ie(([G,[te,g],T,R,K,Z,re,,le,$])=>{const{column:oe,row:pe}=T,{height:we,width:se}=R,{width:fe}=K;if(re===0&&(G===0||fe===0))return io;if(se===0){const P=tn($,G),Ae=P+Math.max(re-1,0);return Jd(mo(P,Ae,Z))}const et=Qi(fe,se,oe);let Fe,Ke;le?te===0&&g===0&&re>0?(Fe=0,Ke=re-1):(Fe=et*tr((te+pe)/(we+pe)),Ke=et*lo((g+pe)/(we+pe))-1,Ke=yr(G-1,va(Ke,et-1)),Fe=yr(Ke,va(0,Fe))):(Fe=0,Ke=-1);const rt=mo(Fe,Ke,Z),{bottom:Rt,top:St}=uo(K,T,R,rt),Ft=lo(G/et),ss=Ft*we+(Ft-1)*pe-Rt;return{bottom:Rt,itemHeight:we,items:rt,itemWidth:se,offsetBottom:ss,offsetTop:St,top:St}})),y),ue(Q(X,ve(G=>G!==null),ie(G=>G.length)),U),ue(Q(ct(w,A,y,J),ve(([G,te,{items:g}])=>g.length>0&&te.height!==0&&G.height!==0),ie(([G,te,{items:g},T])=>{const{bottom:R,top:K}=uo(G,T,te,g);return[K,R]}),Je(ya)),s);const Y=W(!1);ue(Q(d,Te(Y),ie(([G,te])=>te||G!==0)),Y);const ae=zt(Q(ct(y,U),ve(([{items:G}])=>G.length>0),Te(Y),ve(([[G,te],g])=>{const T=G.items[G.items.length-1].index===te-1;return(g||G.bottom>0&&G.itemHeight>0&&G.offsetBottom===0&&G.items.length===te)&&T}),ie(([[,G]])=>G-1),Je())),$e=zt(Q(be(y),ve(({items:G})=>G.length>0&&G[0].index===0),rs(0),Je())),Me=zt(Q(be(y),Te(xe),ve(([{items:G},te])=>G.length>0&&!te),ie(([{items:G}])=>({endIndex:G[G.length-1].index,startIndex:G[0].index})),Je(Ni),bs(0)));ue(Me,b.scrollSeekRangeChanged),ue(Q(B,Te(w,A,U,J),ie(([G,te,g,T,R])=>{const K=Ci(G),{align:Z,behavior:re,offset:le}=K;let $=K.index;$==="LAST"&&($=T-1),$=va(0,$,yr(T-1,$));let oe=Hr(te,R,g,$);return Z==="end"?oe=co(oe-te.height+g.height):Z==="center"&&(oe=co(oe-te.height/2+g.height/2)),le!==void 0&&le!==0&&(oe+=le),{behavior:re,top:oe}})),c);const Ge=yt(Q(y,ie(G=>G.offsetBottom+G.bottom)),0);return ue(Q(z,ie(G=>({height:G.visibleHeight,width:G.visibleWidth}))),w),{customScrollParent:S,data:X,deviation:F,footerHeight:o,gap:J,headerHeight:n,increaseViewportBy:t,initialItemCount:v,itemDimensions:A,overscan:a,restoreStateFrom:ne,scrollBy:i,scrollContainerState:l,scrollHeight:E,scrollTo:c,scrollToIndex:B,scrollTop:d,smoothScrollTargetReached:u,totalCount:U,useWindowScroll:p,viewportDimensions:w,windowScrollContainerState:N,windowScrollTo:C,windowViewportRect:z,...b,gridState:y,horizontalDirection:M,initialTopMostItemIndex:he,totalListHeight:Ge,...h,endReached:ae,propsReady:j,rangeChanged:Me,startReached:$e,stateChanged:ce,stateRestoreInProgress:xe,...I}},Ze(sn,Ct,_a,Mi,Ts,an,Is));function Qi(t,s,a){return va(1,tr((t+a)/(tr(s)+a)))}function uo(t,s,a,r){const{height:o}=a;if(o===void 0||r.length===0)return{bottom:0,top:0};const n=Hr(t,s,a,r[0].index);return{bottom:Hr(t,s,a,r[r.length-1].index)+o,top:n}}function Hr(t,s,a,r){const o=Qi(t.width,a.width,s.column),n=tr(r/o),i=n*a.height+va(0,n-1)*s.row;return i>0?i+s.row:i}const tm=He(()=>{const t=W(f=>`Item ${f}`),s=W({}),a=W(null),r=W("virtuoso-grid-item"),o=W("virtuoso-grid-list"),n=W(nn),i=W("div"),l=W(ta),c=(f,h=null)=>yt(Q(s,ie(b=>b[f]),Je()),h),d=W(!1),u=W(!1);return ue(be(u),d),{components:s,computeItemKey:n,context:a,FooterComponent:c("Footer"),HeaderComponent:c("Header"),headerFooterTag:i,itemClassName:r,ItemComponent:c("Item","div"),itemContent:t,listClassName:o,ListComponent:c("List","div"),readyStateChanged:d,reportReadyState:u,ScrollerComponent:c("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:c("ScrollSeekPlaceholder","div")}}),sm=He(([t,s])=>({...t,...s}),Ze(em,tm)),am=de.memo(function(){const t=Xe("gridState"),s=Xe("listClassName"),a=Xe("itemClassName"),r=Xe("itemContent"),o=Xe("computeItemKey"),n=Xe("isSeeking"),i=Ut("scrollHeight"),l=Xe("ItemComponent"),c=Xe("ListComponent"),d=Xe("ScrollSeekPlaceholder"),u=Xe("context"),f=Ut("itemDimensions"),h=Ut("gap"),b=Xe("log"),k=Xe("stateRestoreInProgress"),j=Ut("reportReadyState"),S=Bs(de.useMemo(()=>p=>{const N=p.parentElement.parentElement.scrollHeight;i(N);const C=p.firstChild;if(C!==null){const{height:z,width:I}=C.getBoundingClientRect();f({height:z,width:I})}h({column:xo("column-gap",getComputedStyle(p).columnGap,b),row:xo("row-gap",getComputedStyle(p).rowGap,b)})},[i,f,h,b]),!0,!1);return Fi(()=>{t.itemHeight>0&&t.itemWidth>0&&j(!0)},[t]),k?null:e.jsx(c,{className:s,ref:S,...Nt(c,u),"data-testid":"virtuoso-item-list",style:{paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},children:t.items.map(p=>{const N=o(p.index,p.data,u);return n?e.jsx(d,{...Nt(d,u),height:t.itemHeight,index:p.index,width:t.itemWidth},N):m.createElement(l,{...Nt(l,u),className:a,"data-index":p.index,key:N},r(p.index,p.data,u))})})}),rm=de.memo(function(){const t=Xe("HeaderComponent"),s=Ut("headerHeight"),a=Xe("headerFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,!1),o=Xe("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null}),nm=de.memo(function(){const t=Xe("FooterComponent"),s=Ut("footerHeight"),a=Xe("headerFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,!1),o=Xe("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null}),om=({children:t})=>{const s=de.useContext($i),a=Ut("itemDimensions"),r=Ut("viewportDimensions"),o=Bs(de.useMemo(()=>n=>{r(n.getBoundingClientRect())},[r]),!0,!1);return de.useEffect(()=>{s&&(r({height:s.viewportHeight,width:s.viewportWidth}),a({height:s.itemHeight,width:s.itemWidth}))},[s,r,a]),e.jsx("div",{ref:o,style:on(!1),children:t})},im=({children:t})=>{const s=de.useContext($i),a=Ut("windowViewportRect"),r=Ut("itemDimensions"),o=Xe("customScrollParent"),n=Xe("useWindowScroll"),i=hi(a,o,!1);return de.useEffect(()=>{s&&(r({height:s.itemHeight,width:s.itemWidth}),a({listHeight:0,offsetTop:0,visibleHeight:s.viewportHeight,visibleWidth:s.viewportWidth}))},[s,a,r]),e.jsx("div",{ref:i,style:Pi(!1,n),children:t})},lm=de.memo(function({...t}){const s=Xe("useWindowScroll"),a=Xe("customScrollParent"),r=a||s?dm:cm,o=a||s?im:om,n=Xe("context");return e.jsx(r,{...t,...Nt(r,n),children:e.jsxs(o,{children:[e.jsx(rm,{}),e.jsx(am,{}),e.jsx(nm,{})]})})}),{useEmitter:Ui,useEmitterValue:Xe,usePublisher:Ut}=Li(sm,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},lm),cm=Hi({useEmitter:Ui,useEmitterValue:Xe,usePublisher:Ut}),dm=Gi({useEmitter:Ui,useEmitterValue:Xe,usePublisher:Ut});function xo(t,s,a){return s!=="normal"&&s?.endsWith("px")!==!0&&a(`${t} was not resolved to pixel value correctly`,s,ut.WARN),s==="normal"?0:parseInt(s??"0",10)}function po(t){if(Array.isArray(t)){if(t.length<5||t.length>6)throw new Error(`Invalid bone format: expected [x,y,w,h,r,c?] but got ${t.length} elements`);const s=t;return{x:s[0],y:s[1],w:s[2],h:s[3],r:s[4],c:s[5]||void 0}}return t}const ho=new Set(["p","h1","h2","h3","h4","h5","h6","li","td","th"]);function mm(t,s="component",a){const r=t.getBoundingClientRect(),o=[],n=a?.leafTags?new Set([...ho,...a.leafTags]):ho,i=a?.captureRoundedBorders??!0,l=a?.excludeTags?new Set(a.excludeTags):null,c=a?.excludeSelectors??null;function d(u){const f=getComputedStyle(u);if(f.display==="none"||f.visibility==="hidden"||f.opacity==="0")return;const h=u.tagName.toLowerCase();if(l?.has(h)||c?.some(w=>u.matches(w)))return;const b=[...u.children].filter(w=>{const A=getComputedStyle(w);return A.display!=="none"&&A.visibility!=="hidden"&&A.opacity!=="0"}),k=h==="img"||h==="svg"||h==="video"||h==="canvas",j=h==="input"||h==="button"||h==="textarea"||h==="select",S=b.length===0||k||j||n.has(h),p=f.backgroundColor,N=p!=="rgba(0, 0, 0, 0)"&&p!=="transparent",C=f.backgroundImage!=="none",z=parseFloat(f.borderTopWidth)||0,I=i&&z>0&&f.borderTopColor!=="rgba(0, 0, 0, 0)"&&f.borderTopColor!=="transparent",U=(parseFloat(f.borderTopLeftRadius)||0)>0,v=N||C||I&&U,y=h==="tr"||h==="td"||h==="th"||h==="thead"||h==="tbody"||h==="table";if(S){const w=u.getBoundingClientRect();if(w.width<1||w.height<1)return;const A=k&&w.width>0&&w.height>0&&Math.abs(w.width-w.height)<4,B=y?0:A?"50%":fo(f,u)??8,E=r.width;o.push({x:E>0?+((w.left-r.left)/E*100).toFixed(4):0,y:Math.round(w.top-r.top),w:E>0?+(w.width/E*100).toFixed(4):0,h:Math.round(w.height),r:B});return}if(v){const w=u.getBoundingClientRect();if(w.width>=1&&w.height>=1){const A=y?0:fo(f,u)??8,B=r.width;o.push({x:B>0?+((w.left-r.left)/B*100).toFixed(4):0,y:Math.round(w.top-r.top),w:B>0?+(w.width/B*100).toFixed(4):0,h:Math.round(w.height),r:A,c:!0})}}for(const w of b)d(w)}for(const u of t.children)d(u);return{name:s,viewportWidth:Math.round(r.width),width:Math.round(r.width),height:Math.round(r.height),bones:o}}function fo(t,s){const a=parseFloat(t.borderTopLeftRadius)||0,r=parseFloat(t.borderTopRightRadius)||0,o=parseFloat(t.borderBottomRightRadius)||0,n=parseFloat(t.borderBottomLeftRadius)||0;if(a===0&&r===0&&o===0&&n===0)return;const i=s?(()=>{const d=s.getBoundingClientRect();return d.width>0&&d.height>0&&Math.abs(d.width-d.height)<4})():!1;return t.borderRadius==="50%"?"50%":Math.max(a,r,o,n)>9998?i?"50%":9999:a===r&&r===o&&o===n?a!==8?a:void 0:`${a}px ${r}px ${o}px ${n}px`}const um=new Map;function xm(t){return um.get(t)}function pm(){typeof window<"u"&&window.__BONEYARD_BUILD&&(window.__BONEYARD_SNAPSHOT=mm)}function hm(){return typeof window<"u"&&window.__BONEYARD_BUILD===!0}function fm(t,s){if(!("breakpoints"in t))return t;const a=Object.keys(t.breakpoints).map(Number).sort((o,n)=>o-n);if(a.length===0)return null;const r=[...a].reverse().find(o=>s>=o)??a[0];return t.breakpoints[r]??null}const Us={angle:110,start:30,end:70,speed:"2s",lightHighlight:"#f7f7f7",darkHighlight:"#2c2c2c"},ua={speed:"1.8s",lightAdjust:.3,darkAdjust:.02},go={web:{light:"#f0f0f0",dark:"#222222"}},gm=/rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+))?\s*\)/;function bo(t,s){const a=t.match(gm);if(a){const[,r,o,n,i="1"]=a,l=Math.min(1,parseFloat(i)+s*.5);return`rgba(${r},${o},${n},${l.toFixed(3)})`}if(t.startsWith("#")&&t.length>=7){const r=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);if(!isNaN(r)&&!isNaN(o)&&!isNaN(n)){const i=Math.round(r+(255-r)*s),l=Math.round(o+(255-o)*s),c=Math.round(n+(255-n)*s);return`#${i.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}}return t}pm();let as={};function vo({loading:t,children:s,name:a,initialBones:r,color:o,darkColor:n,animate:i,stagger:l=!1,transition:c=!1,boneClass:d,className:u,fallback:f,fixture:h,snapshotConfig:b}){const k=m.useRef(null),j=m.useRef(Math.random().toString(36).slice(2,8)).current,[S,p]=m.useState(0),[N,C]=m.useState(0),[z,I]=m.useState(!1);m.useEffect(()=>{if(typeof window>"u")return;const g=()=>{const K=document.documentElement.classList.contains("dark")||!!k.current?.closest(".dark");I(K)};g();const T=new MutationObserver(g);T.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]});const R=window.matchMedia("(prefers-color-scheme: dark)");return R.addEventListener("change",g),()=>{T.disconnect(),R.removeEventListener("change",g)}},[]);const U=o??as.color??go.web.light,v=n??as.darkColor??go.web.dark,y=z?v:U,w=i??as.animate??"pulse",A=w===!0?"pulse":w===!1?"solid":w;m.useEffect(()=>{const g=k.current;if(!g)return;const T=new ResizeObserver(K=>{const Z=K[0]?.contentRect;p(Math.round(Z?.width??0)),Z&&Z.height>0&&C(Math.round(Z.height))});T.observe(g);const R=g.getBoundingClientRect();return p(Math.round(R.width)),R.height>0&&C(Math.round(R.height)),()=>T.disconnect()},[]);const B={};if(a&&(B["data-boneyard"]=a,b&&(B["data-boneyard-config"]=JSON.stringify(b))),hm())return e.jsx("div",{ref:k,className:u,style:{position:"relative"},...B,children:e.jsx("div",{children:h??s})});const[E,F]=m.useState(!1);m.useLayoutEffect(()=>{F(!0)},[]);const X=r??(a?xm(a):void 0),J=E&&typeof window<"u"?window.innerWidth:0,ce=S>0?S:J,ne=X&&ce>0?fm(X,ce):null,xe=d??as.boneClass,he=(()=>{const g=l??as.stagger;return g===!0?80:g===!1||!g?0:g})(),H=(()=>{const g=c??as.transition;return g===!0?300:g===!1||!g?0:g})(),[q,M]=m.useState(!1),Y=m.useRef(t),ae=m.useRef(null);m.useEffect(()=>(Y.current&&!t&&H>0&&ne&&(ae.current&&clearTimeout(ae.current),M(!0),ae.current=setTimeout(()=>{M(!1),ae.current=null},H)),Y.current=t,()=>{ae.current&&clearTimeout(ae.current)}),[t,H,ne]);const $e=(t||q)&&ne,Me=t&&!ne&&!q,Ge=N>0?N:ne?.height??0,G=ne?.height??0,te=Ge>0&&G>0?Ge/G:1;return e.jsxs("div",{ref:k,className:u,style:{position:"relative"},...B,children:[e.jsx("div",{"data-boneyard-content":"true",style:$e&&!q?{visibility:"hidden"}:void 0,children:Me?f:s}),$e&&e.jsx("div",{"data-boneyard-overlay":"true",style:{position:"absolute",inset:0,overflow:"hidden",opacity:q?0:1,transition:H>0?`opacity ${H}ms ease-out`:void 0},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[ne.bones.filter(g=>!po(g).c).map((g,T)=>{const R=po(g),K=y;bo(y,z?ua.darkAdjust:ua.lightAdjust);const Z=R.w/100*(ne.width??0),re=R.r==="50%"&&Math.abs(Z-R.h)<4,le={position:"absolute",left:`${R.x}%`,top:R.y*te,width:re?R.h*te:`${R.w}%`,height:R.h*te,borderRadius:typeof R.r=="string"?R.r:`${R.r}px`,backgroundColor:K},$=as.speed;if(A==="pulse")le.animation=`bp-${j} ${$??ua.speed} ease-in-out infinite`;else if(A==="shimmer"){const oe=z?as.darkShimmerColor??Us.darkHighlight:as.shimmerColor??Us.lightHighlight,pe=as.shimmerAngle??Us.angle;delete le.backgroundColor,le.backgroundImage=`linear-gradient(${pe}deg, ${K} ${Us.start}%, ${oe} 50%, ${K} ${Us.end}%)`,le.backgroundSize="200% 100%",le.animation=`bs-${j} ${$??Us.speed} linear infinite`}return he>0&&(le.opacity=0,le.animation=`${le.animation?le.animation+",":""} by-${j} 0.3s ease-out ${T*he}ms forwards`),e.jsx("div",{"data-boneyard-bone":"true",className:xe,style:le},T)}),A==="pulse"&&e.jsx("style",{children:`@keyframes bp-${j}{0%,100%{background-color:${y}}50%{background-color:${bo(y,z?ua.darkAdjust:ua.lightAdjust)}}}`}),A==="shimmer"&&e.jsx("style",{children:`@keyframes bs-${j}{0%{background-position:200% 0}100%{background-position:-200% 0}}`}),he>0&&e.jsx("style",{children:`@keyframes by-${j}{from{opacity:0}to{opacity:1}}`})]})})]})}async function cn(t){const s=$t(Ve,"managedStudents");try{const n=kt(s,jt("teacherId","==",t)),i=await Dt(n);if(!i.empty)return i.docs.map(c=>({id:c.id,...c.data()})).sort((c,d)=>String(c.name||"").localeCompare(String(d.name||"")))}catch{}const r=(await Wi(t)).map(n=>n.id);if(r.length===0)return[];const o=new Map;for(let n=0;n{o.set(d.id,{id:d.id,...d.data()})})}return Array.from(o.values()).sort((n,i)=>String(n.name||"").localeCompare(String(i.name||"")))}async function bm(t,s=[]){if(!t)return[];const a=$t(Ve,"users"),r=new Map,o=(i,l)=>String(l.role||"").toLowerCase()!=="student"?null:{uid:i,name:String(l.name||l.displayName||"").trim()||"Student",email:String(l.email||"").trim(),lrn:l.lrn&&String(l.lrn).trim()||void 0,photo:l.photo?String(l.photo).trim()||void 0:l.photoURL&&String(l.photoURL).trim()||void 0,grade:l.grade&&String(l.grade).trim()||void 0,section:l.section&&String(l.section).trim()||void 0,classSectionId:l.classSectionId&&String(l.classSectionId).trim()||void 0,adviserTeacherId:l.adviserTeacherId&&String(l.adviserTeacherId).trim()||void 0,role:"student",createdAt:l.createdAt||void 0};try{const i=kt(a,jt("role","==","student"),jt("adviserTeacherId","==",t));(await Dt(i)).docs.forEach(c=>{const d=o(c.id,c.data());d&&r.set(c.id,d)})}catch(i){console.warn("[studentService] adviser-scoped student query failed:",i)}const n=Array.from(new Set((s||[]).map(i=>(i||"").trim()).filter(i=>!!i)));for(let i=0;i{if(r.has(u.id))return;const f=o(u.id,u.data());f&&r.set(u.id,f)})}catch(c){console.warn("[studentService] section-scoped student query failed:",c)}}return Array.from(r.values()).sort((i,l)=>i.name.localeCompare(l.name))}function vm(t){const s=`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name||"Student")}&background=random`,a=El.now();return{id:t.uid,accountUid:t.uid,lrn:t.lrn,name:t.name,email:t.email,avatar:t.photo||s,teacherId:t.adviserTeacherId,grade:t.grade,gradeLevel:us(t.grade)||void 0,section:t.section,classSectionId:t.classSectionId,riskLevel:"Low",engagementScore:0,avgQuizScore:0,weakestTopic:"N/A",classroomId:t.classSectionId||"",attendance:0,assignmentCompletion:0,lastActive:null,struggles:[],createdAt:t.createdAt||a,updatedAt:a,hasRegisteredAccount:!0,source:"registered"}}function wo(t){return(t||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9\s]+/g," ").trim().replace(/\s+/g," ")}async function wm(t){const s=(t.studentId||"").trim();if(!s)throw new Error("Cannot reassign section: studentId is required.");const a=(t.newClassSectionId||"").trim()||Lt(t.newGrade,t.newSection);if(!a)throw new Error("Cannot reassign section: a target class section is required.");const r=(t.teacherId||"").trim(),o=(t.teacherName||"").trim(),n=(t.schoolYear||"").trim(),i=(t.previousClassSectionId||"").trim();try{const l=pt(Ve,"managedStudents",s),c=await js(l);c.exists()&&await Zt(l,{grade:t.newGrade,section:t.newSection,classSectionId:a,gradeLevel:us(t.newGrade)||t.newGrade,teacherId:r||c.data()?.teacherId,updatedAt:lt()})}catch(l){console.warn("[studentService] reassignStudentSection: managedStudents update failed:",l)}if(t.isRegisteredAccount)try{await is(pt(Ve,"users",s),{grade:t.newGrade,section:t.newSection,classSectionId:a,adviserTeacherId:r||void 0,adviserTeacherName:o||void 0,updatedAt:lt()},{merge:!0})}catch(l){console.warn("[studentService] reassignStudentSection: users profile update failed:",l)}try{await dr({classSectionId:a,grade:t.newGrade,section:t.newSection,schoolYear:n,ownerTeacherId:r,ownerTeacherName:o,studentUids:[s]})}catch(l){console.warn("[studentService] reassignStudentSection: ownership upsert failed:",l)}if(i&&i!==a)try{const l=pt(Ve,"classSectionOwnership",i),c=await js(l);if(c.exists()){const u=(c.data().studentUids||[]).filter(f=>f!==s);await Zt(l,{studentUids:u,updatedAt:lt()})}}catch(l){console.warn("[studentService] reassignStudentSection: previous-section cleanup failed:",l)}}async function Nm(t){const{apiService:s}=await _r(async()=>{const{apiService:d}=await import("./index-Dl2Y5a7s.js").then(u=>u.b6);return{apiService:d}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),a=(t.adviserTeacherId||"").trim();if(!a)throw new Error("createStudentAccountFromRoster requires adviserTeacherId.");const r=(t.email||"").trim().toLowerCase();if(!r)throw new Error("createStudentAccountFromRoster requires an email.");const o=(t.grade||"").trim(),n=(t.section||"").trim(),i=(t.classSectionId||"").trim()||(o&&n?Lt(o,n):""),c=((await s.createStudentAccount({name:(t.name||"").trim()||"Student",email:r,temporaryPassword:t.temporaryPassword,lrn:t.lrn?.trim()||void 0,grade:o||void 0,section:n||void 0,classSectionId:i||void 0,adviserTeacherId:a,adviserTeacherName:t.adviserTeacherName?.trim()||void 0,schoolYear:t.schoolYear?.trim()||void 0})).uid||"").trim();if(!c)throw new Error("Backend did not return a uid for the newly created student.");try{await is(pt(Ve,"managedStudents",c),sr({accountUid:c,name:(t.name||"").trim()||"Student",email:r,lrn:t.lrn?.trim()||null,teacherId:a,grade:o||null,gradeLevel:us(o)||null,section:n||null,classSectionId:i||null,classroomId:i||null,riskLevel:"Low",avgQuizScore:0,engagementScore:0,attendance:0,assignmentCompletion:0,weakestTopic:"",struggles:[],avatar:`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name||"Student")}&background=random`,hasRegisteredAccount:!0,source:"both",createdAt:lt(),updatedAt:lt()}))}catch(d){console.warn("[studentService] createStudentAccountFromRoster: managed-student merge failed:",d)}if(i&&o&&n)try{await dr({classSectionId:i,grade:o,section:n,schoolYear:t.schoolYear||"",ownerTeacherId:a,ownerTeacherName:t.adviserTeacherName,studentUids:[c]})}catch(d){console.warn("[studentService] createStudentAccountFromRoster: ownership upsert failed:",d)}return{uid:c,email:r,temporaryPassword:t.temporaryPassword}}async function jm(t,s,a){const r=pt(Ve,"managedStudents",t);await Zt(r,{riskLevel:s,...a!==void 0?{riskConfidence:a}:{},updatedAt:lt()})}async function Vi(t,s,a){const r=Lt(s,a),o=pt(Ve,"managedStudents",t);await Zt(o,{grade:s,section:a,classSectionId:r,updatedAt:lt()})}function Lt(t,s){return[t,s].filter(Boolean).join("_").replace(/\s+/g,"_").toLowerCase()}function sr(t){const s=Object.entries(t).filter(([,a])=>a!==void 0);return Object.fromEntries(s)}function us(t){const s=(t||"").trim();if(!s)return null;const a=s.match(/(\d{1,2})/);return a?`Grade ${a[1]}`:/^grade\s+/i.test(s)?s.replace(/\s+/g," ").trim().replace(/^grade/i,"Grade"):s}function sa(t){const a=us(t)?.match(/(\d{1,2})/),r=a?Number.parseInt(a[1],10):Number.NaN;return Number.isFinite(r)?r>=11?"Senior High School":"Junior High School":null}function aa(t,s){const a=`${t||""} ${s||""}`.toUpperCase();if(!a.trim())return null;const r=["STEM","ABM","HUMSS","GAS","TVL","ICT"];for(const o of r)if(new RegExp(`\\b${o}\\b`).test(a))return o;return null}function ls(t){const s=(t||"").trim();if(!s)return{grade:"Grade 11",section:"Section A"};const[a="Grade 11",r="Section A"]=s.split(" - ").map(o=>o.trim());return{grade:a||"Grade 11",section:r||"Section A"}}function gt(t){const s=t.metadata||{},a=t.className||s.className,r=ls(a),o=(t.grade||s.grade||r.grade||"").trim()||null,n=(t.section||s.section||r.section||"").trim()||null,i=(t.classSectionId||s.classSectionId||"").trim()||(o&&n?Lt(o,n):"")||null,l=(a||"").trim()||(o&&n?`${o} - ${n}`:"")||null,c=us(t.gradeLevel||s.gradeLevel||o),d=(t.classification||s.classification||"").trim()||sa(c)||null,u=(t.strand||s.strand||"").trim()||aa(l,n)||null;return{classSectionId:i,className:l,grade:o,section:n,gradeLevel:c,classification:d,strand:u,schoolYear:(t.schoolYear||s.schoolYear||"").trim()||null,ownerTeacherId:(t.ownerTeacherId||s.ownerTeacherId||"").trim()||null,ownerTeacherName:(t.ownerTeacherName||s.ownerTeacherName||"").trim()||null,adviserTeacherId:(t.adviserTeacherId||s.adviserTeacherId||"").trim()||null,adviserTeacherName:(t.adviserTeacherName||s.adviserTeacherName||"").trim()||null,managerId:(t.managerId||s.managerId||"").trim()||null,managerName:(t.managerName||s.managerName||"").trim()||null}}function ym(t){const s=(t.className||"").trim(),[a="",r=""]=s.split(" - "),o=(t.grade||a||"").trim()||null,n=(t.section||r||"").trim()||null,i=(t.classSectionId||"").trim()||(o&&n?Lt(o,n):"")||null,l=s||(o&&n?`${o} - ${n}`:null),c=us(t.gradeLevel||o),d=(t.classification||"").trim()||sa(c),u=(t.strand||"").trim()||aa(l,n);return{classSectionId:i,className:l,grade:o,section:n,gradeLevel:c,classification:d,strand:u,schoolYear:(t.schoolYear||"").trim()||null,ownerTeacherId:(t.ownerTeacherId||"").trim()||null,ownerTeacherName:(t.ownerTeacherName||"").trim()||null,adviserTeacherId:(t.adviserTeacherId||"").trim()||null,adviserTeacherName:(t.adviserTeacherName||"").trim()||null,managerId:(t.managerId||"").trim()||null,managerName:(t.managerName||"").trim()||null}}async function Wi(t){const s=$t(Ve,"classrooms"),a=new Map,r=kt(s,jt("teacherId","==",t));(await Dt(r)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})});const n=kt(s,jt("managerId","==",t));return(await Dt(n)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})}),Array.from(a.values()).sort((l,c)=>String(l.name||"").localeCompare(String(c.name||"")))}async function dr(t){const s=t.classSectionId||Lt(t.grade,t.section),a=pt(Ve,"classSectionOwnership",s),r=await js(a),o=r.exists()?r.data().studentUids||[]:[],n=Array.from(new Set([...t.studentUids||[],...o])),i=sr(t);return r.exists()?await Zt(a,{...i,classSectionId:s,studentUids:n,updatedAt:lt()}):await is(a,{...i,classSectionId:s,studentUids:n,createdAt:lt(),updatedAt:lt()}),s}async function qi(t){const s=(t.classSectionId||"").trim()||Lt(t.grade,t.section),a=(t.className||"").trim()||`${t.grade} - ${t.section}`,r=ym({classSectionId:s,className:a,grade:t.grade,section:t.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName,adviserTeacherId:t.ownerTeacherId,adviserTeacherName:t.ownerTeacherName,managerId:t.managerId,managerName:t.managerName,classification:t.classification,strand:t.strand,gradeLevel:t.gradeLevel});await dr({classSectionId:s,className:a,grade:r.grade||t.grade,gradeLevel:r.gradeLevel||t.gradeLevel||t.grade,classification:r.classification||t.classification,strand:r.strand||t.strand,section:r.section||t.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName,managerId:t.managerId,managerName:t.managerName,studentUids:[]});const o=$t(Ve,"classrooms"),n=kt(o,jt("classSectionId","==",s)),i=await Dt(n);if(i.empty){const l=sr({name:a,teacherId:t.ownerTeacherId,grade:r.grade,gradeLevel:r.gradeLevel,classification:r.classification,strand:r.strand,section:r.section,classSectionId:s,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName||"",adviserTeacherId:t.ownerTeacherId,adviserTeacherName:t.ownerTeacherName||"",managerId:t.managerId,managerName:t.managerName||"",classMetadata:r,schedule:"Mon-Fri",studentCount:0,avgScore:0,atRiskCount:0,createdAt:lt(),updatedAt:lt()});await is(pt(Ve,"classrooms",s),l,{merge:!0})}else for(const l of i.docs){const c=sr({name:a,grade:r.grade,gradeLevel:r.gradeLevel,classification:r.classification,strand:r.strand,section:r.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName||"",adviserTeacherId:t.ownerTeacherId,adviserTeacherName:t.ownerTeacherName||"",managerId:t.managerId,managerName:t.managerName||"",classMetadata:r,updatedAt:lt()});await Zt(l.ref,c)}return s}async function mr(t,s,a,r,o,n){const i=Lt(s,a);await dr({classSectionId:i,grade:s,section:a,schoolYear:o,ownerTeacherId:r,ownerTeacherName:n,studentUids:[t]}),await is(pt(Ve,"users",t),{grade:s,section:a,classSectionId:i,adviserTeacherId:r,adviserTeacherName:n||"",updatedAt:lt()},{merge:!0})}async function Sm(t){const s=$t(Ve,"classSectionOwnership"),a=new Map,r=kt(s,jt("ownerTeacherId","==",t));(await Dt(r)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})});const n=kt(s,jt("managerId","==",t));return(await Dt(n)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})}),Array.from(a.values()).sort((l,c)=>String(l.classSectionId||"").localeCompare(String(c.classSectionId||"")))}async function km(t="",s=25){const a=$t(Ve,"users"),r=Math.max(1,Math.min(100,s)),o=kt(a,jt("role","==","teacher"),Vr(r*4)),n=await Dt(o),i=t.trim().toLowerCase();return n.docs.map(c=>{const d=c.data(),u=String(d.name||"").trim(),f=String(d.email||"").trim();return{uid:c.id,name:u||"Teacher",email:f,photo:String(d.photo||d.photoURL||"").trim()||void 0}}).filter(c=>i?c.name.toLowerCase().includes(i)||c.email.toLowerCase().includes(i):!0).sort((c,d)=>c.name.localeCompare(d.name)).slice(0,r)}function Cm(t,s,a=20){if(t.length===0)return s([]),()=>{};const r=$t(Ve,"activities"),o=kt(r,jt("classroomId","in",t),Rl("timestamp","desc"));return ti(o,n=>{const i=n.docs.slice(0,a).map(l=>({id:l.id,...l.data()}));s(i)})}const Im=({open:t,onClose:s,onCreated:a,teacherName:r})=>{const{currentUser:o}=ds(),[n,i]=m.useState("details"),[l,c]=m.useState(""),[d,u]=m.useState("Grade 11"),[f,h]=m.useState(""),[b,k]=m.useState(!1),[j,S]=m.useState(""),[p,N]=m.useState([]),[C,z]=m.useState(new Set),[I,U]=m.useState(""),[v,y]=m.useState(!1);m.useEffect(()=>{t||(i("details"),c(""),u("Grade 11"),h(""),S(""),z(new Set),U(""))},[t]),m.useEffect(()=>{t&&n==="students"&&w()},[t,n]);const w=async()=>{y(!0);try{const F=$t(Ve,"users"),X=kt(F,jt("role","==","student")),J=await Dt(X),ce=[];J.docs.forEach(ne=>{const xe=ne.data();ce.push({uid:ne.id,name:xe.name||xe.displayName||"Student",email:xe.email||"",grade:xe.grade,section:xe.section})}),N(ce.sort((ne,xe)=>ne.name.localeCompare(xe.name)))}catch(F){console.error("[CreateClassModal] Failed to load students:",F)}finally{y(!1)}},A=async()=>{if(o){if(!f.trim()){S("Section name is required");return}S(""),k(!0);try{const F=String(new Date().getFullYear());if(await qi({classSectionId:"",grade:d,section:f.trim(),schoolYear:F,ownerTeacherId:o.uid,ownerTeacherName:r||o.displayName||"",managerId:o.uid,managerName:r||o.displayName||"",className:l.trim()||`${d} - ${f.trim()}`}),C.size>0){const X=Array.from(C).map(J=>mr(J,d,f.trim(),o.uid,F,r||o.displayName||""));await Promise.allSettled(X)}a(),s()}catch(F){S(F instanceof Error?F.message:"Failed to create class")}finally{k(!1)}}},B=F=>{z(X=>{const J=new Set(X);return J.has(F)?J.delete(F):J.add(F),J})},E=p.filter(F=>F.name.toLowerCase().includes(I.toLowerCase())||F.email.toLowerCase().includes(I.toLowerCase()));return t?e.jsx(Et,{children:e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:s}),e.jsxs(Re.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"relative bg-white rounded-2xl shadow-xl w-full max-w-lg mx-4 max-h-[80vh] flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-[#f1f5f9]",children:[e.jsx("h2",{className:"text-lg font-semibold text-[#1e293b]",children:n==="details"?"Create New Class":"Add Students"}),e.jsx("button",{onClick:s,className:"p-1 rounded-lg hover:bg-[#f1f5f9] transition-colors",children:e.jsx(cs,{size:20,className:"text-[#64748b]"})})]}),e.jsxs("div",{className:"p-6 overflow-y-auto flex-1",children:[n==="details"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-[#475569] block mb-1.5",children:"Class Name"}),e.jsx(ws,{placeholder:"e.g. Grade 11 - Section A",value:l,onChange:F=>c(F.target.value)}),e.jsx("p",{className:"text-xs text-[#94a3b8] mt-1",children:"Optional. Auto-generated from grade + section if empty."})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-[#475569] block mb-1.5",children:"Grade Level"}),e.jsxs("select",{value:d,onChange:F=>u(F.target.value),className:"w-full px-3 py-2 border border-[#e2e8f0] rounded-lg text-sm bg-white",children:[e.jsx("option",{value:"Grade 11",children:"Grade 11"}),e.jsx("option",{value:"Grade 12",children:"Grade 12"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-[#475569] block mb-1.5",children:"Section"}),e.jsx(ws,{placeholder:"e.g. Section A, STEM-1, Rizal",value:f,onChange:F=>h(F.target.value)})]}),j&&e.jsx("p",{className:"text-sm text-rose-500",children:j})]}),n==="students"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx(Os,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-[#94a3b8]"}),e.jsx(ws,{placeholder:"Search students...",value:I,onChange:F=>U(F.target.value),className:"pl-9"})]}),e.jsxs("p",{className:"text-xs text-[#64748b]",children:[C.size," student(s) selected"]}),v?e.jsx("p",{className:"text-sm text-[#64748b] text-center py-4",children:"Loading students..."}):E.length===0?e.jsx("p",{className:"text-sm text-[#64748b] text-center py-4",children:"No students found."}):e.jsx("div",{className:"space-y-1 max-h-[300px] overflow-y-auto",children:E.map(F=>e.jsxs("button",{onClick:()=>B(F.uid),className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-left transition-colors ${C.has(F.uid)?"bg-purple-50 border border-purple-200":"hover:bg-[#f8fafc] border border-transparent"}`,children:[e.jsx("div",{className:`w-5 h-5 rounded-md border-2 flex items-center justify-center ${C.has(F.uid)?"bg-[#9956DE] border-[#9956DE]":"border-[#cbd5e1]"}`,children:C.has(F.uid)&&e.jsx(Mt,{size:12,className:"text-white"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-[#1e293b] truncate",children:F.name}),e.jsx("p",{className:"text-xs text-[#64748b] truncate",children:F.email})]}),F.grade&&e.jsx("span",{className:"text-xs text-[#94a3b8]",children:F.grade})]},F.uid))}),j&&e.jsx("p",{className:"text-sm text-rose-500",children:j})]})]}),e.jsx("div",{className:"flex items-center justify-between p-6 border-t border-[#f1f5f9]",children:n==="details"?e.jsxs(e.Fragment,{children:[e.jsx(xt,{variant:"outline",onClick:s,children:"Cancel"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(xt,{variant:"outline",onClick:()=>{if(!f.trim()){S("Section is required");return}S(""),i("students")},children:"Add Students"}),e.jsx(xt,{onClick:A,disabled:b||!f.trim(),className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:b?"Creating...":"Create Class"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(xt,{variant:"outline",onClick:()=>i("details"),children:"Back"}),e.jsxs(xt,{onClick:A,disabled:b,className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:[e.jsx(Js,{size:16,className:"mr-1"}),b?"Creating...":`Create with ${C.size} Student${C.size!==1?"s":""}`]})]})})]})]})}):null},Tm=({open:t,onClose:s,onAdded:a,grade:r,section:o,teacherName:n,existingStudentUids:i=[]})=>{const{currentUser:l}=ds(),[c,d]=m.useState([]),[u,f]=m.useState(new Set),[h,b]=m.useState(""),[k,j]=m.useState(!1),[S,p]=m.useState(!1);m.useEffect(()=>{t&&(f(new Set),b(""),N())},[t]);const N=async()=>{j(!0);try{const I=kt($t(Ve,"users"),jt("role","==","student")),v=(await Dt(I)).docs.filter(y=>!i.includes(y.id)).map(y=>{const w=y.data();return{uid:y.id,name:w.name||w.displayName||"Student",email:w.email||""}}).sort((y,w)=>y.name.localeCompare(w.name));d(v)}catch{}j(!1)},C=async()=>{if(!(!l||u.size===0)){p(!0);try{const I=String(new Date().getFullYear()),U=Array.from(u).map(v=>mr(v,r,o,l.uid,I,n||l.displayName||""));await Promise.allSettled(U),me.success(`Added ${u.size} student(s) to class`),a(),s()}catch{me.error("Failed to add students")}p(!1)}},z=c.filter(I=>I.name.toLowerCase().includes(h.toLowerCase())||I.email.toLowerCase().includes(h.toLowerCase()));return t?e.jsx(Et,{children:e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:s}),e.jsxs(Re.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"relative bg-white rounded-2xl shadow-xl w-full max-w-2xl mx-4 max-h-[80vh] flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-5 border-b border-[#f1f5f9]",children:[e.jsxs("h2",{className:"text-base font-semibold text-[#1e293b]",children:["Add Students to ",r," - ",o]}),e.jsx("button",{onClick:s,className:"p-1 rounded-lg hover:bg-[#f1f5f9]",children:e.jsx(cs,{size:18,className:"text-[#64748b]"})})]}),e.jsxs("div",{className:"p-4 space-y-3 flex-1 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Os,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-[#94a3b8]"}),e.jsx(ws,{placeholder:"Search students...",value:h,onChange:I=>b(I.target.value),className:"pl-8 h-9 text-sm"})]}),e.jsx("button",{onClick:()=>{u.size===z.length?f(new Set):f(new Set(z.map(I=>I.uid)))},className:"text-[11px] font-semibold text-[#9956DE] hover:text-[#7c3aed] bg-[#9956DE]/10 hover:bg-[#9956DE]/20 px-3 py-1.5 rounded-lg transition-colors whitespace-nowrap",children:u.size===z.length&&z.length>0?"Deselect All":"Select All"})]}),e.jsxs("p",{className:"text-xs text-[#64748b]",children:[u.size," of ",z.length," selected"]}),e.jsx("div",{className:"flex-1 overflow-y-auto space-y-1 min-h-[300px]",children:k?e.jsx("p",{className:"text-sm text-center text-[#64748b] py-6",children:"Loading..."}):z.length===0?e.jsx("p",{className:"text-sm text-center text-[#64748b] py-6",children:"No students available"}):z.map(I=>e.jsxs("button",{onClick:()=>f(U=>{const v=new Set(U);return v.has(I.uid)?v.delete(I.uid):v.add(I.uid),v}),className:`w-full flex items-center gap-3 px-3 py-2 rounded-lg text-left transition-colors ${u.has(I.uid)?"bg-purple-50 border border-purple-200":"hover:bg-[#f8fafc] border border-transparent"}`,children:[e.jsx("div",{className:`w-5 h-5 rounded-md border-2 flex items-center justify-center shrink-0 ${u.has(I.uid)?"bg-[#9956DE] border-[#9956DE]":"border-[#cbd5e1]"}`,children:u.has(I.uid)&&e.jsx(Mt,{size:12,className:"text-white"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-[#1e293b] truncate",children:I.name}),e.jsx("p",{className:"text-[11px] text-[#64748b] truncate",children:I.email})]})]},I.uid))})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 border-t border-[#f1f5f9]",children:[e.jsx(xt,{variant:"outline",size:"sm",onClick:s,children:"Cancel"}),e.jsxs(xt,{size:"sm",onClick:C,disabled:S||u.size===0,className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:[e.jsx(Ko,{size:14,className:"mr-1.5"}),S?"Adding...":`Add ${u.size} Student${u.size!==1?"s":""}`]})]})]})]})}):null};async function Em(t,s,a){const r=pt($t(Ve,"generatedLessonPlans"));return await is(r,{...t,teacherId:s,teacherName:a?.teacherName||null,studentId:a?.studentId||null,studentName:a?.studentName||null,status:"draft",createdAt:lt(),updatedAt:lt()}),r.id}async function Rm(t){const s=pt(Ve,"generatedLessonPlans",t),a=await js(s);if(!a.exists())throw new Error("Lesson draft not found. Save draft before publishing.");if(!a.data().publishReady)throw new Error("Lesson is not publish-ready. Resolve source legitimacy and validation issues first.");await Zt(s,{status:"published",publishedAt:lt(),updatedAt:lt()})}async function _m(t,s=!0){const a=t.learningCompetency||t.lessonTitle||t.focusTopics&&t.focusTopics[0]||"general mathematics",r=t.subject||"general_math",o=t.quarter??1;let n="",i=[],l,c,d,u=!1;if(s)try{const b=await bl(a,r,o,{lessonTitle:t.lessonTitle,learningCompetency:t.learningCompetency,moduleUnit:t.moduleUnit,learnerLevel:t.learnerLevel});i=b.sources||[],n=b.explanation||"",l=b.retrievalConfidence,c=b.retrievalBand,d=b.retrievalQuery,u=b.needsReview??!1}catch{n="",i=[]}const f={...t,subject:r,quarter:o,curriculumContext:n?`[CURRICULUM CONTEXT] + */const $c=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],Dr=ht("wand-sparkles",$c);function Fc(t,s){const a=gl(t);return isNaN(s)?sc(t,NaN):(a.setDate(a.getDate()+s),a)}function mi(t,s){const a=jn(t),r=jn(s);return+a==+r}function Un(t){return mi(t,oi(t))}function Oc(t,s){return Fc(t,-1)}function Vn(t){return mi(t,Oc(oi(t)))}const ir=0,Cs=1,ea=2,ui=4;function Wn(t){return()=>t}function Bc(t){t()}function xi(t,s){return a=>t(s(a))}function qn(t,s){return()=>t(s)}function Pc(t,s){return a=>t(s,a)}function Yr(t){return t!==void 0}function Hc(...t){return()=>{t.map(Bc)}}function ta(){}function lr(t,s){return s(t),t}function Gc(t,s){return s(t)}function Ze(...t){return t}function Ue(t,s){return t(Cs,s)}function Ie(t,s){t(ir,s)}function Kr(t){t(ea)}function tt(t){return t(ui)}function ue(t,s){return Ue(t,Pc(s,ir))}function es(t,s){const a=t(Cs,r=>{a(),s(r)});return a}function Yn(t){let s,a;return r=>o=>{s=o,a&&clearTimeout(a),a=setTimeout(()=>{r(s)},t)}}function pi(t,s){return t===s}function Je(t=pi){let s;return a=>r=>{t(s,r)||(s=r,a(r))}}function ve(t){return s=>a=>{t(a)&&s(a)}}function ie(t){return s=>xi(s,t)}function rs(t){return s=>()=>{s(t)}}function Q(t,...s){const a=Qc(...s);return((r,o)=>{switch(r){case ea:Kr(t);return;case Cs:return Ue(t,a(o))}})}function ns(t,s){return a=>r=>{a(s=t(s,r))}}function Fs(t){return s=>a=>{t>0?t--:s(a)}}function bs(t){let s=null,a;return r=>o=>{s=o,!a&&(a=setTimeout(()=>{a=void 0,r(s)},t))}}function Te(...t){const s=new Array(t.length);let a=0,r=null;const o=2**t.length-1;return t.forEach((n,i)=>{const l=2**i;Ue(n,c=>{const d=a;a|=l,s[i]=c,d!==o&&a===o&&r&&(r(),r=null)})}),n=>i=>{const l=()=>{n([i].concat(s))};a===o?l():r=l}}function Qc(...t){return s=>t.reduceRight(Gc,s)}function Uc(t){let s,a;const r=()=>s?.();return function(o,n){switch(o){case Cs:return n?a===n?void 0:(r(),a=n,s=Ue(t,n),s):(r(),ta);case ea:r(),a=null;return}}}function W(t){let s=t;const a=Le();return((r,o)=>{switch(r){case ir:s=o;break;case Cs:{o(s);break}case ui:return s}return a(r,o)})}function yt(t,s){return lr(W(s),a=>ue(t,a))}function Le(){const t=[];return((s,a)=>{switch(s){case ir:t.slice().forEach(r=>{r(a)});return;case ea:t.splice(0,t.length);return;case Cs:return t.push(a),()=>{const r=t.indexOf(a);r>-1&&t.splice(r,1)}}})}function zt(t){return lr(Le(),s=>ue(t,s))}function He(t,s=[],{singleton:a}={singleton:!0}){return{constructor:t,dependencies:s,id:Vc(),singleton:a}}const Vc=()=>Symbol();function Wc(t){const s=new Map,a=({constructor:r,dependencies:o,id:n,singleton:i})=>{if(i&&s.has(n))return s.get(n);const l=r(o.map(c=>a(c)));return i&&s.set(n,l),l};return a(t)}function ct(...t){const s=Le(),a=new Array(t.length);let r=0;const o=2**t.length-1;return t.forEach((n,i)=>{const l=2**i;Ue(n,c=>{a[i]=c,r|=l,r===o&&Ie(s,a)})}),function(n,i){switch(n){case ea:{Kr(s);return}case Cs:return r===o&&i(a),Ue(s,i)}}}function be(t,s=pi){return Q(t,Je(s))}function $r(...t){return function(s,a){switch(s){case ea:return;case Cs:return Hc(...t.map(r=>Ue(r,a)))}}}const ut={DEBUG:0,INFO:1,WARN:2,ERROR:3},qc={[ut.DEBUG]:"debug",[ut.ERROR]:"error",[ut.INFO]:"log",[ut.WARN]:"warn"},Yc=()=>typeof globalThis>"u"?window:globalThis,Is=He(()=>{const t=W(ut.ERROR);return{log:W((s,a,r=ut.INFO)=>{const o=Yc().VIRTUOSO_LOG_LEVEL??tt(t);r>=o&&console[qc[r]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",s,a)}),logLevel:t}},[],{singleton:!0});function Bs(t,s,a){return Xr(t,s,a).callbackRef}function Xr(t,s,a){const r=de.useRef(null);let o=i=>{};const n=de.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(i=>{const l=()=>{const c=i[0].target;c.offsetParent!==null&&t(c)};a?l():requestAnimationFrame(l)}):null,[t,a]);return o=i=>{i&&s?(n?.observe(i),r.current=i):(r.current&&n?.unobserve(r.current),r.current=null)},{callbackRef:o,ref:r}}function Kc(t,s,a,r,o,n,i,l,c){const d=de.useCallback(u=>{const f=Xc(u.children,s,l?"offsetWidth":"offsetHeight",o);let h=u.parentElement;for(;h.dataset.virtuosoScroller===void 0;)h=h.parentElement;const b=h.lastElementChild.dataset.viewportType==="window";let k;b&&(k=h.ownerDocument.defaultView);const j=i?l?i.scrollLeft:i.scrollTop:b?l?k.scrollX||k.document.documentElement.scrollLeft:k.scrollY||k.document.documentElement.scrollTop:l?h.scrollLeft:h.scrollTop,S=i?l?i.scrollWidth:i.scrollHeight:b?l?k.document.documentElement.scrollWidth:k.document.documentElement.scrollHeight:l?h.scrollWidth:h.scrollHeight,p=i?l?i.offsetWidth:i.offsetHeight:b?l?k.innerWidth:k.innerHeight:l?h.offsetWidth:h.offsetHeight;r({scrollHeight:S,scrollTop:Math.max(j,0),viewportHeight:p}),n?.(l?Kn("column-gap",getComputedStyle(u).columnGap,o):Kn("row-gap",getComputedStyle(u).rowGap,o)),f!==null&&t(f)},[t,s,o,n,i,r,l]);return Xr(d,a,c)}function Xc(t,s,a,r){const o=t.length;if(o===0)return null;const n=[];for(let i=0;i{if(!c?.offsetParent)return;const d=c.getBoundingClientRect(),u=d.width;let f,h;if(s){const b=s.getBoundingClientRect(),k=d.top-b.top;h=b.height-Math.max(0,k),f=k+s.scrollTop}else{const b=i.current.ownerDocument.defaultView;h=b.innerHeight-Math.max(0,d.top),f=d.top+b.scrollY}r.current={listHeight:d.height,offsetTop:f,visibleHeight:h,visibleWidth:u},t(r.current)},[t,s]),{callbackRef:n,ref:i}=Xr(o,!0,a),l=de.useCallback(()=>{o(i.current)},[o,i]);return de.useEffect(()=>{if(s){s.addEventListener("scroll",l);const d=new ResizeObserver(()=>{requestAnimationFrame(l)});return d.observe(s),()=>{s.removeEventListener("scroll",l),d.unobserve(s)}}const c=i.current?.ownerDocument.defaultView;return c?.addEventListener("scroll",l),c?.addEventListener("resize",l),()=>{c?.removeEventListener("scroll",l),c?.removeEventListener("resize",l)}},[l,s,i]),n}const Ct=He(()=>{const t=Le(),s=Le(),a=W(0),r=Le(),o=W(0),n=Le(),i=Le(),l=W(0),c=W(0),d=W(0),u=W(0),f=Le(),h=Le(),b=W(!1),k=W(!1),j=W(!1);return ue(Q(t,ie(({scrollTop:S})=>S)),s),ue(Q(t,ie(({scrollHeight:S})=>S)),i),ue(s,o),{deviation:a,fixedFooterHeight:d,fixedHeaderHeight:c,footerHeight:u,headerHeight:l,horizontalDirection:k,scrollBy:h,scrollContainerState:t,scrollHeight:i,scrollingInProgress:b,scrollTo:f,scrollTop:s,skipAnimationFrameInResizeObserver:j,smoothScrollTargetReached:r,statefulScrollTop:o,viewportHeight:n}},[],{singleton:!0}),Na={lvl:0};function fi(t,s){const a=t.length;if(a===0)return[];let{index:r,value:o}=s(t[0]);const n=[];for(let i=1;is&&(l=l.concat(Or(o,s,a))),r>=s&&r<=a&&l.push({k:r,v:i}),r<=a&&(l=l.concat(Or(n,s,a))),l}function Qa(t){const{l:s,lvl:a,r}=t;if(r.lvl>=a-1&&s.lvl>=a-1)return t;if(a>r.lvl+1){if(vr(s))return wi(mt(t,{lvl:a-1}));if(!qe(s)&&!qe(s.r))return mt(s.r,{l:mt(s,{r:s.r.l}),lvl:a,r:mt(t,{l:s.r.r,lvl:a-1})});throw new Error("Unexpected empty nodes")}if(vr(t))return Br(mt(t,{lvl:a-1}));if(!qe(r)&&!qe(r.l)){const o=r.l,n=vr(o)?r.lvl-1:r.lvl;return mt(o,{l:mt(t,{lvl:a-1,r:o.l}),lvl:o.lvl+1,r:Br(mt(r,{l:o.r,lvl:n}))})}throw new Error("Unexpected empty nodes")}function mt(t,s){return vi(s.k!==void 0?s.k:t.k,s.v!==void 0?s.v:t.v,s.lvl!==void 0?s.lvl:t.lvl,s.l!==void 0?s.l:t.l,s.r!==void 0?s.r:t.r)}function gi(t){return qe(t.r)?t.l:Qa(mt(t,{r:gi(t.r)}))}function vr(t){return qe(t)||t.lvl>t.r.lvl}function bi(t){return qe(t.r)?[t.k,t.v]:bi(t.r)}function vi(t,s,a,r=Na,o=Na){return{k:t,l:r,lvl:a,r:o,v:s}}function Xn(t){return Br(wi(t))}function wi(t){const{l:s}=t;return!qe(s)&&s.lvl===t.lvl?mt(s,{r:mt(t,{l:s.r})}):t}function Br(t){const{lvl:s,r:a}=t;return!qe(a)&&!qe(a.r)&&a.lvl===s&&a.r.lvl===s?mt(a,{l:mt(t,{r:a.l}),lvl:s+1}):t}function Jc(t){return fi(t,({k:s,v:a})=>({index:s,value:a}))}function Ni(t,s){return!!(t&&t.startIndex===s.startIndex&&t.endIndex===s.endIndex)}function ya(t,s){return!!(t&&t[0]===s[0]&&t[1]===s[1])}const Jr=He(()=>({recalcInProgress:W(!1)}),[],{singleton:!0});function ji(t,s,a){return t[er(t,s,a)]}function er(t,s,a,r=0){let o=t.length-1;for(;r<=o;){const n=Math.floor((r+o)/2),i=t[n],l=a(i,s);if(l===0)return n;if(l===-1){if(o-r<2)return n-1;o=n-1}else{if(o===r)return n;r=n+1}}throw new Error(`Failed binary finding record in array - ${t.join(",")}, searched for ${s}`)}function Zc(t,s,a,r){const o=er(t,s,r),n=er(t,a,r,o);return t.slice(o,n+1)}function ks(t,s){return Math.round(t.getBoundingClientRect()[s])}function cr(t){return!qe(t.groupOffsetTree)}function Zr({index:t},s){return s===t?0:s=f||n===h)&&(t=Fr(t,f)):(d=h!==n,c=!0),u>o&&o>=f&&h!==n&&(t=At(t,o+1,h));d&&(t=At(t,i,n))}return[t,a]}function sd(t){return typeof t.groupIndex<"u"}function ad({offset:t},s){return s===t?0:s0?l+a:l}function yi(t,s){if(!cr(s))return t;let a=0;for(;s.groupIndices[a]<=t+a;)a++;return t+a}function Si(t,s,a){if(sd(t))return s.groupIndices[t.groupIndex]+1;const r=t.index==="LAST"?a:t.index;let o=yi(r,s);return o=Math.max(0,o,Math.min(a,o)),o}function rd(t,s,a,r=0){return r>0&&(s=Math.max(s,ji(t,r,Zr).offset)),fi(Zc(t,s,a,ad),id)}function nd(t,[s,a,r,o]){s.length>0&&r("received item sizes",s,ut.DEBUG);const n=t.sizeTree;let i=n,l=0;if(a.length>0&&qe(n)&&s.length===2){const h=s[0].size,b=s[1].size;i=a.reduce((k,j)=>At(At(k,j,h),j+1,b),i)}else[i,l]=td(i,s);if(i===n)return t;const{lastIndex:c,lastOffset:d,lastSize:u,offsetTree:f}=Pr(t.offsetTree,l,i,o);return{groupIndices:a,groupOffsetTree:a.reduce((h,b)=>At(h,b,Sa(b,f,o)),Ys()),lastIndex:c,lastOffset:d,lastSize:u,offsetTree:f,sizeTree:i}}function od(t){return Ls(t).map(({k:s,v:a},r,o)=>{const n=o[r+1];return{endIndex:n!==void 0?n.k-1:1/0,size:a,startIndex:s}})}function Jn(t,s){let a=0,r=0;for(;ao.start===r&&(o.end===s||o.end===1/0)&&o.value===a}const cd={offsetHeight:"height",offsetWidth:"width"},ms=He(([{log:t},{recalcInProgress:s}])=>{const a=Le(),r=Le(),o=yt(r,0),n=Le(),i=Le(),l=W(0),c=W([]),d=W(void 0),u=W(void 0),f=W(void 0),h=W(void 0),b=W((v,y)=>ks(v,cd[y])),k=W(void 0),j=W(0),S=ed(),p=yt(Q(a,Te(c,t,j),ns(nd,S),Je()),S),N=yt(Q(c,Je(),ns((v,y)=>({current:y,prev:v.current}),{current:[],prev:[]}),ie(({prev:v})=>v)),[]);ue(Q(c,ve(v=>v.length>0),Te(p,j),ie(([v,y,w])=>{const A=v.reduce((B,E,F)=>At(B,E,Sa(E,y.offsetTree,w)||F),Ys());return{...y,groupIndices:v,groupOffsetTree:A}})),p),ue(Q(r,Te(p),ve(([v,{lastIndex:y}])=>v[{endIndex:y,size:w,startIndex:v}])),a),ue(d,u);const C=yt(Q(d,ie(v=>v===void 0)),!0);ue(Q(u,ve(v=>v!==void 0&&qe(tt(p).sizeTree)),ie(v=>{const y=tt(f),w=tt(c).length>0;return y!==void 0&&y!==0?w?[{endIndex:0,size:y,startIndex:0},{endIndex:1,size:v,startIndex:1}]:[]:[{endIndex:0,size:v,startIndex:0}]})),a),ue(Q(h,ve(v=>v!==void 0&&v.length>0&&qe(tt(p).sizeTree)),ie(v=>{const y=[];let w=v[0],A=0;for(let B=1;Bv!==void 0&&y!==void 0),ie(([v,y,w])=>{const A=[];for(let B=0;B({changed:w!==v,sizes:w}),{changed:!1,sizes:S}),ie(v=>v.changed)));Ue(Q(l,ns((v,y)=>({diff:v.prev-y,prev:y}),{diff:0,prev:0}),ie(v=>v.diff)),v=>{const{groupIndices:y}=tt(p);if(v>0)Ie(s,!0),Ie(n,v+Jn(v,y));else if(v<0){const w=tt(N);w.length>0&&(v-=Jn(-v,w)),Ie(i,v)}}),Ue(Q(l,Te(t)),([v,y])=>{v<0&&y("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:l},ut.ERROR)});const I=zt(n);ue(Q(n,Te(p),ie(([v,y])=>{const w=y.groupIndices.length>0,A=[],B=y.lastSize;if(w){const E=ja(y.sizeTree,0);let F=0,X=0;for(;F{let he=ce.ranges;return ce.prevSize!==0&&(he=[...ce.ranges,{endIndex:ne+v-1,size:ce.prevSize,startIndex:ce.prevIndex}]),{prevIndex:ne+v,prevSize:xe,ranges:he}},{prevIndex:v,prevSize:0,ranges:A}).ranges}return Ls(y.sizeTree).reduce((E,{k:F,v:X})=>({prevIndex:F+v,prevSize:X,ranges:[...E.ranges,{endIndex:F+v-1,size:E.prevSize,startIndex:E.prevIndex}]}),{prevIndex:0,prevSize:B,ranges:[]}).ranges})),a);const U=zt(Q(i,Te(p,j),ie(([v,{offsetTree:y},w])=>{const A=-v;return Sa(A,y,w)})));return ue(Q(i,Te(p,j),ie(([v,y,w])=>{if(y.groupIndices.length>0){if(qe(y.sizeTree))return y;let B=Ys();const E=tt(N);let F=0,X=0,J=0;for(;F<-v;){J=E[X];const ce=E[X+1]-J-1;X++,F+=ce+1}if(B=Ls(y.sizeTree).reduce((ce,{k:ne,v:xe})=>At(ce,Math.max(0,ne+v),xe),B),F!==-v){const ce=ja(y.sizeTree,J);B=At(B,0,ce);const ne=ts(y.sizeTree,-v+1)[1];B=At(B,1,ne)}return{...y,sizeTree:B,...Pr(y.offsetTree,0,B,w)}}const A=Ls(y.sizeTree).reduce((B,{k:E,v:F})=>At(B,Math.max(0,E+v),F),Ys());return{...y,sizeTree:A,...Pr(y.offsetTree,0,A,w)}})),p),{beforeUnshiftWith:I,data:k,defaultItemSize:u,firstItemIndex:l,fixedItemSize:d,fixedGroupSize:f,gap:j,groupIndices:c,heightEstimates:h,itemSize:b,listRefresh:z,shiftWith:i,shiftWithOffset:U,sizeRanges:a,sizes:p,statefulTotalCount:o,totalCount:r,trackItemSizes:C,unshiftWith:n}},Ze(Is,Jr),{singleton:!0});function dd(t){return t.reduce((s,a)=>(s.groupIndices.push(s.totalCount),s.totalCount+=a+1,s),{groupIndices:[],totalCount:0})}const ki=He(([{groupIndices:t,sizes:s,totalCount:a},{headerHeight:r,scrollTop:o}])=>{const n=Le(),i=Le(),l=zt(Q(n,ie(dd)));return ue(Q(l,ie(c=>c.totalCount)),a),ue(Q(l,ie(c=>c.groupIndices)),t),ue(Q(ct(o,s,r),ve(([c,d])=>cr(d)),ie(([c,d,u])=>ts(d.groupOffsetTree,Math.max(c-u,0),"v")[0]),Je(),ie(c=>[c])),i),{groupCounts:n,topItemsIndexes:i}},Ze(ms,Ct)),Ts=He(([{log:t}])=>{const s=W(!1),a=zt(Q(s,ve(r=>r),Je()));return Ue(s,r=>{r&&tt(t)("props updated",{},ut.DEBUG)}),{didMount:a,propsReady:s}},Ze(Is),{singleton:!0}),md=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function Ci(t){const s=typeof t=="number"?{index:t}:t;return s.align||(s.align="start"),(!s.behavior||!md)&&(s.behavior="auto"),s.offset===void 0&&(s.offset=0),s}const Ea=He(([{gap:t,listRefresh:s,sizes:a,totalCount:r},{fixedFooterHeight:o,fixedHeaderHeight:n,footerHeight:i,headerHeight:l,scrollingInProgress:c,scrollTo:d,smoothScrollTargetReached:u,viewportHeight:f},{log:h}])=>{const b=Le(),k=Le(),j=W(0);let S=null,p=null,N=null;function C(){S!==null&&(S(),S=null),N!==null&&(N(),N=null),p&&(clearTimeout(p),p=null),Ie(c,!1)}return ue(Q(b,Te(a,f,r,j,l,i,h),Te(t,n,o),ie(([[z,I,U,v,y,w,A,B],E,F,X])=>{const J=Ci(z),{align:ce,behavior:ne,offset:xe}=J,he=v-1,H=Si(J,I,he);let q=Sa(H,I.offsetTree,E)+w;ce==="end"?(q+=F+ts(I.sizeTree,H)[1]-U+X,H===he&&(q+=A)):ce==="center"?q+=(F+ts(I.sizeTree,H)[1]-U+X)/2:q-=y,xe!==void 0&&xe!==0&&(q+=xe);const M=Y=>{C(),Y?(B("retrying to scroll to",{location:z},ut.DEBUG),Ie(b,z)):(Ie(k,!0),B("list did not change, scroll successful",{},ut.DEBUG))};if(C(),ne==="smooth"){let Y=!1;N=Ue(s,ae=>{Y=Y||ae}),S=es(u,()=>{M(Y)})}else S=es(Q(s,ud(150)),M);return p=setTimeout(()=>{C()},1200),Ie(c,!0),B("scrolling from index to",{behavior:ne,index:H,top:q},ut.DEBUG),{behavior:ne,top:q}})),d),{scrollTargetReached:k,scrollToIndex:b,topListHeight:j}},Ze(ms,Ct,Is),{singleton:!0});function ud(t){return s=>{const a=setTimeout(()=>{s(!1)},t);return r=>{r&&(s(!0),clearTimeout(a))}}}function en(t,s){t===0?s():requestAnimationFrame(()=>{en(t-1,s)})}function tn(t,s){const a=s-1;return typeof t=="number"?t:t.index==="LAST"?a:t.index}const Ra=He(([{defaultItemSize:t,listRefresh:s,sizes:a},{scrollTop:r},{scrollTargetReached:o,scrollToIndex:n},{didMount:i}])=>{const l=W(!0),c=W(0),d=W(!0);return ue(Q(i,Te(c),ve(([u,f])=>f!==0),rs(!1)),l),ue(Q(i,Te(c),ve(([u,f])=>f!==0),rs(!1)),d),Ue(Q(ct(s,i),Te(l,a,t,d),ve(([[,u],f,{sizeTree:h},b,k])=>u&&(!qe(h)||Yr(b))&&!f&&!k),Te(c)),([,u])=>{es(o,()=>{Ie(d,!0)}),en(4,()=>{es(r,()=>{Ie(l,!0)}),Ie(n,u)})}),{initialItemFinalLocationReached:d,initialTopMostItemIndex:c,scrolledToInitialItem:l}},Ze(ms,Ct,Ea,Ts),{singleton:!0});function Ii(t,s){return Math.abs(t-s)<1.01}const ka="up",ba="down",xd="none",pd={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},hd=0,_a=He(([{footerHeight:t,headerHeight:s,scrollBy:a,scrollContainerState:r,scrollTop:o,viewportHeight:n}])=>{const i=W(!1),l=W(!0),c=Le(),d=Le(),u=W(4),f=W(hd),h=yt(Q($r(Q(be(o),Fs(1),rs(!0)),Q(be(o),Fs(1),rs(!1),Yn(100))),Je()),!1),b=yt(Q($r(Q(a,rs(!0)),Q(a,rs(!1),Yn(200))),Je()),!1);ue(Q(ct(be(o),be(f)),ie(([N,C])=>N<=C),Je()),l),ue(Q(l,bs(50)),d);const k=zt(Q(ct(r,be(n),be(s),be(t),be(u)),ns((N,[{scrollHeight:C,scrollTop:z},I,U,v,y])=>{const w=z+I-C>-y,A={scrollHeight:C,scrollTop:z,viewportHeight:I};if(w){let E,F;return z>N.state.scrollTop?(E="SCROLLED_DOWN",F=N.state.scrollTop-z):(E="SIZE_DECREASED",F=N.state.scrollTop-z||N.scrollTopDelta),{atBottom:!0,atBottomBecause:E,scrollTopDelta:F,state:A}}let B;return A.scrollHeight>N.state.scrollHeight?B="SIZE_INCREASED":IN!==void 0&&N.atBottom===C.atBottom))),j=yt(Q(r,ns((N,{scrollHeight:C,scrollTop:z,viewportHeight:I})=>{if(!Ii(N.scrollHeight,C)){const U=C-(z+I)<1;return N.scrollTop!==z&&U?{changed:!0,jump:N.scrollTop-z,scrollHeight:C,scrollTop:z}:{changed:!0,jump:0,scrollHeight:C,scrollTop:z}}return{changed:!1,jump:0,scrollHeight:C,scrollTop:z}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),ve(N=>N.changed),ie(N=>N.jump)),0);ue(Q(k,ie(N=>N.atBottom)),i),ue(Q(i,bs(50)),c);const S=W(ba);ue(Q(r,ie(({scrollTop:N})=>N),Je(),ns((N,C)=>tt(b)?{direction:N.direction,prevScrollTop:C}:{direction:CN.direction)),S),ue(Q(r,bs(50),rs(xd)),S);const p=W(0);return ue(Q(h,ve(N=>!N),rs(0)),p),ue(Q(o,bs(100),Te(h),ve(([N,C])=>C),ns(([N,C],[z])=>[C,z],[0,0]),ie(([N,C])=>C-N)),p),{atBottomState:k,atBottomStateChange:c,atBottomThreshold:u,atTopStateChange:d,atTopThreshold:f,isAtBottom:i,isAtTop:l,isScrolling:h,lastJumpDueToItemResize:j,scrollDirection:S,scrollVelocity:p}},Ze(Ct)),Ca="top",Ia="bottom",Zn="none";function eo(t,s,a){return typeof t=="number"?a===ka&&s===Ca||a===ba&&s===Ia?t:0:a===ka?s===Ca?t.main:t.reverse:s===Ia?t.main:t.reverse}function to(t,s){return typeof t=="number"?t:t[s]??0}const sn=He(([{deviation:t,fixedHeaderHeight:s,headerHeight:a,scrollTop:r,viewportHeight:o}])=>{const n=Le(),i=W(0),l=W(0),c=W(0),d=yt(Q(ct(be(r),be(o),be(a),be(n,ya),be(c),be(i),be(s),be(t),be(l)),ie(([u,f,h,[b,k],j,S,p,N,C])=>{const z=u-N,I=S+p,U=Math.max(h-z,0);let v=Zn;const y=to(C,Ca),w=to(C,Ia);return b-=N,b+=h+p,k+=h+p,k-=N,b>u+I-y&&(v=ka),ku!==null),Je(ya)),[0,0]);return{increaseViewportBy:l,listBoundary:n,overscan:c,topListHeight:i,visibleRange:d}},Ze(Ct),{singleton:!0});function fd(t,s,a){if(cr(s)){const r=yi(t,s);return[{index:ts(s.groupOffsetTree,r)[0],offset:0,size:0},{data:a?.[0],index:r,offset:0,size:0}]}return[{data:a?.[0],index:t,offset:0,size:0}]}const wr={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Ua(t,s,a,r,o,n){const{lastIndex:i,lastOffset:l,lastSize:c}=o;let d=0,u=0;if(t.length>0){d=t[0].offset;const j=t[t.length-1];u=j.offset+j.size}const f=a-i,h=l+f*c+(f-1)*r,b=d,k=h-u;return{bottom:u,firstItemIndex:n,items:so(t,o,n),offsetBottom:k,offsetTop:d,top:b,topItems:so(s,o,n),topListHeight:s.reduce((j,S)=>S.size+j,0),totalCount:a}}function Ti(t,s,a,r,o,n){let i=0;if(a.groupIndices.length>0)for(const u of a.groupIndices){if(u-i>=t)break;i++}const l=t+i,c=tn(s,l),d=Array.from({length:l}).map((u,f)=>({data:n[f+c],index:f+c,offset:0,size:0}));return Ua(d,[],l,o,a,r)}function so(t,s,a){if(t.length===0)return[];if(!cr(s))return t.map(d=>({...d,index:d.index+a,originalIndex:d.index}));const r=t[0].index,o=t[t.length-1].index,n=[],i=Ks(s.groupOffsetTree,r,o);let l,c=0;for(const d of t){(!l||l.end{const j=W([]),S=W(0),p=Le(),N=W(0);ue(n.topItemsIndexes,j);const C=yt(Q(ct(b,k,be(c,ya),be(o),be(r),be(d),u,be(j),be(s),be(a),be(N),t),ve(([v,y,,w,,,,,,,,A])=>{const B=A!==void 0&&A.length!==w;return v&&!y&&!B}),ie(([,,[v,y],w,A,B,E,F,X,J,ce,ne])=>{const xe=A,{offsetTree:he,sizeTree:H}=xe,q=tt(S);if(w===0)return{...wr,totalCount:w};if(v===0&&y===0)return q===0?{...wr,totalCount:w}:Ti(q,B,A,X,J,ne||[]);if(qe(H))return q>0?null:Ua(fd(tn(B,w),xe,ne),[],w,J,xe,X);const M=[];if(F.length>0){const te=F[0],g=F[F.length-1];let T=0;for(const R of Ks(H,te,g)){const K=R.value,Z=Math.max(R.start,te),re=Math.min(R.end,g);for(let le=Z;le<=re;le++)M.push({data:ne?.[le],index:le,offset:T,size:K}),T+=K}}if(!E)return Ua([],M,w,J,xe,X);const Y=F.length>0?F[F.length-1]+1:0,ae=rd(he,v,y,Y);if(ae.length===0)return null;const $e=w-1,Me=lr([],te=>{for(const g of ae){const T=g.value;let R=T.offset,K=g.start;const Z=T.size;if(T.offset=y);le++)te.push({data:ne?.[le],index:le,offset:R,size:Z}),R+=Z+J}}),Ge=ao(ce,Ca),G=ao(ce,Ia);if(Me.length>0&&(Ge>0||G>0)){const te=Me[0],g=Me[Me.length-1];if(Ge>0&&te.index>Y){const T=Math.min(Ge,te.index-Y),R=[];let K=te.offset;for(let Z=te.index-1;Z>=te.index-T;Z--){const re=Ks(H,Z,Z)[0]?.value??te.size;K-=re+J,R.unshift({data:ne?.[Z],index:Z,offset:K,size:re})}Me.unshift(...R)}if(G>0&&g.index<$e){const T=Math.min(G,$e-g.index);let R=g.offset+g.size+J;for(let K=g.index+1;K<=g.index+T;K++){const Z=Ks(H,K,K)[0]?.value??g.size;Me.push({data:ne?.[K],index:K,offset:R,size:Z}),R+=Z+J}}}return Ua(Me,M,w,J,xe,X)}),ve(v=>v!==null),Je()),wr);ue(Q(t,ve(Yr),ie(v=>v?.length)),o),ue(Q(C,ie(v=>v.topListHeight)),f),ue(f,l),ue(Q(C,ie(v=>[v.top,v.bottom])),i),ue(Q(C,ie(v=>v.items)),p);const z=zt(Q(C,ve(({items:v})=>v.length>0),Te(o,t),ve(([{items:v},y])=>v[v.length-1].originalIndex===y-1),ie(([,v,y])=>[v-1,y]),Je(ya),ie(([v])=>v))),I=zt(Q(C,bs(200),ve(({items:v,topItems:y})=>v.length>0&&v[0].originalIndex===y.length),ie(({items:v})=>v[0].index),Je())),U=zt(Q(C,ve(({items:v})=>v.length>0),ie(({items:v})=>{let y=0,w=v.length-1;for(;v[y].type==="group"&&yy;)w--;return{endIndex:v[w].index,startIndex:v[y].index}}),Je(Ni)));return{endReached:z,initialItemCount:S,itemsRendered:p,listState:C,minOverscanItemCount:N,rangeChanged:U,startReached:I,topItemsIndexes:j,...h}},Ze(ms,ki,sn,Ra,Ea,_a,Ts,Jr),{singleton:!0}),Ei=He(([{fixedFooterHeight:t,fixedHeaderHeight:s,footerHeight:a,headerHeight:r},{listState:o}])=>{const n=Le(),i=yt(Q(ct(a,t,r,s,o),ie(([l,c,d,u,f])=>l+c+d+u+f.offsetBottom+f.bottom)),0);return ue(be(i),n),{totalListHeight:i,totalListHeightChanged:n}},Ze(Ct,Ps),{singleton:!0}),gd=He(([{viewportHeight:t},{totalListHeight:s}])=>{const a=W(!1),r=yt(Q(ct(a,t,s),ve(([o])=>o),ie(([,o,n])=>Math.max(0,o-n)),bs(0),Je()),0);return{alignToBottom:a,paddingTopAddition:r}},Ze(Ct,Ei),{singleton:!0}),Ri=He(()=>({context:W(null)})),bd=({itemBottom:t,itemTop:s,locationParams:{align:a,behavior:r,...o},viewportBottom:n,viewportTop:i})=>sn?{...o,align:a??"end",...r!==void 0?{behavior:r}:{}}:null,_i=He(([{gap:t,sizes:s,totalCount:a},{fixedFooterHeight:r,fixedHeaderHeight:o,headerHeight:n,scrollingInProgress:i,scrollTop:l,viewportHeight:c},{scrollToIndex:d}])=>{const u=Le();return ue(Q(u,Te(s,c,a,n,o,r,l),Te(t),ie(([[f,h,b,k,j,S,p,N],C])=>{const{calculateViewLocation:z=bd,done:I,...U}=f,v=Si(f,h,k-1),y=Sa(v,h.offsetTree,C)+j+S,w=y+ts(h.sizeTree,v)[1],A=N+S,B=N+b-p,E=z({itemBottom:w,itemTop:y,locationParams:U,viewportBottom:B,viewportTop:A});return E!==null?I&&es(Q(i,ve(F=>!F),Fs(tt(i)?1:2)),I):I?.(),E}),ve(f=>f!==null)),d),{scrollIntoView:u}},Ze(ms,Ct,Ea,Ps,Is),{singleton:!0});function ro(t){return t===!1?!1:t==="smooth"?"smooth":"auto"}const vd=(t,s)=>typeof t=="function"?ro(t(s)):s&&ro(t),wd=He(([{listRefresh:t,totalCount:s,fixedItemSize:a,data:r},{atBottomState:o,isAtBottom:n},{scrollToIndex:i},{scrolledToInitialItem:l},{didMount:c,propsReady:d},{log:u},{scrollingInProgress:f},{context:h},{scrollIntoView:b}])=>{const k=W(!1),j=Le();let S=null;function p(I){Ie(i,{align:"end",behavior:I,index:"LAST"})}Ue(Q(ct(Q(be(s),Fs(1)),c),Te(be(k),n,l,f),ie(([[I,U],v,y,w,A])=>{let B=U&&w,E="auto";return B&&(E=vd(v,y||A),B=B&&E!==!1),{followOutputBehavior:E,shouldFollow:B,totalCount:I}}),ve(({shouldFollow:I})=>I)),({followOutputBehavior:I,totalCount:U})=>{S!==null&&(S(),S=null),tt(a)!==void 0?requestAnimationFrame(()=>{tt(u)("following output to ",{totalCount:U},ut.DEBUG),p(I)}):S=es(t,()=>{tt(u)("following output to ",{totalCount:U},ut.DEBUG),p(I),S=null})});function N(I){const U=es(o,v=>{I&&!v.atBottom&&v.notAtBottomBecause==="SIZE_INCREASED"&&S===null&&(tt(u)("scrolling to bottom due to increased size",{},ut.DEBUG),p("auto"))});setTimeout(U,100)}Ue(Q(ct(be(k),s,d),ve(([I,,U])=>I!==!1&&U),ns(({value:I},[,U])=>({refreshed:I===U,value:U}),{refreshed:!1,value:0}),ve(({refreshed:I})=>I),Te(k,s)),([,I])=>{tt(l)&&N(I!==!1)}),Ue(j,()=>{N(tt(k)!==!1)}),Ue(ct(be(k),o),([I,U])=>{I!==!1&&!U.atBottom&&U.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&p("auto")});const C=W(null),z=Le();return ue($r(Q(be(r),ie(I=>I?.length??0)),Q(be(s))),z),Ue(Q(ct(Q(z,Fs(1)),c),Te(be(C),l,f,h),ie(([[I,U],v,y,w,A])=>U&&y&&v?.({context:A,totalCount:I,scrollingInProgress:w})),ve(I=>!!I),bs(0)),I=>{S!==null&&(S(),S=null),tt(a)!==void 0?requestAnimationFrame(()=>{tt(u)("scrolling into view",{}),Ie(b,I)}):S=es(t,()=>{tt(u)("scrolling into view",{}),Ie(b,I),S=null})}),{autoscrollToBottom:j,followOutput:k,scrollIntoViewOnChange:C}},Ze(ms,_a,Ea,Ra,Ts,Is,Ct,Ri,_i)),Nd=He(([{data:t,firstItemIndex:s,gap:a,sizes:r},{initialTopMostItemIndex:o},{initialItemCount:n,listState:i},{didMount:l}])=>(ue(Q(l,Te(n),ve(([,c])=>c!==0),Te(o,r,s,a,t),ie(([[,c],d,u,f,h,b=[]])=>Ti(c,d,u,f,h,b))),i),{}),Ze(ms,Ra,Ps,Ts),{singleton:!0}),jd=He(([{didMount:t},{scrollTo:s},{listState:a}])=>{const r=W(0);return Ue(Q(t,Te(r),ve(([,o])=>o!==0),ie(([,o])=>({top:o}))),o=>{es(Q(a,Fs(1),ve(n=>n.items.length>1)),()=>{requestAnimationFrame(()=>{Ie(s,o)})})}),{initialScrollTop:r}},Ze(Ts,Ct,Ps),{singleton:!0}),Mi=He(([{scrollVelocity:t}])=>{const s=W(!1),a=Le(),r=W(!1);return ue(Q(t,Te(r,s,a),ve(([o,n])=>n!==!1&&n!==void 0),ie(([o,n,i,l])=>{const{enter:c,exit:d}=n;if(i){if(d(o,l))return!1}else if(c(o,l))return!0;return i}),Je()),s),Ue(Q(ct(s,t,a),Te(r)),([[o,n,i],l])=>{o&&l!==!1&&l!==void 0&&l.change&&l.change(n,i)}),{isSeeking:s,scrollSeekConfiguration:r,scrollSeekRangeChanged:a,scrollVelocity:t}},Ze(_a),{singleton:!0}),an=He(([{scrollContainerState:t,scrollTo:s}])=>{const a=Le(),r=Le(),o=Le(),n=W(!1),i=W(void 0);return ue(Q(ct(a,r),ie(([{scrollTop:l,viewportHeight:c},{offsetTop:d,listHeight:u}])=>({scrollHeight:u,scrollTop:Math.max(0,l-d),viewportHeight:c}))),t),ue(Q(s,Te(r),ie(([l,{offsetTop:c}])=>({...l,top:l.top+c}))),o),{customScrollParent:i,useWindowScroll:n,windowScrollContainerState:a,windowScrollTo:o,windowViewportRect:r}},Ze(Ct)),yd=He(([{sizeRanges:t,sizes:s},{headerHeight:a,scrollTop:r},{initialTopMostItemIndex:o},{didMount:n},{useWindowScroll:i,windowScrollContainerState:l,windowViewportRect:c}])=>{const d=Le(),u=W(void 0),f=W(null),h=W(null);return ue(l,f),ue(c,h),Ue(Q(d,Te(s,r,i,f,h,a)),([b,k,j,S,p,N,C])=>{const z=od(k.sizeTree);S&&p!==null&&N!==null&&(j=p.scrollTop-N.offsetTop),j-=C,b({ranges:z,scrollTop:j})}),ue(Q(u,ve(Yr),ie(Sd)),o),ue(Q(n,Te(u),ve(([,b])=>b!==void 0),Je(),ie(([,b])=>b.ranges)),t),{getState:d,restoreStateFrom:u}},Ze(ms,Ct,Ra,Ts,an));function Sd(t){return{align:"start",index:0,offset:t.scrollTop}}const kd=He(([{topItemsIndexes:t}])=>{const s=W(0);return ue(Q(s,ve(a=>a>=0),ie(a=>Array.from({length:a}).map((r,o)=>o))),t),{topItemCount:s}},Ze(Ps));function Ai(t){let s=!1,a;return(()=>(s||(s=!0,a=t()),a))}const Cd=Ai(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),Id=He(([{deviation:t,scrollBy:s,scrollingInProgress:a,scrollTop:r},{isAtBottom:o,isScrolling:n,lastJumpDueToItemResize:i,scrollDirection:l},{listState:c},{beforeUnshiftWith:d,gap:u,shiftWithOffset:f,sizes:h},{log:b},{recalcInProgress:k}])=>{const j=zt(Q(c,Te(i),ns(([,p,N,C],[{bottom:z,items:I,offsetBottom:U,totalCount:v},y])=>{const w=z+U;let A=0;return N===v&&p.length>0&&I.length>0&&(I[0].originalIndex===0&&p[0].originalIndex===0||(A=w-C,A!==0&&(A+=y))),[A,I,v,w]},[0,[],0,0]),ve(([p])=>p!==0),Te(r,l,a,o,b,k),ve(([,p,N,C,,,z])=>!z&&!C&&p!==0&&N===ka),ie(([[p],,,,,N])=>(N("Upward scrolling compensation",{amount:p},ut.DEBUG),p))));function S(p){p>0?(Ie(s,{behavior:"auto",top:-p}),Ie(t,0)):(Ie(t,0),Ie(s,{behavior:"auto",top:-p}))}return Ue(Q(j,Te(t,n)),([p,N,C])=>{C&&Cd()?Ie(t,N-p):S(-p)}),Ue(Q(ct(yt(n,!1),t,k),ve(([p,N,C])=>!p&&!C&&N!==0),ie(([p,N])=>N),bs(1)),S),ue(Q(f,ie(p=>({top:-p}))),s),Ue(Q(d,Te(h,u),ie(([p,{groupIndices:N,lastSize:C,sizeTree:z},I])=>{function U(B){return B*(C+I)}if(N.length===0)return U(p);let v=0;const y=ja(z,0);let w=0,A=0;for(;wp&&(v-=y,B=p-w+1),w+=B,v+=U(B),A++}return v})),p=>{Ie(t,p),requestAnimationFrame(()=>{Ie(s,{top:p}),requestAnimationFrame(()=>{Ie(t,0),Ie(k,!1)})})}),{deviation:t}},Ze(Ct,_a,Ps,ms,Is,Jr)),Td=He(([t,s,a,r,o,n,i,l,c,d,u])=>({...t,...s,...a,...r,...o,...n,...i,...l,...c,...d,...u}),Ze(sn,Nd,Ts,Mi,Ei,jd,gd,an,_i,Is,Ri)),zi=He(([{data:t,defaultItemSize:s,firstItemIndex:a,fixedItemSize:r,fixedGroupSize:o,gap:n,groupIndices:i,heightEstimates:l,itemSize:c,sizeRanges:d,sizes:u,statefulTotalCount:f,totalCount:h,trackItemSizes:b},{initialItemFinalLocationReached:k,initialTopMostItemIndex:j,scrolledToInitialItem:S},p,N,C,z,{scrollToIndex:I},U,{topItemCount:v},{groupCounts:y},w])=>{const{listState:A,minOverscanItemCount:B,topItemsIndexes:E,rangeChanged:F,...X}=z;return ue(F,w.scrollSeekRangeChanged),ue(Q(w.windowViewportRect,ie(J=>J.visibleHeight)),p.viewportHeight),{data:t,defaultItemHeight:s,firstItemIndex:a,fixedItemHeight:r,fixedGroupHeight:o,gap:n,groupCounts:y,heightEstimates:l,initialItemFinalLocationReached:k,initialTopMostItemIndex:j,scrolledToInitialItem:S,sizeRanges:d,topItemCount:v,topItemsIndexes:E,totalCount:h,...C,groupIndices:i,itemSize:c,listState:A,minOverscanItemCount:B,scrollToIndex:I,statefulTotalCount:f,trackItemSizes:b,rangeChanged:F,...X,...w,...p,sizes:u,...N}},Ze(ms,Ra,Ct,yd,wd,Ps,Ea,Id,kd,ki,Td));function Ed(t,s){const a={},r={};let o=0;const n=t.length;for(;o(p[N]=C=>{const z=S[s.methods[N]];Ie(z,C)},p),{})}function u(S){return i.reduce((p,N)=>(p[N]=Uc(S[s.events[N]]),p),{})}const f=de.forwardRef(function(S,p){const{children:N,...C}=S,[z]=de.useState(()=>lr(Wc(t),v=>{c(v,C)})),[I]=de.useState(qn(u,z));Da(()=>{for(const v of i)v in C&&Ue(I[v],C[v]);return()=>{Object.values(I).map(Kr)}},[C,I,z]),Da(()=>{c(z,C)}),de.useImperativeHandle(p,Wn(d(z)));const U=a;return e.jsx(l.Provider,{value:z,children:a!==void 0?e.jsx(U,{...Ed([...r,...o,...i],C),children:N}):N})}),h=S=>{const p=de.useContext(l);return de.useCallback(N=>{Ie(p[S],N)},[p,S])},b=S=>{const p=de.useContext(l)[S],N=de.useCallback(C=>Ue(p,C),[p]);return de.useSyncExternalStore(N,()=>tt(p),()=>tt(p))},k=S=>{const p=de.useContext(l)[S],[N,C]=de.useState(qn(tt,p));return Da(()=>Ue(p,z=>{z!==N&&C(Wn(z))}),[p,N]),N},j=parseInt(de.version)>=18?b:k;return{Component:f,useEmitter:(S,p)=>{const N=de.useContext(l)[S];Da(()=>Ue(N,p),[p,N])},useEmitterValue:j,usePublisher:h}}const Di=de.createContext(void 0),$i=de.createContext(void 0),Nr="-webkit-sticky",no="sticky",rn=Ai(()=>{if(typeof document>"u")return no;const t=document.createElement("div");return t.style.position=Nr,t.style.position===Nr?Nr:no}),Fi=typeof document<"u"?de.useLayoutEffect:de.useEffect;function jr(t){return"self"in t}function Rd(t){return"body"in t}function Oi(t,s,a,r=ta,o,n){const i=de.useRef(null),l=de.useRef(null),c=de.useRef(null),d=de.useCallback(h=>{let b,k,j;const S=h.target;if(Rd(S)||jr(S)){const N=jr(S)?S:S.defaultView;j=n===!0?N.scrollX:N.scrollY,b=n===!0?N.document.documentElement.scrollWidth:N.document.documentElement.scrollHeight,k=n===!0?N.innerWidth:N.innerHeight}else j=n===!0?S.scrollLeft:S.scrollTop,b=n===!0?S.scrollWidth:S.scrollHeight,k=n===!0?S.offsetWidth:S.offsetHeight;const p=()=>{t({scrollHeight:b,scrollTop:Math.max(j,0),viewportHeight:k})};h.suppressFlushSync===!0?p():Ar.flushSync(p),l.current!==null&&(j===l.current||j<=0||j===b-k)&&(l.current=null,s(!0),c.current&&(clearTimeout(c.current),c.current=null))},[t,s,n]);de.useEffect(()=>{const h=o||i.current;return r(o||i.current),d({suppressFlushSync:!0,target:h}),h.addEventListener("scroll",d,{passive:!0}),()=>{r(null),h.removeEventListener("scroll",d)}},[i,d,a,r,o]);function u(h){const b=i.current;if(!b||(n===!0?"offsetWidth"in b&&b.offsetWidth===0:"offsetHeight"in b&&b.offsetHeight===0))return;const k=h.behavior==="smooth";let j,S,p;jr(b)?(S=Math.max(ks(b.document.documentElement,n===!0?"width":"height"),n===!0?b.document.documentElement.scrollWidth:b.document.documentElement.scrollHeight),j=n===!0?b.innerWidth:b.innerHeight,p=n===!0?window.scrollX:window.scrollY):(S=b[n===!0?"scrollWidth":"scrollHeight"],j=ks(b,n===!0?"width":"height"),p=b[n===!0?"scrollLeft":"scrollTop"]);const N=S-j;if(h.top=Math.ceil(Math.max(Math.min(N,h.top),0)),Ii(j,S)||h.top===p){t({scrollHeight:S,scrollTop:p,viewportHeight:j}),k&&s(!0);return}k?(l.current=h.top,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,l.current=null,s(!0)},1e3)):l.current=null,n===!0&&(h={...h.behavior!==void 0?{behavior:h.behavior}:{},left:h.top}),b.scrollTo(h)}function f(h){n===!0&&(h={...h.behavior!==void 0?{behavior:h.behavior}:{},...h.top!==void 0?{left:h.top}:{}}),i.current.scrollBy(h)}return{scrollByCallback:f,scrollerRef:i,scrollToCallback:u}}function nn(t){return t}const _d=He(()=>{const t=W(l=>`Item ${l}`),s=W(l=>`Group ${l}`),a=W({}),r=W(nn),o=W("div"),n=W(ta),i=(l,c=null)=>yt(Q(a,ie(d=>d[l]),Je()),c);return{components:a,computeItemKey:r,EmptyPlaceholder:i("EmptyPlaceholder"),FooterComponent:i("Footer"),GroupComponent:i("Group","div"),groupContent:s,HeaderComponent:i("Header"),HeaderFooterTag:o,ItemComponent:i("Item","div"),itemContent:t,ListComponent:i("List","div"),ScrollerComponent:i("Scroller","div"),scrollerRef:n,ScrollSeekPlaceholder:i("ScrollSeekPlaceholder"),TopItemListComponent:i("TopItemList")}}),Md=He(([t,s])=>({...t,...s}),Ze(zi,_d)),Ad=({height:t})=>e.jsx("div",{style:{height:t}}),zd={overflowAnchor:"none",position:rn(),zIndex:1},Bi={overflowAnchor:"none"},Ld={...Bi,display:"inline-block",height:"100%"},oo=de.memo(function({showTopList:t=!1}){const s=ye("listState"),a=Qt("sizeRanges"),r=ye("useWindowScroll"),o=ye("customScrollParent"),n=Qt("windowScrollContainerState"),i=Qt("scrollContainerState"),l=o||r?n:i,c=ye("itemContent"),d=ye("context"),u=ye("groupContent"),f=ye("trackItemSizes"),h=ye("itemSize"),b=ye("log"),k=Qt("gap"),j=ye("horizontalDirection"),{callbackRef:S}=Kc(a,h,f,t?ta:l,b,k,o,j,ye("skipAnimationFrameInResizeObserver")),[p,N]=de.useState(0);ln("deviation",X=>{p!==X&&N(X)});const C=ye("EmptyPlaceholder"),z=ye("ScrollSeekPlaceholder")??Ad,I=ye("ListComponent"),U=ye("ItemComponent"),v=ye("GroupComponent"),y=ye("computeItemKey"),w=ye("isSeeking"),A=ye("groupIndices").length>0,B=ye("alignToBottom"),E=ye("initialItemFinalLocationReached"),F=t?{}:{boxSizing:"border-box",...j?{display:"inline-block",height:"100%",marginLeft:p!==0?p:B?"auto":0,paddingLeft:s.offsetTop,paddingRight:s.offsetBottom,whiteSpace:"nowrap"}:{marginTop:p!==0?p:B?"auto":0,paddingBottom:s.offsetBottom,paddingTop:s.offsetTop},...E?{}:{visibility:"hidden"}};return!t&&s.totalCount===0&&C!==null&&C!==void 0?e.jsx(C,{...Nt(C,d)}):e.jsx(I,{...Nt(I,d),"data-testid":t?"virtuoso-top-item-list":"virtuoso-item-list",ref:S,style:F,children:(t?s.topItems:s.items).map(X=>{const J=X.originalIndex,ce=y(J+s.firstItemIndex,X.data,d);return w?m.createElement(z,{...Nt(z,d),height:X.size,index:X.index,key:ce,type:X.type||"item",...X.type==="group"?{}:{groupIndex:X.groupIndex}}):X.type==="group"?m.createElement(v,{...Nt(v,d),"data-index":J,"data-item-index":X.index,"data-known-size":X.size,key:ce,style:zd},u(X.index,d)):m.createElement(U,{...Nt(U,d),...Od(U,X.data),"data-index":J,"data-item-group-index":X.groupIndex,"data-item-index":X.index,"data-known-size":X.size,key:ce,style:j?Ld:Bi},A?c(X.index,X.groupIndex,X.data,d):c(X.index,X.data,d))})})}),Dd={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},$d={outline:"none",overflowX:"auto",position:"relative"},on=t=>({height:"100%",position:"absolute",top:0,width:"100%",...t?{display:"flex",flexDirection:"column"}:void 0}),Pi=(t,s,a=0)=>({...on(t),position:s?"relative":"absolute",top:s?-a:0}),Fd={position:rn(),top:0,width:"100%",zIndex:1};function Nt(t,s){if(typeof t!="string")return{context:s}}function Od(t,s){return{item:typeof t=="string"?void 0:s}}const Bd=de.memo(function(){const t=ye("HeaderComponent"),s=Qt("headerHeight"),a=ye("HeaderFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,ye("skipAnimationFrameInResizeObserver")),o=ye("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null}),Pd=de.memo(function(){const t=ye("FooterComponent"),s=Qt("footerHeight"),a=ye("HeaderFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,ye("skipAnimationFrameInResizeObserver")),o=ye("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null});function Hi({useEmitter:t,useEmitterValue:s,usePublisher:a}){return de.memo(function({children:r,style:o,context:n,...i}){const l=a("scrollContainerState"),c=s("ScrollerComponent"),d=a("smoothScrollTargetReached"),u=s("scrollerRef"),f=s("horizontalDirection")||!1,{scrollByCallback:h,scrollerRef:b,scrollToCallback:k}=Oi(l,d,c,u,void 0,f);return t("scrollTo",k),t("scrollBy",h),e.jsx(c,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:b,style:{...f?$d:Dd,...o},tabIndex:0,...i,...Nt(c,n),children:r})})}function Gi({useEmitter:t,useEmitterValue:s,usePublisher:a}){return de.memo(function({children:r,style:o,context:n,...i}){const l=a("windowScrollContainerState"),c=s("ScrollerComponent"),d=a("smoothScrollTargetReached"),u=s("totalListHeight"),f=s("deviation"),h=s("customScrollParent"),b=de.useRef(null),k=s("scrollerRef"),{scrollByCallback:j,scrollerRef:S,scrollToCallback:p}=Oi(l,d,c,k,h);return Fi(()=>(S.current=h||b.current?.ownerDocument.defaultView,()=>{S.current=null}),[S,h]),t("windowScrollTo",p),t("scrollBy",j),e.jsx(c,{ref:b,"data-virtuoso-scroller":!0,style:{position:"relative",...o,...u!==0?{height:u+f}:void 0},...i,...Nt(c,n),children:r})})}const Hd=({children:t})=>{const s=de.useContext(Di),a=Qt("viewportHeight"),r=Qt("fixedItemHeight"),o=ye("alignToBottom"),n=ye("horizontalDirection"),i=de.useMemo(()=>xi(a,c=>ks(c,n?"width":"height")),[a,n]),l=Bs(i,!0,ye("skipAnimationFrameInResizeObserver"));return de.useEffect(()=>{s&&(a(s.viewportHeight),r(s.itemHeight))},[s,a,r]),e.jsx("div",{"data-viewport-type":"element",ref:l,style:on(o),children:t})},Gd=({children:t})=>{const s=de.useContext(Di),a=Qt("windowViewportRect"),r=Qt("fixedItemHeight"),o=ye("customScrollParent"),n=ye("useWindowScroll"),i=ye("topListHeight"),l=hi(a,o,ye("skipAnimationFrameInResizeObserver")),c=ye("alignToBottom");return de.useEffect(()=>{s&&(r(s.itemHeight),a({listHeight:0,offsetTop:0,visibleHeight:s.viewportHeight,visibleWidth:100}))},[s,a,r]),e.jsx("div",{"data-viewport-type":"window",ref:l,style:Pi(c,n,i),children:t})},Qd=({children:t})=>{const s=ye("TopItemListComponent")??"div",a=ye("headerHeight"),r={...Fd,marginTop:`${a}px`},o=ye("context");return e.jsx(s,{style:r,...Nt(s,o),children:t})},Ud=de.memo(function(t){const s=ye("useWindowScroll"),a=ye("topItemsIndexes").length>0,r=ye("customScrollParent"),o=ye("context");return e.jsxs(r||s?qd:Wd,{...t,context:o,children:[a&&e.jsx(Qd,{children:e.jsx(oo,{showTopList:!0})}),e.jsxs(r||s?Gd:Hd,{children:[e.jsx(Bd,{}),e.jsx(oo,{}),e.jsx(Pd,{})]})]})}),{Component:Vd,useEmitter:ln,useEmitterValue:ye,usePublisher:Qt}=Li(Md,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ud),Wd=Hi({useEmitter:ln,useEmitterValue:ye,usePublisher:Qt}),qd=Gi({useEmitter:ln,useEmitterValue:ye,usePublisher:Qt}),Yd=Vd,Kd=He(()=>{const t=W(d=>e.jsxs("td",{children:["Item $",d]})),s=W(null),a=W(d=>e.jsxs("td",{colSpan:1e3,children:["Group ",d]})),r=W(null),o=W(null),n=W({}),i=W(nn),l=W(ta),c=(d,u=null)=>yt(Q(n,ie(f=>f[d]),Je()),u);return{components:n,computeItemKey:i,context:s,EmptyPlaceholder:c("EmptyPlaceholder"),FillerRow:c("FillerRow"),fixedFooterContent:o,fixedHeaderContent:r,itemContent:t,groupContent:a,ScrollerComponent:c("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:c("ScrollSeekPlaceholder"),TableBodyComponent:c("TableBody","tbody"),TableComponent:c("Table","table"),TableFooterComponent:c("TableFoot","tfoot"),TableHeadComponent:c("TableHead","thead"),TableRowComponent:c("TableRow","tr"),GroupComponent:c("Group","tr")}});Ze(zi,Kd);rn();const io={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},Xd={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:lo,floor:tr,max:va,min:yr,round:co}=Math;function mo(t,s,a){return Array.from({length:s-t+1}).map((r,o)=>({data:a===null?null:a[o+t],index:o+t}))}function Jd(t){return{...Xd,items:t}}function $a(t,s){return t!==void 0&&t.width===s.width&&t.height===s.height}function Zd(t,s){return t!==void 0&&t.column===s.column&&t.row===s.row}const em=He(([{increaseViewportBy:t,listBoundary:s,overscan:a,visibleRange:r},{footerHeight:o,headerHeight:n,scrollBy:i,scrollContainerState:l,scrollTo:c,scrollTop:d,smoothScrollTargetReached:u,viewportHeight:f},h,b,{didMount:k,propsReady:j},{customScrollParent:S,useWindowScroll:p,windowScrollContainerState:N,windowScrollTo:C,windowViewportRect:z},I])=>{const U=W(0),v=W(0),y=W(io),w=W({height:0,width:0}),A=W({height:0,width:0}),B=Le(),E=Le(),F=W(0),X=W(null),J=W({column:0,row:0}),ce=Le(),ne=Le(),xe=W(!1),he=W(0),H=W(!0),q=W(!1),M=W(!1);Ue(Q(k,Te(he),ve(([G,te])=>te!==0)),()=>{Ie(H,!1)}),Ue(Q(ct(k,H,A,w,he,q),ve(([G,te,g,T,,R])=>G&&!te&&g.height!==0&&T.height!==0&&!R)),([,,,,G])=>{Ie(q,!0),en(1,()=>{Ie(B,G)}),es(Q(d),()=>{Ie(s,[0,0]),Ie(H,!0)})}),ue(Q(ne,ve(G=>G!=null&&G.scrollTop>0),rs(0)),v),Ue(Q(k,Te(ne),ve(([,G])=>G!=null)),([,G])=>{G&&(Ie(w,G.viewport),Ie(A,G.item),Ie(J,G.gap),G.scrollTop>0&&(Ie(xe,!0),es(Q(d,Fs(1)),te=>{Ie(xe,!1)}),Ie(c,{top:G.scrollTop})))}),ue(Q(w,ie(({height:G})=>G)),f),ue(Q(ct(be(w,$a),be(A,$a),be(J,(G,te)=>G!==void 0&&G.column===te.column&&G.row===te.row),be(d)),ie(([G,te,g,T])=>({gap:g,item:te,scrollTop:T,viewport:G}))),ce),ue(Q(ct(be(U),r,be(J,Zd),be(A,$a),be(w,$a),be(X),be(v),be(xe),be(H),be(he)),ve(([,,,,,,,G])=>!G),ie(([G,[te,g],T,R,K,Z,re,,le,$])=>{const{column:oe,row:pe}=T,{height:we,width:se}=R,{width:fe}=K;if(re===0&&(G===0||fe===0))return io;if(se===0){const P=tn($,G),Ae=P+Math.max(re-1,0);return Jd(mo(P,Ae,Z))}const et=Qi(fe,se,oe);let Fe,Ke;le?te===0&&g===0&&re>0?(Fe=0,Ke=re-1):(Fe=et*tr((te+pe)/(we+pe)),Ke=et*lo((g+pe)/(we+pe))-1,Ke=yr(G-1,va(Ke,et-1)),Fe=yr(Ke,va(0,Fe))):(Fe=0,Ke=-1);const rt=mo(Fe,Ke,Z),{bottom:Rt,top:St}=uo(K,T,R,rt),Ft=lo(G/et),ss=Ft*we+(Ft-1)*pe-Rt;return{bottom:Rt,itemHeight:we,items:rt,itemWidth:se,offsetBottom:ss,offsetTop:St,top:St}})),y),ue(Q(X,ve(G=>G!==null),ie(G=>G.length)),U),ue(Q(ct(w,A,y,J),ve(([G,te,{items:g}])=>g.length>0&&te.height!==0&&G.height!==0),ie(([G,te,{items:g},T])=>{const{bottom:R,top:K}=uo(G,T,te,g);return[K,R]}),Je(ya)),s);const Y=W(!1);ue(Q(d,Te(Y),ie(([G,te])=>te||G!==0)),Y);const ae=zt(Q(ct(y,U),ve(([{items:G}])=>G.length>0),Te(Y),ve(([[G,te],g])=>{const T=G.items[G.items.length-1].index===te-1;return(g||G.bottom>0&&G.itemHeight>0&&G.offsetBottom===0&&G.items.length===te)&&T}),ie(([[,G]])=>G-1),Je())),$e=zt(Q(be(y),ve(({items:G})=>G.length>0&&G[0].index===0),rs(0),Je())),Me=zt(Q(be(y),Te(xe),ve(([{items:G},te])=>G.length>0&&!te),ie(([{items:G}])=>({endIndex:G[G.length-1].index,startIndex:G[0].index})),Je(Ni),bs(0)));ue(Me,b.scrollSeekRangeChanged),ue(Q(B,Te(w,A,U,J),ie(([G,te,g,T,R])=>{const K=Ci(G),{align:Z,behavior:re,offset:le}=K;let $=K.index;$==="LAST"&&($=T-1),$=va(0,$,yr(T-1,$));let oe=Hr(te,R,g,$);return Z==="end"?oe=co(oe-te.height+g.height):Z==="center"&&(oe=co(oe-te.height/2+g.height/2)),le!==void 0&&le!==0&&(oe+=le),{behavior:re,top:oe}})),c);const Ge=yt(Q(y,ie(G=>G.offsetBottom+G.bottom)),0);return ue(Q(z,ie(G=>({height:G.visibleHeight,width:G.visibleWidth}))),w),{customScrollParent:S,data:X,deviation:F,footerHeight:o,gap:J,headerHeight:n,increaseViewportBy:t,initialItemCount:v,itemDimensions:A,overscan:a,restoreStateFrom:ne,scrollBy:i,scrollContainerState:l,scrollHeight:E,scrollTo:c,scrollToIndex:B,scrollTop:d,smoothScrollTargetReached:u,totalCount:U,useWindowScroll:p,viewportDimensions:w,windowScrollContainerState:N,windowScrollTo:C,windowViewportRect:z,...b,gridState:y,horizontalDirection:M,initialTopMostItemIndex:he,totalListHeight:Ge,...h,endReached:ae,propsReady:j,rangeChanged:Me,startReached:$e,stateChanged:ce,stateRestoreInProgress:xe,...I}},Ze(sn,Ct,_a,Mi,Ts,an,Is));function Qi(t,s,a){return va(1,tr((t+a)/(tr(s)+a)))}function uo(t,s,a,r){const{height:o}=a;if(o===void 0||r.length===0)return{bottom:0,top:0};const n=Hr(t,s,a,r[0].index);return{bottom:Hr(t,s,a,r[r.length-1].index)+o,top:n}}function Hr(t,s,a,r){const o=Qi(t.width,a.width,s.column),n=tr(r/o),i=n*a.height+va(0,n-1)*s.row;return i>0?i+s.row:i}const tm=He(()=>{const t=W(f=>`Item ${f}`),s=W({}),a=W(null),r=W("virtuoso-grid-item"),o=W("virtuoso-grid-list"),n=W(nn),i=W("div"),l=W(ta),c=(f,h=null)=>yt(Q(s,ie(b=>b[f]),Je()),h),d=W(!1),u=W(!1);return ue(be(u),d),{components:s,computeItemKey:n,context:a,FooterComponent:c("Footer"),HeaderComponent:c("Header"),headerFooterTag:i,itemClassName:r,ItemComponent:c("Item","div"),itemContent:t,listClassName:o,ListComponent:c("List","div"),readyStateChanged:d,reportReadyState:u,ScrollerComponent:c("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:c("ScrollSeekPlaceholder","div")}}),sm=He(([t,s])=>({...t,...s}),Ze(em,tm)),am=de.memo(function(){const t=Xe("gridState"),s=Xe("listClassName"),a=Xe("itemClassName"),r=Xe("itemContent"),o=Xe("computeItemKey"),n=Xe("isSeeking"),i=Ut("scrollHeight"),l=Xe("ItemComponent"),c=Xe("ListComponent"),d=Xe("ScrollSeekPlaceholder"),u=Xe("context"),f=Ut("itemDimensions"),h=Ut("gap"),b=Xe("log"),k=Xe("stateRestoreInProgress"),j=Ut("reportReadyState"),S=Bs(de.useMemo(()=>p=>{const N=p.parentElement.parentElement.scrollHeight;i(N);const C=p.firstChild;if(C!==null){const{height:z,width:I}=C.getBoundingClientRect();f({height:z,width:I})}h({column:xo("column-gap",getComputedStyle(p).columnGap,b),row:xo("row-gap",getComputedStyle(p).rowGap,b)})},[i,f,h,b]),!0,!1);return Fi(()=>{t.itemHeight>0&&t.itemWidth>0&&j(!0)},[t]),k?null:e.jsx(c,{className:s,ref:S,...Nt(c,u),"data-testid":"virtuoso-item-list",style:{paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},children:t.items.map(p=>{const N=o(p.index,p.data,u);return n?e.jsx(d,{...Nt(d,u),height:t.itemHeight,index:p.index,width:t.itemWidth},N):m.createElement(l,{...Nt(l,u),className:a,"data-index":p.index,key:N},r(p.index,p.data,u))})})}),rm=de.memo(function(){const t=Xe("HeaderComponent"),s=Ut("headerHeight"),a=Xe("headerFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,!1),o=Xe("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null}),nm=de.memo(function(){const t=Xe("FooterComponent"),s=Ut("footerHeight"),a=Xe("headerFooterTag"),r=Bs(de.useMemo(()=>n=>{s(ks(n,"height"))},[s]),!0,!1),o=Xe("context");return t!=null?e.jsx(a,{ref:r,children:e.jsx(t,{...Nt(t,o)})}):null}),om=({children:t})=>{const s=de.useContext($i),a=Ut("itemDimensions"),r=Ut("viewportDimensions"),o=Bs(de.useMemo(()=>n=>{r(n.getBoundingClientRect())},[r]),!0,!1);return de.useEffect(()=>{s&&(r({height:s.viewportHeight,width:s.viewportWidth}),a({height:s.itemHeight,width:s.itemWidth}))},[s,r,a]),e.jsx("div",{ref:o,style:on(!1),children:t})},im=({children:t})=>{const s=de.useContext($i),a=Ut("windowViewportRect"),r=Ut("itemDimensions"),o=Xe("customScrollParent"),n=Xe("useWindowScroll"),i=hi(a,o,!1);return de.useEffect(()=>{s&&(r({height:s.itemHeight,width:s.itemWidth}),a({listHeight:0,offsetTop:0,visibleHeight:s.viewportHeight,visibleWidth:s.viewportWidth}))},[s,a,r]),e.jsx("div",{ref:i,style:Pi(!1,n),children:t})},lm=de.memo(function({...t}){const s=Xe("useWindowScroll"),a=Xe("customScrollParent"),r=a||s?dm:cm,o=a||s?im:om,n=Xe("context");return e.jsx(r,{...t,...Nt(r,n),children:e.jsxs(o,{children:[e.jsx(rm,{}),e.jsx(am,{}),e.jsx(nm,{})]})})}),{useEmitter:Ui,useEmitterValue:Xe,usePublisher:Ut}=Li(sm,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},lm),cm=Hi({useEmitter:Ui,useEmitterValue:Xe,usePublisher:Ut}),dm=Gi({useEmitter:Ui,useEmitterValue:Xe,usePublisher:Ut});function xo(t,s,a){return s!=="normal"&&s?.endsWith("px")!==!0&&a(`${t} was not resolved to pixel value correctly`,s,ut.WARN),s==="normal"?0:parseInt(s??"0",10)}function po(t){if(Array.isArray(t)){if(t.length<5||t.length>6)throw new Error(`Invalid bone format: expected [x,y,w,h,r,c?] but got ${t.length} elements`);const s=t;return{x:s[0],y:s[1],w:s[2],h:s[3],r:s[4],c:s[5]||void 0}}return t}const ho=new Set(["p","h1","h2","h3","h4","h5","h6","li","td","th"]);function mm(t,s="component",a){const r=t.getBoundingClientRect(),o=[],n=a?.leafTags?new Set([...ho,...a.leafTags]):ho,i=a?.captureRoundedBorders??!0,l=a?.excludeTags?new Set(a.excludeTags):null,c=a?.excludeSelectors??null;function d(u){const f=getComputedStyle(u);if(f.display==="none"||f.visibility==="hidden"||f.opacity==="0")return;const h=u.tagName.toLowerCase();if(l?.has(h)||c?.some(w=>u.matches(w)))return;const b=[...u.children].filter(w=>{const A=getComputedStyle(w);return A.display!=="none"&&A.visibility!=="hidden"&&A.opacity!=="0"}),k=h==="img"||h==="svg"||h==="video"||h==="canvas",j=h==="input"||h==="button"||h==="textarea"||h==="select",S=b.length===0||k||j||n.has(h),p=f.backgroundColor,N=p!=="rgba(0, 0, 0, 0)"&&p!=="transparent",C=f.backgroundImage!=="none",z=parseFloat(f.borderTopWidth)||0,I=i&&z>0&&f.borderTopColor!=="rgba(0, 0, 0, 0)"&&f.borderTopColor!=="transparent",U=(parseFloat(f.borderTopLeftRadius)||0)>0,v=N||C||I&&U,y=h==="tr"||h==="td"||h==="th"||h==="thead"||h==="tbody"||h==="table";if(S){const w=u.getBoundingClientRect();if(w.width<1||w.height<1)return;const A=k&&w.width>0&&w.height>0&&Math.abs(w.width-w.height)<4,B=y?0:A?"50%":fo(f,u)??8,E=r.width;o.push({x:E>0?+((w.left-r.left)/E*100).toFixed(4):0,y:Math.round(w.top-r.top),w:E>0?+(w.width/E*100).toFixed(4):0,h:Math.round(w.height),r:B});return}if(v){const w=u.getBoundingClientRect();if(w.width>=1&&w.height>=1){const A=y?0:fo(f,u)??8,B=r.width;o.push({x:B>0?+((w.left-r.left)/B*100).toFixed(4):0,y:Math.round(w.top-r.top),w:B>0?+(w.width/B*100).toFixed(4):0,h:Math.round(w.height),r:A,c:!0})}}for(const w of b)d(w)}for(const u of t.children)d(u);return{name:s,viewportWidth:Math.round(r.width),width:Math.round(r.width),height:Math.round(r.height),bones:o}}function fo(t,s){const a=parseFloat(t.borderTopLeftRadius)||0,r=parseFloat(t.borderTopRightRadius)||0,o=parseFloat(t.borderBottomRightRadius)||0,n=parseFloat(t.borderBottomLeftRadius)||0;if(a===0&&r===0&&o===0&&n===0)return;const i=s?(()=>{const d=s.getBoundingClientRect();return d.width>0&&d.height>0&&Math.abs(d.width-d.height)<4})():!1;return t.borderRadius==="50%"?"50%":Math.max(a,r,o,n)>9998?i?"50%":9999:a===r&&r===o&&o===n?a!==8?a:void 0:`${a}px ${r}px ${o}px ${n}px`}const um=new Map;function xm(t){return um.get(t)}function pm(){typeof window<"u"&&window.__BONEYARD_BUILD&&(window.__BONEYARD_SNAPSHOT=mm)}function hm(){return typeof window<"u"&&window.__BONEYARD_BUILD===!0}function fm(t,s){if(!("breakpoints"in t))return t;const a=Object.keys(t.breakpoints).map(Number).sort((o,n)=>o-n);if(a.length===0)return null;const r=[...a].reverse().find(o=>s>=o)??a[0];return t.breakpoints[r]??null}const Us={angle:110,start:30,end:70,speed:"2s",lightHighlight:"#f7f7f7",darkHighlight:"#2c2c2c"},ua={speed:"1.8s",lightAdjust:.3,darkAdjust:.02},go={web:{light:"#f0f0f0",dark:"#222222"}},gm=/rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*(?:,\s*([\d.]+))?\s*\)/;function bo(t,s){const a=t.match(gm);if(a){const[,r,o,n,i="1"]=a,l=Math.min(1,parseFloat(i)+s*.5);return`rgba(${r},${o},${n},${l.toFixed(3)})`}if(t.startsWith("#")&&t.length>=7){const r=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);if(!isNaN(r)&&!isNaN(o)&&!isNaN(n)){const i=Math.round(r+(255-r)*s),l=Math.round(o+(255-o)*s),c=Math.round(n+(255-n)*s);return`#${i.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}}return t}pm();let as={};function vo({loading:t,children:s,name:a,initialBones:r,color:o,darkColor:n,animate:i,stagger:l=!1,transition:c=!1,boneClass:d,className:u,fallback:f,fixture:h,snapshotConfig:b}){const k=m.useRef(null),j=m.useRef(Math.random().toString(36).slice(2,8)).current,[S,p]=m.useState(0),[N,C]=m.useState(0),[z,I]=m.useState(!1);m.useEffect(()=>{if(typeof window>"u")return;const g=()=>{const K=document.documentElement.classList.contains("dark")||!!k.current?.closest(".dark");I(K)};g();const T=new MutationObserver(g);T.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]});const R=window.matchMedia("(prefers-color-scheme: dark)");return R.addEventListener("change",g),()=>{T.disconnect(),R.removeEventListener("change",g)}},[]);const U=o??as.color??go.web.light,v=n??as.darkColor??go.web.dark,y=z?v:U,w=i??as.animate??"pulse",A=w===!0?"pulse":w===!1?"solid":w;m.useEffect(()=>{const g=k.current;if(!g)return;const T=new ResizeObserver(K=>{const Z=K[0]?.contentRect;p(Math.round(Z?.width??0)),Z&&Z.height>0&&C(Math.round(Z.height))});T.observe(g);const R=g.getBoundingClientRect();return p(Math.round(R.width)),R.height>0&&C(Math.round(R.height)),()=>T.disconnect()},[]);const B={};if(a&&(B["data-boneyard"]=a,b&&(B["data-boneyard-config"]=JSON.stringify(b))),hm())return e.jsx("div",{ref:k,className:u,style:{position:"relative"},...B,children:e.jsx("div",{children:h??s})});const[E,F]=m.useState(!1);m.useLayoutEffect(()=>{F(!0)},[]);const X=r??(a?xm(a):void 0),J=E&&typeof window<"u"?window.innerWidth:0,ce=S>0?S:J,ne=X&&ce>0?fm(X,ce):null,xe=d??as.boneClass,he=(()=>{const g=l??as.stagger;return g===!0?80:g===!1||!g?0:g})(),H=(()=>{const g=c??as.transition;return g===!0?300:g===!1||!g?0:g})(),[q,M]=m.useState(!1),Y=m.useRef(t),ae=m.useRef(null);m.useEffect(()=>(Y.current&&!t&&H>0&&ne&&(ae.current&&clearTimeout(ae.current),M(!0),ae.current=setTimeout(()=>{M(!1),ae.current=null},H)),Y.current=t,()=>{ae.current&&clearTimeout(ae.current)}),[t,H,ne]);const $e=(t||q)&&ne,Me=t&&!ne&&!q,Ge=N>0?N:ne?.height??0,G=ne?.height??0,te=Ge>0&&G>0?Ge/G:1;return e.jsxs("div",{ref:k,className:u,style:{position:"relative"},...B,children:[e.jsx("div",{"data-boneyard-content":"true",style:$e&&!q?{visibility:"hidden"}:void 0,children:Me?f:s}),$e&&e.jsx("div",{"data-boneyard-overlay":"true",style:{position:"absolute",inset:0,overflow:"hidden",opacity:q?0:1,transition:H>0?`opacity ${H}ms ease-out`:void 0},children:e.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[ne.bones.filter(g=>!po(g).c).map((g,T)=>{const R=po(g),K=y;bo(y,z?ua.darkAdjust:ua.lightAdjust);const Z=R.w/100*(ne.width??0),re=R.r==="50%"&&Math.abs(Z-R.h)<4,le={position:"absolute",left:`${R.x}%`,top:R.y*te,width:re?R.h*te:`${R.w}%`,height:R.h*te,borderRadius:typeof R.r=="string"?R.r:`${R.r}px`,backgroundColor:K},$=as.speed;if(A==="pulse")le.animation=`bp-${j} ${$??ua.speed} ease-in-out infinite`;else if(A==="shimmer"){const oe=z?as.darkShimmerColor??Us.darkHighlight:as.shimmerColor??Us.lightHighlight,pe=as.shimmerAngle??Us.angle;delete le.backgroundColor,le.backgroundImage=`linear-gradient(${pe}deg, ${K} ${Us.start}%, ${oe} 50%, ${K} ${Us.end}%)`,le.backgroundSize="200% 100%",le.animation=`bs-${j} ${$??Us.speed} linear infinite`}return he>0&&(le.opacity=0,le.animation=`${le.animation?le.animation+",":""} by-${j} 0.3s ease-out ${T*he}ms forwards`),e.jsx("div",{"data-boneyard-bone":"true",className:xe,style:le},T)}),A==="pulse"&&e.jsx("style",{children:`@keyframes bp-${j}{0%,100%{background-color:${y}}50%{background-color:${bo(y,z?ua.darkAdjust:ua.lightAdjust)}}}`}),A==="shimmer"&&e.jsx("style",{children:`@keyframes bs-${j}{0%{background-position:200% 0}100%{background-position:-200% 0}}`}),he>0&&e.jsx("style",{children:`@keyframes by-${j}{from{opacity:0}to{opacity:1}}`})]})})]})}async function cn(t){const s=$t(Ve,"managedStudents");try{const n=kt(s,jt("teacherId","==",t)),i=await Dt(n);if(!i.empty)return i.docs.map(c=>({id:c.id,...c.data()})).sort((c,d)=>String(c.name||"").localeCompare(String(d.name||"")))}catch{}const r=(await Wi(t)).map(n=>n.id);if(r.length===0)return[];const o=new Map;for(let n=0;n{o.set(d.id,{id:d.id,...d.data()})})}return Array.from(o.values()).sort((n,i)=>String(n.name||"").localeCompare(String(i.name||"")))}async function bm(t,s=[]){if(!t)return[];const a=$t(Ve,"users"),r=new Map,o=(i,l)=>String(l.role||"").toLowerCase()!=="student"?null:{uid:i,name:String(l.name||l.displayName||"").trim()||"Student",email:String(l.email||"").trim(),lrn:l.lrn&&String(l.lrn).trim()||void 0,photo:l.photo?String(l.photo).trim()||void 0:l.photoURL&&String(l.photoURL).trim()||void 0,grade:l.grade&&String(l.grade).trim()||void 0,section:l.section&&String(l.section).trim()||void 0,classSectionId:l.classSectionId&&String(l.classSectionId).trim()||void 0,adviserTeacherId:l.adviserTeacherId&&String(l.adviserTeacherId).trim()||void 0,role:"student",createdAt:l.createdAt||void 0};try{const i=kt(a,jt("role","==","student"),jt("adviserTeacherId","==",t));(await Dt(i)).docs.forEach(c=>{const d=o(c.id,c.data());d&&r.set(c.id,d)})}catch(i){console.warn("[studentService] adviser-scoped student query failed:",i)}const n=Array.from(new Set((s||[]).map(i=>(i||"").trim()).filter(i=>!!i)));for(let i=0;i{if(r.has(u.id))return;const f=o(u.id,u.data());f&&r.set(u.id,f)})}catch(c){console.warn("[studentService] section-scoped student query failed:",c)}}return Array.from(r.values()).sort((i,l)=>i.name.localeCompare(l.name))}function vm(t){const s=`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name||"Student")}&background=random`,a=El.now();return{id:t.uid,accountUid:t.uid,lrn:t.lrn,name:t.name,email:t.email,avatar:t.photo||s,teacherId:t.adviserTeacherId,grade:t.grade,gradeLevel:us(t.grade)||void 0,section:t.section,classSectionId:t.classSectionId,riskLevel:"Low",engagementScore:0,avgQuizScore:0,weakestTopic:"N/A",classroomId:t.classSectionId||"",attendance:0,assignmentCompletion:0,lastActive:null,struggles:[],createdAt:t.createdAt||a,updatedAt:a,hasRegisteredAccount:!0,source:"registered"}}function wo(t){return(t||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9\s]+/g," ").trim().replace(/\s+/g," ")}async function wm(t){const s=(t.studentId||"").trim();if(!s)throw new Error("Cannot reassign section: studentId is required.");const a=(t.newClassSectionId||"").trim()||Lt(t.newGrade,t.newSection);if(!a)throw new Error("Cannot reassign section: a target class section is required.");const r=(t.teacherId||"").trim(),o=(t.teacherName||"").trim(),n=(t.schoolYear||"").trim(),i=(t.previousClassSectionId||"").trim();try{const l=pt(Ve,"managedStudents",s),c=await js(l);c.exists()&&await Zt(l,{grade:t.newGrade,section:t.newSection,classSectionId:a,gradeLevel:us(t.newGrade)||t.newGrade,teacherId:r||c.data()?.teacherId,updatedAt:lt()})}catch(l){console.warn("[studentService] reassignStudentSection: managedStudents update failed:",l)}if(t.isRegisteredAccount)try{await is(pt(Ve,"users",s),{grade:t.newGrade,section:t.newSection,classSectionId:a,adviserTeacherId:r||void 0,adviserTeacherName:o||void 0,updatedAt:lt()},{merge:!0})}catch(l){console.warn("[studentService] reassignStudentSection: users profile update failed:",l)}try{await dr({classSectionId:a,grade:t.newGrade,section:t.newSection,schoolYear:n,ownerTeacherId:r,ownerTeacherName:o,studentUids:[s]})}catch(l){console.warn("[studentService] reassignStudentSection: ownership upsert failed:",l)}if(i&&i!==a)try{const l=pt(Ve,"classSectionOwnership",i),c=await js(l);if(c.exists()){const u=(c.data().studentUids||[]).filter(f=>f!==s);await Zt(l,{studentUids:u,updatedAt:lt()})}}catch(l){console.warn("[studentService] reassignStudentSection: previous-section cleanup failed:",l)}}async function Nm(t){const{apiService:s}=await _r(async()=>{const{apiService:d}=await import("./index-pcr0VEFr.js").then(u=>u.b6);return{apiService:d}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),a=(t.adviserTeacherId||"").trim();if(!a)throw new Error("createStudentAccountFromRoster requires adviserTeacherId.");const r=(t.email||"").trim().toLowerCase();if(!r)throw new Error("createStudentAccountFromRoster requires an email.");const o=(t.grade||"").trim(),n=(t.section||"").trim(),i=(t.classSectionId||"").trim()||(o&&n?Lt(o,n):""),c=((await s.createStudentAccount({name:(t.name||"").trim()||"Student",email:r,temporaryPassword:t.temporaryPassword,lrn:t.lrn?.trim()||void 0,grade:o||void 0,section:n||void 0,classSectionId:i||void 0,adviserTeacherId:a,adviserTeacherName:t.adviserTeacherName?.trim()||void 0,schoolYear:t.schoolYear?.trim()||void 0})).uid||"").trim();if(!c)throw new Error("Backend did not return a uid for the newly created student.");try{await is(pt(Ve,"managedStudents",c),sr({accountUid:c,name:(t.name||"").trim()||"Student",email:r,lrn:t.lrn?.trim()||null,teacherId:a,grade:o||null,gradeLevel:us(o)||null,section:n||null,classSectionId:i||null,classroomId:i||null,riskLevel:"Low",avgQuizScore:0,engagementScore:0,attendance:0,assignmentCompletion:0,weakestTopic:"",struggles:[],avatar:`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name||"Student")}&background=random`,hasRegisteredAccount:!0,source:"both",createdAt:lt(),updatedAt:lt()}))}catch(d){console.warn("[studentService] createStudentAccountFromRoster: managed-student merge failed:",d)}if(i&&o&&n)try{await dr({classSectionId:i,grade:o,section:n,schoolYear:t.schoolYear||"",ownerTeacherId:a,ownerTeacherName:t.adviserTeacherName,studentUids:[c]})}catch(d){console.warn("[studentService] createStudentAccountFromRoster: ownership upsert failed:",d)}return{uid:c,email:r,temporaryPassword:t.temporaryPassword}}async function jm(t,s,a){const r=pt(Ve,"managedStudents",t);await Zt(r,{riskLevel:s,...a!==void 0?{riskConfidence:a}:{},updatedAt:lt()})}async function Vi(t,s,a){const r=Lt(s,a),o=pt(Ve,"managedStudents",t);await Zt(o,{grade:s,section:a,classSectionId:r,updatedAt:lt()})}function Lt(t,s){return[t,s].filter(Boolean).join("_").replace(/\s+/g,"_").toLowerCase()}function sr(t){const s=Object.entries(t).filter(([,a])=>a!==void 0);return Object.fromEntries(s)}function us(t){const s=(t||"").trim();if(!s)return null;const a=s.match(/(\d{1,2})/);return a?`Grade ${a[1]}`:/^grade\s+/i.test(s)?s.replace(/\s+/g," ").trim().replace(/^grade/i,"Grade"):s}function sa(t){const a=us(t)?.match(/(\d{1,2})/),r=a?Number.parseInt(a[1],10):Number.NaN;return Number.isFinite(r)?r>=11?"Senior High School":"Junior High School":null}function aa(t,s){const a=`${t||""} ${s||""}`.toUpperCase();if(!a.trim())return null;const r=["STEM","ABM","HUMSS","GAS","TVL","ICT"];for(const o of r)if(new RegExp(`\\b${o}\\b`).test(a))return o;return null}function ls(t){const s=(t||"").trim();if(!s)return{grade:"Grade 11",section:"Section A"};const[a="Grade 11",r="Section A"]=s.split(" - ").map(o=>o.trim());return{grade:a||"Grade 11",section:r||"Section A"}}function gt(t){const s=t.metadata||{},a=t.className||s.className,r=ls(a),o=(t.grade||s.grade||r.grade||"").trim()||null,n=(t.section||s.section||r.section||"").trim()||null,i=(t.classSectionId||s.classSectionId||"").trim()||(o&&n?Lt(o,n):"")||null,l=(a||"").trim()||(o&&n?`${o} - ${n}`:"")||null,c=us(t.gradeLevel||s.gradeLevel||o),d=(t.classification||s.classification||"").trim()||sa(c)||null,u=(t.strand||s.strand||"").trim()||aa(l,n)||null;return{classSectionId:i,className:l,grade:o,section:n,gradeLevel:c,classification:d,strand:u,schoolYear:(t.schoolYear||s.schoolYear||"").trim()||null,ownerTeacherId:(t.ownerTeacherId||s.ownerTeacherId||"").trim()||null,ownerTeacherName:(t.ownerTeacherName||s.ownerTeacherName||"").trim()||null,adviserTeacherId:(t.adviserTeacherId||s.adviserTeacherId||"").trim()||null,adviserTeacherName:(t.adviserTeacherName||s.adviserTeacherName||"").trim()||null,managerId:(t.managerId||s.managerId||"").trim()||null,managerName:(t.managerName||s.managerName||"").trim()||null}}function ym(t){const s=(t.className||"").trim(),[a="",r=""]=s.split(" - "),o=(t.grade||a||"").trim()||null,n=(t.section||r||"").trim()||null,i=(t.classSectionId||"").trim()||(o&&n?Lt(o,n):"")||null,l=s||(o&&n?`${o} - ${n}`:null),c=us(t.gradeLevel||o),d=(t.classification||"").trim()||sa(c),u=(t.strand||"").trim()||aa(l,n);return{classSectionId:i,className:l,grade:o,section:n,gradeLevel:c,classification:d,strand:u,schoolYear:(t.schoolYear||"").trim()||null,ownerTeacherId:(t.ownerTeacherId||"").trim()||null,ownerTeacherName:(t.ownerTeacherName||"").trim()||null,adviserTeacherId:(t.adviserTeacherId||"").trim()||null,adviserTeacherName:(t.adviserTeacherName||"").trim()||null,managerId:(t.managerId||"").trim()||null,managerName:(t.managerName||"").trim()||null}}async function Wi(t){const s=$t(Ve,"classrooms"),a=new Map,r=kt(s,jt("teacherId","==",t));(await Dt(r)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})});const n=kt(s,jt("managerId","==",t));return(await Dt(n)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})}),Array.from(a.values()).sort((l,c)=>String(l.name||"").localeCompare(String(c.name||"")))}async function dr(t){const s=t.classSectionId||Lt(t.grade,t.section),a=pt(Ve,"classSectionOwnership",s),r=await js(a),o=r.exists()?r.data().studentUids||[]:[],n=Array.from(new Set([...t.studentUids||[],...o])),i=sr(t);return r.exists()?await Zt(a,{...i,classSectionId:s,studentUids:n,updatedAt:lt()}):await is(a,{...i,classSectionId:s,studentUids:n,createdAt:lt(),updatedAt:lt()}),s}async function qi(t){const s=(t.classSectionId||"").trim()||Lt(t.grade,t.section),a=(t.className||"").trim()||`${t.grade} - ${t.section}`,r=ym({classSectionId:s,className:a,grade:t.grade,section:t.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName,adviserTeacherId:t.ownerTeacherId,adviserTeacherName:t.ownerTeacherName,managerId:t.managerId,managerName:t.managerName,classification:t.classification,strand:t.strand,gradeLevel:t.gradeLevel});await dr({classSectionId:s,className:a,grade:r.grade||t.grade,gradeLevel:r.gradeLevel||t.gradeLevel||t.grade,classification:r.classification||t.classification,strand:r.strand||t.strand,section:r.section||t.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName,managerId:t.managerId,managerName:t.managerName,studentUids:[]});const o=$t(Ve,"classrooms"),n=kt(o,jt("classSectionId","==",s)),i=await Dt(n);if(i.empty){const l=sr({name:a,teacherId:t.ownerTeacherId,grade:r.grade,gradeLevel:r.gradeLevel,classification:r.classification,strand:r.strand,section:r.section,classSectionId:s,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName||"",adviserTeacherId:t.ownerTeacherId,adviserTeacherName:t.ownerTeacherName||"",managerId:t.managerId,managerName:t.managerName||"",classMetadata:r,schedule:"Mon-Fri",studentCount:0,avgScore:0,atRiskCount:0,createdAt:lt(),updatedAt:lt()});await is(pt(Ve,"classrooms",s),l,{merge:!0})}else for(const l of i.docs){const c=sr({name:a,grade:r.grade,gradeLevel:r.gradeLevel,classification:r.classification,strand:r.strand,section:r.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId,ownerTeacherName:t.ownerTeacherName||"",adviserTeacherId:t.ownerTeacherId,adviserTeacherName:t.ownerTeacherName||"",managerId:t.managerId,managerName:t.managerName||"",classMetadata:r,updatedAt:lt()});await Zt(l.ref,c)}return s}async function mr(t,s,a,r,o,n){const i=Lt(s,a);await dr({classSectionId:i,grade:s,section:a,schoolYear:o,ownerTeacherId:r,ownerTeacherName:n,studentUids:[t]}),await is(pt(Ve,"users",t),{grade:s,section:a,classSectionId:i,adviserTeacherId:r,adviserTeacherName:n||"",updatedAt:lt()},{merge:!0})}async function Sm(t){const s=$t(Ve,"classSectionOwnership"),a=new Map,r=kt(s,jt("ownerTeacherId","==",t));(await Dt(r)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})});const n=kt(s,jt("managerId","==",t));return(await Dt(n)).docs.forEach(l=>{a.set(l.id,{id:l.id,...l.data()})}),Array.from(a.values()).sort((l,c)=>String(l.classSectionId||"").localeCompare(String(c.classSectionId||"")))}async function km(t="",s=25){const a=$t(Ve,"users"),r=Math.max(1,Math.min(100,s)),o=kt(a,jt("role","==","teacher"),Vr(r*4)),n=await Dt(o),i=t.trim().toLowerCase();return n.docs.map(c=>{const d=c.data(),u=String(d.name||"").trim(),f=String(d.email||"").trim();return{uid:c.id,name:u||"Teacher",email:f,photo:String(d.photo||d.photoURL||"").trim()||void 0}}).filter(c=>i?c.name.toLowerCase().includes(i)||c.email.toLowerCase().includes(i):!0).sort((c,d)=>c.name.localeCompare(d.name)).slice(0,r)}function Cm(t,s,a=20){if(t.length===0)return s([]),()=>{};const r=$t(Ve,"activities"),o=kt(r,jt("classroomId","in",t),Rl("timestamp","desc"));return ti(o,n=>{const i=n.docs.slice(0,a).map(l=>({id:l.id,...l.data()}));s(i)})}const Im=({open:t,onClose:s,onCreated:a,teacherName:r})=>{const{currentUser:o}=ds(),[n,i]=m.useState("details"),[l,c]=m.useState(""),[d,u]=m.useState("Grade 11"),[f,h]=m.useState(""),[b,k]=m.useState(!1),[j,S]=m.useState(""),[p,N]=m.useState([]),[C,z]=m.useState(new Set),[I,U]=m.useState(""),[v,y]=m.useState(!1);m.useEffect(()=>{t||(i("details"),c(""),u("Grade 11"),h(""),S(""),z(new Set),U(""))},[t]),m.useEffect(()=>{t&&n==="students"&&w()},[t,n]);const w=async()=>{y(!0);try{const F=$t(Ve,"users"),X=kt(F,jt("role","==","student")),J=await Dt(X),ce=[];J.docs.forEach(ne=>{const xe=ne.data();ce.push({uid:ne.id,name:xe.name||xe.displayName||"Student",email:xe.email||"",grade:xe.grade,section:xe.section})}),N(ce.sort((ne,xe)=>ne.name.localeCompare(xe.name)))}catch(F){console.error("[CreateClassModal] Failed to load students:",F)}finally{y(!1)}},A=async()=>{if(o){if(!f.trim()){S("Section name is required");return}S(""),k(!0);try{const F=String(new Date().getFullYear());if(await qi({classSectionId:"",grade:d,section:f.trim(),schoolYear:F,ownerTeacherId:o.uid,ownerTeacherName:r||o.displayName||"",managerId:o.uid,managerName:r||o.displayName||"",className:l.trim()||`${d} - ${f.trim()}`}),C.size>0){const X=Array.from(C).map(J=>mr(J,d,f.trim(),o.uid,F,r||o.displayName||""));await Promise.allSettled(X)}a(),s()}catch(F){S(F instanceof Error?F.message:"Failed to create class")}finally{k(!1)}}},B=F=>{z(X=>{const J=new Set(X);return J.has(F)?J.delete(F):J.add(F),J})},E=p.filter(F=>F.name.toLowerCase().includes(I.toLowerCase())||F.email.toLowerCase().includes(I.toLowerCase()));return t?e.jsx(Et,{children:e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:s}),e.jsxs(Re.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"relative bg-white rounded-2xl shadow-xl w-full max-w-lg mx-4 max-h-[80vh] flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-[#f1f5f9]",children:[e.jsx("h2",{className:"text-lg font-semibold text-[#1e293b]",children:n==="details"?"Create New Class":"Add Students"}),e.jsx("button",{onClick:s,className:"p-1 rounded-lg hover:bg-[#f1f5f9] transition-colors",children:e.jsx(cs,{size:20,className:"text-[#64748b]"})})]}),e.jsxs("div",{className:"p-6 overflow-y-auto flex-1",children:[n==="details"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-[#475569] block mb-1.5",children:"Class Name"}),e.jsx(ws,{placeholder:"e.g. Grade 11 - Section A",value:l,onChange:F=>c(F.target.value)}),e.jsx("p",{className:"text-xs text-[#94a3b8] mt-1",children:"Optional. Auto-generated from grade + section if empty."})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-[#475569] block mb-1.5",children:"Grade Level"}),e.jsxs("select",{value:d,onChange:F=>u(F.target.value),className:"w-full px-3 py-2 border border-[#e2e8f0] rounded-lg text-sm bg-white",children:[e.jsx("option",{value:"Grade 11",children:"Grade 11"}),e.jsx("option",{value:"Grade 12",children:"Grade 12"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-[#475569] block mb-1.5",children:"Section"}),e.jsx(ws,{placeholder:"e.g. Section A, STEM-1, Rizal",value:f,onChange:F=>h(F.target.value)})]}),j&&e.jsx("p",{className:"text-sm text-rose-500",children:j})]}),n==="students"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx(Os,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-[#94a3b8]"}),e.jsx(ws,{placeholder:"Search students...",value:I,onChange:F=>U(F.target.value),className:"pl-9"})]}),e.jsxs("p",{className:"text-xs text-[#64748b]",children:[C.size," student(s) selected"]}),v?e.jsx("p",{className:"text-sm text-[#64748b] text-center py-4",children:"Loading students..."}):E.length===0?e.jsx("p",{className:"text-sm text-[#64748b] text-center py-4",children:"No students found."}):e.jsx("div",{className:"space-y-1 max-h-[300px] overflow-y-auto",children:E.map(F=>e.jsxs("button",{onClick:()=>B(F.uid),className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-left transition-colors ${C.has(F.uid)?"bg-purple-50 border border-purple-200":"hover:bg-[#f8fafc] border border-transparent"}`,children:[e.jsx("div",{className:`w-5 h-5 rounded-md border-2 flex items-center justify-center ${C.has(F.uid)?"bg-[#9956DE] border-[#9956DE]":"border-[#cbd5e1]"}`,children:C.has(F.uid)&&e.jsx(Mt,{size:12,className:"text-white"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-[#1e293b] truncate",children:F.name}),e.jsx("p",{className:"text-xs text-[#64748b] truncate",children:F.email})]}),F.grade&&e.jsx("span",{className:"text-xs text-[#94a3b8]",children:F.grade})]},F.uid))}),j&&e.jsx("p",{className:"text-sm text-rose-500",children:j})]})]}),e.jsx("div",{className:"flex items-center justify-between p-6 border-t border-[#f1f5f9]",children:n==="details"?e.jsxs(e.Fragment,{children:[e.jsx(xt,{variant:"outline",onClick:s,children:"Cancel"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(xt,{variant:"outline",onClick:()=>{if(!f.trim()){S("Section is required");return}S(""),i("students")},children:"Add Students"}),e.jsx(xt,{onClick:A,disabled:b||!f.trim(),className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:b?"Creating...":"Create Class"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(xt,{variant:"outline",onClick:()=>i("details"),children:"Back"}),e.jsxs(xt,{onClick:A,disabled:b,className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:[e.jsx(Js,{size:16,className:"mr-1"}),b?"Creating...":`Create with ${C.size} Student${C.size!==1?"s":""}`]})]})})]})]})}):null},Tm=({open:t,onClose:s,onAdded:a,grade:r,section:o,teacherName:n,existingStudentUids:i=[]})=>{const{currentUser:l}=ds(),[c,d]=m.useState([]),[u,f]=m.useState(new Set),[h,b]=m.useState(""),[k,j]=m.useState(!1),[S,p]=m.useState(!1);m.useEffect(()=>{t&&(f(new Set),b(""),N())},[t]);const N=async()=>{j(!0);try{const I=kt($t(Ve,"users"),jt("role","==","student")),v=(await Dt(I)).docs.filter(y=>!i.includes(y.id)).map(y=>{const w=y.data();return{uid:y.id,name:w.name||w.displayName||"Student",email:w.email||""}}).sort((y,w)=>y.name.localeCompare(w.name));d(v)}catch{}j(!1)},C=async()=>{if(!(!l||u.size===0)){p(!0);try{const I=String(new Date().getFullYear()),U=Array.from(u).map(v=>mr(v,r,o,l.uid,I,n||l.displayName||""));await Promise.allSettled(U),me.success(`Added ${u.size} student(s) to class`),a(),s()}catch{me.error("Failed to add students")}p(!1)}},z=c.filter(I=>I.name.toLowerCase().includes(h.toLowerCase())||I.email.toLowerCase().includes(h.toLowerCase()));return t?e.jsx(Et,{children:e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:s}),e.jsxs(Re.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"relative bg-white rounded-2xl shadow-xl w-full max-w-2xl mx-4 max-h-[80vh] flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-5 border-b border-[#f1f5f9]",children:[e.jsxs("h2",{className:"text-base font-semibold text-[#1e293b]",children:["Add Students to ",r," - ",o]}),e.jsx("button",{onClick:s,className:"p-1 rounded-lg hover:bg-[#f1f5f9]",children:e.jsx(cs,{size:18,className:"text-[#64748b]"})})]}),e.jsxs("div",{className:"p-4 space-y-3 flex-1 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Os,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-[#94a3b8]"}),e.jsx(ws,{placeholder:"Search students...",value:h,onChange:I=>b(I.target.value),className:"pl-8 h-9 text-sm"})]}),e.jsx("button",{onClick:()=>{u.size===z.length?f(new Set):f(new Set(z.map(I=>I.uid)))},className:"text-[11px] font-semibold text-[#9956DE] hover:text-[#7c3aed] bg-[#9956DE]/10 hover:bg-[#9956DE]/20 px-3 py-1.5 rounded-lg transition-colors whitespace-nowrap",children:u.size===z.length&&z.length>0?"Deselect All":"Select All"})]}),e.jsxs("p",{className:"text-xs text-[#64748b]",children:[u.size," of ",z.length," selected"]}),e.jsx("div",{className:"flex-1 overflow-y-auto space-y-1 min-h-[300px]",children:k?e.jsx("p",{className:"text-sm text-center text-[#64748b] py-6",children:"Loading..."}):z.length===0?e.jsx("p",{className:"text-sm text-center text-[#64748b] py-6",children:"No students available"}):z.map(I=>e.jsxs("button",{onClick:()=>f(U=>{const v=new Set(U);return v.has(I.uid)?v.delete(I.uid):v.add(I.uid),v}),className:`w-full flex items-center gap-3 px-3 py-2 rounded-lg text-left transition-colors ${u.has(I.uid)?"bg-purple-50 border border-purple-200":"hover:bg-[#f8fafc] border border-transparent"}`,children:[e.jsx("div",{className:`w-5 h-5 rounded-md border-2 flex items-center justify-center shrink-0 ${u.has(I.uid)?"bg-[#9956DE] border-[#9956DE]":"border-[#cbd5e1]"}`,children:u.has(I.uid)&&e.jsx(Mt,{size:12,className:"text-white"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-[#1e293b] truncate",children:I.name}),e.jsx("p",{className:"text-[11px] text-[#64748b] truncate",children:I.email})]})]},I.uid))})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 border-t border-[#f1f5f9]",children:[e.jsx(xt,{variant:"outline",size:"sm",onClick:s,children:"Cancel"}),e.jsxs(xt,{size:"sm",onClick:C,disabled:S||u.size===0,className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:[e.jsx(Ko,{size:14,className:"mr-1.5"}),S?"Adding...":`Add ${u.size} Student${u.size!==1?"s":""}`]})]})]})]})}):null};async function Em(t,s,a){const r=pt($t(Ve,"generatedLessonPlans"));return await is(r,{...t,teacherId:s,teacherName:a?.teacherName||null,studentId:a?.studentId||null,studentName:a?.studentName||null,status:"draft",createdAt:lt(),updatedAt:lt()}),r.id}async function Rm(t){const s=pt(Ve,"generatedLessonPlans",t),a=await js(s);if(!a.exists())throw new Error("Lesson draft not found. Save draft before publishing.");if(!a.data().publishReady)throw new Error("Lesson is not publish-ready. Resolve source legitimacy and validation issues first.");await Zt(s,{status:"published",publishedAt:lt(),updatedAt:lt()})}async function _m(t,s=!0){const a=t.learningCompetency||t.lessonTitle||t.focusTopics&&t.focusTopics[0]||"general mathematics",r=t.subject||"general_math",o=t.quarter??1;let n="",i=[],l,c,d,u=!1;if(s)try{const b=await bl(a,r,o,{lessonTitle:t.lessonTitle,learningCompetency:t.learningCompetency,moduleUnit:t.moduleUnit,learnerLevel:t.learnerLevel});i=b.sources||[],n=b.explanation||"",l=b.retrievalConfidence,c=b.retrievalBand,d=b.retrievalQuery,u=b.needsReview??!1}catch{n="",i=[]}const f={...t,subject:r,quarter:o,curriculumContext:n?`[CURRICULUM CONTEXT] ${n}`:void 0,curriculumRetrievalConfidence:l,curriculumRetrievalBand:c,curriculumRetrievalQuery:d,needsReview:u};return{...await nt.generateLessonPlan(f),curriculumSources:i,curriculumContext:n}}const Mm=Il("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function Am({className:t,variant:s,asChild:a=!1,...r}){const o=a?Gl:"span";return e.jsx(o,{"data-slot":"badge",className:Xo(Mm({variant:s}),t),...r})}function zm(t){return t.length<=42?t:`${t.slice(0,18)}...${t.slice(-20)}`}const No=({sources:t=[],className:s})=>t.length?e.jsxs(Ql,{children:[e.jsx(Ul,{asChild:!0,children:e.jsxs(Am,{className:["bg-[#75D06A]/15 text-[#2E7D32] border-[#75D06A]/40 font-body font-semibold text-[11px] px-2.5 py-1 rounded-full cursor-help",s||""].join(" "),variant:"outline",children:[e.jsx(Gt,{size:12}),"DepEd Aligned"]})}),e.jsxs(Vl,{side:"top",sideOffset:6,className:"max-w-sm bg-white border border-[#dde3eb] text-[#0a1628] shadow-lg p-3",children:[e.jsx("p",{className:"text-[11px] font-display font-bold uppercase tracking-wide text-[#5a6578] mb-2",children:"Curriculum Sources"}),e.jsx("div",{className:"space-y-2",children:t.slice(0,5).map((a,r)=>e.jsxs("div",{className:"text-xs leading-relaxed",children:[e.jsxs("p",{className:"font-semibold text-[#0a1628]",children:[a.subject," | Q",a.quarter]}),e.jsxs("p",{className:"text-[#5a6578]",children:[zm(a.sourceFile)," | p.",a.page]}),e.jsxs("p",{className:"text-[#5a6578]",children:["Similarity: ",(a.score*100).toFixed(1),"%"]})]},`${a.sourceFile}-${a.page}-${r}`))})]})]}):null,Lm=[{level:"Remember",icon:Mr,bgColor:"bg-sky-500/20",borderColor:"border-sky-500/40",textColor:"text-sky-400",description:"Recall facts, formulas, definitions, and basic procedures.",mathExample:"State the quadratic formula.",mapsTo:"Identification, Enumeration",defaultWeight:"Included by default"},{level:"Understand",icon:Gt,bgColor:"bg-sky-500/20",borderColor:"border-sky-500/40",textColor:"text-sky-400",description:"Explain concepts, interpret graphs, classify mathematical objects.",mathExample:"Explain why the discriminant determines the number of roots.",mapsTo:"Multiple Choice, Identification",defaultWeight:"Included by default"},{level:"Apply",icon:vl,bgColor:"bg-green-500/20",borderColor:"border-green-500/40",textColor:"text-green-400",description:"Use formulas and procedures to solve routine problems.",mathExample:"Solve: 2x² + 5x - 3 = 0 using the quadratic formula.",mapsTo:"Equation-Based, Word Problem",defaultWeight:"Included by default"},{level:"Analyze",icon:pc,bgColor:"bg-orange-500/20",borderColor:"border-orange-500/40",textColor:"text-orange-400",description:"Break down problems, compare solution methods, identify patterns.",mathExample:"Given f(x) = x³ - 3x, find and classify all critical points.",mapsTo:"Word Problem, Equation-Based",defaultWeight:"Included by default"}],Dm=({isOpen:t,onClose:s})=>t?e.jsx(Et,{children:t&&e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-[70] flex items-center justify-center p-4",onClick:s,children:e.jsxs(Re.div,{initial:{scale:.95,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.95,opacity:0},className:"bg-white border border-slate-200 rounded-2xl shadow-2xl w-full max-w-3xl max-h-[85vh] flex flex-col overflow-hidden",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{className:"bg-gradient-to-r from-sky-600 to-sky-500 px-6 py-4 flex items-center justify-between flex-shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 bg-white/20 rounded-xl flex items-center justify-center",children:e.jsx(Jo,{size:22,className:"text-white"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:"Bloom's Taxonomy in MathPulse AI"}),e.jsx("p",{className:"text-cyan-200 text-xs",children:"Understanding cognitive levels in assessments"})]})]}),e.jsx("button",{onClick:s,className:"w-8 h-8 bg-white/20 hover:bg-white/30 rounded-lg flex items-center justify-center transition-colors",children:e.jsx(cs,{size:16,className:"text-white"})})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-bold text-rose-400 uppercase tracking-wide mb-2",children:"What is Bloom's Taxonomy?"}),e.jsx("p",{className:"text-sm text-slate-500 leading-relaxed",children:"Bloom's Taxonomy is an educational framework developed by Benjamin Bloom in 1956 and revised in 2001. It classifies learning objectives into six cognitive levels, from basic recall of facts up to complex evaluation and creation. MathPulse AI uses the first four levels most relevant to Senior High School mathematics."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-bold text-rose-400 uppercase tracking-wide mb-2",children:"Why MathPulse AI Uses It"}),e.jsx("p",{className:"text-sm text-slate-500 leading-relaxed",children:"Using Bloom's Taxonomy ensures that assessments do not only test memorization. A well-balanced math quiz should challenge students at multiple cognitive levels: remembering formulas, understanding concepts, applying procedures, and analyzing relationships. This mirrors the DepEd K-12 competency framework which requires higher-order thinking skills (HOTS) alongside foundational knowledge."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-bold text-rose-400 uppercase tracking-wide mb-3",children:"Level-by-Level Breakdown"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:Lm.map(a=>{const r=a.icon;return e.jsxs("div",{className:`${a.bgColor} border ${a.borderColor} rounded-xl p-4 space-y-2`,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r,{size:18,className:a.textColor}),e.jsx("span",{className:`font-bold text-sm ${a.textColor}`,children:a.level})]}),e.jsx("p",{className:"text-xs text-slate-500",children:a.description}),e.jsxs("div",{className:"bg-black/20 rounded-lg p-2",children:[e.jsx("p",{className:"text-[10px] font-semibold text-slate-500 uppercase tracking-wide mb-0.5",children:"Math Example"}),e.jsx("p",{className:"text-xs text-[#dde3eb] italic",children:a.mathExample})]}),e.jsxs("div",{className:"flex items-center justify-between text-[10px]",children:[e.jsxs("span",{className:"text-slate-500",children:["Maps to: ",e.jsx("span",{className:"text-slate-500 font-medium",children:a.mapsTo})]}),e.jsx("span",{className:"text-green-400 font-medium",children:a.defaultWeight})]})]},a.level)})})]}),e.jsx("div",{className:"bg-slate-50 border border-slate-200 rounded-xl p-4",children:e.jsxs("p",{className:"text-xs text-slate-500 leading-relaxed",children:[e.jsx("span",{className:"font-semibold text-slate-600",children:"Note:"})," ","All four levels are selected by default to produce a balanced, HOTS-aligned assessment. Deselecting a level will remove questions of that cognitive depth from the generated quiz."]})})]}),e.jsxs("div",{className:"border-t border-slate-200 px-6 py-3 flex items-center justify-between flex-shrink-0 bg-slate-50",children:[e.jsxs("a",{href:"https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-xs text-rose-400 hover:text-rose-300 font-medium transition-colors",children:[e.jsx(vc,{size:12}),"Learn More"]}),e.jsx("button",{onClick:s,className:"px-5 py-2 bg-sky-600 hover:bg-rose-500 text-white text-sm font-bold rounded-xl transition-colors",children:"Got it"})]})]})})}):null,$m={draft:"bg-[#edf1f7] text-[#5a6578]",published:"bg-green-100 text-green-700",assigned:"bg-sky-100 text-sky-700",completed:"bg-rose-100 text-rose-700"},Fa={identification:{label:"Identification",icon:e.jsx(gs,{size:16}),description:"Define or identify concepts"},enumeration:{label:"Enumeration",icon:e.jsx(Ka,{size:16}),description:"List steps or properties"},multiple_choice:{label:"Multiple Choice",icon:e.jsx(Mt,{size:16}),description:"Choose from 4 options"},word_problem:{label:"Word Problem",icon:e.jsx(Gt,{size:16}),description:"Real-world scenarios"},equation_based:{label:"Equation-Based",icon:e.jsx(wl,{size:16}),description:"Solve equations"}},jo={remember:{label:"Remember",color:"bg-sky-100 text-sky-700 border-sky-300",description:"Recall facts & formulas"},understand:{label:"Understand",color:"bg-emerald-100 text-emerald-700 border-emerald-300",description:"Explain concepts"},apply:{label:"Apply",color:"bg-rose-100 text-rose-700 border-rose-300",description:"Use in new contexts"},analyze:{label:"Analyze",color:"bg-rose-100 text-rose-700 border-rose-300",description:"Examine & compare"}},Fm=["Grade 11","Grade 12"],Sr=t=>{const s=(t||"").trim().toLowerCase();return s==="grade 12"||s==="12"||s.includes("12")?"Grade 12":"Grade 11"},Om={"Grade 11":{"General Mathematics - Patterns, Relations, and Functions":["Patterns and Real-Life Relationships","Functions as Mathematical Models","Function Notation and Evaluation","Domain and Range of Functions","Operations on Functions","Composite Functions","Inverse Functions","Graphs of Rational Functions","Graphs of Exponential Functions","Graphs of Logarithmic Functions"],"General Mathematics - Financial Mathematics":["Simple and Compound Interest","Simple and General Annuities","Present and Future Value","Loans, Amortization, and Sinking Funds","Stocks, Bonds, and Market Indices","Business Decision-Making with Mathematical Models"],"General Mathematics - Logic and Mathematical Reasoning":["Propositions and Logical Connectives","Truth Values and Truth Tables","Logical Equivalence and Implication","Quantifiers and Negation","Validity of Arguments"]},"Grade 12":{"Pre-Calculus - Analytic Geometry":["Conic Sections - Parabola","Conic Sections - Ellipse","Conic Sections - Hyperbola","Conic Sections - Circle","Systems of Nonlinear Equations"],"Pre-Calculus - Series and Induction":["Sequences and Series","Arithmetic Sequences","Geometric Sequences","Mathematical Induction","Binomial Theorem"],"Pre-Calculus - Trigonometry":["Angles and Unit Circle","Trigonometric Functions","Trigonometric Identities","Sum and Difference Formulas","Inverse Trigonometric Functions","Polar Coordinates"],"Basic Calculus - Limits":["Limits of Functions","Limit Theorems","One-Sided Limits","Infinite Limits and Limits at Infinity","Continuity of Functions"],"Basic Calculus - Derivatives":["Definition of the Derivative","Differentiation Rules","Chain Rule","Implicit Differentiation","Higher-Order Derivatives","Related Rates","Extrema and the First Derivative Test","Concavity and the Second Derivative Test","Optimization Problems"],"Basic Calculus - Integration":["Antiderivatives and Indefinite Integrals","Definite Integrals and the FTC","Integration by Substitution","Area Under a Curve"]}},Bm={"Grade 11":["General Mathematics - "],"Grade 12":["Pre-Calculus - ","Basic Calculus - "]},yo=(t,s)=>{const a=Bm[s];return Object.fromEntries(Object.entries(t).filter(([r])=>a.some(o=>r.startsWith(o))))},xa=30,pa=12,kr="mathpulse:quiz-maker:active-task",Pm={easy:"text-green-600",medium:"text-rose-600",hard:"text-red-600"},Yi=({onBack:t,gradeLevel:s,selectedClassId:a,selectedClassName:r,onOpenNotifications:o,onOpenProfile:n,onOpenInsightModal:i,userPhoto:l,teacherName:c,drawerMode:d=!1,onQuizSaved:u,onQuizGenerating:f})=>{const{currentUser:h,loading:b}=ds(),k=m.useMemo(()=>nt.getImportGroundedRolloutFlags(),[]),[j,S]=m.useState("create"),[p,N]=m.useState("setup"),[C,z]=m.useState(Sr(s)),[I,U]=m.useState(10),[v,y]=m.useState([]),[w,A]=m.useState([]),[B,E]=m.useState(["multiple_choice","word_problem","identification"]),[F,X]=m.useState(["remember","understand","apply","analyze"]),[J,ce]=m.useState(!1),[ne,xe]=m.useState({easy:30,medium:50,hard:20}),[he,H]=m.useState({}),[q,M]=m.useState(!1),[Y,ae]=m.useState([]),[$e,Me]=m.useState(!1),[Ge,G]=m.useState(""),[te,g]=m.useState(!1),[T,R]=m.useState(!1),[K,Z]=m.useState(null),[re,le]=m.useState(0),[$,oe]=m.useState("queued"),[pe,we]=m.useState("Waiting to start generation..."),[se,fe]=m.useState(null),[et,Fe]=m.useState(null),[Ke,rt]=m.useState(""),[Rt,St]=m.useState(!1),Ft=m.useRef(!1),[ss,P]=m.useState("topics"),[Ae,Ye]=m.useState(null),[vt,xs]=m.useState(!1),[Ot,Wt]=m.useState("all"),[qt,Rs]=m.useState("all"),[st,Aa]=m.useState(!1),[_t,_]=m.useState(null),[ee,ze]=m.useState(!1),[Ne,Qe]=m.useState(!1),[je,ft]=m.useState(!1),[ot,Ce]=m.useState([]),[ps,Yt]=m.useState(!1),[_s,za]=m.useState(""),[Kt,ra]=m.useState(null),[na,hs]=m.useState([]),[oa,ia]=m.useState(!1),[Hs,ur]=m.useState("all"),[xr,la]=m.useState(null),[ca,L]=m.useState(null),V=m.useCallback(async()=>{M(!0);const x=Sr(C);try{const D=await nt.getQuizTopics(x);D.topics&&H(yo(D.topics,x))}catch{H(yo(Om[x],x))}finally{M(!1)}},[C]),ke=m.useCallback(async()=>{if(!k.quizEnabled){ae([]),G("Import-grounded quiz generation is disabled by rollout flag; using curriculum defaults."),Me(!1);return}Me(!0),G("");try{const x=await nt.getCourseMaterialTopics({classSectionId:a,limit:20}),D=(x.topics||[]).filter(O=>O.title?.trim());ae(D),x.warnings&&x.warnings.length>0&&G(x.warnings.join(" "))}catch{ae([]),G("Imported topics are currently unavailable; quiz generation will use curriculum defaults.")}finally{Me(!1)}},[a,k.quizEnabled]);m.useEffect(()=>{V(),y([]),A([])},[V]),m.useEffect(()=>{ke()},[ke]);const _e=m.useMemo(()=>{const x=Array.from(new Set(Y.map(D=>D.title.trim()).filter(Boolean)));return x.length===0?he:{"Imported Course Materials":x,...he}},[he,Y]);m.useEffect(()=>{Wt("all"),Rs("all")},[se]);const Bt=m.useMemo(()=>{if(!se)return[];const x=se.questions.map(O=>O.provenance?.sourceFile?.trim()).filter(O=>!!O),D=(se.metadata.topicProvenance||[]).map(O=>O.sourceFile?.trim()).filter(O=>!!O);return Array.from(new Set([...x,...D])).sort((O,ge)=>O.localeCompare(ge))},[se]),Ee=m.useMemo(()=>{if(!se)return[];const x=se.questions.map(O=>O.provenance?.materialId?.trim()).filter(O=>!!O),D=(se.metadata.topicProvenance||[]).map(O=>O.materialId?.trim()).filter(O=>!!O);return Array.from(new Set([...x,...D])).sort((O,ge)=>O.localeCompare(ge))},[se]),Gs=m.useMemo(()=>se?se.questions.filter(x=>{const D=Ot==="all"||(x.provenance?.sourceFile||"").trim()===Ot,O=qt==="all"||(x.provenance?.materialId||"").trim()===qt;return D&&O}):[],[se,Ot,qt]),It=(x,D)=>{const O={...ne},ge=Math.max(0,Math.min(100,O[x]+D)),Oe=ge-O[x];O[x]=ge;const We=Object.keys(O).filter(it=>it!==x),Pt=We.reduce((it,Xt)=>it+O[Xt],0);if(Pt>0)for(const it of We)O[it]=Math.max(0,Math.round(O[it]-Oe*O[it]/Pt));const Qs=Object.values(O).reduce((it,Xt)=>it+Xt,0);if(Qs!==100){const it=We.reduce((Xt,Nn)=>O[Xt]>=O[Nn]?Xt:Nn);O[it]+=100-Qs}xe(O)},Pe=x=>{y(D=>D.includes(x)?D.filter(O=>O!==x):[...D,x]),A(D=>D.filter(O=>O!==x))},da=x=>{E(D=>D.includes(x)?D.length>1?D.filter(O=>O!==x):D:[...D,x])},ma=x=>{X(D=>D.includes(x)?D.length>1?D.filter(O=>O!==x):D:[...D,x])},ol=()=>{let x=v.length>0?v.filter(O=>!w.includes(O)):Object.values(_e).flat().filter(O=>!w.includes(O)).slice(0,3);x.length>pa&&(x=x.slice(0,pa));const D=Math.min(I,xa);return{topics:x,gradeLevel:C,numQuestions:D,questionTypes:B,includeGraphs:J,difficultyDistribution:ne,bloomLevels:F,excludeTopics:w,classSectionId:a,className:r,preferImportedTopics:k.quizEnabled}},il=m.useCallback((x,D)=>{const O={taskId:x,request:D,createdAt:new Date().toISOString(),ownerUid:h?.uid};try{sessionStorage.setItem(kr,JSON.stringify(O))}catch{}},[h]),fs=m.useCallback(()=>{try{sessionStorage.removeItem(kr)}catch{}},[]),pr=m.useCallback(x=>{const D=Math.max(0,Math.min(100,Math.round(typeof x.progressPercent=="number"?x.progressPercent:x.status==="queued"?10:x.status==="running"?65:x.status==="completed"?100:x.status==="cancelling"?95:100)));le(O=>{let ge=Math.max(O,D);if(x.status==="running"&&D<=O){const Oe=String(x.progressStage||"").toLowerCase(),We=Oe.includes("assembling")||Oe.includes("final")?97:Oe.includes("generating")?89:95;ge=Math.min(We,O+1)}return ge}),oe(x.progressStage||x.status),we(x.progressMessage||(x.status==="queued"?"Task queued for generation.":x.status==="running"?"Generating quiz in the background...":x.status==="completed"?"Generation complete.":x.status==="cancelling"?"Cancelling generation...":"Generation finished with an error."))},[]);m.useEffect(()=>{if(b||Ft.current)return;if(Ft.current=!0,!h){fs();return}let x=!1;const D=sessionStorage.getItem(kr);if(!D)return;let O=null;try{O=JSON.parse(D)}catch{fs();return}if(!O?.taskId){fs();return}if(O.ownerUid&&O.ownerUid!==h.uid){fs();return}return g(!0),Z(O.taskId),rt(""),nt.waitForTaskResult(O.taskId,{timeoutMs:24e4,pollIntervalMs:1500,onProgress:pr}).then(async ge=>{if(x)return;const Oe=ge.result;if(!Oe||typeof Oe!="object")throw new Error("Quiz generation completed without a valid result payload.");const We=Oe;fe(We),N("results"),le(100),oe("completed"),we("Generation complete."),Z(null),fs();try{await fn(We,O.request),me.success("Quiz auto-saved to your library as draft.")}catch(Pt){me.error(Pt instanceof Error?Pt.message:"Quiz generated but failed to save to library")}}).catch(ge=>{if(!x){if(ge instanceof qa&&(ge.status===401||ge.status===403)){Ft.current=!1,g(!1);return}rt(ge instanceof Error?ge.message:"Failed to resume quiz generation"),Z(null),fs()}}).finally(()=>{x||g(!1)}),()=>{x=!0}},[pr,b,fs,h]);const xn=()=>{if(te){window.confirm("Quiz generation is in progress. Are you sure you want to leave?")&&(N("setup"),fe(null),rt(""),t());return}N("setup"),fe(null),rt(""),t()},ll=async()=>{f?.(),rt(""),g(!0),L(null),le(8),oe("queued"),we("Submitting quiz generation task..."),fe(null);const x=ol();try{const D=await nt.generateQuiz(x,{onTaskCreated:O=>{Z(O),il(O,x),le(ge=>Math.max(ge,12)),oe("queued"),we("Task queued. Generation is running in the background.")},onProgress:O=>{pr(O),O.taskId&&O.taskId!==K&&Z(O.taskId)}});fe(D),N("results"),le(100),oe("completed"),we("Generation complete."),Z(null),fs();try{await fn(D,x),me.success("Quiz auto-saved to your library as draft.")}catch(O){me.error(O instanceof Error?O.message:"Quiz generated but failed to save to library")}nt.reportImportGroundedFeedback({flow:"quiz",status:"success",classSectionId:x.classSectionId,className:x.className,metadata:{totalQuestions:D.metadata.totalQuestions,usedImportedTopics:!!D.metadata.usedImportedTopics,importedTopicCount:D.metadata.importedTopicCount??0,importGroundingEnabled:k.quizEnabled}})}catch(D){rt(D instanceof Error?D.message:"Quiz generation failed"),le(100),oe("failed"),we("Generation failed."),Z(null),fs(),nt.reportImportGroundedFeedback({flow:"quiz",status:"failed",classSectionId:x.classSectionId,className:x.className,metadata:{error:D instanceof Error?D.message:"Quiz generation failed",importGroundingEnabled:k.quizEnabled}})}finally{g(!1)}},cl=()=>{if(!se)return;const x=se.questions.map((D,O)=>{let ge=`${O+1}. [${D.difficulty.toUpperCase()}] [${D.bloomLevel}] (${D.points} pts) `;return ge+=` ${D.question} `,D.options&&(ge+=D.options.map(Oe=>` ${Oe}`).join(` @@ -98,7 +98,7 @@ ${n}`:void 0,curriculumRetrievalConfidence:l,curriculumRetrievalBand:c,curriculu `,ge+=` Explanation: ${D.explanation} `,ge}).join(` `);navigator.clipboard.writeText(x),St(!0),setTimeout(()=>St(!1),2e3)},dl=()=>{if(!se)return;const x=new Blob([JSON.stringify(se,null,2)],{type:"application/json"}),D=URL.createObjectURL(x),O=document.createElement("a");O.href=D,O.download=`quiz_${C.replace(/\s/g,"_")}_${Date.now()}.json`,O.click(),URL.revokeObjectURL(D)};v.length>0||Object.values(_e).flat().length>0;const pn=(x,D)=>{const O=D?.gradeLevel||C,ge=D?.topics||v,Oe=x.questions.map((We,Pt)=>({id:`q_${Date.now()}_${Pt}`,questionType:We.questionType||"identification",question:We.question,...We.options?{options:We.options}:{},correctAnswer:We.correctAnswer,bloomLevel:We.bloomLevel||"understand",difficulty:We.difficulty||"medium",topic:We.topic,subject:O,points:We.points,explanation:We.explanation}));return{title:`${O} Quiz – ${ge.length>0?ge.slice(0,2).join(", "):"Mixed Topics"}`,gradeLevel:O,questions:Oe,totalPoints:x.totalPoints,metadata:{topicsCovered:Object.keys(x.metadata.topicsCovered),difficultyBreakdown:{easy:x.metadata.difficultyBreakdown.easy??0,medium:x.metadata.difficultyBreakdown.medium??0,hard:x.metadata.difficultyBreakdown.hard??0},bloomDistribution:x.metadata.bloomTaxonomyDistribution,questionTypeBreakdown:x.metadata.questionTypeBreakdown,supplementalPurpose:x.metadata.supplementalPurpose,recommendedTeacherActions:x.metadata.recommendedTeacherActions??[],generatedAt:new Date().toISOString(),generatedBy:"teacher_generated"},status:"draft",source:"teacher_generated"}},hn=m.useCallback(x=>{hs(D=>[x,...D.filter(O=>O.id!==x.id)])},[]);async function fn(x,D){if(!h)return null;const O=pn(x,D),ge=await In(O,h.uid,_t?{documentId:_t}:void 0);return _(ge),hn({id:ge,...O,teacherId:h.uid}),ge}const ml=async()=>{if(!se){me.error("No quiz to save. Generate a quiz first.");return}if(!h){me.error("You must be signed in to save quizzes.");return}Aa(!0);try{const x=pn(se),D=await In(x,h.uid,_t?{documentId:_t}:void 0);_(D),hn({id:D,...x,teacherId:h.uid}),me.success("Quiz saved to your library!"),u?.(D)}catch(x){me.error(x instanceof Error?x.message:"Failed to save quiz")}finally{Aa(!1)}},ul=async()=>{if(_t){ze(!0);try{await Ol(_t),hs(x=>x.map(D=>D.id===_t?{...D,status:"published"}:D)),me.success("Quiz published to Quiz Bank!")}catch(x){me.error(x instanceof Error?x.message:"Failed to publish quiz")}finally{ze(!1)}}},hr=async x=>{const D=x??_t;if(!D){me.error("Save the quiz first before assigning.");return}if(la(D),Qe(!0),ra(null),za(""),ot.length===0&&h){Yt(!0);try{const O=await cn(h.uid);Ce(O)}catch{me.error("Failed to load students")}finally{Yt(!1)}}},xl=async()=>{const x=xr??_t;if(!(!Kt||!x||!h)){ft(!0);try{await Bl(x,Kt,h.uid),hs(D=>D.map(O=>O.id===x?{...O,status:"assigned",metadata:{...O.metadata,assignedTo:Kt}}:O)),me.success("Quiz assigned to student!"),Qe(!1),la(null),j==="bank"&&fr()}catch(D){me.error(D instanceof Error?D.message:"Failed to assign quiz")}finally{ft(!1)}}},fr=m.useCallback(async()=>{if(h){ia(!0);try{const x=await ai(h.uid);hs(x)}catch{me.error("Failed to load quiz bank")}finally{ia(!1)}}},[h]);m.useEffect(()=>{j==="bank"&&fr()},[j,fr]);const pl=async x=>{try{await Fl(x),hs(D=>D.filter(O=>O.id!==x)),me.success("Quiz deleted")}catch{me.error("Failed to delete quiz")}},gn=ot.filter(x=>x.name.toLowerCase().includes(_s.toLowerCase())||x.email.toLowerCase().includes(_s.toLowerCase())),bn=Hs==="all"?na:na.filter(x=>x.status===Hs),hl=x=>{const D=(x.metadata.topicsCovered||[]).reduce((O,ge)=>(O[ge]=(O[ge]||0)+1,O),{});return{questions:x.questions.map(O=>({questionType:O.questionType,question:O.question,correctAnswer:O.correctAnswer,options:O.options??null,bloomLevel:O.bloomLevel,difficulty:O.difficulty,topic:O.topic,points:O.points,explanation:O.explanation})),totalPoints:x.totalPoints,metadata:{topicsCovered:D,difficultyBreakdown:x.metadata.difficultyBreakdown,bloomTaxonomyDistribution:x.metadata.bloomDistribution,questionTypeBreakdown:x.metadata.questionTypeBreakdown,gradeLevel:x.gradeLevel,totalQuestions:x.questions.length,includesGraphQuestions:!1,supplementalPurpose:x.metadata.supplementalPurpose,bloomTaxonomyRationale:"Loaded from saved quiz bank entry.",recommendedTeacherActions:x.metadata.recommendedTeacherActions||[]}}},gr=x=>{_(x.id),fe(hl(x)),Fe(null),L(x.id),Wt("all"),Rs("all"),Ye(null),N("results"),S("create")},vn={remember:{badge:"border-purple-200 text-purple-700 bg-purple-50",card:"from-[#a855f7] to-[#9333ea]",num:"text-purple-700 bg-purple-100 border-purple-200"},understand:{badge:"border-blue-200 text-blue-700 bg-blue-50",card:"from-[#3b82f6] to-[#2563eb]",num:"text-blue-700 bg-blue-100 border-blue-200"},apply:{badge:"border-amber-200 text-amber-700 bg-amber-50",card:"from-[#f59e0b] to-[#d97706]",num:"text-amber-700 bg-amber-100 border-amber-200"},analyze:{badge:"border-orange-200 text-orange-700 bg-orange-50",card:"from-[#f97316] to-[#ea580c]",num:"text-orange-700 bg-orange-100 border-orange-200"},evaluate:{badge:"border-rose-200 text-rose-700 bg-rose-50",card:"from-[#f43f5e] to-[#e11d48]",num:"text-rose-700 bg-rose-100 border-rose-200"},create:{badge:"border-emerald-200 text-emerald-700 bg-emerald-50",card:"from-[#10b981] to-[#059669]",num:"text-emerald-700 bg-emerald-100 border-emerald-200"}},fl=(x,D,O)=>{const ge=Ae===D,Oe=vn[x.bloomLevel?.toLowerCase()]||vn.remember,We=x.bloomLevel?.toLowerCase()==="remember"?"hover:border-purple-200":x.bloomLevel?.toLowerCase()==="understand"?"hover:border-blue-200":x.bloomLevel?.toLowerCase()==="apply"?"hover:border-amber-200":"hover:border-slate-200";return e.jsxs(Re.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:D*.05},className:`border border-[#e2e8f0] rounded-[20px] overflow-hidden bg-white shadow-sm hover:shadow-md ${We} transition-all duration-300`,children:[e.jsxs("div",{className:"p-6 flex justify-between items-start cursor-pointer hover:bg-slate-50/50 transition-colors",onClick:()=>Ye(ge?null:D),children:[e.jsxs("div",{className:"space-y-3 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2.5 flex-wrap mb-1",children:[e.jsxs("span",{className:`w-8 h-8 rounded-lg bg-gradient-to-br ${Oe.card} text-white flex items-center justify-center font-bold text-[13px] shadow-sm`,children:["Q",D+1]}),e.jsx("span",{className:`px-2.5 py-1 rounded-md border text-[10px] font-bold uppercase tracking-wider shadow-sm ${Oe.badge}`,children:x.bloomLevel}),e.jsx("span",{className:`px-2.5 py-1 rounded-md border text-[10px] font-bold uppercase tracking-wider shadow-sm ${x.difficulty==="easy"?"border-emerald-200 text-emerald-700 bg-emerald-50":x.difficulty==="hard"?"border-rose-200 text-rose-700 bg-rose-50":"border-amber-200 text-amber-700 bg-amber-50"}`,children:x.difficulty}),e.jsxs("span",{className:"text-[12px] font-bold text-[#64748b] bg-slate-100 px-2 py-1 rounded-md",children:[x.points," pts"]}),x.topic&&e.jsx("span",{className:"text-[12px] font-semibold text-[#64748b] px-2 py-1 hidden sm:inline-block border-l border-slate-200",children:x.topic})]}),e.jsx("p",{className:"text-[16px] font-bold text-[#1e293b] pr-4 leading-relaxed",children:x.question})]}),e.jsxs("div",{className:"flex flex-col items-end justify-between h-full gap-4 shrink-0 mt-1",children:[e.jsx("span",{className:`px-3 py-1.5 rounded-md text-[10px] font-bold uppercase tracking-widest hidden sm:block border shadow-sm ${Oe.badge}`,children:x.bloomLevel}),e.jsx("div",{className:"w-8 h-8 rounded-full bg-slate-50 flex items-center justify-center border border-slate-200 mt-2",children:ge?e.jsx(wa,{size:16,className:"text-[#64748b] transition-transform duration-300"}):e.jsx(Tt,{size:16,className:"text-[#64748b]"})})]})]}),e.jsx(Et,{children:ge&&e.jsx(Re.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},className:"overflow-hidden",children:e.jsxs("div",{className:"p-6 pt-0 bg-white",children:[e.jsx("div",{className:"h-px w-full bg-gradient-to-r from-transparent via-[#e2e8f0] to-transparent mb-6"}),x.options&&e.jsxs("div",{className:"mb-6",children:[e.jsx("p",{className:"text-[13px] font-bold text-[#64748b] mb-3 uppercase tracking-wider",children:"Options:"}),e.jsx("div",{className:"space-y-3",children:x.options.map((Pt,Qs)=>{const it=Pt.includes(x.correctAnswer);return e.jsxs("div",{className:`rounded-[12px] p-4 text-[14px] font-medium transition-all cursor-pointer relative overflow-hidden ${it?"bg-gradient-to-r from-emerald-50 to-emerald-100/30 border-2 border-emerald-400 text-emerald-800 font-bold shadow-sm":"bg-white border border-[#e2e8f0] text-[#475569] hover:border-[#a855f7] hover:shadow-[0_2px_8px_rgba(168,85,247,0.1)]"}`,children:[it&&e.jsx("div",{className:"absolute left-0 top-0 w-1 h-full bg-emerald-500"}),e.jsx("span",{className:it?"pl-2":"",children:Pt}),it&&e.jsx("div",{className:"w-6 h-6 rounded-full bg-emerald-500 text-white flex items-center justify-center shadow-sm absolute right-4 top-1/2 -translate-y-1/2",children:e.jsx(Mt,{size:13})})]},Qs)})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-5",children:[e.jsxs("div",{className:"bg-emerald-50/80 border border-emerald-200/60 rounded-[16px] p-5 shadow-sm",children:[e.jsxs("p",{className:"text-[11px] font-bold text-emerald-700 uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(Wr,{size:14})," Correct Answer"]}),e.jsx("p",{className:"text-[16px] font-bold text-[#1e293b]",children:x.correctAnswer})]}),e.jsxs("div",{className:"bg-purple-50/80 border border-purple-200/60 rounded-[16px] p-5 shadow-sm",children:[e.jsxs("p",{className:"text-[11px] font-bold text-purple-700 uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx($s,{size:14})," AI Explanation"]}),e.jsx("p",{className:"text-[13px] text-[#475569] leading-relaxed font-medium",children:x.explanation})]})]}),e.jsxs("div",{className:"flex gap-6 text-[12px] font-medium text-[#64748b] mt-5 pt-4 border-t border-slate-100",children:[e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(gs,{size:14})," ",e.jsx("strong",{className:"text-[#1e293b]",children:"Type:"})," ",Fa[x.questionType]?.label||x.questionType]}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(Mr,{size:14})," ",e.jsx("strong",{className:"text-[#1e293b]",children:"Bloom:"})," ",x.bloomLevel]})]})]})})})]},D)},wn=e.jsxs("div",{className:"w-full h-full flex flex-col overflow-y-auto bg-gradient-to-br from-[#eef2ff] via-[#f5f3ff] to-[#fff7ed]",children:[e.jsx("div",{className:"w-full px-[24px] xl:px-[32px] pt-[12px] pb-4",children:e.jsxs("div",{className:"flex items-center gap-1 bg-white/50 backdrop-blur-md p-1.5 rounded-full border border-white shadow-[0_2px_8px_rgba(0,0,0,0.04)] w-max",children:[e.jsxs("button",{onClick:()=>S("create"),className:`px-6 py-2 rounded-full text-[13px] font-bold flex items-center gap-2 transition-all duration-300 ease-out ${j==="create"?"bg-white text-[#a855f7] shadow-[0_2px_8px_rgba(168,85,247,0.15)] scale-100":"bg-transparent text-[#64748b] hover:text-[#1e293b] hover:bg-white/60 scale-95 hover:scale-100"}`,children:[e.jsx(Dr,{size:16})," Create Quiz"]}),e.jsxs("button",{onClick:()=>S("bank"),className:`px-6 py-2 rounded-full text-[13px] font-bold flex items-center gap-2 transition-all duration-300 ease-out ${j==="bank"?"bg-white text-[#a855f7] shadow-[0_2px_8px_rgba(168,85,247,0.15)] scale-100":"bg-transparent text-[#64748b] hover:text-[#1e293b] hover:bg-white/60 scale-95 hover:scale-100"}`,children:[e.jsx(Za,{size:16})," Quiz Bank"]})]})}),e.jsxs("div",{className:"w-full px-[24px] xl:px-[32px] pb-[32px] flex-1",children:[j==="bank"&&e.jsxs("div",{className:"w-full space-y-[24px]",children:[e.jsx("div",{className:"flex items-center gap-3 overflow-x-auto pb-2 border-b border-[#e2e8f0] mb-6",style:{scrollbarWidth:"none"},children:["all","draft","published","assigned","completed"].map(x=>e.jsx("button",{onClick:()=>ur(x),className:`px-5 py-2 text-[13px] font-bold rounded-full whitespace-nowrap transition-all duration-300 mb-4 capitalize ${Hs===x?"bg-purple-50 text-[#9333ea] border border-purple-200 shadow-[0_2px_8px_rgba(168,85,247,0.15)] hover:scale-105":"bg-white/80 text-[#64748b] border border-white hover:border-[#e2e8f0] hover:bg-white shadow-sm hover:shadow-md hover:-translate-y-0.5"}`,children:x==="all"?"All":x.charAt(0).toUpperCase()+x.slice(1)},x))}),oa?e.jsxs("div",{className:"flex items-center justify-center py-16",children:[e.jsx(dt,{size:24,className:"animate-spin text-sky-500"}),e.jsx("span",{className:"ml-2 text-sm text-[#5a6578]",children:"Loading quiz bank…"})]}):bn.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(Za,{size:40,className:"mb-3"}),e.jsx("p",{className:"font-medium",children:"No quizzes found"}),e.jsx("p",{className:"text-xs mt-1",children:"Generate your first quiz in the Create tab"})]}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:bn.map(x=>e.jsxs(Re.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},onClick:()=>gr(x),role:"button",tabIndex:0,onKeyDown:D=>{(D.key==="Enter"||D.key===" ")&&(D.preventDefault(),gr(x))},className:`relative bg-white/80 backdrop-blur-md rounded-[20px] p-6 shadow-sm border flex flex-col group hover:-translate-y-1 transition-all duration-300 cursor-pointer overflow-hidden focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#a855f7] ${x.status==="assigned"||x.status==="published"?"border-white hover:border-purple-100 hover:shadow-[0_8px_24px_rgba(168,85,247,0.1)]":"border-white hover:border-slate-200 hover:shadow-[0_8px_24px_rgba(0,0,0,0.06)]"}`,children:[e.jsx("div",{className:`absolute top-0 left-0 w-[6px] h-full transition-colors duration-300 ${x.status==="assigned"||x.status==="published"?"bg-purple-300 group-hover:bg-[#a855f7]":"bg-slate-200 group-hover:bg-slate-400"}`}),e.jsxs("div",{className:"flex justify-between items-start mb-4 gap-4 pl-3",children:[e.jsx("h3",{className:`font-bold text-[15px] text-[#1e293b] leading-tight transition-colors ${x.status==="assigned"||x.status==="published"?"group-hover:text-[#9333ea]":"group-hover:text-slate-700"}`,children:x.title}),e.jsx("span",{className:`px-2.5 py-1 rounded-[6px] text-[10px] font-bold uppercase tracking-wider shrink-0 shadow-sm ${$m[x.status]}`,children:x.status})]}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-5 pl-3",children:x.metadata.topicsCovered.slice(0,3).map(D=>e.jsx("span",{className:"px-2.5 py-1 bg-[#f8fafc] text-slate-600 text-[11px] font-medium rounded-md border border-slate-200 group-hover:border-slate-300 transition-colors",children:D},D))}),e.jsxs("div",{className:"flex items-center gap-5 text-[13px] text-[#64748b] font-medium mb-6 pl-3",children:[e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(Wl,{size:14})," ",x.questions.length," questions"]}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(Zo,{size:14})," ",x.totalPoints," pts"]}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(os,{size:14})," ",x.gradeLevel]})]}),e.jsxs("div",{className:"flex items-center gap-4 mt-auto pt-5 border-t border-[#f1f5f9] pl-3",children:[e.jsxs("button",{onClick:D=>{D.stopPropagation(),gr(x)},className:"flex items-center gap-1.5 text-[13px] font-semibold text-[#64748b] hover:text-[#1e293b] transition-colors bg-slate-50 hover:bg-slate-100 border border-slate-200 px-4 py-2 rounded-full shadow-sm",children:[e.jsx(ql,{size:14})," View"]}),e.jsxs("button",{onClick:D=>{D.stopPropagation(),hr(x.id)},className:"flex items-center gap-1.5 text-[13px] font-bold text-[#a855f7] hover:text-[#9333ea] transition-colors",children:[e.jsx(La,{size:14})," Assign"]}),e.jsxs("button",{onClick:D=>{D.stopPropagation(),pl(x.id)},className:"flex items-center gap-1.5 text-[13px] font-semibold text-rose-500 hover:text-rose-700 transition-colors ml-auto opacity-60 group-hover:opacity-100",children:[e.jsx(ri,{size:14})," Delete"]})]})]},x.id))})]}),j==="create"&&e.jsxs(e.Fragment,{children:[Ke&&e.jsx("div",{className:"w-full px-[24px] xl:px-[32px] pt-4",children:e.jsxs(Re.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},className:"bg-red-50 border border-red-200 rounded-xl p-4 flex items-start gap-3",children:[e.jsx(or,{size:18,className:"text-red-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-red-800 font-medium",children:"Error"}),e.jsx("p",{className:"text-sm text-red-600",children:Ke})]}),e.jsx("button",{onClick:()=>rt(""),className:"ml-auto",children:e.jsx(cs,{size:14,className:"text-red-400"})})]})}),te&&e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-[24px] xl:p-[32px]",children:[e.jsxs("div",{className:"bg-white p-8 rounded-[16px] shadow-sm border border-[#e2e8f0] w-full max-w-3xl",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-[16px] font-bold text-[#1e293b] flex items-center gap-3",children:[e.jsx(dt,{size:20,className:"animate-spin text-[#a855f7]"}),"Generating Quiz in Background"]}),e.jsxs("span",{className:"text-[14px] font-extrabold text-[#9333ea]",children:[re,"%"]})]}),e.jsx("div",{className:"w-full bg-slate-100 h-2.5 rounded-full overflow-hidden mb-6",children:e.jsx(Re.div,{animate:{width:`${re}%`},transition:{duration:.35,ease:"easeOut"},className:"bg-gradient-to-r from-sky-400 via-indigo-500 to-purple-500 h-full rounded-full"})}),e.jsxs("div",{className:"text-[13px] text-[#64748b]",children:[e.jsxs("p",{className:"font-medium text-[#475569] mb-1",children:["Stage: ",e.jsx("span",{className:"font-bold text-[#1e293b] capitalize",children:$.replace(/_/g," ")})]}),e.jsx("p",{children:pe}),K&&e.jsxs("p",{className:"text-[11px] mt-3 opacity-60 font-mono",children:["Task ID: ",K]})]})]}),e.jsxs("p",{className:"mt-8 text-[14px] font-medium text-[#64748b] flex items-center gap-2 animate-pulse",children:[e.jsx(dt,{size:16,className:"animate-spin"})," Generating quiz... Please wait."]})]}),!te&&p!=="results"&&e.jsx("div",{className:"w-full px-[24px] xl:px-[32px] mb-8",children:e.jsx("div",{className:"flex items-center justify-between bg-white/80 backdrop-blur-[12px] rounded-2xl border border-white shadow-[0_4px_16px_rgba(0,0,0,0.03)] p-1.5",children:[{id:"setup",label:"Setup"},{id:"topics",label:"Topics"},{id:"style",label:"Question Style"},{id:"preview",label:"Preview"}].map((x,D)=>{const ge=["setup","topics","style","preview"].indexOf(p),Oe=ge>D,We=ge===D;return e.jsxs("div",{className:`flex-1 flex items-center justify-center gap-2 py-3 px-4 rounded-xl transition-all duration-500 ${We?"bg-purple-50/80 shadow-[0_1px_3px_rgba(168,85,247,0.1)]":Oe?"bg-transparent":"bg-transparent opacity-60"}`,children:[e.jsx("div",{className:`w-6 h-6 rounded-full flex items-center justify-center text-[12px] font-bold shrink-0 ${We?"bg-gradient-to-br from-[#a855f7] to-[#9333ea] text-white shadow-md":Oe?"bg-emerald-500 text-white shadow-sm":"bg-slate-100 text-[#64748b]"}`,children:Oe?e.jsx(Mt,{size:13,strokeWidth:3}):D+1}),e.jsx("span",{className:`text-[13px] font-bold whitespace-nowrap ${We?"text-[#9333ea]":Oe?"text-[#1e293b]":"text-[#64748b]"}`,children:x.label})]},x.id)})})}),p==="setup"&&!te&&e.jsxs("div",{className:"w-full px-[24px] xl:px-[32px] flex-1 space-y-[24px] pb-8",children:[e.jsxs("div",{className:"bg-gradient-to-r from-purple-50/80 to-indigo-50/80 backdrop-blur-sm border border-purple-100/50 rounded-[16px] p-5 flex items-start gap-4 shadow-sm hover:shadow-md transition-shadow duration-300",children:[e.jsx("div",{className:"bg-white p-2 rounded-full shadow-sm shrink-0",children:e.jsx(ga,{size:18,className:"text-[#9333ea]"})}),e.jsxs("p",{className:"text-[13px] text-[#475569] leading-relaxed pt-0.5",children:["This quiz maker generates ",e.jsx("span",{className:"font-bold text-[#9333ea]",children:"supplemental assessments"})," to support classroom instruction. Questions follow Bloom's Taxonomy for comprehensive skill evaluation. Generation limit: up to ",xa," questions and ",pa," topics per quiz."]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[20px] border border-white shadow-[0_4px_16px_rgba(0,0,0,0.03)] overflow-hidden hover:shadow-[0_8px_24px_rgba(0,0,0,0.06)] transition-all duration-300",children:[e.jsx("div",{className:"p-5 border-b border-[#f1f5f9] bg-white/50",children:e.jsx("h3",{className:"text-[11px] font-bold text-[#64748b] uppercase tracking-wider",children:"Basic Settings"})}),e.jsxs("div",{className:"p-8 flex flex-col md:flex-row gap-8",children:[e.jsxs("div",{className:"flex-1 group",children:[e.jsx("label",{htmlFor:"quiz-grade-level",className:"text-[13px] font-bold text-[#1e293b] mb-2 block group-hover:text-[#a855f7] transition-colors",children:"Grade level"}),e.jsxs("div",{className:"relative",children:[e.jsx("select",{id:"quiz-grade-level",value:C,onChange:x=>z(Sr(x.target.value)),className:"appearance-none w-full bg-white border border-[#e2e8f0] hover:border-[#cbd5e1] text-[#475569] text-[14px] font-medium rounded-xl px-4 py-3.5 outline-none focus:border-[#a855f7] focus:ring-4 focus:ring-[#a855f7]/10 cursor-pointer transition-all duration-200 shadow-sm",children:Fm.map(x=>e.jsx("option",{value:x,children:x},x))}),e.jsx(Tt,{size:18,className:"text-[#64748b] absolute right-4 top-1/2 -translate-y-1/2 pointer-events-none"})]})]}),e.jsxs("div",{className:"flex-1 group",children:[e.jsx("label",{htmlFor:"quiz-num-questions",className:"text-[13px] font-bold text-[#1e293b] mb-2 block group-hover:text-[#a855f7] transition-colors",children:"Number of questions"}),e.jsxs("div",{className:"flex items-center bg-white border border-[#e2e8f0] rounded-xl overflow-hidden focus-within:border-[#a855f7] focus-within:ring-4 focus-within:ring-[#a855f7]/10 transition-all duration-200 h-[50px] shadow-sm hover:border-[#cbd5e1]",children:[e.jsx("button",{onClick:()=>U(Math.max(1,I-1)),className:"w-14 h-full flex items-center justify-center text-[#64748b] bg-slate-50 hover:bg-slate-100 hover:text-[#1e293b] transition-colors border-r border-[#e2e8f0] active:bg-slate-200",children:e.jsx(Tn,{size:16})}),e.jsx("input",{id:"quiz-num-questions",type:"number",min:1,max:xa,value:I,onChange:x=>U(Math.min(xa,Math.max(1,parseInt(x.target.value)||1))),className:"flex-1 text-center font-bold text-[16px] text-[#1e293b] border-none outline-none focus:ring-0 w-full h-full p-0"}),e.jsx("button",{onClick:()=>U(Math.min(xa,I+1)),className:"w-14 h-full flex items-center justify-center text-[#64748b] bg-slate-50 hover:bg-slate-100 hover:text-[#1e293b] transition-colors border-l border-[#e2e8f0] active:bg-slate-200",children:e.jsx(Js,{size:16})})]})]})]})]})]}),p==="topics"&&!te&&e.jsxs("div",{className:"w-full px-[24px] xl:px-[32px] flex-1 space-y-[24px] pb-8",children:[e.jsxs("div",{className:"flex items-end justify-between mb-2",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-[20px] font-bold text-[#1e293b] mb-1",children:"Select topics"}),e.jsxs("p",{className:"text-[13px] text-[#64748b]",children:["Choose up to ",pa," topics across all strands"]})]}),e.jsxs("div",{className:"bg-purple-50 border border-purple-100 px-3 py-1.5 rounded-full flex items-center gap-2 shadow-sm",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-[#a855f7] animate-pulse"}),e.jsxs("span",{className:"text-[12px] font-bold text-[#a855f7]",children:[v.filter(x=>!w.includes(x)).length," of ",pa," selected"]})]})]}),q?e.jsxs("div",{className:"flex items-center justify-center py-10 text-sm text-[#5a6578]",children:[e.jsx(dt,{size:24,className:"animate-spin text-[#9b51e0] mr-2"})," Loading topics..."]}):e.jsx("div",{className:"space-y-3",children:Object.entries(_e).map(([x,D])=>{const O=D.filter(Oe=>v.includes(Oe)&&!w.includes(Oe)).length,ge=ss===x;return e.jsxs("div",{className:"border border-[#dde3eb] rounded-xl bg-white overflow-hidden shadow-sm",children:[e.jsxs("button",{onClick:()=>P(ge?null:x),className:"w-full flex items-center justify-between p-4 hover:bg-[#f7f9fc] transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-1 h-6 bg-[#9b51e0] rounded-full"}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"font-bold text-[#0a1628] text-sm",children:x}),e.jsxs("p",{className:"text-xs text-slate-500",children:[D.length," topics"]})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"bg-purple-100 text-[#9b51e0] px-2.5 py-0.5 rounded-full text-xs font-semibold",children:[O," selected"]}),ge?e.jsx(wa,{size:18,className:"text-slate-400"}):e.jsx(Tt,{size:18,className:"text-slate-400"})]})]}),e.jsx(Et,{children:ge&&e.jsx(Re.div,{initial:{height:0},animate:{height:"auto"},exit:{height:0},className:"overflow-hidden border-t border-[#edf1f7]",children:e.jsx("div",{className:"py-2",children:D.map((Oe,We)=>{const Pt=v.includes(Oe),Qs=w.includes(Oe),it=Pt&&!Qs;let Xt="Core";return We%3===0&&(Xt="Foundation"),We%3===2&&(Xt="Advanced"),e.jsxs("div",{className:"flex items-center justify-between px-6 py-3 hover:bg-[#f7f9fc]",children:[e.jsxs("label",{className:"flex items-center gap-3 cursor-pointer flex-1",children:[e.jsx("div",{className:`w-5 h-5 rounded flex items-center justify-center transition-colors ${it?"bg-[#9b51e0] border-[#9b51e0]":"border-2 border-[#dde3eb] bg-white"}`,children:it&&e.jsx(Mt,{size:14,className:"text-white"})}),e.jsx("input",{type:"checkbox",className:"hidden",checked:it,onChange:()=>Pe(Oe)}),e.jsx("span",{className:`text-sm font-semibold ${it?"text-[#0a1628]":"text-[#5a6578]"}`,children:Oe})]}),e.jsx("span",{className:`border px-3 py-1 rounded-full text-[10px] uppercase font-bold tracking-wider ${Xt==="Advanced"?"bg-white text-slate-400 border-[#dde3eb]":"bg-purple-50 text-[#9b51e0] border-purple-100"}`,children:Xt})]},Oe)})})})})]},x)})})]}),p==="style"&&!te&&e.jsxs("div",{className:"w-full px-[24px] xl:px-[32px] flex-1 space-y-[24px] pb-8",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[20px] border border-[#e2e8f0] shadow-sm overflow-hidden hover:shadow-[0_8px_24px_rgba(0,0,0,0.04)] transition-shadow duration-300",children:[e.jsx("div",{className:"p-5 border-b border-[#f1f5f9] bg-white/50",children:e.jsx("h3",{className:"text-[11px] font-bold text-[#64748b] uppercase tracking-wider",children:"Question Types"})}),e.jsx("div",{className:"p-4 grid grid-cols-2 sm:grid-cols-5 gap-3",children:Object.entries(Fa).map(([x,D])=>{const O=B.includes(x);return e.jsxs("button",{onClick:()=>da(x),className:`border-2 rounded-[16px] p-4 flex flex-col items-center justify-center text-center cursor-pointer transition-all duration-300 relative overflow-hidden group hover:-translate-y-1 ${O?"border-[#a855f7] bg-gradient-to-b from-purple-50/80 to-white/80 shadow-[0_4px_12px_rgba(168,85,247,0.12)]":"border-slate-100 bg-slate-50/50 shadow-sm hover:shadow-md hover:border-purple-200"}`,children:[O&&e.jsx("div",{className:"absolute top-2 right-2 w-5 h-5 bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-full flex items-center justify-center shadow-md",children:e.jsx(Mt,{size:11,className:"text-white"})}),e.jsx("div",{className:`w-12 h-12 rounded-full flex items-center justify-center mb-3 group-hover:scale-110 transition-transform duration-300 ${O?"bg-white border border-purple-200 shadow-md":"bg-white border border-slate-200 shadow-sm group-hover:shadow-md"}`,children:e.jsx("span",{className:O?"text-[#a855f7]":"text-slate-500",children:D.icon})}),e.jsx("span",{className:`font-bold text-[12px] leading-tight ${O?"text-[#9333ea]":"text-slate-700"}`,children:D.label})]},x)})})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[20px] border border-[#e2e8f0] shadow-sm overflow-hidden hover:shadow-[0_8px_24px_rgba(0,0,0,0.04)] transition-shadow duration-300",children:[e.jsx("div",{className:"p-5 border-b border-[#f1f5f9] bg-white/50",children:e.jsx("h3",{className:"text-[11px] font-bold text-[#64748b] uppercase tracking-wider",children:"Bloom's Taxonomy Levels"})}),e.jsx("div",{className:"p-6 flex flex-wrap gap-4",children:Object.entries(jo).map(([x,D])=>{const O=F.includes(x);return e.jsx("button",{onClick:()=>ma(x),className:`px-6 py-2.5 rounded-full border-2 font-bold text-[13px] transition-all duration-200 hover:-translate-y-0.5 capitalize ${O?"border-[#a855f7] text-[#9333ea] bg-purple-50/80 shadow-[0_2px_8px_rgba(168,85,247,0.15)]":"border-slate-200 text-[#64748b] bg-white shadow-sm hover:border-slate-300 hover:bg-slate-50"}`,children:x},x)})})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[20px] border border-[#e2e8f0] shadow-sm overflow-hidden hover:shadow-[0_8px_24px_rgba(0,0,0,0.04)] transition-shadow duration-300",children:[e.jsx("div",{className:"p-5 border-b border-[#f1f5f9] bg-white/50",children:e.jsx("h3",{className:"text-[11px] font-bold text-[#64748b] uppercase tracking-wider",children:"Difficulty Distribution"})}),e.jsx("div",{className:"p-8 space-y-8",children:Object.entries(ne).map(([x,D])=>{const O={easy:"bg-emerald-400",medium:"bg-amber-400",hard:"bg-rose-400"},ge={easy:"text-emerald-600",medium:"text-amber-500",hard:"text-rose-500"},Oe={easy:"group-hover:border-emerald-200",medium:"group-hover:border-amber-200",hard:"group-hover:border-rose-200"};return e.jsxs("div",{className:"flex items-center gap-6 group",children:[e.jsx("span",{className:`w-16 text-[13px] font-bold text-[#475569] capitalize group-hover:${ge[x]} transition-colors`,children:x}),e.jsx("div",{className:"flex-1 bg-slate-100 h-3 rounded-full overflow-hidden shadow-inner",children:e.jsx(Re.div,{animate:{width:`${D}%`},className:`h-full rounded-full transition-all duration-500 ease-out ${O[x]}`})}),e.jsxs("div",{className:`flex items-center bg-white border border-[#e2e8f0] rounded-xl shadow-sm overflow-hidden p-0.5 w-28 h-10 transition-colors ${Oe[x]}`,children:[e.jsx("button",{onClick:()=>It(x,-5),className:`w-8 h-full flex items-center justify-center text-[#64748b] hover:bg-slate-50 hover:${ge[x]} rounded-lg transition-colors`,children:e.jsx(Tn,{className:"w-3.5 h-3.5"})}),e.jsx("input",{type:"text",value:`${D}%`,readOnly:!0,className:"flex-1 text-center font-bold text-[14px] text-[#1e293b] border-none outline-none focus:ring-0 w-full p-0 pointer-events-none"}),e.jsx("button",{onClick:()=>It(x,5),className:`w-8 h-full flex items-center justify-center text-[#64748b] hover:bg-slate-50 hover:${ge[x]} rounded-lg transition-colors`,children:e.jsx(Js,{className:"w-3.5 h-3.5"})})]})]},x)})})]})]}),p==="preview"&&!te&&!se&&e.jsx("div",{className:"w-full px-[24px] xl:px-[32px] flex-1 space-y-[24px] pb-8",children:e.jsxs("div",{className:"bg-white/80 backdrop-blur-md rounded-[20px] border border-[#e2e8f0] shadow-[0_8px_24px_rgba(0,0,0,0.04)] overflow-hidden p-8",children:[e.jsxs("h3",{className:"text-[12px] font-bold text-[#64748b] uppercase tracking-wider mb-6 flex items-center gap-2",children:[e.jsx(Ds,{size:16,className:"text-[#a855f7]"})," Quiz Summary"]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-6",children:[{label:"Questions",value:I},{label:"Topics",value:v.filter(x=>!w.includes(x)).length},{label:"Level",value:C.replace("Grade ","Gr. ")}].map(x=>e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-purple-50 to-indigo-50 rounded-[16px] p-6 text-center border border-purple-100/50 shadow-sm flex flex-col items-center justify-center group hover:-translate-y-1 transition-transform",children:[e.jsx("div",{className:"absolute -right-4 -top-4 w-16 h-16 bg-purple-200/30 rounded-full group-hover:scale-150 transition-transform duration-500"}),e.jsx("span",{className:"text-[36px] font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-[#a855f7] to-[#9333ea] leading-none mb-1 relative z-10",children:x.value}),e.jsx("span",{className:"text-[13px] font-bold text-[#64748b] relative z-10",children:x.label})]},x.label))}),e.jsxs("div",{className:"bg-slate-50/80 rounded-[14px] p-5 border border-slate-200/60 text-[#475569] text-[14px] leading-relaxed flex gap-4 items-start shadow-inner",children:[e.jsx(ga,{size:18,className:"text-[#94a3b8] shrink-0 mt-0.5"}),e.jsxs("p",{children:[B.map(x=>Fa[x]?.label).join(" and ")," questions across"," ",e.jsxs("span",{className:"font-bold text-[#1e293b]",children:[v.filter(x=>!w.includes(x)).length," topics"]})," ","— aligned to ",e.jsx("span",{className:"font-semibold",children:F.map(x=>jo[x]?.label).join(", ")})," levels of Bloom's Taxonomy."," ",e.jsxs("span",{className:"font-semibold text-emerald-600",children:["Easy ",ne.easy,"%"]})," • ",e.jsxs("span",{className:"font-semibold text-amber-500",children:["Medium ",ne.medium,"%"]})," • ",e.jsxs("span",{className:"font-semibold text-rose-500",children:["Hard ",ne.hard,"%"]}),"."]})]})]})}),p==="results"&&se&&e.jsxs("div",{className:"w-full px-[24px] xl:px-[32px] space-y-[24px] pb-8",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-md rounded-[20px] border border-[#e2e8f0] shadow-[0_8px_24px_rgba(0,0,0,0.04)] p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-lg font-bold font-display text-[#0a1628]",children:"Quiz Generated"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:cl,className:"flex items-center gap-1.5 px-3 py-1.5 bg-white border border-[#dde3eb] rounded-lg text-xs font-medium text-[#5a6578] hover:bg-[#edf1f7] transition-colors",children:[Rt?e.jsx(Mt,{size:14,className:"text-green-500"}):e.jsx(zr,{size:14}),Rt?"Copied!":"Copy All"]}),e.jsxs("button",{onClick:dl,className:"flex items-center gap-1.5 px-3 py-1.5 bg-white border border-[#dde3eb] rounded-lg text-xs font-medium text-[#5a6578] hover:bg-[#edf1f7] transition-colors",children:[e.jsx(Kl,{size:14}),"Export JSON"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 md:gap-6",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] text-white shadow-[0_8px_16px_rgba(168,85,247,0.25)] rounded-[20px] p-6 text-center flex flex-col items-center justify-center group hover:-translate-y-1 transition-transform",children:[e.jsx("div",{className:"absolute -right-4 -top-4 w-20 h-20 bg-white/10 rounded-full group-hover:scale-150 transition-transform duration-500"}),e.jsx(gs,{size:22,className:"text-white/80 mb-2 relative z-10"}),e.jsx("span",{className:"text-[32px] font-extrabold leading-none mb-1 relative z-10 drop-shadow-sm",children:se.questions.length}),e.jsx("span",{className:"text-[12px] font-bold text-white/90 uppercase tracking-widest relative z-10",children:"Questions"})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f43f5e] to-[#e11d48] text-white shadow-[0_8px_16px_rgba(244,63,94,0.25)] rounded-[20px] p-6 text-center flex flex-col items-center justify-center group hover:-translate-y-1 transition-transform",children:[e.jsx("div",{className:"absolute -right-4 -top-4 w-20 h-20 bg-white/10 rounded-full group-hover:scale-150 transition-transform duration-500"}),e.jsx(vs,{size:22,className:"text-white/80 mb-2 relative z-10"}),e.jsx("span",{className:"text-[32px] font-extrabold leading-none mb-1 relative z-10 drop-shadow-sm",children:se.totalPoints}),e.jsx("span",{className:"text-[12px] font-bold text-white/90 uppercase tracking-widest relative z-10",children:"Total Points"})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f59e0b] to-[#d97706] text-white shadow-[0_8px_16px_rgba(245,158,11,0.25)] rounded-[20px] p-6 text-center flex flex-col items-center justify-center group hover:-translate-y-1 transition-transform",children:[e.jsx("div",{className:"absolute -right-4 -top-4 w-20 h-20 bg-white/10 rounded-full group-hover:scale-150 transition-transform duration-500"}),e.jsx(Gt,{size:22,className:"text-white/80 mb-2 relative z-10"}),e.jsx("span",{className:"text-[32px] font-extrabold leading-none mb-1 relative z-10 drop-shadow-sm",children:Object.keys(se.metadata.topicsCovered).length}),e.jsx("span",{className:"text-[12px] font-bold text-white/90 uppercase tracking-widest relative z-10",children:"Topics"})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#10b981] to-[#059669] text-white shadow-[0_8px_16px_rgba(16,185,129,0.25)] rounded-[20px] p-6 text-center flex flex-col items-center justify-center group hover:-translate-y-1 transition-transform",children:[e.jsx("div",{className:"absolute -right-4 -top-4 w-20 h-20 bg-white/10 rounded-full group-hover:scale-150 transition-transform duration-500"}),e.jsx(Ka,{size:22,className:"text-white/80 mb-2 relative z-10"}),e.jsx("span",{className:"text-[32px] font-extrabold leading-none mb-1 relative z-10 drop-shadow-sm",children:Object.keys(se.metadata.bloomTaxonomyDistribution).length}),e.jsx("span",{className:"text-[12px] font-bold text-white/90 uppercase tracking-widest relative z-10",children:"Bloom Levels"})]})]}),(se.metadata.usedImportedTopics||(se.metadata.topicProvenance||[]).length>0)&&e.jsxs("div",{className:"mt-4 bg-white rounded-lg p-3 border border-[#dde3eb]",children:[e.jsx("p",{className:"text-xs font-semibold text-[#5a6578] mb-2",children:"Imported Topic Provenance"}),e.jsxs("p",{className:"text-xs text-[#5a6578] mb-2",children:["Imported topics used: ",se.metadata.usedImportedTopics?"Yes":"No"," • ","Materials: ",se.metadata.importedMaterialsCount??0," • ","Topics: ",se.metadata.importedTopicCount??0]}),(se.metadata.topicProvenance||[]).slice(0,5).map((x,D)=>e.jsxs("div",{className:"text-xs text-[#5a6578]",children:[x.title||"Untitled topic",x.sourceFile?` • ${x.sourceFile}`:""]},`${x.topicId||x.title||"topic"}_${D}`)),(Bt.length>0||Ee.length>0)&&e.jsxs("div",{className:"mt-3 grid grid-cols-1 md:grid-cols-2 gap-2",children:[e.jsxs("label",{className:"text-xs text-[#5a6578] flex flex-col gap-1",children:[e.jsx("span",{className:"font-semibold",children:"Filter by Source File"}),e.jsxs("select",{value:Ot,onChange:x=>Wt(x.target.value),className:"bg-white border border-[#dde3eb] rounded-md px-2 py-1.5 text-xs",children:[e.jsx("option",{value:"all",children:"All sources"}),Bt.map(x=>e.jsx("option",{value:x,children:x},x))]})]}),e.jsxs("label",{className:"text-xs text-[#5a6578] flex flex-col gap-1",children:[e.jsx("span",{className:"font-semibold",children:"Filter by Material ID"}),e.jsxs("select",{value:qt,onChange:x=>Rs(x.target.value),className:"bg-white border border-[#dde3eb] rounded-md px-2 py-1.5 text-xs",children:[e.jsx("option",{value:"all",children:"All materials"}),Ee.map(x=>e.jsx("option",{value:x,children:x},x))]})]})]}),e.jsxs("p",{className:"text-[11px] text-[#5a6578] mt-2",children:["Showing ",Gs.length," of ",se.questions.length," questions after provenance filters."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8 mb-10",children:[e.jsxs("div",{className:"bg-white border border-[#e2e8f0] rounded-[16px] p-6 shadow-sm border-t-[4px] border-t-[#10b981] hover:shadow-md transition-shadow",children:[e.jsxs("h4",{className:"text-[12px] font-bold text-[#64748b] uppercase tracking-wider mb-5 flex items-center gap-2",children:[e.jsx(Ds,{size:14})," Difficulty"]}),e.jsx("div",{className:"space-y-3 text-[14px] font-medium text-[#475569]",children:Object.entries(se.metadata.difficultyBreakdown).map(([x,D])=>e.jsxs("div",{className:"flex justify-between items-center bg-slate-50 px-3 py-2 rounded-lg",children:[e.jsx("span",{className:`font-bold capitalize ${Pm[x]||"text-[#475569]"}`,children:x}),e.jsx("span",{className:"font-bold text-[#1e293b] bg-white px-2 py-0.5 rounded shadow-sm border border-slate-100",children:D})]},x))})]}),e.jsxs("div",{className:"bg-white border border-[#e2e8f0] rounded-[16px] p-6 shadow-sm border-t-[4px] border-t-[#a855f7] hover:shadow-md transition-shadow",children:[e.jsxs("h4",{className:"text-[12px] font-bold text-[#64748b] uppercase tracking-wider mb-5 flex items-center gap-2",children:[e.jsx(Mr,{size:14})," Bloom's Taxonomy"]}),e.jsx("div",{className:"space-y-3 text-[14px] font-medium text-[#475569]",children:Object.entries(se.metadata.bloomTaxonomyDistribution).map(([x,D])=>e.jsxs("div",{className:"flex justify-between items-center bg-slate-50 px-3 py-2 rounded-lg",children:[e.jsx("span",{className:"text-[#1e293b] font-semibold capitalize",children:x}),e.jsx("span",{className:"font-bold text-[#1e293b] bg-white px-2 py-0.5 rounded shadow-sm border border-slate-100",children:D})]},x))})]}),e.jsxs("div",{className:"bg-white border border-[#e2e8f0] rounded-[16px] p-6 shadow-sm border-t-[4px] border-t-[#0ea5e9] hover:shadow-md transition-shadow",children:[e.jsxs("h4",{className:"text-[12px] font-bold text-[#64748b] uppercase tracking-wider mb-5 flex items-center gap-2",children:[e.jsx(Ka,{size:14})," Question Types"]}),e.jsx("div",{className:"space-y-3 text-[14px] font-medium text-[#475569]",children:Object.entries(se.metadata.questionTypeBreakdown).map(([x,D])=>e.jsxs("div",{className:"flex justify-between items-center bg-slate-50 px-3 py-2 rounded-lg",children:[e.jsx("span",{className:"text-[#1e293b] font-semibold",children:Fa[x]?.label||x}),e.jsx("span",{className:"font-bold text-[#1e293b] bg-white px-2 py-0.5 rounded shadow-sm border border-slate-100",children:D})]},x))})]})]}),e.jsxs("div",{className:"bg-gradient-to-r from-purple-50 to-indigo-50/50 border border-purple-100 rounded-[16px] p-6 mb-10 flex items-start gap-4 shadow-sm relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-0 w-1.5 h-full bg-[#a855f7]"}),e.jsx("div",{className:"bg-white p-2 rounded-full shadow-sm shrink-0",children:e.jsx(ga,{size:18,className:"text-[#9333ea]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[14px] font-bold text-[#9333ea] mb-3",children:se.metadata.supplementalPurpose||"This quiz is designed to supplement classroom instruction, not replace teacher-led learning."}),se.metadata.recommendedTeacherActions&&se.metadata.recommendedTeacherActions.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-[13px] font-bold text-[#1e293b] mb-2",children:"Recommended Actions:"}),e.jsx("ul",{className:"list-disc pl-5 text-[13px] font-medium text-[#475569] space-y-1.5",children:se.metadata.recommendedTeacherActions.map((x,D)=>e.jsx("li",{children:x},D))})]})]})]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("h3",{className:"text-[18px] font-bold text-[#1e293b] flex items-center gap-2",children:[e.jsx(li,{size:20,className:"text-[#a855f7]"})," Review Questions"]}),e.jsx("div",{className:"space-y-4",children:Gs.length>0?Gs.map((x,D)=>fl(x,D)):e.jsx("div",{className:"border border-[#dde3eb] rounded-xl p-4 bg-white text-sm text-[#5a6578]",children:"No questions match the selected provenance filters. Clear one or both filters to view all questions."})})]})]})]})]}),j==="create"&&e.jsx("div",{className:"sticky bottom-0 mt-auto w-full bg-white/90 backdrop-blur-[12px] border-t border-[#e2e8f0] z-30 shadow-[0_-4px_12px_rgba(0,0,0,0.03)]",children:e.jsxs("div",{className:"w-full px-6 xl:px-8 py-4 flex items-center justify-between",children:[e.jsxs("div",{children:[p==="topics"&&!te&&e.jsx("button",{onClick:()=>{y([]),A([])},className:"text-[13px] font-semibold text-[#a855f7] hover:underline",children:"Clear all"}),(p==="style"||p==="preview")&&!te&&e.jsxs("button",{onClick:()=>N(p==="preview"?"style":"topics"),className:"bg-white hover:bg-slate-50 border border-slate-200 text-[#475569] text-[14px] font-semibold rounded-full px-6 py-2.5 shadow-sm transition-transform hover:scale-[1.02] flex items-center gap-2",children:[e.jsx(Ss,{size:16})," Back"]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[p==="setup"&&!te&&e.jsxs("button",{onClick:()=>N("topics"),className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-semibold rounded-full px-8 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-transform hover:scale-[1.02] flex items-center gap-2",children:["Next: Topics ",e.jsx(ys,{size:16})]}),p==="topics"&&!te&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>N("setup"),className:"bg-white hover:bg-slate-50 border border-slate-200 text-[#475569] text-[14px] font-semibold rounded-full px-6 py-2.5 shadow-sm transition-transform hover:scale-[1.02] flex items-center gap-2",children:[e.jsx(Ss,{size:16})," Back"]}),e.jsxs("button",{onClick:()=>N("style"),className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-semibold rounded-full px-6 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-transform hover:scale-[1.02] flex items-center gap-2",children:["Next: Question Style ",e.jsx(ys,{size:16})]})]}),p==="style"&&!te&&e.jsxs("button",{onClick:()=>N("preview"),className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-semibold rounded-full px-8 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-transform hover:scale-[1.02] flex items-center gap-2",children:["Next: Preview ",e.jsx(ys,{size:16})]}),p==="preview"&&!te&&!se&&e.jsxs("button",{onClick:ll,className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-bold rounded-full px-8 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-all hover:scale-[1.02] flex items-center gap-2",children:[e.jsx(Mt,{size:16})," Generate Quiz"]}),te&&e.jsxs("div",{className:"flex items-center gap-3 text-slate-500 font-medium text-sm",children:[e.jsx(dt,{size:16,className:"animate-spin"})," Generating quiz... Please wait."]}),p==="results"&&(ca?e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>{S("bank"),L(null)},className:"bg-white hover:bg-slate-50 border border-slate-200 text-[#475569] text-[14px] font-semibold rounded-full px-6 py-2.5 shadow-sm transition-transform hover:scale-[1.02]",children:"Back to Quiz Bank"}),e.jsxs("button",{onClick:()=>hr(ca),className:"bg-white border border-[#a855f7] text-[#9333ea] hover:bg-purple-50 text-[14px] font-bold rounded-full px-8 py-2.5 shadow-sm transition-transform hover:scale-[1.02] flex items-center gap-2",children:[e.jsx(La,{size:16})," Assign"]}),e.jsx("button",{onClick:xn,className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-bold rounded-full px-10 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-transform hover:scale-[1.02]",children:"Done"})]}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>{N("setup"),fe(null),Fe(null),_(null),L(null)},className:"bg-white hover:bg-slate-50 border border-slate-200 text-[#475569] text-[14px] font-semibold rounded-full px-6 py-2.5 shadow-sm transition-transform hover:scale-[1.02]",children:"Create Another"}),_t?e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:ul,disabled:ee,className:"bg-white border border-[#a855f7] text-[#9333ea] hover:bg-purple-50 text-[14px] font-bold rounded-full px-8 py-2.5 shadow-sm transition-transform hover:scale-[1.02] flex items-center gap-2",children:[ee?e.jsx(dt,{size:16,className:"animate-spin"}):e.jsx(Ta,{size:16})," Publish"]}),e.jsxs("button",{onClick:()=>hr(),className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-bold rounded-full px-8 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-transform hover:scale-[1.02] flex items-center gap-2",children:[e.jsx(La,{size:16})," Assign to Class"]})]}):e.jsxs("button",{onClick:ml,disabled:st,className:"bg-emerald-600 hover:bg-emerald-700 text-white px-8 py-2.5 rounded-full font-bold shadow-lg shadow-emerald-500/30 hover:-translate-y-1 transition-all flex items-center gap-2 text-[14px]",children:[st?e.jsx(dt,{size:16,className:"animate-spin"}):e.jsx(ni,{size:16})," Save to Library"]}),e.jsx("button",{onClick:xn,className:"bg-[#a855f7] hover:bg-[#9333ea] text-white text-[14px] font-bold rounded-full px-10 py-2.5 shadow-[0_4px_12px_rgba(168,85,247,0.3)] transition-transform hover:scale-[1.02]",children:"Done"})]}))]})]})}),e.jsx(Dm,{isOpen:vt,onClose:()=>xs(!1)}),e.jsx(Et,{children:Ne&&e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-black/40 z-[60] flex items-center justify-center p-4",onClick:()=>Qe(!1),children:e.jsxs(Re.div,{initial:{scale:.95,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.95,opacity:0},className:"bg-[#f7f9fc] rounded-2xl shadow-2xl w-full max-w-md max-h-[70vh] flex flex-col overflow-hidden border border-[#dde3eb]",onClick:x=>x.stopPropagation(),children:[e.jsxs("div",{className:"px-5 py-4 border-b border-[#dde3eb] flex items-center justify-between",children:[e.jsxs("h3",{className:"text-base font-bold font-display text-[#0a1628] flex items-center gap-2",children:[e.jsx(os,{size:18,className:"text-sky-600"}),"Assign to Student"]}),e.jsx("button",{onClick:()=>Qe(!1),className:"p-1 hover:bg-[#edf1f7] rounded-lg transition-colors",children:e.jsx(cs,{size:16,className:"text-slate-500"})})]}),e.jsx("div",{className:"px-5 py-3 border-b border-[#dde3eb]",children:e.jsxs("div",{className:"flex items-center gap-2 bg-[#edf1f7] rounded-xl px-3 py-2",children:[e.jsx(Os,{size:14,className:"text-slate-500"}),e.jsx("input",{type:"text",placeholder:"Search students…",value:_s,onChange:x=>za(x.target.value),className:"flex-1 bg-transparent text-sm outline-none placeholder:text-slate-500"})]})}),e.jsx("div",{className:"flex-1 overflow-y-auto p-3 space-y-1",children:ps?e.jsx("div",{className:"flex items-center justify-center py-10",children:e.jsx(dt,{size:20,className:"animate-spin text-sky-500"})}):gn.length===0?e.jsx("p",{className:"text-center text-sm text-slate-500 py-10",children:"No students found"}):gn.map(x=>e.jsxs("button",{onClick:()=>ra(x.id),className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-xl text-left transition-colors ${Kt===x.id?"bg-sky-50 border border-sky-300":"hover:bg-[#edf1f7] border border-transparent"}`,children:[e.jsx("img",{src:x.avatar&&!x.avatar.includes("ui-avatars.com")?x.avatar:Ga(x.gender),alt:x.name,className:"w-8 h-8 rounded-lg object-cover"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-semibold text-[#0a1628] truncate",children:x.name}),e.jsx("p",{className:"text-xs text-slate-500 truncate",children:x.email})]}),Kt===x.id&&e.jsx(Mt,{size:16,className:"text-sky-600 flex-shrink-0"})]},x.id))}),e.jsxs("div",{className:"px-5 py-3 border-t border-[#dde3eb] flex justify-end gap-2",children:[e.jsx("button",{onClick:()=>Qe(!1),className:"px-4 py-2 text-sm font-medium text-[#5a6578] hover:bg-[#edf1f7] rounded-xl transition-colors",children:"Cancel"}),e.jsxs("button",{onClick:xl,disabled:!Kt||je,className:`flex items-center gap-2 px-4 py-2 rounded-xl text-sm font-bold transition-all ${Kt&&!je?"bg-gradient-to-r from-sky-600 to-sky-500 text-white shadow-sm":"bg-[#dde3eb] text-slate-500 cursor-not-allowed"}`,children:[je?e.jsx(dt,{size:14,className:"animate-spin"}):e.jsx(La,{size:14}),"Assign"]})]})]})})})]});return d?e.jsx("div",{className:"w-full h-full flex flex-col overflow-hidden bg-white",children:wn}):wn},Hm=({onOpenNotifications:t,onOpenProfile:s,onOpenInsightModal:a,userPhoto:r,teacherName:o})=>{const[n,i]=m.useState([]),[l,c]=m.useState(!1),[d,u]=m.useState(!1),[f,h]=m.useState(""),[b,k]=m.useState(11),[j,S]=m.useState("general_mathematics"),[p,N]=m.useState([]),[C,z]=m.useState(!1),[I,U]=m.useState(null),v=m.useCallback(async()=>{z(!0);try{const E=kt($t(Ve,"quizBattleQuestionBank"),Vr(50)),X=(await Dt(E)).docs.map(J=>{const ce=J.data();return{id:J.id,question:ce.question||"",choices:ce.choices||[],correct_answer:ce.correct_answer||"",explanation:ce.explanation||"",topic:ce.topic||"",difficulty:ce.difficulty||"medium",grade_level:ce.grade_level||11}});N(X)}catch(E){console.warn("[QuestionBankPanel] Failed to load questions:",E)}finally{z(!1)}},[]);m.useEffect(()=>{v()},[v]);const y=m.useCallback(async()=>{c(!0);try{const E=await yn("/api/quiz-battle/bank-status");i(E.pdfs)}catch(E){const F=E instanceof qa?E.message:"Failed to load bank status";me.error(F)}finally{c(!1)}},[]);m.useEffect(()=>{y()},[y]);const w=async()=>{if(!f.trim()){me.error("Please enter a storage path");return}u(!0);try{await yn("/api/quiz-battle/ingest-pdf",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({storage_path:f.trim(),grade_level:b,topic:j.trim(),force_reingest:!1})}),me.success("PDF ingestion completed"),await y(),h("")}catch(E){const F=E instanceof qa?E.message:"Ingestion failed";me.error(F)}finally{u(!1)}},A=n.reduce((E,F)=>E+F.question_count,0),B=n.filter(E=>E.processed).length;return e.jsxs("div",{className:"w-full h-full flex flex-col overflow-y-auto bg-gradient-to-br from-[#f8fafc] to-[#f1f5f9]",children:[e.jsx("div",{className:"w-full px-[24px] xl:px-[32px] pt-[12px] pb-2"}),e.jsxs("div",{className:"w-full px-[24px] xl:px-[32px] pb-[32px] space-y-[32px]",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#3b82f6] to-[#2563eb] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(59,130,246,0.2)] hover:shadow-[0_8px_24px_rgba(59,130,246,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Total PDFs"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(gs,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:n.length})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(168,85,247,0.2)] hover:shadow-[0_8px_24px_rgba(168,85,247,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Total Questions"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Gt,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:A})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#10b981] to-[#059669] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(16,185,129,0.2)] hover:shadow-[0_8px_24px_rgba(16,185,129,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Processed"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(zs,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:B})]})]}),e.jsx("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] border border-white shadow-[0_8px_32px_rgba(0,0,0,0.04)] overflow-hidden",children:e.jsxs("div",{className:"p-[24px] sm:p-[32px]",children:[e.jsxs("h2",{className:"text-[20px] font-bold text-[#1e293b] mb-6 flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-[10px] bg-gradient-to-br from-[#a855f7] to-[#9333ea] flex items-center justify-center shadow-md shadow-purple-500/20",children:e.jsx(Rn,{className:"w-4 h-4 text-white"})}),"Ingest New PDF"]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-12 gap-6 items-end",children:[e.jsxs("div",{className:"md:col-span-6 group",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] mb-2 block group-hover:text-[#a855f7] transition-colors",children:"Firebase Storage Path"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none",children:e.jsx(gs,{className:"h-4 w-4 text-[#94a3b8] group-hover:text-[#a855f7] transition-colors"})}),e.jsx("input",{type:"text",placeholder:"quiz_pdfs/grade_11/gen_math_q1.pdf",value:f,onChange:E=>h(E.target.value),className:"w-full bg-slate-50 border border-slate-200 hover:border-[#cbd5e1] text-[#475569] text-[14px] font-medium rounded-xl pl-11 pr-4 py-3.5 outline-none focus:bg-white focus:border-[#a855f7] focus:ring-4 focus:ring-[#a855f7]/10 transition-all shadow-inner"})]})]}),e.jsxs("div",{className:"md:col-span-2 group",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] mb-2 block group-hover:text-[#a855f7] transition-colors",children:"Grade Level"}),e.jsx("input",{type:"number",placeholder:"11",min:7,max:12,value:b,onChange:E=>k(Number(E.target.value)),className:"w-full bg-slate-50 border border-slate-200 hover:border-[#cbd5e1] text-[#475569] text-[14px] font-medium rounded-xl px-4 py-3.5 outline-none focus:bg-white focus:border-[#a855f7] focus:ring-4 focus:ring-[#a855f7]/10 transition-all shadow-inner"})]}),e.jsxs("div",{className:"md:col-span-4 group",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] mb-2 block group-hover:text-[#a855f7] transition-colors",children:"Topic Slug"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none",children:e.jsx(Gt,{className:"h-4 w-4 text-[#94a3b8] group-hover:text-[#a855f7] transition-colors"})}),e.jsx("input",{type:"text",placeholder:"general_mathematics",value:j,onChange:E=>S(E.target.value),className:"w-full bg-slate-50 border border-slate-200 hover:border-[#cbd5e1] text-[#475569] text-[14px] font-medium rounded-xl pl-11 pr-4 py-3.5 outline-none focus:bg-white focus:border-[#a855f7] focus:ring-4 focus:ring-[#a855f7]/10 transition-all shadow-inner"})]})]})]}),e.jsx("div",{className:"mt-6 flex justify-end pt-6 border-t border-slate-100",children:e.jsxs("button",{onClick:w,disabled:d,className:"bg-gradient-to-r from-[#a855f7] to-[#9333ea] hover:from-[#9333ea] hover:to-[#7e22ce] text-white text-[14px] font-bold rounded-full px-8 py-3 shadow-[0_4px_16px_rgba(168,85,247,0.3)] transition-all hover:scale-[1.02] flex items-center gap-2 hover:shadow-[0_8px_24px_rgba(168,85,247,0.4)] disabled:opacity-50 disabled:hover:scale-100",children:[d?e.jsx(dt,{className:"w-4 h-4 animate-spin"}):e.jsx(Rn,{className:"w-4 h-4"}),"Ingest PDF"]})})]})}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] border border-white shadow-[0_8px_32px_rgba(0,0,0,0.04)] p-[24px] sm:p-[32px]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsx("h2",{className:"text-[20px] font-bold text-[#1e293b]",children:"Processing Status"}),e.jsx("button",{onClick:y,disabled:l,className:"w-9 h-9 rounded-full bg-white border border-slate-200 flex items-center justify-center text-[#64748b] hover:text-[#9333ea] hover:border-purple-200 shadow-sm transition-all hover:scale-105 active:scale-95 disabled:opacity-50",children:e.jsx(zs,{className:`w-4 h-4 ${l?"animate-spin":""}`})})]}),e.jsx("div",{className:"bg-white rounded-[16px] border border-[#f1f5f9] overflow-hidden shadow-[0_1px_4px_rgba(0,0,0,0.02)]",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#9956DE] border-b border-[#8b5cf6] shadow-md relative z-10",children:[e.jsx("th",{className:"h-12 px-6 text-[11px] font-bold text-white uppercase tracking-wider whitespace-nowrap",children:"Filename"}),e.jsx("th",{className:"h-12 px-6 text-[11px] font-bold text-white uppercase tracking-wider whitespace-nowrap",children:"Grade"}),e.jsx("th",{className:"h-12 px-6 text-[11px] font-bold text-white uppercase tracking-wider whitespace-nowrap",children:"Topic"}),e.jsx("th",{className:"h-12 px-6 text-[11px] font-bold text-white uppercase tracking-wider whitespace-nowrap text-center",children:"Questions"}),e.jsx("th",{className:"h-12 px-6 text-[11px] font-bold text-white uppercase tracking-wider whitespace-nowrap",children:"Status"}),e.jsx("th",{className:"h-12 px-6 text-[11px] font-bold text-white uppercase tracking-wider whitespace-nowrap",children:"Processed At"})]})}),e.jsxs("tbody",{className:"divide-y divide-[#f1f5f9] bg-white",children:[n.map(E=>e.jsxs("tr",{className:"hover:bg-slate-50/50 transition-colors group",children:[e.jsx("td",{className:"py-4 px-6",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-8 h-8 rounded-lg flex items-center justify-center shrink-0 ${E.processed?"bg-indigo-50 text-indigo-500":"bg-amber-50 text-amber-500"}`,children:e.jsx(gs,{className:"w-4 h-4"})}),e.jsx("span",{className:"text-[13px] font-bold text-[#1e293b] group-hover:text-purple-600 transition-colors line-clamp-1",children:E.filename})]})}),e.jsx("td",{className:"py-4 px-6 text-[13px] font-semibold text-[#475569]",children:E.grade_level}),e.jsx("td",{className:"py-4 px-6",children:e.jsx("span",{className:"text-[12px] font-medium bg-slate-100 text-slate-600 px-2.5 py-1 rounded-md line-clamp-1",children:E.topic})}),e.jsx("td",{className:"py-4 px-6 text-[13px] font-bold text-[#1e293b] text-center",children:E.question_count||"-"}),e.jsx("td",{className:"py-4 px-6",children:e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-3 py-1 text-[11px] font-bold rounded-full border shadow-sm ${E.processed?"bg-emerald-50 text-emerald-600 border-emerald-200/50":"bg-amber-50 text-amber-600 border-amber-200/50"}`,children:[E.processed?e.jsx(zs,{className:"w-3 h-3"}):e.jsx(dt,{className:"w-3 h-3 animate-spin"}),E.processed?"Completed":"Processing..."]})}),e.jsx("td",{className:"py-4 px-6 text-[13px] font-medium text-[#64748b]",children:E.timestamp?new Date(E.timestamp).toLocaleDateString():"-"})]},E.filename)),n.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"py-12 px-6 text-center",children:e.jsxs("div",{className:"flex flex-col items-center justify-center text-[#64748b]",children:[e.jsx("div",{className:"w-16 h-16 bg-slate-50 rounded-full flex items-center justify-center mb-4 border border-slate-100",children:e.jsx(gs,{className:"w-8 h-8 text-slate-300"})}),e.jsx("p",{className:"text-[14px] font-bold text-[#1e293b] mb-1",children:"No PDFs processed yet"}),e.jsx("p",{className:"text-[13px]",children:"Upload a PDF using the form above to get started."})]})})})]})]})})})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] border border-white shadow-[0_8px_32px_rgba(0,0,0,0.04)] p-[24px] sm:p-[32px]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("h2",{className:"text-[20px] font-bold text-[#1e293b] flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-[10px] bg-gradient-to-br from-[#3b82f6] to-[#2563eb] flex items-center justify-center shadow-md shadow-blue-500/20",children:e.jsx(Gt,{className:"w-4 h-4 text-white"})}),"Question Bank (",p.length,")"]}),e.jsx("button",{onClick:v,disabled:C,className:"w-9 h-9 rounded-full bg-white border border-slate-200 flex items-center justify-center text-[#64748b] hover:text-[#9333ea] hover:border-purple-200 shadow-sm transition-all hover:scale-105 active:scale-95 disabled:opacity-50",children:e.jsx(zs,{className:`w-4 h-4 ${C?"animate-spin":""}`})})]}),C?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(dt,{className:"w-6 h-6 animate-spin text-[#9956DE]"})}):p.length===0?e.jsxs("div",{className:"text-center py-12 text-[#64748b]",children:[e.jsx(Gt,{className:"w-10 h-10 mx-auto mb-3 text-slate-300"}),e.jsx("p",{className:"text-[14px] font-bold text-[#1e293b] mb-1",children:"No questions in the bank yet"}),e.jsx("p",{className:"text-[13px]",children:"Ingest a PDF above to populate the question bank."})]}):e.jsx("div",{className:"space-y-2 max-h-[500px] overflow-y-auto",children:p.map(E=>e.jsxs("div",{className:"border border-[#f1f5f9] rounded-xl p-4 hover:border-purple-200 transition-colors bg-white",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 cursor-pointer",onClick:()=>U(I===E.id?null:E.id),children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-[13px] font-medium text-[#1e293b] line-clamp-2",children:E.question}),e.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[e.jsxs("span",{className:"text-[11px] px-2 py-0.5 rounded-md bg-blue-50 text-blue-600 font-semibold",children:["Grade ",E.grade_level]}),e.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded-md bg-slate-100 text-slate-600 font-medium",children:E.topic}),e.jsx("span",{className:`text-[11px] px-2 py-0.5 rounded-md font-semibold ${E.difficulty==="easy"?"bg-green-50 text-green-600":E.difficulty==="hard"?"bg-rose-50 text-rose-600":"bg-amber-50 text-amber-600"}`,children:E.difficulty})]})]}),I===E.id?e.jsx(wa,{size:16,className:"text-[#94a3b8] shrink-0"}):e.jsx(Tt,{size:16,className:"text-[#94a3b8] shrink-0"})]}),I===E.id&&e.jsxs("div",{className:"mt-3 pt-3 border-t border-[#f1f5f9] space-y-2",children:[e.jsx("div",{className:"space-y-1",children:E.choices.map((F,X)=>e.jsxs("p",{className:`text-[12px] px-3 py-1.5 rounded-lg ${F===E.correct_answer?"bg-green-50 text-green-700 font-semibold border border-green-200":"bg-slate-50 text-[#475569]"}`,children:[String.fromCharCode(65+X),". ",F]},X))}),E.explanation&&e.jsxs("p",{className:"text-[12px] text-[#64748b] italic mt-2",children:["💡 ",E.explanation]})]})]},E.id))})]})]})]})},So={totalTopicsTracked:0,masteredCount:0,needsAttentionCount:0,excludedCount:0},Gm={"gen-math":{label:"GEN MATH",color:"bg-sky-100 text-sky-700"},"stats-prob":{label:"STAT&PROB",color:"bg-sky-100 text-sky-700"},"pre-calc":{label:"PRE-CALC",color:"bg-orange-100 text-orange-700"},"basic-calc":{label:"BASIC CALC",color:"bg-red-100 text-red-700"}},ko={mastered:{label:"Mastered",color:"text-emerald-600 bg-emerald-50 border-emerald-100"},on_track:{label:"On Track",color:"text-amber-600 bg-amber-50 border-amber-100"},needs_attention:{label:"Needs Work",color:"text-rose-600 bg-rose-50 border-rose-100"},no_data:{label:"No Data",color:"text-slate-600 bg-slate-50 border-slate-200"}},Co={needs_attention:0,on_track:1,no_data:2,mastered:3},Qm=({classSectionId:t,onOpenNotifications:s,onOpenProfile:a})=>{const{currentUser:r,userProfile:o}=ds(),[n,i]=m.useState([]),[l,c]=m.useState(So),[d,u]=m.useState(!0),[f,h]=m.useState("all"),[b,k]=m.useState("all"),[j,S]=m.useState(""),[p,N]=m.useState("classAverage"),[C,z]=m.useState("asc"),I=_n.map(M=>M.id),U=_n.reduce((M,Y)=>(M[Y.id]=Y.name,M),{}),{isLoading:v,refetch:y}=ec();m.useEffect(()=>{v||(console.log("[TopicMasteryView] Curriculum ready"),y())},[v,y]);const[w,A]=m.useState(new Set),[B,E]=m.useState([]),F=Xl({queryKey:Nl.topicMastery(r?.uid||"anonymous",t),enabled:!!r,staleTime:120*1e3,gcTime:900*1e3,queryFn:async()=>{try{if(!r)return{excluded:[],topics:[],summary:{totalTopicsTracked:0,masteredCount:0,needsAttentionCount:0,excludedCount:0}};const M=pt(Ve,"teachers",r.uid,"settings","quizSettings"),Y=await js(M),ae=Y.exists()?Y.data()?.excludedTopics||[]:[],$e="https://deign86-mathpulse-api-v3test.hf.space",Me=new URLSearchParams({teacherId:r.uid});t&&Me.set("classSectionId",t);const Ge=await r.getIdToken(),G=await fetch(`${$e}/api/analytics/topic-mastery?${Me.toString()}`,{headers:{Authorization:`Bearer ${Ge}`}});if(!G.ok)return{excluded:ae,topics:[],summary:{totalTopicsTracked:0,masteredCount:0,needsAttentionCount:0,excludedCount:ae.length}};const te=await G.json(),g=(te.topics||[]).map(T=>({...T,isExcluded:ae.includes(T.topicName)}));return{excluded:ae,topics:g,summary:te.summary||{totalTopicsTracked:0,masteredCount:0,needsAttentionCount:0,excludedCount:ae.length}}}catch{return{excluded:[],topics:[],summary:{totalTopicsTracked:0,masteredCount:0,needsAttentionCount:0,excludedCount:0}}}}});m.useEffect(()=>{if(u(F.isLoading||F.isFetching),!F.data){E([]),i([]),c(So),A(new Set);return}E(F.data.excluded),i(F.data.topics),c(F.data.summary)},[F.data,F.isFetching,F.isLoading]);const X=async M=>{if(!r)return;const Y=B.includes(M)?B.filter(ae=>ae!==M):[...B,M];E(Y),i(ae=>ae.map($e=>$e.topicName===M?{...$e,isExcluded:!$e.isExcluded}:$e)),c(ae=>({...ae,excludedCount:Y.length}));try{const ae=pt(Ve,"teachers",r.uid,"settings","quizSettings");(await js(ae)).exists()?await Zt(ae,{excludedTopics:Y}):await is(ae,{excludedTopics:Y})}catch{me.error("Failed to update excluded topics")}},J=async()=>{if(!r)return;const M=[...new Set([...B,...w])];E(M),i(Y=>Y.map(ae=>w.has(ae.topicName)?{...ae,isExcluded:!0}:ae)),c(Y=>({...Y,excludedCount:M.length})),A(new Set);try{const Y=pt(Ve,"teachers",r.uid,"settings","quizSettings");(await js(Y)).exists()?await Zt(Y,{excludedTopics:M}):await is(Y,{excludedTopics:M}),me.success(`${w.size} topics excluded from quizzes`)}catch{me.error("Failed to update")}},ce=async()=>{if(!r)return;const M=B.filter(Y=>!w.has(Y));E(M),i(Y=>Y.map(ae=>w.has(ae.topicName)?{...ae,isExcluded:!1}:ae)),c(Y=>({...Y,excludedCount:M.length})),A(new Set);try{const Y=pt(Ve,"teachers",r.uid,"settings","quizSettings");(await js(Y)).exists()?await Zt(Y,{excludedTopics:M}):await is(Y,{excludedTopics:M}),me.success(`${w.size} topics re-included in quizzes`)}catch{me.error("Failed to update")}},ne=M=>{p===M?z(Y=>Y==="asc"?"desc":"asc"):(N(M),z("asc"))},xe=b==="all"?I:Jl(b);m.useEffect(()=>{f!=="all"&&(xe.includes(f)||h("all"))},[xe,f]);const he=n.filter(M=>!(f!=="all"&&M.subjectId!==f||!xe.includes(M.subjectId)||j&&!M.topicName.toLowerCase().includes(j.toLowerCase()))).sort((M,Y)=>{const ae=C==="asc"?1:-1;switch(p){case"topicName":return ae*M.topicName.localeCompare(Y.topicName);case"classAverage":return ae*(M.classAverage-Y.classAverage);case"studentsAttempted":return ae*(M.studentsAttempted-Y.studentsAttempted);case"masteryStatus":return ae*((Co[M.masteryStatus]||0)-(Co[Y.masteryStatus]||0));default:return 0}}),H=()=>{w.size===he.length?A(new Set):A(new Set(he.map(M=>M.topicName)))},q=({field:M})=>p!==M?e.jsx(Tt,{size:14,className:"text-white/40"}):C==="asc"?e.jsx(wa,{size:14,className:"text-white font-bold"}):e.jsx(Tt,{size:14,className:"text-white font-bold"});return d?e.jsxs("div",{className:"flex items-center justify-center py-20",children:[e.jsx(dt,{size:24,className:"animate-spin text-indigo-500"}),e.jsx("span",{className:"ml-2 text-[#64748b]",children:"Loading topic mastery data..."})]}):e.jsxs(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"w-full p-[24px] xl:p-[32px] space-y-[24px]",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-[16px]",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(168,85,247,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Total Topics Tracked"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Ds,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:l.totalTopicsTracked})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#10b981] to-[#059669] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(16,185,129,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Mastered by Class"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(qr,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:l.masteredCount})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f43f5e] to-[#e11d48] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(244,63,94,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Needs Work"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Xs,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:l.needsAttentionCount})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#64748b] to-[#475569] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(100,116,139,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Excluded Topics"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Yl,{size:16,className:"text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none",children:l.excludedCount})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-white",children:[e.jsxs("div",{className:"flex flex-col md:flex-row gap-4 mb-6",children:[e.jsxs("div",{className:"flex items-center bg-white px-4 py-2.5 rounded-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-[#e2e8f0] group focus-within:ring-2 focus-within:ring-indigo-500/20 transition-all w-full md:w-64",children:[e.jsx(Os,{size:16,className:"text-[#64748b] shrink-0 group-focus-within:text-[#4f46e5] transition-colors"}),e.jsx("input",{type:"text",placeholder:"Search topics...",value:j,onChange:M=>S(M.target.value),className:"bg-transparent border-none focus:outline-none ml-2 text-[13px] w-full text-[#475569] placeholder:text-[#94a3b8]"})]}),e.jsxs("div",{className:"relative w-full md:w-48",children:[e.jsxs("select",{value:f,onChange:M=>h(M.target.value),className:"appearance-none w-full bg-white border border-[#e2e8f0] text-[#475569] text-[13px] font-medium rounded-[12px] pl-4 pr-10 py-2.5 outline-none focus:border-[#a855f7] focus:ring-2 focus:ring-[#a855f7]/20 shadow-[0_1px_4px_rgba(0,0,0,0.02)] cursor-pointer",children:[e.jsx("option",{value:"all",children:"All Subjects"}),xe.map(M=>e.jsx("option",{value:M,children:U[M]||M},M))]}),e.jsx(Tt,{size:16,className:"text-[#64748b] absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]}),e.jsxs("div",{className:"relative w-full md:w-48",children:[e.jsxs("select",{value:b,onChange:M=>k(M.target.value),className:"appearance-none w-full bg-white border border-[#e2e8f0] text-[#475569] text-[13px] font-medium rounded-[12px] pl-4 pr-10 py-2.5 outline-none focus:border-[#a855f7] focus:ring-2 focus:ring-[#a855f7]/20 shadow-[0_1px_4px_rgba(0,0,0,0.02)] cursor-pointer",children:[e.jsx("option",{value:"all",children:"All Grades"}),Zl.map(M=>e.jsx("option",{value:M,children:M},M))]}),e.jsx(Tt,{size:16,className:"text-[#64748b] absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]})]}),e.jsx(Et,{children:w.size>0&&e.jsxs(Re.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},className:"mb-4 bg-indigo-50 border border-indigo-200 rounded-[12px] p-3 flex items-center gap-3 flex-wrap overflow-hidden",children:[e.jsxs("span",{className:"text-[13px] font-semibold text-indigo-700",children:[w.size," topics selected"]}),e.jsx("button",{onClick:J,className:"px-4 py-1.5 bg-[#475569] text-white text-[11px] font-bold rounded-full hover:bg-[#334155] transition-colors shadow-sm",children:"Exclude Selected"}),e.jsx("button",{onClick:ce,className:"px-4 py-1.5 bg-emerald-600 text-white text-[11px] font-bold rounded-full hover:bg-emerald-700 transition-colors shadow-sm",children:"Include Selected"}),e.jsx("button",{onClick:()=>A(new Set),className:"px-4 py-1.5 bg-white border border-[#e2e8f0] text-[#64748b] text-[11px] font-bold rounded-full hover:bg-[#f8fafc] transition-colors shadow-sm",children:"Clear Selection"})]})}),e.jsx("div",{className:"bg-white rounded-[16px] border border-[#f1f5f9] overflow-hidden shadow-[0_1px_4px_rgba(0,0,0,0.02)]",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("div",{className:"min-w-[800px]",children:[e.jsxs("div",{className:"bg-[#9956DE] grid grid-cols-12 gap-4 p-4 border-b border-[#8b5cf6] items-center text-[11px] font-bold text-white tracking-wider uppercase shadow-md relative z-10 h-12",children:[e.jsx("div",{className:"col-span-1 flex justify-center",children:e.jsx("input",{type:"checkbox",checked:w.size===he.length&&he.length>0,onChange:H,className:"rounded text-[#4f46e5] focus:ring-[#4f46e5] w-4 h-4 border-white/30 bg-white/10 cursor-pointer"})}),e.jsxs("div",{className:"col-span-3 flex items-center gap-1 cursor-pointer hover:text-white/80 select-none",onClick:()=>ne("topicName"),children:["TOPIC NAME ",e.jsx(q,{field:"topicName"})]}),e.jsx("div",{className:"col-span-2",children:"UNIT"}),e.jsxs("div",{className:"col-span-2 flex items-center gap-1 cursor-pointer hover:text-white/80 select-none",onClick:()=>ne("classAverage"),children:["CLASS AVG % ",e.jsx(q,{field:"classAverage"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-1 cursor-pointer hover:text-white/80 select-none",onClick:()=>ne("studentsAttempted"),children:["STUDENTS ",e.jsx(q,{field:"studentsAttempted"})]}),e.jsxs("div",{className:"col-span-1 flex items-center gap-1 cursor-pointer hover:text-white/80 select-none",onClick:()=>ne("masteryStatus"),children:["STATUS ",e.jsx(q,{field:"masteryStatus"})]}),e.jsx("div",{className:"col-span-1 text-center",children:"EXCLUDE"})]}),e.jsx("div",{className:"flex flex-col",children:he.length===0?e.jsx("div",{className:"p-16 text-center border-b border-[#f1f5f9]",children:n.length===0?e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx(Ds,{size:32,className:"text-[#cbd5e1]"}),e.jsx("p",{className:"text-[13px] font-semibold text-[#64748b]",children:"No topic data available yet"}),e.jsx("p",{className:"text-[11px] text-[#94a3b8]",children:"Import student quiz data to see class topic mastery analytics."})]}):e.jsx("span",{className:"text-[13px] text-[#64748b]",children:"No topics match the current filters."})}):he.map(M=>{const Y=w.has(M.topicName),ae=ko[M.masteryStatus]||ko.no_data,$e=Gm[M.subjectId]||{label:M.subjectId.toUpperCase(),color:"bg-[#f8fafc] text-[#64748b]"},Me=M.classAverage<60?"bg-rose-500":M.classAverage<85?"bg-amber-500":"bg-emerald-500",Ge=M.isExcluded?"bg-slate-50/60 opacity-70":M.masteryStatus==="needs_attention"?"bg-rose-50/30":M.masteryStatus==="mastered"?"bg-emerald-50/20":"";return e.jsxs("div",{className:`grid grid-cols-12 gap-4 p-4 border-b border-[#f1f5f9] items-center hover:bg-slate-50/80 transition-colors group ${Ge} ${M.isExcluded?"line-through decoration-slate-400":""}`,children:[e.jsx("div",{className:"col-span-1 flex justify-center",children:e.jsx("input",{type:"checkbox",checked:Y,onChange:()=>{const G=new Set(w);Y?G.delete(M.topicName):G.add(M.topicName),A(G)},className:"rounded text-[#4f46e5] focus:ring-[#4f46e5] w-4 h-4 border-gray-300 cursor-pointer"})}),e.jsxs("div",{className:"col-span-3 flex flex-col sm:flex-row sm:items-center gap-1.5 pr-2 min-w-0",children:[e.jsx("span",{className:"font-semibold text-[#1e293b] text-[13px] truncate",children:M.topicName}),e.jsx("span",{className:`text-[9px] font-bold px-1.5 py-0.5 rounded shrink-0 ${$e.color}`,children:$e.label})]}),e.jsx("div",{className:"col-span-2 text-[#475569] text-[13px] truncate pr-2",children:M.unit}),e.jsx("div",{className:"col-span-2",children:e.jsxs("span",{className:"font-bold text-[#1e293b] text-[14px]",children:[M.classAverage,"%"]})}),e.jsxs("div",{className:"col-span-2 pr-4",children:[e.jsx("div",{className:"flex justify-between items-center text-[11px] mb-1",children:e.jsxs("span",{className:"font-semibold text-[#1e293b]",children:[M.studentsAttempted," / ",M.totalStudents]})}),e.jsx("div",{className:"w-full bg-[#f1f5f9] h-1.5 rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all duration-500 ${Me}`,style:{width:`${M.classAverage}%`}})})]}),e.jsx("div",{className:"col-span-1",children:e.jsx("span",{className:`text-[10px] font-bold px-2.5 py-1 rounded-full border whitespace-nowrap ${ae.color}`,children:ae.label})}),e.jsxs("div",{className:"col-span-1 flex justify-center relative",children:[e.jsxs("label",{className:"relative inline-flex items-center cursor-pointer group/toggle",children:[e.jsx("input",{type:"checkbox",checked:M.isExcluded,onChange:()=>X(M.topicName),className:"sr-only peer"}),e.jsx("div",{className:"w-9 h-5 bg-slate-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-[#4f46e5]"})]}),e.jsx("div",{className:"hidden group-hover/toggle:block absolute z-20 bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-slate-800 text-white text-[10px] rounded whitespace-nowrap shadow-lg",children:M.isExcluded?"Include in generation":"Exclude from generation"})]})]},M.topicName)})})]})})})]})]})};function Ki(t){return(t||"").trim().toLowerCase()}function Io(t){const s=(t.lrn||"").trim().toLowerCase();if(s)return`lrn:${s}`;const a=(t.email||"").trim().toLowerCase();if(a)return`email:${a}`;const r=t.name.trim().toLowerCase();if(r)return`name:${r}`;const o=Ki(t.classSectionId),n=(t.id||"").trim().toLowerCase();return o&&n?`${o}|id:${n}`:n?`id:${n}`:`${o}|anonymous`}function Um(t,s){const a=[],r=(t.lrn||"").trim().toLowerCase(),o=(t.email||"").trim().toLowerCase(),n=t.name.trim().toLowerCase(),i=(t.id||"").trim().toLowerCase();return r&&a.push(`${s}|lrn:${r}`),o&&a.push(`${s}|email:${o}`),n&&a.push(`${s}|name:${n}`),i&&a.push(`${s}|id:${i}`),a.length===0&&a.push(`${s}|anonymous`),a}function Vm(t,s){const a=[t.riskLevel,s.riskLevel].includes("High")?"High":[t.riskLevel,s.riskLevel].includes("Medium")?"Medium":"Low";return{...t,lrn:t.lrn||s.lrn,classSectionId:t.classSectionId??s.classSectionId,avgQuizScore:s.avgQuizScore>0?s.avgQuizScore:t.avgQuizScore,engagementScore:s.engagementScore>0?s.engagementScore:t.engagementScore,weakestTopic:t.weakestTopic&&t.weakestTopic!=="Foundational Skills"?t.weakestTopic:s.weakestTopic,riskLevel:a}}function Xi(t,s){const a=new Map,r=new Map,o=s?Ki(s):"all";return t.forEach(n=>{const i=Um(n,o),l=i.map(u=>r.get(u)).find(Boolean)||i[0],c=a.get(l),d=c?Vm(c,n):n;a.set(l,d),i.forEach(u=>r.set(u,l))}),Array.from(a.values())}function To(t,s){return Xi([...t,...s])}function Vs(t){return Number.isFinite(t)?Math.max(0,Math.min(100,t)):0}function Wm(t){if(!t)return null;const s="gen-math",a=Mn.find(i=>i.id===s)?.modules||[];if(a.length===0)return null;const r={mastery:0,concept:0,application:0,engagement:0,consistency:0},o=t.lessons??{};a.forEach(i=>{const l=Mn.find(S=>S.modules.some(p=>p.id===i.id)),c=l?t?.subjects?.[l.id]?.modulesProgress?.[i.id]:null,d=Vs(c?.progress||0),u=i.lessons.length?i.lessons.reduce((S,p)=>{const N=o?.[p.id]?.score;if(typeof N=="number"&&Number.isFinite(N))return S+Vs(N);const C=!!c?.lessonsCompleted?.includes?.(p.id);return S+(C?100:0)},0)/i.lessons.length:0,f=i.quizzes.length?(c?.quizzesCompleted?.length||0)/i.quizzes.length*100:0,h=Vs(u),b=Vs(f),k=Vs(Math.min(100,(h+b*2)/1.5)),j=Vs(Math.min(100,40+d*.6));r.mastery+=d,r.concept+=h,r.application+=b,r.engagement+=k,r.consistency+=j});const n=a.length;return{mastery:Math.round(r.mastery/n),concept:Math.round(r.concept/n),application:Math.round(r.application/n),engagement:Math.round(r.engagement/n),consistency:Math.round(r.consistency/n)}}const Eo={advanced:{bg:"bg-emerald-100",text:"text-emerald-700",bar:"bg-emerald-500"},proficient:{bg:"bg-sky-100",text:"text-sky-700",bar:"bg-sky-500"},developing:{bg:"bg-rose-100",text:"text-rose-700",bar:"bg-rose-500"},beginner:{bg:"bg-red-100",text:"text-red-700",bar:"bg-red-500"}},Cr=[{key:"mastery",short:"M",label:"Overall Mastery",header:"Mastery"},{key:"concept",short:"C",label:"Concept Grasp",header:"Concept"},{key:"application",short:"A",label:"Application",header:"Applications"},{key:"consistency",short:"S",label:"Consistency",header:"Consistency"}],qm=({classSectionId:t,className:s,fallbackStudents:a=[],onBack:r,onOpenNotifications:o,onOpenProfile:n,insightDismissed:i,onOpenInsightModal:l})=>{const{currentUser:c,userProfile:d}=ds(),u=m.useRef(0),[f,h]=m.useState([]),[b,k]=m.useState(!0),[j,S]=m.useState(""),[p,N]=m.useState("riskLevel"),[C,z]=m.useState("desc"),[I,U]=m.useState("all"),[v,y]=m.useState([]),[w,A]=m.useState(!1),[B,E]=m.useState(""),[F,X]=m.useState(""),J=m.useCallback(g=>({id:g.id,lrn:g.lrn||void 0,name:g.name,email:g.email||"",avatar:Ga(g.gender),classSectionId:g.classSectionId??null,riskLevel:g.riskLevel||"Low",engagementScore:g.engagementScore,avgQuizScore:g.avgQuizScore,weakestTopic:g.weakestTopic||"Foundational Skills"}),[]),ce=m.useCallback(g=>({id:g.id,lrn:g.lrn,name:g.name,email:g.email||"",avatar:g.avatar&&!g.avatar.includes("ui-avatars.com")?g.avatar:Ga(g.gender),classSectionId:g.classSectionId??null,riskLevel:String(g.riskLevel).charAt(0).toUpperCase()+String(g.riskLevel).slice(1).toLowerCase(),engagementScore:g.engagementScore,avgQuizScore:Number(g.avgQuizScore??g.avgScore??0),weakestTopic:g.weakestTopic||"Foundational Skills"}),[]),ne=m.useCallback(async(g,T)=>{const R=new Map;g.forEach(Z=>R.set(Z.id,null));const K=25;for(let Z=0;Z{try{const oe=await Sn($.id);return{studentId:$.id,summary:Wm(oe)}}catch{return{studentId:$.id,summary:null}}}))).forEach(($,oe)=>{const pe=re[oe]?.id;pe&&($.status==="fulfilled"?R.set(pe,$.value.summary):R.set(pe,null))})}u.current===T&&h(Z=>Z.map(re=>R.has(re.student.id)?{...re,competencyMatrix:R.get(re.student.id)??null,competencyMatrixLoading:!1}:re))},[]),xe=m.useCallback(async()=>{if(c?.uid){k(!0),X("");try{let T=(await cn(c.uid)).map(re=>({id:re.id,name:re.name,email:re.email||"",avatar:re.avatar&&!re.avatar.includes("ui-avatars.com")?re.avatar:Ga(re.gender),classSectionId:re.classSectionId??null,riskLevel:re.riskLevel,engagementScore:re.engagementScore,avgQuizScore:re.avgQuizScore,weakestTopic:re.weakestTopic||"Foundational Skills"}));a.length>0&&(T=To(T,a.map(ce))),t&&(T=T.filter(re=>re.classSectionId===t));const R=await nt.getImportedClassOverview({classSectionId:t,limit:3e3});R.warnings.length>0&&X(R.warnings.join(" ")),T=To(T,R.students.map(J));const K=Xi(T,t),Z=u.current+=1;h(K.map((re,le)=>({rowKey:`${Io(re)}|row:${le}`,student:re,competency:null,competencyMatrix:null,competencyMatrixLoading:!0,loading:!1,expanded:!1}))),ne(K,Z)}catch(g){if(console.error("Failed to load students:",g),a.length>0){const T=a.map(ce).filter(R=>!t||R.classSectionId===t).map((R,K)=>({rowKey:`${Io(R)}|row:${K}`,student:R,competency:null,competencyMatrix:null,competencyMatrixLoading:!1,loading:!1,expanded:!1}));h(T),X("Showing recently imported students while backend roster sync catches up.")}else h([]),X("Student competency roster is unavailable right now.")}finally{k(!1)}}},[t,c?.uid,a,ne,ce,J]);m.useEffect(()=>{xe()},[xe]),m.useEffect(()=>{(async()=>{if(!t){y([]),E("");return}A(!0),E("");try{const T=await nt.getCourseMaterialTopics({classSectionId:t,limit:20}),R=(T.topics||[]).filter(K=>K.title?.trim());y(R),T.warnings.length>0&&E(T.warnings.join(" "))}catch{y([]),E("Imported topic context is unavailable right now.")}finally{A(!1)}})()},[t]);const he=async g=>{h(T=>T.map(R=>{if(R.rowKey!==g)return R;const K=!R.expanded,Z=R.student.id,re={weakestTopic:R.student.weakestTopic,avgQuizScore:R.student.avgQuizScore};return K&&!R.competency&&!R.loading?(H(g,Z,re),{...R,expanded:!0,loading:!0}):{...R,expanded:K}}))},H=async(g,T,R)=>{try{const Z=((await Sn(T))?.quizAttempts??[]).map(le=>({topic:le.quizId,score:le.score,total:100,timeTaken:le.timeSpent})),re=await nt.getStudentCompetency(T,Z.length>0?Z:void 0);h(le=>le.map($=>$.rowKey===g?{...$,competency:re,loading:!1}:$))}catch{const Z=R.avgQuizScore||50,re={studentId:T,competencies:[{topic:R.weakestTopic||"Unknown",efficiencyScore:Math.max(15,Z-20),competencyLevel:Z<50?"beginner":"developing",perspective:`Student needs focused practice in ${R.weakestTopic}.`},{topic:"Functions and Relations",efficiencyScore:Math.min(95,Z+10),competencyLevel:Z>70?"proficient":"developing",perspective:"Shows solid understanding of function concepts."},{topic:"Problem Solving",efficiencyScore:Z,competencyLevel:Z>80?"advanced":Z>60?"proficient":"developing",perspective:"Applies mathematical reasoning consistently."}],recommendedTopics:[R.weakestTopic||"Review fundamentals"],excludeTopics:[]};h(le=>le.map($=>$.rowKey===g?{...$,competency:re,loading:!1}:$))}},q=g=>{p===g?z(T=>T==="asc"?"desc":"asc"):(N(g),z("asc"))},M={High:0,Medium:1,Low:2},Y=f.filter(g=>{if(I!=="all"&&g.student.riskLevel!==I)return!1;if(j){const T=j.toLowerCase();return g.student.name.toLowerCase().includes(T)||g.student.email.toLowerCase().includes(T)}return!0}).sort((g,T)=>{let R=0;switch(p){case"name":R=g.student.name.localeCompare(T.student.name);break;case"avgQuizScore":R=g.student.avgQuizScore-T.student.avgQuizScore;break;case"riskLevel":R=M[g.student.riskLevel]-M[T.student.riskLevel];break;case"engagementScore":R=g.student.engagementScore-T.student.engagementScore;break}return C==="asc"?R:-R}),ae=f.length,$e=f.filter(g=>g.student.riskLevel==="High").length,Me=ae>0?Math.round(f.reduce((g,T)=>g+T.student.avgQuizScore,0)/ae):0,Ge=ae>0?Math.round(f.reduce((g,T)=>g+T.student.engagementScore,0)/ae):0,G=Array.from(new Set(v.map(g=>g.title).filter(Boolean))).slice(0,10),te=({field:g})=>p!==g?e.jsx(Tt,{size:14,className:"text-white/40"}):C==="asc"?e.jsx(wa,{size:14,className:"text-white font-bold"}):e.jsx(Tt,{size:14,className:"text-white font-bold"});return b?e.jsxs("div",{className:"flex items-center justify-center py-20 p-6",children:[e.jsx(dt,{size:32,className:"animate-spin text-[var(--primary)]"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"Loading student data..."})]}):e.jsxs(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-6 space-y-6",children:[r&&e.jsx("div",{className:"flex items-center justify-between mb-2",children:e.jsxs("button",{onClick:r,className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors bg-white/60 hover:bg-white/80 px-[18px] py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50",children:[e.jsx(Ss,{className:"w-4 h-4"}),"Back to Classes"]})}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-[16px] mb-6",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-5 shadow-[0_4px_12px_rgba(168,85,247,0.2)] hover:shadow-[0_8px_24px_rgba(168,85,247,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Total Students"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(kn,{className:"w-4 h-4 text-white"})})]}),e.jsx("div",{className:"text-[28px] font-bold relative z-10 leading-none mb-4",children:ae}),e.jsx("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3 mt-auto",children:e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Evaluated in this class"})})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f97316] to-[#ea580c] rounded-[16px] p-5 shadow-[0_4px_12px_rgba(249,115,22,0.2)] hover:shadow-[0_8px_24px_rgba(249,115,22,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"At-Risk Students"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Xs,{className:"w-4 h-4 text-white"})})]}),e.jsx("div",{className:"text-[28px] font-bold relative z-10 leading-none mb-4",children:$e}),e.jsx("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3 mt-auto",children:e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Need immediate intervention"})})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#0ea5e9] to-[#0284c7] rounded-[16px] p-5 shadow-[0_4px_12px_rgba(14,165,233,0.2)] hover:shadow-[0_8px_24px_rgba(14,165,233,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Class Average"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Ds,{className:"w-4 h-4 text-white"})})]}),e.jsxs("div",{className:"text-[28px] font-bold relative z-10 leading-none mb-4",children:[Me,"%"]}),e.jsx("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3 mt-auto",children:e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Vs. expected benchmark"})})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#10b981] to-[#059669] rounded-[16px] p-5 shadow-[0_4px_12px_rgba(16,185,129,0.2)] hover:shadow-[0_8px_24px_rgba(16,185,129,0.3)] hover:-translate-y-1 transition-all duration-300 flex flex-col justify-between group text-white",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full transition-transform duration-500 group-hover:scale-[1.8] group-hover:-translate-y-4 group-hover:-translate-x-4"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Avg. Engagement"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(Ta,{className:"w-4 h-4 text-white"})})]}),e.jsxs("div",{className:"text-[28px] font-bold relative z-10 leading-none mb-4",children:[Ge,"%"]}),e.jsx("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3 mt-auto",children:e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Activity completion rate"})})]})]}),e.jsx("div",{className:"sticky top-0 z-30 py-4 -my-4 bg-[#f8fafc]/80 backdrop-blur-[16px] border-b border-slate-200/50 shadow-[0_4px_20px_rgba(0,0,0,0.02)] px-2 sm:-mx-6 sm:px-6 mb-6 rounded-b-[18px]",children:e.jsxs("div",{className:"flex flex-col md:flex-row gap-4 items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 w-full md:w-auto items-center",children:[e.jsxs("div",{className:"flex items-center bg-white px-4 py-2.5 rounded-full shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#e2e8f0] group focus-within:ring-2 focus-within:ring-indigo-500/20 transition-all w-full sm:w-64",children:[e.jsx(Os,{className:"w-4 h-4 text-[#64748b] shrink-0 group-focus-within:text-[#9956DE] transition-colors"}),e.jsx("input",{type:"text",placeholder:"Search students...",value:j,onChange:g=>S(g.target.value),className:"bg-transparent border-none focus:outline-none ml-2 text-[13px] w-full text-[#475569] placeholder:text-[#94a3b8]"})]}),e.jsx("div",{className:"flex items-center gap-2 overflow-x-auto no-scrollbar w-full sm:w-auto p-2 -m-2",children:["all","High","Medium","Low"].map(g=>e.jsx("button",{onClick:()=>U(g),className:`px-4 py-1.5 text-[13px] font-semibold rounded-full whitespace-nowrap transition-colors shadow-md ${I===g?"bg-[#9956DE] text-white":"bg-white text-slate-500 hover:text-slate-700 hover:bg-slate-50"}`,children:g==="all"?"All":`${g} Risk`},g))})]}),e.jsxs("button",{onClick:xe,className:"flex items-center gap-2 text-[13px] font-semibold text-slate-500 hover:text-slate-700 transition-colors shrink-0 bg-white px-4 py-2 rounded-full shadow-md hover:bg-slate-50 self-end sm:self-auto",children:[e.jsx(zs,{className:"w-4 h-4"})," Refresh"]})]})}),e.jsxs("div",{className:"bg-[#f5f3ff]/60 border border-[#e0e7ff] rounded-[14px] px-5 py-3 mb-6 flex items-start sm:items-center gap-3",children:[e.jsx("div",{className:"mt-0.5 sm:mt-0 shrink-0",children:e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-[#9956DE]",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{d:"M12 16v-4"}),e.jsx("path",{d:"M12 8h.01"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center flex-1",children:[e.jsxs("span",{className:"text-[#9956DE] font-semibold text-[13px] whitespace-nowrap mr-1",children:["Imported Topic Context",s?` for ${s}`:"",":"]}),w?e.jsx("span",{className:"text-[#8b5cf6] text-[13px]",children:"Loading class-scoped imported topics..."}):G.length>0?e.jsx("div",{className:"flex flex-wrap items-center gap-1.5 mt-1 sm:mt-0",children:G.map((g,T)=>e.jsxs(de.Fragment,{children:[e.jsx("span",{className:"text-[#8b5cf6] text-[13px]",children:g}),Tq("name"),children:["Student ",e.jsx(te,{field:"name"})]}),e.jsxs("div",{className:"w-[120px] shrink-0 px-4 flex justify-center cursor-pointer hover:text-white/80 transition-colors",onClick:()=>q("riskLevel"),children:["Risk Level ",e.jsx(te,{field:"riskLevel"})]}),e.jsxs("div",{className:"w-[200px] shrink-0 px-4 flex items-center gap-1 cursor-pointer hover:text-white/80 transition-colors",onClick:()=>q("avgQuizScore"),children:["Avg. Score ",e.jsx(te,{field:"avgQuizScore"})]}),e.jsxs("div",{className:"w-[180px] shrink-0 px-4 flex items-center gap-1 cursor-pointer hover:text-white/80 transition-colors",onClick:()=>q("engagementScore"),children:["Engagement ",e.jsx(te,{field:"engagementScore"})]}),e.jsx("div",{className:"w-[160px] shrink-0 px-4 flex justify-center cursor-pointer hover:text-white/80 transition-colors",children:"Weakest Topic"}),Cr.map((g,T)=>e.jsx("div",{className:`w-[100px] shrink-0 px-2 flex justify-center ${T===Cr.length-1?"border-r border-transparent":""}`,children:g.header},g.key))]}),Y.length===0?e.jsxs("div",{className:"py-12 text-center text-slate-500",children:[e.jsx(kn,{size:32,className:"mx-auto mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"No students match the current filters"})]}):e.jsx("div",{className:"divide-y divide-border",children:Y.map(g=>(g.student.riskLevel==="High"||g.student.riskLevel,e.jsxs("div",{className:"flex flex-col border-b border-slate-100 group",children:[e.jsxs("div",{className:"flex items-center min-h-[64px] hover:bg-slate-50/60 transition-colors cursor-pointer relative",onClick:()=>void he(g.rowKey),children:[e.jsxs("div",{className:"w-[260px] shrink-0 sticky left-0 z-10 bg-white group-hover:bg-slate-50/90 transition-colors px-5 h-full min-h-[64px] flex items-center border-r border-slate-100 shadow-[2px_0_4px_rgba(0,0,0,0.01)]",children:[e.jsx("div",{className:`transition-transform duration-200 mr-3 shrink-0 ${g.expanded?"rotate-90":""}`,children:e.jsx(ys,{className:"w-4 h-4 text-slate-400"})}),e.jsx("img",{src:g.student.avatar,alt:g.student.name,className:"w-8 h-8 rounded-full bg-border object-cover shrink-0 mr-3"}),e.jsx("span",{className:"font-semibold text-slate-800 text-[14px] truncate",children:g.student.name})]}),e.jsx("div",{className:"w-[120px] shrink-0 px-4 flex justify-center",children:e.jsx("span",{className:`px-3 py-1 rounded-full border text-[11px] font-bold uppercase tracking-wider ${g.student.riskLevel==="High"?"bg-rose-50 text-rose-600 border-rose-200":g.student.riskLevel==="Medium"?"bg-amber-50 text-amber-600 border-amber-200":"bg-emerald-50 text-emerald-600 border-emerald-200"}`,children:g.student.riskLevel})}),e.jsxs("div",{className:"w-[200px] shrink-0 px-4 flex items-center gap-3",children:[e.jsx("div",{className:"flex-1 bg-slate-100 h-2.5 rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full ${g.student.avgQuizScore>=80?"bg-emerald-500":g.student.avgQuizScore>=60?"bg-amber-400":"bg-rose-500"}`,style:{width:`${g.student.avgQuizScore}%`}})}),e.jsxs("span",{className:"text-[13px] font-bold text-slate-800 w-8",children:[g.student.avgQuizScore,"%"]})]}),e.jsxs("div",{className:"w-[180px] shrink-0 px-4 flex items-center gap-3",children:[e.jsx("div",{className:"flex-1 bg-slate-100 h-2.5 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-[#9956DE]",style:{width:`${g.student.engagementScore}%`}})}),e.jsxs("span",{className:"text-[13px] font-bold text-slate-800 w-8",children:[g.student.engagementScore,"%"]})]}),e.jsx("div",{className:"w-[160px] shrink-0 px-4 flex justify-center",children:e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-600 text-[11px] font-medium rounded-full truncate max-w-full border border-slate-200",children:g.student.weakestTopic})}),Cr.map(T=>{const R=g.competencyMatrix?.[T.key]??0;return e.jsx("div",{className:"w-[100px] shrink-0 px-2 flex justify-center",children:g.competencyMatrixLoading?e.jsx(dt,{size:12,className:"animate-spin text-muted-foreground"}):g.competencyMatrix?e.jsxs("span",{className:`text-[12px] font-medium px-2 rounded-full border ${R>=80?"text-emerald-600 bg-emerald-50 border-emerald-100":R>=60?"text-amber-600 bg-amber-50 border-amber-100":"text-rose-500 bg-rose-50 border-rose-100"}`,children:[R,"%"]}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"—"})},T.key)})]}),e.jsx(Et,{children:g.expanded&&e.jsx(Re.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},className:"overflow-hidden bg-slate-50/80 border-t border-slate-100 shadow-inner",children:e.jsxs("div",{className:"flex min-w-[1320px]",children:[e.jsx("div",{className:"w-[260px] shrink-0 sticky left-0 z-10 bg-slate-50/90 border-r border-slate-100 flex items-start justify-end pr-4 py-4",children:e.jsx("div",{className:"w-1.5 h-full rounded-full bg-[#9956DE]/30"})}),e.jsx("div",{className:"flex-1 py-4 pl-6 pr-6",children:g.loading?e.jsxs("div",{className:"flex items-center py-4",children:[e.jsx(dt,{size:16,className:"animate-spin text-indigo-500 mr-2"}),e.jsx("span",{className:"text-sm text-slate-500",children:"Analyzing competency data..."})]}):g.competency?e.jsxs("div",{className:"space-y-4 max-w-4xl",children:[g.competency.recommendedTopics.length>0&&e.jsxs("div",{className:"bg-[#f5f3ff] rounded-[12px] p-4 border border-[#e0e7ff] inline-block shadow-sm mb-4",children:[e.jsxs("h4",{className:"text-[#7274ED] font-semibold text-[13px] flex items-center gap-2 mb-1.5",children:[e.jsx(Gt,{className:"w-4 h-4"})," Recommended Focus Areas"]}),e.jsx("div",{className:"flex flex-wrap gap-1.5 mt-2",children:g.competency.recommendedTopics.map((T,R)=>e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full border border-indigo-100 bg-white text-indigo-700 text-xs font-medium shadow-sm",children:T},R))})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:g.competency.competencies.map((T,R)=>e.jsx(Ym,{competency:T},R))})]}):e.jsx("div",{className:"text-sm text-slate-500 py-4",children:"Failed to load competency details."})})]})})})]},g.rowKey)))})]})})]})},Ym=({competency:t})=>{const s=Eo[t.competencyLevel]||Eo.developing;return e.jsxs("div",{className:"bg-card rounded-lg border border-border p-3",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h6",{className:"text-xs font-bold text-foreground truncate flex-1",children:t.topic}),e.jsx("span",{className:`ml-2 px-2 py-0.5 rounded text-[10px] font-bold uppercase ${s.bg} ${s.text}`,children:t.competencyLevel})]}),e.jsxs("div",{className:"mb-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs mb-1",children:[e.jsx("span",{className:"text-slate-500",children:"Efficiency"}),e.jsxs("span",{className:"font-bold text-muted-foreground",children:[t.efficiencyScore,"%"]})]}),e.jsx("div",{className:"h-1.5 bg-muted rounded-full overflow-hidden",children:e.jsx(Re.div,{initial:{width:0},animate:{width:`${t.efficiencyScore}%`},transition:{duration:.6,delay:.1},className:`h-full rounded-full ${s.bar}`})})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground leading-snug line-clamp-2",children:t.perspective})]})},Km=()=>{const{notifications:t,unreadCount:s,isLoading:a,markAsRead:r,markAllAsRead:o}=ei(),[n,i]=m.useState("all"),l=["streak_reminder","daily_checkin","streak_milestone","achievement_unlocked","level_up","xp_earned","quiz_result"],c=t.filter(k=>!k.isRead&&!l.includes(k.type)).length,d=k=>{switch(k){case"achievement_unlocked":case"achievement":return jl;case"message":return Al;case"grade":case"quiz_result":return Jo;case"reminder":case"streak_reminder":case"daily_checkin":return Zs;case"risk_alert":return Xs;case"sparkles":case"lesson_plan_ready":return $s;case"users":case"student_import":return os;default:return Ja}},u=(k,j)=>{switch(k){case"risk_alert":return"bg-rose-50/30 text-rose-500 border-rose-100";case"sparkles":case"lesson_plan_ready":return"bg-purple-50/30 text-[#a855f7] border-purple-100";case"daily_checkin":return"bg-amber-50/20 text-amber-500 border-amber-100";case"users":case"student_import":return"bg-blue-50/30 text-blue-500 border-blue-100";default:return"bg-slate-50 text-slate-500 border-slate-100"}},f=k=>{switch(k){case"risk_alert":return"from-rose-400 to-rose-600 shadow-[0_4px_12px_rgba(244,63,94,0.3)]";case"sparkles":case"lesson_plan_ready":return"from-[#a855f7] to-[#9333ea] shadow-[0_4px_12px_rgba(168,85,247,0.3)]";case"daily_checkin":return"from-amber-300 to-amber-500 shadow-[0_4px_12px_rgba(245,158,11,0.3)]";case"users":case"student_import":return"from-blue-400 to-blue-600 shadow-[0_4px_12px_rgba(59,130,246,0.3)]";default:return"from-slate-400 to-slate-600 shadow-[0_4px_12px_rgba(100,116,139,0.3)]"}},h=m.useMemo(()=>{let k=t.filter(j=>!l.includes(j.type));return n==="unread"&&(k=k.filter(j=>!j.isRead)),n==="important"&&(k=k.filter(j=>j.type==="risk_alert")),k},[t,n]),b=m.useMemo(()=>{const k=[],j=h.filter(N=>Un(N.createdAt)),S=h.filter(N=>Vn(N.createdAt)),p=h.filter(N=>!Un(N.createdAt)&&!Vn(N.createdAt));return j.length>0&&k.push({title:"Today",icon:Zs,items:j}),S.length>0&&k.push({title:"Yesterday",icon:En,items:S}),p.length>0&&k.push({title:"Earlier",icon:En,items:p}),k},[h]);return e.jsx("div",{className:"w-full h-full flex flex-col bg-[#f8fafc]/50",children:e.jsxs("div",{className:"max-w-[900px] mx-auto w-full p-[24px] xl:p-[32px] space-y-[24px] flex-1 overflow-y-auto no-scrollbar pb-12",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("button",{onClick:()=>i("all"),className:`px-6 py-2.5 text-[13px] rounded-full whitespace-nowrap transition-all duration-300 border ${n==="all"?"bg-purple-50 text-[#9333ea] border-purple-200 shadow-md font-bold":"bg-white/80 text-[#64748b] border-white hover:border-[#e2e8f0] shadow-sm font-medium"}`,children:"All"}),e.jsxs("button",{onClick:()=>i("unread"),className:`px-6 py-2.5 text-[13px] rounded-full whitespace-nowrap transition-all duration-300 border flex items-center gap-2 ${n==="unread"?"bg-purple-50 text-[#9333ea] border-purple-200 shadow-md font-bold":"bg-white/80 text-[#64748b] border-white hover:border-[#e2e8f0] shadow-sm font-medium"}`,children:["Unread",e.jsx("span",{className:"w-5 h-5 rounded-full bg-slate-100 text-[10px] font-bold flex items-center justify-center text-slate-500",children:c})]}),e.jsxs("button",{onClick:()=>i("important"),className:`px-6 py-2.5 text-[13px] rounded-full whitespace-nowrap transition-all duration-300 border flex items-center gap-2 ${n==="important"?"bg-purple-50 text-[#9333ea] border-purple-200 shadow-md font-bold":"bg-white/80 text-[#64748b] border-white hover:border-[#e2e8f0] shadow-sm font-medium"}`,children:["Important",t.some(k=>k.type==="risk_alert"&&!k.isRead)&&e.jsx("span",{className:"w-2.5 h-2.5 rounded-full bg-rose-500 shadow-[0_0_8px_rgba(244,63,94,0.6)]"})]}),e.jsxs("div",{className:"ml-auto flex items-center gap-3 shrink-0",children:[e.jsx("span",{className:"text-[13px] font-bold text-[#64748b]",children:c>0?`${c} unread`:"No unread"}),e.jsxs("button",{onClick:o,disabled:c===0,className:"bg-white hover:bg-slate-50 border border-slate-200 text-[#475569] text-[13px] font-bold rounded-full px-5 py-2 shadow-sm transition-all hover:shadow-md hover:-translate-y-0.5 flex items-center gap-2 group disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:translate-y-0 disabled:hover:shadow-sm",children:[e.jsx(ac,{className:"w-4 h-4 text-[#94a3b8] group-hover:text-emerald-500 transition-colors"}),"Mark all as read"]})]})]}),e.jsx("div",{className:"space-y-8",children:a?e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] border border-white p-12 flex flex-col items-center justify-center gap-4",children:[e.jsx(dt,{className:"w-8 h-8 text-[#a855f7] animate-spin"}),e.jsx("p",{className:"text-[14px] font-medium text-[#64748b]",children:"Syncing notifications..."})]}):b.length===0?e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] border border-white p-16 flex flex-col items-center justify-center text-center",children:[e.jsx("div",{className:"w-20 h-20 bg-slate-50 rounded-full flex items-center justify-center mb-6 border border-slate-100",children:e.jsx(Ja,{className:"w-10 h-10 text-slate-300"})}),e.jsx("h3",{className:"text-[18px] font-bold text-[#1e293b] mb-2",children:"All clear!"}),e.jsx("p",{className:"text-[14px] text-[#64748b] max-w-sm",children:"No notifications found for this filter. New alerts will appear here automatically."})]}):b.map(k=>e.jsxs("div",{children:[e.jsxs("h3",{className:"text-[12px] font-bold text-[#94a3b8] uppercase tracking-wider mb-3 ml-2 flex items-center gap-2",children:[e.jsx(k.icon,{className:"w-4 h-4"})," ",k.title]}),e.jsx("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] border border-white shadow-[0_4px_24px_rgba(0,0,0,0.03)] overflow-hidden divide-y divide-[#f1f5f9]",children:k.items.map(j=>{const S=d(j.type),p=j.type==="risk_alert";return e.jsxs(Re.div,{layout:!0,onClick:()=>!j.isRead&&r(j.id),className:`relative p-5 flex gap-5 group cursor-pointer hover:bg-white transition-all duration-300 ${j.isRead?"opacity-80":u(j.type)}`,children:[e.jsx("div",{className:`absolute left-0 top-0 w-1.5 h-full transition-colors ${j.isRead?"bg-transparent":p?"bg-rose-500":"bg-[#a855f7]"}`}),e.jsx("div",{className:`w-12 h-12 rounded-full flex items-center justify-center text-white shrink-0 group-hover:scale-110 transition-transform bg-gradient-to-br ${f(j.type)}`,children:e.jsx(S,{className:"w-6 h-6"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex justify-between items-start mb-1",children:[e.jsxs("h4",{className:"text-[15px] font-bold text-[#1e293b] flex items-center gap-2 truncate pr-4",children:[j.title,!j.isRead&&e.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${p?"bg-rose-500 shadow-[0_0_6px_rgba(244,63,94,0.8)]":"bg-[#a855f7] shadow-[0_0_6px_rgba(168,85,247,0.8)]"}`})]}),e.jsxs("span",{className:`text-[12px] font-bold whitespace-nowrap ${j.isRead?"text-[#94a3b8]":p?"text-rose-600":"text-[#a855f7]"}`,children:[rc(j.createdAt)," ago"]})]}),e.jsx("p",{className:"text-[14px] text-[#475569] font-medium leading-relaxed",children:j.message}),!j.isRead&&j.actionUrl&&e.jsx("div",{className:"mt-3 flex gap-2",children:e.jsx("button",{className:`px-5 py-2 bg-white border rounded-full text-[12px] font-bold shadow-sm transition-all hover:-translate-y-0.5 ${p?"border-rose-200 text-rose-600 hover:bg-rose-50":"border-purple-200 text-[#9333ea] hover:bg-purple-50"}`,children:"Review Plan"})})]}),e.jsx("button",{className:"opacity-0 group-hover:opacity-100 p-2 text-slate-400 hover:text-slate-600 transition-all rounded-full hover:bg-slate-100 shrink-0 self-start",children:e.jsx(fc,{size:18})})]},j.id)})})]},k.title))})]})})},Xm=t=>{const s=t.data(),a=s.startTime,r=s.endTime,o=s.createdAt,n=s.updatedAt,i=l=>{if(l){if(typeof l?.toDate=="function")return l.toDate();if(l instanceof Date)return l}};return{...s,id:t.id,startTime:i(a)||new Date,endTime:i(r),createdAt:i(o)||new Date,updatedAt:i(n)}},Jm=async(t,s)=>{const a=pt($t(Ve,"calendarEvents")),r={id:a.id,userId:t,title:s.title,description:s.description,startTime:s.startTime,endTime:s.endTime,color:s.color,createdAt:new Date};return await is(a,{...r,createdAt:lt(),updatedAt:lt()}),r},Zm=async(t,s)=>{const a=pt(Ve,"calendarEvents",t);await Zt(a,{...s,updatedAt:lt()})},eu=async t=>{await _l(pt(Ve,"calendarEvents",t))},Ji=(t,s={},a,r)=>{if(!t)return a([]),()=>{};const{limitCount:o=500}=s,n=kt($t(Ve,"calendarEvents"),jt("userId","==",t),Vr(o));return ti(n,i=>{a(i.docs.map(l=>Xm(l)))},i=>{console.error("Error subscribing to calendar events:",i),r?.(i)})};function tu({className:t,...s}){return e.jsx("textarea",{"data-slot":"textarea",className:Xo("resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),...s})}const qs=t=>String(t).padStart(2,"0"),Ms=t=>`${t.getFullYear()}-${qs(t.getMonth()+1)}-${qs(t.getDate())}`,Gr=t=>new Date(t.getFullYear(),t.getMonth(),1),Ro=t=>new Date(t.getFullYear(),t.getMonth()+1,0),su=t=>{const s=Gr(t),a=s.getDay(),r=new Date(s);return r.setDate(s.getDate()-a),r.setHours(0,0,0,0),r},au=(t,s)=>{const a=new Date(t);return a.setDate(a.getDate()+s),a},_o=(t,s)=>t.getFullYear()===s.getFullYear()&&t.getMonth()===s.getMonth()&&t.getDate()===s.getDate(),ru=(t,s)=>t.getFullYear()===s.getFullYear()&&t.getMonth()===s.getMonth(),nu=t=>t.toLocaleDateString(void 0,{month:"long",year:"numeric"}),Oa=t=>t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),Mo=(t,s)=>{const[a,r,o]=t.split("-").map(l=>parseInt(l,10)),[n,i]=s.split(":").map(l=>parseInt(l,10));return new Date(a,(r||1)-1,o||1,n||0,i||0,0,0)},ou=["purple","blue","emerald","amber","rose"],Ir=t=>{switch(t){case"blue":return"#3b82f6";case"emerald":return"#10b981";case"amber":return"#f59e0b";case"rose":return"#f43f5e";case"purple":default:return"#a855f7"}},iu=(t,s=!1)=>{if(s)return"bg-blue-50 text-blue-700 border-blue-100 opacity-80";switch(t){case"blue":return"bg-blue-50 text-blue-700 border-blue-100 opacity-90 hover:bg-blue-100";case"emerald":return"bg-emerald-50 text-emerald-700 border-emerald-100 opacity-90 hover:bg-emerald-100";case"amber":return"bg-amber-50 text-amber-700 border-amber-100 opacity-90 hover:bg-amber-100";case"rose":return"bg-rose-50 text-rose-700 border-rose-100 opacity-90 hover:bg-rose-100";case"purple":default:return"bg-purple-50 text-purple-700 border-purple-100 opacity-90 hover:bg-purple-100"}},lu=(t,s=!1)=>{if(s)return{dot:"bg-[#3b82f6]",border:"border-l-blue-400",time:"text-blue-600 border-blue-50"};switch(t){case"blue":return{dot:"bg-blue-500",border:"border-l-blue-400",time:"text-blue-600 border-blue-50"};case"emerald":return{dot:"bg-emerald-500",border:"border-l-emerald-400",time:"text-emerald-600 border-emerald-50"};case"amber":return{dot:"bg-amber-500",border:"border-l-amber-400",time:"text-amber-600 border-amber-50"};case"rose":return{dot:"bg-rose-500",border:"border-l-rose-400",time:"text-rose-600 border-rose-50"};case"purple":default:return{dot:"bg-[#a855f7]",border:"border-l-[#a855f7]",time:"text-[#a855f7] border-purple-50"}}},Tr=[{names:["sun","sunday"],day:0},{names:["mon","monday"],day:1},{names:["tue","tues","tuesday"],day:2},{names:["wed","wednesday"],day:3},{names:["thu","thurs","thursday"],day:4},{names:["fri","friday"],day:5},{names:["sat","saturday"],day:6}];function cu(t){const s=t.toLowerCase(),a=new Set;if(s.includes("daily")||s.includes("everyday"))return[0,1,2,3,4,5,6];if(s.includes("weekends"))return[0,6];if(s.includes("weekdays"))return[1,2,3,4,5];const r=s.match(/(mon|tue|wed|thu|fri|sat|sun)[\s/-]*(mon|tue|wed|thu|fri|sat|sun)/);if(r){const o=Tr.find(i=>i.names.includes(r[1]))?.day,n=Tr.find(i=>i.names.includes(r[2]))?.day;if(o!==void 0&&n!==void 0){let i=o;for(;a.add(i),i!==n;)i=(i+1)%7;return Array.from(a)}}return Tr.forEach(({names:o,day:n})=>{o.some(i=>s.includes(i))&&a.add(n)}),Array.from(a).sort((o,n)=>o-n)}const du=({classes:t,teacherId:s})=>{const{currentUser:a}=ds(),[r,o]=m.useState([]),[n,i]=m.useState(!0),[l,c]=m.useState(""),[d,u]=m.useState(!0),[f,h]=m.useState(()=>{const $=new Date;return $.setHours(0,0,0,0),$}),[b,k]=m.useState(()=>{const $=new Date;return $.setHours(0,0,0,0),$}),[j,S]=m.useState(new Set),[p,N]=m.useState(!1),[C,z]=m.useState(null),[I,U]=m.useState(!1),[v,y]=m.useState(""),[w,A]=m.useState(""),[B,E]=m.useState(()=>Ms(new Date)),[F,X]=m.useState("09:00"),[J,ce]=m.useState(""),[ne,xe]=m.useState("purple"),[he,H]=m.useState(!1),[q,M]=m.useState(null);m.useEffect(()=>{if(!a?.uid){o([]),i(!1);return}c(""),i(!0);const $=Ji(a.uid,{limitCount:500},oe=>{o(oe),i(!1)},()=>{c("Unable to load calendar events right now."),i(!1)});return()=>$()},[a?.uid]);const Y=m.useMemo(()=>{const $=Gr(f);return $.setHours(0,0,0,0),$},[f]),ae=m.useMemo(()=>{const $=Ro(f);return $.setHours(23,59,59,999),$},[f]),$e=m.useMemo(()=>{if(!t||t.length===0)return[];const $=[],oe=Gr(f),pe=Ro(f),we=new Date(oe);for(;we<=pe;){const se=we.getDay();t.forEach(fe=>{if(cu(fe.schedule).includes(se)){const Fe=`schedule-${fe.id}-${Ms(we)}`;j.has(Fe)||$.push({id:Fe,userId:s||"",title:fe.name,startTime:new Date(we),createdAt:new Date})}}),we.setDate(we.getDate()+1)}return $},[t,f,s,j]),Me=m.useMemo(()=>[...r,...$e],[r,$e]),Ge=m.useMemo(()=>Me.filter($=>$.startTime>=Y&&$.startTime<=ae).sort(($,oe)=>$.startTime.getTime()-oe.startTime.getTime()),[Me,Y,ae]),G=m.useMemo(()=>{const $=new Map;for(const oe of Ge){const pe=Ms(oe.startTime),we=$.get(pe)||[];we.push(oe),$.set(pe,we)}return $},[Ge]),te=m.useMemo(()=>Ms(b),[b]),g=m.useMemo(()=>[...G.get(te)||[]].sort((oe,pe)=>oe.startTime.getTime()-pe.startTime.getTime()),[G,te]),T=m.useMemo(()=>{const $=su(f);return Array.from({length:42}).map((oe,pe)=>au($,pe))},[f]),R=$=>{const oe=Ms($);z(null),y(""),A(""),E(oe),X("09:00"),ce(""),xe("purple"),N(!0)},K=$=>{$.id.startsWith("schedule-")?(S(oe=>new Set(oe).add($.id)),z(null)):z($.id),y($.title),A($.description||""),E(Ms($.startTime)),X(qs($.startTime.getHours())+":"+qs($.startTime.getMinutes())),ce($.endTime?qs($.endTime.getHours())+":"+qs($.endTime.getMinutes()):""),xe($.color||"purple"),H(!1),N(!0)},Z=($,oe)=>{$.stopPropagation(),M(oe),H(!0)},re=async()=>{const $=a?.uid||s||"local-user";if(!v.trim()){c("Event title is required.");return}U(!0),c("");const oe=Mo(B,F),pe=J?Mo(B,J):void 0,we={title:v.trim(),description:w.trim()?w.trim():void 0,startTime:oe,endTime:pe&&pe.getTime()>oe.getTime()?pe:void 0,color:ne};try{if(C)o(se=>se.map(fe=>fe.id===C?{...fe,...we}:fe)),await Zm(C,we);else{const se=`temp-${Date.now()}`;o(fe=>[...fe,{id:se,userId:$,createdAt:new Date,...we}]),await Jm($,we)}N(!1)}catch(se){console.error(se),N(!1)}finally{U(!1)}},le=async $=>{if($.startsWith("schedule-")){S(oe=>new Set(oe).add($)),q?.id===$&&H(!1);return}c(""),o(oe=>oe.filter(pe=>pe.id!==$)),q?.id===$&&H(!1);try{await eu($)}catch(oe){console.error(oe)}};return e.jsxs("div",{className:"w-full h-full flex flex-col px-[24px] xl:px-[32px] py-[24px] xl:py-[32px] overflow-hidden",children:[e.jsxs("div",{className:"flex flex-col lg:flex-row gap-6 flex-1 min-h-0 w-full max-w-[1400px] mx-auto",children:[e.jsx("div",{className:`flex flex-col flex-1 min-w-0 transition-all duration-500 ${d?"lg:w-[65%] xl:w-[70%]":"lg:w-full"}`,children:e.jsxs("div",{className:"bg-white/90 backdrop-blur-[12px] rounded-[24px] border border-white shadow-[0_8px_32px_rgba(0,0,0,0.04)] overflow-hidden flex flex-col h-full",children:[e.jsxs("div",{className:"p-6 border-b border-[#a855f7] bg-[#a855f7] shrink-0 flex justify-between items-center rounded-t-[24px] relative overflow-hidden group",children:[e.jsx("div",{className:"absolute -bottom-24 -right-12 w-64 h-64 bg-white/10 rounded-full"}),e.jsx("div",{className:"absolute -top-20 left-1/4 w-40 h-40 bg-white/5 rounded-full"}),e.jsxs("div",{className:"flex items-center gap-5 relative z-10",children:[e.jsx("button",{onClick:()=>h(new Date(f.getFullYear(),f.getMonth()-1,1)),"aria-label":"Previous month",className:"w-9 h-9 rounded-full flex items-center justify-center text-[#6d28d9] bg-white hover:bg-slate-50 transition-colors shadow-sm hover:shadow-md active:scale-90",children:e.jsx(Ss,{className:"w-5 h-5"})}),e.jsx("h2",{className:"text-[22px] font-bold text-white w-44 text-center tracking-tight",children:nu(f)}),e.jsx("button",{onClick:()=>h(new Date(f.getFullYear(),f.getMonth()+1,1)),"aria-label":"Next month",className:"w-9 h-9 rounded-full flex items-center justify-center text-[#6d28d9] bg-white hover:bg-slate-50 transition-colors shadow-sm hover:shadow-md active:scale-90",children:e.jsx(ys,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"flex items-center gap-3 relative z-10",children:[e.jsxs("span",{className:"text-[13px] font-bold text-[#6d28d9] bg-white px-4 py-1.5 rounded-full shadow-sm",children:[Ge.length," events"]}),e.jsx("button",{onClick:()=>u(!d),className:`w-9 h-9 rounded-full flex items-center justify-center transition-all shadow-sm hover:shadow-md border ${d?"text-[#6d28d9] bg-white border-white":"text-white bg-white/20 border-white/30 backdrop-blur-md"}`,title:d?"Hide Sidebar":"Show Sidebar","aria-label":d?"Hide Sidebar":"Show Sidebar",children:e.jsx(kc,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"flex-1 flex flex-col min-h-0 overflow-y-auto custom-scrollbar",children:[e.jsx("div",{className:"grid grid-cols-7 text-center border-b border-slate-200/60 pb-5 shrink-0 sticky top-0 bg-white z-20 shadow-[0_10px_10px_-10px_rgba(0,0,0,0.05)] px-4 pt-6",children:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map($=>e.jsx("div",{className:"text-[12px] font-bold text-[#475569] uppercase tracking-widest",children:$},$))}),e.jsx("div",{className:"grid grid-cols-7 gap-2 pb-6 px-4",children:T.map($=>{const oe=Ms($),pe=G.get(oe)||[],we=_o($,b),se=_o($,new Date),fe=ru($,f);return e.jsxs("div",{onClick:()=>k(new Date($)),className:`group p-2 rounded-lg transition-all cursor-pointer border-2 flex flex-col relative min-h-[100px] xl:min-h-[120px] ${we?"bg-purple-50/50 border-[#a855f7] shadow-sm z-10":se?"bg-purple-50/20 border-purple-300 shadow-[inset_0_0_20px_rgba(168,85,247,0.05)] hover:bg-purple-50/40 hover:border-purple-400":"border-transparent hover:bg-slate-50 hover:border-slate-200"} ${fe?"":"opacity-30 grayscale"}`,children:[e.jsx("div",{className:"flex justify-between items-start",children:e.jsx("span",{className:`w-7 h-7 rounded-full flex items-center justify-center font-bold text-[14px] transition-all ${se?"bg-gradient-to-br from-[#a855f7] to-[#9333ea] text-white shadow-md":we?"text-[#9333ea]":"text-[#1e293b]"}`,children:$.getDate()})}),e.jsxs("div",{className:"mt-1 space-y-1",children:[pe.slice(0,3).map(et=>{const Fe=et.id.startsWith("schedule-");return e.jsx("div",{onClick:Ke=>Z(Ke,et),className:`w-full truncate text-[11px] font-bold px-2 py-1.5 rounded border shadow-sm transition-all hover:-translate-y-[1px] hover:shadow-md cursor-pointer ${iu(et.color,Fe)}`,children:et.title},et.id)}),pe.length>3&&e.jsxs("div",{className:"text-[10px] font-bold text-[#64748b] pl-1 pt-0.5",children:["+",pe.length-3," more"]})]})]},oe)})})]})]})}),e.jsx(Et,{children:d&&e.jsx(Re.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},className:"lg:w-[35%] xl:w-[30%] h-full shrink-0",children:e.jsxs("div",{className:"bg-white/90 backdrop-blur-[12px] rounded-[24px] border border-white shadow-[0_8px_32px_rgba(0,0,0,0.04)] overflow-hidden flex flex-col h-full",children:[e.jsxs("div",{className:"p-6 border-b border-[#f1f5f9] bg-white shrink-0 flex justify-between items-center relative overflow-hidden group",children:[e.jsx("div",{className:"absolute top-[-30px] right-[-30px] w-24 h-24 bg-purple-50 rounded-full mix-blend-multiply filter blur-2xl opacity-50 transition-transform duration-700 group-hover:scale-150"}),e.jsxs("div",{className:"relative z-10",children:[e.jsx("h2",{className:"text-[20px] font-bold text-[#1e293b]",children:b.toLocaleDateString(void 0,{weekday:"long"})}),e.jsx("p",{className:"text-[13px] font-medium text-[#64748b]",children:b.toLocaleDateString(void 0,{day:"numeric",month:"long",year:"numeric"})})]}),e.jsx("button",{onClick:()=>R(b),title:"Add Event",className:"w-10 h-10 flex items-center justify-center rounded-full bg-[#a855f7] text-white hover:bg-[#9333ea] shadow-md shadow-purple-200 transition-all hover:scale-105 active:scale-95 relative z-10",children:e.jsx(Js,{className:"w-5 h-5"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-6 space-y-6 custom-scrollbar pb-12",children:g.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-center opacity-40",children:[e.jsx(br,{className:"w-12 h-12 text-slate-300 mb-4"}),e.jsx("p",{className:"text-[14px] font-bold text-[#1e293b]",children:"No events today"}),e.jsx("p",{className:"text-[12px] text-[#64748b]",children:"Schedule a meeting or add a class."})]}):g.map($=>{const oe=$.id.startsWith("schedule-"),pe=lu($.color,oe);return e.jsxs("div",{className:"relative pl-6 before:absolute before:left-2 before:top-2 before:bottom-[-24px] before:w-[2px] before:bg-slate-100 last:before:hidden",children:[e.jsx("div",{className:`absolute left-0 top-1.5 w-4 h-4 rounded-full border-[3px] border-white shadow-sm z-10 ${pe.dot}`}),e.jsxs("div",{onClick:we=>Z(we,$),className:`group relative bg-white border border-[#e2e8f0] rounded-[20px] p-5 shadow-sm hover:shadow-md hover:-translate-y-0.5 transition-all border-l-[6px] cursor-pointer ${pe.border}`,children:[e.jsx("div",{className:"flex justify-between items-start mb-2",children:e.jsx("h4",{className:"text-[15px] font-bold text-[#1e293b] group-hover:text-[#9333ea] transition-colors break-words line-clamp-2 w-full pr-2",children:$.title})}),e.jsxs("div",{className:`flex items-center gap-2 text-[11px] font-bold bg-slate-50 w-max px-2.5 py-1 rounded-lg border mb-3 ${pe.time}`,children:[e.jsx(Zs,{className:"w-3.5 h-3.5"})," ",e.jsxs("span",{children:[Oa($.startTime),$.endTime?` - ${Oa($.endTime)}`:""]})]}),$.description&&e.jsx("p",{className:"text-[13px] font-medium text-[#64748b] bg-slate-50/50 px-3 py-2 rounded-xl border border-slate-100/30 break-words whitespace-normal w-full overflow-hidden",children:$.description})]})]},$.id)})})]})})})]}),e.jsx(An,{open:p,onOpenChange:N,children:e.jsx(zn,{className:"sm:max-w-[500px] p-0 overflow-hidden rounded-[28px] border-none shadow-2xl [&>button]:hidden",children:e.jsxs("div",{className:"p-8 bg-white",children:[e.jsxs(nc,{className:"mb-6",children:[e.jsx(oc,{className:"text-[24px] font-bold text-[#1e293b] tracking-tight",children:C?"Edit Event":"Add New Event"}),e.jsx(ic,{className:"text-[14px] text-[#64748b]",children:"Schedule a classroom activity or reminder."})]}),l&&e.jsx("p",{className:"text-rose-500 text-sm font-semibold mb-4",children:l}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] ml-1",children:"Event Title"}),e.jsx(ws,{value:v,onChange:$=>y($.target.value),placeholder:"e.g., Mathematics Quiz - Grade 11",className:"bg-white border-slate-200 focus:border-[#a855f7] focus:ring-4 focus:ring-purple-50 rounded-xl h-12 px-4 transition-all text-[14px]"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] ml-1",children:"Date"}),e.jsx(ws,{type:"date",value:B,onChange:$=>E($.target.value),className:"bg-white border-slate-200 focus:border-[#a855f7] rounded-xl h-12 px-4 text-[14px]"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] ml-1",children:"Start Time"}),e.jsx(ws,{type:"time",value:F,onChange:$=>X($.target.value),className:"bg-white border-slate-200 focus:border-[#a855f7] rounded-xl h-12 px-4 text-[14px]"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] ml-1",children:"Notes (Optional)"}),e.jsx(tu,{value:w,onChange:$=>A($.target.value),placeholder:"Additional details about this event...",className:"bg-white border-slate-200 focus:border-[#a855f7] rounded-xl min-h-[100px] p-4 transition-all text-[14px] break-all"})]}),e.jsxs("div",{className:"space-y-2 pt-2",children:[e.jsx("label",{className:"text-[13px] font-bold text-[#1e293b] ml-1",children:"Color Theme"}),e.jsx("div",{className:"flex gap-3 ml-1",children:ou.map($=>e.jsx("button",{onClick:()=>xe($),className:`w-8 h-8 rounded-full flex items-center justify-center transition-all ${ne===$?"ring-2 ring-offset-2 ring-slate-800 scale-110 shadow-sm":"hover:scale-110 opacity-80 hover:opacity-100"}`,style:{backgroundColor:Ir($)},title:$,children:ne===$&&e.jsx(Mt,{className:"w-4 h-4 text-white"})},$))})]})]}),e.jsxs("div",{className:"flex gap-3 mt-8",children:[e.jsx(xt,{variant:"outline",onClick:()=>N(!1),className:"flex-1 h-12 rounded-xl font-bold border-slate-200 hover:bg-slate-100 transition-all text-[14px]",children:"Cancel"}),e.jsx(xt,{onClick:re,disabled:I,className:"flex-[1.5] h-12 rounded-xl font-bold bg-[#a855f7] hover:bg-[#9333ea] text-white shadow-lg shadow-purple-200 transition-all hover:scale-[1.02] text-[14px]",children:I?e.jsx(dt,{className:"w-5 h-5 animate-spin"}):"Save Event"})]})]})})}),e.jsx(An,{open:he,onOpenChange:H,children:e.jsx(zn,{className:"sm:max-w-[400px] p-0 overflow-hidden rounded-[24px] border-none shadow-2xl [&>button]:hidden",children:q&&e.jsxs("div",{className:"p-8 bg-white relative",children:[e.jsx("button",{onClick:()=>H(!1),"aria-label":"Close event details",className:"absolute top-4 right-4 p-2 text-slate-400 hover:text-slate-600 hover:bg-slate-100 rounded-full transition-colors",children:e.jsx(cs,{size:18})}),e.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[e.jsx("div",{className:"w-12 h-12 rounded-2xl flex items-center justify-center shrink-0",style:{backgroundColor:Ir(q.color||"purple")+"20",color:Ir(q.color||"purple")},children:q.id.startsWith("schedule-")?e.jsx(Ya,{size:24}):e.jsx(br,{size:24})}),e.jsxs("div",{className:"pr-6",children:[e.jsx("h3",{className:"text-[18px] font-bold text-[#1e293b] leading-tight mb-2",children:q.title}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md bg-slate-100 text-slate-600 text-[12px] font-semibold border border-slate-200",children:[e.jsx(br,{size:12}),q.startTime.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"})]}),e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md bg-slate-100 text-slate-600 text-[12px] font-semibold border border-slate-200",children:[e.jsx(Zs,{size:12}),Oa(q.startTime),q.endTime?` - ${Oa(q.endTime)}`:""]})]})]})]}),q.description&&e.jsxs("div",{className:"mb-8",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(mc,{size:16,className:"text-slate-400"}),e.jsx("h4",{className:"text-[13px] font-bold text-slate-700",children:"Details"})]}),e.jsx("p",{className:"text-[14px] text-slate-600 leading-relaxed bg-slate-50/50 p-4 rounded-xl border border-slate-100/50 break-words",children:q.description})]}),e.jsxs("div",{className:"flex gap-3 pt-2 border-t border-slate-100",children:[e.jsxs(xt,{variant:"outline",onClick:()=>le(q.id),className:"flex-1 h-11 rounded-xl font-bold border-rose-200 text-rose-600 hover:bg-rose-50 hover:text-rose-700 transition-all text-[13px]",children:[e.jsx(ri,{className:"w-4 h-4 mr-2"})," Delete"]}),e.jsxs(xt,{onClick:()=>K(q),className:"flex-1 h-11 rounded-xl font-bold bg-[#1e293b] hover:bg-slate-800 text-white shadow-lg shadow-slate-200 transition-all hover:scale-[1.02] text-[13px]",children:[e.jsx(ci,{className:"w-4 h-4 mr-2"})," Edit Event"]})]})]})})})]})},ar=[{hex:"#9956DE",bg:"bg-[#9956DE]/10",border:"border-[#9956DE]/20",borderLeft:"border-l-[#9956DE]",text:"text-[#9956DE]",groupHover:"group-hover:text-[#9956DE]"},{hex:"#7274ED",bg:"bg-[#7274ED]/10",border:"border-[#7274ED]/20",borderLeft:"border-l-[#7274ED]",text:"text-[#7274ED]",groupHover:"group-hover:text-[#7274ED]"},{hex:"#1FA7E1",bg:"bg-[#1FA7E1]/10",border:"border-[#1FA7E1]/20",borderLeft:"border-l-[#1FA7E1]",text:"text-[#1FA7E1]",groupHover:"group-hover:text-[#1FA7E1]"},{hex:"#6ED1CF",bg:"bg-[#6ED1CF]/10",border:"border-[#6ED1CF]/20",borderLeft:"border-l-[#6ED1CF]",text:"text-[#6ED1CF]",groupHover:"group-hover:text-[#6ED1CF]"},{hex:"#FFB356",bg:"bg-[#FFB356]/10",border:"border-[#FFB356]/20",borderLeft:"border-l-[#FFB356]",text:"text-[#FFB356]",groupHover:"group-hover:text-[#FFB356]"}],Ao=({classes:t,onSelectClass:s,onOpenNotifications:a,onOpenProfile:r,insightDismissed:o,onOpenInsightModal:n,viewType:i="analytics",onCreateClass:l})=>{const{currentUser:c,userProfile:d}=ds(),[u,f]=m.useState(""),h=i==="competency",b=t.reduce((p,N)=>p+(N.studentCount||0),0),k=t.reduce((p,N)=>p+(N.atRiskCount||0),0),j=t.length>0?(t.reduce((p,N)=>p+(N.avgScore||0),0)/t.length).toFixed(1):0,S=t.filter(p=>p.name.toLowerCase().includes(u.toLowerCase())||(p.gradeLevel||"").toLowerCase().includes(u.toLowerCase()));return e.jsx("div",{className:"h-full overflow-y-auto w-full block",children:e.jsxs("div",{className:"max-w-[1400px] mx-auto p-3 sm:p-[24px] xl:p-[32px] space-y-3 sm:space-y-[24px]",children:[e.jsx("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:e.jsx("div",{className:"flex-1 max-w-xl",children:e.jsxs("div",{className:"flex items-center bg-white/80 px-4 py-2.5 rounded-[16px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white backdrop-blur-[12px] group focus-within:ring-2 focus-within:ring-indigo-500/20 transition-all",children:[e.jsx(Os,{className:"w-4 h-4 text-[#64748b] shrink-0 group-focus-within:text-[#4f46e5] transition-colors"}),e.jsx("input",{type:"text",placeholder:"Global search for a student across all classes...",value:u,onChange:p=>f(p.target.value),className:"bg-transparent border-none focus:outline-none ml-3 text-[13px] w-full text-[#475569] placeholder:text-[#94a3b8]"})]})})}),h?e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-[16px]",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(168,85,247,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Total Students Evaluated"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(os,{className:"w-4 h-4 text-white"})})]}),e.jsx("div",{className:"text-[32px] font-bold relative z-10 leading-none mb-6",children:b}),e.jsx("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3",children:e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Active across all classes"})})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#0ea5e9] to-[#0284c7] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(14,165,233,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Global Avg Competency"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(vs,{className:"w-4 h-4 text-white"})})]}),e.jsxs("div",{className:"text-[32px] font-bold relative z-10 leading-none mb-6",children:[j,"%"]}),e.jsxs("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3",children:[e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Vs. expected benchmark"}),e.jsx("span",{className:"text-[11px] font-bold bg-white/20 px-2 py-0.5 rounded-[4px] backdrop-blur-sm",children:"+1.4%"})]})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f97316] to-[#ea580c] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(249,115,22,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-4",children:[e.jsx("span",{className:"text-[13px] font-medium text-white/90",children:"Universal Weakness"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(vs,{className:"w-4 h-4 text-white"})})]}),e.jsx("div",{className:"text-[20px] font-bold relative z-10 leading-tight mb-2 truncate",children:"Foundational Skills"}),e.jsx("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3 mt-auto",children:e.jsxs("span",{className:"text-[12px] font-medium text-white/90",children:["Identified in ",t.length," classes"]})})]})]}):e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-2 sm:gap-[16px]",children:[e.jsxs("div",{className:"lg:col-span-8 grid grid-cols-3 sm:grid-cols-3 gap-2 sm:gap-[16px]",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#10b981] to-[#059669] rounded-[14px] sm:rounded-[16px] p-[14px] sm:p-[20px] shadow-[0_4px_12px_rgba(16,185,129,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2 sm:mb-4",children:[e.jsx("span",{className:"text-[11px] sm:text-[13px] font-medium text-white/90",children:"Attendance rate"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(os,{className:"w-4 h-4 text-white"})})]}),e.jsx("div",{className:"text-[24px] sm:text-[32px] font-bold relative z-10 leading-none mb-3 sm:mb-6",children:"94%"}),e.jsxs("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3",children:[e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Active participants"}),e.jsx("span",{className:"text-[11px] font-bold bg-white/20 px-2 py-0.5 rounded-[4px] backdrop-blur-sm",children:b>0?Math.round(b*.94):0})]})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#0ea5e9] to-[#0284c7] rounded-[14px] sm:rounded-[16px] p-[14px] sm:p-[20px] shadow-[0_4px_12px_rgba(14,165,233,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2 sm:mb-4",children:[e.jsx("span",{className:"text-[11px] sm:text-[13px] font-medium text-white/90",children:"Class average"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(vs,{className:"w-4 h-4 text-white"})})]}),e.jsxs("div",{className:"text-[24px] sm:text-[32px] font-bold relative z-10 leading-none mb-3 sm:mb-6",children:[j,"%"]}),e.jsxs("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3",children:[e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Vs. last month"}),e.jsx("span",{className:"text-[11px] font-bold bg-white/20 px-2 py-0.5 rounded-[4px] backdrop-blur-sm",children:"+2.1%"})]})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f97316] to-[#ea580c] rounded-[14px] sm:rounded-[16px] p-[14px] sm:p-[20px] shadow-[0_4px_12px_rgba(249,115,22,0.2)] flex flex-col justify-between h-full group text-white",children:[e.jsx("div",{className:"absolute -right-12 -bottom-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex items-start justify-between relative z-10 mb-2 sm:mb-4",children:[e.jsx("span",{className:"text-[11px] sm:text-[13px] font-medium text-white/90",children:"At risk"}),e.jsx("div",{className:"w-8 h-8 rounded-full border border-white/30 flex items-center justify-center bg-white/10",children:e.jsx(or,{className:"w-4 h-4 text-white"})})]}),e.jsx("div",{className:"text-[24px] sm:text-[32px] font-bold relative z-10 leading-none mb-3 sm:mb-6",children:k}),e.jsxs("div",{className:"flex items-center justify-between relative z-10 border-t border-white/20 pt-3",children:[e.jsx("span",{className:"text-[12px] font-medium text-white/90",children:"Requires attention"}),e.jsxs("span",{className:"text-[11px] font-bold bg-white/20 px-2 py-0.5 rounded-[4px] backdrop-blur-sm",children:[b>0?Math.round(k/b*100):0,"%"]})]})]})]}),e.jsxs("div",{className:"lg:col-span-4 relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(168,85,247,0.2)] flex flex-col text-white",children:[e.jsx("div",{className:"absolute -right-12 -top-12 w-40 h-40 bg-white/10 rounded-full"}),e.jsxs("div",{className:"flex justify-between items-center mb-4 relative z-10 border-b border-white/20 pb-3",children:[e.jsxs("h3",{className:"text-[14px] font-semibold text-white flex items-center gap-2",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-white animate-pulse shadow-[0_0_8px_rgba(255,255,255,0.8)]"}),"AI Action Items"]}),e.jsx("span",{className:"text-[10px] font-bold text-[#9333ea] bg-white px-2 py-0.5 rounded-[4px]",children:"2 Pending"})]}),e.jsxs("div",{className:"space-y-[8px] flex-1 overflow-y-auto no-scrollbar relative z-10",children:[e.jsxs("div",{className:"bg-white/10 hover:bg-white/20 rounded-[8px] p-3 text-[12px] border border-white/10 transition-colors backdrop-blur-sm group cursor-pointer flex gap-3 items-start",children:[e.jsx("div",{className:"mt-0.5 shrink-0 text-white/80 group-hover:text-white transition-colors",children:e.jsx(di,{className:"w-4 h-4"})}),e.jsxs("div",{className:"leading-snug text-white/90",children:[e.jsx("span",{className:"font-bold text-white",children:"Grade 11 - Section B"})," average dropped by 4% after the last quiz."]})]}),e.jsxs("div",{className:"bg-white/10 hover:bg-white/20 rounded-[8px] p-3 text-[12px] border border-white/10 transition-colors backdrop-blur-sm group cursor-pointer flex gap-3 items-start",children:[e.jsx("div",{className:"mt-0.5 shrink-0 text-white/80 group-hover:text-white transition-colors",children:e.jsx(gs,{className:"w-4 h-4"})}),e.jsxs("div",{className:"leading-snug text-white/90",children:[e.jsx("span",{className:"font-bold text-white",children:"3 Lesson Plans"})," generated and awaiting your review."]})]})]})]})]}),e.jsxs("div",{className:"bg-white/60 backdrop-blur-[12px] rounded-[24px] p-3 sm:p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-white mt-3 sm:mt-[24px]",children:[e.jsxs("div",{className:"mb-6 border-b border-[#f1f5f9] pb-4 flex items-center justify-between",children:[e.jsx("h2",{className:"text-[18px] font-semibold text-[#1e293b]",children:h?"Select a Class":"My Classes"}),l&&!h&&e.jsxs("button",{onClick:l,className:"flex items-center gap-1.5 px-3 py-1.5 text-[12px] font-semibold text-[#9956DE] bg-[#9956DE]/10 rounded-lg hover:bg-[#9956DE]/20 transition-colors",children:[e.jsx(Js,{size:14}),"Create Class"]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-[16px]",children:[S.map((p,N)=>{const C=ar[N%ar.length];let z=null;return p.riskLevel==="high"?z=e.jsx("span",{className:"inline-flex px-2 py-1 bg-rose-50 text-rose-600 text-[10px] font-bold rounded-md border border-rose-100/50 uppercase",children:"High Risk"}):p.riskLevel==="medium"?z=e.jsx("span",{className:"inline-flex px-2 py-1 bg-amber-50 text-amber-600 text-[10px] font-bold rounded-md border border-amber-100/50 uppercase",children:"Medium Risk"}):z=e.jsx("span",{className:"inline-flex px-2 py-1 bg-emerald-50 text-emerald-600 text-[10px] font-bold rounded-md border border-emerald-100/50 uppercase",children:"On Track"}),e.jsxs("div",{onClick:()=>s(p),className:`flex flex-col p-[16px] bg-white shadow-[0_1px_4px_rgba(0,0,0,0.04)] hover:shadow-md hover:-translate-y-0.5 rounded-[18px] transition-all cursor-pointer group border border-[#f1f5f9] border-l-[6px] ${C.borderLeft}`,children:[e.jsxs("div",{className:"flex justify-between items-start mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-10 h-10 rounded-[12px] ${C.bg} flex items-center justify-center border ${C.border}`,children:e.jsx(Gt,{className:`w-5 h-5 ${C.text}`})}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-bold text-[14px] text-[#1e293b] mb-0.5 transition-colors ${C.groupHover}`,children:p.name}),e.jsx("p",{className:"text-[11px] font-semibold text-[#64748b] uppercase tracking-wider",children:p.gradeLevel||"Senior High"})]})]}),z]}),e.jsxs("div",{className:"flex items-center justify-between text-[13px] text-[#475569] bg-[#f8fafc] rounded-[12px] p-3 border border-[#f1f5f9]",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] font-semibold text-[#64748b] uppercase tracking-wider mb-1",children:"Students"}),e.jsx("span",{className:"font-semibold text-[#1e293b]",children:p.studentCount})]}),e.jsx("div",{className:"w-[1px] h-8 bg-[#e2e8f0]"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] font-semibold text-[#64748b] uppercase tracking-wider mb-1",children:h?"Avg Competency":"Average"}),e.jsxs("span",{className:"font-semibold text-[#1e293b]",children:[p.avgScore,"%"]})]}),!h&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-[1px] h-8 bg-[#e2e8f0]"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] font-semibold text-[#64748b] uppercase tracking-wider mb-1",children:"Schedule"}),e.jsx("span",{className:"font-semibold text-[#1e293b]",children:p.schedule||"Mon-Fri"})]})]})]})]},p.id)}),S.length===0&&e.jsx("div",{className:"col-span-full py-8 text-center text-[#64748b] text-[13px] bg-[#f8fafc] rounded-[18px] border border-[#e2e8f0]",children:"No classes match your search."})]})]})]})})},Zi="PH_SHS_OFFICIAL_CLASS_RECORD",mu=.85,Qr=.85,uu="2026.04.24",el=4,Va=["INPUT DATA","SENIOR HIGH SCHOOL CLASS RECORD","LEARNERS NAMES","WRITTEN WORK","PERFORMANCE TASKS","QUARTERLY ASSESSMENT","REMARK","FINAL SEMESTRAL GRADES"],xu=[...Va,"Pursuant to DepEd Order 8 series of 2015","INITIAL GRADE","QUARTERLY GRADE","ADDITIONAL REMARKS","MALE","FEMALE","SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY","WEIGHT OF COMPONENTS","LOOK UP","HELPER","ATTACHMENTS"],pu=["SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY"],Ma=["WITH ATTACHMENTS","OFFICIALLY DROPPED","WITHDRAWN","UNOFFICIALLY DROPPED","TRANSFEREE","SHIFTER"],hu=["TOTAL","SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY","WEIGHT OF COMPONENTS"],fu={SECOND:["SECOND QUARTER","2ND QUARTER","Q2"]},Ws={inputData:["input data"],firstQuarter:["first quarter","1st quarter","q1"],secondQuarter:["second quarter","2nd quarter","q2"],finalSemestral:["final semestral","final grades","semestral"],helper:["helper","weight","attachments"],lookup:["look up","lookup","reference"]},Ht={region:["REGION"],division:["DIVISION"],schoolName:["SCHOOL NAME"],schoolId:["SCHOOL ID"],schoolYear:["SCHOOL YEAR"],gradeSection:["GRADE / SECTION","GRADE/SECTION"],semester:["SEMESTER"],track:["TRACK"],subjectCode:["SUBJECT CODE"],subjectName:["SUBJECT NAME","SUBJECT"],teacherName:["TEACHER","NAME OF TEACHER"]},De={learnerNo:["NO","NO.","#"],learnerName:["LEARNERS NAMES","LEARNER NAME","NAME"],writtenWork:["WRITTEN WORK","WW"],performanceTasks:["PERFORMANCE TASKS","PT"],quarterlyAssessment:["QUARTERLY ASSESSMENT","QA"],total:["TOTAL"],ps:["PS"],ws:["WS"],initialGrade:["INITIAL GRADE"],quarterlyGrade:["QUARTERLY GRADE"],firstQuarter:["FIRST QUARTER","1ST QUARTER"],secondQuarter:["SECOND QUARTER","2ND QUARTER"],firstSemester:["FIRST SEMESTER"],finalGrades:["FINAL GRADES","FINAL GRADE"],remark:["REMARK","REMARKS"],additionalRemarks:["ADDITIONAL REMARKS","ADDITIONAL REMARK"]};function gu(t){return t==null?null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function bt(t){return String(t??"").replace(/[\u00a0\t\r\n]+/g," ").replace(/[|]+/g," ").replace(/\s+/g," ").trim().toUpperCase()}function zo(t){return bt(t).replace(/[^A-Z0-9]+/g,"")}function Se(t,s){const a=bt(t),r=bt(s);if(!a||!r)return!1;if(a.includes(r))return!0;const o=zo(t),n=zo(s);return!o||!n?!1:o.includes(n)}function Wa(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"){const s=t.replace(/,/g,"").trim();if(!s)return;const a=Number(s);if(Number.isFinite(a))return a}}function Er(t){return bt(t).toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)}function tl(t){const s={};return t.forEach(a=>{const r=Vt.encode_cell(a.s);for(let o=a.s.r;o<=a.e.r;o+=1)for(let n=a.s.c;n<=a.e.c;n+=1){const i=Vt.encode_cell({r:o,c:n});s[i]=r}}),s}function bu(t,s,a){const o=(a||tl(t.merges))[s]||s;return t.cells[o]||t.cells[s]}const sl="A1:A1",Lo=1200,Do=200,$o=2e5;function vu(t){const s=Math.max(0,t.s.r),a=Math.max(0,t.s.c);let r=Math.max(s,t.e.r),o=Math.max(a,t.e.c);r-s+1>Lo&&(r=s+Lo-1),o-a+1>Do&&(o=a+Do-1);const n=r-s+1,i=o-a+1;if(n*i>$o){const c=Math.max(1,Math.floor($o/i));r=s+Math.min(n,c)-1}return{s:{r:s,c:a},e:{r,c:o}}}function wu(t){try{return Vt.decode_range(t)}catch{return Vt.decode_range(sl)}}function Nu(t){let s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY;return Object.keys(t.cells).forEach(n=>{try{const i=Vt.decode_cell(n);s=Math.min(s,i.r),a=Math.min(a,i.c),r=Math.max(r,i.r),o=Math.max(o,i.c)}catch{}}),t.merges.forEach(n=>{s=Math.min(s,n.s.r,n.e.r),a=Math.min(a,n.s.c,n.e.c),r=Math.max(r,n.s.r,n.e.r),o=Math.max(o,n.s.c,n.e.c)}),!Number.isFinite(s)||!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(o)?null:{s:{r:Math.max(0,Math.trunc(s)),c:Math.max(0,Math.trunc(a))},e:{r:Math.max(0,Math.trunc(r)),c:Math.max(0,Math.trunc(o))}}}function ju(t){const s=wu(t.ref||sl),a=Nu(t);return vu(a||s)}function yu(t,s){const a=ju(s),r=`${Vt.encode_cell(a.s)}:${Vt.encode_cell(a.e)}`,o=tl(s.merges),n=a.e.r-a.s.r+1,i=a.e.c-a.s.c+1,l=[];for(let c=0;ct.endRow||at.endCol?null:t.cells[s-t.startRow]?.[a-t.startCol]??null}function Es(t,s){return st.endRow?"":(t.cells[s-t.startRow]||[]).map(r=>r?.normalizedText||"").filter(Boolean).join(" ").trim()}function ha(t){return Vt.encode_col(t)}function Ba(t){const s=String(t||"").trim().toUpperCase();if(!s||!/^[A-Z]+$/.test(s))return-1;try{return Vt.decode_col(s)}catch{return-1}}function Su(t){return`${Vt.encode_cell(t.s)}:${Vt.encode_cell(t.e)}`}function ku(t,s){const a=[];for(let r=s.s.r;r<=s.e.r;r+=1){const o=[];for(let n=s.s.c;n<=s.e.c;n+=1){const i=Be(t,r,n);o.push(i?.displayValue??null)}a.push(o)}return a}function Cu(t,s){const a=bt(t),r=bt(s);return!a||!r?0:a===r?1:a.includes(r)?.9:.75}function dn(t,s){const a=[];for(let r=0;r{Se(l.normalizedText,c)&&a.push({sheetName:t.sheetName,anchor:c,row:l.row,col:l.col,address:l.address,value:String(l.displayValue??""),confidence:Cu(l.displayValue,c)})})}const o=t.startRow+r,n=Es(t,o);n&&s.forEach(i=>{if(!Se(n,i))return;const l=t.cells[r].find(c=>c?.normalizedText);l&&a.push({sheetName:t.sheetName,anchor:i,row:o,col:l.col,address:l.address,value:n,confidence:.8})})}return a}function Iu(t,s){return Object.values(t).flatMap(a=>dn(a,s))}function wt(t,s){return dn(t,[s]).sort((a,r)=>a.row-r.row||a.col-r.col)}function al(t,s,a,r=6){for(let o=1;o<=r;o+=1){const i=Be(t,s,a+o)?.displayValue;if(i!=null&&String(i).trim())return String(i).trim()}for(let o=1;o<=r;o+=1){const i=Be(t,s+o,a)?.displayValue;if(i!=null&&String(i).trim())return String(i).trim()}}function rl(t,s,a=5){let r=s,o=-1;for(let n=Math.max(t.startRow,s-a);n<=Math.min(t.endRow,s+a);n+=1){const i=Es(t,n),l=["LEARNERS NAMES","WRITTEN WORK","PERFORMANCE TASKS","QUARTERLY ASSESSMENT","REMARK"].reduce((c,d)=>i.includes(d)?c+1:c,0);l>o&&(o=l,r=n)}return r}function Tu(t,s){const a=bt(t).toLowerCase(),r=o=>[...s].some(n=>Se(n,o));return Ws.inputData.some(o=>a.includes(o))||r("INPUT DATA")?"inputData":Ws.finalSemestral.some(o=>a.includes(o))||r("FINAL SEMESTRAL GRADES")||r("FINAL GRADES")?"finalSemestral":Ws.firstQuarter.some(o=>a.includes(o))||r("FIRST QUARTER")?"firstQuarter":Ws.secondQuarter.some(o=>a.includes(o))||r("SECOND QUARTER")?"secondQuarter":r("SENIOR HIGH SCHOOL CLASS RECORD")||r("WRITTEN WORK")&&r("PERFORMANCE TASKS")?"firstQuarter":Ws.helper.some(o=>a.includes(o))||r("WEIGHT OF COMPONENTS")||r("ATTACHMENTS")||r("HELPER")?"helper":Ws.lookup.some(o=>a.includes(o))||r("LOOK UP")?"lookup":"other"}function Eu(t){const s=t.criticalTotal>0?t.criticalFound/t.criticalTotal:0,a=t.totalSheets>0?t.recognizedSheets/t.totalSheets:0,r=t.hasDepedAnchor?1:0,o=.65*s+.2*a+.15*r;return Number(Math.max(0,Math.min(1,o)).toFixed(4))}function Ru(t){const s=Iu(t.matrices,xu),a=new Set,r=[];Va.forEach(b=>{s.some(j=>Se(j.anchor,b))&&(a.add(b),r.push(`Found critical anchor: ${b}`))});const o=Va.filter(b=>!a.has(b)),n=new Map;s.forEach(b=>{n.has(b.sheetName)||n.set(b.sheetName,new Set),n.get(b.sheetName)?.add(b.anchor)});const i=t.sheetNames.map(b=>{const k=n.get(b)||new Set,j=Tu(b,k),S=Math.min(1,.35+Math.min(.55,k.size*.08)),p=[`sheet:${b}`,`signals:${k.size}`,...[...k].slice(0,5)];return{sheetName:b,role:j,confidence:Number(S.toFixed(3)),evidence:p}}),l={firstQuarter:[],secondQuarter:[],finalSemestral:[],helper:[],lookup:[],other:[]};i.forEach(b=>{switch(b.role){case"inputData":l.inputData?l.other.push(b.sheetName):l.inputData=b.sheetName;break;case"firstQuarter":l.firstQuarter.push(b.sheetName);break;case"secondQuarter":l.secondQuarter.push(b.sheetName);break;case"finalSemestral":l.finalSemestral.push(b.sheetName);break;case"helper":l.helper.push(b.sheetName);break;case"lookup":l.lookup.push(b.sheetName);break;case"other":default:l.other.push(b.sheetName);break}});const c=(l.inputData?1:0)+l.firstQuarter.length+l.secondQuarter.length+l.finalSemestral.length+l.helper.length+l.lookup.length,d=Eu({criticalFound:a.size,criticalTotal:Va.length,recognizedSheets:c,totalSheets:t.sheetNames.length,hasDepedAnchor:s.some(b=>Se(b.anchor,"Pursuant to DepEd Order 8 series of 2015"))}),u=l.firstQuarter.length>0||l.secondQuarter.length>0,f=!!l.inputData&&u&&l.finalSemestral.length>0,h=d>=.55&&f;return l.inputData||r.push("Input Data sheet not confidently detected."),u||r.push("No quarter class record sheet detected."),l.finalSemestral.length===0&&r.push("No Final Semestral Grades sheet detected."),{format:Zi,isOfficialFormatLikely:h,confidence:d,evidence:r,missingCriticalAnchors:o,detectedSheets:l,anchorMatches:s}}function rr(t){if(typeof t=="number"&&Number.isFinite(t))return t;const s=String(t??"").trim();if(!s)return;const a=Number(s.replace(/[^0-9]/g,""));if(!(!Number.isFinite(a)||a<=0))return a}function mn(t){const s=bt(t);if(s.includes("FEMALE"))return"FEMALE";if(s.includes("MALE"))return"MALE"}function un(t){const s=bt(t.rowText);return s?s==="MALE"||s==="FEMALE"?"sex-header":pu.some(a=>s.includes(a))?"signature":hu.some(a=>s.includes(a))?"helper":s.includes("LEARNERS NAMES")||s.includes("WRITTEN WORK")||s.includes("PERFORMANCE TASKS")||s.includes("QUARTERLY ASSESSMENT")||s.includes("INITIAL GRADE")||s.includes("QUARTERLY GRADE")?"header":t.hasLearnerName||t.hasLearnerNumber?"learner":s.includes("ATTACHMENTS")||s.includes("LOOK UP")?"helper":"unknown":"blank"}function _u(t){const s=["SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY"],a=[];return s.forEach(r=>{wt(t,r).forEach(o=>{a.push({role:r,name:String(Be(t,o.row,o.col+1)?.displayValue||"").trim()||void 0,sourceSheet:t.sheetName,sourceRow:o.row+1})})}),a}function Mu(t){const s=[],a=wt(t,"LEARNERS NAMES")[0],r=a?rl(t,a.row,5):t.startRow,o=(S,p)=>wt(t,S).find(C=>Math.abs(C.row-r)<=2)?.col??p,n=o(De.learnerNo[0],t.startCol),i=o(De.learnerName[0],t.startCol+1),l=o(De.firstQuarter[0],i+1),c=o(De.secondQuarter[0],l+1),d=o(De.firstSemester[0],c+1),u=o(De.finalGrades[0],d+1),f=o(De.remark[0],u+1),h=o(De.additionalRemarks[0],f+1),b=[];let k="UNKNOWN",j=0;for(let S=r+1;S<=t.endRow;S+=1){const p=Es(t,S),N=un({rowText:p,hasLearnerNumber:/\b\d{1,2}\b/.test(p),hasLearnerName:/[A-Z]{2,}/.test(p)});if(N==="sex-header"){k=mn(p)||k;continue}if(N==="signature"||N==="helper")break;if(N==="blank"){if(j+=1,j>=el)break;continue}if(N!=="learner")continue;j=0;const C=rr(Be(t,S,n)?.displayValue),z=String(Be(t,S,i)?.displayValue||"").trim();if(!z&&C===void 0)continue;const I=Be(t,S,l)?.displayValue??null,U=Be(t,S,c)?.displayValue??null,v=Be(t,S,d)?.displayValue??null,y=Be(t,S,u)?.displayValue??null,w=Be(t,S,f)?.displayValue??null;let A=Be(t,S,h)?.displayValue??null;const B=Ma.filter(E=>Se(p,E));B.length>0&&(A=[A,B.join("; ")].filter(Boolean).join("; ")||null),!z&&C!==void 0&&s.push(`Row ${S+1} has learner number ${C} but empty learner name.`),b.push({learnerNo:C,fullName:z||`Unnamed Learner ${C||S+1}`,sex:k,firstQuarter:I,secondQuarter:U,firstSemester:v,finalGrades:y,remark:w,additionalRemarks:A,sourceRow:S+1})}return{sheetName:t.sheetName,learnerGrades:b,signatures:_u(t),warnings:s}}function Jt(t,s){for(const a of s){const r=wt(t,a);for(const o of r){const n=al(t,o.row,o.col,8);if(n&&n.trim())return n.trim()}}}function Au(t){const s=["SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY"],a=[];return s.forEach(r=>{wt(t,r).forEach(n=>{const i=al(t,n.row,n.col,10);a.push({role:r,name:i,sourceSheet:t.sheetName,sourceRow:n.row+1})})}),a}function zu(t){const s=wt(t,"LEARNERS NAMES")[0];if(!s)return[];const a=s.row+1,r=s.col,o=Math.max(t.startCol,r-1),n=Math.min(t.endCol,r+1),i=Math.min(t.endCol,r+2),l=[];let c="UNKNOWN",d=0;for(let u=a;u<=t.endRow;u+=1){const f=Es(t,u),h=un({rowText:f,hasLearnerNumber:!!rr(Be(t,u,o)?.displayValue),hasLearnerName:!!String(Be(t,u,r)?.displayValue||"").trim()});if(h==="sex-header"){c=mn(f)||c,d=0;continue}if(h==="signature"||h==="helper")break;if(h!=="learner"){if(h==="blank"&&(d+=1),d>=5)break;continue}d=0;const b=rr(Be(t,u,o)?.displayValue),k=String(Be(t,u,r)?.displayValue||"").trim(),j=String(Be(t,u,n)?.displayValue||"").trim()||void 0,S=String(Be(t,u,i)?.displayValue||"").trim()||void 0,p=Ma.filter(N=>Se(f,N));!k&&b===void 0||l.push({learnerNo:b,sex:c,fullName:k||`Unnamed Learner ${b||u}`,sourceSheet:t.sheetName,sourceRow:u+1,remarks:j,additionalRemarks:S,statuses:p.length>0?p:void 0})}return l}function Lu(t){const s=[],a=[];for(let r=t.startRow;r<=t.endRow;r+=1){const o=Es(t,r);if(o){if(Ma.some(n=>Se(o,n))){s.push(o);continue}(Se(o,"IMPORTANT")||Se(o,"NOTE")||Se(o,"ATTACHMENT")||Se(o,"LOOK UP"))&&a.push(o)}}return{attachmentRules:Array.from(new Set(s)),helperNotes:Array.from(new Set(a))}}function Du(t){const s=[],a={region:Jt(t,Ht.region),division:Jt(t,Ht.division),schoolName:Jt(t,Ht.schoolName),schoolId:Jt(t,Ht.schoolId),schoolYear:Jt(t,Ht.schoolYear),gradeSection:Jt(t,Ht.gradeSection),semester:Jt(t,Ht.semester),track:Jt(t,Ht.track),subjectCode:Jt(t,Ht.subjectCode),subjectName:Jt(t,Ht.subjectName),teacherName:Jt(t,Ht.teacherName)},r=zu(t),o=Au(t),{attachmentRules:n,helperNotes:i}=Lu(t);return a.schoolName||s.push("Input Data metadata is missing School Name."),a.schoolYear||s.push("Input Data metadata is missing School Year."),r.length===0&&s.push("No learners detected in Input Data sheet."),dn(t,Object.values(Ht).flat()).length<4&&s.push("Input Data sheet contains limited metadata anchors; layout may have drifted."),{sheetName:t.sheetName,schoolContext:a,learners:r,signatures:o,attachmentRules:n,helperNotes:i,warnings:s}}function $u(t){const s=bt(t.sheetName);return fu.SECOND.some(a=>Se(s,a))?"SECOND":"FIRST"}function Fu(t,s){const a=[],r=[],o=[];let n,i="NONE";for(let l=t.startCol;l<=t.endCol;l+=1){const c=Be(t,s,l),d=bt(c?.displayValue||""),u=Be(t,s+1,l),f=String(u?.displayValue||c?.displayValue||"").trim();if(!d&&!f)continue;if(Se(d,De.writtenWork[0])){i="WW";continue}if(Se(d,De.performanceTasks[0])){i="PT";continue}if(Se(d,De.quarterlyAssessment[0])){n={key:Er(f||"quarterly_assessment"),label:f||"Quarterly Assessment",column:ha(l)},i="DERIVED";continue}if(Se(d,De.initialGrade[0])||Se(d,De.quarterlyGrade[0])||Se(d,De.remark[0])||Se(d,De.additionalRemarks[0])||Se(d,De.firstQuarter[0])||Se(d,De.secondQuarter[0])||Se(d,De.firstSemester[0])||Se(d,De.finalGrades[0])||Se(d,De.ps[0])||Se(d,De.ws[0])||Se(d,De.total[0])){i="DERIVED",o.push({key:Er(f||d),label:f||d,column:ha(l)});continue}const h={key:Er(f||d||ha(l)),label:f||d||ha(l),maxScore:Wa(u?.displayValue),column:ha(l)};i==="WW"?a.push(h):i==="PT"?r.push(h):i==="DERIVED"&&o.push(h)}return{writtenWorks:a,performanceTasks:r,quarterlyAssessment:n,derived:o}}function Ou(t){const s=["SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY"],a=[];return s.forEach(r=>{wt(t,r).forEach(o=>{const n=Be(t,o.row,o.col+1),i=String(n?.displayValue||"").trim()||void 0;a.push({role:r,name:i,sourceSheet:t.sheetName,sourceRow:o.row+1})})}),a}function Fo(t,s,a){for(let r=t.startCol;r<=t.endCol;r+=1){const o=bt(Be(t,s,r)?.displayValue||""),n=bt(Be(t,s+1,r)?.displayValue||"");if(a.some(i=>Se(o,i)||Se(n,i)))return r}}function Bu(t,s,a,r){const o={learnerNo:rr(Be(t,s,r.numberCol)?.displayValue),fullName:String(Be(t,s,r.nameCol)?.displayValue||"").trim(),sourceRow:s+1},n={};a.writtenWorks.forEach(d=>{const u=d.column?Ba(d.column):-1;if(u<0)return;const f=Be(t,s,u)?.displayValue;n[d.key]=f??null}),Object.keys(n).length>0&&(o.writtenWorks=n);const i={};if(a.performanceTasks.forEach(d=>{const u=d.column?Ba(d.column):-1;if(u<0)return;const f=Be(t,s,u)?.displayValue;i[d.key]=f??null}),Object.keys(i).length>0&&(o.performanceTasks=i),a.quarterlyAssessment?.column){const d=Ba(a.quarterlyAssessment.column);o.quarterlyAssessment=Be(t,s,d)?.displayValue??null}const l=a.derived||[],c={};return l.forEach(d=>{if(!d.column)return;const u=Ba(d.column);if(u<0)return;const f=Be(t,s,u)?.displayValue??null;c[d.key]=f,Se(d.label,De.initialGrade[0])&&(o.initialGrade=f),Se(d.label,De.quarterlyGrade[0])&&(o.quarterlyGrade=f),Se(d.label,De.firstQuarter[0])&&(o.firstQuarter=f),Se(d.label,De.secondQuarter[0])&&(o.secondQuarter=f),Se(d.label,De.firstSemester[0])&&(o.firstSemester=f),Se(d.label,De.finalGrades[0])&&(o.finalGrades=f),Se(d.label,De.remark[0])&&(o.remark=f!==null?String(f):null),Se(d.label,De.additionalRemarks[0])&&(o.additionalRemarks=f!==null?String(f):null)}),Object.keys(c).length>0&&(o.totals=c),o}function Pu(t){const s=$u(t),a=[],r=wt(t,De.learnerName[0])[0]||wt(t,De.learnerName[1])[0],o=r?rl(t,r.row,4):t.startRow,n=Fu(t,o),i=Fo(t,o,De.learnerNo)??t.startCol,l=Fo(t,o,De.learnerName)??Math.min(t.endCol,i+1),c=[];let d="UNKNOWN",u=0;for(let k=o+1;k<=t.endRow;k+=1){const j=Es(t,k),S=un({rowText:j,hasLearnerNumber:/\b\d{1,2}\b/.test(j),hasLearnerName:/[A-Z]{2,}/.test(j)});if(S==="sex-header"){d=mn(j)||d;continue}if(S==="signature"||S==="helper")break;if(S==="blank"){if(u+=1,u>=el)break;continue}if(S!=="learner")continue;u=0;const p=Bu(t,k,n,{numberCol:i,nameCol:l});if(p.sex=d,!p.fullName&&p.learnerNo===void 0)continue;const N=Ma.filter(C=>Se(j,C));N.length>0&&!p.additionalRemarks&&(p.additionalRemarks=N.join("; ")),!p.fullName&&p.learnerNo!==void 0&&(a.push(`Row ${k+1} has learner number ${p.learnerNo} but empty name.`),p.fullName=`Unnamed Learner ${p.learnerNo}`),c.push(p)}n.writtenWorks.length===0&&n.performanceTasks.length===0&&a.push(`No detailed assessment columns detected in ${t.sheetName}.`);const f=Wa(wt(t,"WRITTEN WORK %")[0]?.value||wt(t,"WRITTEN WORK")[0]?.value),h=Wa(wt(t,"PERFORMANCE TASKS %")[0]?.value||wt(t,"PERFORMANCE TASKS")[0]?.value),b=Wa(wt(t,"QUARTERLY ASSESSMENT %")[0]?.value||wt(t,"QUARTERLY ASSESSMENT")[0]?.value);return{sheetName:t.sheetName,quarter:s,gradingWeights:{writtenWork:f,performanceTasks:h,quarterlyAssessment:b},assessmentColumns:n,learnerGrades:c,signatures:Ou(t),warnings:a}}function Hu(t){const s=["SUBMITTED BY","CHECKED BY","VERIFIED BY","RECOMMENDED BY","APPROVED BY"],a=[];return s.forEach(r=>{wt(t,r).forEach(o=>{a.push({role:r,name:String(Be(t,o.row,o.col+1)?.displayValue||"").trim()||void 0,sourceSheet:t.sheetName,sourceRow:o.row+1})})}),a}function Gu(t){const s=[];let a=!1;for(let r=t.startRow;r<=t.endRow;r+=1){const o=Es(t,r);if(!o){if(a&&s.length>0)break;continue}if(Se(o,"WEIGHT OF COMPONENTS")){a=!0;continue}if(!a)continue;const n={sourceRow:r+1,raw:o};for(let i=t.startCol;i<=t.endCol;i+=1){const l=Be(t,r,i)?.displayValue;l==null||String(l).trim()===""||(n[`c${i}`]=l)}Object.keys(n).length>2&&s.push(n)}return s}function Qu(t){const s=[],a=[],r=[],o=[],n=[];return t.forEach(i=>{Hu(i).forEach(l=>a.push(l)),Gu(i).forEach(l=>r.push({...l,sourceSheet:i.sheetName}));for(let l=i.startRow;l<=i.endRow;l+=1){const c=Es(i,l);if(c){if(Ma.some(d=>Se(c,d))){o.push(`${i.sheetName}: ${c}`);continue}(Se(c,"HELPER")||Se(c,"LOOK UP")||Se(c,"IMPORTANT")||Se(c,"REFERENCE")||Se(c,"ATTACHMENT"))&&n.push(`${i.sheetName}: ${c}`)}}}),r.length===0&&s.push("No component weight rows were parsed from reference sheets."),{sheetName:t.map(i=>i.sheetName).join(", "),componentWeights:r,attachmentRules:Array.from(new Set(o)),helperNotes:Array.from(new Set(n)),signatures:a,warnings:s}}function Uu(t,s,a){const r=new Map,o=n=>{const i=`${bt(n.fullName)}|${n.learnerNo||""}|${n.sourceSheet}`,l=r.get(i);if(!l){r.set(i,n);return}const c=Array.from(new Set([...l.statuses||[],...n.statuses||[]]));r.set(i,{...l,...n,remarks:n.remarks||l.remarks,additionalRemarks:n.additionalRemarks||l.additionalRemarks,statuses:c.length>0?c:void 0})};return t.forEach(o),s.forEach(n=>{n.learnerGrades.forEach(i=>{o({learnerNo:i.learnerNo,sex:i.sex,fullName:i.fullName,sourceSheet:n.sheetName,sourceRow:i.sourceRow,remarks:i.remark||void 0,additionalRemarks:i.additionalRemarks||void 0})})}),a.forEach(n=>{n.learnerGrades.forEach(i=>{o({learnerNo:i.learnerNo,sex:i.sex,fullName:i.fullName,sourceSheet:n.sheetName,sourceRow:i.sourceRow,remarks:i.remark||void 0,additionalRemarks:i.additionalRemarks||void 0})})}),Array.from(r.values())}function Vu(t,s,a,r){const o=[...t.signatures,...s.flatMap(i=>i.signatures),...a.flatMap(i=>i.signatures),...r.signatures],n=new Map;return o.forEach(i=>{const l=`${bt(i.role)}|${bt(i.name||"")}|${i.sourceSheet}`;n.set(l,i)}),Array.from(n.values())}function Wu(t){const s=Uu(t.inputData.learners,t.quarterSheets,t.finalSheets);return{format:Zi,version:uu,workbookMeta:{fileName:t.workbook.fileName,sheetNames:t.workbook.sheetNames,detectedSheets:{inputData:t.detection.detectedSheets.inputData,firstQuarter:t.detection.detectedSheets.firstQuarter,secondQuarter:t.detection.detectedSheets.secondQuarter,finalSemestral:t.detection.detectedSheets.finalSemestral,helper:t.detection.detectedSheets.helper,lookup:t.detection.detectedSheets.lookup,other:t.detection.detectedSheets.other}},schoolContext:{...t.inputData.schoolContext},learners:s,quarterlyRecords:t.quarterSheets.map(a=>({sheetName:a.sheetName,quarter:a.quarter,gradingWeights:a.gradingWeights,assessmentColumns:a.assessmentColumns,learnerGrades:a.learnerGrades})),finalSemestralRecords:t.finalSheets.map(a=>({sheetName:a.sheetName,learnerGrades:a.learnerGrades})),references:{componentWeights:t.references.componentWeights,attachmentRules:Array.from(new Set([...t.inputData.attachmentRules||[],...t.references.attachmentRules||[]])),helperNotes:Array.from(new Set([...t.inputData.helperNotes||[],...t.references.helperNotes||[]])),signatures:Vu(t.inputData,t.quarterSheets,t.finalSheets,t.references),unclassifiedBlocks:t.unclassifiedBlocks},validation:t.validation,raw:t.workbook.raw}}function qu(t){return!t||t.length===0?[]:t.map(s=>({s:{r:s.s.r,c:s.s.c},e:{r:s.e.r,c:s.e.c}}))}function Yu(t){const s={ref:t["!ref"],merges:qu(t["!merges"]),cells:{}};return Object.keys(t).filter(a=>!a.startsWith("!")).forEach(a=>{const r=t[a];!r||!(r.v!==void 0||typeof r.w=="string"&&r.w.trim().length>0||typeof r.f=="string"&&r.f.trim().length>0)||(s.cells[a]={v:r.v,w:r.w,t:r.t,f:r.f})}),s}function Ku(t,s){const a=cc(s,{type:"array",cellFormula:!0,cellNF:!0,cellText:!0,cellDates:!0,raw:!1}),r={},o={};return a.SheetNames.forEach(n=>{const i=a.Sheets[n];if(!i)return;const l=Yu(i);o[n]=l,r[n]=yu(n,l)}),{fileName:t,sheetNames:a.SheetNames,raw:{sheets:o},matrices:r}}async function Xu(t){const s=await t.arrayBuffer();return Ku(t.name,s)}class Ju{state={};markRange(s,a,r){const o=s;this.state[o]||(this.state[o]={mappedAddresses:new Set,mappings:[]});for(let n=a.s.r;n<=a.e.r;n+=1)for(let i=a.s.c;i<=a.e.c;i+=1)this.state[o].mappedAddresses.add(`${n}:${i}`);this.state[o].mappings.push({sheetName:s,range:a,reason:r})}getMappings(){return Object.values(this.state).flatMap(s=>s.mappings)}getMappedRegionCount(){return this.getMappings().length}getUnmappedBlocks(s,a="unclassified"){const r=[];return Object.values(s).forEach(o=>{const n=new Set,i=this.state[o.sheetName]?.mappedAddresses??new Set;for(let l=o.startRow;l<=o.endRow;l+=1)for(let c=o.startCol;c<=o.endCol;c+=1){const d=`${l}:${c}`;if(n.has(d)||i.has(d))continue;const u=Be(o,l,c);if(!(u&&u.displayValue!==null&&u.displayValue!==void 0&&String(u.displayValue).trim())){n.add(d);continue}const h=this.collectComponent(o,l,c,i,n);h&&r.push({sheetName:o.sheetName,range:Su(h),purposeGuess:a,raw2D:ku(o,h)})}}),r}collectComponent(s,a,r,o,n){const i=[{row:a,col:r}];let l=a,c=a,d=r,u=r,f=!1;for(;i.length>0;){const h=i.shift();if(!h)break;const b=`${h.row}:${h.col}`;if(n.has(b)||o.has(b))continue;n.add(b);const k=Be(s,h.row,h.col);k&&k.displayValue!==null&&k.displayValue!==void 0&&String(k.displayValue).trim()&&(f=!0,l=Math.min(l,h.row),c=Math.max(c,h.row),d=Math.min(d,h.col),u=Math.max(u,h.col),[{row:h.row-1,col:h.col},{row:h.row+1,col:h.col},{row:h.row,col:h.col-1},{row:h.row,col:h.col+1}].forEach(S=>{S.rows.endRow||S.cols.endCol||i.push(S)}))}return f?{s:{r:l,c:d},e:{r:c,c:u}}:null}}function Zu(t){const s=t.detection.detectedSheets,a=[s.inputData?1:0,s.firstQuarter.length,s.secondQuarter.length,s.finalSemestral.length,s.helper.length,s.lookup.length].reduce((r,o)=>r+o,0);return{totalSheets:t.totalSheets,recognizedSheets:a,unclassifiedSheets:s.other.length,mappedCellRegions:t.mappedCellRegions,unmappedCellRegions:t.unmappedCellRegions}}function ex(t){const s=new Map;t.forEach(r=>{const o=`${r.learnerNo||""}|${r.fullName.trim().toUpperCase()}`;s.has(o)||s.set(o,[]),s.get(o)?.push(r.sourceRow)});const a=[];return s.forEach((r,o)=>{r.length>1&&a.push(`Duplicate learner entry detected for ${o} at rows ${r.join(", ")}.`)}),a}function tx(t){const s=[];return t.forEach(a=>{a.learnerGrades.forEach(r=>{r.fullName.trim()||s.push(`${a.sheetName} row ${r.sourceRow}: learner name is blank.`);const o=r.writtenWorks&&Object.values(r.writtenWorks).some(i=>i!==null&&i!==""),n=r.performanceTasks&&Object.values(r.performanceTasks).some(i=>i!==null&&i!=="");!o&&!n&&r.quarterlyAssessment==null&&s.push(`${a.sheetName} row ${r.sourceRow}: all grade blocks are empty.`)})}),s}function sx(t){const s=[];return t.forEach(a=>{a.learnerGrades.forEach(r=>{r.fullName.trim()||s.push(`${a.sheetName} row ${r.sourceRow}: learner name is blank.`),r.finalGrades==null&&r.firstSemester==null&&r.firstQuarter==null&&r.secondQuarter==null&&s.push(`${a.sheetName} row ${r.sourceRow}: no semestral/final values detected.`)})}),s}function ax(t){const s=[],a=[];t.detection.detectedSheets.inputData||a.push("Missing Input Data sheet."),t.quarterSheets.length===0&&a.push("No quarter class record sheets were extracted."),t.finalSheets.length===0&&a.push("No Final Semestral sheet was extracted."),t.detection.missingCriticalAnchors.length>0&&s.push(`Missing critical anchors: ${t.detection.missingCriticalAnchors.join(", ")}.`),ex(t.inputData.learners).forEach(n=>s.push(n)),tx(t.quarterSheets).forEach(n=>s.push(n)),sx(t.finalSheets).forEach(n=>s.push(n)),s.push(...t.inputData.warnings),t.quarterSheets.forEach(n=>s.push(...n.warnings)),t.finalSheets.forEach(n=>s.push(...n.warnings)),t.unmappedCellRegions>t.mappedCellRegions&&s.push("A significant portion of workbook regions are unclassified; review diagnostics before confirming import.");const r=t.detection.confidence,o=t.detection.isOfficialFormatLikely&&a.length===0;return r({fullName:i.fullName,learnerNo:i.learnerNo,sex:i.sex,remarks:i.remarks,additionalRemarks:i.additionalRemarks,statuses:i.statuses,sourceSheet:i.sourceSheet,sourceRow:i.sourceRow})),r=t.quarterlyRecords.flatMap(i=>i.learnerGrades.map(l=>({fullName:l.fullName,sourceSheet:i.sheetName,sourceRow:l.sourceRow,quarter:i.quarter,firstQuarter:l.firstQuarter,secondQuarter:l.secondQuarter,firstSemester:l.firstSemester,finalGrades:l.finalGrades,quarterlyGrade:l.quarterlyGrade,initialGrade:l.initialGrade,remark:l.remark,additionalRemarks:l.additionalRemarks}))),o=t.finalSemestralRecords.flatMap(i=>i.learnerGrades.map(l=>({fullName:l.fullName,sourceSheet:i.sheetName,sourceRow:l.sourceRow,firstQuarter:l.firstQuarter,secondQuarter:l.secondQuarter,firstSemester:l.firstSemester,finalGrades:l.finalGrades,remark:l.remark,additionalRemarks:l.additionalRemarks}))),n=[...t.learners,...t.quarterlyRecords.flatMap(i=>i.learnerGrades.map(l=>({learnerNo:l.learnerNo,sex:l.sex,fullName:l.fullName,sourceSheet:i.sheetName,sourceRow:l.sourceRow,remarks:l.remark||void 0,additionalRemarks:l.additionalRemarks||void 0})))].map(i=>({fullName:i.fullName,remark:i.remarks||null,additionalRemarks:i.additionalRemarks||null,statuses:"statuses"in i?i.statuses:void 0,sourceSheet:i.sourceSheet,sourceRow:i.sourceRow}));return{classEntity:s,studentEntities:a,gradeEntities:[...r,...o],remarksEntities:n}}const Oo=1500;function Bo(t){return t?Object.values(t.matrices).reduce((s,a)=>s+a.rowCount*a.colCount,0):0}function Po(t){const s=`[shs-import] parse ${t.stage} file=${t.fileName} duration=${t.durationMs}ms sheets=${t.sheetCount} matrixCells=${t.matrixCellCount}`;if(t.stage==="failed"){console.error(`${s}${t.errorMessage?` error=${t.errorMessage}`:""}`);return}if(t.durationMs>=Oo){console.warn(`${s} slow=true threshold=${Oo}ms`);return}}function As(t,s){t?.onProgress?.(s)}function nx(t,s){return Array.from(new Set(t.filter(a=>Number.isFinite(a)).map(a=>Math.max(s.startRow,Math.min(s.endRow,Math.trunc(a))))))}function fa(t,s,a,r){nx(a,s).forEach(o=>{t.markRange(s.sheetName,{s:{r:o,c:s.startCol},e:{r:o,c:s.endCol}},r)})}async function ox(t,s){const a=s?.confidenceThreshold??mu,r=Date.now();let o=null;try{if(As(s,{stage:"reading",message:"Reading workbook structure and raw sheets..."}),o=await Xu(t),!o)throw new Error("Workbook read returned null");As(s,{stage:"detecting-format",message:"Detecting DepEd SHS workbook format..."});const n=Ru(o);As(s,{stage:"extracting",message:"Extracting metadata, learners, grades, and references..."});const i=n.detectedSheets.inputData||o.sheetNames[0],l=o.matrices[i],c=l?Du(l):{sheetName:i,schoolContext:{},learners:[],signatures:[],attachmentRules:[],helperNotes:[],warnings:["Input data sheet was not available in matrix map."]},u=[...n.detectedSheets.firstQuarter||[],...n.detectedSheets.secondQuarter||[]].map(C=>o.matrices[C]).filter(C=>!!C).map(C=>Pu(C)),f=(n.detectedSheets.finalSemestral||[]).map(C=>o.matrices[C]).filter(C=>!!C).map(C=>Mu(C)),h=[...n.detectedSheets.helper||[],...n.detectedSheets.lookup||[]].map(C=>o.matrices[C]).filter(C=>!!C),b=Qu(h),k=new Ju;n.anchorMatches.forEach(C=>{const z=o.matrices[C.sheetName];z&&fa(k,z,[C.row],`Anchor match: ${C.anchor}`)}),[c.sheetName].forEach(C=>{const z=o.matrices[C];if(!z)return;const I=Array.from({length:Math.min(14,z.rowCount)},(y,w)=>z.startRow+w),U=c.learners.map(y=>y.sourceRow-1),v=c.signatures.map(y=>y.sourceRow).filter(y=>typeof y=="number").map(y=>y-1);fa(k,z,[...I,...U,...v],"Input Data parsed rows")}),u.forEach(C=>{const z=o.matrices[C.sheetName];if(!z)return;const I=C.learnerGrades.map(y=>y.sourceRow-1),U=C.signatures.map(y=>y.sourceRow).filter(y=>typeof y=="number").map(y=>y-1),v=I.length>0?Math.max(z.startRow,Math.min(...I)-2):z.startRow;fa(k,z,[v,v+1,...I,...U],"Quarter sheet parsed rows")}),f.forEach(C=>{const z=o.matrices[C.sheetName];if(!z)return;const I=C.learnerGrades.map(y=>y.sourceRow-1),U=C.signatures.map(y=>y.sourceRow).filter(y=>typeof y=="number").map(y=>y-1),v=I.length>0?Math.max(z.startRow,Math.min(...I)-2):z.startRow;fa(k,z,[v,v+1,...I,...U],"Final semestral parsed rows")}),h.forEach(C=>{const z=b.componentWeights.filter(v=>v.sourceSheet===C.sheetName).map(v=>v.sourceRow).filter(v=>typeof v=="number").map(v=>v-1),I=b.signatures?.filter(v=>v.sourceSheet===C.sheetName).map(v=>v.sourceRow).filter(v=>typeof v=="number").map(v=>v-1)||[],U=z.length===0&&I.length===0?[C.startRow,C.startRow+1,C.startRow+2]:[];fa(k,C,[...z,...I,...U],"Reference/helper parsed rows")});const j=k.getUnmappedBlocks(o.matrices);As(s,{stage:"validating",message:"Validating completeness and structural integrity..."});const S=ax({detection:n,inputData:c,quarterSheets:u,finalSheets:f,mappedCellRegions:k.getMappedRegionCount(),unmappedCellRegions:j.length,totalSheets:o.sheetNames.length});As(s,{stage:"normalizing",message:"Normalizing parsed workbook and creating entity mapping..."});const p=Wu({workbook:o,detection:n,inputData:c,quarterSheets:u,finalSheets:f,references:b,validation:S,unclassifiedBlocks:j});p.validation.confidenceg.trim().toLowerCase().replace(/\s+/g," "),ne=g=>{if(typeof g=="number"&&Number.isFinite(g))return g;const T=Number(String(g??"").replace(/[^0-9.-]+/g,""));return Number.isFinite(T)?T:null},xe=(g,T)=>{const R=Number.isFinite(g)?g:T;return Math.max(0,Math.min(100,R))},he=g=>{const T=String(g??"");return/[",\n]/.test(T)?`"${T.replace(/"/g,'""')}"`:T},H=(g,T)=>{const R=new Map,K=["quarterlyGrade","finalGrades","firstSemester","firstQuarter","secondQuarter","initialGrade"];g.mapping.gradeEntities.forEach(se=>{const fe=ce(se.fullName||"");if(!fe)return;const et=K.map(Ke=>ne(se[Ke])).filter(Ke=>Ke!==null);if(et.length===0)return;const Fe=R.get(fe)||[];R.set(fe,Fe.concat(et))});const Z=g.mapping.studentEntities||[];if(Z.length===0)return null;const re=(g.imported.schoolContext.semester||g.imported.schoolContext.schoolYear||"First Semester").trim(),le=(g.imported.schoolContext.subjectName||"Class Record Import").trim(),$=(t||s||"import").replace(/[^a-zA-Z0-9]+/g,"").toUpperCase().slice(0,12)||"IMPORT",pe=[["name","lrn","email","engagementScore","avgQuizScore","attendance","assignmentCompletion","term","assessmentName"].join(",")];if(Z.forEach((se,fe)=>{const et=ce(se.fullName||""),Fe=R.get(et)||[],Ke=Fe.length>0?Fe.reduce((Ye,vt)=>Ye+vt,0)/Fe.length:75,rt=xe(Ke,75),Rt=xe(rt+5,85),St=xe(rt*.7+Rt*.3,80),Ft=xe(Rt*.6+rt*.4,82),ss=se.learnerNo||fe+1,P=`IMP-${$}-${String(ss).padStart(4,"0")}`,Ae=se.fullName||`Learner ${fe+1}`;pe.push([he(Ae),he(P),he(""),he(Number(St.toFixed(1))),he(Number(rt.toFixed(1))),he(Number(Rt.toFixed(1))),he(Number(Ft.toFixed(1))),he(re),he(le)].join(","))}),pe.length<=1)return null;const we=T.replace(/\.(xlsx|xls)$/i,"");return new File([pe.join(` -`)],`${we}-normalized.csv`,{type:"text/csv"})},q=async g=>{v(!0),B(""),F(null);let T=g;if(/\.(xlsx|xls)$/i.test(g.name))try{const R=await ox(g,{confidenceThreshold:Qr});p(R);const K=H(R,g.name);K&&(T=K)}catch{p(null)}else p(null);try{const R=await nt.uploadClassRecords(T,{classSectionId:t,className:s,datasetIntent:"synthetic_student_records"}),K=R.students.length,re=((le,$,oe,pe)=>({classSectionId:le.classSectionId||$||"imported_class",className:le.className||oe||"Imported Class",classMetadata:le.classMetadata||pe}))(R,t,s,a);K>0&&i?.({students:R.students,classSectionId:re.classSectionId,className:re.className,classMetadata:re.classMetadata}),R.success?(me.success(`Successfully imported ${K} student records.`),F({datasetIntent:R.datasetIntent,summary:R.interpretationSummary,columns:R.columnInterpretations?.map(le=>({columnName:le.columnName,mappedField:le.mappedField,usagePolicy:le.usagePolicy,confidenceBand:le.confidenceBand,domainSignals:le.domainSignals}))||[]}),l?.()):me.error("Import completed but no usable student rows were detected. Check required columns and retry.")}catch(R){me.error(R instanceof Error?R.message:"Upload failed")}finally{v(!1)}},M=async g=>{w(!0);try{const T=await nt.uploadCourseMaterials(g,{classSectionId:t,className:s});if(T.success){const R=T.topics?.length??0;me.success(`Course material imported (${R} topics extracted).`),l?.()}}catch(T){me.error(T instanceof Error?T.message:"Course material upload failed")}finally{w(!1)}},[Y,ae]=m.useState(r),[$e,Me]=m.useState(!1);m.useEffect(()=>{ae(r),G(Object.fromEntries(r.map(g=>[Pa(g),{grade:g.grade||"Grade 11",section:g.section||"Section A"}])))},[r]);const[Ge,G]=m.useState({}),te=async()=>{Me(!0);try{for(const T of Y){const R=Ge[Pa(T)],K=R?.grade||T.grade,Z=R?.section||T.section;o&&(K!==T.grade||Z!==T.section)&&(await mr(T.id,K,Z,o,new Date().getFullYear().toString(),n),await Vi(T.id,K,Z));try{const re=await nt.predictRisk({engagementScore:T.engagementScore,avgQuizScore:T.avgScore,attendance:T.attendance,assignmentCompletion:T.assignmentCompletion});await jm(T.id,re.riskLevel,re.confidence)}catch(re){console.error("Failed to update risk:",re)}}const g=Y.map(T=>{const R=Ge[Pa(T)];if(!R)return T;const K=gt({metadata:T.classMetadata,classSectionId:T.classSectionId,className:[R.grade,R.section].filter(Boolean).join(" - "),grade:R.grade,section:R.section});return{...T,grade:R.grade,section:R.section,className:K.className||[R.grade,R.section].filter(Boolean).join(" - "),classSectionId:K.classSectionId||T.classSectionId,classMetadata:K}});ae(g),d?.(g),me.success("Records saved and risk levels updated"),j("main")}catch{me.error("Failed to save changes")}finally{Me(!1)}};return e.jsx("div",{className:"h-full overflow-y-auto w-full block",children:e.jsxs("div",{className:"w-full p-[24px] xl:p-[32px] space-y-[24px]",children:[k==="main"&&e.jsxs("div",{className:"block space-y-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[16px] p-4 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-slate-200 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-indigo-50 flex items-center justify-center border border-indigo-100/50",children:e.jsx(Ka,{className:"w-5 h-5 text-indigo-500"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-[14px] font-bold text-[#1e293b]",children:"Upload Context"}),e.jsx("p",{className:"text-[12px] text-[#64748b]",children:"Select where the imported data should be applied"})]})]}),e.jsxs("div",{className:"relative w-full md:w-[300px]",children:[e.jsxs("select",{className:"appearance-none bg-[#f8fafc] border border-[#e2e8f0] text-[#1e293b] font-bold text-[13px] rounded-lg pl-4 pr-10 py-2.5 outline-none focus:border-[#4f46e5] focus:ring-2 focus:ring-[#4f46e5]/20 shadow-[0_1px_4px_rgba(0,0,0,0.02)] cursor-pointer w-full transition-colors",value:s||t||"All Classes",onChange:()=>{},children:[e.jsx("option",{value:s||t||"All Classes",children:s||t?`${s} ${t?`(${t})`:""}`:"All Classes"}),e.jsx("option",{value:"Grade 11 - Section A",children:"Grade 11 - Section A"}),e.jsx("option",{value:"Grade 11 - Section B",children:"Grade 11 - Section B"})]}),e.jsx(Tt,{className:"w-4 h-4 text-[#64748b] absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{onDragOver:g=>{g.preventDefault(),C(!0)},onDragLeave:()=>C(!1),onDrop:g=>{g.preventDefault(),C(!1);const T=g.dataTransfer.files[0];T&&q(T)},onClick:()=>X.current?.click(),className:`border-2 border-dashed transition-all rounded-[24px] p-8 flex flex-col items-center justify-center text-center cursor-pointer group shadow-[0_4px_20px_rgba(0,0,0,0.02)] relative overflow-hidden h-[280px] ${N?"border-[#1FA7E1] bg-[#1FA7E1]/10":"border-[#1FA7E1]/30 hover:border-[#1FA7E1] bg-white hover:bg-[#1FA7E1]/5"}`,children:[e.jsx("input",{ref:X,type:"file",accept:".csv,.xlsx,.xls",onChange:g=>{const T=g.target.files?.[0];T&&q(T)},className:"hidden"}),e.jsx("div",{className:"w-16 h-16 rounded-full bg-[#1FA7E1]/10 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform duration-300 shadow-sm border border-[#1FA7E1]/20",children:U?e.jsx("span",{className:"animate-spin text-[#1FA7E1]",children:"..."}):e.jsx(zc,{className:"w-8 h-8 text-[#1FA7E1]"})}),e.jsx("h3",{className:"text-[18px] font-bold text-[#1e293b] mb-2",children:U?"Uploading...":"Class Records"}),e.jsx("p",{className:"text-[13px] text-[#64748b] max-w-sm mb-6",children:"Upload student grades, attendance logs, and quiz scores to power predictive analytics."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".csv"}),e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".xlsx"})]})]}),e.jsxs("div",{onDragOver:g=>{g.preventDefault(),I(!0)},onDragLeave:()=>I(!1),onDrop:g=>{g.preventDefault(),I(!1);const T=g.dataTransfer.files[0];T&&M(T)},onClick:()=>J.current?.click(),className:`border-2 border-dashed transition-all rounded-[24px] p-8 flex flex-col items-center justify-center text-center cursor-pointer group shadow-[0_4px_20px_rgba(0,0,0,0.02)] relative overflow-hidden h-[280px] ${z?"border-[#9956DE] bg-[#9956DE]/10":"border-[#9956DE]/30 hover:border-[#9956DE] bg-white hover:bg-[#9956DE]/5"}`,children:[e.jsx("input",{ref:J,type:"file",accept:".pdf,.docx,.txt",onChange:g=>{const T=g.target.files?.[0];T&&M(T)},className:"hidden"}),e.jsx("div",{className:"w-16 h-16 rounded-full bg-[#9956DE]/10 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform duration-300 shadow-sm border border-[#9956DE]/20",children:y?e.jsx("span",{className:"animate-spin text-[#9956DE]",children:"..."}):e.jsx(gs,{className:"w-8 h-8 text-[#9956DE]"})}),e.jsx("h3",{className:"text-[18px] font-bold text-[#1e293b] mb-2",children:y?"Uploading...":"Course Materials"}),e.jsx("p",{className:"text-[13px] text-[#64748b] max-w-sm mb-6",children:"Upload syllabus, lesson plans, and curriculum docs to ground AI lesson generation."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".pdf"}),e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".docx"}),e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".txt"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-[16px]",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#0ea5e9] to-[#0284c7] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(14,165,233,0.2)] flex flex-col text-white group transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:shadow-sky-500/30",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full"}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-white/10 border border-white/20 flex items-center justify-center shrink-0 mb-3 relative z-10 transition-transform group-hover:scale-110",children:e.jsx(Mc,{className:"w-5 h-5 text-white"})}),e.jsx("h4",{className:"font-bold text-[14px] mb-1.5 relative z-10",children:"Smart Parsing"}),e.jsx("p",{className:"text-[12px] text-white/90 leading-relaxed relative z-10",children:"AI automatically understands varied spreadsheet formats and maps column names securely."})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f97316] to-[#ea580c] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(249,115,22,0.2)] flex flex-col text-white group transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:shadow-orange-500/30",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full"}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-white/10 border border-white/20 flex items-center justify-center shrink-0 mb-3 relative z-10 transition-transform group-hover:scale-110",children:e.jsx(di,{className:"w-5 h-5 text-white"})}),e.jsx("h4",{className:"font-bold text-[14px] mb-1.5 relative z-10",children:"Risk Prediction"}),e.jsx("p",{className:"text-[12px] text-white/90 leading-relaxed relative z-10",children:"Analyzes historical performance patterns across your data to predict at-risk students."})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(168,85,247,0.2)] flex flex-col text-white group transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:shadow-purple-500/30",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full"}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-white/10 border border-white/20 flex items-center justify-center shrink-0 mb-3 relative z-10 transition-transform group-hover:scale-110",children:e.jsx($s,{className:"w-5 h-5 text-white"})}),e.jsx("h4",{className:"font-bold text-[14px] mb-1.5 relative z-10",children:"Contextual AI"}),e.jsx("p",{className:"text-[12px] text-white/90 leading-relaxed relative z-10",children:"Maps curriculum topics to generate highly personalized remedial lesson paths."})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-white flex flex-col justify-between h-full",children:[e.jsx("h2",{className:"text-[16px] font-semibold text-[#1e293b] mb-4",children:"Data Health"}),e.jsxs("div",{className:"flex-1 bg-emerald-50/50 border border-emerald-100 rounded-[16px] p-6 flex flex-col items-center justify-center text-center transition-all duration-300 hover:bg-emerald-50 hover:shadow-md hover:border-emerald-200",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-emerald-100 flex items-center justify-center mb-3 text-emerald-600 transition-transform duration-300 hover:scale-110 hover:-translate-y-1",children:e.jsx(Wr,{className:"w-6 h-6"})}),e.jsx("h3",{className:"text-emerald-700 font-bold text-[15px] mb-1",children:"All Records Synced"}),e.jsx("p",{className:"text-emerald-600/80 text-[12px] max-w-[200px]",children:"AI parsing completed successfully with no anomalies detected."})]}),e.jsxs("div",{className:"flex flex-col gap-2 mt-4",children:[e.jsxs("button",{onClick:()=>j("edit-records"),className:"w-full flex items-center justify-center gap-2 bg-[#1e293b] hover:bg-black text-white text-[13px] font-semibold rounded-full px-4 py-3 shadow-[0_1px_4px_rgba(0,0,0,0.04)] transition-transform hover:scale-[1.02]",children:[e.jsx(Ic,{className:"w-4 h-4"})," Edit Class Records"]}),e.jsx("button",{onClick:()=>j("mapping-logs"),className:"w-full flex items-center justify-center gap-2 bg-white text-[#475569] border border-slate-300 hover:bg-slate-50 text-[13px] font-semibold rounded-full px-4 py-3 shadow-[0_1px_4px_rgba(0,0,0,0.04)] transition-colors",children:"View Mapping Logs"})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-white flex flex-col h-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("h2",{className:"text-[16px] font-semibold text-[#1e293b]",children:"Recent Uploads"}),e.jsx("button",{onClick:()=>j("mapping-logs"),className:"text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors",children:"View All"})]}),e.jsxs("div",{className:"flex-1 space-y-[12px] overflow-y-auto no-scrollbar flex flex-col justify-center items-center h-[120px]",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-slate-50 flex items-center justify-center mb-2 border border-slate-100",children:e.jsx(Nc,{className:"w-5 h-5 text-slate-300"})}),e.jsx("p",{className:"text-[13px] font-medium text-slate-500",children:"There are no recent uploads yet."})]})]})]})]}),k==="mapping-logs"&&e.jsxs("div",{className:"space-y-[16px]",children:[e.jsx("div",{className:"shrink-0 mb-2",children:e.jsxs("button",{onClick:()=>j("main"),className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors w-max bg-white px-[18px] py-2 rounded-full shadow-sm border border-slate-200",children:[e.jsx(Xa,{className:"w-4 h-4"})," Back to Uploads"]})}),e.jsxs("div",{className:"bg-white rounded-[18px] border border-[#f1f5f9] overflow-hidden shadow-sm",children:[e.jsx("div",{className:"p-5 border-b border-[#f1f5f9] bg-slate-50 flex justify-between items-center",children:e.jsx("h2",{className:"text-[15px] font-semibold text-[#1e293b]",children:"Latest Import Mapping"})}),e.jsx("div",{className:"p-5",children:E?e.jsx("div",{className:"space-y-3",children:E.columns.map((g,T)=>e.jsxs("div",{className:"flex justify-between p-3 border rounded bg-slate-50",children:[e.jsx("span",{className:"font-semibold text-sm",children:g.columnName}),e.jsx("span",{className:"text-sm text-indigo-600",children:g.mappedField||"Unmapped"})]},T))}):e.jsx("p",{className:"text-slate-500 text-sm",children:"No recent mapping logs to display."})})]})]}),k==="edit-records"&&e.jsxs("div",{className:"space-y-[16px] h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 mb-2",children:e.jsxs("button",{onClick:()=>j("main"),className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors w-max bg-white px-[18px] py-2 rounded-full shadow-sm border border-slate-200",children:[e.jsx(Xa,{className:"w-4 h-4"})," Back to Uploads"]})}),e.jsxs("div",{className:"bg-white rounded-[18px] border border-slate-200 shadow-sm overflow-hidden flex flex-col flex-1",children:[e.jsxs("div",{className:"p-5 border-b border-slate-200 flex justify-between items-center bg-white",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-[18px] font-bold text-[#1e293b]",children:"Edit Class Records"}),e.jsx("p",{className:"text-[13px] text-[#64748b]",children:"Review and modify student data manually"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx("button",{onClick:()=>j("main"),className:"px-5 py-2 rounded-full border border-slate-300 text-slate-700 font-semibold text-[13px] hover:bg-slate-50",children:"Cancel"}),e.jsx("button",{onClick:te,disabled:$e,className:"px-5 py-2 rounded-full bg-emerald-500 text-white font-semibold text-[13px] hover:bg-emerald-600 flex items-center gap-2 disabled:opacity-50",children:$e?"Saving...":e.jsxs(e.Fragment,{children:[e.jsx(ni,{className:"w-4 h-4"})," Save Changes"]})})]})]}),e.jsxs("div",{className:"px-5 py-3 border-b border-slate-200 flex justify-between items-center bg-slate-50/50 shrink-0 text-slate-500 text-[13px]",children:[e.jsxs("span",{className:"flex items-center gap-2 font-medium",children:[e.jsx(ga,{className:"w-4 h-4"})," Click on any field to edit"]}),e.jsxs("span",{children:["Showing ",Y.length," records"]})]}),e.jsx("div",{className:"overflow-auto flex-1 table-scrollbar bg-white relative",children:e.jsxs("div",{className:"min-w-[1100px] w-full flex flex-col min-h-full",children:[e.jsxs("div",{className:"flex items-center w-full bg-slate-100/90 border-b border-slate-200 text-[12px] font-semibold text-slate-500 tracking-wide sticky top-0 z-20 shadow-[0_1px_2px_rgba(0,0,0,0.02)] h-12",children:[e.jsx("div",{className:"flex-[1.5] min-w-[240px] px-6 sticky left-0 z-30 bg-slate-100/90 backdrop-blur-sm border-r border-slate-200 h-full flex items-center shadow-[2px_0_4px_rgba(0,0,0,0.02)]",children:"Student Name"}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 h-full flex items-center justify-center",children:"LRN"}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 h-full flex items-center justify-center",children:"Grade"}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 h-full flex items-center justify-center",children:"Section"}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 h-full flex items-center justify-center",children:"Avg Score"}),e.jsx("div",{className:"w-[120px] shrink-0 px-4 h-full flex items-center justify-center",children:"Risk Level"}),e.jsx("div",{className:"flex-1 min-w-[180px] px-4 h-full flex items-center justify-center",children:"Weakest Topic"}),e.jsx("div",{className:"w-[80px] shrink-0 px-4 h-full flex items-center justify-center border-r border-transparent",children:"Action"})]}),e.jsx("div",{className:"flex flex-col w-full pb-4",children:Y.map((g,T)=>{const R=Pa(g),K=g.name.split(" "),Z=K.length>1?`${K[0][0]}${K[K.length-1][0]}`.toUpperCase():g.name.substring(0,2).toUpperCase(),re=["bg-[#be185d]","bg-[#3b82f6]","bg-[#f43f5e]","bg-[#2563eb]","bg-[#059669]","bg-[#d946ef]"],le=re[T%re.length],$=(g.avgScore??0)>=75?"text-emerald-500":(g.avgScore??0)>=60?"text-orange-500":"text-rose-500";let oe="bg-slate-50 text-slate-600 border-slate-200";const pe=(g.riskLevel||"").toLowerCase();return pe==="low"?oe="bg-emerald-50 text-emerald-600 border-emerald-200":pe==="high"?oe="bg-rose-50 text-rose-600 border-rose-200":pe==="medium"&&(oe="bg-orange-50 text-orange-600 border-orange-200"),e.jsxs("div",{className:"flex items-center w-full border-b border-slate-100 hover:bg-slate-50 transition-colors group min-h-[64px]",children:[e.jsxs("div",{className:"flex-[1.5] min-w-[240px] px-6 sticky left-0 z-10 bg-white group-hover:bg-slate-50 border-r border-slate-100 h-full flex items-center gap-4 shadow-[2px_0_4px_rgba(0,0,0,0.01)]",children:[e.jsx("div",{className:`w-8 h-8 rounded-full ${le} text-white flex items-center justify-center font-bold text-[12px] shrink-0`,children:Z}),e.jsx("span",{className:"font-semibold text-slate-800 text-[14px] truncate",children:g.name})]}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 flex justify-center text-[13px] text-slate-500",children:g.lrn||"—"}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 flex justify-center",children:e.jsx("input",{type:"text",value:Ge[R]?.grade||g.grade||"",onChange:we=>G(se=>({...se,[R]:{...se[R],grade:we.target.value}})),className:"bg-slate-100 focus:bg-white outline-none px-4 py-1.5 rounded-full text-[13px] font-medium text-slate-600 w-full transition-all border border-transparent focus:border-purple-500 focus:ring-2 focus:ring-purple-500/20 text-center"})}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 flex justify-center",children:e.jsx("input",{type:"text",value:Ge[R]?.section||g.section||"",onChange:we=>G(se=>({...se,[R]:{...se[R],section:we.target.value}})),className:"bg-slate-100 focus:bg-white outline-none px-4 py-1.5 rounded-full text-[13px] font-medium text-slate-600 w-full transition-all border border-transparent focus:border-purple-500 focus:ring-2 focus:ring-purple-500/20 text-center"})}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 flex justify-center",children:e.jsxs("span",{className:`${$} font-bold text-[14px]`,children:[g.avgScore,"%"]})}),e.jsx("div",{className:"w-[120px] shrink-0 px-4 flex justify-center",children:e.jsx("span",{className:`px-3 py-1 text-[10px] font-bold rounded uppercase border ${oe}`,children:g.riskLevel||"Unknown"})}),e.jsx("div",{className:"flex-1 min-w-[180px] px-4 flex justify-center text-[13px] text-slate-600 truncate",children:g.weakestTopic||"Foundational Skills"}),e.jsx("div",{className:"w-[80px] shrink-0 px-4 flex justify-center border-r border-transparent",children:e.jsx("button",{className:"w-8 h-8 rounded-full hover:bg-slate-200 flex items-center justify-center transition-colors",children:e.jsx(ci,{className:"w-4 h-4 text-slate-400"})})})]},R)})})]})})]})]})]})})}const Ha="ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789",Go="school.mathpulse.local";function Qo(t=10){const s=typeof globalThis<"u"&&typeof globalThis.crypto<"u"?globalThis.crypto:void 0;if(s&&typeof s.getRandomValues=="function"){const r=new Uint32Array(t);s.getRandomValues(r);let o="";for(let n=0;n{const[l,c]=m.useState(""),[d,u]=m.useState(""),[f,h]=m.useState(!1),[b,k]=m.useState(null),[j,S]=m.useState(null),[p,N]=m.useState(!1);m.useEffect(()=>{t&&(k(null),N(!1),h(!1),S(null),c((a?.email||lx(a)).trim()),u(Qo()))},[t,a]);const C=m.useMemo(()=>a?[a.grade,a.section].filter(Boolean).join(" · ")||"Unassigned section":null,[a]),z=()=>{u(Qo()),N(!1)},I=async()=>{try{const y=j?.temporaryPassword||d;if(!y)return;typeof navigator<"u"&&navigator.clipboard&&await navigator.clipboard.writeText(y),N(!0),me.success("Temporary password copied. Share it with the student now — it will not be shown again."),window.setTimeout(()=>N(!1),2500)}catch(y){console.warn("Clipboard write failed:",y),me.error("Unable to copy password. Please copy it manually.")}},U=async()=>{if(!a)return;const y=l.trim();if(!cx(y)){k("Enter a valid email address before creating the account.");return}if(!d||d.length<8){k("Temporary password must be at least 8 characters.");return}if(!r){k("Missing teacher context. Please refresh and try again.");return}h(!0),k(null);try{const w=await Nm({name:a.name,lrn:a.lrn,email:y,grade:a.grade,section:a.section,classSectionId:a.classSectionId,adviserTeacherId:r,adviserTeacherName:o,schoolYear:n,temporaryPassword:d});S(w),i?.({...w,rosterId:a.rosterId}),me.success(`Account created for ${a.name}.`)}catch(w){const A=w instanceof Error?w.message:"Failed to create account.";k(A)}finally{h(!1)}},v=j?.temporaryPassword||d;return e.jsx(Et,{children:t&&a&&e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50 backdrop-blur-sm p-4",onClick:()=>{f||s()},children:e.jsxs(Re.div,{initial:{opacity:0,scale:.95,y:12},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:12},transition:{type:"spring",damping:28,stiffness:320},onClick:y=>y.stopPropagation(),className:"bg-[#f7f9fc] rounded-3xl shadow-2xl w-full max-w-lg overflow-hidden border border-[#dde3eb]",role:"dialog","aria-modal":"true","aria-labelledby":"create-student-account-modal-title",children:[e.jsxs("div",{className:"flex items-start justify-between px-6 pt-6",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-12 h-12 rounded-2xl bg-indigo-100 text-indigo-600 flex items-center justify-center shrink-0",children:e.jsx(Ko,{size:22})}),e.jsxs("div",{children:[e.jsx("h2",{id:"create-student-account-modal-title",className:"text-[16px] font-bold text-[#0a1628]",children:j?"Account Created":"Create Student Account"}),e.jsx("p",{className:"text-[12px] text-[#5a6578] mt-0.5",children:j?"Share these credentials with the student. The password will not be shown again.":`Provision a system account for ${a.name}.`})]})]}),e.jsx("button",{type:"button",onClick:()=>{f||s()},className:"p-1.5 rounded-lg hover:bg-[#dde3eb] transition-colors","aria-label":"Close",children:e.jsx(cs,{className:"w-4 h-4 text-[#5a6578]"})})]}),e.jsxs("div",{className:"px-6 py-5 space-y-4",children:[e.jsxs("div",{className:"bg-white border border-[#e2e8f0] rounded-2xl p-4",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[#64748b]",children:"Roster Row"}),e.jsx("p",{className:"text-[14px] font-semibold text-[#0a1628] mt-1",children:a.name}),e.jsxs("p",{className:"text-[12px] text-[#475569] mt-0.5",children:[a.lrn?`LRN ${a.lrn} · `:"",C]})]}),!j&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-[12px] font-semibold text-[#0a1628]",children:"Email address"}),e.jsx("input",{type:"email",value:l,onChange:y=>c(y.target.value),disabled:f,className:"mt-1 w-full rounded-xl border border-[#dde3eb] bg-white px-3 py-2 text-[13px] text-[#0a1628] focus:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-200",placeholder:"student@school.example",autoComplete:"off",spellCheck:!1}),e.jsx("span",{className:"text-[11px] text-[#64748b] mt-1 block",children:"Auto-generated from LRN if available. The student will sign in with this address."})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-[12px] font-semibold text-[#0a1628] block",children:"Temporary password"}),e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[e.jsx("input",{type:"text",value:d,readOnly:!0,className:"flex-1 rounded-xl border border-[#dde3eb] bg-white px-3 py-2 text-[13px] font-mono tracking-wide text-[#0a1628] focus:outline-none"}),e.jsx("button",{type:"button",onClick:z,disabled:f,className:"p-2 rounded-xl border border-[#dde3eb] bg-white hover:bg-[#f1f5f9] transition-colors disabled:opacity-60","aria-label":"Regenerate temporary password",children:e.jsx(zs,{className:"w-4 h-4 text-[#475569]"})}),e.jsx("button",{type:"button",onClick:I,className:"p-2 rounded-xl border border-[#dde3eb] bg-white hover:bg-[#f1f5f9] transition-colors","aria-label":"Copy temporary password",children:p?e.jsx(Mt,{className:"w-4 h-4 text-emerald-600"}):e.jsx(zr,{className:"w-4 h-4 text-[#475569]"})})]}),e.jsx("span",{className:"text-[11px] text-[#64748b] mt-1 block",children:"The student should change this on first sign-in. Share it once — it will not be persisted."})]}),b&&e.jsxs("div",{className:"flex items-start gap-2 rounded-xl bg-rose-50 border border-rose-200 px-3 py-2 text-[12px] text-rose-700",children:[e.jsx(lc,{className:"w-4 h-4 mt-0.5 shrink-0"}),e.jsx("span",{children:b})]})]}),j&&e.jsxs("div",{className:"rounded-2xl border border-emerald-200 bg-emerald-50 p-4 space-y-2",children:[e.jsx("p",{className:"text-[12px] font-semibold text-emerald-800",children:"Credentials"}),e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-xl bg-white border border-emerald-100 px-3 py-2",children:[e.jsx("span",{className:"text-[12px] text-[#475569]",children:"Email"}),e.jsx("span",{className:"text-[13px] font-semibold text-[#0a1628]",children:j.email})]}),e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-xl bg-white border border-emerald-100 px-3 py-2",children:[e.jsx("span",{className:"text-[12px] text-[#475569]",children:"Temporary password"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[13px] font-semibold font-mono text-[#0a1628]",children:v}),e.jsx("button",{type:"button",onClick:I,className:"p-1.5 rounded-lg border border-emerald-200 bg-white hover:bg-emerald-100 transition-colors","aria-label":"Copy temporary password",children:p?e.jsx(Mt,{className:"w-4 h-4 text-emerald-600"}):e.jsx(zr,{className:"w-4 h-4 text-emerald-700"})})]})]}),e.jsx("p",{className:"text-[11px] text-emerald-800",children:"This password is not stored anywhere. If you close this dialog without copying, you will need to reset it from the admin tools."})]})]}),e.jsx("div",{className:"flex items-center justify-end gap-2 px-6 pb-6",children:j?e.jsx(xt,{type:"button",onClick:s,className:"bg-indigo-600 hover:bg-indigo-700 text-white text-[13px] font-semibold rounded-xl px-5 py-2",children:"Done"}):e.jsxs(e.Fragment,{children:[e.jsx(xt,{type:"button",variant:"ghost",onClick:s,disabled:f,className:"text-[13px] font-semibold text-[#475569] rounded-xl px-4 py-2 hover:bg-[#dde3eb]",children:"Cancel"}),e.jsx(xt,{type:"button",onClick:U,disabled:f,className:"bg-indigo-600 hover:bg-indigo-700 text-white text-[13px] font-semibold rounded-xl px-5 py-2 disabled:opacity-60",children:f?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(dt,{className:"w-4 h-4 animate-spin"}),"Creating…"]}):"Create account"})]})})]})})})};function mx(t){const s=t.atRiskCount>=5?"high":t.atRiskCount>=2?"medium":"low",a=gt({metadata:t.classMetadata,classSectionId:t.classSectionId,className:t.name,grade:t.grade,gradeLevel:t.gradeLevel,classification:t.classification,strand:t.strand,section:t.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId||t.teacherId,ownerTeacherName:t.ownerTeacherName,adviserTeacherId:t.adviserTeacherId||t.teacherId,adviserTeacherName:t.adviserTeacherName||t.ownerTeacherName,managerId:t.managerId,managerName:t.managerName});return{id:t.id,name:a.className||t.name,classSectionId:a.classSectionId||t.classSectionId,classMetadata:a,gradeLevel:a.gradeLevel||void 0,classification:a.classification||void 0,strand:a.strand||void 0,managerId:a.managerId||void 0,managerName:a.managerName||void 0,schedule:t.schedule,studentCount:t.studentCount,avgScore:t.avgScore,atRiskCount:t.atRiskCount,riskLevel:s}}function Rr(t,s){const a=t.riskLevel.toLowerCase(),r=t.lastActive?nl(t.lastActive.toDate()):"Unknown",o=t.className||s||"Imported Class",n=ls(o),i=t.grade||n.grade,l=t.section||n.section,c=gt({metadata:t.classMetadata,classSectionId:t.classSectionId||t.classroomId,className:[i,l].filter(Boolean).join(" - ")||o,grade:i,gradeLevel:t.gradeLevel,classification:t.classification,strand:t.strand,section:l,adviserTeacherId:t.teacherId,ownerTeacherId:t.teacherId,managerId:t.classMetadata?.managerId||t.managerId,managerName:t.classMetadata?.managerName||t.managerName});return{id:t.id,lrn:t.lrn,name:t.name,avatar:t.avatar||`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name)}&background=random`,avgScore:t.avgQuizScore,riskLevel:a,weakestTopic:t.weakestTopic||"N/A",classroomId:t.classroomId||c.classSectionId||o,className:c.className||[i,l].filter(Boolean).join(" - ")||o,grade:i,gradeLevel:c.gradeLevel||us(i)||void 0,classification:c.classification||sa(c.gradeLevel||i)||void 0,strand:c.strand||aa(c.className,l)||void 0,section:l,classSectionId:c.classSectionId||t.classSectionId,classMetadata:c,managerId:c.managerId||void 0,managerName:c.managerName||void 0,lastActive:r,struggles:t.struggles||[],engagementScore:t.engagementScore,attendance:t.attendance,assignmentCompletion:t.assignmentCompletion,hasRegisteredAccount:t.hasRegisteredAccount,source:t.source,accountUid:t.accountUid,email:t.email}}function ux(t){const s=t.atRiskCount>=5?"high":t.atRiskCount>=2?"medium":"low",a=gt({metadata:t.classMetadata,classSectionId:t.classSectionId,className:t.name,grade:t.grade,gradeLevel:t.gradeLevel||t.classMetadata?.gradeLevel,classification:t.classification||t.classMetadata?.classification,strand:t.strand||t.classMetadata?.strand,section:t.section,managerId:t.managerId||t.classMetadata?.managerId,managerName:t.managerName||t.classMetadata?.managerName});return{id:t.id,name:a.className||t.name,classSectionId:a.classSectionId||t.classSectionId||void 0,classMetadata:a,gradeLevel:a.gradeLevel||void 0,classification:a.classification||void 0,strand:a.strand||void 0,managerId:a.managerId||void 0,managerName:a.managerName||void 0,schedule:t.schedule||"Mon-Fri",studentCount:t.studentCount,avgScore:t.avgScore,atRiskCount:t.atRiskCount,riskLevel:s}}function xx(t){const s=(t.riskLevel||"Low").toLowerCase(),a=gt({metadata:t.classMetadata,classSectionId:t.classSectionId,className:t.className||[t.grade,t.section].filter(Boolean).join(" - ")||"Imported Class",grade:t.grade,gradeLevel:t.gradeLevel||t.classMetadata?.gradeLevel,classification:t.classification||t.classMetadata?.classification,strand:t.strand||t.classMetadata?.strand,section:t.section,managerId:t.managerId||t.classMetadata?.managerId,managerName:t.managerName||t.classMetadata?.managerName}),r=a.className||"Imported Class";return{id:t.id,lrn:t.lrn||void 0,name:t.name,avatar:`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name)}&background=random`,avgScore:t.avgQuizScore,riskLevel:s,weakestTopic:t.weakestTopic||"Foundational Skills",classroomId:a.classSectionId||t.classSectionId||r,className:r,grade:a.grade||ls(r).grade,gradeLevel:a.gradeLevel||us(a.grade||ls(r).grade)||void 0,classification:a.classification||sa(a.gradeLevel||a.grade)||void 0,strand:a.strand||aa(r,a.section||t.section)||void 0,section:a.section||ls(r).section,classSectionId:a.classSectionId||t.classSectionId||void 0,classMetadata:a,managerId:a.managerId||void 0,managerName:a.managerName||void 0,lastActive:"Recently imported",struggles:[t.weakestTopic||"Foundational Skills"],engagementScore:t.engagementScore,attendance:t.attendance,assignmentCompletion:t.assignmentCompletion}}function px(t,s,a){return t<60||s<75||a<55?"high":t<75||s<85||a<70?"medium":"low"}function hx(t,s,a,r){const o=gt({metadata:r,classSectionId:s,className:a}),n=o.className||"Imported Class",i=o.classSectionId||"imported_class",l=Number(t.avgQuizScore||0),c=Number(t.attendance||0),d=Number(t.engagementScore||0),u=Number(t.assignmentCompletion||0),f=t.unknownFields?.weakestTopic||t.unknownFields?.topic||"Foundational Skills",h=px(l,c,d),b=t.studentId||t.lrn||t.email||t.name||Math.random().toString(36).slice(2);return{id:`upload-${i}-${b}`,lrn:t.lrn,name:t.name,avatar:`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name)}&background=random`,avgScore:l,riskLevel:h,weakestTopic:f,classroomId:i,className:n,grade:o.grade||ls(n).grade,gradeLevel:o.gradeLevel||us(o.grade||ls(n).grade)||void 0,classification:o.classification||sa(o.gradeLevel||o.grade)||void 0,strand:o.strand||aa(n,o.section)||void 0,section:o.section||ls(n).section,classSectionId:i,classMetadata:o,managerId:o.managerId||void 0,managerName:o.managerName||void 0,lastActive:"Recently imported",struggles:[f],engagementScore:d,attendance:c,assignmentCompletion:u}}function nl(t){const s=Date.now()-t.getTime(),a=Math.floor(s/6e4);if(a<1)return"Just now";if(a<60)return`${a} min${a>1?"s":""} ago`;const r=Math.floor(a/60);if(r<24)return`${r} hour${r>1?"s":""} ago`;const o=Math.floor(r/24);return`${o} day${o>1?"s":""} ago`}function at(t){return(t||"").trim().toLowerCase()}function Uo(t){const s=at(t.classSectionId);if(s)return`section:${s}`;const a=(t.id||"").trim().toLowerCase();return a?`id:${a}`:`name:${(t.name||"").trim().toLowerCase()}`}function Vo(t,s){const a=new Map;return t.forEach(r=>{a.set(Uo(r),r)}),s.forEach(r=>{const o=Uo(r),n=a.get(o);if(!n){a.set(o,r);return}const i=Math.max(n.atRiskCount||0,r.atRiskCount||0),l=Math.max(n.studentCount||0,r.studentCount||0),c=r.avgScore>0?r.avgScore:n.avgScore,d=i>=5?"high":i>=2?"medium":"low",u=gt({metadata:n.classMetadata,classSectionId:n.classSectionId||r.classSectionId,className:n.name||r.name,grade:n.classMetadata?.grade||r.classMetadata?.grade,gradeLevel:n.classMetadata?.gradeLevel||r.classMetadata?.gradeLevel,classification:n.classMetadata?.classification||r.classMetadata?.classification,strand:n.classMetadata?.strand||r.classMetadata?.strand,section:n.classMetadata?.section||r.classMetadata?.section,schoolYear:n.classMetadata?.schoolYear||r.classMetadata?.schoolYear,ownerTeacherId:n.classMetadata?.ownerTeacherId||r.classMetadata?.ownerTeacherId,ownerTeacherName:n.classMetadata?.ownerTeacherName||r.classMetadata?.ownerTeacherName,adviserTeacherId:n.classMetadata?.adviserTeacherId||r.classMetadata?.adviserTeacherId,adviserTeacherName:n.classMetadata?.adviserTeacherName||r.classMetadata?.adviserTeacherName,managerId:n.classMetadata?.managerId||r.classMetadata?.managerId,managerName:n.classMetadata?.managerName||r.classMetadata?.managerName});a.set(o,{...n,classSectionId:u.classSectionId||n.classSectionId||r.classSectionId,name:u.className||n.name||r.name,classMetadata:u,gradeLevel:u.gradeLevel||void 0,classification:u.classification||void 0,strand:u.strand||void 0,managerId:u.managerId||void 0,managerName:u.managerName||void 0,schedule:n.schedule||r.schedule,studentCount:l,atRiskCount:i,avgScore:c,riskLevel:d})}),Array.from(a.values())}function nr(t){const s=(t.lrn||"").trim().toLowerCase();if(s)return`lrn:${s}`;const a=t.name.trim().toLowerCase();if(a)return`name:${a}`;const r=at(t.classSectionId)||at(t.classroomId),o=(t.id||"").trim().toLowerCase();return r&&o?`${r}|id:${o}`:`${r}|anonymous`}function Ur(t){const s=at(t.classSectionId)||at(t.classroomId),a=(t.lrn||"").trim().toLowerCase(),r=(t.id||"").trim().toLowerCase(),o=t.name.trim().toLowerCase().replace(/\s+/g,"_");return s&&a?`${s}|lrn:${a}`:s&&r?`${s}|id:${r}`:a?`lrn:${a}`:r&&o?`id:${r}|name:${o}`:r?`id:${r}`:s&&o?`${s}|name:${o}`:`name:${o||"unknown"}`}function Wo(t,s){const a=new Map;return t.forEach(r=>{a.set(nr(r),r)}),s.forEach(r=>{const o=nr(r),n=a.get(o);if(!n){a.set(o,r);return}const i=[n.riskLevel,r.riskLevel].includes("high")?"high":[n.riskLevel,r.riskLevel].includes("medium")?"medium":"low",l=gt({metadata:n.classMetadata,classSectionId:n.classSectionId||r.classSectionId,className:n.className||r.className,grade:n.grade||r.grade,gradeLevel:n.gradeLevel||r.gradeLevel,classification:n.classification||r.classification,strand:n.strand||r.strand,section:n.section||r.section,managerId:n.managerId||r.managerId,managerName:n.managerName||r.managerName});a.set(o,{...n,lrn:n.lrn||r.lrn,classSectionId:l.classSectionId||n.classSectionId||r.classSectionId,classroomId:n.classroomId||r.classroomId,className:l.className||n.className||r.className,grade:l.grade||n.grade||r.grade,gradeLevel:l.gradeLevel||n.gradeLevel||r.gradeLevel,classification:l.classification||n.classification||r.classification,strand:l.strand||n.strand||r.strand,section:l.section||n.section||r.section,managerId:l.managerId||n.managerId||r.managerId,managerName:l.managerName||n.managerName||r.managerName,classMetadata:l,avgScore:r.avgScore>0?r.avgScore:n.avgScore,attendance:r.attendance>0?r.attendance:n.attendance,engagementScore:r.engagementScore>0?r.engagementScore:n.engagementScore,assignmentCompletion:r.assignmentCompletion>0?r.assignmentCompletion:n.assignmentCompletion,weakestTopic:n.weakestTopic&&n.weakestTopic!=="N/A"?n.weakestTopic:r.weakestTopic,riskLevel:i,struggles:n.struggles.length>0?n.struggles:r.struggles,hasRegisteredAccount:n.hasRegisteredAccount===!0||r.hasRegisteredAccount===!0?!0:n.hasRegisteredAccount??r.hasRegisteredAccount,source:n.source==="registered"&&r.source==="import"||n.source==="import"&&r.source==="registered"||n.source==="both"||r.source==="both"?"both":n.source||r.source,accountUid:n.accountUid||r.accountUid,email:n.email||r.email})}),Array.from(a.values())}const bp=({onLogout:t,onOpenProfile:s,onOpenSettings:a})=>{const{currentUser:r,userProfile:o}=ds(),[n,i]=m.useState("dashboard"),[l,c]=m.useState(!1),[d,u]=m.useState(!1),[f,h]=m.useState(!1),[b,k]=m.useState(!1),[j,S]=m.useState(!1),[p,N]=m.useState(!1),[C,z]=m.useState(!1),I=["streak_reminder","daily_checkin","streak_milestone","achievement_unlocked","level_up","xp_earned","quiz_result"],{notifications:U}=ei(),v=U.filter(_=>!_.isRead&&!I.includes(_.type)).length,[y,w]=m.useState(null),[A,B]=m.useState(null),[E,F]=m.useState(!1),[X,J]=m.useState(!1),[ce,ne]=m.useState(!1),[xe,he]=m.useState(!1),[H,q]=m.useState([]),[M,Y]=m.useState([]),[ae,$e]=m.useState([]),[Me,Ge]=m.useState(""),[G,te]=m.useState(!0),[g,T]=m.useState(!1),[R,K]=m.useState(0),[Z,re]=m.useState([]),[le,$]=m.useState(!1),[oe,pe]=m.useState(null),[we,se]=m.useState(null),fe=o?.name||"Teacher",et=m.useRef(new Map);m.useEffect(()=>{const _=()=>k(window.innerWidth<1024);return _(),window.addEventListener("resize",_),()=>window.removeEventListener("resize",_)},[]),m.useEffect(()=>{if(!r)return;const _=r.uid;let ee=!0,ze;return(async()=>{te(!0);try{const Qe=await Wi(_);let je=Qe.map(mx);const ft=await Sm(_).catch(()=>[]),ot=new Map;ft.forEach(L=>{const V=at(L.classSectionId);V&&ot.set(V,L)}),je=je.map(L=>{const V=ot.get(at(L.classSectionId));if(!V)return L;const ke=gt({metadata:L.classMetadata,classSectionId:V.classSectionId||L.classSectionId,className:V.className||L.name,grade:V.grade||L.classMetadata?.grade,gradeLevel:V.gradeLevel||L.classMetadata?.gradeLevel,classification:V.classification||L.classMetadata?.classification,strand:V.strand||L.classMetadata?.strand,section:V.section||L.classMetadata?.section,schoolYear:V.schoolYear||L.classMetadata?.schoolYear,ownerTeacherId:V.ownerTeacherId||L.classMetadata?.ownerTeacherId,ownerTeacherName:V.ownerTeacherName||L.classMetadata?.ownerTeacherName,managerId:V.managerId||L.classMetadata?.managerId,managerName:V.managerName||L.classMetadata?.managerName});return{...L,name:ke.className||L.name,classSectionId:ke.classSectionId||L.classSectionId,classMetadata:ke,gradeLevel:ke.gradeLevel||L.gradeLevel,classification:ke.classification||L.classification,strand:ke.strand||L.strand,managerId:ke.managerId||L.managerId,managerName:ke.managerName||L.managerName}});const Ce=new Map,ps=new Map;Qe.forEach(L=>{const V=gt({metadata:L.classMetadata,classSectionId:L.classSectionId,className:L.name,grade:L.grade,gradeLevel:L.gradeLevel,classification:L.classification,strand:L.strand,section:L.section,schoolYear:L.schoolYear,ownerTeacherId:L.ownerTeacherId||L.teacherId,ownerTeacherName:L.ownerTeacherName,adviserTeacherId:L.adviserTeacherId||L.teacherId,adviserTeacherName:L.adviserTeacherName,managerId:L.managerId,managerName:L.managerName});Ce.set(L.id,V.className||L.name),ps.set(L.id,V);const ke=at(L.classSectionId);if(ke){const _e=ot.get(ke),Bt=gt({metadata:V,classSectionId:_e?.classSectionId||ke,className:_e?.className||V.className,grade:_e?.grade||V.grade,gradeLevel:_e?.gradeLevel||V.gradeLevel,classification:_e?.classification||V.classification,strand:_e?.strand||V.strand,section:_e?.section||V.section,schoolYear:_e?.schoolYear||V.schoolYear,ownerTeacherId:_e?.ownerTeacherId||V.ownerTeacherId,ownerTeacherName:_e?.ownerTeacherName||V.ownerTeacherName,managerId:_e?.managerId||V.managerId,managerName:_e?.managerName||V.managerName});Ce.set(ke,Bt.className||L.name),ps.set(ke,Bt)}});const Yt=L=>{const V=at(L.classSectionId||L.classroomId);if(!V)return L;const ke=ps.get(V);if(!ke)return L;const _e=gt({metadata:ke,classSectionId:L.classSectionId||ke.classSectionId,className:L.className||ke.className,grade:L.grade||ke.grade,gradeLevel:L.gradeLevel||ke.gradeLevel,classification:L.classification||ke.classification,strand:L.strand||ke.strand,section:L.section||ke.section,managerId:L.managerId||ke.managerId,managerName:L.managerName||ke.managerName});return{...L,className:_e.className||L.className,grade:_e.grade||L.grade,gradeLevel:_e.gradeLevel||L.gradeLevel,classification:_e.classification||L.classification,strand:_e.strand||L.strand,section:_e.section||L.section,classSectionId:_e.classSectionId||L.classSectionId,classMetadata:_e,managerId:_e.managerId||L.managerId,managerName:_e.managerName||L.managerName}},_s=(L,V,ke)=>Ce.get(L)||(V?Ce.get(V):void 0)||ke||"Unknown",za=Array.from(new Set([...ft.map(L=>L.classSectionId),...Qe.map(L=>L.classSectionId).filter(Boolean),...je.map(L=>L.classSectionId).filter(Boolean)].map(L=>(L||"").trim()).filter(L=>!!L))),[Kt,ra]=await Promise.all([cn(_).catch(L=>(console.warn("[TeacherDashboard] managed-student fetch failed:",L),[])),bm(_,za).catch(L=>(console.warn("[TeacherDashboard] registered-student fetch failed:",L),[]))]);let na=ra;if(ra.length===0&&Kt.length===0)try{const{collection:L,query:V,where:ke,getDocs:_e}=await _r(async()=>{const{collection:It,query:Pe,where:da,getDocs:ma}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{collection:It,query:Pe,where:da,getDocs:ma}},__vite__mapDeps([2,3])),{db:Bt}=await _r(async()=>{const{db:It}=await import("./index-Dl2Y5a7s.js").then(Pe=>Pe.b5);return{db:It}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),Ee=V(L(Bt,"users"),ke("role","==","student"));na=(await _e(Ee)).docs.map(It=>{const Pe=It.data();return{uid:It.id,name:String(Pe.name||Pe.displayName||"").trim()||"Student",email:String(Pe.email||"").trim(),lrn:Pe.lrn?String(Pe.lrn).trim():void 0,photo:Pe.photo?String(Pe.photo).trim():Pe.photoURL?String(Pe.photoURL).trim():void 0,grade:Pe.grade?String(Pe.grade).trim():void 0,section:Pe.section?String(Pe.section).trim():void 0,classSectionId:Pe.classSectionId?String(Pe.classSectionId).trim():void 0,adviserTeacherId:Pe.adviserTeacherId?String(Pe.adviserTeacherId).trim():void 0,role:"student",createdAt:Pe.createdAt||void 0}}).filter(It=>It.name!=="Student"||It.email)}catch(L){console.warn("[TeacherDashboard] fallback all-students fetch failed:",L)}const hs=new Map,oa=new Map,ia=new Map;Kt.forEach(L=>{hs.set(L.id,L),L.lrn&&oa.set(L.lrn.trim().toLowerCase(),L);const V=wo(L.name),ke=at(L.classSectionId||L.classroomId);V&&ia.set(`${V}|${ke}`,L)});const Hs=new Set,ur=na.map(L=>{const V=vm(L),ke=(L.lrn||"").trim().toLowerCase(),_e=wo(L.name),Bt=at(L.classSectionId);let Ee;if(hs.has(L.uid))Ee=hs.get(L.uid);else if(ke&&oa.has(ke))Ee=oa.get(ke);else if(_e){const Pe=`${_e}|${Bt}`;Ee=ia.get(Pe)}if(Ee){Hs.add(Ee.id);const Pe={...V,id:L.uid,accountUid:L.uid,email:V.email||Ee.email,lrn:V.lrn||Ee.lrn,name:V.name||Ee.name,avatar:V.avatar||Ee.avatar,riskLevel:Ee.riskLevel||V.riskLevel,avgQuizScore:Ee.avgQuizScore||V.avgQuizScore,engagementScore:Ee.engagementScore||V.engagementScore,attendance:Ee.attendance||V.attendance,assignmentCompletion:Ee.assignmentCompletion||V.assignmentCompletion,weakestTopic:Ee.weakestTopic||V.weakestTopic,struggles:Ee.struggles||V.struggles,lastActive:Ee.lastActive||V.lastActive,wri:Ee.wri??null,riskStatus:Ee.riskStatus??null,riskUpdatedAt:Ee.riskUpdatedAt??null,diagnosticScore:Ee.diagnosticScore??null,externalGradesAvg:Ee.externalGradesAvg??null,systemPerformanceAvg:Ee.systemPerformanceAvg??null,riskHistory:Ee.riskHistory,grade:V.grade||Ee.grade,gradeLevel:V.gradeLevel||Ee.gradeLevel,section:V.section||Ee.section,classSectionId:V.classSectionId||Ee.classSectionId,classroomId:V.classroomId||Ee.classroomId,classMetadata:Ee.classMetadata||V.classMetadata,hasRegisteredAccount:!0,source:"both"},da=at(Pe.classSectionId||Pe.classroomId),ma=_s(Pe.classroomId||"",da,Pe.className);return Yt(Rr(Pe,ma))}const Gs=at(V.classSectionId||V.classroomId),It=_s(V.classroomId||"",Gs,V.className);return Yt(Rr(V,It))}),xr=Kt.filter(L=>!Hs.has(L.id)).map(L=>{const V={...L,hasRegisteredAccount:!1,source:"import"},ke=at(V.classSectionId||V.classroomId),_e=_s(V.classroomId,ke,V.className);return Yt(Rr(V,_e))}),la=[...ur,...xr];if(!ee)return;q(L=>je.length===0&&L.length>0?L:je),Y(L=>la.length===0&&L.length>0?L:la),nt.getImportedClassOverview({limit:3e3,forceRefresh:R>0}).then(L=>{ee&&(L.warnings.length>0&&console.warn("Imported class overview warnings:",L.warnings.join(" ")),q(V=>Vo(V,L.classrooms.map(ux))),Y(V=>{if(V.length===0)return V;const ke=L.students.map(xx),_e=new Set;V.forEach(Ee=>_e.add(nr(Ee)));const Bt=ke.filter(Ee=>_e.has(nr(Ee)));return Bt.length===0?V:Wo(V,Bt)}))}).catch(L=>{console.warn("Imported class overview merge unavailable:",L)});const ca=Qe.map(L=>L.id);ca.length>0&&(ze=Cm(ca,L=>{ee&&$e(L.map(V=>({id:V.id,student:V.studentName,action:V.action,topic:V.topic,time:nl(V.timestamp.toDate()),type:V.type})))}))}catch(Qe){console.error("Failed to load teacher data:",Qe),me.error("Failed to load dashboard data")}finally{te(!1)}})(),()=>{ee=!1,ze&&ze()}},[r,R]),m.useEffect(()=>{if(!r)return;let _=!0;return km("",80).then(ee=>{_&&re(ee)}).catch(ee=>{console.warn("Failed to load teacher directory options:",ee)}),()=>{_=!1}},[r]),m.useEffect(()=>{if(M.length===0)return;(async()=>{if(M.length===0){Ge("");return}T(!0);try{const ee=M.map(Ne=>({name:Ne.name,engagementScore:Ne.engagementScore,avgQuizScore:Ne.avgScore,attendance:Ne.attendance,riskLevel:Ne.riskLevel})),ze=await nt.getDailyInsight({students:ee});Ge(ze.insight)}catch{Ge(`${M.filter(ee=>ee.riskLevel==="high").length} students are at high risk of falling behind. Review their progress in the analytics view.`)}finally{T(!1)}})()},[M]);const Fe=H.reduce((_,ee)=>_+ee.studentCount,0),Ke=H.reduce((_,ee)=>_+ee.atRiskCount,0),rt=H.length>0?Math.round(H.reduce((_,ee)=>_+ee.avgScore,0)/H.length):0,Rt=[{name:"High Risk",value:M.filter(_=>_.riskLevel==="high").length,color:"#FF8B8B"},{name:"Medium Risk",value:M.filter(_=>_.riskLevel==="medium").length,color:"#F08386"},{name:"Low Risk",value:M.filter(_=>_.riskLevel==="low").length,color:"#75D06A"}],St={};M.forEach(_=>{_.weakestTopic&&_.weakestTopic!=="N/A"&&(St[_.weakestTopic]||(St[_.weakestTopic]={total:0,sum:0}),St[_.weakestTopic].total+=1,St[_.weakestTopic].sum+=_.avgScore)});const Ft=Object.entries(St).map(([_,ee])=>({topic:_,score:Math.round(ee.sum/ee.total)})).sort((_,ee)=>_.score-ee.score).slice(0,6),ss=_=>{w(_),i("analytics")},P=_=>{B(_),i("intervention")},Ae=()=>{B(null),i("analytics")},Ye=()=>{w(null),B(null),i("dashboard")},vt=async(_,ee)=>{if(!r){me.error("Unable to assign manager: teacher context is missing.");return}const ze=ls(_.classMetadata?.className||_.name),Ne=gt({metadata:_.classMetadata,classSectionId:_.classSectionId,className:_.name,grade:_.classMetadata?.grade||ze.grade,gradeLevel:_.classMetadata?.gradeLevel,classification:_.classMetadata?.classification,strand:_.classMetadata?.strand,section:_.classMetadata?.section||ze.section,schoolYear:_.classMetadata?.schoolYear||String(new Date().getFullYear()),ownerTeacherId:_.classMetadata?.ownerTeacherId||r.uid,ownerTeacherName:_.classMetadata?.ownerTeacherName||fe,adviserTeacherId:_.classMetadata?.adviserTeacherId||r.uid,adviserTeacherName:_.classMetadata?.adviserTeacherName||fe,managerId:ee.uid,managerName:ee.name}),Qe=Ne.classSectionId||Lt(Ne.grade||ze.grade,Ne.section||ze.section);if(!Qe){me.error("Unable to assign manager: missing class section ID.");return}$(!0);try{await qi({classSectionId:Qe,className:Ne.className||_.name,grade:Ne.grade||ze.grade,gradeLevel:Ne.gradeLevel||us(Ne.grade||ze.grade)||Ne.grade||ze.grade,classification:Ne.classification||sa(Ne.gradeLevel||Ne.grade)||void 0,strand:Ne.strand||aa(Ne.className,Ne.section)||void 0,section:Ne.section||ze.section,schoolYear:Ne.schoolYear||String(new Date().getFullYear()),ownerTeacherId:Ne.ownerTeacherId||r.uid,ownerTeacherName:Ne.ownerTeacherName||fe,managerId:ee.uid,managerName:ee.name});const je=gt({metadata:Ne,classSectionId:Qe,managerId:ee.uid,managerName:ee.name}),ft=at(Qe);q(ot=>ot.map(Ce=>at(Ce.classSectionId)!==ft?Ce:{...Ce,name:je.className||Ce.name,classSectionId:je.classSectionId||Ce.classSectionId,classMetadata:je,gradeLevel:je.gradeLevel||Ce.gradeLevel,classification:je.classification||Ce.classification,strand:je.strand||Ce.strand,managerId:ee.uid,managerName:ee.name})),Y(ot=>ot.map(Ce=>{if(at(Ce.classSectionId||Ce.classroomId)!==ft)return Ce;const Yt=gt({metadata:Ce.classMetadata,classSectionId:je.classSectionId||Ce.classSectionId,className:Ce.className||je.className,grade:Ce.grade||je.grade,gradeLevel:Ce.gradeLevel||je.gradeLevel,classification:Ce.classification||je.classification,strand:Ce.strand||je.strand,section:Ce.section||je.section,managerId:ee.uid,managerName:ee.name});return{...Ce,classMetadata:Yt,gradeLevel:Yt.gradeLevel||Ce.gradeLevel,classification:Yt.classification||Ce.classification,strand:Yt.strand||Ce.strand,managerId:ee.uid,managerName:ee.name}})),w(ot=>!ot||at(ot.classSectionId)!==ft?ot:{...ot,classMetadata:je,managerId:ee.uid,managerName:ee.name,gradeLevel:je.gradeLevel||ot.gradeLevel,classification:je.classification||ot.classification,strand:je.strand||ot.strand}),me.success(`Assigned ${ee.name} as section manager.`)}catch(je){console.error("Failed to assign class manager:",je),me.error(je instanceof Error?je.message:"Failed to assign class manager")}finally{$(!1)}},xs=m.useCallback(_=>{pe({rosterId:_.id,name:_.name,lrn:_.lrn,email:_.email,grade:_.grade,section:_.section,classSectionId:_.classSectionId})},[]),Ot=m.useCallback(_=>{Y(ee=>ee.map(ze=>ze.id===_.rosterId?{...ze,hasRegisteredAccount:!0,source:"both",accountUid:_.uid,email:_.email||ze.email}:ze)),K(ee=>ee+1)},[]),Wt=m.useCallback(async(_,ee)=>{if(!r){me.error("Cannot reassign section without an authenticated teacher.");return}const ze=r.uid,Ne=(ee.classSectionId||"").trim();if(!Ne){me.error("Pick a target section first.");return}se(_.id);try{await wm({studentId:_.accountUid||_.id,isRegisteredAccount:!!_.hasRegisteredAccount,newClassSectionId:Ne,newGrade:ee.grade,newSection:ee.section,previousClassSectionId:_.classSectionId,teacherId:ze,teacherName:fe,schoolYear:_.classMetadata?.schoolYear||String(new Date().getFullYear())}),Y(Qe=>Qe.map(je=>{if(je.id!==_.id)return je;const ft=gt({metadata:je.classMetadata,classSectionId:Ne,className:je.className,grade:ee.grade,section:ee.section});return{...je,grade:ee.grade,section:ee.section,classSectionId:Ne,classroomId:Ne,classMetadata:ft}})),me.success(`Moved ${_.name} to ${ee.grade} - ${ee.section}.`)}catch(Qe){console.error("Section reassignment failed:",Qe),me.error(Qe instanceof Error?Qe.message:"Failed to reassign section.")}finally{se(null)}},[r,fe]);m.useEffect(()=>{const _=()=>{const ee=window.innerWidth<1024;k(ee),ee?c(!1):h(!1)};return _(),window.addEventListener("resize",_),()=>window.removeEventListener("resize",_)},[]),m.useEffect(()=>{b&&h(!1)},[n,b]);const qt=_=>{i(_),w(null),B(null)},Rs=m.useMemo(()=>{if(!y)return;if(y.classMetadata?.classSectionId)return y.classMetadata.classSectionId||void 0;if(y.classSectionId)return y.classSectionId;const _=ls(y.classMetadata?.className||y.name);return Lt(_.grade,_.section)||void 0},[y]),st=m.useMemo(()=>y||null,[y]),Aa=m.useMemo(()=>{if(!st)return;const _=H.findIndex(ee=>ee.id===st.id);return ar[Math.max(0,_)%ar.length]},[st,H]),_t=m.useMemo(()=>{if(!st)return M;const _=(st.id||"").trim().toLowerCase(),ee=at(st.classSectionId),ze=(st.name||"").trim().toLowerCase();return M.filter(Ne=>{const Qe=at(Ne.classroomId),je=at(Ne.classSectionId),ft=(Ne.className||"").trim().toLowerCase();return ee&&(je===ee||Qe===ee)||_&&(Qe===_||je===_)||ze&&ft===ze})},[st,M]);return G?e.jsx(yl,{message:"Loading dashboard..."}):e.jsxs("div",{className:"relative flex h-screen w-full bg-background overflow-hidden",children:[b&&f&&e.jsx("button",{"aria-label":"Close navigation",className:"fixed inset-0 z-30 bg-slate-900/40 backdrop-blur-[1px]",onClick:()=>h(!1)}),e.jsxs(Re.aside,{initial:!1,animate:{width:b?280:l&&!d?80:280,x:b?f?0:-300:0},transition:{type:"spring",stiffness:360,damping:34},onMouseEnter:()=>!b&&l&&u(!0),onMouseLeave:()=>u(!1),className:"fixed inset-y-0 left-0 z-40 bg-[#f7f9fc] rounded-3xl border border-[#dde3eb] flex flex-col shadow-sm lg:static lg:z-auto p-5",children:[e.jsxs("div",{className:`mb-8 flex items-center ${l&&!d?"justify-center":"justify-between"}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12 bg-gradient-to-r from-[#7274ED] to-[#9956DE] rounded-2xl flex items-center justify-center shadow-md flex-shrink-0",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"MathPulse AI",className:"w-10 h-10 object-contain drop-shadow-md"})}),(!l||d)&&e.jsx("div",{children:e.jsx("h1",{className:"text-base font-semibold font-display text-[#0a1628] whitespace-nowrap",children:"MathPulse AI"})})]}),!b&&(!l||d)&&e.jsx(Re.button,{whileHover:{scale:1.1},whileTap:{scale:.95},onClick:()=>c(!l),className:"p-2 hover:bg-[#dde3eb] rounded-lg transition-colors text-[#5a6578]","aria-label":l?"Expand sidebar":"Collapse sidebar",children:l?e.jsx(ys,{size:20}):e.jsx(Ss,{size:20})}),b&&e.jsx("button",{onClick:()=>h(!1),className:"p-2 hover:bg-[#dde3eb] rounded-lg transition-colors text-[#5a6578]","aria-label":"Close navigation",children:e.jsx(cs,{size:20})})]}),e.jsxs("nav",{className:"flex-1 space-y-5",children:[e.jsxs("div",{children:[l&&!d?e.jsx("div",{className:"px-4 mb-2 flex items-center gap-2",children:e.jsx("div",{className:"flex-1 h-[1px] bg-[#dde3eb]"})}):e.jsx("p",{className:"px-4 mb-2 text-[10px] font-semibold text-[#5a6578] uppercase tracking-widest",children:"Overview"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(Ns,{icon:zl,label:"Dashboard",active:n==="dashboard",collapsed:l&&!d,onClick:Ye,forceExpanded:b}),e.jsx(Ns,{icon:Ds,label:"Class Analytics",active:n==="analytics"||n==="intervention",collapsed:l&&!d,onClick:()=>qt("analytics"),forceExpanded:b})]})]}),e.jsxs("div",{children:[l&&!d?e.jsx("div",{className:"px-4 mb-2 flex items-center gap-2",children:e.jsx("div",{className:"flex-1 h-[1px] bg-[#dde3eb]"})}):e.jsx("p",{className:"px-4 mb-2 text-[10px] font-semibold text-[#5a6578] uppercase tracking-widest",children:"Students"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(Ns,{icon:vs,label:"Topic Mastery",active:n==="topic_mastery",collapsed:l&&!d,onClick:()=>qt("topic_mastery"),forceExpanded:b}),e.jsx(Ns,{icon:os,label:"Competency",active:n==="competency",collapsed:l&&!d,onClick:()=>qt("competency"),forceExpanded:b})]})]}),e.jsxs("div",{children:[l&&!d?e.jsx("div",{className:"px-4 mb-2 flex items-center gap-2",children:e.jsx("div",{className:"flex-1 h-[1px] bg-[#dde3eb]"})}):e.jsx("p",{className:"px-4 mb-2 text-[10px] font-semibold text-[#5a6578] uppercase tracking-widest",children:"Tools"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(Ns,{icon:Ll,label:"Data Import",active:n==="import",collapsed:l&&!d,onClick:()=>i("import"),forceExpanded:b}),e.jsx(Ns,{icon:ii,label:"AI Quiz Maker",active:n==="quiz_maker",collapsed:l&&!d,onClick:()=>i("quiz_maker"),forceExpanded:b}),e.jsx(Ns,{icon:Gt,label:"Question Bank",active:n==="question_bank",collapsed:l&&!d,onClick:()=>i("question_bank"),forceExpanded:b}),e.jsx(Ns,{icon:Ya,label:"Calendar",active:n==="calendar",collapsed:l&&!d,onClick:()=>i("calendar"),forceExpanded:b})]})]})]}),e.jsxs("div",{className:"space-y-2 border-t border-[#dde3eb] pt-4",children:[e.jsxs(Re.button,{whileHover:{x:2},whileTap:{scale:.98},className:`w-full flex items-center gap-3 px-4 py-3 rounded-2xl text-[#5a6578] font-semibold border border-transparent hover:bg-[#dde3eb] hover:border-[#dde3eb] hover:text-[#0a1628] transition-all duration-200 whitespace-nowrap ${l&&!d?"justify-center":""}`,onClick:a,title:l&&!d?"Settings":"",children:[e.jsx(Dl,{size:18,strokeWidth:2,className:"flex-shrink-0"}),(!l||d)&&e.jsx("span",{className:"font-body text-xs",children:"Settings"})]}),e.jsx("div",{className:"text-[#5a6578]",children:e.jsx($l,{onClick:()=>S(!0),collapsed:l&&!d})})]})]}),e.jsxs("div",{className:"flex-1 flex overflow-hidden bg-gradient-to-br from-[#eef2ff] via-[#f5f3ff] to-[#fff7ed]",children:[e.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[["dashboard","analytics","intervention","competency","topic_mastery","calendar","notifications","question_bank","import","quiz_maker"].includes(n)&&e.jsx("header",{className:"bg-transparent border-b border-[#e2e8f0]/40 px-[24px] xl:px-[32px] pt-[24px] pb-[16px] flex-shrink-0 z-30",children:e.jsxs("div",{className:"flex flex-row items-center justify-between gap-2 mb-0",children:[e.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:[b&&e.jsx("button",{onClick:()=>h(!0),className:"mt-1 p-2 rounded-lg border border-border text-muted-foreground hover:text-[#9956DE] hover:border-[#9956DE]/30 hover:bg-[#9956DE]/12 transition-colors","aria-label":"Open navigation",children:e.jsx(Sl,{size:18})}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-lg sm:text-[26px] font-bold text-[#1e293b] tracking-tight leading-tight truncate",children:[n==="dashboard"&&"Teacher Dashboard",n==="analytics"&&"Class Analytics",n==="intervention"&&"Intervention Center",n==="competency"&&"Student Competency",n==="topic_mastery"&&"Topic Mastery",n==="calendar"&&"Academic Calendar",n==="notifications"&&"Notifications",n==="question_bank"&&"Question Bank",n==="import"&&"Data Import",n==="quiz_maker"&&"AI Quiz Maker"]}),e.jsxs("p",{className:"text-[13px] text-[#64748b] mt-1",children:[n==="dashboard"&&`Welcome back, ${fe}`,n==="analytics"&&"Analyze performance and risk across your classes.",n==="intervention"&&"Identify and support students who need immediate help.",n==="competency"&&"Track individual student progress against learning goals.",n==="topic_mastery"&&"Overview of student mastery levels across different math topics.",n==="calendar"&&"Manage your schedules and academic events.",n==="notifications"&&"Stay updated with student activity and system alerts.",n==="question_bank"&&"Manage and create math questions for your quizzes.",n==="import"&&"Upload class records and materials to power AI analytics.",n==="quiz_maker"&&"Create AI-powered quizzes based on your curriculum."]})]}),n==="dashboard"&&e.jsxs("div",{className:"hidden xl:flex items-center gap-2 ml-4 mt-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#9956DE]/12 border border-[#9956DE]/30 rounded-lg",children:[e.jsx(os,{size:13,className:"text-[#9956DE]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#9956DE]",children:[Fe," students"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#F08386]/12 border border-[#F08386]/30 rounded-lg",children:[e.jsx(Xs,{size:13,className:"text-[#F08386]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#C65E63]",children:[Ke," at risk"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#75D06A]/14 border border-[#75D06A]/35 rounded-lg",children:[e.jsx(Ta,{size:13,className:"text-[#75D06A]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#4D9F46]",children:[rt,"% avg"]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("div",{className:"relative group",children:[e.jsxs("button",{onClick:()=>{J(!0),F(!0)},className:"relative w-10 h-10 flex items-center justify-center bg-[#eef2ff]/80 hover:bg-[#e0e7ff] rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#a5b4fc]/60 text-[#4f46e5] hover:border-[#818cf8] transition-colors cursor-pointer hover:scale-[1.02]","aria-label":"View AI Insight",children:[e.jsx($s,{size:18}),!E&&Me&&e.jsx("div",{className:"absolute top-2.5 right-2.5 w-2 h-2 bg-rose-500 rounded-full border border-white animate-pulse"})]}),e.jsx("span",{className:"absolute -bottom-8 left-1/2 -translate-x-1/2 text-[10px] bg-[#1e293b] text-white px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-50 pointer-events-none",children:"AI Insight"})]}),b&&n==="dashboard"&&e.jsx("button",{onClick:()=>he(_=>!_),className:`relative w-10 h-10 flex items-center justify-center rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border transition-colors cursor-pointer hover:scale-[1.02] ${xe?"bg-[#818cf8] border-[#6366f1] text-white":"bg-white/60 hover:bg-white/80 border-white/50 text-[#64748b] hover:text-[#1e293b]"}`,"aria-label":xe?"Close calendar panel":"Open calendar panel",title:xe?"Close calendar":"View calendar",children:e.jsx(Ya,{size:18})}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>ne(!ce),className:"relative w-10 h-10 flex items-center justify-center bg-white/60 hover:bg-white/80 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 text-[#64748b] hover:text-[#1e293b] transition-colors cursor-pointer hover:scale-[1.02]","aria-label":"View notifications",title:"Notifications",children:[e.jsx(Ja,{size:18}),v>0&&e.jsx("span",{className:"absolute top-2.5 right-2.5 w-2 h-2 bg-rose-500 rounded-full border border-white"})]}),e.jsx(Ml,{isOpen:ce,onClose:()=>ne(!1),onViewAll:()=>i("notifications")})]}),n!=="dashboard"&&e.jsxs("div",{onClick:s,className:"flex items-center gap-2 bg-white/60 px-4 py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 cursor-pointer hover:bg-white/80 transition-colors h-10 hover:scale-[1.02]",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-indigo-100 overflow-hidden shrink-0",children:e.jsx("img",{src:o?.photo||`https://ui-avatars.com/api/?name=${encodeURIComponent(fe)}&background=e0e7ff&color=4f46e5`,alt:"Profile",className:"w-full h-full object-cover"})}),e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:fe})]})]})]})}),e.jsx("main",{className:`flex-1 flex flex-col ${n==="intervention"||n==="analytics"?"overflow-hidden":"overflow-y-auto"}`,children:e.jsxs(Et,{mode:"wait",children:[n==="dashboard"&&e.jsx(gx,{classes:H,liveActivity:ae,onViewClass:ss,onViewAllClasses:()=>i("analytics"),onViewActivityStudent:_=>{const ee=M.find(ze=>ze.name===_);ee&&P(ee)},dailyInsight:Me,insightLoading:g,isInsightDismissed:E,onDismissInsight:()=>F(!0),onOpenInsightModal:()=>{J(!0),F(!0)},totalStudents:Fe,totalAtRisk:Ke,avgPerformance:rt,onCreateClass:()=>N(!0)}),n==="analytics"&&st&&e.jsx(wx,{selectedClass:st,students:_t,allClasses:H,riskDistribution:Rt,topicPerformance:Ft,onViewStudent:P,onCreateAccount:xs,onReassignSection:Wt,reassignBusyId:we,onBack:()=>w(null),teacherOptions:Z,managerUpdating:le,onAssignManager:_=>vt(st,_),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,classColor:Aa,insightDismissed:E,onOpenInsightModal:()=>J(!0),onAddStudents:()=>z(!0)}),n==="analytics"&&!st&&H.length>0&&e.jsx(Ao,{classes:H,onSelectClass:ss,onOpenNotifications:()=>i("notifications"),onOpenProfile:s,insightDismissed:E,onOpenInsightModal:()=>J(!0),onCreateClass:()=>N(!0)}),n==="analytics"&&!st&&H.length===0&&e.jsx(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-6",children:e.jsxs("div",{className:"bg-card border border-border rounded-2xl p-8 shadow-sm max-w-2xl",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#9956DE]/20 text-[#9956DE] flex items-center justify-center mb-4",children:e.jsx(Ds,{size:24})}),e.jsx("h2",{className:"text-2xl font-display font-semibold text-foreground mb-2",children:"Class Analytics"}),e.jsx("p",{className:"text-sm text-muted-foreground font-body leading-relaxed mb-4",children:"No classes available yet. Create a class or import class records to unlock analytics views."}),e.jsxs(xt,{onClick:()=>N(!0),className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:[e.jsx(Js,{size:16,className:"mr-1.5"}),"Create Class"]})]})}),n==="intervention"&&A&&e.jsx(Nx,{student:A,teacherId:r?.uid||"",teacherName:fe,initialCache:et.current.get(A.id),onCacheUpdate:(_,ee)=>et.current.set(_,ee),onStudentUpdated:_=>{const ee=A?Ur(A):null;B(_),Y(ze=>ze.map(Ne=>{const Qe=Ur(Ne),je=ee?Qe===ee:!1,ft=Ne.id===_.id&&at(Ne.classSectionId)===at(_.classSectionId);return je||ft?_:Ne}))},onBack:Ae,onNavigateToQuizMaker:_=>{i("quiz_maker"),_&&sessionStorage.setItem("quizMakerInitialTab",_)}}),n==="topic_mastery"&&e.jsx(Qm,{classSectionId:Rs,onOpenNotifications:()=>i("notifications"),onOpenProfile:s}),n==="competency"&&st&&e.jsx(qm,{classSectionId:Rs,className:y?.name,fallbackStudents:M,onBack:()=>w(null),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,insightDismissed:E,onOpenInsightModal:()=>J(!0)}),n==="competency"&&!st&&H.length>0&&e.jsx(Ao,{classes:H,onSelectClass:_=>w(_),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,insightDismissed:E,onOpenInsightModal:()=>J(!0),viewType:"competency"}),n==="competency"&&!st&&H.length===0&&e.jsx(fx,{icon:os,title:"Student Competency",description:"No classes available yet. Import class records to view competency breakdowns."}),n==="import"&&e.jsx(ix,{classSectionId:Rs,className:y?.name,classMetadata:y?.classMetadata,students:M,teacherId:r?.uid||"",teacherName:fe,onStudentsUpdated:_=>Y(_),onBackToClasses:()=>i("dashboard"),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,onImportedClassRecords:_=>{const ee=_.students.map(Ce=>hx(Ce,_.classSectionId,_.className,_.classMetadata)),ze=gt({metadata:_.classMetadata,classSectionId:_.classSectionId,className:_.className}),Ne=ze.classSectionId||"imported_class",Qe=ze.className||"Imported Class",je=ee.filter(Ce=>Ce.riskLevel==="high").length,ft=ee.length>0?Math.round(ee.reduce((Ce,ps)=>Ce+ps.avgScore,0)/ee.length):0,ot={id:Ne,name:Qe,classSectionId:Ne,classMetadata:{...ze,classSectionId:Ne,className:Qe},schedule:"Mon-Fri",studentCount:ee.length,avgScore:ft,atRiskCount:je,riskLevel:je>=5?"high":je>=2?"medium":"low"};Y(Ce=>Wo(Ce,ee)),q(Ce=>Vo(Ce,[ot]))},onDataChanged:()=>K(_=>_+1)}),n==="notifications"&&e.jsx(Km,{liveActivity:ae,atRiskStudents:M.filter(_=>_.riskLevel==="high").map(_=>({name:_.name,riskLevel:_.riskLevel,weakestTopic:_.weakestTopic})),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,teacherName:fe}),n==="calendar"&&e.jsx(du,{classes:H,teacherId:r?.uid}),n==="quiz_maker"&&e.jsx(Yi,{onBack:()=>{const _=sessionStorage.getItem("quizMakerReturnTo");sessionStorage.removeItem("quizMakerReturnTo"),sessionStorage.removeItem("quizMakerInitialTab"),i(_==="intervention"?"intervention":"dashboard")},onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,teacherName:fe}),n==="question_bank"&&e.jsx(Hm,{onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,teacherName:fe})]})})]}),n==="dashboard"&&!b&&e.jsx(Yo,{onViewCalendar:()=>i("calendar"),onOpenProfile:s,userProfile:o,teacherName:fe,liveActivity:ae})]}),e.jsx(Et,{children:b&&n==="dashboard"&&xe&&e.jsxs(e.Fragment,{children:[e.jsx(Re.button,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"fixed inset-0 z-40 bg-slate-900/40 backdrop-blur-[2px]","aria-label":"Close calendar panel",onClick:()=>he(!1)},"cal-backdrop"),e.jsx(Re.div,{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"},transition:{type:"spring",stiffness:320,damping:32},className:"fixed top-0 right-0 bottom-0 z-50 w-[300px] max-w-[85vw] shadow-2xl",children:e.jsx(Yo,{onViewCalendar:()=>{i("calendar"),he(!1)},onOpenProfile:()=>{s?.(),he(!1)},userProfile:o,teacherName:fe,liveActivity:ae})},"cal-drawer")]})}),e.jsx(Et,{children:X&&e.jsx("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs(Re.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"bg-white rounded-2xl shadow-xl w-full max-w-lg overflow-hidden border border-slate-200",children:[e.jsxs("div",{className:"p-4 border-b border-slate-100 flex items-center justify-between bg-slate-50/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600",children:e.jsx($s,{size:16})}),e.jsx("h3",{className:"font-semibold text-slate-800",children:"Detailed AI Insight"})]}),e.jsx("button",{onClick:()=>{J(!1)},className:"p-2 text-slate-400 hover:text-slate-600 hover:bg-slate-100 rounded-full transition-colors",children:e.jsx(cs,{size:18})})]}),e.jsx("div",{className:"p-6",children:e.jsx("div",{className:"text-sm text-slate-600 leading-relaxed",children:e.jsx(tc,{children:Me?.replace(/[*_]*\s*\(?Word\s*count\s*:\s*[*_]*\s*\d+\)?\s*[*_]*/gi,"").trim()||`**${Ke} students (${Fe>0?Math.round(Ke/Fe*100):0}%)** are currently at high risk of falling behind in recent topics. Review their progress in the analytics view to plan interventions.`})})}),e.jsx("div",{className:"p-4 border-t border-slate-100 bg-slate-50 flex justify-end gap-2",children:e.jsx("button",{onClick:()=>{J(!1)},className:"px-4 py-2 text-sm font-medium text-slate-600 hover:text-slate-800 hover:bg-slate-200 rounded-lg transition-colors",children:"Minimize to Menu"})})]})})}),e.jsx(Tl,{isOpen:j,onClose:()=>S(!1),onConfirm:t,title:"Logout",message:"Are you sure you want to logout?",confirmText:"Logout",cancelText:"Cancel"}),e.jsx(Im,{open:p,onClose:()=>N(!1),onCreated:()=>K(_=>_+1),teacherName:fe}),e.jsx(Tm,{open:C,onClose:()=>z(!1),onAdded:()=>K(_=>_+1),grade:st?.gradeLevel||st?.classMetadata?.grade||"Grade 11",section:st?.classMetadata?.section||st?.name?.split(" - ")[1]||"",teacherName:fe,existingStudentUids:_t.map(_=>_.id)}),e.jsx(dx,{isOpen:!!oe,onClose:()=>pe(null),seed:oe,adviserTeacherId:r?.uid||"",adviserTeacherName:fe,schoolYear:oe?M.find(_=>_.id===oe.rosterId)?.classMetadata?.schoolYear||String(new Date().getFullYear()):void 0,onCreated:Ot})]})},Ns=({icon:t,label:s,active:a,collapsed:r,forceExpanded:o=!1,onClick:n})=>e.jsxs(Re.button,{onClick:n,whileHover:{x:2},whileTap:{scale:.98},className:`w-full flex items-center gap-3 px-4 py-3 rounded-2xl cursor-pointer transition-all duration-200 border whitespace-nowrap ${r&&!o?"justify-center":""} ${a?"bg-[#9956DE]/12 border-[#9956DE]/30 shadow-sm text-[#9956DE]":"bg-transparent border-transparent text-[#5a6578] hover:bg-[#dde3eb] hover:border-[#dde3eb] hover:text-[#0a1628]"}`,children:[e.jsx(t,{size:18,strokeWidth:a?2.5:2,className:"flex-shrink-0"}),(!r||o)&&e.jsx("span",{className:"font-body font-semibold text-xs",children:s}),a&&!r&&e.jsx(Re.div,{layoutId:"sidebar-active-indicator",className:"ml-auto w-2 h-2 rounded-full bg-[#9956DE]",transition:{type:"spring",duration:.4}})]}),fx=({icon:t,title:s,description:a})=>e.jsx(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-6",children:e.jsxs("div",{className:"bg-card border border-border rounded-2xl p-8 shadow-sm max-w-2xl",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#9956DE]/20 text-[#9956DE] flex items-center justify-center mb-4",children:e.jsx(t,{size:24})}),e.jsx("h2",{className:"text-2xl font-display font-semibold text-foreground mb-2",children:s}),e.jsx("p",{className:"text-sm text-muted-foreground font-body leading-relaxed",children:a})]})}),gx=({classes:t,liveActivity:s,onViewClass:a,onViewAllClasses:r,onViewActivityStudent:o,dailyInsight:n,insightLoading:i,isInsightDismissed:l,onDismissInsight:c,onOpenInsightModal:d,totalStudents:u,totalAtRisk:f,avgPerformance:h,onCreateClass:b})=>{const k=u>0?Math.round(f/u*100):0,j=u>0?Math.round((u-f)/u*100):0;return e.jsxs(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-3 sm:p-6 space-y-4",children:[!l&&n&&e.jsxs("div",{onClick:d,className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] border border-white p-[14px_16px] sm:p-[18px_20px] flex flex-col sm:flex-row items-start sm:items-center gap-3 sm:gap-4 shadow-[0_1px_4px_rgba(0,0,0,0.04)] cursor-pointer hover:shadow-md transition-shadow group",children:[e.jsxs("div",{className:"relative flex-shrink-0",children:[e.jsx("div",{className:"absolute -inset-[5px] rounded-full border-2 border-[#a5b4fc] opacity-50 animate-pulse"}),e.jsx("div",{className:"w-[46px] h-[46px] rounded-full bg-[#eef2ff] border-2 border-[#c7d2fe] flex items-center justify-center text-[#4f46e5] text-xl relative overflow-hidden group-hover:scale-[1.05] transition-transform",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Mascot",className:"w-[85%] h-[85%] object-contain"})})]}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"text-[13.5px] font-semibold text-[#1e1b4b] flex flex-wrap items-center gap-2 mb-1",children:[e.jsx($s,{size:14,className:"text-[#818cf8]"}),"MathPulse AI insight",e.jsx("span",{className:"bg-[#fee2e2] text-[#b91c1c] text-[10px] font-semibold px-2 py-0.5 rounded-full border border-[#fca5a5]",children:"Attention needed"})]}),e.jsx("div",{className:"text-[12.5px] text-[#475569] leading-[1.55]",children:"Some students may be at risk of falling behind. Click to view detailed analysis."})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0 self-end sm:self-auto",children:[e.jsx("button",{onClick:S=>{S.stopPropagation(),c()},className:"px-[15px] py-[7px] rounded-[10px] text-xs font-medium cursor-pointer border border-[#e2e8f0] bg-white text-[#475569] hover:bg-[#f8fafc] transition-colors",children:"Dismiss"}),e.jsx("button",{onClick:S=>{S.stopPropagation(),r()},className:"px-[15px] py-[7px] rounded-[10px] text-xs font-medium cursor-pointer border border-[#4f46e5] bg-[#4f46e5] text-white shadow-[0_2px_8px_rgba(79,70,229,0.13)] hover:bg-[#4338ca] transition-colors",children:"Review students"})]})]}),e.jsxs("div",{className:"grid grid-cols-4 gap-1.5 sm:gap-3",children:[e.jsxs("div",{className:"group relative overflow-hidden bg-[#10b981] shadow-[0_4px_16px_rgba(16,185,129,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"Total students"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(os,{size:15})})]}),e.jsx("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:u}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Added this year"}),e.jsx("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:u>0?"+1":"0"})]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#0ea5e9] shadow-[0_4px_16px_rgba(14,165,233,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"Class average"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(vs,{size:15})})]}),e.jsxs("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:[h,"%"]}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Vs. last month"}),e.jsx("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:"+2.5%"})]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#a855f7] shadow-[0_4px_16px_rgba(168,85,247,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"Engage­ment"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(si,{size:15})})]}),e.jsxs("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:[j,"%"]}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Active participants"}),e.jsx("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:Math.round(j/100*u)})]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#f97316] shadow-[0_4px_16px_rgba(249,115,22,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"At risk"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(or,{size:15})})]}),e.jsx("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:f}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Requires attention"}),e.jsxs("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:[k,"%"]})]})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] border border-white p-[18px_20px] shadow-[0_1px_4px_rgba(0,0,0,0.04)]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-[14px]",children:[e.jsx("h2",{className:"text-[15px] font-semibold text-[#1e293b]",children:"My classes"}),e.jsx("span",{onClick:r,className:"text-[12px] text-[#10b981] font-semibold cursor-pointer hover:underline",children:"View all"})]}),e.jsxs("div",{className:"space-y-[9px]",children:[t.length===0&&e.jsxs("div",{className:"text-center py-4",children:[e.jsx("p",{className:"text-sm text-slate-500 mb-3",children:"No classes imported yet."}),b&&e.jsx("button",{onClick:b,className:"text-sm text-[#9956DE] font-semibold hover:underline",children:"+ Create a class"})]}),t.map((S,p)=>{const N=[{bg:"bg-[#f3e8ff]",text:"text-[#a855f7]",borderHover:"hover:border-[#d8b4fe]",stripe:"bg-[#a855f7]"},{bg:"bg-[#eff6ff]",text:"text-[#3b82f6]",borderHover:"hover:border-[#bfdbfe]",stripe:"bg-[#3b82f6]"},{bg:"bg-[#f0fdf4]",text:"text-[#22c55e]",borderHover:"hover:border-[#bbf7d0]",stripe:"bg-[#22c55e]"},{bg:"bg-[#fff7ed]",text:"text-[#f97316]",borderHover:"hover:border-[#fed7aa]",stripe:"bg-[#f97316]"},{bg:"bg-[#fff1f2]",text:"text-[#f43f5e]",borderHover:"hover:border-[#fecdd3]",stripe:"bg-[#f43f5e]"}],C=N[p%N.length];return e.jsxs("div",{onClick:()=>a(S),className:`relative overflow-hidden flex items-center gap-3 p-[12px_13px] pl-[16px] border border-[#f1f5f9] rounded-[14px] cursor-pointer ${C.borderHover} hover:shadow-[0_2px_10px_rgba(0,0,0,0.04)] hover:bg-[#fafbff] transition-all group`,children:[e.jsx("div",{className:`absolute left-0 top-0 bottom-0 w-[5px] ${C.stripe}`}),e.jsx("div",{className:`w-[38px] h-[38px] rounded-[10px] flex items-center justify-center flex-shrink-0 text-[17px] ${C.bg} ${C.text} group-hover:scale-110 transition-transform duration-300`,children:e.jsx(Gt,{size:18})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"text-[12.5px] font-medium text-[#1e293b]",children:S.name}),e.jsx("div",{className:"text-[11px] text-[#94a3b8] mt-[1px]",children:S.classification||"High School"})]}),e.jsx("div",{className:"hidden sm:block text-[12px] text-[#64748b] min-w-[65px]",children:S.schedule||"Mon-Fri"}),e.jsxs("div",{className:"hidden sm:block text-[12px] text-[#64748b] min-w-[85px]",children:[S.studentCount," students"]}),e.jsx("span",{className:`text-[10px] font-semibold px-[9px] py-[3px] rounded-[6px] ${S.riskLevel==="high"?"bg-[#fee2e2] text-[#b91c1c] border border-[#fca5a5]":S.riskLevel==="medium"?"bg-[#fffbeb] text-[#b45309] border border-[#fcd34d]":"bg-[#ecfdf5] text-[#065f46] border border-[#6ee7b7]"}`,children:S.riskLevel==="high"?"High risk":S.riskLevel==="medium"?"Medium risk":"On track"}),e.jsx(Lr,{size:16,className:"text-[#cbd5e1] ml-auto hover:text-[#64748b]"})]},S.id)})]})]})]})},bx=de.memo(({student:t,onViewStudent:s,onCreateAccount:a})=>{const o=t.riskLevel==="high"?{borderLeft:"border-l-rose-500",bgAvatar:"bg-rose-50 text-rose-600 border-rose-100/50",badge:"text-rose-600 bg-rose-50",progress:"bg-rose-500"}:t.riskLevel==="medium"?{borderLeft:"border-l-amber-500",bgAvatar:"bg-amber-50 text-amber-600 border-amber-100/50",badge:"text-amber-600 bg-amber-50",progress:"bg-amber-500"}:{borderLeft:"border-l-emerald-500",bgAvatar:"bg-emerald-50 text-emerald-600 border-emerald-100/50",badge:"text-emerald-600 bg-emerald-50",progress:"bg-emerald-500"},n=t.hasRegisteredAccount===!1&&t.source==="import",i=t.hasRegisteredAccount===!0;return e.jsxs("div",{onClick:()=>s(t),className:`p-[12px] bg-white rounded-[14px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#f1f5f9] border-l-[4px] ${o.borderLeft} hover:scale-[1.02] transition-transform cursor-pointer group flex flex-col justify-between`,children:[e.jsxs("div",{className:"flex justify-between items-start mb-[10px]",children:[e.jsxs("div",{className:"flex gap-[8px] items-center min-w-0 pr-2",children:[t.avatar?e.jsx("img",{src:t.avatar,alt:t.name,className:`w-8 h-8 rounded-full border ${o.bgAvatar.split(" ")[2]} object-cover shrink-0`}):e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center font-semibold text-[11px] shrink-0 border ${o.bgAvatar}`,children:t.name.substring(0,2).toUpperCase()}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("p",{className:"text-[13px] font-semibold text-[#1e293b] leading-tight truncate",children:t.name}),i&&e.jsx("span",{title:"Registered student account",className:"w-1.5 h-1.5 rounded-full bg-emerald-500 shrink-0"})]}),e.jsxs("p",{className:"text-[10px] text-[#64748b] flex items-center gap-[4px] mt-0.5 truncate",children:[e.jsx(Zs,{className:"w-[10px] h-[10px] shrink-0"})," ",t.lastActive||"recently"]})]})]}),e.jsxs("span",{className:`font-semibold text-[11px] px-[6px] py-[2px] rounded-[14px] shrink-0 ${o.badge}`,children:[t.avgScore,"%"]})]}),n&&e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2 px-2 py-1 rounded-[10px] bg-amber-50 border border-amber-100/80",children:[e.jsx("span",{className:"text-[10px] font-semibold text-amber-700 uppercase tracking-wider",children:"No Account"}),a&&e.jsxs("button",{type:"button",onClick:l=>{l.stopPropagation(),a(t)},className:"flex items-center gap-1 px-2 py-0.5 rounded-full bg-white text-amber-700 border border-amber-200 hover:bg-amber-100 text-[10px] font-semibold transition-colors","aria-label":`Create system account for ${t.name}`,children:[e.jsx("span",{"aria-hidden":!0,children:"+"}),"Create"]})]}),e.jsx("div",{className:"w-full bg-[#f1f5f9] h-1.5 rounded-full overflow-hidden mt-auto",children:e.jsx("div",{className:`h-full rounded-full ${o.progress}`,style:{width:`${t.avgScore}%`}})})]})}),vx=({students:t,allClasses:s,currentClass:a,onReassignSection:r,reassignBusyId:o})=>{const[n,i]=m.useState(!1),l=m.useMemo(()=>{const d=new Map;return s.forEach(u=>{const f=(u.classSectionId||u.id||"").trim();if(!f)return;const h=(u.classMetadata?.grade||"").trim(),b=(u.classMetadata?.section||"").trim();if(!h||!b)return;const k=u.name||`${h} - ${b}`;d.set(f,{classSectionId:f,grade:h,section:b,label:k})}),Array.from(d.values()).sort((u,f)=>u.label.localeCompare(f.label))},[s]),c=m.useMemo(()=>{const d=new Map,u=[];return t.forEach(f=>{const h=(f.classSectionId||"").trim();if(!h){u.push(f);return}const b=f.section||f.className||h,k=d.get(h)||{label:b,students:[]};k.students=[...k.students,f],d.set(h,k)}),{assigned:Array.from(d.entries()).map(([f,h])=>({sectionId:f,...h})).sort((f,h)=>f.label.localeCompare(h.label)),unassigned:u}},[t]);return e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] border border-white shadow-[0_1px_4px_rgba(0,0,0,0.04)] overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:()=>i(d=>!d),className:"w-full flex items-center justify-between px-6 py-4 text-left","aria-expanded":n,children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[15px] font-semibold text-[#1e293b]",children:"Section Management"}),e.jsxs("p",{className:"text-[12px] text-[#64748b] mt-0.5",children:["Move students between sections. Showing ",t.length," students across ",c.assigned.length," section",c.assigned.length===1?"":"s",c.unassigned.length>0?` · ${c.unassigned.length} unassigned`:"","."]})]}),e.jsx(Tt,{className:`w-4 h-4 text-[#64748b] transition-transform ${n?"rotate-180":""}`})]}),n&&e.jsxs("div",{className:"border-t border-[#f1f5f9] divide-y divide-[#f1f5f9]",children:[c.assigned.length===0&&c.unassigned.length===0&&e.jsx("p",{className:"text-[12px] text-[#64748b] px-6 py-5",children:"No students yet. Add students to this teacher to manage section assignments."}),c.assigned.map(d=>e.jsxs("div",{className:"px-6 py-4",children:[e.jsxs("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[#64748b] mb-2",children:[d.label," ",e.jsxs("span",{className:"text-[10px] font-normal text-[#94a3b8]",children:["(",d.students.length,")"]})]}),e.jsx("div",{className:"space-y-1.5",children:d.students.map(u=>e.jsx(qo,{student:u,sectionTargets:l,currentSectionId:a.classSectionId,onReassign:r,isBusy:o===u.id},`section-row-${u.id}`))})]},d.sectionId)),c.unassigned.length>0&&e.jsxs("div",{className:"px-6 py-4 bg-amber-50/40",children:[e.jsxs("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-amber-700 mb-2",children:["Unassigned ",e.jsxs("span",{className:"text-[10px] font-normal text-amber-600/80",children:["(",c.unassigned.length,")"]})]}),e.jsx("div",{className:"space-y-1.5",children:c.unassigned.map(d=>e.jsx(qo,{student:d,sectionTargets:l,currentSectionId:a.classSectionId,onReassign:r,isBusy:o===d.id},`section-row-${d.id}`))})]})]})]})},qo=({student:t,sectionTargets:s,currentSectionId:a,onReassign:r,isBusy:o})=>{const[n,i]=m.useState(t.classSectionId||"");m.useEffect(()=>{i(t.classSectionId||"")},[t.classSectionId]);const l=()=>{const d=s.find(u=>u.classSectionId===n);d&&d.classSectionId!==t.classSectionId&&r(t,d)},c=n===(t.classSectionId||"");return e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center gap-2 md:gap-3 px-3 py-2 rounded-[12px] bg-white border border-[#f1f5f9]",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-[13px] font-semibold text-[#1e293b] truncate",children:t.name}),e.jsxs("p",{className:"text-[11px] text-[#64748b] truncate",children:[t.lrn?`LRN ${t.lrn} · `:"",t.classMetadata?.className||t.className||"Unassigned section",a&&t.classSectionId===a?" · current":""]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:n,onChange:d=>i(d.target.value),disabled:o||s.length===0,className:"text-[12px] rounded-xl border border-[#dde3eb] bg-white px-3 py-1.5 text-[#0a1628] focus:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-200 disabled:opacity-60",children:[e.jsx("option",{value:"",children:"Select section…"}),s.map(d=>e.jsx("option",{value:d.classSectionId,children:d.label},d.classSectionId))]}),e.jsx("button",{type:"button",onClick:l,disabled:o||c||!n,className:"text-[12px] font-semibold rounded-xl px-3 py-1.5 bg-indigo-600 text-white hover:bg-indigo-700 transition-colors disabled:opacity-50 disabled:hover:bg-indigo-600",children:o?"Saving…":"Move"})]})]})},wx=({selectedClass:t,students:s,allClasses:a,riskDistribution:r,topicPerformance:o,onViewStudent:n,onCreateAccount:i,onReassignSection:l,reassignBusyId:c,onBack:d,teacherOptions:u,managerUpdating:f,onAssignManager:h,onOpenNotifications:b,onOpenProfile:k,classColor:j,insightDismissed:S,onOpenInsightModal:p,onAddStudents:N})=>{const{currentUser:C,userProfile:z}=ds(),[I,U]=m.useState(""),[v,y]=m.useState(""),[w,A]=m.useState("All"),B=[{name:"High Risk",value:s.filter(H=>H.riskLevel==="high").length,color:"#FF8B8B"},{name:"Medium Risk",value:s.filter(H=>H.riskLevel==="medium").length,color:"#F08386"},{name:"Low Risk",value:s.filter(H=>H.riskLevel==="low").length,color:"#75D06A"}];m.useEffect(()=>{y(t.classMetadata?.managerId||t.managerId||"")},[t]);const E=m.useMemo(()=>{const H=I.trim().toLowerCase();let q=s;return H&&(q=q.filter(M=>M.name.toLowerCase().includes(H)||(M.lrn||"").toLowerCase().includes(H)||(M.weakestTopic||"").toLowerCase().includes(H))),w==="Good"?q=q.filter(M=>M.avgScore>=85&&M.riskLevel!=="high"):w==="Risk"&&(q=q.filter(M=>M.riskLevel==="high"||M.avgScore<75)),q},[I,s,w]),F=m.useMemo(()=>{if(s.length===0)return 0;const H=s.reduce((q,M)=>q+(M.assignmentCompletion||0),0);return Math.round(H/s.length)},[s]),X=m.useMemo(()=>{if(s.length===0)return 0;const H=s.reduce((M,Y)=>M+(Y.attendance||0),0)/s.length,q=s.reduce((M,Y)=>M+(Y.engagementScore||0),0)/s.length;return Math.round(H*.6+q*.4)},[s]),J=m.useMemo(()=>[...s].sort((H,q)=>q.avgScore-H.avgScore).slice(0,5),[s]),ce=m.useMemo(()=>[...s].filter(H=>H.riskLevel==="high"||H.avgScore<70||H.assignmentCompletion<65),[s]),ne=m.useMemo(()=>u.find(H=>H.uid===v),[u,v]),xe=()=>{if(!ne){me.error("Select a teacher manager first.");return}h(ne)},he=[t.classMetadata?.gradeLevel||t.gradeLevel,t.classMetadata?.classification||t.classification,t.classMetadata?.strand||t.strand].filter(Boolean);return e.jsxs(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-3 sm:p-[24px] xl:p-[32px] space-y-3 sm:space-y-[24px] h-full overflow-y-auto",children:[e.jsx("div",{className:"flex items-center justify-between mb-3 sm:mb-6",children:e.jsxs("button",{onClick:d,className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors bg-white/60 hover:bg-white/80 px-[18px] py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50",children:[e.jsx(Ss,{className:"w-4 h-4"}),"Back to Classes"]})}),e.jsxs("header",{style:{backgroundColor:j?.hex||"#6366f1"},className:"rounded-[24px] p-4 sm:p-[24px] lg:p-[32px] shadow-[0_8px_32px_rgba(0,0,0,0.08)] flex flex-col lg:flex-row lg:items-center justify-between gap-4 sm:gap-6 relative overflow-hidden group text-white",children:[e.jsx("div",{className:"absolute -right-10 -bottom-10 w-48 h-48 rounded-full bg-white/10 group-hover:scale-[1.3] transition-transform duration-700 ease-out pointer-events-none"}),e.jsx("div",{className:"absolute -left-10 -top-10 w-32 h-32 rounded-full bg-white/10 group-hover:scale-[1.2] transition-transform duration-700 delay-75 ease-out pointer-events-none"}),e.jsxs("div",{className:"shrink-0 relative z-10",children:[e.jsx("h1",{className:"text-xl sm:text-[28px] font-bold mb-2 sm:mb-3 tracking-tight",children:t.name}),e.jsx("div",{className:"flex flex-wrap items-center gap-2 mb-3",children:he.map((H,q)=>e.jsx("span",{className:"px-3 py-1 bg-white/20 backdrop-blur-md text-white text-[12px] font-semibold rounded-full shadow-sm border border-white/20",children:H},H))}),e.jsxs("p",{className:"text-[13px] text-white/80 font-medium",children:["Manager: ",t.classMetadata?.managerName||t.managerName||"Not assigned"]})]}),e.jsxs("div",{className:"bg-white/10 border border-white/20 rounded-[18px] p-[16px] backdrop-blur-md flex flex-col w-full md:w-auto shrink-0 relative z-10 shadow-inner",children:[e.jsx("label",{className:"text-[11px] font-bold text-white/90 uppercase tracking-wider mb-2 ml-1",children:"Section Manager"}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3",children:[e.jsxs("div",{className:"relative w-full md:w-[320px]",children:[e.jsxs("select",{value:v||"",onChange:H=>y(H.target.value),className:"appearance-none bg-white/20 border border-white/30 text-white text-[13px] font-bold rounded-xl pl-4 pr-10 py-2.5 outline-none focus:border-white/50 focus:ring-2 focus:ring-white/20 w-full shadow-sm cursor-pointer [&>option]:text-[#1e293b]",children:[e.jsx("option",{value:"",children:"Select teacher"}),u.map(H=>e.jsxs("option",{value:H.uid,children:[H.name," (",H.email,")"]},H.uid))]}),e.jsx(Tt,{className:"w-4 h-4 text-white/70 absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]}),e.jsx("button",{onClick:xe,disabled:!v||f,className:"bg-white text-[#6366f1] hover:bg-white/90 text-[13px] font-bold rounded-full px-6 py-2.5 shadow-md transition-transform hover:scale-[1.02] whitespace-nowrap disabled:opacity-50 disabled:hover:scale-100",style:{color:j?.hex||"#6366f1"},children:f?"Updating...":"Assign"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 sm:gap-[18px] w-full",children:[e.jsxs("div",{className:"group relative overflow-hidden bg-[#0ea5e9] shadow-[0_4px_16px_rgba(14,165,233,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Class Average"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(vs,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[t.avgScore,"%"]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#10b981] shadow-[0_4px_16px_rgba(16,185,129,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Completion"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(qr,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[F,"%"]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#a855f7] shadow-[0_4px_16px_rgba(168,85,247,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Participation"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(os,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[X,"%"]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#f97316] shadow-[0_4px_16px_rgba(249,115,22,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Attention"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(Xs,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[ce.length," ",e.jsx("span",{className:"text-[12px] opacity-90 font-medium",children:"students"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-3 gap-3 sm:gap-[24px] h-auto xl:h-[600px]",children:[e.jsxs("div",{className:"xl:col-span-1 bg-white/80 backdrop-blur-[12px] rounded-[18px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white flex flex-col overflow-hidden h-[500px] xl:h-full",children:[e.jsxs("div",{className:"p-5 border-b border-[#f1f5f9] shrink-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h2",{className:"text-[15px] font-semibold text-[#1e293b]",children:["Students ",e.jsxs("span",{className:"text-[#64748b] text-[13px]",children:["(",E.length,")"]})]}),e.jsx("button",{onClick:()=>N?.(),className:"text-[11px] font-semibold text-[#9956DE] hover:text-[#7c3aed] bg-[#9956DE]/10 hover:bg-[#9956DE]/20 px-3 py-1.5 rounded-lg transition-colors",children:"+ Add"})]}),e.jsxs("div",{className:"flex items-center bg-white px-4 py-2 rounded-[14px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#f1f5f9] group",children:[e.jsx(Os,{className:"w-4 h-4 text-[#64748b] shrink-0 group-focus-within:text-[#4f46e5] transition-colors"}),e.jsx("input",{type:"text",placeholder:"Search students...",value:I,onChange:H=>U(H.target.value),className:"bg-transparent border-none focus:outline-none ml-2 text-[13px] w-full text-[#475569] placeholder:text-[#64748b]"})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-4 overflow-x-auto no-scrollbar pb-1",children:[e.jsx("button",{onClick:()=>A("All"),className:`px-3 py-1.5 text-[11px] font-semibold rounded-[14px] whitespace-nowrap transition-all hover:scale-[1.02] ${w==="All"?"bg-[#4f46e5] text-white shadow-[0_1px_4px_rgba(0,0,0,0.04)]":"bg-[#f8fafc] text-[#64748b] hover:bg-[#f1f5f9]"}`,children:"All Students"}),e.jsx("button",{onClick:()=>A("Good"),className:`px-3 py-1.5 text-[11px] font-semibold rounded-[14px] whitespace-nowrap transition-all hover:scale-[1.02] ${w==="Good"?"bg-emerald-50 text-emerald-600 border border-emerald-100/50 shadow-[0_1px_4px_rgba(0,0,0,0.04)]":"bg-emerald-50/40 text-emerald-600 border border-emerald-50 hover:bg-emerald-50"}`,children:"Top Performers"}),e.jsx("button",{onClick:()=>A("Risk"),className:`px-3 py-1.5 text-[11px] font-semibold rounded-[14px] whitespace-nowrap transition-all hover:scale-[1.02] ${w==="Risk"?"bg-rose-50 text-rose-600 border border-rose-100/50 shadow-[0_1px_4px_rgba(0,0,0,0.04)]":"bg-rose-50/40 text-rose-600 border border-rose-50 hover:bg-rose-50"}`,children:"Needs Attention"})]})]}),e.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-4 flex flex-col no-scrollbar",children:e.jsx(Yd,{style:{height:"100%"},data:E,className:"no-scrollbar",itemContent:(H,q)=>e.jsx("div",{className:"py-[6px] px-[8px]",children:e.jsx(bx,{student:q,onViewStudent:n,onCreateAccount:i})}),computeItemKey:(H,q)=>Ur(q)})})]}),e.jsxs("div",{className:"xl:col-span-2 flex flex-col gap-[24px] h-full overflow-y-auto no-scrollbar pb-10 xl:pb-0",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white flex flex-col group h-[280px]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"font-semibold text-[15px] text-[#1e293b]",children:"Risk Distribution"}),e.jsx(Lr,{className:"w-4 h-4 text-[#64748b] cursor-pointer group-hover:scale-110 transition-transform"})]}),e.jsx("div",{className:"relative w-full flex-1 min-h-[180px]",children:e.jsx(Dn,{width:"100%",height:"100%",children:e.jsxs($n,{data:B,children:[e.jsx(Fn,{strokeDasharray:"4 4",stroke:"#f1f5f9",vertical:!1}),e.jsx(On,{dataKey:"name",axisLine:{stroke:"#cbd5e1",strokeWidth:2},tickLine:!1,tick:{fill:"#475569",fontSize:11,fontWeight:600},dy:10}),e.jsx(Bn,{axisLine:!1,tickLine:!1,tick:{fill:"#64748b",fontSize:10,fontWeight:600}}),e.jsx(Pn,{cursor:{fill:"#f8fafc"},contentStyle:{borderRadius:"12px",border:"none",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1)"}}),e.jsx(Hn,{dataKey:"value",radius:[6,6,0,0],barSize:80,children:B.map((H,q)=>{const M={"High Risk":"#f43f5e","Medium Risk":"#f59e0b","Low Risk":"#10b981"};return e.jsx(Gn,{fill:M[H.name]||H.color},`cell-${q}`)})})]})})})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white flex flex-col group h-[280px]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"font-semibold text-[15px] text-[#1e293b]",children:"Topic Performance"}),e.jsx(Lr,{className:"w-4 h-4 text-[#64748b] cursor-pointer group-hover:scale-110 transition-transform"})]}),e.jsx("div",{className:"relative w-full flex-1 min-h-[180px] -ml-8",children:e.jsx(Dn,{width:"100%",height:"100%",children:e.jsxs($n,{data:o,layout:"vertical",margin:{top:0,right:10,left:40,bottom:0},children:[e.jsx(Fn,{strokeDasharray:"4 4",stroke:"#f1f5f9",horizontal:!1}),e.jsx(On,{type:"number",domain:[0,100],axisLine:!1,tickLine:!1,tick:{fill:"#64748b",fontSize:10,fontWeight:600},tickFormatter:H=>`${H}%`}),e.jsx(Bn,{dataKey:"topic",type:"category",axisLine:{stroke:"#cbd5e1",strokeWidth:2},tickLine:!1,tick:{fill:"#1e293b",fontSize:11,fontWeight:600},dx:-10}),e.jsx(Pn,{cursor:{fill:"#f8fafc"},contentStyle:{borderRadius:"12px",border:"none",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1)"}}),e.jsx(Hn,{dataKey:"score",radius:[0,6,6,0],barSize:28,children:o.map((H,q)=>{const M=["#6366f1","#a855f7","#10b981","#f59e0b","#ec4899"];return e.jsx(Gn,{fill:M[q%M.length]},`cell-${q}`)})})]})})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white",children:[e.jsx("div",{className:"flex items-center justify-between mb-4",children:e.jsxs("h3",{className:"font-semibold text-[15px] text-[#1e293b] flex items-center gap-2",children:[e.jsx(Ta,{className:"w-4 h-4 text-emerald-500"}),"Top Performers"]})}),e.jsxs("div",{className:"space-y-[8px]",children:[J.map(H=>e.jsxs("div",{onClick:()=>n(H),className:"flex justify-between items-center p-3 bg-emerald-50/40 rounded-[14px] border border-emerald-50 group hover:scale-[1.02] transition-transform cursor-pointer",children:[e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:H.name}),e.jsxs("span",{className:"text-[13px] font-semibold text-emerald-600",children:[H.avgScore,"%"]})]},`top-${H.id}`)),J.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"No students available yet."})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white",children:[e.jsx("div",{className:"flex items-center justify-between mb-4",children:e.jsxs("h3",{className:"font-semibold text-[15px] text-[#1e293b] flex items-center gap-2",children:[e.jsx(Xs,{className:"w-4 h-4 text-rose-500"}),"Needs Attention"]})}),e.jsxs("div",{className:"space-y-[8px]",children:[ce.slice(0,4).map(H=>{const q=H.riskLevel==="high",M=q?"bg-rose-50/40 border-rose-50":"bg-amber-50/40 border-amber-50";return e.jsxs("div",{onClick:()=>n(H),className:`flex justify-between items-center p-3 rounded-[14px] border group hover:scale-[1.02] transition-transform cursor-pointer ${M}`,children:[e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:H.name}),e.jsx("span",{className:`text-[11px] font-semibold bg-white px-2 py-0.5 rounded-[14px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#f1f5f9] ${q?"text-rose-600":"text-amber-600"}`,children:q?"HIGH RISK":"MEDIUM RISK"})]},`attn-${H.id}`)}),ce.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"No urgent students."})]})]})]})]})]}),e.jsx(vx,{students:s,allClasses:a,currentClass:t,onReassignSection:l,reassignBusyId:c})]})},Nx=({student:t,teacherId:s,teacherName:a,onStudentUpdated:r,onBack:o,onNavigateToQuizMaker:n,initialCache:i,onCacheUpdate:l})=>{const c=(t.riskLevel||"low").toLowerCase(),d=c==="high"||c==="medium",u=m.useMemo(()=>nt.getImportGroundedRolloutFlags(),[]),[f,h]=m.useState(i?.learningPath||""),[b,k]=m.useState(!0),[j,S]=m.useState(i?.gradeDraft||t.grade||"Grade 11"),[p,N]=m.useState(i?.sectionDraft||t.section||"Section A"),[C,z]=m.useState(!1),[I,U]=m.useState(i?.lessonPlan??null),[v,y]=m.useState([]),[w,A]=m.useState(""),[B,E]=m.useState(!1),[F,X]=m.useState(""),[J,ce]=m.useState("all"),[ne,xe]=m.useState("all"),[he,H]=m.useState(!1),[q,M]=m.useState(!1),[Y,ae]=m.useState(null),[$e,Me]=m.useState(!1),[Ge,G]=m.useState(!1),[te,g]=m.useState(0),[T,R]=m.useState(!1),[K,Z]=m.useState("choose"),[re,le]=m.useState([]),[$,oe]=m.useState(!1),[pe,we]=m.useState(!1),[se,fe]=m.useState(!1),[et,Fe]=m.useState(!1);m.useEffect(()=>{S(t.grade||"Grade 11"),N(t.section||"Section A")},[t.grade,t.section]),m.useEffect(()=>{const P=Ae=>{if(Ae.key==="Escape"){if(et){Fe(!1);return}if(pe){se?Fe(!0):we(!1);return}T&&R(!1)}};return document.addEventListener("keydown",P),()=>document.removeEventListener("keydown",P)},[pe,T,se,et]),m.useEffect(()=>{if(pe){const P=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=P}}},[pe]),m.useEffect(()=>{l?.(t.id,{lessonPlan:I,learningPath:f,gradeDraft:j,sectionDraft:p})},[I,f,j,p,t.id,l]),m.useEffect(()=>{(async()=>{k(!0);try{let Ae="";try{Ae=await Cl(t.struggles.length>0?t.struggles:[t.weakestTopic],"general_math"),A(Ae)}catch{A("")}const Ye=await nt.getLearningPath({weaknesses:t.struggles.length>0?t.struggles:[t.weakestTopic],gradeLevel:"High School",subject:"general_math"}),vt=Ae?`${Ye.learningPath} +`)],`${we}-normalized.csv`,{type:"text/csv"})},q=async g=>{v(!0),B(""),F(null);let T=g;if(/\.(xlsx|xls)$/i.test(g.name))try{const R=await ox(g,{confidenceThreshold:Qr});p(R);const K=H(R,g.name);K&&(T=K)}catch{p(null)}else p(null);try{const R=await nt.uploadClassRecords(T,{classSectionId:t,className:s,datasetIntent:"synthetic_student_records"}),K=R.students.length,re=((le,$,oe,pe)=>({classSectionId:le.classSectionId||$||"imported_class",className:le.className||oe||"Imported Class",classMetadata:le.classMetadata||pe}))(R,t,s,a);K>0&&i?.({students:R.students,classSectionId:re.classSectionId,className:re.className,classMetadata:re.classMetadata}),R.success?(me.success(`Successfully imported ${K} student records.`),F({datasetIntent:R.datasetIntent,summary:R.interpretationSummary,columns:R.columnInterpretations?.map(le=>({columnName:le.columnName,mappedField:le.mappedField,usagePolicy:le.usagePolicy,confidenceBand:le.confidenceBand,domainSignals:le.domainSignals}))||[]}),l?.()):me.error("Import completed but no usable student rows were detected. Check required columns and retry.")}catch(R){me.error(R instanceof Error?R.message:"Upload failed")}finally{v(!1)}},M=async g=>{w(!0);try{const T=await nt.uploadCourseMaterials(g,{classSectionId:t,className:s});if(T.success){const R=T.topics?.length??0;me.success(`Course material imported (${R} topics extracted).`),l?.()}}catch(T){me.error(T instanceof Error?T.message:"Course material upload failed")}finally{w(!1)}},[Y,ae]=m.useState(r),[$e,Me]=m.useState(!1);m.useEffect(()=>{ae(r),G(Object.fromEntries(r.map(g=>[Pa(g),{grade:g.grade||"Grade 11",section:g.section||"Section A"}])))},[r]);const[Ge,G]=m.useState({}),te=async()=>{Me(!0);try{for(const T of Y){const R=Ge[Pa(T)],K=R?.grade||T.grade,Z=R?.section||T.section;o&&(K!==T.grade||Z!==T.section)&&(await mr(T.id,K,Z,o,new Date().getFullYear().toString(),n),await Vi(T.id,K,Z));try{const re=await nt.predictRisk({engagementScore:T.engagementScore,avgQuizScore:T.avgScore,attendance:T.attendance,assignmentCompletion:T.assignmentCompletion});await jm(T.id,re.riskLevel,re.confidence)}catch(re){console.error("Failed to update risk:",re)}}const g=Y.map(T=>{const R=Ge[Pa(T)];if(!R)return T;const K=gt({metadata:T.classMetadata,classSectionId:T.classSectionId,className:[R.grade,R.section].filter(Boolean).join(" - "),grade:R.grade,section:R.section});return{...T,grade:R.grade,section:R.section,className:K.className||[R.grade,R.section].filter(Boolean).join(" - "),classSectionId:K.classSectionId||T.classSectionId,classMetadata:K}});ae(g),d?.(g),me.success("Records saved and risk levels updated"),j("main")}catch{me.error("Failed to save changes")}finally{Me(!1)}};return e.jsx("div",{className:"h-full overflow-y-auto w-full block",children:e.jsxs("div",{className:"w-full p-[24px] xl:p-[32px] space-y-[24px]",children:[k==="main"&&e.jsxs("div",{className:"block space-y-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[16px] p-4 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-slate-200 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-indigo-50 flex items-center justify-center border border-indigo-100/50",children:e.jsx(Ka,{className:"w-5 h-5 text-indigo-500"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-[14px] font-bold text-[#1e293b]",children:"Upload Context"}),e.jsx("p",{className:"text-[12px] text-[#64748b]",children:"Select where the imported data should be applied"})]})]}),e.jsxs("div",{className:"relative w-full md:w-[300px]",children:[e.jsxs("select",{className:"appearance-none bg-[#f8fafc] border border-[#e2e8f0] text-[#1e293b] font-bold text-[13px] rounded-lg pl-4 pr-10 py-2.5 outline-none focus:border-[#4f46e5] focus:ring-2 focus:ring-[#4f46e5]/20 shadow-[0_1px_4px_rgba(0,0,0,0.02)] cursor-pointer w-full transition-colors",value:s||t||"All Classes",onChange:()=>{},children:[e.jsx("option",{value:s||t||"All Classes",children:s||t?`${s} ${t?`(${t})`:""}`:"All Classes"}),e.jsx("option",{value:"Grade 11 - Section A",children:"Grade 11 - Section A"}),e.jsx("option",{value:"Grade 11 - Section B",children:"Grade 11 - Section B"})]}),e.jsx(Tt,{className:"w-4 h-4 text-[#64748b] absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{onDragOver:g=>{g.preventDefault(),C(!0)},onDragLeave:()=>C(!1),onDrop:g=>{g.preventDefault(),C(!1);const T=g.dataTransfer.files[0];T&&q(T)},onClick:()=>X.current?.click(),className:`border-2 border-dashed transition-all rounded-[24px] p-8 flex flex-col items-center justify-center text-center cursor-pointer group shadow-[0_4px_20px_rgba(0,0,0,0.02)] relative overflow-hidden h-[280px] ${N?"border-[#1FA7E1] bg-[#1FA7E1]/10":"border-[#1FA7E1]/30 hover:border-[#1FA7E1] bg-white hover:bg-[#1FA7E1]/5"}`,children:[e.jsx("input",{ref:X,type:"file",accept:".csv,.xlsx,.xls",onChange:g=>{const T=g.target.files?.[0];T&&q(T)},className:"hidden"}),e.jsx("div",{className:"w-16 h-16 rounded-full bg-[#1FA7E1]/10 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform duration-300 shadow-sm border border-[#1FA7E1]/20",children:U?e.jsx("span",{className:"animate-spin text-[#1FA7E1]",children:"..."}):e.jsx(zc,{className:"w-8 h-8 text-[#1FA7E1]"})}),e.jsx("h3",{className:"text-[18px] font-bold text-[#1e293b] mb-2",children:U?"Uploading...":"Class Records"}),e.jsx("p",{className:"text-[13px] text-[#64748b] max-w-sm mb-6",children:"Upload student grades, attendance logs, and quiz scores to power predictive analytics."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".csv"}),e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".xlsx"})]})]}),e.jsxs("div",{onDragOver:g=>{g.preventDefault(),I(!0)},onDragLeave:()=>I(!1),onDrop:g=>{g.preventDefault(),I(!1);const T=g.dataTransfer.files[0];T&&M(T)},onClick:()=>J.current?.click(),className:`border-2 border-dashed transition-all rounded-[24px] p-8 flex flex-col items-center justify-center text-center cursor-pointer group shadow-[0_4px_20px_rgba(0,0,0,0.02)] relative overflow-hidden h-[280px] ${z?"border-[#9956DE] bg-[#9956DE]/10":"border-[#9956DE]/30 hover:border-[#9956DE] bg-white hover:bg-[#9956DE]/5"}`,children:[e.jsx("input",{ref:J,type:"file",accept:".pdf,.docx,.txt",onChange:g=>{const T=g.target.files?.[0];T&&M(T)},className:"hidden"}),e.jsx("div",{className:"w-16 h-16 rounded-full bg-[#9956DE]/10 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform duration-300 shadow-sm border border-[#9956DE]/20",children:y?e.jsx("span",{className:"animate-spin text-[#9956DE]",children:"..."}):e.jsx(gs,{className:"w-8 h-8 text-[#9956DE]"})}),e.jsx("h3",{className:"text-[18px] font-bold text-[#1e293b] mb-2",children:y?"Uploading...":"Course Materials"}),e.jsx("p",{className:"text-[13px] text-[#64748b] max-w-sm mb-6",children:"Upload syllabus, lesson plans, and curriculum docs to ground AI lesson generation."}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".pdf"}),e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".docx"}),e.jsx("span",{className:"px-3 py-1 bg-slate-100 text-slate-500 text-[11px] font-semibold rounded-full border border-slate-200",children:".txt"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-[16px]",children:[e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#0ea5e9] to-[#0284c7] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(14,165,233,0.2)] flex flex-col text-white group transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:shadow-sky-500/30",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full"}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-white/10 border border-white/20 flex items-center justify-center shrink-0 mb-3 relative z-10 transition-transform group-hover:scale-110",children:e.jsx(Mc,{className:"w-5 h-5 text-white"})}),e.jsx("h4",{className:"font-bold text-[14px] mb-1.5 relative z-10",children:"Smart Parsing"}),e.jsx("p",{className:"text-[12px] text-white/90 leading-relaxed relative z-10",children:"AI automatically understands varied spreadsheet formats and maps column names securely."})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#f97316] to-[#ea580c] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(249,115,22,0.2)] flex flex-col text-white group transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:shadow-orange-500/30",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full"}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-white/10 border border-white/20 flex items-center justify-center shrink-0 mb-3 relative z-10 transition-transform group-hover:scale-110",children:e.jsx(di,{className:"w-5 h-5 text-white"})}),e.jsx("h4",{className:"font-bold text-[14px] mb-1.5 relative z-10",children:"Risk Prediction"}),e.jsx("p",{className:"text-[12px] text-white/90 leading-relaxed relative z-10",children:"Analyzes historical performance patterns across your data to predict at-risk students."})]}),e.jsxs("div",{className:"relative overflow-hidden bg-gradient-to-br from-[#a855f7] to-[#9333ea] rounded-[16px] p-[20px] shadow-[0_4px_12px_rgba(168,85,247,0.2)] flex flex-col text-white group transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:shadow-purple-500/30",children:[e.jsx("div",{className:"absolute -right-8 -bottom-8 w-24 h-24 bg-white/10 rounded-full"}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-white/10 border border-white/20 flex items-center justify-center shrink-0 mb-3 relative z-10 transition-transform group-hover:scale-110",children:e.jsx($s,{className:"w-5 h-5 text-white"})}),e.jsx("h4",{className:"font-bold text-[14px] mb-1.5 relative z-10",children:"Contextual AI"}),e.jsx("p",{className:"text-[12px] text-white/90 leading-relaxed relative z-10",children:"Maps curriculum topics to generate highly personalized remedial lesson paths."})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-white flex flex-col justify-between h-full",children:[e.jsx("h2",{className:"text-[16px] font-semibold text-[#1e293b] mb-4",children:"Data Health"}),e.jsxs("div",{className:"flex-1 bg-emerald-50/50 border border-emerald-100 rounded-[16px] p-6 flex flex-col items-center justify-center text-center transition-all duration-300 hover:bg-emerald-50 hover:shadow-md hover:border-emerald-200",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-emerald-100 flex items-center justify-center mb-3 text-emerald-600 transition-transform duration-300 hover:scale-110 hover:-translate-y-1",children:e.jsx(Wr,{className:"w-6 h-6"})}),e.jsx("h3",{className:"text-emerald-700 font-bold text-[15px] mb-1",children:"All Records Synced"}),e.jsx("p",{className:"text-emerald-600/80 text-[12px] max-w-[200px]",children:"AI parsing completed successfully with no anomalies detected."})]}),e.jsxs("div",{className:"flex flex-col gap-2 mt-4",children:[e.jsxs("button",{onClick:()=>j("edit-records"),className:"w-full flex items-center justify-center gap-2 bg-[#1e293b] hover:bg-black text-white text-[13px] font-semibold rounded-full px-4 py-3 shadow-[0_1px_4px_rgba(0,0,0,0.04)] transition-transform hover:scale-[1.02]",children:[e.jsx(Ic,{className:"w-4 h-4"})," Edit Class Records"]}),e.jsx("button",{onClick:()=>j("mapping-logs"),className:"w-full flex items-center justify-center gap-2 bg-white text-[#475569] border border-slate-300 hover:bg-slate-50 text-[13px] font-semibold rounded-full px-4 py-3 shadow-[0_1px_4px_rgba(0,0,0,0.04)] transition-colors",children:"View Mapping Logs"})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[24px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.02)] border border-white flex flex-col h-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("h2",{className:"text-[16px] font-semibold text-[#1e293b]",children:"Recent Uploads"}),e.jsx("button",{onClick:()=>j("mapping-logs"),className:"text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors",children:"View All"})]}),e.jsxs("div",{className:"flex-1 space-y-[12px] overflow-y-auto no-scrollbar flex flex-col justify-center items-center h-[120px]",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-slate-50 flex items-center justify-center mb-2 border border-slate-100",children:e.jsx(Nc,{className:"w-5 h-5 text-slate-300"})}),e.jsx("p",{className:"text-[13px] font-medium text-slate-500",children:"There are no recent uploads yet."})]})]})]})]}),k==="mapping-logs"&&e.jsxs("div",{className:"space-y-[16px]",children:[e.jsx("div",{className:"shrink-0 mb-2",children:e.jsxs("button",{onClick:()=>j("main"),className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors w-max bg-white px-[18px] py-2 rounded-full shadow-sm border border-slate-200",children:[e.jsx(Xa,{className:"w-4 h-4"})," Back to Uploads"]})}),e.jsxs("div",{className:"bg-white rounded-[18px] border border-[#f1f5f9] overflow-hidden shadow-sm",children:[e.jsx("div",{className:"p-5 border-b border-[#f1f5f9] bg-slate-50 flex justify-between items-center",children:e.jsx("h2",{className:"text-[15px] font-semibold text-[#1e293b]",children:"Latest Import Mapping"})}),e.jsx("div",{className:"p-5",children:E?e.jsx("div",{className:"space-y-3",children:E.columns.map((g,T)=>e.jsxs("div",{className:"flex justify-between p-3 border rounded bg-slate-50",children:[e.jsx("span",{className:"font-semibold text-sm",children:g.columnName}),e.jsx("span",{className:"text-sm text-indigo-600",children:g.mappedField||"Unmapped"})]},T))}):e.jsx("p",{className:"text-slate-500 text-sm",children:"No recent mapping logs to display."})})]})]}),k==="edit-records"&&e.jsxs("div",{className:"space-y-[16px] h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 mb-2",children:e.jsxs("button",{onClick:()=>j("main"),className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors w-max bg-white px-[18px] py-2 rounded-full shadow-sm border border-slate-200",children:[e.jsx(Xa,{className:"w-4 h-4"})," Back to Uploads"]})}),e.jsxs("div",{className:"bg-white rounded-[18px] border border-slate-200 shadow-sm overflow-hidden flex flex-col flex-1",children:[e.jsxs("div",{className:"p-5 border-b border-slate-200 flex justify-between items-center bg-white",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-[18px] font-bold text-[#1e293b]",children:"Edit Class Records"}),e.jsx("p",{className:"text-[13px] text-[#64748b]",children:"Review and modify student data manually"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx("button",{onClick:()=>j("main"),className:"px-5 py-2 rounded-full border border-slate-300 text-slate-700 font-semibold text-[13px] hover:bg-slate-50",children:"Cancel"}),e.jsx("button",{onClick:te,disabled:$e,className:"px-5 py-2 rounded-full bg-emerald-500 text-white font-semibold text-[13px] hover:bg-emerald-600 flex items-center gap-2 disabled:opacity-50",children:$e?"Saving...":e.jsxs(e.Fragment,{children:[e.jsx(ni,{className:"w-4 h-4"})," Save Changes"]})})]})]}),e.jsxs("div",{className:"px-5 py-3 border-b border-slate-200 flex justify-between items-center bg-slate-50/50 shrink-0 text-slate-500 text-[13px]",children:[e.jsxs("span",{className:"flex items-center gap-2 font-medium",children:[e.jsx(ga,{className:"w-4 h-4"})," Click on any field to edit"]}),e.jsxs("span",{children:["Showing ",Y.length," records"]})]}),e.jsx("div",{className:"overflow-auto flex-1 table-scrollbar bg-white relative",children:e.jsxs("div",{className:"min-w-[1100px] w-full flex flex-col min-h-full",children:[e.jsxs("div",{className:"flex items-center w-full bg-slate-100/90 border-b border-slate-200 text-[12px] font-semibold text-slate-500 tracking-wide sticky top-0 z-20 shadow-[0_1px_2px_rgba(0,0,0,0.02)] h-12",children:[e.jsx("div",{className:"flex-[1.5] min-w-[240px] px-6 sticky left-0 z-30 bg-slate-100/90 backdrop-blur-sm border-r border-slate-200 h-full flex items-center shadow-[2px_0_4px_rgba(0,0,0,0.02)]",children:"Student Name"}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 h-full flex items-center justify-center",children:"LRN"}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 h-full flex items-center justify-center",children:"Grade"}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 h-full flex items-center justify-center",children:"Section"}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 h-full flex items-center justify-center",children:"Avg Score"}),e.jsx("div",{className:"w-[120px] shrink-0 px-4 h-full flex items-center justify-center",children:"Risk Level"}),e.jsx("div",{className:"flex-1 min-w-[180px] px-4 h-full flex items-center justify-center",children:"Weakest Topic"}),e.jsx("div",{className:"w-[80px] shrink-0 px-4 h-full flex items-center justify-center border-r border-transparent",children:"Action"})]}),e.jsx("div",{className:"flex flex-col w-full pb-4",children:Y.map((g,T)=>{const R=Pa(g),K=g.name.split(" "),Z=K.length>1?`${K[0][0]}${K[K.length-1][0]}`.toUpperCase():g.name.substring(0,2).toUpperCase(),re=["bg-[#be185d]","bg-[#3b82f6]","bg-[#f43f5e]","bg-[#2563eb]","bg-[#059669]","bg-[#d946ef]"],le=re[T%re.length],$=(g.avgScore??0)>=75?"text-emerald-500":(g.avgScore??0)>=60?"text-orange-500":"text-rose-500";let oe="bg-slate-50 text-slate-600 border-slate-200";const pe=(g.riskLevel||"").toLowerCase();return pe==="low"?oe="bg-emerald-50 text-emerald-600 border-emerald-200":pe==="high"?oe="bg-rose-50 text-rose-600 border-rose-200":pe==="medium"&&(oe="bg-orange-50 text-orange-600 border-orange-200"),e.jsxs("div",{className:"flex items-center w-full border-b border-slate-100 hover:bg-slate-50 transition-colors group min-h-[64px]",children:[e.jsxs("div",{className:"flex-[1.5] min-w-[240px] px-6 sticky left-0 z-10 bg-white group-hover:bg-slate-50 border-r border-slate-100 h-full flex items-center gap-4 shadow-[2px_0_4px_rgba(0,0,0,0.01)]",children:[e.jsx("div",{className:`w-8 h-8 rounded-full ${le} text-white flex items-center justify-center font-bold text-[12px] shrink-0`,children:Z}),e.jsx("span",{className:"font-semibold text-slate-800 text-[14px] truncate",children:g.name})]}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 flex justify-center text-[13px] text-slate-500",children:g.lrn||"—"}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 flex justify-center",children:e.jsx("input",{type:"text",value:Ge[R]?.grade||g.grade||"",onChange:we=>G(se=>({...se,[R]:{...se[R],grade:we.target.value}})),className:"bg-slate-100 focus:bg-white outline-none px-4 py-1.5 rounded-full text-[13px] font-medium text-slate-600 w-full transition-all border border-transparent focus:border-purple-500 focus:ring-2 focus:ring-purple-500/20 text-center"})}),e.jsx("div",{className:"w-[140px] shrink-0 px-4 flex justify-center",children:e.jsx("input",{type:"text",value:Ge[R]?.section||g.section||"",onChange:we=>G(se=>({...se,[R]:{...se[R],section:we.target.value}})),className:"bg-slate-100 focus:bg-white outline-none px-4 py-1.5 rounded-full text-[13px] font-medium text-slate-600 w-full transition-all border border-transparent focus:border-purple-500 focus:ring-2 focus:ring-purple-500/20 text-center"})}),e.jsx("div",{className:"w-[100px] shrink-0 px-4 flex justify-center",children:e.jsxs("span",{className:`${$} font-bold text-[14px]`,children:[g.avgScore,"%"]})}),e.jsx("div",{className:"w-[120px] shrink-0 px-4 flex justify-center",children:e.jsx("span",{className:`px-3 py-1 text-[10px] font-bold rounded uppercase border ${oe}`,children:g.riskLevel||"Unknown"})}),e.jsx("div",{className:"flex-1 min-w-[180px] px-4 flex justify-center text-[13px] text-slate-600 truncate",children:g.weakestTopic||"Foundational Skills"}),e.jsx("div",{className:"w-[80px] shrink-0 px-4 flex justify-center border-r border-transparent",children:e.jsx("button",{className:"w-8 h-8 rounded-full hover:bg-slate-200 flex items-center justify-center transition-colors",children:e.jsx(ci,{className:"w-4 h-4 text-slate-400"})})})]},R)})})]})})]})]})]})})}const Ha="ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789",Go="school.mathpulse.local";function Qo(t=10){const s=typeof globalThis<"u"&&typeof globalThis.crypto<"u"?globalThis.crypto:void 0;if(s&&typeof s.getRandomValues=="function"){const r=new Uint32Array(t);s.getRandomValues(r);let o="";for(let n=0;n{const[l,c]=m.useState(""),[d,u]=m.useState(""),[f,h]=m.useState(!1),[b,k]=m.useState(null),[j,S]=m.useState(null),[p,N]=m.useState(!1);m.useEffect(()=>{t&&(k(null),N(!1),h(!1),S(null),c((a?.email||lx(a)).trim()),u(Qo()))},[t,a]);const C=m.useMemo(()=>a?[a.grade,a.section].filter(Boolean).join(" · ")||"Unassigned section":null,[a]),z=()=>{u(Qo()),N(!1)},I=async()=>{try{const y=j?.temporaryPassword||d;if(!y)return;typeof navigator<"u"&&navigator.clipboard&&await navigator.clipboard.writeText(y),N(!0),me.success("Temporary password copied. Share it with the student now — it will not be shown again."),window.setTimeout(()=>N(!1),2500)}catch(y){console.warn("Clipboard write failed:",y),me.error("Unable to copy password. Please copy it manually.")}},U=async()=>{if(!a)return;const y=l.trim();if(!cx(y)){k("Enter a valid email address before creating the account.");return}if(!d||d.length<8){k("Temporary password must be at least 8 characters.");return}if(!r){k("Missing teacher context. Please refresh and try again.");return}h(!0),k(null);try{const w=await Nm({name:a.name,lrn:a.lrn,email:y,grade:a.grade,section:a.section,classSectionId:a.classSectionId,adviserTeacherId:r,adviserTeacherName:o,schoolYear:n,temporaryPassword:d});S(w),i?.({...w,rosterId:a.rosterId}),me.success(`Account created for ${a.name}.`)}catch(w){const A=w instanceof Error?w.message:"Failed to create account.";k(A)}finally{h(!1)}},v=j?.temporaryPassword||d;return e.jsx(Et,{children:t&&a&&e.jsx(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50 backdrop-blur-sm p-4",onClick:()=>{f||s()},children:e.jsxs(Re.div,{initial:{opacity:0,scale:.95,y:12},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:12},transition:{type:"spring",damping:28,stiffness:320},onClick:y=>y.stopPropagation(),className:"bg-[#f7f9fc] rounded-3xl shadow-2xl w-full max-w-lg overflow-hidden border border-[#dde3eb]",role:"dialog","aria-modal":"true","aria-labelledby":"create-student-account-modal-title",children:[e.jsxs("div",{className:"flex items-start justify-between px-6 pt-6",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-12 h-12 rounded-2xl bg-indigo-100 text-indigo-600 flex items-center justify-center shrink-0",children:e.jsx(Ko,{size:22})}),e.jsxs("div",{children:[e.jsx("h2",{id:"create-student-account-modal-title",className:"text-[16px] font-bold text-[#0a1628]",children:j?"Account Created":"Create Student Account"}),e.jsx("p",{className:"text-[12px] text-[#5a6578] mt-0.5",children:j?"Share these credentials with the student. The password will not be shown again.":`Provision a system account for ${a.name}.`})]})]}),e.jsx("button",{type:"button",onClick:()=>{f||s()},className:"p-1.5 rounded-lg hover:bg-[#dde3eb] transition-colors","aria-label":"Close",children:e.jsx(cs,{className:"w-4 h-4 text-[#5a6578]"})})]}),e.jsxs("div",{className:"px-6 py-5 space-y-4",children:[e.jsxs("div",{className:"bg-white border border-[#e2e8f0] rounded-2xl p-4",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[#64748b]",children:"Roster Row"}),e.jsx("p",{className:"text-[14px] font-semibold text-[#0a1628] mt-1",children:a.name}),e.jsxs("p",{className:"text-[12px] text-[#475569] mt-0.5",children:[a.lrn?`LRN ${a.lrn} · `:"",C]})]}),!j&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-[12px] font-semibold text-[#0a1628]",children:"Email address"}),e.jsx("input",{type:"email",value:l,onChange:y=>c(y.target.value),disabled:f,className:"mt-1 w-full rounded-xl border border-[#dde3eb] bg-white px-3 py-2 text-[13px] text-[#0a1628] focus:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-200",placeholder:"student@school.example",autoComplete:"off",spellCheck:!1}),e.jsx("span",{className:"text-[11px] text-[#64748b] mt-1 block",children:"Auto-generated from LRN if available. The student will sign in with this address."})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-[12px] font-semibold text-[#0a1628] block",children:"Temporary password"}),e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[e.jsx("input",{type:"text",value:d,readOnly:!0,className:"flex-1 rounded-xl border border-[#dde3eb] bg-white px-3 py-2 text-[13px] font-mono tracking-wide text-[#0a1628] focus:outline-none"}),e.jsx("button",{type:"button",onClick:z,disabled:f,className:"p-2 rounded-xl border border-[#dde3eb] bg-white hover:bg-[#f1f5f9] transition-colors disabled:opacity-60","aria-label":"Regenerate temporary password",children:e.jsx(zs,{className:"w-4 h-4 text-[#475569]"})}),e.jsx("button",{type:"button",onClick:I,className:"p-2 rounded-xl border border-[#dde3eb] bg-white hover:bg-[#f1f5f9] transition-colors","aria-label":"Copy temporary password",children:p?e.jsx(Mt,{className:"w-4 h-4 text-emerald-600"}):e.jsx(zr,{className:"w-4 h-4 text-[#475569]"})})]}),e.jsx("span",{className:"text-[11px] text-[#64748b] mt-1 block",children:"The student should change this on first sign-in. Share it once — it will not be persisted."})]}),b&&e.jsxs("div",{className:"flex items-start gap-2 rounded-xl bg-rose-50 border border-rose-200 px-3 py-2 text-[12px] text-rose-700",children:[e.jsx(lc,{className:"w-4 h-4 mt-0.5 shrink-0"}),e.jsx("span",{children:b})]})]}),j&&e.jsxs("div",{className:"rounded-2xl border border-emerald-200 bg-emerald-50 p-4 space-y-2",children:[e.jsx("p",{className:"text-[12px] font-semibold text-emerald-800",children:"Credentials"}),e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-xl bg-white border border-emerald-100 px-3 py-2",children:[e.jsx("span",{className:"text-[12px] text-[#475569]",children:"Email"}),e.jsx("span",{className:"text-[13px] font-semibold text-[#0a1628]",children:j.email})]}),e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-xl bg-white border border-emerald-100 px-3 py-2",children:[e.jsx("span",{className:"text-[12px] text-[#475569]",children:"Temporary password"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[13px] font-semibold font-mono text-[#0a1628]",children:v}),e.jsx("button",{type:"button",onClick:I,className:"p-1.5 rounded-lg border border-emerald-200 bg-white hover:bg-emerald-100 transition-colors","aria-label":"Copy temporary password",children:p?e.jsx(Mt,{className:"w-4 h-4 text-emerald-600"}):e.jsx(zr,{className:"w-4 h-4 text-emerald-700"})})]})]}),e.jsx("p",{className:"text-[11px] text-emerald-800",children:"This password is not stored anywhere. If you close this dialog without copying, you will need to reset it from the admin tools."})]})]}),e.jsx("div",{className:"flex items-center justify-end gap-2 px-6 pb-6",children:j?e.jsx(xt,{type:"button",onClick:s,className:"bg-indigo-600 hover:bg-indigo-700 text-white text-[13px] font-semibold rounded-xl px-5 py-2",children:"Done"}):e.jsxs(e.Fragment,{children:[e.jsx(xt,{type:"button",variant:"ghost",onClick:s,disabled:f,className:"text-[13px] font-semibold text-[#475569] rounded-xl px-4 py-2 hover:bg-[#dde3eb]",children:"Cancel"}),e.jsx(xt,{type:"button",onClick:U,disabled:f,className:"bg-indigo-600 hover:bg-indigo-700 text-white text-[13px] font-semibold rounded-xl px-5 py-2 disabled:opacity-60",children:f?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(dt,{className:"w-4 h-4 animate-spin"}),"Creating…"]}):"Create account"})]})})]})})})};function mx(t){const s=t.atRiskCount>=5?"high":t.atRiskCount>=2?"medium":"low",a=gt({metadata:t.classMetadata,classSectionId:t.classSectionId,className:t.name,grade:t.grade,gradeLevel:t.gradeLevel,classification:t.classification,strand:t.strand,section:t.section,schoolYear:t.schoolYear,ownerTeacherId:t.ownerTeacherId||t.teacherId,ownerTeacherName:t.ownerTeacherName,adviserTeacherId:t.adviserTeacherId||t.teacherId,adviserTeacherName:t.adviserTeacherName||t.ownerTeacherName,managerId:t.managerId,managerName:t.managerName});return{id:t.id,name:a.className||t.name,classSectionId:a.classSectionId||t.classSectionId,classMetadata:a,gradeLevel:a.gradeLevel||void 0,classification:a.classification||void 0,strand:a.strand||void 0,managerId:a.managerId||void 0,managerName:a.managerName||void 0,schedule:t.schedule,studentCount:t.studentCount,avgScore:t.avgScore,atRiskCount:t.atRiskCount,riskLevel:s}}function Rr(t,s){const a=t.riskLevel.toLowerCase(),r=t.lastActive?nl(t.lastActive.toDate()):"Unknown",o=t.className||s||"Imported Class",n=ls(o),i=t.grade||n.grade,l=t.section||n.section,c=gt({metadata:t.classMetadata,classSectionId:t.classSectionId||t.classroomId,className:[i,l].filter(Boolean).join(" - ")||o,grade:i,gradeLevel:t.gradeLevel,classification:t.classification,strand:t.strand,section:l,adviserTeacherId:t.teacherId,ownerTeacherId:t.teacherId,managerId:t.classMetadata?.managerId||t.managerId,managerName:t.classMetadata?.managerName||t.managerName});return{id:t.id,lrn:t.lrn,name:t.name,avatar:t.avatar||`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name)}&background=random`,avgScore:t.avgQuizScore,riskLevel:a,weakestTopic:t.weakestTopic||"N/A",classroomId:t.classroomId||c.classSectionId||o,className:c.className||[i,l].filter(Boolean).join(" - ")||o,grade:i,gradeLevel:c.gradeLevel||us(i)||void 0,classification:c.classification||sa(c.gradeLevel||i)||void 0,strand:c.strand||aa(c.className,l)||void 0,section:l,classSectionId:c.classSectionId||t.classSectionId,classMetadata:c,managerId:c.managerId||void 0,managerName:c.managerName||void 0,lastActive:r,struggles:t.struggles||[],engagementScore:t.engagementScore,attendance:t.attendance,assignmentCompletion:t.assignmentCompletion,hasRegisteredAccount:t.hasRegisteredAccount,source:t.source,accountUid:t.accountUid,email:t.email}}function ux(t){const s=t.atRiskCount>=5?"high":t.atRiskCount>=2?"medium":"low",a=gt({metadata:t.classMetadata,classSectionId:t.classSectionId,className:t.name,grade:t.grade,gradeLevel:t.gradeLevel||t.classMetadata?.gradeLevel,classification:t.classification||t.classMetadata?.classification,strand:t.strand||t.classMetadata?.strand,section:t.section,managerId:t.managerId||t.classMetadata?.managerId,managerName:t.managerName||t.classMetadata?.managerName});return{id:t.id,name:a.className||t.name,classSectionId:a.classSectionId||t.classSectionId||void 0,classMetadata:a,gradeLevel:a.gradeLevel||void 0,classification:a.classification||void 0,strand:a.strand||void 0,managerId:a.managerId||void 0,managerName:a.managerName||void 0,schedule:t.schedule||"Mon-Fri",studentCount:t.studentCount,avgScore:t.avgScore,atRiskCount:t.atRiskCount,riskLevel:s}}function xx(t){const s=(t.riskLevel||"Low").toLowerCase(),a=gt({metadata:t.classMetadata,classSectionId:t.classSectionId,className:t.className||[t.grade,t.section].filter(Boolean).join(" - ")||"Imported Class",grade:t.grade,gradeLevel:t.gradeLevel||t.classMetadata?.gradeLevel,classification:t.classification||t.classMetadata?.classification,strand:t.strand||t.classMetadata?.strand,section:t.section,managerId:t.managerId||t.classMetadata?.managerId,managerName:t.managerName||t.classMetadata?.managerName}),r=a.className||"Imported Class";return{id:t.id,lrn:t.lrn||void 0,name:t.name,avatar:`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name)}&background=random`,avgScore:t.avgQuizScore,riskLevel:s,weakestTopic:t.weakestTopic||"Foundational Skills",classroomId:a.classSectionId||t.classSectionId||r,className:r,grade:a.grade||ls(r).grade,gradeLevel:a.gradeLevel||us(a.grade||ls(r).grade)||void 0,classification:a.classification||sa(a.gradeLevel||a.grade)||void 0,strand:a.strand||aa(r,a.section||t.section)||void 0,section:a.section||ls(r).section,classSectionId:a.classSectionId||t.classSectionId||void 0,classMetadata:a,managerId:a.managerId||void 0,managerName:a.managerName||void 0,lastActive:"Recently imported",struggles:[t.weakestTopic||"Foundational Skills"],engagementScore:t.engagementScore,attendance:t.attendance,assignmentCompletion:t.assignmentCompletion}}function px(t,s,a){return t<60||s<75||a<55?"high":t<75||s<85||a<70?"medium":"low"}function hx(t,s,a,r){const o=gt({metadata:r,classSectionId:s,className:a}),n=o.className||"Imported Class",i=o.classSectionId||"imported_class",l=Number(t.avgQuizScore||0),c=Number(t.attendance||0),d=Number(t.engagementScore||0),u=Number(t.assignmentCompletion||0),f=t.unknownFields?.weakestTopic||t.unknownFields?.topic||"Foundational Skills",h=px(l,c,d),b=t.studentId||t.lrn||t.email||t.name||Math.random().toString(36).slice(2);return{id:`upload-${i}-${b}`,lrn:t.lrn,name:t.name,avatar:`https://ui-avatars.com/api/?name=${encodeURIComponent(t.name)}&background=random`,avgScore:l,riskLevel:h,weakestTopic:f,classroomId:i,className:n,grade:o.grade||ls(n).grade,gradeLevel:o.gradeLevel||us(o.grade||ls(n).grade)||void 0,classification:o.classification||sa(o.gradeLevel||o.grade)||void 0,strand:o.strand||aa(n,o.section)||void 0,section:o.section||ls(n).section,classSectionId:i,classMetadata:o,managerId:o.managerId||void 0,managerName:o.managerName||void 0,lastActive:"Recently imported",struggles:[f],engagementScore:d,attendance:c,assignmentCompletion:u}}function nl(t){const s=Date.now()-t.getTime(),a=Math.floor(s/6e4);if(a<1)return"Just now";if(a<60)return`${a} min${a>1?"s":""} ago`;const r=Math.floor(a/60);if(r<24)return`${r} hour${r>1?"s":""} ago`;const o=Math.floor(r/24);return`${o} day${o>1?"s":""} ago`}function at(t){return(t||"").trim().toLowerCase()}function Uo(t){const s=at(t.classSectionId);if(s)return`section:${s}`;const a=(t.id||"").trim().toLowerCase();return a?`id:${a}`:`name:${(t.name||"").trim().toLowerCase()}`}function Vo(t,s){const a=new Map;return t.forEach(r=>{a.set(Uo(r),r)}),s.forEach(r=>{const o=Uo(r),n=a.get(o);if(!n){a.set(o,r);return}const i=Math.max(n.atRiskCount||0,r.atRiskCount||0),l=Math.max(n.studentCount||0,r.studentCount||0),c=r.avgScore>0?r.avgScore:n.avgScore,d=i>=5?"high":i>=2?"medium":"low",u=gt({metadata:n.classMetadata,classSectionId:n.classSectionId||r.classSectionId,className:n.name||r.name,grade:n.classMetadata?.grade||r.classMetadata?.grade,gradeLevel:n.classMetadata?.gradeLevel||r.classMetadata?.gradeLevel,classification:n.classMetadata?.classification||r.classMetadata?.classification,strand:n.classMetadata?.strand||r.classMetadata?.strand,section:n.classMetadata?.section||r.classMetadata?.section,schoolYear:n.classMetadata?.schoolYear||r.classMetadata?.schoolYear,ownerTeacherId:n.classMetadata?.ownerTeacherId||r.classMetadata?.ownerTeacherId,ownerTeacherName:n.classMetadata?.ownerTeacherName||r.classMetadata?.ownerTeacherName,adviserTeacherId:n.classMetadata?.adviserTeacherId||r.classMetadata?.adviserTeacherId,adviserTeacherName:n.classMetadata?.adviserTeacherName||r.classMetadata?.adviserTeacherName,managerId:n.classMetadata?.managerId||r.classMetadata?.managerId,managerName:n.classMetadata?.managerName||r.classMetadata?.managerName});a.set(o,{...n,classSectionId:u.classSectionId||n.classSectionId||r.classSectionId,name:u.className||n.name||r.name,classMetadata:u,gradeLevel:u.gradeLevel||void 0,classification:u.classification||void 0,strand:u.strand||void 0,managerId:u.managerId||void 0,managerName:u.managerName||void 0,schedule:n.schedule||r.schedule,studentCount:l,atRiskCount:i,avgScore:c,riskLevel:d})}),Array.from(a.values())}function nr(t){const s=(t.lrn||"").trim().toLowerCase();if(s)return`lrn:${s}`;const a=t.name.trim().toLowerCase();if(a)return`name:${a}`;const r=at(t.classSectionId)||at(t.classroomId),o=(t.id||"").trim().toLowerCase();return r&&o?`${r}|id:${o}`:`${r}|anonymous`}function Ur(t){const s=at(t.classSectionId)||at(t.classroomId),a=(t.lrn||"").trim().toLowerCase(),r=(t.id||"").trim().toLowerCase(),o=t.name.trim().toLowerCase().replace(/\s+/g,"_");return s&&a?`${s}|lrn:${a}`:s&&r?`${s}|id:${r}`:a?`lrn:${a}`:r&&o?`id:${r}|name:${o}`:r?`id:${r}`:s&&o?`${s}|name:${o}`:`name:${o||"unknown"}`}function Wo(t,s){const a=new Map;return t.forEach(r=>{a.set(nr(r),r)}),s.forEach(r=>{const o=nr(r),n=a.get(o);if(!n){a.set(o,r);return}const i=[n.riskLevel,r.riskLevel].includes("high")?"high":[n.riskLevel,r.riskLevel].includes("medium")?"medium":"low",l=gt({metadata:n.classMetadata,classSectionId:n.classSectionId||r.classSectionId,className:n.className||r.className,grade:n.grade||r.grade,gradeLevel:n.gradeLevel||r.gradeLevel,classification:n.classification||r.classification,strand:n.strand||r.strand,section:n.section||r.section,managerId:n.managerId||r.managerId,managerName:n.managerName||r.managerName});a.set(o,{...n,lrn:n.lrn||r.lrn,classSectionId:l.classSectionId||n.classSectionId||r.classSectionId,classroomId:n.classroomId||r.classroomId,className:l.className||n.className||r.className,grade:l.grade||n.grade||r.grade,gradeLevel:l.gradeLevel||n.gradeLevel||r.gradeLevel,classification:l.classification||n.classification||r.classification,strand:l.strand||n.strand||r.strand,section:l.section||n.section||r.section,managerId:l.managerId||n.managerId||r.managerId,managerName:l.managerName||n.managerName||r.managerName,classMetadata:l,avgScore:r.avgScore>0?r.avgScore:n.avgScore,attendance:r.attendance>0?r.attendance:n.attendance,engagementScore:r.engagementScore>0?r.engagementScore:n.engagementScore,assignmentCompletion:r.assignmentCompletion>0?r.assignmentCompletion:n.assignmentCompletion,weakestTopic:n.weakestTopic&&n.weakestTopic!=="N/A"?n.weakestTopic:r.weakestTopic,riskLevel:i,struggles:n.struggles.length>0?n.struggles:r.struggles,hasRegisteredAccount:n.hasRegisteredAccount===!0||r.hasRegisteredAccount===!0?!0:n.hasRegisteredAccount??r.hasRegisteredAccount,source:n.source==="registered"&&r.source==="import"||n.source==="import"&&r.source==="registered"||n.source==="both"||r.source==="both"?"both":n.source||r.source,accountUid:n.accountUid||r.accountUid,email:n.email||r.email})}),Array.from(a.values())}const bp=({onLogout:t,onOpenProfile:s,onOpenSettings:a})=>{const{currentUser:r,userProfile:o}=ds(),[n,i]=m.useState("dashboard"),[l,c]=m.useState(!1),[d,u]=m.useState(!1),[f,h]=m.useState(!1),[b,k]=m.useState(!1),[j,S]=m.useState(!1),[p,N]=m.useState(!1),[C,z]=m.useState(!1),I=["streak_reminder","daily_checkin","streak_milestone","achievement_unlocked","level_up","xp_earned","quiz_result"],{notifications:U}=ei(),v=U.filter(_=>!_.isRead&&!I.includes(_.type)).length,[y,w]=m.useState(null),[A,B]=m.useState(null),[E,F]=m.useState(!1),[X,J]=m.useState(!1),[ce,ne]=m.useState(!1),[xe,he]=m.useState(!1),[H,q]=m.useState([]),[M,Y]=m.useState([]),[ae,$e]=m.useState([]),[Me,Ge]=m.useState(""),[G,te]=m.useState(!0),[g,T]=m.useState(!1),[R,K]=m.useState(0),[Z,re]=m.useState([]),[le,$]=m.useState(!1),[oe,pe]=m.useState(null),[we,se]=m.useState(null),fe=o?.name||"Teacher",et=m.useRef(new Map);m.useEffect(()=>{const _=()=>k(window.innerWidth<1024);return _(),window.addEventListener("resize",_),()=>window.removeEventListener("resize",_)},[]),m.useEffect(()=>{if(!r)return;const _=r.uid;let ee=!0,ze;return(async()=>{te(!0);try{const Qe=await Wi(_);let je=Qe.map(mx);const ft=await Sm(_).catch(()=>[]),ot=new Map;ft.forEach(L=>{const V=at(L.classSectionId);V&&ot.set(V,L)}),je=je.map(L=>{const V=ot.get(at(L.classSectionId));if(!V)return L;const ke=gt({metadata:L.classMetadata,classSectionId:V.classSectionId||L.classSectionId,className:V.className||L.name,grade:V.grade||L.classMetadata?.grade,gradeLevel:V.gradeLevel||L.classMetadata?.gradeLevel,classification:V.classification||L.classMetadata?.classification,strand:V.strand||L.classMetadata?.strand,section:V.section||L.classMetadata?.section,schoolYear:V.schoolYear||L.classMetadata?.schoolYear,ownerTeacherId:V.ownerTeacherId||L.classMetadata?.ownerTeacherId,ownerTeacherName:V.ownerTeacherName||L.classMetadata?.ownerTeacherName,managerId:V.managerId||L.classMetadata?.managerId,managerName:V.managerName||L.classMetadata?.managerName});return{...L,name:ke.className||L.name,classSectionId:ke.classSectionId||L.classSectionId,classMetadata:ke,gradeLevel:ke.gradeLevel||L.gradeLevel,classification:ke.classification||L.classification,strand:ke.strand||L.strand,managerId:ke.managerId||L.managerId,managerName:ke.managerName||L.managerName}});const Ce=new Map,ps=new Map;Qe.forEach(L=>{const V=gt({metadata:L.classMetadata,classSectionId:L.classSectionId,className:L.name,grade:L.grade,gradeLevel:L.gradeLevel,classification:L.classification,strand:L.strand,section:L.section,schoolYear:L.schoolYear,ownerTeacherId:L.ownerTeacherId||L.teacherId,ownerTeacherName:L.ownerTeacherName,adviserTeacherId:L.adviserTeacherId||L.teacherId,adviserTeacherName:L.adviserTeacherName,managerId:L.managerId,managerName:L.managerName});Ce.set(L.id,V.className||L.name),ps.set(L.id,V);const ke=at(L.classSectionId);if(ke){const _e=ot.get(ke),Bt=gt({metadata:V,classSectionId:_e?.classSectionId||ke,className:_e?.className||V.className,grade:_e?.grade||V.grade,gradeLevel:_e?.gradeLevel||V.gradeLevel,classification:_e?.classification||V.classification,strand:_e?.strand||V.strand,section:_e?.section||V.section,schoolYear:_e?.schoolYear||V.schoolYear,ownerTeacherId:_e?.ownerTeacherId||V.ownerTeacherId,ownerTeacherName:_e?.ownerTeacherName||V.ownerTeacherName,managerId:_e?.managerId||V.managerId,managerName:_e?.managerName||V.managerName});Ce.set(ke,Bt.className||L.name),ps.set(ke,Bt)}});const Yt=L=>{const V=at(L.classSectionId||L.classroomId);if(!V)return L;const ke=ps.get(V);if(!ke)return L;const _e=gt({metadata:ke,classSectionId:L.classSectionId||ke.classSectionId,className:L.className||ke.className,grade:L.grade||ke.grade,gradeLevel:L.gradeLevel||ke.gradeLevel,classification:L.classification||ke.classification,strand:L.strand||ke.strand,section:L.section||ke.section,managerId:L.managerId||ke.managerId,managerName:L.managerName||ke.managerName});return{...L,className:_e.className||L.className,grade:_e.grade||L.grade,gradeLevel:_e.gradeLevel||L.gradeLevel,classification:_e.classification||L.classification,strand:_e.strand||L.strand,section:_e.section||L.section,classSectionId:_e.classSectionId||L.classSectionId,classMetadata:_e,managerId:_e.managerId||L.managerId,managerName:_e.managerName||L.managerName}},_s=(L,V,ke)=>Ce.get(L)||(V?Ce.get(V):void 0)||ke||"Unknown",za=Array.from(new Set([...ft.map(L=>L.classSectionId),...Qe.map(L=>L.classSectionId).filter(Boolean),...je.map(L=>L.classSectionId).filter(Boolean)].map(L=>(L||"").trim()).filter(L=>!!L))),[Kt,ra]=await Promise.all([cn(_).catch(L=>(console.warn("[TeacherDashboard] managed-student fetch failed:",L),[])),bm(_,za).catch(L=>(console.warn("[TeacherDashboard] registered-student fetch failed:",L),[]))]);let na=ra;if(ra.length===0&&Kt.length===0)try{const{collection:L,query:V,where:ke,getDocs:_e}=await _r(async()=>{const{collection:It,query:Pe,where:da,getDocs:ma}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{collection:It,query:Pe,where:da,getDocs:ma}},__vite__mapDeps([2,3])),{db:Bt}=await _r(async()=>{const{db:It}=await import("./index-pcr0VEFr.js").then(Pe=>Pe.b5);return{db:It}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),Ee=V(L(Bt,"users"),ke("role","==","student"));na=(await _e(Ee)).docs.map(It=>{const Pe=It.data();return{uid:It.id,name:String(Pe.name||Pe.displayName||"").trim()||"Student",email:String(Pe.email||"").trim(),lrn:Pe.lrn?String(Pe.lrn).trim():void 0,photo:Pe.photo?String(Pe.photo).trim():Pe.photoURL?String(Pe.photoURL).trim():void 0,grade:Pe.grade?String(Pe.grade).trim():void 0,section:Pe.section?String(Pe.section).trim():void 0,classSectionId:Pe.classSectionId?String(Pe.classSectionId).trim():void 0,adviserTeacherId:Pe.adviserTeacherId?String(Pe.adviserTeacherId).trim():void 0,role:"student",createdAt:Pe.createdAt||void 0}}).filter(It=>It.name!=="Student"||It.email)}catch(L){console.warn("[TeacherDashboard] fallback all-students fetch failed:",L)}const hs=new Map,oa=new Map,ia=new Map;Kt.forEach(L=>{hs.set(L.id,L),L.lrn&&oa.set(L.lrn.trim().toLowerCase(),L);const V=wo(L.name),ke=at(L.classSectionId||L.classroomId);V&&ia.set(`${V}|${ke}`,L)});const Hs=new Set,ur=na.map(L=>{const V=vm(L),ke=(L.lrn||"").trim().toLowerCase(),_e=wo(L.name),Bt=at(L.classSectionId);let Ee;if(hs.has(L.uid))Ee=hs.get(L.uid);else if(ke&&oa.has(ke))Ee=oa.get(ke);else if(_e){const Pe=`${_e}|${Bt}`;Ee=ia.get(Pe)}if(Ee){Hs.add(Ee.id);const Pe={...V,id:L.uid,accountUid:L.uid,email:V.email||Ee.email,lrn:V.lrn||Ee.lrn,name:V.name||Ee.name,avatar:V.avatar||Ee.avatar,riskLevel:Ee.riskLevel||V.riskLevel,avgQuizScore:Ee.avgQuizScore||V.avgQuizScore,engagementScore:Ee.engagementScore||V.engagementScore,attendance:Ee.attendance||V.attendance,assignmentCompletion:Ee.assignmentCompletion||V.assignmentCompletion,weakestTopic:Ee.weakestTopic||V.weakestTopic,struggles:Ee.struggles||V.struggles,lastActive:Ee.lastActive||V.lastActive,wri:Ee.wri??null,riskStatus:Ee.riskStatus??null,riskUpdatedAt:Ee.riskUpdatedAt??null,diagnosticScore:Ee.diagnosticScore??null,externalGradesAvg:Ee.externalGradesAvg??null,systemPerformanceAvg:Ee.systemPerformanceAvg??null,riskHistory:Ee.riskHistory,grade:V.grade||Ee.grade,gradeLevel:V.gradeLevel||Ee.gradeLevel,section:V.section||Ee.section,classSectionId:V.classSectionId||Ee.classSectionId,classroomId:V.classroomId||Ee.classroomId,classMetadata:Ee.classMetadata||V.classMetadata,hasRegisteredAccount:!0,source:"both"},da=at(Pe.classSectionId||Pe.classroomId),ma=_s(Pe.classroomId||"",da,Pe.className);return Yt(Rr(Pe,ma))}const Gs=at(V.classSectionId||V.classroomId),It=_s(V.classroomId||"",Gs,V.className);return Yt(Rr(V,It))}),xr=Kt.filter(L=>!Hs.has(L.id)).map(L=>{const V={...L,hasRegisteredAccount:!1,source:"import"},ke=at(V.classSectionId||V.classroomId),_e=_s(V.classroomId,ke,V.className);return Yt(Rr(V,_e))}),la=[...ur,...xr];if(!ee)return;q(L=>je.length===0&&L.length>0?L:je),Y(L=>la.length===0&&L.length>0?L:la),nt.getImportedClassOverview({limit:3e3,forceRefresh:R>0}).then(L=>{ee&&(L.warnings.length>0&&console.warn("Imported class overview warnings:",L.warnings.join(" ")),q(V=>Vo(V,L.classrooms.map(ux))),Y(V=>{if(V.length===0)return V;const ke=L.students.map(xx),_e=new Set;V.forEach(Ee=>_e.add(nr(Ee)));const Bt=ke.filter(Ee=>_e.has(nr(Ee)));return Bt.length===0?V:Wo(V,Bt)}))}).catch(L=>{console.warn("Imported class overview merge unavailable:",L)});const ca=Qe.map(L=>L.id);ca.length>0&&(ze=Cm(ca,L=>{ee&&$e(L.map(V=>({id:V.id,student:V.studentName,action:V.action,topic:V.topic,time:nl(V.timestamp.toDate()),type:V.type})))}))}catch(Qe){console.error("Failed to load teacher data:",Qe),me.error("Failed to load dashboard data")}finally{te(!1)}})(),()=>{ee=!1,ze&&ze()}},[r,R]),m.useEffect(()=>{if(!r)return;let _=!0;return km("",80).then(ee=>{_&&re(ee)}).catch(ee=>{console.warn("Failed to load teacher directory options:",ee)}),()=>{_=!1}},[r]),m.useEffect(()=>{if(M.length===0)return;(async()=>{if(M.length===0){Ge("");return}T(!0);try{const ee=M.map(Ne=>({name:Ne.name,engagementScore:Ne.engagementScore,avgQuizScore:Ne.avgScore,attendance:Ne.attendance,riskLevel:Ne.riskLevel})),ze=await nt.getDailyInsight({students:ee});Ge(ze.insight)}catch{Ge(`${M.filter(ee=>ee.riskLevel==="high").length} students are at high risk of falling behind. Review their progress in the analytics view.`)}finally{T(!1)}})()},[M]);const Fe=H.reduce((_,ee)=>_+ee.studentCount,0),Ke=H.reduce((_,ee)=>_+ee.atRiskCount,0),rt=H.length>0?Math.round(H.reduce((_,ee)=>_+ee.avgScore,0)/H.length):0,Rt=[{name:"High Risk",value:M.filter(_=>_.riskLevel==="high").length,color:"#FF8B8B"},{name:"Medium Risk",value:M.filter(_=>_.riskLevel==="medium").length,color:"#F08386"},{name:"Low Risk",value:M.filter(_=>_.riskLevel==="low").length,color:"#75D06A"}],St={};M.forEach(_=>{_.weakestTopic&&_.weakestTopic!=="N/A"&&(St[_.weakestTopic]||(St[_.weakestTopic]={total:0,sum:0}),St[_.weakestTopic].total+=1,St[_.weakestTopic].sum+=_.avgScore)});const Ft=Object.entries(St).map(([_,ee])=>({topic:_,score:Math.round(ee.sum/ee.total)})).sort((_,ee)=>_.score-ee.score).slice(0,6),ss=_=>{w(_),i("analytics")},P=_=>{B(_),i("intervention")},Ae=()=>{B(null),i("analytics")},Ye=()=>{w(null),B(null),i("dashboard")},vt=async(_,ee)=>{if(!r){me.error("Unable to assign manager: teacher context is missing.");return}const ze=ls(_.classMetadata?.className||_.name),Ne=gt({metadata:_.classMetadata,classSectionId:_.classSectionId,className:_.name,grade:_.classMetadata?.grade||ze.grade,gradeLevel:_.classMetadata?.gradeLevel,classification:_.classMetadata?.classification,strand:_.classMetadata?.strand,section:_.classMetadata?.section||ze.section,schoolYear:_.classMetadata?.schoolYear||String(new Date().getFullYear()),ownerTeacherId:_.classMetadata?.ownerTeacherId||r.uid,ownerTeacherName:_.classMetadata?.ownerTeacherName||fe,adviserTeacherId:_.classMetadata?.adviserTeacherId||r.uid,adviserTeacherName:_.classMetadata?.adviserTeacherName||fe,managerId:ee.uid,managerName:ee.name}),Qe=Ne.classSectionId||Lt(Ne.grade||ze.grade,Ne.section||ze.section);if(!Qe){me.error("Unable to assign manager: missing class section ID.");return}$(!0);try{await qi({classSectionId:Qe,className:Ne.className||_.name,grade:Ne.grade||ze.grade,gradeLevel:Ne.gradeLevel||us(Ne.grade||ze.grade)||Ne.grade||ze.grade,classification:Ne.classification||sa(Ne.gradeLevel||Ne.grade)||void 0,strand:Ne.strand||aa(Ne.className,Ne.section)||void 0,section:Ne.section||ze.section,schoolYear:Ne.schoolYear||String(new Date().getFullYear()),ownerTeacherId:Ne.ownerTeacherId||r.uid,ownerTeacherName:Ne.ownerTeacherName||fe,managerId:ee.uid,managerName:ee.name});const je=gt({metadata:Ne,classSectionId:Qe,managerId:ee.uid,managerName:ee.name}),ft=at(Qe);q(ot=>ot.map(Ce=>at(Ce.classSectionId)!==ft?Ce:{...Ce,name:je.className||Ce.name,classSectionId:je.classSectionId||Ce.classSectionId,classMetadata:je,gradeLevel:je.gradeLevel||Ce.gradeLevel,classification:je.classification||Ce.classification,strand:je.strand||Ce.strand,managerId:ee.uid,managerName:ee.name})),Y(ot=>ot.map(Ce=>{if(at(Ce.classSectionId||Ce.classroomId)!==ft)return Ce;const Yt=gt({metadata:Ce.classMetadata,classSectionId:je.classSectionId||Ce.classSectionId,className:Ce.className||je.className,grade:Ce.grade||je.grade,gradeLevel:Ce.gradeLevel||je.gradeLevel,classification:Ce.classification||je.classification,strand:Ce.strand||je.strand,section:Ce.section||je.section,managerId:ee.uid,managerName:ee.name});return{...Ce,classMetadata:Yt,gradeLevel:Yt.gradeLevel||Ce.gradeLevel,classification:Yt.classification||Ce.classification,strand:Yt.strand||Ce.strand,managerId:ee.uid,managerName:ee.name}})),w(ot=>!ot||at(ot.classSectionId)!==ft?ot:{...ot,classMetadata:je,managerId:ee.uid,managerName:ee.name,gradeLevel:je.gradeLevel||ot.gradeLevel,classification:je.classification||ot.classification,strand:je.strand||ot.strand}),me.success(`Assigned ${ee.name} as section manager.`)}catch(je){console.error("Failed to assign class manager:",je),me.error(je instanceof Error?je.message:"Failed to assign class manager")}finally{$(!1)}},xs=m.useCallback(_=>{pe({rosterId:_.id,name:_.name,lrn:_.lrn,email:_.email,grade:_.grade,section:_.section,classSectionId:_.classSectionId})},[]),Ot=m.useCallback(_=>{Y(ee=>ee.map(ze=>ze.id===_.rosterId?{...ze,hasRegisteredAccount:!0,source:"both",accountUid:_.uid,email:_.email||ze.email}:ze)),K(ee=>ee+1)},[]),Wt=m.useCallback(async(_,ee)=>{if(!r){me.error("Cannot reassign section without an authenticated teacher.");return}const ze=r.uid,Ne=(ee.classSectionId||"").trim();if(!Ne){me.error("Pick a target section first.");return}se(_.id);try{await wm({studentId:_.accountUid||_.id,isRegisteredAccount:!!_.hasRegisteredAccount,newClassSectionId:Ne,newGrade:ee.grade,newSection:ee.section,previousClassSectionId:_.classSectionId,teacherId:ze,teacherName:fe,schoolYear:_.classMetadata?.schoolYear||String(new Date().getFullYear())}),Y(Qe=>Qe.map(je=>{if(je.id!==_.id)return je;const ft=gt({metadata:je.classMetadata,classSectionId:Ne,className:je.className,grade:ee.grade,section:ee.section});return{...je,grade:ee.grade,section:ee.section,classSectionId:Ne,classroomId:Ne,classMetadata:ft}})),me.success(`Moved ${_.name} to ${ee.grade} - ${ee.section}.`)}catch(Qe){console.error("Section reassignment failed:",Qe),me.error(Qe instanceof Error?Qe.message:"Failed to reassign section.")}finally{se(null)}},[r,fe]);m.useEffect(()=>{const _=()=>{const ee=window.innerWidth<1024;k(ee),ee?c(!1):h(!1)};return _(),window.addEventListener("resize",_),()=>window.removeEventListener("resize",_)},[]),m.useEffect(()=>{b&&h(!1)},[n,b]);const qt=_=>{i(_),w(null),B(null)},Rs=m.useMemo(()=>{if(!y)return;if(y.classMetadata?.classSectionId)return y.classMetadata.classSectionId||void 0;if(y.classSectionId)return y.classSectionId;const _=ls(y.classMetadata?.className||y.name);return Lt(_.grade,_.section)||void 0},[y]),st=m.useMemo(()=>y||null,[y]),Aa=m.useMemo(()=>{if(!st)return;const _=H.findIndex(ee=>ee.id===st.id);return ar[Math.max(0,_)%ar.length]},[st,H]),_t=m.useMemo(()=>{if(!st)return M;const _=(st.id||"").trim().toLowerCase(),ee=at(st.classSectionId),ze=(st.name||"").trim().toLowerCase();return M.filter(Ne=>{const Qe=at(Ne.classroomId),je=at(Ne.classSectionId),ft=(Ne.className||"").trim().toLowerCase();return ee&&(je===ee||Qe===ee)||_&&(Qe===_||je===_)||ze&&ft===ze})},[st,M]);return G?e.jsx(yl,{message:"Loading dashboard..."}):e.jsxs("div",{className:"relative flex h-screen w-full bg-background overflow-hidden",children:[b&&f&&e.jsx("button",{"aria-label":"Close navigation",className:"fixed inset-0 z-30 bg-slate-900/40 backdrop-blur-[1px]",onClick:()=>h(!1)}),e.jsxs(Re.aside,{initial:!1,animate:{width:b?280:l&&!d?80:280,x:b?f?0:-300:0},transition:{type:"spring",stiffness:360,damping:34},onMouseEnter:()=>!b&&l&&u(!0),onMouseLeave:()=>u(!1),className:"fixed inset-y-0 left-0 z-40 bg-[#f7f9fc] rounded-3xl border border-[#dde3eb] flex flex-col shadow-sm lg:static lg:z-auto p-5",children:[e.jsxs("div",{className:`mb-8 flex items-center ${l&&!d?"justify-center":"justify-between"}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12 bg-gradient-to-r from-[#7274ED] to-[#9956DE] rounded-2xl flex items-center justify-center shadow-md flex-shrink-0",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"MathPulse AI",className:"w-10 h-10 object-contain drop-shadow-md"})}),(!l||d)&&e.jsx("div",{children:e.jsx("h1",{className:"text-base font-semibold font-display text-[#0a1628] whitespace-nowrap",children:"MathPulse AI"})})]}),!b&&(!l||d)&&e.jsx(Re.button,{whileHover:{scale:1.1},whileTap:{scale:.95},onClick:()=>c(!l),className:"p-2 hover:bg-[#dde3eb] rounded-lg transition-colors text-[#5a6578]","aria-label":l?"Expand sidebar":"Collapse sidebar",children:l?e.jsx(ys,{size:20}):e.jsx(Ss,{size:20})}),b&&e.jsx("button",{onClick:()=>h(!1),className:"p-2 hover:bg-[#dde3eb] rounded-lg transition-colors text-[#5a6578]","aria-label":"Close navigation",children:e.jsx(cs,{size:20})})]}),e.jsxs("nav",{className:"flex-1 space-y-5",children:[e.jsxs("div",{children:[l&&!d?e.jsx("div",{className:"px-4 mb-2 flex items-center gap-2",children:e.jsx("div",{className:"flex-1 h-[1px] bg-[#dde3eb]"})}):e.jsx("p",{className:"px-4 mb-2 text-[10px] font-semibold text-[#5a6578] uppercase tracking-widest",children:"Overview"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(Ns,{icon:zl,label:"Dashboard",active:n==="dashboard",collapsed:l&&!d,onClick:Ye,forceExpanded:b}),e.jsx(Ns,{icon:Ds,label:"Class Analytics",active:n==="analytics"||n==="intervention",collapsed:l&&!d,onClick:()=>qt("analytics"),forceExpanded:b})]})]}),e.jsxs("div",{children:[l&&!d?e.jsx("div",{className:"px-4 mb-2 flex items-center gap-2",children:e.jsx("div",{className:"flex-1 h-[1px] bg-[#dde3eb]"})}):e.jsx("p",{className:"px-4 mb-2 text-[10px] font-semibold text-[#5a6578] uppercase tracking-widest",children:"Students"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(Ns,{icon:vs,label:"Topic Mastery",active:n==="topic_mastery",collapsed:l&&!d,onClick:()=>qt("topic_mastery"),forceExpanded:b}),e.jsx(Ns,{icon:os,label:"Competency",active:n==="competency",collapsed:l&&!d,onClick:()=>qt("competency"),forceExpanded:b})]})]}),e.jsxs("div",{children:[l&&!d?e.jsx("div",{className:"px-4 mb-2 flex items-center gap-2",children:e.jsx("div",{className:"flex-1 h-[1px] bg-[#dde3eb]"})}):e.jsx("p",{className:"px-4 mb-2 text-[10px] font-semibold text-[#5a6578] uppercase tracking-widest",children:"Tools"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(Ns,{icon:Ll,label:"Data Import",active:n==="import",collapsed:l&&!d,onClick:()=>i("import"),forceExpanded:b}),e.jsx(Ns,{icon:ii,label:"AI Quiz Maker",active:n==="quiz_maker",collapsed:l&&!d,onClick:()=>i("quiz_maker"),forceExpanded:b}),e.jsx(Ns,{icon:Gt,label:"Question Bank",active:n==="question_bank",collapsed:l&&!d,onClick:()=>i("question_bank"),forceExpanded:b}),e.jsx(Ns,{icon:Ya,label:"Calendar",active:n==="calendar",collapsed:l&&!d,onClick:()=>i("calendar"),forceExpanded:b})]})]})]}),e.jsxs("div",{className:"space-y-2 border-t border-[#dde3eb] pt-4",children:[e.jsxs(Re.button,{whileHover:{x:2},whileTap:{scale:.98},className:`w-full flex items-center gap-3 px-4 py-3 rounded-2xl text-[#5a6578] font-semibold border border-transparent hover:bg-[#dde3eb] hover:border-[#dde3eb] hover:text-[#0a1628] transition-all duration-200 whitespace-nowrap ${l&&!d?"justify-center":""}`,onClick:a,title:l&&!d?"Settings":"",children:[e.jsx(Dl,{size:18,strokeWidth:2,className:"flex-shrink-0"}),(!l||d)&&e.jsx("span",{className:"font-body text-xs",children:"Settings"})]}),e.jsx("div",{className:"text-[#5a6578]",children:e.jsx($l,{onClick:()=>S(!0),collapsed:l&&!d})})]})]}),e.jsxs("div",{className:"flex-1 flex overflow-hidden bg-gradient-to-br from-[#eef2ff] via-[#f5f3ff] to-[#fff7ed]",children:[e.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[["dashboard","analytics","intervention","competency","topic_mastery","calendar","notifications","question_bank","import","quiz_maker"].includes(n)&&e.jsx("header",{className:"bg-transparent border-b border-[#e2e8f0]/40 px-[24px] xl:px-[32px] pt-[24px] pb-[16px] flex-shrink-0 z-30",children:e.jsxs("div",{className:"flex flex-row items-center justify-between gap-2 mb-0",children:[e.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:[b&&e.jsx("button",{onClick:()=>h(!0),className:"mt-1 p-2 rounded-lg border border-border text-muted-foreground hover:text-[#9956DE] hover:border-[#9956DE]/30 hover:bg-[#9956DE]/12 transition-colors","aria-label":"Open navigation",children:e.jsx(Sl,{size:18})}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-lg sm:text-[26px] font-bold text-[#1e293b] tracking-tight leading-tight truncate",children:[n==="dashboard"&&"Teacher Dashboard",n==="analytics"&&"Class Analytics",n==="intervention"&&"Intervention Center",n==="competency"&&"Student Competency",n==="topic_mastery"&&"Topic Mastery",n==="calendar"&&"Academic Calendar",n==="notifications"&&"Notifications",n==="question_bank"&&"Question Bank",n==="import"&&"Data Import",n==="quiz_maker"&&"AI Quiz Maker"]}),e.jsxs("p",{className:"text-[13px] text-[#64748b] mt-1",children:[n==="dashboard"&&`Welcome back, ${fe}`,n==="analytics"&&"Analyze performance and risk across your classes.",n==="intervention"&&"Identify and support students who need immediate help.",n==="competency"&&"Track individual student progress against learning goals.",n==="topic_mastery"&&"Overview of student mastery levels across different math topics.",n==="calendar"&&"Manage your schedules and academic events.",n==="notifications"&&"Stay updated with student activity and system alerts.",n==="question_bank"&&"Manage and create math questions for your quizzes.",n==="import"&&"Upload class records and materials to power AI analytics.",n==="quiz_maker"&&"Create AI-powered quizzes based on your curriculum."]})]}),n==="dashboard"&&e.jsxs("div",{className:"hidden xl:flex items-center gap-2 ml-4 mt-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#9956DE]/12 border border-[#9956DE]/30 rounded-lg",children:[e.jsx(os,{size:13,className:"text-[#9956DE]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#9956DE]",children:[Fe," students"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#F08386]/12 border border-[#F08386]/30 rounded-lg",children:[e.jsx(Xs,{size:13,className:"text-[#F08386]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#C65E63]",children:[Ke," at risk"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-[#75D06A]/14 border border-[#75D06A]/35 rounded-lg",children:[e.jsx(Ta,{size:13,className:"text-[#75D06A]"}),e.jsxs("span",{className:"text-xs font-display font-semibold text-[#4D9F46]",children:[rt,"% avg"]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("div",{className:"relative group",children:[e.jsxs("button",{onClick:()=>{J(!0),F(!0)},className:"relative w-10 h-10 flex items-center justify-center bg-[#eef2ff]/80 hover:bg-[#e0e7ff] rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#a5b4fc]/60 text-[#4f46e5] hover:border-[#818cf8] transition-colors cursor-pointer hover:scale-[1.02]","aria-label":"View AI Insight",children:[e.jsx($s,{size:18}),!E&&Me&&e.jsx("div",{className:"absolute top-2.5 right-2.5 w-2 h-2 bg-rose-500 rounded-full border border-white animate-pulse"})]}),e.jsx("span",{className:"absolute -bottom-8 left-1/2 -translate-x-1/2 text-[10px] bg-[#1e293b] text-white px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-50 pointer-events-none",children:"AI Insight"})]}),b&&n==="dashboard"&&e.jsx("button",{onClick:()=>he(_=>!_),className:`relative w-10 h-10 flex items-center justify-center rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border transition-colors cursor-pointer hover:scale-[1.02] ${xe?"bg-[#818cf8] border-[#6366f1] text-white":"bg-white/60 hover:bg-white/80 border-white/50 text-[#64748b] hover:text-[#1e293b]"}`,"aria-label":xe?"Close calendar panel":"Open calendar panel",title:xe?"Close calendar":"View calendar",children:e.jsx(Ya,{size:18})}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>ne(!ce),className:"relative w-10 h-10 flex items-center justify-center bg-white/60 hover:bg-white/80 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 text-[#64748b] hover:text-[#1e293b] transition-colors cursor-pointer hover:scale-[1.02]","aria-label":"View notifications",title:"Notifications",children:[e.jsx(Ja,{size:18}),v>0&&e.jsx("span",{className:"absolute top-2.5 right-2.5 w-2 h-2 bg-rose-500 rounded-full border border-white"})]}),e.jsx(Ml,{isOpen:ce,onClose:()=>ne(!1),onViewAll:()=>i("notifications")})]}),n!=="dashboard"&&e.jsxs("div",{onClick:s,className:"flex items-center gap-2 bg-white/60 px-4 py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50 cursor-pointer hover:bg-white/80 transition-colors h-10 hover:scale-[1.02]",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-indigo-100 overflow-hidden shrink-0",children:e.jsx("img",{src:o?.photo||`https://ui-avatars.com/api/?name=${encodeURIComponent(fe)}&background=e0e7ff&color=4f46e5`,alt:"Profile",className:"w-full h-full object-cover"})}),e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:fe})]})]})]})}),e.jsx("main",{className:`flex-1 flex flex-col ${n==="intervention"||n==="analytics"?"overflow-hidden":"overflow-y-auto"}`,children:e.jsxs(Et,{mode:"wait",children:[n==="dashboard"&&e.jsx(gx,{classes:H,liveActivity:ae,onViewClass:ss,onViewAllClasses:()=>i("analytics"),onViewActivityStudent:_=>{const ee=M.find(ze=>ze.name===_);ee&&P(ee)},dailyInsight:Me,insightLoading:g,isInsightDismissed:E,onDismissInsight:()=>F(!0),onOpenInsightModal:()=>{J(!0),F(!0)},totalStudents:Fe,totalAtRisk:Ke,avgPerformance:rt,onCreateClass:()=>N(!0)}),n==="analytics"&&st&&e.jsx(wx,{selectedClass:st,students:_t,allClasses:H,riskDistribution:Rt,topicPerformance:Ft,onViewStudent:P,onCreateAccount:xs,onReassignSection:Wt,reassignBusyId:we,onBack:()=>w(null),teacherOptions:Z,managerUpdating:le,onAssignManager:_=>vt(st,_),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,classColor:Aa,insightDismissed:E,onOpenInsightModal:()=>J(!0),onAddStudents:()=>z(!0)}),n==="analytics"&&!st&&H.length>0&&e.jsx(Ao,{classes:H,onSelectClass:ss,onOpenNotifications:()=>i("notifications"),onOpenProfile:s,insightDismissed:E,onOpenInsightModal:()=>J(!0),onCreateClass:()=>N(!0)}),n==="analytics"&&!st&&H.length===0&&e.jsx(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-6",children:e.jsxs("div",{className:"bg-card border border-border rounded-2xl p-8 shadow-sm max-w-2xl",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#9956DE]/20 text-[#9956DE] flex items-center justify-center mb-4",children:e.jsx(Ds,{size:24})}),e.jsx("h2",{className:"text-2xl font-display font-semibold text-foreground mb-2",children:"Class Analytics"}),e.jsx("p",{className:"text-sm text-muted-foreground font-body leading-relaxed mb-4",children:"No classes available yet. Create a class or import class records to unlock analytics views."}),e.jsxs(xt,{onClick:()=>N(!0),className:"bg-[#9956DE] hover:bg-[#7c3aed] text-white",children:[e.jsx(Js,{size:16,className:"mr-1.5"}),"Create Class"]})]})}),n==="intervention"&&A&&e.jsx(Nx,{student:A,teacherId:r?.uid||"",teacherName:fe,initialCache:et.current.get(A.id),onCacheUpdate:(_,ee)=>et.current.set(_,ee),onStudentUpdated:_=>{const ee=A?Ur(A):null;B(_),Y(ze=>ze.map(Ne=>{const Qe=Ur(Ne),je=ee?Qe===ee:!1,ft=Ne.id===_.id&&at(Ne.classSectionId)===at(_.classSectionId);return je||ft?_:Ne}))},onBack:Ae,onNavigateToQuizMaker:_=>{i("quiz_maker"),_&&sessionStorage.setItem("quizMakerInitialTab",_)}}),n==="topic_mastery"&&e.jsx(Qm,{classSectionId:Rs,onOpenNotifications:()=>i("notifications"),onOpenProfile:s}),n==="competency"&&st&&e.jsx(qm,{classSectionId:Rs,className:y?.name,fallbackStudents:M,onBack:()=>w(null),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,insightDismissed:E,onOpenInsightModal:()=>J(!0)}),n==="competency"&&!st&&H.length>0&&e.jsx(Ao,{classes:H,onSelectClass:_=>w(_),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,insightDismissed:E,onOpenInsightModal:()=>J(!0),viewType:"competency"}),n==="competency"&&!st&&H.length===0&&e.jsx(fx,{icon:os,title:"Student Competency",description:"No classes available yet. Import class records to view competency breakdowns."}),n==="import"&&e.jsx(ix,{classSectionId:Rs,className:y?.name,classMetadata:y?.classMetadata,students:M,teacherId:r?.uid||"",teacherName:fe,onStudentsUpdated:_=>Y(_),onBackToClasses:()=>i("dashboard"),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,onImportedClassRecords:_=>{const ee=_.students.map(Ce=>hx(Ce,_.classSectionId,_.className,_.classMetadata)),ze=gt({metadata:_.classMetadata,classSectionId:_.classSectionId,className:_.className}),Ne=ze.classSectionId||"imported_class",Qe=ze.className||"Imported Class",je=ee.filter(Ce=>Ce.riskLevel==="high").length,ft=ee.length>0?Math.round(ee.reduce((Ce,ps)=>Ce+ps.avgScore,0)/ee.length):0,ot={id:Ne,name:Qe,classSectionId:Ne,classMetadata:{...ze,classSectionId:Ne,className:Qe},schedule:"Mon-Fri",studentCount:ee.length,avgScore:ft,atRiskCount:je,riskLevel:je>=5?"high":je>=2?"medium":"low"};Y(Ce=>Wo(Ce,ee)),q(Ce=>Vo(Ce,[ot]))},onDataChanged:()=>K(_=>_+1)}),n==="notifications"&&e.jsx(Km,{liveActivity:ae,atRiskStudents:M.filter(_=>_.riskLevel==="high").map(_=>({name:_.name,riskLevel:_.riskLevel,weakestTopic:_.weakestTopic})),onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,teacherName:fe}),n==="calendar"&&e.jsx(du,{classes:H,teacherId:r?.uid}),n==="quiz_maker"&&e.jsx(Yi,{onBack:()=>{const _=sessionStorage.getItem("quizMakerReturnTo");sessionStorage.removeItem("quizMakerReturnTo"),sessionStorage.removeItem("quizMakerInitialTab"),i(_==="intervention"?"intervention":"dashboard")},onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,teacherName:fe}),n==="question_bank"&&e.jsx(Hm,{onOpenNotifications:()=>i("notifications"),onOpenProfile:s,onOpenInsightModal:()=>{J(!0),F(!0)},userPhoto:o?.photo,teacherName:fe})]})})]}),n==="dashboard"&&!b&&e.jsx(Yo,{onViewCalendar:()=>i("calendar"),onOpenProfile:s,userProfile:o,teacherName:fe,liveActivity:ae})]}),e.jsx(Et,{children:b&&n==="dashboard"&&xe&&e.jsxs(e.Fragment,{children:[e.jsx(Re.button,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"fixed inset-0 z-40 bg-slate-900/40 backdrop-blur-[2px]","aria-label":"Close calendar panel",onClick:()=>he(!1)},"cal-backdrop"),e.jsx(Re.div,{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"},transition:{type:"spring",stiffness:320,damping:32},className:"fixed top-0 right-0 bottom-0 z-50 w-[300px] max-w-[85vw] shadow-2xl",children:e.jsx(Yo,{onViewCalendar:()=>{i("calendar"),he(!1)},onOpenProfile:()=>{s?.(),he(!1)},userProfile:o,teacherName:fe,liveActivity:ae})},"cal-drawer")]})}),e.jsx(Et,{children:X&&e.jsx("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs(Re.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"bg-white rounded-2xl shadow-xl w-full max-w-lg overflow-hidden border border-slate-200",children:[e.jsxs("div",{className:"p-4 border-b border-slate-100 flex items-center justify-between bg-slate-50/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600",children:e.jsx($s,{size:16})}),e.jsx("h3",{className:"font-semibold text-slate-800",children:"Detailed AI Insight"})]}),e.jsx("button",{onClick:()=>{J(!1)},className:"p-2 text-slate-400 hover:text-slate-600 hover:bg-slate-100 rounded-full transition-colors",children:e.jsx(cs,{size:18})})]}),e.jsx("div",{className:"p-6",children:e.jsx("div",{className:"text-sm text-slate-600 leading-relaxed",children:e.jsx(tc,{children:Me?.replace(/[*_]*\s*\(?Word\s*count\s*:\s*[*_]*\s*\d+\)?\s*[*_]*/gi,"").trim()||`**${Ke} students (${Fe>0?Math.round(Ke/Fe*100):0}%)** are currently at high risk of falling behind in recent topics. Review their progress in the analytics view to plan interventions.`})})}),e.jsx("div",{className:"p-4 border-t border-slate-100 bg-slate-50 flex justify-end gap-2",children:e.jsx("button",{onClick:()=>{J(!1)},className:"px-4 py-2 text-sm font-medium text-slate-600 hover:text-slate-800 hover:bg-slate-200 rounded-lg transition-colors",children:"Minimize to Menu"})})]})})}),e.jsx(Tl,{isOpen:j,onClose:()=>S(!1),onConfirm:t,title:"Logout",message:"Are you sure you want to logout?",confirmText:"Logout",cancelText:"Cancel"}),e.jsx(Im,{open:p,onClose:()=>N(!1),onCreated:()=>K(_=>_+1),teacherName:fe}),e.jsx(Tm,{open:C,onClose:()=>z(!1),onAdded:()=>K(_=>_+1),grade:st?.gradeLevel||st?.classMetadata?.grade||"Grade 11",section:st?.classMetadata?.section||st?.name?.split(" - ")[1]||"",teacherName:fe,existingStudentUids:_t.map(_=>_.id)}),e.jsx(dx,{isOpen:!!oe,onClose:()=>pe(null),seed:oe,adviserTeacherId:r?.uid||"",adviserTeacherName:fe,schoolYear:oe?M.find(_=>_.id===oe.rosterId)?.classMetadata?.schoolYear||String(new Date().getFullYear()):void 0,onCreated:Ot})]})},Ns=({icon:t,label:s,active:a,collapsed:r,forceExpanded:o=!1,onClick:n})=>e.jsxs(Re.button,{onClick:n,whileHover:{x:2},whileTap:{scale:.98},className:`w-full flex items-center gap-3 px-4 py-3 rounded-2xl cursor-pointer transition-all duration-200 border whitespace-nowrap ${r&&!o?"justify-center":""} ${a?"bg-[#9956DE]/12 border-[#9956DE]/30 shadow-sm text-[#9956DE]":"bg-transparent border-transparent text-[#5a6578] hover:bg-[#dde3eb] hover:border-[#dde3eb] hover:text-[#0a1628]"}`,children:[e.jsx(t,{size:18,strokeWidth:a?2.5:2,className:"flex-shrink-0"}),(!r||o)&&e.jsx("span",{className:"font-body font-semibold text-xs",children:s}),a&&!r&&e.jsx(Re.div,{layoutId:"sidebar-active-indicator",className:"ml-auto w-2 h-2 rounded-full bg-[#9956DE]",transition:{type:"spring",duration:.4}})]}),fx=({icon:t,title:s,description:a})=>e.jsx(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-6",children:e.jsxs("div",{className:"bg-card border border-border rounded-2xl p-8 shadow-sm max-w-2xl",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#9956DE]/20 text-[#9956DE] flex items-center justify-center mb-4",children:e.jsx(t,{size:24})}),e.jsx("h2",{className:"text-2xl font-display font-semibold text-foreground mb-2",children:s}),e.jsx("p",{className:"text-sm text-muted-foreground font-body leading-relaxed",children:a})]})}),gx=({classes:t,liveActivity:s,onViewClass:a,onViewAllClasses:r,onViewActivityStudent:o,dailyInsight:n,insightLoading:i,isInsightDismissed:l,onDismissInsight:c,onOpenInsightModal:d,totalStudents:u,totalAtRisk:f,avgPerformance:h,onCreateClass:b})=>{const k=u>0?Math.round(f/u*100):0,j=u>0?Math.round((u-f)/u*100):0;return e.jsxs(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-3 sm:p-6 space-y-4",children:[!l&&n&&e.jsxs("div",{onClick:d,className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] border border-white p-[14px_16px] sm:p-[18px_20px] flex flex-col sm:flex-row items-start sm:items-center gap-3 sm:gap-4 shadow-[0_1px_4px_rgba(0,0,0,0.04)] cursor-pointer hover:shadow-md transition-shadow group",children:[e.jsxs("div",{className:"relative flex-shrink-0",children:[e.jsx("div",{className:"absolute -inset-[5px] rounded-full border-2 border-[#a5b4fc] opacity-50 animate-pulse"}),e.jsx("div",{className:"w-[46px] h-[46px] rounded-full bg-[#eef2ff] border-2 border-[#c7d2fe] flex items-center justify-center text-[#4f46e5] text-xl relative overflow-hidden group-hover:scale-[1.05] transition-transform",children:e.jsx("img",{src:"/avatar/avatar_icon.png",alt:"AI Mascot",className:"w-[85%] h-[85%] object-contain"})})]}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"text-[13.5px] font-semibold text-[#1e1b4b] flex flex-wrap items-center gap-2 mb-1",children:[e.jsx($s,{size:14,className:"text-[#818cf8]"}),"MathPulse AI insight",e.jsx("span",{className:"bg-[#fee2e2] text-[#b91c1c] text-[10px] font-semibold px-2 py-0.5 rounded-full border border-[#fca5a5]",children:"Attention needed"})]}),e.jsx("div",{className:"text-[12.5px] text-[#475569] leading-[1.55]",children:"Some students may be at risk of falling behind. Click to view detailed analysis."})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0 self-end sm:self-auto",children:[e.jsx("button",{onClick:S=>{S.stopPropagation(),c()},className:"px-[15px] py-[7px] rounded-[10px] text-xs font-medium cursor-pointer border border-[#e2e8f0] bg-white text-[#475569] hover:bg-[#f8fafc] transition-colors",children:"Dismiss"}),e.jsx("button",{onClick:S=>{S.stopPropagation(),r()},className:"px-[15px] py-[7px] rounded-[10px] text-xs font-medium cursor-pointer border border-[#4f46e5] bg-[#4f46e5] text-white shadow-[0_2px_8px_rgba(79,70,229,0.13)] hover:bg-[#4338ca] transition-colors",children:"Review students"})]})]}),e.jsxs("div",{className:"grid grid-cols-4 gap-1.5 sm:gap-3",children:[e.jsxs("div",{className:"group relative overflow-hidden bg-[#10b981] shadow-[0_4px_16px_rgba(16,185,129,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"Total students"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(os,{size:15})})]}),e.jsx("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:u}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Added this year"}),e.jsx("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:u>0?"+1":"0"})]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#0ea5e9] shadow-[0_4px_16px_rgba(14,165,233,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"Class average"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(vs,{size:15})})]}),e.jsxs("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:[h,"%"]}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Vs. last month"}),e.jsx("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:"+2.5%"})]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#a855f7] shadow-[0_4px_16px_rgba(168,85,247,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"Engage­ment"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(si,{size:15})})]}),e.jsxs("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:[j,"%"]}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Active participants"}),e.jsx("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:Math.round(j/100*u)})]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#f97316] shadow-[0_4px_16px_rgba(249,115,22,0.13)] rounded-sm sm:rounded-lg p-[10px] sm:p-[15px] text-white flex flex-col gap-[6px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[9px] sm:text-[11px] opacity-90 leading-tight",children:"At risk"}),e.jsx("div",{className:"hidden sm:flex bg-white/20 p-1.5 rounded-lg",children:e.jsx(or,{size:15})})]}),e.jsx("div",{className:"relative z-10 text-[18px] sm:text-[26px] font-semibold tracking-tight",children:f}),e.jsxs("div",{className:"relative z-10 border-t border-white/30 pt-1.5 sm:pt-2 flex justify-between items-center text-[9px] sm:text-[10px] opacity-90",children:[e.jsx("span",{className:"hidden sm:block",children:"Requires attention"}),e.jsxs("span",{className:"bg-black/15 px-[5px] sm:px-[7px] py-[2px] rounded font-semibold",children:[k,"%"]})]})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] border border-white p-[18px_20px] shadow-[0_1px_4px_rgba(0,0,0,0.04)]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-[14px]",children:[e.jsx("h2",{className:"text-[15px] font-semibold text-[#1e293b]",children:"My classes"}),e.jsx("span",{onClick:r,className:"text-[12px] text-[#10b981] font-semibold cursor-pointer hover:underline",children:"View all"})]}),e.jsxs("div",{className:"space-y-[9px]",children:[t.length===0&&e.jsxs("div",{className:"text-center py-4",children:[e.jsx("p",{className:"text-sm text-slate-500 mb-3",children:"No classes imported yet."}),b&&e.jsx("button",{onClick:b,className:"text-sm text-[#9956DE] font-semibold hover:underline",children:"+ Create a class"})]}),t.map((S,p)=>{const N=[{bg:"bg-[#f3e8ff]",text:"text-[#a855f7]",borderHover:"hover:border-[#d8b4fe]",stripe:"bg-[#a855f7]"},{bg:"bg-[#eff6ff]",text:"text-[#3b82f6]",borderHover:"hover:border-[#bfdbfe]",stripe:"bg-[#3b82f6]"},{bg:"bg-[#f0fdf4]",text:"text-[#22c55e]",borderHover:"hover:border-[#bbf7d0]",stripe:"bg-[#22c55e]"},{bg:"bg-[#fff7ed]",text:"text-[#f97316]",borderHover:"hover:border-[#fed7aa]",stripe:"bg-[#f97316]"},{bg:"bg-[#fff1f2]",text:"text-[#f43f5e]",borderHover:"hover:border-[#fecdd3]",stripe:"bg-[#f43f5e]"}],C=N[p%N.length];return e.jsxs("div",{onClick:()=>a(S),className:`relative overflow-hidden flex items-center gap-3 p-[12px_13px] pl-[16px] border border-[#f1f5f9] rounded-[14px] cursor-pointer ${C.borderHover} hover:shadow-[0_2px_10px_rgba(0,0,0,0.04)] hover:bg-[#fafbff] transition-all group`,children:[e.jsx("div",{className:`absolute left-0 top-0 bottom-0 w-[5px] ${C.stripe}`}),e.jsx("div",{className:`w-[38px] h-[38px] rounded-[10px] flex items-center justify-center flex-shrink-0 text-[17px] ${C.bg} ${C.text} group-hover:scale-110 transition-transform duration-300`,children:e.jsx(Gt,{size:18})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"text-[12.5px] font-medium text-[#1e293b]",children:S.name}),e.jsx("div",{className:"text-[11px] text-[#94a3b8] mt-[1px]",children:S.classification||"High School"})]}),e.jsx("div",{className:"hidden sm:block text-[12px] text-[#64748b] min-w-[65px]",children:S.schedule||"Mon-Fri"}),e.jsxs("div",{className:"hidden sm:block text-[12px] text-[#64748b] min-w-[85px]",children:[S.studentCount," students"]}),e.jsx("span",{className:`text-[10px] font-semibold px-[9px] py-[3px] rounded-[6px] ${S.riskLevel==="high"?"bg-[#fee2e2] text-[#b91c1c] border border-[#fca5a5]":S.riskLevel==="medium"?"bg-[#fffbeb] text-[#b45309] border border-[#fcd34d]":"bg-[#ecfdf5] text-[#065f46] border border-[#6ee7b7]"}`,children:S.riskLevel==="high"?"High risk":S.riskLevel==="medium"?"Medium risk":"On track"}),e.jsx(Lr,{size:16,className:"text-[#cbd5e1] ml-auto hover:text-[#64748b]"})]},S.id)})]})]})]})},bx=de.memo(({student:t,onViewStudent:s,onCreateAccount:a})=>{const o=t.riskLevel==="high"?{borderLeft:"border-l-rose-500",bgAvatar:"bg-rose-50 text-rose-600 border-rose-100/50",badge:"text-rose-600 bg-rose-50",progress:"bg-rose-500"}:t.riskLevel==="medium"?{borderLeft:"border-l-amber-500",bgAvatar:"bg-amber-50 text-amber-600 border-amber-100/50",badge:"text-amber-600 bg-amber-50",progress:"bg-amber-500"}:{borderLeft:"border-l-emerald-500",bgAvatar:"bg-emerald-50 text-emerald-600 border-emerald-100/50",badge:"text-emerald-600 bg-emerald-50",progress:"bg-emerald-500"},n=t.hasRegisteredAccount===!1&&t.source==="import",i=t.hasRegisteredAccount===!0;return e.jsxs("div",{onClick:()=>s(t),className:`p-[12px] bg-white rounded-[14px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#f1f5f9] border-l-[4px] ${o.borderLeft} hover:scale-[1.02] transition-transform cursor-pointer group flex flex-col justify-between`,children:[e.jsxs("div",{className:"flex justify-between items-start mb-[10px]",children:[e.jsxs("div",{className:"flex gap-[8px] items-center min-w-0 pr-2",children:[t.avatar?e.jsx("img",{src:t.avatar,alt:t.name,className:`w-8 h-8 rounded-full border ${o.bgAvatar.split(" ")[2]} object-cover shrink-0`}):e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center font-semibold text-[11px] shrink-0 border ${o.bgAvatar}`,children:t.name.substring(0,2).toUpperCase()}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("p",{className:"text-[13px] font-semibold text-[#1e293b] leading-tight truncate",children:t.name}),i&&e.jsx("span",{title:"Registered student account",className:"w-1.5 h-1.5 rounded-full bg-emerald-500 shrink-0"})]}),e.jsxs("p",{className:"text-[10px] text-[#64748b] flex items-center gap-[4px] mt-0.5 truncate",children:[e.jsx(Zs,{className:"w-[10px] h-[10px] shrink-0"})," ",t.lastActive||"recently"]})]})]}),e.jsxs("span",{className:`font-semibold text-[11px] px-[6px] py-[2px] rounded-[14px] shrink-0 ${o.badge}`,children:[t.avgScore,"%"]})]}),n&&e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2 px-2 py-1 rounded-[10px] bg-amber-50 border border-amber-100/80",children:[e.jsx("span",{className:"text-[10px] font-semibold text-amber-700 uppercase tracking-wider",children:"No Account"}),a&&e.jsxs("button",{type:"button",onClick:l=>{l.stopPropagation(),a(t)},className:"flex items-center gap-1 px-2 py-0.5 rounded-full bg-white text-amber-700 border border-amber-200 hover:bg-amber-100 text-[10px] font-semibold transition-colors","aria-label":`Create system account for ${t.name}`,children:[e.jsx("span",{"aria-hidden":!0,children:"+"}),"Create"]})]}),e.jsx("div",{className:"w-full bg-[#f1f5f9] h-1.5 rounded-full overflow-hidden mt-auto",children:e.jsx("div",{className:`h-full rounded-full ${o.progress}`,style:{width:`${t.avgScore}%`}})})]})}),vx=({students:t,allClasses:s,currentClass:a,onReassignSection:r,reassignBusyId:o})=>{const[n,i]=m.useState(!1),l=m.useMemo(()=>{const d=new Map;return s.forEach(u=>{const f=(u.classSectionId||u.id||"").trim();if(!f)return;const h=(u.classMetadata?.grade||"").trim(),b=(u.classMetadata?.section||"").trim();if(!h||!b)return;const k=u.name||`${h} - ${b}`;d.set(f,{classSectionId:f,grade:h,section:b,label:k})}),Array.from(d.values()).sort((u,f)=>u.label.localeCompare(f.label))},[s]),c=m.useMemo(()=>{const d=new Map,u=[];return t.forEach(f=>{const h=(f.classSectionId||"").trim();if(!h){u.push(f);return}const b=f.section||f.className||h,k=d.get(h)||{label:b,students:[]};k.students=[...k.students,f],d.set(h,k)}),{assigned:Array.from(d.entries()).map(([f,h])=>({sectionId:f,...h})).sort((f,h)=>f.label.localeCompare(h.label)),unassigned:u}},[t]);return e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] border border-white shadow-[0_1px_4px_rgba(0,0,0,0.04)] overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:()=>i(d=>!d),className:"w-full flex items-center justify-between px-6 py-4 text-left","aria-expanded":n,children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[15px] font-semibold text-[#1e293b]",children:"Section Management"}),e.jsxs("p",{className:"text-[12px] text-[#64748b] mt-0.5",children:["Move students between sections. Showing ",t.length," students across ",c.assigned.length," section",c.assigned.length===1?"":"s",c.unassigned.length>0?` · ${c.unassigned.length} unassigned`:"","."]})]}),e.jsx(Tt,{className:`w-4 h-4 text-[#64748b] transition-transform ${n?"rotate-180":""}`})]}),n&&e.jsxs("div",{className:"border-t border-[#f1f5f9] divide-y divide-[#f1f5f9]",children:[c.assigned.length===0&&c.unassigned.length===0&&e.jsx("p",{className:"text-[12px] text-[#64748b] px-6 py-5",children:"No students yet. Add students to this teacher to manage section assignments."}),c.assigned.map(d=>e.jsxs("div",{className:"px-6 py-4",children:[e.jsxs("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[#64748b] mb-2",children:[d.label," ",e.jsxs("span",{className:"text-[10px] font-normal text-[#94a3b8]",children:["(",d.students.length,")"]})]}),e.jsx("div",{className:"space-y-1.5",children:d.students.map(u=>e.jsx(qo,{student:u,sectionTargets:l,currentSectionId:a.classSectionId,onReassign:r,isBusy:o===u.id},`section-row-${u.id}`))})]},d.sectionId)),c.unassigned.length>0&&e.jsxs("div",{className:"px-6 py-4 bg-amber-50/40",children:[e.jsxs("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-amber-700 mb-2",children:["Unassigned ",e.jsxs("span",{className:"text-[10px] font-normal text-amber-600/80",children:["(",c.unassigned.length,")"]})]}),e.jsx("div",{className:"space-y-1.5",children:c.unassigned.map(d=>e.jsx(qo,{student:d,sectionTargets:l,currentSectionId:a.classSectionId,onReassign:r,isBusy:o===d.id},`section-row-${d.id}`))})]})]})]})},qo=({student:t,sectionTargets:s,currentSectionId:a,onReassign:r,isBusy:o})=>{const[n,i]=m.useState(t.classSectionId||"");m.useEffect(()=>{i(t.classSectionId||"")},[t.classSectionId]);const l=()=>{const d=s.find(u=>u.classSectionId===n);d&&d.classSectionId!==t.classSectionId&&r(t,d)},c=n===(t.classSectionId||"");return e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center gap-2 md:gap-3 px-3 py-2 rounded-[12px] bg-white border border-[#f1f5f9]",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-[13px] font-semibold text-[#1e293b] truncate",children:t.name}),e.jsxs("p",{className:"text-[11px] text-[#64748b] truncate",children:[t.lrn?`LRN ${t.lrn} · `:"",t.classMetadata?.className||t.className||"Unassigned section",a&&t.classSectionId===a?" · current":""]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:n,onChange:d=>i(d.target.value),disabled:o||s.length===0,className:"text-[12px] rounded-xl border border-[#dde3eb] bg-white px-3 py-1.5 text-[#0a1628] focus:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-200 disabled:opacity-60",children:[e.jsx("option",{value:"",children:"Select section…"}),s.map(d=>e.jsx("option",{value:d.classSectionId,children:d.label},d.classSectionId))]}),e.jsx("button",{type:"button",onClick:l,disabled:o||c||!n,className:"text-[12px] font-semibold rounded-xl px-3 py-1.5 bg-indigo-600 text-white hover:bg-indigo-700 transition-colors disabled:opacity-50 disabled:hover:bg-indigo-600",children:o?"Saving…":"Move"})]})]})},wx=({selectedClass:t,students:s,allClasses:a,riskDistribution:r,topicPerformance:o,onViewStudent:n,onCreateAccount:i,onReassignSection:l,reassignBusyId:c,onBack:d,teacherOptions:u,managerUpdating:f,onAssignManager:h,onOpenNotifications:b,onOpenProfile:k,classColor:j,insightDismissed:S,onOpenInsightModal:p,onAddStudents:N})=>{const{currentUser:C,userProfile:z}=ds(),[I,U]=m.useState(""),[v,y]=m.useState(""),[w,A]=m.useState("All"),B=[{name:"High Risk",value:s.filter(H=>H.riskLevel==="high").length,color:"#FF8B8B"},{name:"Medium Risk",value:s.filter(H=>H.riskLevel==="medium").length,color:"#F08386"},{name:"Low Risk",value:s.filter(H=>H.riskLevel==="low").length,color:"#75D06A"}];m.useEffect(()=>{y(t.classMetadata?.managerId||t.managerId||"")},[t]);const E=m.useMemo(()=>{const H=I.trim().toLowerCase();let q=s;return H&&(q=q.filter(M=>M.name.toLowerCase().includes(H)||(M.lrn||"").toLowerCase().includes(H)||(M.weakestTopic||"").toLowerCase().includes(H))),w==="Good"?q=q.filter(M=>M.avgScore>=85&&M.riskLevel!=="high"):w==="Risk"&&(q=q.filter(M=>M.riskLevel==="high"||M.avgScore<75)),q},[I,s,w]),F=m.useMemo(()=>{if(s.length===0)return 0;const H=s.reduce((q,M)=>q+(M.assignmentCompletion||0),0);return Math.round(H/s.length)},[s]),X=m.useMemo(()=>{if(s.length===0)return 0;const H=s.reduce((M,Y)=>M+(Y.attendance||0),0)/s.length,q=s.reduce((M,Y)=>M+(Y.engagementScore||0),0)/s.length;return Math.round(H*.6+q*.4)},[s]),J=m.useMemo(()=>[...s].sort((H,q)=>q.avgScore-H.avgScore).slice(0,5),[s]),ce=m.useMemo(()=>[...s].filter(H=>H.riskLevel==="high"||H.avgScore<70||H.assignmentCompletion<65),[s]),ne=m.useMemo(()=>u.find(H=>H.uid===v),[u,v]),xe=()=>{if(!ne){me.error("Select a teacher manager first.");return}h(ne)},he=[t.classMetadata?.gradeLevel||t.gradeLevel,t.classMetadata?.classification||t.classification,t.classMetadata?.strand||t.strand].filter(Boolean);return e.jsxs(Re.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},className:"p-3 sm:p-[24px] xl:p-[32px] space-y-3 sm:space-y-[24px] h-full overflow-y-auto",children:[e.jsx("div",{className:"flex items-center justify-between mb-3 sm:mb-6",children:e.jsxs("button",{onClick:d,className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors bg-white/60 hover:bg-white/80 px-[18px] py-2 rounded-full backdrop-blur-[12px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50",children:[e.jsx(Ss,{className:"w-4 h-4"}),"Back to Classes"]})}),e.jsxs("header",{style:{backgroundColor:j?.hex||"#6366f1"},className:"rounded-[24px] p-4 sm:p-[24px] lg:p-[32px] shadow-[0_8px_32px_rgba(0,0,0,0.08)] flex flex-col lg:flex-row lg:items-center justify-between gap-4 sm:gap-6 relative overflow-hidden group text-white",children:[e.jsx("div",{className:"absolute -right-10 -bottom-10 w-48 h-48 rounded-full bg-white/10 group-hover:scale-[1.3] transition-transform duration-700 ease-out pointer-events-none"}),e.jsx("div",{className:"absolute -left-10 -top-10 w-32 h-32 rounded-full bg-white/10 group-hover:scale-[1.2] transition-transform duration-700 delay-75 ease-out pointer-events-none"}),e.jsxs("div",{className:"shrink-0 relative z-10",children:[e.jsx("h1",{className:"text-xl sm:text-[28px] font-bold mb-2 sm:mb-3 tracking-tight",children:t.name}),e.jsx("div",{className:"flex flex-wrap items-center gap-2 mb-3",children:he.map((H,q)=>e.jsx("span",{className:"px-3 py-1 bg-white/20 backdrop-blur-md text-white text-[12px] font-semibold rounded-full shadow-sm border border-white/20",children:H},H))}),e.jsxs("p",{className:"text-[13px] text-white/80 font-medium",children:["Manager: ",t.classMetadata?.managerName||t.managerName||"Not assigned"]})]}),e.jsxs("div",{className:"bg-white/10 border border-white/20 rounded-[18px] p-[16px] backdrop-blur-md flex flex-col w-full md:w-auto shrink-0 relative z-10 shadow-inner",children:[e.jsx("label",{className:"text-[11px] font-bold text-white/90 uppercase tracking-wider mb-2 ml-1",children:"Section Manager"}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3",children:[e.jsxs("div",{className:"relative w-full md:w-[320px]",children:[e.jsxs("select",{value:v||"",onChange:H=>y(H.target.value),className:"appearance-none bg-white/20 border border-white/30 text-white text-[13px] font-bold rounded-xl pl-4 pr-10 py-2.5 outline-none focus:border-white/50 focus:ring-2 focus:ring-white/20 w-full shadow-sm cursor-pointer [&>option]:text-[#1e293b]",children:[e.jsx("option",{value:"",children:"Select teacher"}),u.map(H=>e.jsxs("option",{value:H.uid,children:[H.name," (",H.email,")"]},H.uid))]}),e.jsx(Tt,{className:"w-4 h-4 text-white/70 absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none"})]}),e.jsx("button",{onClick:xe,disabled:!v||f,className:"bg-white text-[#6366f1] hover:bg-white/90 text-[13px] font-bold rounded-full px-6 py-2.5 shadow-md transition-transform hover:scale-[1.02] whitespace-nowrap disabled:opacity-50 disabled:hover:scale-100",style:{color:j?.hex||"#6366f1"},children:f?"Updating...":"Assign"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 sm:gap-[18px] w-full",children:[e.jsxs("div",{className:"group relative overflow-hidden bg-[#0ea5e9] shadow-[0_4px_16px_rgba(14,165,233,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Class Average"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(vs,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[t.avgScore,"%"]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#10b981] shadow-[0_4px_16px_rgba(16,185,129,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Completion"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(qr,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[F,"%"]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#a855f7] shadow-[0_4px_16px_rgba(168,85,247,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Participation"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(os,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[X,"%"]})]}),e.jsxs("div",{className:"group relative overflow-hidden bg-[#f97316] shadow-[0_4px_16px_rgba(249,115,22,0.13)] rounded-lg sm:rounded-2xl p-[12px] sm:p-[15px] text-white flex flex-col gap-[8px] sm:gap-[10px]",children:[e.jsx("div",{className:"absolute -right-4 -bottom-4 w-24 h-24 rounded-full bg-white/10 group-hover:scale-[1.6] transition-transform duration-500 ease-out"}),e.jsx("div",{className:"absolute -left-4 -top-4 w-12 h-12 rounded-full bg-white/10 group-hover:scale-[1.4] transition-transform duration-500 delay-75 ease-out"}),e.jsxs("div",{className:"relative z-10 flex justify-between items-start",children:[e.jsx("span",{className:"text-[10px] sm:text-[11px] opacity-90 uppercase tracking-wider font-semibold",children:"Attention"}),e.jsx("div",{className:"bg-white/20 p-1.5 rounded-lg flex",children:e.jsx(Xs,{size:14})})]}),e.jsxs("div",{className:"relative z-10 text-[22px] sm:text-[26px] font-semibold tracking-tight",children:[ce.length," ",e.jsx("span",{className:"text-[12px] opacity-90 font-medium",children:"students"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-3 gap-3 sm:gap-[24px] h-auto xl:h-[600px]",children:[e.jsxs("div",{className:"xl:col-span-1 bg-white/80 backdrop-blur-[12px] rounded-[18px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white flex flex-col overflow-hidden h-[500px] xl:h-full",children:[e.jsxs("div",{className:"p-5 border-b border-[#f1f5f9] shrink-0",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h2",{className:"text-[15px] font-semibold text-[#1e293b]",children:["Students ",e.jsxs("span",{className:"text-[#64748b] text-[13px]",children:["(",E.length,")"]})]}),e.jsx("button",{onClick:()=>N?.(),className:"text-[11px] font-semibold text-[#9956DE] hover:text-[#7c3aed] bg-[#9956DE]/10 hover:bg-[#9956DE]/20 px-3 py-1.5 rounded-lg transition-colors",children:"+ Add"})]}),e.jsxs("div",{className:"flex items-center bg-white px-4 py-2 rounded-[14px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#f1f5f9] group",children:[e.jsx(Os,{className:"w-4 h-4 text-[#64748b] shrink-0 group-focus-within:text-[#4f46e5] transition-colors"}),e.jsx("input",{type:"text",placeholder:"Search students...",value:I,onChange:H=>U(H.target.value),className:"bg-transparent border-none focus:outline-none ml-2 text-[13px] w-full text-[#475569] placeholder:text-[#64748b]"})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-4 overflow-x-auto no-scrollbar pb-1",children:[e.jsx("button",{onClick:()=>A("All"),className:`px-3 py-1.5 text-[11px] font-semibold rounded-[14px] whitespace-nowrap transition-all hover:scale-[1.02] ${w==="All"?"bg-[#4f46e5] text-white shadow-[0_1px_4px_rgba(0,0,0,0.04)]":"bg-[#f8fafc] text-[#64748b] hover:bg-[#f1f5f9]"}`,children:"All Students"}),e.jsx("button",{onClick:()=>A("Good"),className:`px-3 py-1.5 text-[11px] font-semibold rounded-[14px] whitespace-nowrap transition-all hover:scale-[1.02] ${w==="Good"?"bg-emerald-50 text-emerald-600 border border-emerald-100/50 shadow-[0_1px_4px_rgba(0,0,0,0.04)]":"bg-emerald-50/40 text-emerald-600 border border-emerald-50 hover:bg-emerald-50"}`,children:"Top Performers"}),e.jsx("button",{onClick:()=>A("Risk"),className:`px-3 py-1.5 text-[11px] font-semibold rounded-[14px] whitespace-nowrap transition-all hover:scale-[1.02] ${w==="Risk"?"bg-rose-50 text-rose-600 border border-rose-100/50 shadow-[0_1px_4px_rgba(0,0,0,0.04)]":"bg-rose-50/40 text-rose-600 border border-rose-50 hover:bg-rose-50"}`,children:"Needs Attention"})]})]}),e.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-4 flex flex-col no-scrollbar",children:e.jsx(Yd,{style:{height:"100%"},data:E,className:"no-scrollbar",itemContent:(H,q)=>e.jsx("div",{className:"py-[6px] px-[8px]",children:e.jsx(bx,{student:q,onViewStudent:n,onCreateAccount:i})}),computeItemKey:(H,q)=>Ur(q)})})]}),e.jsxs("div",{className:"xl:col-span-2 flex flex-col gap-[24px] h-full overflow-y-auto no-scrollbar pb-10 xl:pb-0",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white flex flex-col group h-[280px]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"font-semibold text-[15px] text-[#1e293b]",children:"Risk Distribution"}),e.jsx(Lr,{className:"w-4 h-4 text-[#64748b] cursor-pointer group-hover:scale-110 transition-transform"})]}),e.jsx("div",{className:"relative w-full flex-1 min-h-[180px]",children:e.jsx(Dn,{width:"100%",height:"100%",children:e.jsxs($n,{data:B,children:[e.jsx(Fn,{strokeDasharray:"4 4",stroke:"#f1f5f9",vertical:!1}),e.jsx(On,{dataKey:"name",axisLine:{stroke:"#cbd5e1",strokeWidth:2},tickLine:!1,tick:{fill:"#475569",fontSize:11,fontWeight:600},dy:10}),e.jsx(Bn,{axisLine:!1,tickLine:!1,tick:{fill:"#64748b",fontSize:10,fontWeight:600}}),e.jsx(Pn,{cursor:{fill:"#f8fafc"},contentStyle:{borderRadius:"12px",border:"none",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1)"}}),e.jsx(Hn,{dataKey:"value",radius:[6,6,0,0],barSize:80,children:B.map((H,q)=>{const M={"High Risk":"#f43f5e","Medium Risk":"#f59e0b","Low Risk":"#10b981"};return e.jsx(Gn,{fill:M[H.name]||H.color},`cell-${q}`)})})]})})})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white flex flex-col group h-[280px]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h3",{className:"font-semibold text-[15px] text-[#1e293b]",children:"Topic Performance"}),e.jsx(Lr,{className:"w-4 h-4 text-[#64748b] cursor-pointer group-hover:scale-110 transition-transform"})]}),e.jsx("div",{className:"relative w-full flex-1 min-h-[180px] -ml-8",children:e.jsx(Dn,{width:"100%",height:"100%",children:e.jsxs($n,{data:o,layout:"vertical",margin:{top:0,right:10,left:40,bottom:0},children:[e.jsx(Fn,{strokeDasharray:"4 4",stroke:"#f1f5f9",horizontal:!1}),e.jsx(On,{type:"number",domain:[0,100],axisLine:!1,tickLine:!1,tick:{fill:"#64748b",fontSize:10,fontWeight:600},tickFormatter:H=>`${H}%`}),e.jsx(Bn,{dataKey:"topic",type:"category",axisLine:{stroke:"#cbd5e1",strokeWidth:2},tickLine:!1,tick:{fill:"#1e293b",fontSize:11,fontWeight:600},dx:-10}),e.jsx(Pn,{cursor:{fill:"#f8fafc"},contentStyle:{borderRadius:"12px",border:"none",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1)"}}),e.jsx(Hn,{dataKey:"score",radius:[0,6,6,0],barSize:28,children:o.map((H,q)=>{const M=["#6366f1","#a855f7","#10b981","#f59e0b","#ec4899"];return e.jsx(Gn,{fill:M[q%M.length]},`cell-${q}`)})})]})})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-[24px]",children:[e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white",children:[e.jsx("div",{className:"flex items-center justify-between mb-4",children:e.jsxs("h3",{className:"font-semibold text-[15px] text-[#1e293b] flex items-center gap-2",children:[e.jsx(Ta,{className:"w-4 h-4 text-emerald-500"}),"Top Performers"]})}),e.jsxs("div",{className:"space-y-[8px]",children:[J.map(H=>e.jsxs("div",{onClick:()=>n(H),className:"flex justify-between items-center p-3 bg-emerald-50/40 rounded-[14px] border border-emerald-50 group hover:scale-[1.02] transition-transform cursor-pointer",children:[e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:H.name}),e.jsxs("span",{className:"text-[13px] font-semibold text-emerald-600",children:[H.avgScore,"%"]})]},`top-${H.id}`)),J.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"No students available yet."})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-6 shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white",children:[e.jsx("div",{className:"flex items-center justify-between mb-4",children:e.jsxs("h3",{className:"font-semibold text-[15px] text-[#1e293b] flex items-center gap-2",children:[e.jsx(Xs,{className:"w-4 h-4 text-rose-500"}),"Needs Attention"]})}),e.jsxs("div",{className:"space-y-[8px]",children:[ce.slice(0,4).map(H=>{const q=H.riskLevel==="high",M=q?"bg-rose-50/40 border-rose-50":"bg-amber-50/40 border-amber-50";return e.jsxs("div",{onClick:()=>n(H),className:`flex justify-between items-center p-3 rounded-[14px] border group hover:scale-[1.02] transition-transform cursor-pointer ${M}`,children:[e.jsx("span",{className:"text-[13px] font-semibold text-[#1e293b]",children:H.name}),e.jsx("span",{className:`text-[11px] font-semibold bg-white px-2 py-0.5 rounded-[14px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-[#f1f5f9] ${q?"text-rose-600":"text-amber-600"}`,children:q?"HIGH RISK":"MEDIUM RISK"})]},`attn-${H.id}`)}),ce.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"No urgent students."})]})]})]})]})]}),e.jsx(vx,{students:s,allClasses:a,currentClass:t,onReassignSection:l,reassignBusyId:c})]})},Nx=({student:t,teacherId:s,teacherName:a,onStudentUpdated:r,onBack:o,onNavigateToQuizMaker:n,initialCache:i,onCacheUpdate:l})=>{const c=(t.riskLevel||"low").toLowerCase(),d=c==="high"||c==="medium",u=m.useMemo(()=>nt.getImportGroundedRolloutFlags(),[]),[f,h]=m.useState(i?.learningPath||""),[b,k]=m.useState(!0),[j,S]=m.useState(i?.gradeDraft||t.grade||"Grade 11"),[p,N]=m.useState(i?.sectionDraft||t.section||"Section A"),[C,z]=m.useState(!1),[I,U]=m.useState(i?.lessonPlan??null),[v,y]=m.useState([]),[w,A]=m.useState(""),[B,E]=m.useState(!1),[F,X]=m.useState(""),[J,ce]=m.useState("all"),[ne,xe]=m.useState("all"),[he,H]=m.useState(!1),[q,M]=m.useState(!1),[Y,ae]=m.useState(null),[$e,Me]=m.useState(!1),[Ge,G]=m.useState(!1),[te,g]=m.useState(0),[T,R]=m.useState(!1),[K,Z]=m.useState("choose"),[re,le]=m.useState([]),[$,oe]=m.useState(!1),[pe,we]=m.useState(!1),[se,fe]=m.useState(!1),[et,Fe]=m.useState(!1);m.useEffect(()=>{S(t.grade||"Grade 11"),N(t.section||"Section A")},[t.grade,t.section]),m.useEffect(()=>{const P=Ae=>{if(Ae.key==="Escape"){if(et){Fe(!1);return}if(pe){se?Fe(!0):we(!1);return}T&&R(!1)}};return document.addEventListener("keydown",P),()=>document.removeEventListener("keydown",P)},[pe,T,se,et]),m.useEffect(()=>{if(pe){const P=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=P}}},[pe]),m.useEffect(()=>{l?.(t.id,{lessonPlan:I,learningPath:f,gradeDraft:j,sectionDraft:p})},[I,f,j,p,t.id,l]),m.useEffect(()=>{(async()=>{k(!0);try{let Ae="";try{Ae=await Cl(t.struggles.length>0?t.struggles:[t.weakestTopic],"general_math"),A(Ae)}catch{A("")}const Ye=await nt.getLearningPath({weaknesses:t.struggles.length>0?t.struggles:[t.weakestTopic],gradeLevel:"High School",subject:"general_math"}),vt=Ae?`${Ye.learningPath} ${Ae}`:Ye.learningPath;h(vt)}catch{h("Unable to generate learning path. Please try again later."),A("")}finally{k(!1)}})()},[t]);const Ke=m.useCallback(async()=>{E(!0),X("");try{const P=t.classSectionId||Lt(j||"Grade 11",p||"Section A"),Ae=t.struggles.length>0?t.struggles[0]:t.weakestTopic,Ye=await _m({gradeLevel:j||t.grade||"Grade 11",subject:"general_math",quarter:1,moduleUnit:[j,p].filter(Boolean).join(" - ")||t.className,lessonTitle:`Grounded Lesson: ${Ae}`,learningCompetency:Ae,learnerLevel:t.avgScore<60?"support":t.avgScore<80?"developing":"advanced",classSectionId:P,className:[j,p].filter(Boolean).join(" - ")||t.className,focusTopics:t.struggles.length>0?t.struggles:[t.weakestTopic],topicCount:5,preferImportedTopics:u.lessonEnabled,allowReviewSources:he,allowUnverifiedLesson:q},!0);U(Ye),y(Ye.curriculumSources||[]),ae(null),nt.reportImportGroundedFeedback({flow:"lesson",status:"success",classSectionId:P,className:[j,p].filter(Boolean).join(" - ")||t.className,metadata:{usedImportedTopics:Ye.usedImportedTopics,importedTopicCount:Ye.importedTopicCount,blockCount:Ye.blocks.length,publishReady:Ye.publishReady,sourceLegitimacyStatus:Ye.sourceLegitimacy.status,selfValidationPassed:Ye.selfValidation.passed,importGroundingEnabled:u.lessonEnabled}})}catch(P){let Ae=P instanceof Error?P.message:"Unable to generate lesson plan at this time.";if(P instanceof qa&&P.status===422)try{const vt=JSON.parse(P.responseBody)?.detail;vt?.message&&(Ae=vt.message);const xs=vt?.sourceLegitimacy?.issues||[],Ot=vt?.selfValidation?.issues||[],Wt=[...xs,...Ot].filter(Boolean).slice(0,3);Wt.length>0&&(Ae=`${Ae} ${Wt.join(" ")}`)}catch{}X(Ae),U(null),y([]),nt.reportImportGroundedFeedback({flow:"lesson",status:"failed",classSectionId:t.classSectionId||Lt(j||"Grade 11",p||"Section A"),className:[j,p].filter(Boolean).join(" - ")||t.className,metadata:{error:Ae,allowReviewSources:he,allowUnverifiedLesson:q,importGroundingEnabled:u.lessonEnabled}})}finally{E(!1)}},[t,j,p,u.lessonEnabled,he,q]),rt=m.useCallback(async()=>{if(!I)return me.error("Generate a lesson plan first."),null;Me(!0);try{const P=await Em(I,s,{teacherName:a,studentId:t.id,studentName:t.name});return ae(P),me.success("Lesson plan saved as draft."),P}catch(P){return console.error("Failed to save lesson draft:",P),me.error(P instanceof Error?P.message:"Failed to save lesson draft."),null}finally{Me(!1)}},[I,s,a,t.id,t.name]),Rt=m.useCallback(async()=>{if(!I){me.error("Generate a lesson plan first.");return}if(!I.publishReady){const P=[...I.sourceLegitimacy.issues,...I.selfValidation.issues].filter(Boolean).slice(0,2).join(" ");me.error(P||"Lesson is not publish-ready. Resolve legitimacy and validation checks first.");return}G(!0);try{let P=Y;if(P||(P=await rt()),!P)return;await Rm(P),me.success("Lesson plan published to class content."),nt.reportImportGroundedFeedback({flow:"lesson",status:"success",classSectionId:I.classSectionId||t.classSectionId,className:I.className||t.className,metadata:{action:"publish_lesson_plan",lessonPlanId:P,publishReady:I.publishReady,sourceLegitimacyStatus:I.sourceLegitimacy.status,selfValidationPassed:I.selfValidation.passed}})}catch(P){console.error("Failed to publish lesson plan:",P),me.error(P instanceof Error?P.message:"Failed to publish lesson plan."),nt.reportImportGroundedFeedback({flow:"lesson",status:"failed",classSectionId:I.classSectionId||t.classSectionId,className:I.className||t.className,metadata:{action:"publish_lesson_plan",error:P instanceof Error?P.message:"Failed to publish lesson plan."}})}finally{G(!1)}},[I,Y,rt,t.className,t.classSectionId]);m.useEffect(()=>{Ke()},[te]),m.useEffect(()=>{g(P=>P+1)},[t.id]),m.useEffect(()=>{ce("all"),xe("all")},[I]),m.useMemo(()=>I?Array.from(new Set(I.blocks.map(P=>P.provenance?.sourceFile?.trim()).filter(P=>!!P))).sort((P,Ae)=>P.localeCompare(Ae)):[],[I]),m.useMemo(()=>I?Array.from(new Set(I.blocks.map(P=>P.provenance?.materialId?.trim()).filter(P=>!!P))).sort((P,Ae)=>P.localeCompare(Ae)):[],[I]);const St=m.useMemo(()=>I?I.blocks.filter(P=>{const Ae=J==="all"||(P.provenance?.sourceFile||"").trim()===J,Ye=ne==="all"||(P.provenance?.materialId||"").trim()===ne;return Ae&&Ye}):[],[I,J,ne]),Ft=[{id:1,type:"video",title:`${t.weakestTopic} Fundamentals`,duration:"8 mins",icon:Qn},{id:2,type:"quiz",title:`${t.weakestTopic} Practice`,questions:10,icon:ii},{id:3,type:"assessment",title:"Final Check",questions:5,icon:qr}],ss=async()=>{if(!s){me.error("Unable to update section: teacher context missing");return}z(!0);try{await mr(t.id,j,p,s,new Date().getFullYear().toString(),a),await Vi(t.id,j,p);const P={...t,grade:j,section:p,className:[j,p].filter(Boolean).join(" - "),classSectionId:Lt(j,p)};r(P),me.success("Student section assignment updated")}catch(P){console.error("Failed to update student section assignment:",P),me.error("Failed to update section assignment")}finally{z(!1)}};return e.jsxs(Re.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"w-full h-full flex overflow-hidden relative",children:[e.jsx("div",{className:"flex-1 overflow-y-auto p-[24px] xl:p-[32px] no-scrollbar",children:e.jsxs("div",{className:"max-w-[1000px] mx-auto space-y-[24px]",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-[8px]",children:e.jsx("div",{children:e.jsxs("button",{onClick:o,className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors bg-white/60 hover:bg-white/80 px-[18px] py-2 rounded-full backdrop-blur-[12px] mb-[16px] w-max shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white/50",children:[e.jsx(Xa,{className:"w-4 h-4"}),"Back to Analytics"]})})}),e.jsxs("div",{className:"bg-gradient-to-br from-[#ecfdf5] via-[#f0fdf4] to-[#f7fdf9] backdrop-blur-[12px] rounded-[20px] p-[24px] border border-emerald-100 shadow-[0_4px_16px_rgba(16,185,129,0.08)] relative overflow-hidden",children:[e.jsx("div",{className:"absolute right-[-20px] bottom-[-20px] opacity-[0.06] pointer-events-none",children:e.jsx(Cn,{className:"w-48 h-48 text-emerald-600"})}),e.jsxs("div",{className:"flex items-center gap-3 mb-5 relative z-10",children:[e.jsx("div",{className:"w-10 h-10 rounded-[12px] bg-gradient-to-br from-[#059669] to-[#10b981] flex items-center justify-center shrink-0 shadow-[0_4px_10px_rgba(5,150,105,0.3)]",children:e.jsx(Cn,{className:"w-5 h-5 text-white"})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"text-[15px] font-bold text-[#1e293b]",children:"AI Analysis"}),e.jsxs("span",{className:"flex items-center gap-1 px-2.5 py-0.5 bg-emerald-500 text-white text-[10px] font-bold rounded-full uppercase tracking-wider shadow-sm",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-pulse"}),"Insights Active"]})]})]}),w&&e.jsx(No,{sources:v,className:"mb-4 relative z-10"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 w-full relative z-10",children:[e.jsxs("div",{className:"bg-white/70 backdrop-blur-sm rounded-[14px] p-4 border border-emerald-100/60 shadow-[0_1px_4px_rgba(0,0,0,0.04)] relative overflow-hidden",children:[e.jsx("div",{className:"absolute left-0 top-0 w-1 h-full bg-emerald-400 rounded-l-[14px]"}),e.jsxs("h4",{className:"text-[11px] font-bold text-emerald-600 uppercase tracking-wider mb-2.5 flex items-center gap-1.5 pl-2",children:[e.jsx(Ta,{className:"w-3.5 h-3.5"})," Learning Strengths"]}),e.jsx("p",{className:"text-[13px] text-[#475569] leading-relaxed pl-2",children:d?e.jsx(e.Fragment,{children:"Demonstrates engagement but faces challenges. Needs support with foundational topics."}):e.jsxs(e.Fragment,{children:["Excels in ",e.jsx("span",{className:"font-semibold text-[#1e293b]",children:t.weakestTopic}),". Demonstrates high engagement during interactive tests."]})})]}),e.jsxs("div",{className:"bg-white/70 backdrop-blur-sm rounded-[14px] p-4 border border-rose-100/60 shadow-[0_1px_4px_rgba(0,0,0,0.04)] relative overflow-hidden",children:[e.jsx("div",{className:"absolute left-0 top-0 w-1 h-full bg-rose-400 rounded-l-[14px]"}),e.jsxs("h4",{className:"text-[11px] font-bold text-rose-500 uppercase tracking-wider mb-2.5 flex items-center gap-1.5 pl-2",children:[e.jsx(vs,{className:"w-3.5 h-3.5"})," Next Steps"]}),e.jsx("ul",{className:"text-[13px] text-[#475569] leading-relaxed list-none p-0 m-0 space-y-1 pl-2",children:t.struggles.length>0?t.struggles.map((P,Ae)=>e.jsxs("li",{children:["Must continue strengthening ",e.jsx("span",{className:"font-semibold text-[#1e293b]",children:P}),"."]},Ae)):e.jsxs("li",{children:["Focus on repetitive practice modules for ",e.jsx("span",{className:"font-semibold text-[#1e293b]",children:t.weakestTopic}),"."]})})]})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6 border-b border-[#f1f5f9] pb-4",children:[e.jsx("h3",{className:"text-[15px] font-semibold text-[#1e293b]",children:"Generated Learning Path"}),e.jsxs("button",{disabled:b,onClick:()=>g(P=>P+1),className:"bg-[#f8fafc] hover:bg-white text-[#4f46e5] border border-[#e0e7ff] text-[11px] font-semibold rounded-full px-4 py-1.5 transition-colors shadow-[0_1px_4px_rgba(0,0,0,0.02)] flex items-center gap-1.5 disabled:opacity-50",children:[e.jsx(zs,{className:"w-3 h-3"})," Regenerate"]})]}),e.jsxs(vo,{name:"teacher-intervention-learning-path",loading:!1,fixture:null,fallback:null,children:[e.jsxs("div",{className:"mb-8 flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-[11px] font-semibold text-[#64748b] uppercase tracking-wider mr-2",children:"Methodology:"}),e.jsx("span",{className:"px-3 py-1 bg-[#f8fafc] text-[#475569] text-[11px] font-semibold rounded-full border border-[#e2e8f0]",children:"Interactive"}),e.jsx("span",{className:"px-3 py-1 bg-[#f8fafc] text-[#475569] text-[11px] font-semibold rounded-full border border-[#e2e8f0]",children:"Video"}),e.jsx("span",{className:"px-3 py-1 bg-[#f8fafc] text-[#475569] text-[11px] font-semibold rounded-full border border-[#e2e8f0]",children:"Practice"}),e.jsx("span",{className:"px-3 py-1 bg-[#f8fafc] text-[#475569] text-[11px] font-semibold rounded-full border border-[#e2e8f0]",children:"Quiz"})]}),e.jsx("div",{className:"relative border-l-2 border-[#e2e8f0] ml-[20px] space-y-[28px] pb-4",children:Ft.map((P,Ae)=>{let Ye=e.jsx(Qn,{className:"w-4 h-4"}),vt="bg-[#8b5cf6] shadow-[0_4px_10px_rgba(139,92,246,0.3)]",xs="text-purple-600",Ot="group-hover:border-purple-200",Wt="hover:bg-[#4f46e5]",qt=e.jsx(Pl,{className:"w-4 h-4 ml-0.5"});return P.type==="quiz"?(Ye=e.jsx(Hl,{className:"w-4 h-4"}),vt="bg-sky-500 shadow-[0_4px_10px_rgba(14,165,233,0.3)]",xs="text-sky-600",Ot="group-hover:border-sky-200",Wt="hover:bg-sky-500",qt=e.jsx(ys,{className:"w-4 h-4"})):P.type==="assessment"&&(Ye=e.jsx(Wr,{className:"w-4 h-4"}),vt="bg-emerald-500 shadow-[0_4px_10px_rgba(16,185,129,0.3)]",xs="text-emerald-600",Ot="group-hover:bg-emerald-50"),e.jsxs(Re.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:Ae*.1},className:"relative pl-[32px] group",children:[e.jsx("div",{className:`absolute -left-[17px] top-1 w-8 h-8 rounded-full ${vt} text-white flex items-center justify-center ring-4 ring-white group-hover:scale-110 transition-transform`,children:Ye}),e.jsxs("div",{className:`${P.type==="assessment"?"bg-emerald-50/50 border-emerald-100":"bg-white border-[#f1f5f9]"} rounded-[14px] p-[18px] border shadow-[0_1px_4px_rgba(0,0,0,0.04)] flex justify-between items-center transition-colors ${Ot}`,children:[e.jsxs("div",{children:[e.jsxs("span",{className:`text-[10px] font-semibold uppercase tracking-wider mb-1 block ${xs}`,children:["Step ",Ae+1," • ",P.type==="video"?"Video Lesson":P.type==="quiz"?"Practice":"Assessment"]}),e.jsx("p",{className:"font-semibold text-[#1e293b] text-[13px] mb-0.5",children:P.title}),e.jsxs("p",{className:"text-[#64748b] text-[11px] flex items-center gap-1.5",children:[P.type==="video"&&e.jsxs(e.Fragment,{children:[e.jsx(Zs,{className:"w-3 h-3"})," ",P.duration]}),P.type==="quiz"&&e.jsxs(e.Fragment,{children:[e.jsx(li,{className:"w-3 h-3"})," ",P.questions," questions"]}),P.type==="assessment"&&e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"w-3 h-3"})," ",P.questions," assessment questions"]})]})]}),P.type==="assessment"?e.jsx(Zo,{className:"w-6 h-6 text-emerald-400"}):e.jsx("button",{className:`w-8 h-8 rounded-full bg-[#f8fafc] flex items-center justify-center text-[#64748b] ${Wt} hover:text-white transition-colors border border-[#e2e8f0]`,children:qt})]})]},P.id)})})]})]}),e.jsxs("div",{className:"bg-white/80 backdrop-blur-[12px] rounded-[18px] p-[24px] shadow-[0_1px_4px_rgba(0,0,0,0.04)] border border-white",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-[15px] font-semibold text-[#1e293b]",children:"Targeted Lesson Generation"}),e.jsx(xt,{onClick:()=>g(P=>P+1),disabled:B,className:"bg-[#4f46e5] hover:bg-[#3730a3] text-white h-8 text-[11px] rounded-full px-4",children:B?"Loading...":"Regenerate"})]}),e.jsx("p",{className:"text-[13px] text-[#64748b] mb-6",children:"Configure inputs and requirements for AI lesson generation."}),e.jsxs("div",{className:"bg-[#f8fafc]/80 rounded-[14px] p-[20px] border border-[#f1f5f9] mb-6",children:[e.jsxs("div",{className:"flex items-start gap-3 mb-4",children:[e.jsx(ga,{className:"w-4 h-4 text-[#4f46e5] shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-[13px] text-[#475569] leading-relaxed",children:["Class records alone are not enough for import-grounded lesson plans. Ensure course materials are uploaded via ",e.jsx("span",{className:"text-[#4f46e5] font-semibold",children:"Data Import"}),"."]})]}),e.jsxs("div",{className:"space-y-4 border-t border-[#e2e8f0] pt-5 mt-5",children:[e.jsxs("label",{className:"flex items-center justify-between cursor-pointer group",children:[e.jsx("span",{className:"text-[13px] font-medium text-[#1e293b] group-hover:text-[#4f46e5] transition-colors",children:"Allow sources requiring manual review"}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",checked:he,onChange:P=>H(P.target.checked)}),e.jsx("div",{className:"w-10 h-5 bg-slate-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-[#4f46e5]"})]})]}),e.jsxs("label",{className:"flex items-center justify-between cursor-pointer group",children:[e.jsx("span",{className:"text-[13px] font-medium text-[#1e293b] group-hover:text-[#4f46e5] transition-colors",children:"Allow unverified lesson draft"}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",checked:q,onChange:P=>M(P.target.checked)}),e.jsx("div",{className:"w-10 h-5 bg-slate-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-[#4f46e5]"})]})]})]})]}),e.jsxs(vo,{name:"teacher-intervention-lesson-plan",loading:!1,fixture:null,fallback:null,children:[F&&e.jsx("div",{className:"bg-[#FF8B8B]/14 border border-[#FF8B8B]/35 rounded-xl p-3 text-sm text-[#D66A6A] mb-4",children:F}),I&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-[#f8fafc] border border-[#f1f5f9] rounded-[14px] p-5 shadow-[0_1px_4px_rgba(0,0,0,0.02)]",children:[e.jsx("div",{className:"mb-3",children:e.jsx(No,{sources:v})}),e.jsx("p",{className:"text-[14px] font-semibold text-[#1e293b]",children:I.lessonTitle}),e.jsxs("div",{className:"flex flex-wrap gap-x-4 gap-y-2 mt-2",children:[e.jsxs("p",{className:"text-[11px] text-[#64748b]",children:[e.jsx("span",{className:"font-semibold text-[#475569]",children:"Imported topics:"})," ",I.usedImportedTopics?"Yes":"No"," (",I.importedTopicCount,")"]}),e.jsxs("p",{className:"text-[11px] text-[#64748b]",children:[e.jsx("span",{className:"font-semibold text-[#475569]",children:"Subject:"})," ",I.subject||"General Math"," (Q",I.quarter||1,")"]})]}),I.curriculumCompetency&&e.jsxs("p",{className:"text-[11px] text-[#4f46e5] font-semibold mt-2 bg-indigo-50/50 px-2 py-1 rounded inline-block",children:["Competency: ",I.curriculumCompetency]}),e.jsx("div",{className:"mt-3 flex items-center justify-between",children:e.jsxs("p",{className:"text-[11px] text-[#64748b]",children:["Publish readiness: ",e.jsx("span",{className:`font-semibold ${I.publishReady?"text-emerald-600":"text-rose-500"}`,children:I.publishReady?"Ready":"Blocked"})]})}),I.warnings.length>0&&e.jsx("p",{className:"text-[11px] text-amber-600 mt-2 bg-amber-50 px-2 py-1.5 rounded",children:I.warnings.join(" ")})]}),I.lessonObjective&&e.jsxs("div",{className:"bg-white border border-[#e2e8f0] rounded-[14px] p-4 shadow-[0_1px_4px_rgba(0,0,0,0.02)]",children:[e.jsx("p",{className:"text-[10px] font-semibold text-[#64748b] uppercase tracking-wider mb-1.5",children:"Lesson objective"}),e.jsx("p",{className:"text-[13px] text-[#1e293b]",children:I.lessonObjective})]}),I.realWorldHook&&e.jsxs("div",{className:"bg-indigo-50/50 border border-indigo-100 rounded-[14px] p-4 shadow-[0_1px_4px_rgba(0,0,0,0.02)]",children:[e.jsx("p",{className:"text-[10px] font-semibold text-[#4f46e5] uppercase tracking-wider mb-1.5",children:"Real-life application"}),e.jsx("p",{className:"text-[13px] text-[#1e293b]",children:I.realWorldHook})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3 mt-4",children:St.map(P=>e.jsxs("div",{className:"border border-[#e2e8f0] rounded-[14px] p-4 bg-white shadow-[0_1px_4px_rgba(0,0,0,0.02)]",children:[e.jsx("h3",{className:"text-[13px] font-semibold text-[#1e293b]",children:P.title}),e.jsxs("p",{className:"text-[11px] text-[#64748b] mt-1",children:[P.estimatedMinutes," mins "," • "," ",P.strategy]}),e.jsx("p",{className:"text-[12px] text-[#475569] mt-2 bg-[#f8fafc] p-2 rounded-lg",children:P.objective}),e.jsxs("div",{className:"mt-3",children:[e.jsx("p",{className:"text-[10px] font-semibold text-[#64748b] uppercase tracking-wider mb-1.5",children:"Activities"}),P.activities.slice(0,2).map((Ae,Ye)=>e.jsxs("p",{className:"text-[11px] text-[#475569] mb-1 flex items-start gap-1",children:[e.jsx("span",{className:"text-[#94a3b8] mt-0.5",children:"•"})," ",e.jsx("span",{children:Ae})]},Ye))]})]},P.blockId))}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-4",children:[e.jsx(xt,{variant:"outline",onClick:()=>void rt(),disabled:$e||!I,className:"border-[#cbd5e1] text-[#475569] hover:bg-[#f8fafc] text-[12px] h-9 rounded-full px-5",children:$e?e.jsx(Ln,{className:"h-4 w-16"}):"Save Draft"}),e.jsx(xt,{onClick:()=>void Rt(),disabled:Ge||!I||!I.publishReady,className:"bg-[#10b981] hover:bg-[#059669] text-white text-[12px] h-9 rounded-full px-5",children:Ge?e.jsx(Ln,{className:"h-4 w-24 bg-white/35"}):"Publish Lesson Plan"})]})]})]})]})]})}),e.jsx("aside",{className:"w-[320px] 2xl:w-[340px] bg-white/70 backdrop-blur-[24px] border-l border-white shadow-[-4px_0_24px_rgba(0,0,0,0.02)] flex flex-col h-full shrink-0 overflow-y-auto z-10 no-scrollbar relative",children:e.jsxs("div",{className:"p-[24px] space-y-[24px] flex flex-col items-center",children:[e.jsxs("div",{className:"flex flex-col items-center text-center w-full",children:[e.jsx("img",{src:t.avatar,alt:t.name,className:"w-[96px] h-[96px] rounded-full object-cover shadow-[0_8px_16px_rgba(0,0,0,0.1)] mb-4 border-4 border-white z-10 relative"}),e.jsx("h2",{className:"text-[20px] font-semibold text-[#1e293b] mb-1",children:t.name}),e.jsxs("p",{className:"text-[11px] font-semibold text-[#64748b] mb-3 uppercase tracking-wider",children:["ID: ",t.id.substring(0,8)]}),e.jsx("span",{className:`text-[11px] font-semibold px-3 py-1 rounded-[14px] border ${t.riskLevel==="high"?"text-rose-600 bg-rose-50 border-rose-100":t.riskLevel==="medium"?"text-amber-600 bg-amber-50 border-amber-100":"text-emerald-600 bg-emerald-50 border-emerald-100"}`,children:t.riskLevel==="high"?"High Risk":t.riskLevel==="medium"?"Medium Risk":"Low Risk"})]}),e.jsxs("div",{className:"w-full grid grid-cols-2 gap-[12px]",children:[e.jsxs("div",{className:"bg-white/80 rounded-[14px] p-4 border border-white shadow-[0_1px_4px_rgba(0,0,0,0.02)] text-left flex flex-col justify-center",children:[e.jsx("p",{className:"text-[11px] font-semibold text-[#64748b] uppercase tracking-wider mb-1",children:"Avg Score"}),e.jsxs("p",{className:"text-[20px] font-bold text-[#4f46e5]",children:[t.avgScore,"%"]})]}),e.jsxs("div",{className:"bg-white/80 rounded-[14px] p-4 border border-white shadow-[0_1px_4px_rgba(0,0,0,0.02)] text-left flex flex-col justify-center",children:[e.jsx("p",{className:"text-[11px] font-semibold text-[#64748b] uppercase tracking-wider mb-1",children:"Engagement"}),e.jsx("p",{className:"text-[20px] font-bold text-[#1e293b]",children:t.avgScore>80?"High":t.avgScore>50?"Medium":"Low"})]}),e.jsxs("div",{className:"bg-white/80 rounded-[14px] p-4 border border-white shadow-[0_1px_4px_rgba(0,0,0,0.02)] text-left flex flex-col justify-center",children:[e.jsx("p",{className:"text-[11px] font-semibold text-[#64748b] uppercase tracking-wider mb-1",children:"Last Active"}),e.jsx("p",{className:"text-[13px] font-semibold text-[#1e293b] mt-1",children:t.lastActive})]}),e.jsxs("div",{className:"bg-rose-50/60 rounded-[14px] p-4 border border-rose-100 text-left flex flex-col justify-center",children:[e.jsx("p",{className:"text-[11px] font-semibold text-rose-600 uppercase tracking-wider mb-1",children:"Weakest Topic"}),e.jsx("p",{className:"text-[12px] font-semibold text-[#1e293b] mt-1 leading-snug break-words",title:t.weakestTopic,children:t.weakestTopic})]})]}),e.jsx("div",{className:"w-full flex flex-col gap-[10px]",children:e.jsxs("button",{onClick:async()=>{Z("choose"),R(!0)},className:"w-full flex items-center justify-center gap-2 bg-white hover:bg-[#f8fafc] text-[#475569] border border-[#cbd5e1] hover:border-[#94a3b8] text-[13px] font-semibold rounded-full px-4 py-3 shadow-[0_1px_4px_rgba(0,0,0,0.04)] transition-transform hover:scale-[1.02]",children:[e.jsx(Rc,{className:"w-4 h-4"})," Export Materials"]})}),T&&Ar.createPortal(e.jsxs("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",onClick:()=>R(!1),children:[e.jsx("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm"}),e.jsxs("div",{className:"relative bg-white rounded-[24px] shadow-[0_24px_64px_rgba(0,0,0,0.18)] w-full max-w-[460px] z-10 overflow-hidden",onClick:P=>P.stopPropagation(),children:[e.jsx("div",{className:"bg-gradient-to-r from-[#a855f7] to-[#9333ea] px-6 pt-5 pb-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[K==="bank"&&e.jsx("button",{onClick:()=>Z("choose"),className:"w-7 h-7 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors mr-1",children:e.jsx(Ss,{className:"w-4 h-4"})}),e.jsx("div",{className:"w-8 h-8 rounded-[8px] bg-white/20 flex items-center justify-center",children:e.jsx(Dr,{className:"w-4 h-4 text-white"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-[15px] font-bold text-white leading-tight",children:K==="choose"?"Export Materials":"Choose a Quiz"}),e.jsx("p",{className:"text-[11px] text-white/70 font-medium",children:K==="choose"?`For ${t.name}`:"Select a quiz from your bank"})]})]}),e.jsx("button",{onClick:()=>R(!1),className:"w-7 h-7 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors",children:e.jsx(cs,{className:"w-4 h-4"})})]})}),e.jsx("div",{className:"p-6",children:K==="choose"?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-[13px] text-[#64748b] mb-5 font-medium",children:"How would you like to proceed?"}),e.jsxs("button",{onClick:async()=>{oe(!0),Z("bank");try{const P=await ai(s);le(P)}catch{le([])}finally{oe(!1)}},className:"w-full flex items-start gap-4 p-4 rounded-[16px] border border-slate-200 hover:border-[#a855f7] hover:shadow-[0_4px_12px_rgba(168,85,247,0.08)] hover:bg-purple-50/30 transition-all group mb-3 text-left",children:[e.jsx("div",{className:"w-10 h-10 rounded-[10px] bg-purple-50 border border-purple-100 flex items-center justify-center shrink-0 group-hover:bg-purple-100 transition-colors",children:e.jsx(Za,{className:"w-5 h-5 text-[#a855f7]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[14px] font-bold text-[#1e293b] mb-0.5",children:"Choose from existing quizzes"}),e.jsx("p",{className:"text-[12px] text-[#64748b] font-medium",children:"Pick a quiz already in your Quiz Bank."})]})]}),e.jsxs("button",{onClick:()=>{R(!1),fe(!1),we(!0)},className:"w-full flex items-start gap-4 p-4 rounded-[16px] border border-slate-200 hover:border-[#a855f7] hover:shadow-[0_4px_12px_rgba(168,85,247,0.08)] hover:bg-purple-50/30 transition-all group text-left",children:[e.jsx("div",{className:"w-10 h-10 rounded-[10px] bg-purple-50 border border-purple-100 flex items-center justify-center shrink-0 group-hover:bg-purple-100 transition-colors",children:e.jsx($s,{className:"w-5 h-5 text-[#a855f7]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[14px] font-bold text-[#1e293b] mb-0.5",children:"Create a new quiz"}),e.jsx("p",{className:"text-[12px] text-[#64748b] font-medium",children:"Use AI Quiz Maker. You can return here when done."})]})]})]}):e.jsx("div",{children:$?e.jsxs("div",{className:"flex flex-col items-center justify-center py-10 gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-[#a855f7] border-t-transparent rounded-full animate-spin"}),e.jsx("p",{className:"text-[13px] text-[#64748b] font-medium",children:"Loading quizzes..."})]}):re.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-10 gap-3 text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-purple-50 flex items-center justify-center",children:e.jsx(Za,{className:"w-6 h-6 text-[#a855f7]"})}),e.jsx("p",{className:"text-[14px] font-semibold text-[#1e293b]",children:"No quizzes yet"}),e.jsx("p",{className:"text-[12px] text-[#64748b]",children:"Create your first quiz using the AI Quiz Maker."})]}):e.jsx("div",{className:"space-y-3 max-h-[320px] overflow-y-auto pr-1",children:re.map(P=>e.jsxs("div",{className:"flex items-center justify-between gap-3 p-4 rounded-[14px] border border-slate-200 hover:border-[#a855f7] hover:shadow-[0_2px_8px_rgba(168,85,247,0.08)] transition-all group",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-[13px] font-bold text-[#1e293b] truncate",children:P.title}),e.jsxs("p",{className:"text-[11px] text-[#64748b] font-medium mt-0.5",children:[P.questions?.length??0," questions",P.gradeLevel?` · ${P.gradeLevel}`:"",P.metadata?.topicsCovered?.[0]?` · ${P.metadata.topicsCovered[0]}`:""]})]}),e.jsx("button",{onClick:()=>{R(!1),me.success(`"${P.title}" selected for ${t.name}`)},className:"shrink-0 px-3 py-1.5 rounded-full bg-[#a855f7] text-white text-[11px] font-bold hover:bg-[#9333ea] transition-colors shadow-sm",children:"Assign"})]},P.id))})})})]})]}),document.body),pe&&Ar.createPortal(e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"fixed inset-0 z-[9998] bg-black/40 backdrop-blur-sm",onClick:()=>{se?Fe(!0):we(!1)}}),e.jsxs("div",{className:"fixed top-0 right-0 z-[9999] h-full w-full max-w-[88vw] xl:max-w-[1080px] bg-white shadow-[-8px_0_40px_rgba(0,0,0,0.15)] flex flex-col",style:{animation:"slideInFromRight 0.3s cubic-bezier(0.16,1,0.3,1)"},children:[e.jsxs("div",{className:"flex items-center gap-3 px-6 py-4 border-b border-slate-100 bg-white shrink-0",children:[e.jsxs("button",{onClick:()=>{se?Fe(!0):we(!1)},className:"flex items-center gap-2 text-[13px] font-semibold text-[#4f46e5] hover:text-[#3730a3] transition-colors bg-indigo-50 hover:bg-indigo-100 px-4 py-2 rounded-full",children:[e.jsx(Xa,{className:"w-4 h-4"}),"Back to ",t.name]}),e.jsx("div",{className:"h-5 w-px bg-slate-200"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-7 h-7 rounded-[8px] bg-gradient-to-br from-[#a855f7] to-[#9333ea] flex items-center justify-center",children:e.jsx(Dr,{className:"w-3.5 h-3.5 text-white"})}),e.jsx("span",{className:"text-[14px] font-bold text-[#1e293b]",children:"AI Quiz Maker"})]}),se&&e.jsx("span",{className:"ml-auto text-[11px] font-semibold text-amber-600 bg-amber-50 border border-amber-200 px-2.5 py-0.5 rounded-full",children:"Quiz in progress"})]}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(Yi,{onBack:()=>we(!1),drawerMode:!0,gradeLevel:t.grade,onQuizGenerating:()=>fe(!0),onQuizSaved:P=>{fe(!1),me.success("Quiz saved! Close this panel or create another.",{action:{label:"Close Panel",onClick:()=>we(!1)}})}})})]}),et&&e.jsxs("div",{className:"fixed inset-0 z-[10000] flex items-center justify-center p-4",children:[e.jsx("div",{className:"absolute inset-0 bg-black/60",onClick:()=>Fe(!1)}),e.jsxs("div",{className:"relative bg-white rounded-[20px] shadow-[0_24px_60px_rgba(0,0,0,0.2)] w-full max-w-[380px] p-7 z-10",children:[e.jsx("div",{className:"w-11 h-11 rounded-full bg-amber-50 border border-amber-200 flex items-center justify-center mb-4",children:e.jsx(or,{className:"w-5 h-5 text-amber-500"})}),e.jsx("h3",{className:"text-[16px] font-bold text-[#1e293b] mb-2",children:"Discard quiz progress?"}),e.jsx("p",{className:"text-[13px] text-[#64748b] font-medium mb-6",children:"Your current quiz session will be lost if you close this panel. This cannot be undone."}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx("button",{onClick:()=>Fe(!1),className:"flex-1 py-2.5 rounded-full border border-slate-200 text-[13px] font-semibold text-[#475569] hover:bg-slate-50 transition-colors",children:"Keep editing"}),e.jsx("button",{onClick:()=>{Fe(!1),we(!1),fe(!1)},className:"flex-1 py-2.5 rounded-full bg-rose-500 hover:bg-rose-600 text-white text-[13px] font-semibold transition-colors",children:"Discard & close"})]})]})]}),e.jsx("style",{children:` @keyframes slideInFromRight { diff --git a/assets/XPNotification-jBp7lMXB.js b/assets/XPNotification-EXiWPwap.js similarity index 92% rename from assets/XPNotification-jBp7lMXB.js rename to assets/XPNotification-EXiWPwap.js index ee1bdb24f6d48cffc7f6308c7f252ecff0e089a2..e55f8f1a90a19f89087821c8fd04dd8b77afd552 100644 --- a/assets/XPNotification-jBp7lMXB.js +++ b/assets/XPNotification-EXiWPwap.js @@ -1 +1 @@ -import{r as l,j as e}from"./vendor-react-B4AQeu28.js";import{h as n,m as i,a5 as m}from"./index-Dl2Y5a7s.js";import{S as c}from"./sparkles-DXDpj3ao.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const b=({xp:r,message:a,show:t,onComplete:s})=>(l.useEffect(()=>{if(t){const o=setTimeout(()=>{s()},3e3);return()=>clearTimeout(o)}},[t,s]),e.jsx(n,{children:t&&e.jsx(i.div,{initial:{opacity:0,y:-50,scale:.8},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-20,scale:.9},transition:{type:"spring",damping:25,stiffness:200},className:"fixed top-8 left-1/2 -translate-x-1/2 z-50",style:{willChange:"transform, opacity"},children:e.jsxs("div",{className:"bg-gradient-to-r from-rose-400 via-orange-500 to-rose-500 text-white px-6 py-4 rounded-2xl shadow-2xl border-2 border-rose-300 flex items-center gap-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"w-10 h-10 bg-white/20 rounded-xl flex items-center justify-center",children:e.jsx(m,{size:20,className:"text-white",fill:"currentColor"})}),e.jsx(i.div,{className:"absolute -top-1 -right-1",animate:{rotate:[0,360]},transition:{duration:2,repeat:1/0,ease:"linear"},style:{willChange:"transform"},children:e.jsx(c,{size:16,className:"text-rose-200"})})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-bold",children:a}),e.jsxs("p",{className:"text-2xl font-black",children:["+",r," XP"]})]})]})})}));export{b as default}; +import{r as l,j as e}from"./vendor-react-B4AQeu28.js";import{h as n,m as i,a5 as m}from"./index-pcr0VEFr.js";import{S as c}from"./sparkles-CcaVyiD_.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const b=({xp:r,message:a,show:t,onComplete:s})=>(l.useEffect(()=>{if(t){const o=setTimeout(()=>{s()},3e3);return()=>clearTimeout(o)}},[t,s]),e.jsx(n,{children:t&&e.jsx(i.div,{initial:{opacity:0,y:-50,scale:.8},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-20,scale:.9},transition:{type:"spring",damping:25,stiffness:200},className:"fixed top-8 left-1/2 -translate-x-1/2 z-50",style:{willChange:"transform, opacity"},children:e.jsxs("div",{className:"bg-gradient-to-r from-rose-400 via-orange-500 to-rose-500 text-white px-6 py-4 rounded-2xl shadow-2xl border-2 border-rose-300 flex items-center gap-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"w-10 h-10 bg-white/20 rounded-xl flex items-center justify-center",children:e.jsx(m,{size:20,className:"text-white",fill:"currentColor"})}),e.jsx(i.div,{className:"absolute -top-1 -right-1",animate:{rotate:[0,360]},transition:{duration:2,repeat:1/0,ease:"linear"},style:{willChange:"transform"},children:e.jsx(c,{size:16,className:"text-rose-200"})})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-bold",children:a}),e.jsxs("p",{className:"text-2xl font-black",children:["+",r," XP"]})]})]})})}));export{b as default}; diff --git a/assets/automationService-D0yPPxhq.js b/assets/automationService-wHepcbie.js similarity index 98% rename from assets/automationService-D0yPPxhq.js rename to assets/automationService-wHepcbie.js index b22e8030840db442e320b4b79801be1f4697c613..634ce905b10fabcb6fa2c8071c536708a7fa691b 100644 --- a/assets/automationService-D0yPPxhq.js +++ b/assets/automationService-wHepcbie.js @@ -1 +1 @@ -import{doc as g,collection as a,serverTimestamp as c,setDoc as l,addDoc as D,query as b,where as z,getDocs as A,updateDoc as C,writeBatch as Q}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as r,b3 as $}from"./index-Dl2Y5a7s.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const m=async(e,n,o,u,i)=>{try{const t=g(a(r,"notifications")),s={id:t.id,userId:e,type:n,title:o,message:u,read:!1,...i?{actionUrl:i}:{},createdAt:new Date},d={id:s.id,userId:s.userId,type:s.type,title:s.title,message:s.message,read:s.read,createdAt:c(),link:i||null};return await l(t,{...d}),s}catch(t){throw console.error("Error creating notification:",t),t}};async function E(e){if(!e)return 0;const n=a(r,"deepDiagnosticAssignments"),o=b(n,z("lrn","==",e));return(await A(o)).docs.filter(i=>{const t=i.data().status;return t==="pending"||t==="queued"||t==="in_progress"||t==="expired"}).length}async function M(e,n,o="Grade 11",u,i="iar_only",t="initial_assessment"){if(t==="followup_diagnostic"){const s=a(r,"deepDiagnosticAssignments"),d=b(s,z("lrn","==",e)),f=await A(d);if(!f.empty){const p=Q(r);let w=!1;for(const h of f.docs){const I=h.data().status;(I==="pending"||I==="queued")&&(p.update(h.ref,{status:"in_progress",startedAt:c()}),w=!0)}w&&await p.commit()}}return await l(g(r,"diagnosticResults",e),{lrn:e,results:n,gradeLevel:o,workflowMode:i,assessmentType:t,questionBreakdown:u||null,completedAt:c(),processed:!1,processing:!1}),{success:!0,event:"diagnostic_completed",lrn:e,message:`Diagnostic submitted for ${e}. Processing will begin automatically.`,remedialQuizzesCreated:0,notifications:["Your diagnostic results are being processed. Check back shortly!"]}}async function x(e){return await D(a(r,"quizResults"),{lrn:e.lrn,studentId:e.lrn,quizId:e.quizId,subject:e.subject,score:e.score,totalQuestions:e.totalQuestions,correctAnswers:e.correctAnswers,timeSpentSeconds:e.timeSpentSeconds,answers:e.answers||null,submittedAt:c()}),{success:!0,event:"quiz_submitted",lrn:e.lrn,message:`Quiz submitted for ${e.lrn}. Risk recalculation will run automatically.`,remedialQuizzesCreated:0,notifications:[`Quiz result recorded for ${e.subject}.`]}}async function N(e){return await $(e.lrn),await m(e.lrn,"reminder","Welcome to MathPulse AI!","Complete your diagnostic assessment to get started with personalised learning."),e.teacherId&&await m(e.teacherId,"message","New Student Enrolled",`${e.name} has joined. Diagnostic assessment is pending.`),{success:!0,event:"student_enrolled",lrn:e.lrn,message:`Student ${e.name} enrolled and initialised`,remedialQuizzesCreated:0,notifications:[`Welcome ${e.name}! Please complete the diagnostic assessment.`]}}async function W(e){return await D(a(r,"dataImports"),{teacherId:e.teacherId,studentCount:e.students.length,columnMapping:e.columnMapping,importedAt:c(),processed:!1}),await m(e.teacherId,"message","Data Import Processed",`Data import complete — ${e.students.length} student records processed.`),{success:!0,event:"data_imported",message:`Data import processed for ${e.students.length} students`,remedialQuizzesCreated:0,notifications:[`Data import complete — ${e.students.length} student records processed.`]}}async function G(e){const n=g(r,"curriculumContent",e.contentId);return e.action==="delete"?await C(n,{deleted:!0,deletedBy:e.adminId,deletedAt:c(),contentType:e.contentType,subjectId:e.subjectId||null}):await l(n,{contentType:e.contentType,subjectId:e.subjectId||null,details:e.details||null,updatedBy:e.adminId,action:e.action,updatedAt:c()},{merge:!0}),{success:!0,event:"content_updated",message:`Content ${e.action} processed for ${e.contentType}`,remedialQuizzesCreated:0,notifications:[]}}export{E as getPendingDeepDiagnosticCount,G as triggerContentUpdated,W as triggerDataImported,M as triggerDiagnosticCompleted,x as triggerQuizSubmitted,N as triggerStudentEnrolled}; +import{doc as g,collection as a,serverTimestamp as c,setDoc as l,addDoc as D,query as b,where as z,getDocs as A,updateDoc as C,writeBatch as Q}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as r,b3 as $}from"./index-pcr0VEFr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const m=async(e,n,o,u,i)=>{try{const t=g(a(r,"notifications")),s={id:t.id,userId:e,type:n,title:o,message:u,read:!1,...i?{actionUrl:i}:{},createdAt:new Date},d={id:s.id,userId:s.userId,type:s.type,title:s.title,message:s.message,read:s.read,createdAt:c(),link:i||null};return await l(t,{...d}),s}catch(t){throw console.error("Error creating notification:",t),t}};async function E(e){if(!e)return 0;const n=a(r,"deepDiagnosticAssignments"),o=b(n,z("lrn","==",e));return(await A(o)).docs.filter(i=>{const t=i.data().status;return t==="pending"||t==="queued"||t==="in_progress"||t==="expired"}).length}async function M(e,n,o="Grade 11",u,i="iar_only",t="initial_assessment"){if(t==="followup_diagnostic"){const s=a(r,"deepDiagnosticAssignments"),d=b(s,z("lrn","==",e)),f=await A(d);if(!f.empty){const p=Q(r);let w=!1;for(const h of f.docs){const I=h.data().status;(I==="pending"||I==="queued")&&(p.update(h.ref,{status:"in_progress",startedAt:c()}),w=!0)}w&&await p.commit()}}return await l(g(r,"diagnosticResults",e),{lrn:e,results:n,gradeLevel:o,workflowMode:i,assessmentType:t,questionBreakdown:u||null,completedAt:c(),processed:!1,processing:!1}),{success:!0,event:"diagnostic_completed",lrn:e,message:`Diagnostic submitted for ${e}. Processing will begin automatically.`,remedialQuizzesCreated:0,notifications:["Your diagnostic results are being processed. Check back shortly!"]}}async function x(e){return await D(a(r,"quizResults"),{lrn:e.lrn,studentId:e.lrn,quizId:e.quizId,subject:e.subject,score:e.score,totalQuestions:e.totalQuestions,correctAnswers:e.correctAnswers,timeSpentSeconds:e.timeSpentSeconds,answers:e.answers||null,submittedAt:c()}),{success:!0,event:"quiz_submitted",lrn:e.lrn,message:`Quiz submitted for ${e.lrn}. Risk recalculation will run automatically.`,remedialQuizzesCreated:0,notifications:[`Quiz result recorded for ${e.subject}.`]}}async function N(e){return await $(e.lrn),await m(e.lrn,"reminder","Welcome to MathPulse AI!","Complete your diagnostic assessment to get started with personalised learning."),e.teacherId&&await m(e.teacherId,"message","New Student Enrolled",`${e.name} has joined. Diagnostic assessment is pending.`),{success:!0,event:"student_enrolled",lrn:e.lrn,message:`Student ${e.name} enrolled and initialised`,remedialQuizzesCreated:0,notifications:[`Welcome ${e.name}! Please complete the diagnostic assessment.`]}}async function W(e){return await D(a(r,"dataImports"),{teacherId:e.teacherId,studentCount:e.students.length,columnMapping:e.columnMapping,importedAt:c(),processed:!1}),await m(e.teacherId,"message","Data Import Processed",`Data import complete — ${e.students.length} student records processed.`),{success:!0,event:"data_imported",message:`Data import processed for ${e.students.length} students`,remedialQuizzesCreated:0,notifications:[`Data import complete — ${e.students.length} student records processed.`]}}async function G(e){const n=g(r,"curriculumContent",e.contentId);return e.action==="delete"?await C(n,{deleted:!0,deletedBy:e.adminId,deletedAt:c(),contentType:e.contentType,subjectId:e.subjectId||null}):await l(n,{contentType:e.contentType,subjectId:e.subjectId||null,details:e.details||null,updatedBy:e.adminId,action:e.action,updatedAt:c()},{merge:!0}),{success:!0,event:"content_updated",message:`Content ${e.action} processed for ${e.contentType}`,remedialQuizzesCreated:0,notifications:[]}}export{E as getPendingDeepDiagnosticCount,G as triggerContentUpdated,W as triggerDataImported,M as triggerDiagnosticCompleted,x as triggerQuizSubmitted,N as triggerStudentEnrolled}; diff --git a/assets/bell-D8HSQb3o.js b/assets/bell-t5TgufAG.js similarity index 91% rename from assets/bell-D8HSQb3o.js rename to assets/bell-t5TgufAG.js index f67700e677d55ae07e33f626b1e1661b3e798b28..d450ed566bdf65e452fbb574b779f08ecf794c45 100644 --- a/assets/bell-D8HSQb3o.js +++ b/assets/bell-t5TgufAG.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/button-pKF8t5En.js b/assets/button-AeTtN-Gk.js similarity index 97% rename from assets/button-pKF8t5En.js rename to assets/button-AeTtN-Gk.js index 921cb1220bb59e89d94608601b2714167d232642..b0f8798c0a609998ecc3875aec55de56cdf92136 100644 --- a/assets/button-pKF8t5En.js +++ b/assets/button-AeTtN-Gk.js @@ -1 +1 @@ -import{j as y}from"./vendor-react-B4AQeu28.js";import{S as k}from"./vendor-radix-BPuEd8FG.js";import{c as V}from"./vendor-charts-D7t7JfSr.js";import{n as p}from"./index-Dl2Y5a7s.js";const g=n=>typeof n=="boolean"?`${n}`:n===0?"0":n,m=V,j=(n,r)=>e=>{var o;if(r?.variants==null)return m(n,e?.class,e?.className);const{variants:u,defaultVariants:i}=r,b=Object.keys(u).map(t=>{const a=e?.[t],d=i?.[t];if(a===null)return null;const s=g(a)||g(d);return u[t][s]}),v=e&&Object.entries(e).reduce((t,a)=>{let[d,s]=a;return s===void 0||(t[d]=s),t},{}),f=r==null||(o=r.compoundVariants)===null||o===void 0?void 0:o.reduce((t,a)=>{let{class:d,className:s,...h}=a;return Object.entries(h).every(x=>{let[c,l]=x;return Array.isArray(l)?l.includes({...i,...v}[c]):{...i,...v}[c]===l})?[...t,d,s]:t},[]);return m(n,b,f,e?.class,e?.className)},N=j("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9 rounded-md"}},defaultVariants:{variant:"default",size:"default"}});function w({className:n,variant:r,size:e,asChild:o=!1,...u}){const i=o?k:"button";return y.jsx(i,{"data-slot":"button",className:p(N({variant:r,size:e,className:n})),...u})}export{w as B,j as c}; +import{j as y}from"./vendor-react-B4AQeu28.js";import{S as k}from"./vendor-radix-BPuEd8FG.js";import{c as V}from"./vendor-charts-D7t7JfSr.js";import{n as p}from"./index-pcr0VEFr.js";const g=n=>typeof n=="boolean"?`${n}`:n===0?"0":n,m=V,j=(n,r)=>e=>{var o;if(r?.variants==null)return m(n,e?.class,e?.className);const{variants:u,defaultVariants:i}=r,b=Object.keys(u).map(t=>{const a=e?.[t],d=i?.[t];if(a===null)return null;const s=g(a)||g(d);return u[t][s]}),v=e&&Object.entries(e).reduce((t,a)=>{let[d,s]=a;return s===void 0||(t[d]=s),t},{}),f=r==null||(o=r.compoundVariants)===null||o===void 0?void 0:o.reduce((t,a)=>{let{class:d,className:s,...h}=a;return Object.entries(h).every(x=>{let[c,l]=x;return Array.isArray(l)?l.includes({...i,...v}[c]):{...i,...v}[c]===l})?[...t,d,s]:t},[]);return m(n,b,f,e?.class,e?.className)},N=j("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9 rounded-md"}},defaultVariants:{variant:"default",size:"default"}});function w({className:n,variant:r,size:e,asChild:o=!1,...u}){const i=o?k:"button";return y.jsx(i,{"data-slot":"button",className:p(N({variant:r,size:e,className:n})),...u})}export{w as B,j as c}; diff --git a/assets/chart-column-CaIU59ve.js b/assets/chart-column-BNfaspCb.js similarity index 89% rename from assets/chart-column-CaIU59ve.js rename to assets/chart-column-BNfaspCb.js index 7658d16be890b6b4f6957d8c1b0ffecc76443059..e33c59075aff65dd8d747e85aaf377ebee5e780c 100644 --- a/assets/chart-column-CaIU59ve.js +++ b/assets/chart-column-BNfaspCb.js @@ -1,4 +1,4 @@ -import{e as t}from"./index-Dl2Y5a7s.js";/** +import{e as t}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/chatService-DIDnODj8.js b/assets/chatService-DIwOtBFg.js similarity index 97% rename from assets/chatService-DIDnODj8.js rename to assets/chatService-DIwOtBFg.js index cf0d6c6866a25bd81a0928f329bffbe038c5b8ed..cbf7c582115d9944fddfa5acb851b34041c3271e 100644 --- a/assets/chatService-DIDnODj8.js +++ b/assets/chatService-DIwOtBFg.js @@ -1 +1 @@ -import{doc as c,collection as u,getDoc as g,serverTimestamp as i,setDoc as w,updateDoc as p,query as l,where as d,orderBy as y,getDocs as A}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as a}from"./index-Dl2Y5a7s.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const Q=async(s,t="New Conversation")=>{try{const e=c(u(a,"chatSessions")),n={id:e.id,userId:s,title:t,messages:[],createdAt:new Date,updatedAt:new Date,isActive:!0};return await w(e,{...n,createdAt:i(),updatedAt:i()}),n}catch(e){throw console.error("Error creating chat session:",e),e}},R=async s=>{try{const t=l(u(a,"chatSessions"),d("userId","==",s),d("isActive","==",!0),y("updatedAt","desc"));return(await A(t)).docs.map(n=>{const r=n.data();return{...r,createdAt:r.createdAt?.toDate()||new Date,updatedAt:r.updatedAt?.toDate()||new Date}})}catch(t){return console.error("Error getting chat sessions:",t),[]}},b=async s=>{try{const t=await g(c(a,"chatSessions",s));if(t.exists()){const e=t.data();return{...e,createdAt:e.createdAt?.toDate()||new Date,updatedAt:e.updatedAt?.toDate()||new Date}}return null}catch(t){return console.error("Error getting chat session:",t),null}},q=async(s,t,e,n)=>{try{const r=c(u(a,"chatMessages")),o={id:r.id,userId:"",role:t,content:e,timestamp:new Date,...n?{context:n}:{}},m=await g(c(a,"chatSessions",s));m.exists()&&(o.userId=m.data().userId);const h={id:o.id,userId:o.userId,role:o.role,content:o.content,sessionId:s,timestamp:i()};return o.context&&(h.context=o.context),await w(r,h),await p(c(a,"chatSessions",s),{updatedAt:i()}),o}catch(r){throw console.error("Error adding message:",r),r}},B=async(s,t)=>{try{const e=l(u(a,"chatMessages"),d("sessionId","==",s),d("userId","==",t),y("timestamp","asc"));return(await A(e)).docs.map(r=>{const o=r.data();return{...o,timestamp:o.timestamp?.toDate()||new Date}})}catch(e){return console.error("Error getting session messages:",e),[]}},N=async(s,t)=>{try{await p(c(a,"chatSessions",s),{title:t,updatedAt:i()})}catch(e){throw console.error("Error updating session title:",e),e}},U=async s=>{try{await p(c(a,"chatSessions",s),{isActive:!1,updatedAt:i()})}catch(t){throw console.error("Error deleting session:",t),t}};export{q as addMessageToSession,Q as createChatSession,U as deleteSession,b as getChatSession,B as getSessionMessages,R as getUserChatSessions,N as updateSessionTitle}; +import{doc as c,collection as u,getDoc as g,serverTimestamp as i,setDoc as w,updateDoc as p,query as l,where as d,orderBy as y,getDocs as A}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as a}from"./index-pcr0VEFr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const Q=async(s,t="New Conversation")=>{try{const e=c(u(a,"chatSessions")),n={id:e.id,userId:s,title:t,messages:[],createdAt:new Date,updatedAt:new Date,isActive:!0};return await w(e,{...n,createdAt:i(),updatedAt:i()}),n}catch(e){throw console.error("Error creating chat session:",e),e}},R=async s=>{try{const t=l(u(a,"chatSessions"),d("userId","==",s),d("isActive","==",!0),y("updatedAt","desc"));return(await A(t)).docs.map(n=>{const r=n.data();return{...r,createdAt:r.createdAt?.toDate()||new Date,updatedAt:r.updatedAt?.toDate()||new Date}})}catch(t){return console.error("Error getting chat sessions:",t),[]}},b=async s=>{try{const t=await g(c(a,"chatSessions",s));if(t.exists()){const e=t.data();return{...e,createdAt:e.createdAt?.toDate()||new Date,updatedAt:e.updatedAt?.toDate()||new Date}}return null}catch(t){return console.error("Error getting chat session:",t),null}},q=async(s,t,e,n)=>{try{const r=c(u(a,"chatMessages")),o={id:r.id,userId:"",role:t,content:e,timestamp:new Date,...n?{context:n}:{}},m=await g(c(a,"chatSessions",s));m.exists()&&(o.userId=m.data().userId);const h={id:o.id,userId:o.userId,role:o.role,content:o.content,sessionId:s,timestamp:i()};return o.context&&(h.context=o.context),await w(r,h),await p(c(a,"chatSessions",s),{updatedAt:i()}),o}catch(r){throw console.error("Error adding message:",r),r}},B=async(s,t)=>{try{const e=l(u(a,"chatMessages"),d("sessionId","==",s),d("userId","==",t),y("timestamp","asc"));return(await A(e)).docs.map(r=>{const o=r.data();return{...o,timestamp:o.timestamp?.toDate()||new Date}})}catch(e){return console.error("Error getting session messages:",e),[]}},N=async(s,t)=>{try{await p(c(a,"chatSessions",s),{title:t,updatedAt:i()})}catch(e){throw console.error("Error updating session title:",e),e}},U=async s=>{try{await p(c(a,"chatSessions",s),{isActive:!1,updatedAt:i()})}catch(t){throw console.error("Error deleting session:",t),t}};export{q as addMessageToSession,Q as createChatSession,U as deleteSession,b as getChatSession,B as getSessionMessages,R as getUserChatSessions,N as updateSessionTitle}; diff --git a/assets/check-BoG998GJ.js b/assets/check-DcmcqBba.js similarity index 85% rename from assets/check-BoG998GJ.js rename to assets/check-DcmcqBba.js index 525a8abe34c9fb82127cbf4438d0447c0b22f9b7..02524eb68a17fe5b3587b14f605fed7ff41159a6 100644 --- a/assets/check-BoG998GJ.js +++ b/assets/check-DcmcqBba.js @@ -1,4 +1,4 @@ -import{e as c}from"./index-Dl2Y5a7s.js";/** +import{e as c}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/chevron-left-BLeucdCi.js b/assets/chevron-left-DV53pVuv.js similarity index 86% rename from assets/chevron-left-BLeucdCi.js rename to assets/chevron-left-DV53pVuv.js index 1da132dbfae33602704df115975602aea0784d15..301a62fa02f7a18e55865dd6a3aa4faacc33bbc2 100644 --- a/assets/chevron-left-BLeucdCi.js +++ b/assets/chevron-left-DV53pVuv.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/chevron-right-D8o3zg2m.js b/assets/chevron-right-BMVCfzLO.js similarity index 85% rename from assets/chevron-right-D8o3zg2m.js rename to assets/chevron-right-BMVCfzLO.js index 5bc2656603ee48be4e4db98d27cefdabd7bd4ee6..229e15dbbc8b17625f7b5e70e568ccd78a097e40 100644 --- a/assets/chevron-right-D8o3zg2m.js +++ b/assets/chevron-right-BMVCfzLO.js @@ -1,4 +1,4 @@ -import{e as o}from"./index-Dl2Y5a7s.js";/** +import{e as o}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/chevron-up-bHLZImYg.js b/assets/chevron-up-D_gmtVKu.js similarity index 92% rename from assets/chevron-up-bHLZImYg.js rename to assets/chevron-up-D_gmtVKu.js index c123f79022777519885b040888997d0584b301bf..27ba3e4fa8ed8ded5748312247d95ea02f5ceaee 100644 --- a/assets/chevron-up-bHLZImYg.js +++ b/assets/chevron-up-D_gmtVKu.js @@ -1,4 +1,4 @@ -import{e as o}from"./index-Dl2Y5a7s.js";/** +import{e as o}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/circle-alert-CmKGy6F7.js b/assets/circle-alert-BVTBnraV.js similarity index 90% rename from assets/circle-alert-CmKGy6F7.js rename to assets/circle-alert-BVTBnraV.js index 9246bedc4f42ba2abaa90e26e29bff0228747682..d0f3b72607027d9676d76f441d939a333dd5216b 100644 --- a/assets/circle-alert-CmKGy6F7.js +++ b/assets/circle-alert-BVTBnraV.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/circle-check-OLox8hf3.js b/assets/circle-check-DWLljvZa.js similarity index 87% rename from assets/circle-check-OLox8hf3.js rename to assets/circle-check-DWLljvZa.js index eb423ca520d4ce9d8399e9c77c09b566053f490d..d9d2089e8b4f8782ab388b9607144d9dfc1888d1 100644 --- a/assets/circle-check-OLox8hf3.js +++ b/assets/circle-check-DWLljvZa.js @@ -1,4 +1,4 @@ -import{e as c}from"./index-Dl2Y5a7s.js";/** +import{e as c}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/circle-check-big-D4jhmnoW.js b/assets/circle-check-big-C3Ampp76.js similarity index 88% rename from assets/circle-check-big-D4jhmnoW.js rename to assets/circle-check-big-C3Ampp76.js index fac67783e4e67b4b4fd12fdff785f1611ce2b358..8da7cb1d8c573b917542b17bb8fa4c1a90f14ba9 100644 --- a/assets/circle-check-big-D4jhmnoW.js +++ b/assets/circle-check-big-C3Ampp76.js @@ -1,4 +1,4 @@ -import{e as c}from"./index-Dl2Y5a7s.js";/** +import{e as c}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/circle-help-7egOqUPg.js b/assets/circle-help-DA-BsSug.js similarity index 89% rename from assets/circle-help-7egOqUPg.js rename to assets/circle-help-DA-BsSug.js index 977d32409470f2ba9395801f2f2cc3837f63e95f..f57952edefd4f89be8207472eb6dac3688f46e28 100644 --- a/assets/circle-help-7egOqUPg.js +++ b/assets/circle-help-DA-BsSug.js @@ -1,4 +1,4 @@ -import{e as c}from"./index-Dl2Y5a7s.js";/** +import{e as c}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/clipboard-check-CVikGlbr.js b/assets/clipboard-check-CrnXJj6c.js similarity index 91% rename from assets/clipboard-check-CVikGlbr.js rename to assets/clipboard-check-CrnXJj6c.js index b476c99fbfe0d770bbd6d7c676fb6df590592e7c..bdfbe811868bf8688cb05e40f7be69eed8e317a4 100644 --- a/assets/clipboard-check-CVikGlbr.js +++ b/assets/clipboard-check-CrnXJj6c.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/clock-Dcq6nfrf.js b/assets/clock-BUvVFwS_.js similarity index 87% rename from assets/clock-Dcq6nfrf.js rename to assets/clock-BUvVFwS_.js index 4cf224ef4f431f6b54996fab07e64c9bd3666db1..d046b307bb7e250ccd9c66263912c1b341af6574 100644 --- a/assets/clock-Dcq6nfrf.js +++ b/assets/clock-BUvVFwS_.js @@ -1,4 +1,4 @@ -import{e as c}from"./index-Dl2Y5a7s.js";/** +import{e as c}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/diagnosticService-Db0MAPHF.js b/assets/diagnosticService-DXc8cCUG.js similarity index 91% rename from assets/diagnosticService-Db0MAPHF.js rename to assets/diagnosticService-DXc8cCUG.js index 04afd15f6dfa0f8aa8bf724d06d1fafde1d3450d..a71faaba36e66e3d4deb1eef23bd830dfd91a22a 100644 --- a/assets/diagnosticService-Db0MAPHF.js +++ b/assets/diagnosticService-DXc8cCUG.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Dl2Y5a7s.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-ZLSkO1Xv.css"])))=>i.map(i=>d[i]); -import{_ as w}from"./index-Dl2Y5a7s.js";const y="https://deign86-mathpulse-api-v3test.hf.space";async function P(g,h){const f=`${y}/api/diagnostic/generate`,{auth:i}=await w(async()=>{const{auth:e}=await import("./index-Dl2Y5a7s.js").then(a=>a.b5);return{auth:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),c=i.currentUser,l=async()=>{const e=new Headers({"Content-Type":"application/json"});if(c){const a=await c.getIdToken(!1);a&&e.set("Authorization",`Bearer ${a}`)}return e},u=async e=>fetch(f,{method:"POST",headers:await l(),body:JSON.stringify({strand:g,grade_level:h}),signal:e}),d=(e,a)=>{let t="Something went wrong. Please try again.";try{const s=JSON.parse(a);if(s.detail){const o=String(s.detail);o.includes("Database unavailable")||o.includes("unavailable")?t="Our servers are temporarily busy. Please try again in a moment.":o.includes("timeout")||o.includes("timed out")?t="The request timed out. Please check your connection and try again.":t=o}}catch{!e.ok&&a&&(t="Failed to start assessment. Please try again.")}return t},n=2,r=3e4;for(let e=1;e<=n;e++){const a=new AbortController,t=setTimeout(()=>a.abort(),r);try{const s=await u(a.signal);if(s.ok)return clearTimeout(t),s.json();if(s.status>=400&&s.status<500){clearTimeout(t);const m=await s.text().catch(()=>"");throw new Error(d(s,m))}const o=await s.text().catch(()=>""),p=d(s,o);if(clearTimeout(t),esetTimeout(T,m));continue}throw new Error(p)}catch(s){if(clearTimeout(t),s instanceof DOMException&&s.name==="AbortError"){if(e{const{auth:n}=await import("./index-Dl2Y5a7s.js").then(r=>r.b5);return{auth:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),l=c.currentUser;if(l){const n=await l.getIdToken(!1);n&&i.set("Authorization",`Bearer ${n}`)}const u=new AbortController,d=setTimeout(()=>u.abort(),6e4);try{const n=await fetch(f,{method:"POST",headers:i,body:JSON.stringify({test_id:g,responses:h}),signal:u.signal});if(!n.ok){const r=await n.text().catch(()=>"");let e="Something went wrong. Please try again.";try{const a=JSON.parse(r);if(a.detail){const t=String(a.detail);t.includes("session")||t.includes("not found")?e="Your assessment session has expired. Please restart the assessment.":t.includes("Database unavailable")||t.includes("unavailable")?e="Our servers are temporarily busy. Please try again in a moment.":t.includes("timeout")||t.includes("timed out")?e="The request timed out. Please check your connection and try again.":e=t}}catch{r.includes("404")||r.includes("not found")?e="Your assessment session has expired. Please restart the assessment.":r&&(e="Something went wrong. Please try again.")}throw new Error(e)}return n.json()}finally{clearTimeout(d)}}export{P as g,_ as s}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-pcr0VEFr.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/index-Bm8ni9Xq.css"])))=>i.map(i=>d[i]); +import{_ as w}from"./index-pcr0VEFr.js";const y="https://deign86-mathpulse-api-v3test.hf.space";async function P(g,h){const f=`${y}/api/diagnostic/generate`,{auth:i}=await w(async()=>{const{auth:e}=await import("./index-pcr0VEFr.js").then(a=>a.b5);return{auth:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),c=i.currentUser,l=async()=>{const e=new Headers({"Content-Type":"application/json"});if(c){const a=await c.getIdToken(!1);a&&e.set("Authorization",`Bearer ${a}`)}return e},u=async e=>fetch(f,{method:"POST",headers:await l(),body:JSON.stringify({strand:g,grade_level:h}),signal:e}),d=(e,a)=>{let t="Something went wrong. Please try again.";try{const s=JSON.parse(a);if(s.detail){const o=String(s.detail);o.includes("Database unavailable")||o.includes("unavailable")?t="Our servers are temporarily busy. Please try again in a moment.":o.includes("timeout")||o.includes("timed out")?t="The request timed out. Please check your connection and try again.":t=o}}catch{!e.ok&&a&&(t="Failed to start assessment. Please try again.")}return t},n=2,r=3e4;for(let e=1;e<=n;e++){const a=new AbortController,t=setTimeout(()=>a.abort(),r);try{const s=await u(a.signal);if(s.ok)return clearTimeout(t),s.json();if(s.status>=400&&s.status<500){clearTimeout(t);const m=await s.text().catch(()=>"");throw new Error(d(s,m))}const o=await s.text().catch(()=>""),p=d(s,o);if(clearTimeout(t),esetTimeout(T,m));continue}throw new Error(p)}catch(s){if(clearTimeout(t),s instanceof DOMException&&s.name==="AbortError"){if(e{const{auth:n}=await import("./index-pcr0VEFr.js").then(r=>r.b5);return{auth:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),l=c.currentUser;if(l){const n=await l.getIdToken(!1);n&&i.set("Authorization",`Bearer ${n}`)}const u=new AbortController,d=setTimeout(()=>u.abort(),6e4);try{const n=await fetch(f,{method:"POST",headers:i,body:JSON.stringify({test_id:g,responses:h}),signal:u.signal});if(!n.ok){const r=await n.text().catch(()=>"");let e="Something went wrong. Please try again.";try{const a=JSON.parse(r);if(a.detail){const t=String(a.detail);t.includes("session")||t.includes("not found")?e="Your assessment session has expired. Please restart the assessment.":t.includes("Database unavailable")||t.includes("unavailable")?e="Our servers are temporarily busy. Please try again in a moment.":t.includes("timeout")||t.includes("timed out")?e="The request timed out. Please check your connection and try again.":e=t}}catch{r.includes("404")||r.includes("not found")?e="Your assessment session has expired. Please restart the assessment.":r&&(e="Something went wrong. Please try again.")}throw new Error(e)}return n.json()}finally{clearTimeout(d)}}export{P as g,_ as s}; diff --git a/assets/dialog-DuLafn8Q.js b/assets/dialog-CD4cPDri.js similarity index 96% rename from assets/dialog-DuLafn8Q.js rename to assets/dialog-CD4cPDri.js index acb3cfae3ec2903a73c0a88b301a7ba901fdd05f..d6223643e5caeb0fbdba8be81791790b32f854cd 100644 --- a/assets/dialog-DuLafn8Q.js +++ b/assets/dialog-CD4cPDri.js @@ -1,4 +1,4 @@ -import{e as g,n as s}from"./index-Dl2Y5a7s.js";import{j as t,r as d}from"./vendor-react-B4AQeu28.js";import{b as m,c as l,d as p,T as n,D as i,P as u,O as r}from"./vendor-radix-BPuEd8FG.js";import{X as x}from"./x-wHRRR-gQ.js";/** +import{e as g,n as s}from"./index-pcr0VEFr.js";import{j as t,r as d}from"./vendor-react-B4AQeu28.js";import{b as m,c as l,d as p,T as n,D as i,P as u,O as r}from"./vendor-radix-BPuEd8FG.js";import{X as x}from"./x-W9f2bIhn.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/dollar-sign-CJnvMNrk.js b/assets/dollar-sign-CsIn4CzM.js similarity index 89% rename from assets/dollar-sign-CJnvMNrk.js rename to assets/dollar-sign-CsIn4CzM.js index 1474e0119b26eb08ea9af73ce90c1442d9cfcee2..8f6eef0c6882bd9b9c6d7745435b218f42d8e945 100644 --- a/assets/dollar-sign-CJnvMNrk.js +++ b/assets/dollar-sign-CsIn4CzM.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/download-Bvx53dXJ.js b/assets/download-DnmwFFXB.js similarity index 89% rename from assets/download-Bvx53dXJ.js rename to assets/download-DnmwFFXB.js index 1e2386dcd8db82c7491b87d529a51dfcbffd9745..8939e1437a4c4c849df3aa1121bd89600016245c 100644 --- a/assets/download-Bvx53dXJ.js +++ b/assets/download-DnmwFFXB.js @@ -1,4 +1,4 @@ -import{e as o}from"./index-Dl2Y5a7s.js";/** +import{e as o}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/eye-BEaH2B-8.js b/assets/eye-5Jz6KeDY.js similarity index 96% rename from assets/eye-BEaH2B-8.js rename to assets/eye-5Jz6KeDY.js index 33b353189f38e57b31972e8752dbbecebf90ed49..8171af7c8c839d74f9a187368aa7081af9f08649 100644 --- a/assets/eye-BEaH2B-8.js +++ b/assets/eye-5Jz6KeDY.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/formatDistanceToNow-E-4T8g7c.js b/assets/formatDistanceToNow-rY3oGFbJ.js similarity index 99% rename from assets/formatDistanceToNow-E-4T8g7c.js rename to assets/formatDistanceToNow-rY3oGFbJ.js index 66f16a0eac9640f36d4d2ab56c54e9af62d9555d..1b88067ea1704c58512ccfb6344d5c0cb9a4f9dd 100644 --- a/assets/formatDistanceToNow-E-4T8g7c.js +++ b/assets/formatDistanceToNow-rY3oGFbJ.js @@ -1,4 +1,4 @@ -import{e as W,t as u,a8 as S}from"./index-Dl2Y5a7s.js";/** +import{e as W,t as u,a8 as S}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/funnel-C3sJcU2r.js b/assets/funnel-qr3WhEld.js similarity index 90% rename from assets/funnel-C3sJcU2r.js rename to assets/funnel-qr3WhEld.js index c6761f2de5c06c39a588d9d6cdd885d3c57b963d..4baae1e784006491f25529dcef2c13c509b05bd2 100644 --- a/assets/funnel-C3sJcU2r.js +++ b/assets/funnel-qr3WhEld.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/history-C0vXaWOF.js b/assets/history-CQZVqTob.js similarity index 94% rename from assets/history-C0vXaWOF.js rename to assets/history-CQZVqTob.js index 3a066392ab90f8fa8a8f027a4c992816924ca152..bbdac0cf46f804a60b6fade9e7ecc13bac1afd1e 100644 --- a/assets/history-C0vXaWOF.js +++ b/assets/history-CQZVqTob.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/index-ZLSkO1Xv.css b/assets/index-Bm8ni9Xq.css similarity index 66% rename from assets/index-ZLSkO1Xv.css rename to assets/index-Bm8ni9Xq.css index a23d137b623b4267304f87cae6421d485e3ef8bd..0a71db2c7429b6ce594deef6a04a7aa3b72d3da6 100644 --- a/assets/index-ZLSkO1Xv.css +++ b/assets/index-Bm8ni9Xq.css @@ -1 +1 @@ -/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-50:oklch(98.4% .014 180.72);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-teal-700:oklch(51.1% .096 186.391);--color-teal-900:oklch(38.6% .063 188.416);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-200:var(--color-violet-200);--color-sky-700:var(--color-violet-700);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-fuchsia-400:oklch(74% .238 322.16);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-700:oklch(37% .013 285.805);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-sm:0 1px 2px #00000026;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:var(--border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.02em;font-weight:700;line-height:1.3}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.01em;font-weight:700;line-height:1.35}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;line-height:1.4}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4{font-family:var(--font-display);font-size:var(--text-base);font-weight:600;line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\[container-type\:inline-size\]{container-type:inline-size}.\[container-type\:size\]{container-type:size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-\[5px\]{inset:-5px}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-\[-20px\]{inset-inline:-20px}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.end-1{inset-inline-end:calc(var(--spacing) * 1)}.-top-1{top:calc(var(--spacing) * -1)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-3\.5{top:calc(var(--spacing) * -3.5)}.-top-4{top:calc(var(--spacing) * -4)}.-top-5{top:calc(var(--spacing) * -5)}.-top-6{top:calc(var(--spacing) * -6)}.-top-8{top:calc(var(--spacing) * -8)}.-top-10{top:calc(var(--spacing) * -10)}.-top-12{top:calc(var(--spacing) * -12)}.-top-20{top:calc(var(--spacing) * -20)}.-top-24{top:calc(var(--spacing) * -24)}.-top-40{top:calc(var(--spacing) * -40)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1{top:calc(var(--spacing) * 1)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3{top:calc(var(--spacing) * 3)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.top-7{top:calc(var(--spacing) * 7)}.top-8{top:calc(var(--spacing) * 8)}.top-12{top:calc(var(--spacing) * 12)}.top-20{top:calc(var(--spacing) * 20)}.top-24{top:calc(var(--spacing) * 24)}.top-\[-5\%\]{top:-5%}.top-\[-10\%\]{top:-10%}.top-\[-30px\]{top:-30px}.top-\[0\%\]{top:0%}.top-\[1px\]{top:1px}.top-\[10\%\]{top:10%}.top-\[10px\]{top:10px}.top-\[15\%\]{top:15%}.top-\[20\%\]{top:20%}.top-\[25px\]{top:25px}.top-\[40\%\]{top:40%}.top-\[45\%\]{top:45%}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-\[80px\]{top:80px}.top-full{top:100%}.-right-1{right:calc(var(--spacing) * -1)}.-right-2{right:calc(var(--spacing) * -2)}.-right-2\.5{right:calc(var(--spacing) * -2.5)}.-right-3{right:calc(var(--spacing) * -3)}.-right-4{right:calc(var(--spacing) * -4)}.-right-5{right:calc(var(--spacing) * -5)}.-right-6{right:calc(var(--spacing) * -6)}.-right-8{right:calc(var(--spacing) * -8)}.-right-10{right:calc(var(--spacing) * -10)}.-right-12{right:calc(var(--spacing) * -12)}.-right-24{right:calc(var(--spacing) * -24)}.-right-40{right:calc(var(--spacing) * -40)}.right-0{right:calc(var(--spacing) * 0)}.right-0\.5{right:calc(var(--spacing) * .5)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-8{right:calc(var(--spacing) * 8)}.right-12{right:calc(var(--spacing) * 12)}.right-16{right:calc(var(--spacing) * 16)}.right-\[-5\%\]{right:-5%}.right-\[-5px\]{right:-5px}.right-\[-10\%\]{right:-10%}.right-\[-10px\]{right:-10px}.right-\[-20\%\]{right:-20%}.right-\[-20px\]{right:-20px}.right-\[-30px\]{right:-30px}.right-\[10\%\]{right:10%}.right-\[24px\]{right:24px}.right-\[150px\]{right:150px}.right-full{right:100%}.-bottom-1{bottom:calc(var(--spacing) * -1)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.-bottom-2\.5{bottom:calc(var(--spacing) * -2.5)}.-bottom-3{bottom:calc(var(--spacing) * -3)}.-bottom-4{bottom:calc(var(--spacing) * -4)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.-bottom-8{bottom:calc(var(--spacing) * -8)}.-bottom-10{bottom:calc(var(--spacing) * -10)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.-bottom-24{bottom:calc(var(--spacing) * -24)}.-bottom-40{bottom:calc(var(--spacing) * -40)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-12{bottom:calc(var(--spacing) * 12)}.bottom-16{bottom:calc(var(--spacing) * 16)}.bottom-28{bottom:calc(var(--spacing) * 28)}.bottom-\[-10\%\]{bottom:-10%}.bottom-\[-20px\]{bottom:-20px}.bottom-\[-500px\]{bottom:-500px}.bottom-\[0\%\]{bottom:0%}.bottom-\[2px\]{bottom:2px}.bottom-\[35px\]{bottom:35px}.bottom-\[50px\]{bottom:50px}.bottom-full{bottom:100%}.-left-2{left:calc(var(--spacing) * -2)}.-left-2\.5{left:calc(var(--spacing) * -2.5)}.-left-3{left:calc(var(--spacing) * -3)}.-left-4{left:calc(var(--spacing) * -4)}.-left-8{left:calc(var(--spacing) * -8)}.-left-10{left:calc(var(--spacing) * -10)}.-left-12{left:calc(var(--spacing) * -12)}.-left-40{left:calc(var(--spacing) * -40)}.-left-\[17px\]{left:-17px}.-left-\[150\%\]{left:-150%}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-3\.5{left:calc(var(--spacing) * 3.5)}.left-4{left:calc(var(--spacing) * 4)}.left-8{left:calc(var(--spacing) * 8)}.left-12{left:calc(var(--spacing) * 12)}.left-\[-5\%\]{left:-5%}.left-\[-10\%\]{left:-10%}.left-\[-20px\]{left:-20px}.left-\[10\%\]{left:10%}.left-\[15\%\]{left:15%}.left-\[20\%\]{left:20%}.left-\[40\%\]{left:40%}.left-\[50\%\]{left:50%}.left-\[54px\]{left:54px}.left-\[var\(--x\)\]{left:var(--x)}.left-full{left:100%}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[-1\]{z-index:-1}.z-\[-2\]{z-index:-2}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[3\]{z-index:3}.z-\[4\]{z-index:4}.z-\[11\]{z-index:11}.z-\[12\]{z-index:12}.z-\[13\]{z-index:13}.z-\[50\]{z-index:50}.z-\[51\]{z-index:51}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.z-\[75\]{z-index:75}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[200\]{z-index:200}.z-\[250\]{z-index:250}.z-\[300\]{z-index:300}.z-\[9998\]{z-index:9998}.z-\[9999\]{z-index:9999}.z-\[10000\]{z-index:10000}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-12{grid-column:span 12/span 12}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-3{margin-inline:calc(var(--spacing) * -3)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-\[24px\]{margin-inline:-24px}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-\[-20px\]{margin-inline:-20px}.mx-\[1px\]{margin-inline:1px}.mx-auto{margin-inline:auto}.-my-4{margin-block:calc(var(--spacing) * -4)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-\[-10px\]{margin-top:-10px}.mt-\[-20px\]{margin-top:-20px}.mt-\[0\.5rem\]{margin-top:.5rem}.mt-\[1px\]{margin-top:1px}.mt-\[4px\]{margin-top:4px}.mt-\[24px\]{margin-top:24px}.mt-auto{margin-top:auto}.-mr-10{margin-right:calc(var(--spacing) * -10)}.-mr-24{margin-right:calc(var(--spacing) * -24)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-10{margin-bottom:calc(var(--spacing) * -10)}.-mb-18{margin-bottom:calc(var(--spacing) * -18)}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-\[-10px\]{margin-bottom:-10px}.mb-\[2px\]{margin-bottom:2px}.mb-\[8px\]{margin-bottom:8px}.mb-\[10px\]{margin-bottom:10px}.mb-\[14px\]{margin-bottom:14px}.mb-\[16px\]{margin-bottom:16px}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-10{margin-left:calc(var(--spacing) * -10)}.-ml-18{margin-left:calc(var(--spacing) * -18)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-14{margin-left:calc(var(--spacing) * 14)}.ml-\[20px\]{margin-left:20px}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.\[aspect-ratio\:1\/var\(--aspect-ratio\)\]{aspect-ratio:1/var(--aspect-ratio)}.aspect-\[4\/5\]{aspect-ratio:4/5}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-full{width:100%;height:100%}.\[height\:100cqmax\]{height:100cqmax}.h-0{height:calc(var(--spacing) * 0)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-3\/4{height:75%}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-28{height:calc(var(--spacing) * 28)}.h-32{height:calc(var(--spacing) * 32)}.h-36{height:calc(var(--spacing) * 36)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-80{height:calc(var(--spacing) * 80)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1\.5rem\]{height:1.5rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[6px\]{height:6px}.h-\[10px\]{height:10px}.h-\[14px\]{height:14px}.h-\[16px\]{height:16px}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[25px\]{height:25px}.h-\[28px\]{height:28px}.h-\[32px\]{height:32px}.h-\[35px\]{height:35px}.h-\[38px\]{height:38px}.h-\[40\%\]{height:40%}.h-\[40px\]{height:40px}.h-\[45px\]{height:45px}.h-\[46px\]{height:46px}.h-\[48px\]{height:48px}.h-\[50px\]{height:50px}.h-\[52px\]{height:52px}.h-\[54px\]{height:54px}.h-\[60\%\]{height:60%}.h-\[65px\]{height:65px}.h-\[70\%\]{height:70%}.h-\[75px\]{height:75px}.h-\[76px\]{height:76px}.h-\[80\%\]{height:80%}.h-\[80px\]{height:80px}.h-\[85\%\]{height:85%}.h-\[85px\]{height:85px}.h-\[92vh\]{height:92vh}.h-\[95vh\]{height:95vh}.h-\[96px\]{height:96px}.h-\[100px\]{height:100px}.h-\[100vh\]{height:100vh}.h-\[105\%\]{height:105%}.h-\[110\%\]{height:110%}.h-\[120\%\]{height:120%}.h-\[120px\]{height:120px}.h-\[140px\]{height:140px}.h-\[150vh\]{height:150vh}.h-\[160px\]{height:160px}.h-\[170px\]{height:170px}.h-\[185px\]{height:185px}.h-\[190px\]{height:190px}.h-\[220px\]{height:220px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[600vw\]{height:600vw}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[calc\(100\%-16px\)\]{height:calc(100% - 16px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.max-h-\[500px\]{max-height:500px}.max-h-\[calc\(90vh-200px\)\]{max-height:calc(90vh - 200px)}.max-h-\[calc\(90vh-320px\)\]{max-height:calc(90vh - 320px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[3rem\]{min-height:3rem}.min-h-\[24px\]{min-height:24px}.min-h-\[40px\]{min-height:40px}.min-h-\[44px\]{min-height:44px}.min-h-\[48px\]{min-height:48px}.min-h-\[50vh\]{min-height:50vh}.min-h-\[64px\]{min-height:64px}.min-h-\[75px\]{min-height:75px}.min-h-\[100px\]{min-height:100px}.min-h-\[110px\]{min-height:110px}.min-h-\[120px\]{min-height:120px}.min-h-\[140px\]{min-height:140px}.min-h-\[160px\]{min-height:160px}.min-h-\[170px\]{min-height:170px}.min-h-\[180px\]{min-height:180px}.min-h-\[185px\]{min-height:185px}.min-h-\[190px\]{min-height:190px}.min-h-\[200px\]{min-height:200px}.min-h-\[240px\]{min-height:240px}.min-h-\[250px\]{min-height:250px}.min-h-\[290px\]{min-height:290px}.min-h-\[300px\]{min-height:300px}.min-h-\[320px\]{min-height:320px}.min-h-\[330px\]{min-height:330px}.min-h-\[400px\]{min-height:400px}.min-h-\[500px\]{min-height:500px}.min-h-\[800px\]{min-height:800px}.min-h-\[calc\(100vh-3\.5rem\)\]{min-height:calc(100vh - 3.5rem)}.min-h-dvh{min-height:100dvh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.\!w-auto{width:auto!important}.\[width\:100cqh\]{width:100cqh}.\[width\:100cqi\]{width:100cqi}.\[width\:var\(--width\)\]{width:var(--width)}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[1px\]{width:1px}.w-\[2px\]{width:2px}.w-\[5px\]{width:5px}.w-\[6px\]{width:6px}.w-\[10px\]{width:10px}.w-\[16px\]{width:16px}.w-\[22px\]{width:22px}.w-\[30\%\]{width:30%}.w-\[32px\]{width:32px}.w-\[38\%\]{width:38%}.w-\[38px\]{width:38px}.w-\[40\%\]{width:40%}.w-\[46px\]{width:46px}.w-\[48px\]{width:48px}.w-\[52px\]{width:52px}.w-\[55\%\]{width:55%}.w-\[58\%\]{width:58%}.w-\[60\%\]{width:60%}.w-\[60px\]{width:60px}.w-\[65\%\]{width:65%}.w-\[65px\]{width:65px}.w-\[67\%\]{width:67%}.w-\[70\%\]{width:70%}.w-\[70px\]{width:70px}.w-\[72vw\]{width:72vw}.w-\[75px\]{width:75px}.w-\[76\%\]{width:76%}.w-\[78px\]{width:78px}.w-\[79\%\]{width:79%}.w-\[80\%\]{width:80%}.w-\[80px\]{width:80px}.w-\[81\%\]{width:81%}.w-\[84\%\]{width:84%}.w-\[85\%\]{width:85%}.w-\[86\%\]{width:86%}.w-\[88\%\]{width:88%}.w-\[89\%\]{width:89%}.w-\[90\%\]{width:90%}.w-\[90px\]{width:90px}.w-\[92\%\]{width:92%}.w-\[94\%\]{width:94%}.w-\[95\%\]{width:95%}.w-\[96px\]{width:96px}.w-\[100\%\]{width:100%}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[140px\]{width:140px}.w-\[150vw\]{width:150vw}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[250vw\]{width:250vw}.w-\[260px\]{width:260px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[320px\]{width:320px}.w-\[350px\]{width:350px}.w-\[380px\]{width:380px}.w-\[400px\]{width:400px}.w-\[600vw\]{width:600vw}.w-\[calc\(100\%\+48px\)\]{width:calc(100% + 48px)}.w-\[calc\(100\%-4rem\)\]{width:calc(100% - 4rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[19rem\]{max-width:19rem}.max-w-\[22rem\]{max-width:22rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[28rem\]{max-width:28rem}.max-w-\[36rem\]{max-width:36rem}.max-w-\[44rem\]{max-width:44rem}.max-w-\[48\%\]{max-width:48%}.max-w-\[50rem\]{max-width:50rem}.max-w-\[54rem\]{max-width:54rem}.max-w-\[70\%\]{max-width:70%}.max-w-\[75\%\]{max-width:75%}.max-w-\[80px\]{max-width:80px}.max-w-\[85vw\]{max-width:85vw}.max-w-\[88vw\]{max-width:88vw}.max-w-\[90\%\]{max-width:90%}.max-w-\[90px\]{max-width:90px}.max-w-\[90rem\]{max-width:90rem}.max-w-\[120px\]{max-width:120px}.max-w-\[130px\]{max-width:130px}.max-w-\[140px\]{max-width:140px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[330px\]{max-width:330px}.max-w-\[340px\]{max-width:340px}.max-w-\[380px\]{max-width:380px}.max-w-\[400px\]{max-width:400px}.max-w-\[420px\]{max-width:420px}.max-w-\[450px\]{max-width:450px}.max-w-\[460px\]{max-width:460px}.max-w-\[900px\]{max-width:900px}.max-w-\[1000px\]{max-width:1000px}.max-w-\[1100px\]{max-width:1100px}.max-w-\[1200px\]{max-width:1200px}.max-w-\[1400px\]{max-width:1400px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[calc\(100vw-24px\)\]{max-width:calc(100vw - 24px)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-\[1\.5rem\]{min-width:1.5rem}.min-w-\[1\.75rem\]{min-width:1.75rem}.min-w-\[2\.5rem\]{min-width:2.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[18px\]{min-width:18px}.min-w-\[60px\]{min-width:60px}.min-w-\[65px\]{min-width:65px}.min-w-\[85px\]{min-width:85px}.min-w-\[90px\]{min-width:90px}.min-w-\[120px\]{min-width:120px}.min-w-\[130px\]{min-width:130px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[240px\]{min-width:240px}.min-w-\[280px\]{min-width:280px}.min-w-\[800px\]{min-width:800px}.min-w-\[1000px\]{min-width:1000px}.min-w-\[1100px\]{min-width:1100px}.min-w-\[1140px\]{min-width:1140px}.min-w-\[1240px\]{min-width:1240px}.min-w-\[1320px\]{min-width:1320px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-\[1\.5\]{flex:1.5}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-y-2{--tw-border-spacing-y:calc(var(--spacing) * 2);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.\[transform-origin\:0\%_0\%\]{transform-origin:0 0}.\[transform-origin\:50\%_0\%\]{transform-origin:50% 0}.\[transform-origin\:100\%_0\%\]{transform-origin:100% 0}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.origin-bottom{transform-origin:bottom}.origin-bottom-right{transform-origin:100% 100%}.origin-right{transform-origin:100%}.origin-top-right{transform-origin:100% 0}.-translate-x-1{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/4{--tw-translate-x: -25% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-4{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-\[30px\]{--tw-translate-x: -30px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x: 50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/3{--tw-translate-x:calc(1 / 3 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/4{--tw-translate-x: 25% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-100\%\]{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[30px\]{--tw-translate-x:30px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y: 50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/3{--tw-translate-y:calc(1 / 3 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-10{--tw-translate-y:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[10\%\]{--tw-translate-y:10%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-50{--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-x-\[-1\]{--tw-scale-x:-1;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-75{--tw-scale-y:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-150{--tw-scale-y:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.80\]{scale:.8}.scale-\[0\.99\]{scale:.99}.scale-\[1\.01\]{scale:1.01}.scale-\[1\.1\]{scale:1.1}.scale-\[1\.02\]{scale:1.02}.scale-\[1\.05\]{scale:1.05}.scale-\[1\.15\]{scale:1.15}.scale-\[1\.35\]{scale:1.35}.-rotate-12{rotate:-12deg}.-rotate-\[15deg\]{rotate:-15deg}.rotate-6{rotate:6deg}.rotate-12{rotate:12deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-3deg\]{rotate:-3deg}.rotate-\[-5deg\]{rotate:-5deg}.rotate-\[15deg\]{rotate:15deg}.-skew-x-12{--tw-skew-x:skewX( -12deg );transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.\[transform\:rotate\(-90deg\)_rotateX\(-90deg\)\]{transform:rotate(-90deg)rotateX(-90deg)}.\[transform\:rotate\(90deg\)_rotateX\(-90deg\)\]{transform:rotate(90deg)rotateX(-90deg)}.\[transform\:rotateX\(-90deg\)\]{transform:rotateX(-90deg)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[fadeIn_0\.3s_ease-in-out\]{animation:.3s ease-in-out fadeIn}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.touch-manipulation{touch-action:manipulation}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-\[2px\]{gap:2px}.gap-\[3px\]{gap:3px}.gap-\[4px\]{gap:4px}.gap-\[5px\]{gap:5px}.gap-\[6px\]{gap:6px}.gap-\[8px\]{gap:8px}.gap-\[10px\]{gap:10px}.gap-\[12px\]{gap:12px}.gap-\[16px\]{gap:16px}.gap-\[18px\]{gap:18px}.gap-\[24px\]{gap:24px}:where(.-space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * -.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * -.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[8px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(8px * var(--tw-space-y-reverse));margin-block-end:calc(8px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[9px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(9px * var(--tw-space-y-reverse));margin-block-end:calc(9px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[12px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(12px * var(--tw-space-y-reverse));margin-block-end:calc(12px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[16px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(16px * var(--tw-space-y-reverse));margin-block-end:calc(16px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[24px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(24px * var(--tw-space-y-reverse));margin-block-end:calc(24px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[28px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(28px * var(--tw-space-y-reverse));margin-block-end:calc(28px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[32px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(32px * var(--tw-space-y-reverse));margin-block-end:calc(32px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-10{column-gap:calc(var(--spacing) * 10)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[\#edf1f7\]>:not(:last-child)){border-color:#edf1f7}:where(.divide-\[\#f1f5f9\]>:not(:last-child)){border-color:#f1f5f9}:where(.divide-border>:not(:last-child)){border-color:var(--border)}:where(.divide-slate-50>:not(:last-child)){border-color:var(--color-slate-50)}:where(.divide-slate-50\/60>:not(:last-child)){border-color:#f8fafc99}@supports (color:color-mix(in lab,red,red)){:where(.divide-slate-50\/60>:not(:last-child)){border-color:color-mix(in oklab,var(--color-slate-50) 60%,transparent)}}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[-20px\]{border-radius:-20px}.rounded-\[1\.2rem\]{border-radius:1.2rem}.rounded-\[1\.4rem\]{border-radius:1.4rem}.rounded-\[1\.5rem\]{border-radius:1.5rem}.rounded-\[1rem\]{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[2rem\]{border-radius:2rem}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[7px\]{border-radius:7px}.rounded-\[8px\]{border-radius:8px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[17px\]{border-radius:17px}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-\[22px\]{border-radius:22px}.rounded-\[24px\]{border-radius:24px}.rounded-\[28px\]{border-radius:28px}.rounded-\[32px\]{border-radius:32px}.rounded-\[40px\]{border-radius:40px}.rounded-\[50\%\]{border-radius:50%}.rounded-\[50\%_50\%_0_0\/100\%_100\%_0_0\]{border-radius:50% 50% 0 0/100% 100% 0 0}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-\[2\.5rem\]{border-top-left-radius:2.5rem;border-top-right-radius:2.5rem}.rounded-t-\[2px\]{border-top-left-radius:2px;border-top-right-radius:2px}.rounded-t-\[3px\]{border-top-left-radius:3px;border-top-right-radius:3px}.rounded-t-\[24px\]{border-top-left-radius:24px;border-top-right-radius:24px}.rounded-t-\[32px\]{border-top-left-radius:32px;border-top-right-radius:32px}.rounded-t-\[40px\]{border-top-left-radius:40px;border-top-right-radius:40px}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-t-xl{border-top-left-radius:calc(var(--radius) + 4px);border-top-right-radius:calc(var(--radius) + 4px)}.rounded-l-2xl{border-top-left-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.rounded-l-\[1\.5rem\]{border-top-left-radius:1.5rem;border-bottom-left-radius:1.5rem}.rounded-l-\[14px\]{border-top-left-radius:14px;border-bottom-left-radius:14px}.rounded-l-\[18px\]{border-top-left-radius:18px;border-bottom-left-radius:18px}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-tl-\[20px\]{border-top-left-radius:20px}.rounded-tl-\[24px\]{border-top-left-radius:24px}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r-2xl{border-top-right-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.rounded-tr-\[20px\]{border-top-right-radius:20px}.rounded-b-2xl{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.rounded-b-\[18px\]{border-bottom-right-radius:18px;border-bottom-left-radius:18px}.rounded-b-\[24px\]{border-bottom-right-radius:24px;border-bottom-left-radius:24px}.rounded-b-\[32px\]{border-bottom-right-radius:32px;border-bottom-left-radius:32px}.rounded-b-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.rounded-bl-\[24px\]{border-bottom-left-radius:24px}.rounded-bl-none{border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-\[4px\]{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-x-\[1\.5px\]{border-inline-style:var(--tw-border-style);border-inline-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-4,.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-r-4{border-right-style:var(--tw-border-style);border-right-width:4px}.border-r-\[6px\]{border-right-style:var(--tw-border-style);border-right-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-b-\[2\.5px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:2.5px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4,.border-l-\[4px\]{border-left-style:var(--tw-border-style);border-left-width:4px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\!border-emerald-400{border-color:var(--color-emerald-400)!important}.border-\(--color-border\){border-color:var(--color-border)}.border-\[\#0B0F19\]{border-color:#0b0f19}.border-\[\#0ea5e9\]\/20{border-color:#0ea5e933}.border-\[\#1FA7E1\]{border-color:#1fa7e1}.border-\[\#1FA7E1\]\/20{border-color:#1fa7e133}.border-\[\#1FA7E1\]\/30{border-color:#1fa7e14d}.border-\[\#1FA7E1\]\/40{border-color:#1fa7e166}.border-\[\#1a85a4\]\/20{border-color:#1a85a433}.border-\[\#1a85a4\]\/30{border-color:#1a85a44d}.border-\[\#2a3648\]{border-color:#2a3648}.border-\[\#2f384e\]{border-color:#2f384e}.border-\[\#4f46e5\]{border-color:#4f46e5}.border-\[\#4f46e5\]\/20{border-color:#4f46e533}.border-\[\#6ED1CF\]\/20{border-color:#6ed1cf33}.border-\[\#6ee7b7\]{border-color:#6ee7b7}.border-\[\#7C3AED\]{border-color:#7c3aed}.border-\[\#8A3FD3\]\/20{border-color:#8a3fd333}.border-\[\#8A3FD3\]\/30{border-color:#8a3fd34d}.border-\[\#8B5CF6\]\/40{border-color:#8b5cf666}.border-\[\#8b5cf6\]{border-color:#8b5cf6}.border-\[\#9b51e0\]{border-color:#9b51e0}.border-\[\#10b981\]{border-color:#10b981}.border-\[\#75D06A\]{border-color:#75d06a}.border-\[\#75D06A\]\/30{border-color:#75d06a4d}.border-\[\#75D06A\]\/35{border-color:#75d06a59}.border-\[\#75D06A\]\/40{border-color:#75d06a66}.border-\[\#6366f1\]{border-color:#6366f1}.border-\[\#7274ED\]\/20{border-color:#7274ed33}.border-\[\#7274ED\]\/30{border-color:#7274ed4d}.border-\[\#9956DE\]{border-color:#9956de}.border-\[\#9956DE\]\/20{border-color:#9956de33}.border-\[\#9956DE\]\/25{border-color:#9956de40}.border-\[\#9956DE\]\/30{border-color:#9956de4d}.border-\[\#9956DE\]\/40{border-color:#9956de66}.border-\[\#F1F5F9\]{border-color:#f1f5f9}.border-\[\#F08386\]{border-color:#f08386}.border-\[\#F08386\]\/30{border-color:#f083864d}.border-\[\#FF8B8B\]{border-color:#ff8b8b}.border-\[\#FF8B8B\]\/35{border-color:#ff8b8b59}.border-\[\#FFB356\]{border-color:#ffb356}.border-\[\#FFB356\]\/20{border-color:#ffb35633}.border-\[\#FFB356\]\/38{border-color:#ffb35661}.border-\[\#a5b4fc\]{border-color:#a5b4fc}.border-\[\#a5b4fc\]\/60{border-color:#a5b4fc99}.border-\[\#a855f7\]{border-color:#a855f7}.border-\[\#c7d2fe\]{border-color:#c7d2fe}.border-\[\#cbd5e1\]{border-color:#cbd5e1}.border-\[\#d1cec6\]{border-color:#d1cec6}.border-\[\#dadce0\]{border-color:#dadce0}.border-\[\#dde3eb\]{border-color:#dde3eb}.border-\[\#e0e7ff\]{border-color:#e0e7ff}.border-\[\#e2e8f0\]{border-color:#e2e8f0}.border-\[\#e2e8f0\]\/40{border-color:#e2e8f066}.border-\[\#e67e00\]{border-color:#e67e00}.border-\[\#edf1f7\]{border-color:#edf1f7}.border-\[\#f1f5f9\]{border-color:#f1f5f9}.border-\[\#fbbf24\]{border-color:#fbbf24}.border-\[\#fca5a5\]{border-color:#fca5a5}.border-\[\#fcd34d\]{border-color:#fcd34d}.border-\[\#fde68a\]{border-color:#fde68a}.border-amber-50{border-color:var(--color-amber-50)}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-100\/50{border-color:#fef3c680}@supports (color:color-mix(in lab,red,red)){.border-amber-100\/50{border-color:color-mix(in oklab,var(--color-amber-100) 50%,transparent)}}.border-amber-100\/80{border-color:#fef3c6cc}@supports (color:color-mix(in lab,red,red)){.border-amber-100\/80{border-color:color-mix(in oklab,var(--color-amber-100) 80%,transparent)}}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-200\/50{border-color:#fee68580}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/50{border-color:color-mix(in oklab,var(--color-amber-200) 50%,transparent)}}.border-amber-200\/60{border-color:#fee68599}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/60{border-color:color-mix(in oklab,var(--color-amber-200) 60%,transparent)}}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-300\/50{border-color:#ffd23680}@supports (color:color-mix(in lab,red,red)){.border-amber-300\/50{border-color:color-mix(in oklab,var(--color-amber-300) 50%,transparent)}}.border-amber-400{border-color:var(--color-amber-400)}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/40{border-color:color-mix(in oklab,var(--color-amber-500) 40%,transparent)}}.border-blue-50{border-color:var(--color-blue-50)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-100\/50{border-color:#dbeafe80}@supports (color:color-mix(in lab,red,red)){.border-blue-100\/50{border-color:color-mix(in oklab,var(--color-blue-100) 50%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400\/30{border-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-400\/30{border-color:color-mix(in oklab,var(--color-blue-400) 30%,transparent)}}.border-blue-500{border-color:var(--color-blue-500)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/80{border-color:color-mix(in oklab,var(--border) 80%,transparent)}}.border-emerald-50{border-color:var(--color-emerald-50)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-100\/50{border-color:#d0fae580}@supports (color:color-mix(in lab,red,red)){.border-emerald-100\/50{border-color:color-mix(in oklab,var(--color-emerald-100) 50%,transparent)}}.border-emerald-100\/60{border-color:#d0fae599}@supports (color:color-mix(in lab,red,red)){.border-emerald-100\/60{border-color:color-mix(in oklab,var(--color-emerald-100) 60%,transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-200\/50{border-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.border-emerald-200\/50{border-color:color-mix(in oklab,var(--color-emerald-200) 50%,transparent)}}.border-emerald-200\/60{border-color:#a4f4cf99}@supports (color:color-mix(in lab,red,red)){.border-emerald-200\/60{border-color:color-mix(in oklab,var(--color-emerald-200) 60%,transparent)}}.border-emerald-300{border-color:var(--color-emerald-300)}.border-emerald-300\/40{border-color:#5ee9b566}@supports (color:color-mix(in lab,red,red)){.border-emerald-300\/40{border-color:color-mix(in oklab,var(--color-emerald-300) 40%,transparent)}}.border-emerald-300\/70{border-color:#5ee9b5b3}@supports (color:color-mix(in lab,red,red)){.border-emerald-300\/70{border-color:color-mix(in oklab,var(--color-emerald-300) 70%,transparent)}}.border-emerald-400{border-color:var(--color-emerald-400)}.border-emerald-400\/30{border-color:#00d2944d}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/30{border-color:color-mix(in oklab,var(--color-emerald-400) 30%,transparent)}}.border-emerald-400\/50{border-color:#00d29480}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/50{border-color:color-mix(in oklab,var(--color-emerald-400) 50%,transparent)}}.border-emerald-500{border-color:var(--color-emerald-500)}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-emerald-500\/50{border-color:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/50{border-color:color-mix(in oklab,var(--color-emerald-500) 50%,transparent)}}.border-emerald-600\/50{border-color:#00976780}@supports (color:color-mix(in lab,red,red)){.border-emerald-600\/50{border-color:color-mix(in oklab,var(--color-emerald-600) 50%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-indigo-50{border-color:var(--color-indigo-50)}.border-indigo-100{border-color:var(--color-indigo-100)}.border-indigo-100\/50{border-color:#e0e7ff80}@supports (color:color-mix(in lab,red,red)){.border-indigo-100\/50{border-color:color-mix(in oklab,var(--color-indigo-100) 50%,transparent)}}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-200\/50{border-color:#c7d2ff80}@supports (color:color-mix(in lab,red,red)){.border-indigo-200\/50{border-color:color-mix(in oklab,var(--color-indigo-200) 50%,transparent)}}.border-indigo-300{border-color:var(--color-indigo-300)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/30{border-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.border-indigo-600\/50{border-color:#4f39f680}@supports (color:color-mix(in lab,red,red)){.border-indigo-600\/50{border-color:color-mix(in oklab,var(--color-indigo-600) 50%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/15{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/15{border-color:color-mix(in oklab,var(--muted-foreground) 15%,transparent)}}.border-orange-100{border-color:var(--color-orange-100)}.border-orange-100\/50{border-color:#ffedd580}@supports (color:color-mix(in lab,red,red)){.border-orange-100\/50{border-color:color-mix(in oklab,var(--color-orange-100) 50%,transparent)}}.border-orange-200{border-color:var(--color-orange-200)}.border-orange-200\/60{border-color:#ffd7a899}@supports (color:color-mix(in lab,red,red)){.border-orange-200\/60{border-color:color-mix(in oklab,var(--color-orange-200) 60%,transparent)}}.border-orange-300\/50{border-color:#ffb96d80}@supports (color:color-mix(in lab,red,red)){.border-orange-300\/50{border-color:color-mix(in oklab,var(--color-orange-300) 50%,transparent)}}.border-orange-400{border-color:var(--color-orange-400)}.border-orange-500{border-color:var(--color-orange-500)}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500) 30%,transparent)}}.border-orange-500\/40{border-color:#fe6e0066}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/40{border-color:color-mix(in oklab,var(--color-orange-500) 40%,transparent)}}.border-primary{border-color:var(--primary)}.border-purple-50{border-color:var(--color-purple-50)}.border-purple-100{border-color:var(--color-purple-100)}.border-purple-100\/50{border-color:#f3e8ff80}@supports (color:color-mix(in lab,red,red)){.border-purple-100\/50{border-color:color-mix(in oklab,var(--color-purple-100) 50%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-purple-200\/60{border-color:#e9d5ff99}@supports (color:color-mix(in lab,red,red)){.border-purple-200\/60{border-color:color-mix(in oklab,var(--color-purple-200) 60%,transparent)}}.border-purple-300{border-color:var(--color-purple-300)}.border-purple-400{border-color:var(--color-purple-400)}.border-purple-500{border-color:var(--color-purple-500)}.border-purple-500\/20{border-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/20{border-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.border-red-500{border-color:var(--color-red-500)}.border-rose-50{border-color:var(--color-rose-50)}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-100\/50{border-color:#ffe4e680}@supports (color:color-mix(in lab,red,red)){.border-rose-100\/50{border-color:color-mix(in oklab,var(--color-rose-100) 50%,transparent)}}.border-rose-100\/60{border-color:#ffe4e699}@supports (color:color-mix(in lab,red,red)){.border-rose-100\/60{border-color:color-mix(in oklab,var(--color-rose-100) 60%,transparent)}}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-200\/50{border-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.border-rose-200\/50{border-color:color-mix(in oklab,var(--color-rose-200) 50%,transparent)}}.border-rose-200\/60{border-color:#ffccd399}@supports (color:color-mix(in lab,red,red)){.border-rose-200\/60{border-color:color-mix(in oklab,var(--color-rose-200) 60%,transparent)}}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-300\/70{border-color:#ffa2aeb3}@supports (color:color-mix(in lab,red,red)){.border-rose-300\/70{border-color:color-mix(in oklab,var(--color-rose-300) 70%,transparent)}}.border-rose-400{border-color:var(--color-rose-400)}.border-rose-400\/50{border-color:#ff667f80}@supports (color:color-mix(in lab,red,red)){.border-rose-400\/50{border-color:color-mix(in oklab,var(--color-rose-400) 50%,transparent)}}.border-rose-500{border-color:var(--color-rose-500)}.border-rose-500\/20{border-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/20{border-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-rose-500\/50{border-color:#ff235780}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/50{border-color:color-mix(in oklab,var(--color-rose-500) 50%,transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-sky-100{border-color:var(--color-violet-100)}.border-sky-100\/80{border-color:#ede9fecc}@supports (color:color-mix(in lab,red,red)){.border-sky-100\/80{border-color:color-mix(in oklab,var(--color-violet-100) 80%,transparent)}}.border-sky-200{border-color:var(--color-violet-200)}.border-sky-200\/50{border-color:#ddd6ff80}@supports (color:color-mix(in lab,red,red)){.border-sky-200\/50{border-color:color-mix(in oklab,var(--color-violet-200) 50%,transparent)}}.border-sky-200\/60{border-color:#ddd6ff99}@supports (color:color-mix(in lab,red,red)){.border-sky-200\/60{border-color:color-mix(in oklab,var(--color-violet-200) 60%,transparent)}}.border-sky-300{border-color:var(--color-violet-300)}.border-sky-400{border-color:var(--color-violet-400)}.border-sky-500{border-color:var(--color-violet-500)}.border-sky-500\/20{border-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/20{border-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.border-sky-500\/30{border-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-violet-500) 30%,transparent)}}.border-sky-500\/40{border-color:#8d54ff66}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/40{border-color:color-mix(in oklab,var(--color-violet-500) 40%,transparent)}}.border-sky-600{border-color:var(--color-violet-600)}.border-slate-50{border-color:var(--color-slate-50)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-100\/30{border-color:#f1f5f94d}@supports (color:color-mix(in lab,red,red)){.border-slate-100\/30{border-color:color-mix(in oklab,var(--color-slate-100) 30%,transparent)}}.border-slate-100\/50{border-color:#f1f5f980}@supports (color:color-mix(in lab,red,red)){.border-slate-100\/50{border-color:color-mix(in oklab,var(--color-slate-100) 50%,transparent)}}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/50{border-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/50{border-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.border-slate-200\/60{border-color:#e2e8f099}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/60{border-color:color-mix(in oklab,var(--color-slate-200) 60%,transparent)}}.border-slate-200\/70{border-color:#e2e8f0b3}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/70{border-color:color-mix(in oklab,var(--color-slate-200) 70%,transparent)}}.border-slate-200\/80{border-color:#e2e8f0cc}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/80{border-color:color-mix(in oklab,var(--color-slate-200) 80%,transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-300\/30{border-color:#cad5e24d}@supports (color:color-mix(in lab,red,red)){.border-slate-300\/30{border-color:color-mix(in oklab,var(--color-slate-300) 30%,transparent)}}.border-slate-300\/50{border-color:#cad5e280}@supports (color:color-mix(in lab,red,red)){.border-slate-300\/50{border-color:color-mix(in oklab,var(--color-slate-300) 50%,transparent)}}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-700\/50{border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/50{border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-slate-800\/10{border-color:#1d293d1a}@supports (color:color-mix(in lab,red,red)){.border-slate-800\/10{border-color:color-mix(in oklab,var(--color-slate-800) 10%,transparent)}}.border-teal-300{border-color:var(--color-teal-300)}.border-teal-300\/60{border-color:#46ecd599}@supports (color:color-mix(in lab,red,red)){.border-teal-300\/60{border-color:color-mix(in oklab,var(--color-teal-300) 60%,transparent)}}.border-transparent{border-color:#0000}.border-violet-100{border-color:var(--color-violet-100)}.border-violet-200\/60{border-color:#ddd6ff99}@supports (color:color-mix(in lab,red,red)){.border-violet-200\/60{border-color:color-mix(in oklab,var(--color-violet-200) 60%,transparent)}}.border-violet-300{border-color:var(--color-violet-300)}.border-violet-800{border-color:var(--color-violet-800)}.border-white{border-color:var(--color-white)}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.border-white\/25{border-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.border-white\/25{border-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.border-white\/35{border-color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.border-white\/35{border-color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.border-white\/50{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.border-white\/80{border-color:#fffc}@supports (color:color-mix(in lab,red,red)){.border-white\/80{border-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.border-white\/90{border-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.border-white\/90{border-color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.border-zinc-200{border-color:var(--color-zinc-200)}.border-t-\[\#0ea5e9\]{border-top-color:#0ea5e9}.border-t-\[\#10b981\]{border-top-color:#10b981}.border-t-\[\#9956DE\]{border-top-color:#9956de}.border-t-\[\#a855f7\]{border-top-color:#a855f7}.border-t-slate-800{border-top-color:var(--color-slate-800)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-r-amber-300{border-right-color:var(--color-amber-300)}.border-r-teal-300{border-right-color:var(--color-teal-300)}.border-r-transparent{border-right-color:#0000}.border-b-amber-300{border-bottom-color:var(--color-amber-300)}.border-b-teal-300{border-bottom-color:var(--color-teal-300)}.border-l-\[\#1FA7E1\]{border-left-color:#1fa7e1}.border-l-\[\#6ED1CF\]{border-left-color:#6ed1cf}.border-l-\[\#10b981\]{border-left-color:#10b981}.border-l-\[\#7274ED\]{border-left-color:#7274ed}.border-l-\[\#9956DE\]{border-left-color:#9956de}.border-l-\[\#FFB356\]{border-left-color:#ffb356}.border-l-\[\#a855f7\]{border-left-color:#a855f7}.border-l-\[\#f43f5e\]{border-left-color:#f43f5e}.border-l-amber-400{border-left-color:var(--color-amber-400)}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-blue-400{border-left-color:var(--color-blue-400)}.border-l-emerald-400{border-left-color:var(--color-emerald-400)}.border-l-emerald-500{border-left-color:var(--color-emerald-500)}.border-l-rose-400{border-left-color:var(--color-rose-400)}.border-l-rose-500{border-left-color:var(--color-rose-500)}.border-l-transparent{border-left-color:#0000}.\!bg-\[\#6ED1CF\]\/35{background-color:#6ed1cf59!important}.\!bg-\[\#7274ED\]{background-color:#7274ed!important}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-\[\#0B0F19\]{background-color:#0b0f19}.bg-\[\#0a1628\]{background-color:#0a1628}.bg-\[\#0ea5e9\]{background-color:#0ea5e9}.bg-\[\#0ea5e9\]\/10{background-color:#0ea5e91a}.bg-\[\#0f1422\]{background-color:#0f1422}.bg-\[\#00a86b\]{background-color:#00a86b}.bg-\[\#1FA7E1\]{background-color:#1fa7e1}.bg-\[\#1FA7E1\]\/10{background-color:#1fa7e11a}.bg-\[\#1FA7E1\]\/80{background-color:#1fa7e1cc}.bg-\[\#1a85a4\]{background-color:#1a85a4}.bg-\[\#1a2030\]{background-color:#1a2030}.bg-\[\#1e293b\]{background-color:#1e293b}.bg-\[\#1e2433\]{background-color:#1e2433}.bg-\[\#1e2433\]\/95{background-color:#1e2433f2}.bg-\[\#1e2536\]{background-color:#1e2536}.bg-\[\#2d1b69\]{background-color:#2d1b69}.bg-\[\#2f3547\]{background-color:#2f3547}.bg-\[\#3b3a82\]{background-color:#3b3a82}.bg-\[\#3b82f6\]{background-color:#3b82f6}.bg-\[\#4f46e5\]{background-color:#4f46e5}.bg-\[\#4f46e5\]\/10{background-color:#4f46e51a}.bg-\[\#6D28D9\]{background-color:#6d28d9}.bg-\[\#6ED1CF\]\/10{background-color:#6ed1cf1a}.bg-\[\#6ED1CF\]\/30{background-color:#6ed1cf4d}.bg-\[\#6F2BAF\]{background-color:#6f2baf}.bg-\[\#7C51A8\]{background-color:#7c51a8}.bg-\[\#7ec16d\]{background-color:#7ec16d}.bg-\[\#8A3FD3\]{background-color:#8a3fd3}.bg-\[\#8A3FD3\]\/5{background-color:#8a3fd30d}.bg-\[\#8A3FD3\]\/10{background-color:#8a3fd31a}.bg-\[\#8B5CF6\]{background-color:#8b5cf6}.bg-\[\#8E1010\]{background-color:#8e1010}.bg-\[\#8b5cf6\]{background-color:#8b5cf6}.bg-\[\#9a67d0\]{background-color:#9a67d0}.bg-\[\#9b51e0\]{background-color:#9b51e0}.bg-\[\#10B981\],.bg-\[\#10b981\]{background-color:#10b981}.bg-\[\#22c55e\]{background-color:#22c55e}.bg-\[\#34d399\]{background-color:#34d399}.bg-\[\#48bca6\]{background-color:#48bca6}.bg-\[\#58B34D\]{background-color:#58b34d}.bg-\[\#62b658\]{background-color:#62b658}.bg-\[\#75D06A\]{background-color:#75d06a}.bg-\[\#75D06A\]\/10{background-color:#75d06a1a}.bg-\[\#75D06A\]\/14{background-color:#75d06a24}.bg-\[\#75D06A\]\/15{background-color:#75d06a26}.bg-\[\#75D06A\]\/22{background-color:#75d06a38}.bg-\[\#75D06A\]\/100{background-color:#75d06a}.bg-\[\#127DA6\]{background-color:#127da6}.bg-\[\#158abf\]{background-color:#158abf}.bg-\[\#161a25\]\/90{background-color:#161a25e6}.bg-\[\#181d27\]{background-color:#181d27}.bg-\[\#533ab6\]{background-color:#533ab6}.bg-\[\#662AA8\]{background-color:#662aa8}.bg-\[\#818cf8\]{background-color:#818cf8}.bg-\[\#2563eb\]{background-color:#2563eb}.bg-\[\#5154E7\]{background-color:#5154e7}.bg-\[\#6366f1\]{background-color:#6366f1}.bg-\[\#7274ED\]{background-color:#7274ed}.bg-\[\#7274ED\]\/10{background-color:#7274ed1a}.bg-\[\#7274ED\]\/80{background-color:#7274edcc}.bg-\[\#7274ED\]\/100{background-color:#7274ed}.bg-\[\#8544c7\]{background-color:#8544c7}.bg-\[\#9956DE\]{background-color:#9956de}.bg-\[\#9956DE\]\/5{background-color:#9956de0d}.bg-\[\#9956DE\]\/10{background-color:#9956de1a}.bg-\[\#9956DE\]\/12{background-color:#9956de1f}.bg-\[\#9956DE\]\/16{background-color:#9956de29}.bg-\[\#9956DE\]\/20{background-color:#9956de33}.bg-\[\#9956DE\]\/30{background-color:#9956de4d}.bg-\[\#9956DE\]\/32{background-color:#9956de52}.bg-\[\#9956DE\]\/80{background-color:#9956decc}.bg-\[\#9956de\]{background-color:#9956de}.bg-\[\#10709b\]{background-color:#10709b}.bg-\[\#42389d\]{background-color:#42389d}.bg-\[\#059669\]{background-color:#059669}.bg-\[\#111827\]{background-color:#111827}.bg-\[\#475569\]{background-color:#475569}.bg-\[\#633299\]{background-color:#633299}.bg-\[\#C62828\]{background-color:#c62828}.bg-\[\#D96C6A\]{background-color:#d96c6a}.bg-\[\#D44747\]{background-color:#d44747}.bg-\[\#DE7949\]{background-color:#de7949}.bg-\[\#E06A6A\]{background-color:#e06a6a}.bg-\[\#F43F5E\]{background-color:#f43f5e}.bg-\[\#F08386\]\/10{background-color:#f083861a}.bg-\[\#F08386\]\/12{background-color:#f083861f}.bg-\[\#F08386\]\/15{background-color:#f0838626}.bg-\[\#F08386\]\/20{background-color:#f0838633}.bg-\[\#F39029\]{background-color:#f39029}.bg-\[\#FB96BB\]{background-color:#fb96bb}.bg-\[\#FE6464\]{background-color:#fe6464}.bg-\[\#FF8B8B\]{background-color:#ff8b8b}.bg-\[\#FF8B8B\]\/10{background-color:#ff8b8b1a}.bg-\[\#FF8B8B\]\/14{background-color:#ff8b8b24}.bg-\[\#FF8B8B\]\/22{background-color:#ff8b8b38}.bg-\[\#FFA23A\]{background-color:#ffa23a}.bg-\[\#FFB356\]{background-color:#ffb356}.bg-\[\#FFB356\]\/10{background-color:#ffb3561a}.bg-\[\#FFB356\]\/16{background-color:#ffb35629}.bg-\[\#FFB356\]\/90{background-color:#ffb356e6}.bg-\[\#a855f7\]{background-color:#a855f7}.bg-\[\#be185d\]{background-color:#be185d}.bg-\[\#d946ef\]{background-color:#d946ef}.bg-\[\#dde3eb\]{background-color:#dde3eb}.bg-\[\#df7b9e\]{background-color:#df7b9e}.bg-\[\#e0e7ff\]{background-color:#e0e7ff}.bg-\[\#e0f4fa\]{background-color:#e0f4fa}.bg-\[\#e2e8f0\]{background-color:#e2e8f0}.bg-\[\#e66a5e\]{background-color:#e66a5e}.bg-\[\#e67070\]{background-color:#e67070}.bg-\[\#e69940\]{background-color:#e69940}.bg-\[\#eb74a6\]{background-color:#eb74a6}.bg-\[\#ecfdf5\]{background-color:#ecfdf5}.bg-\[\#edf1f7\]{background-color:#edf1f7}.bg-\[\#eef2ff\]{background-color:#eef2ff}.bg-\[\#eef2ff\]\/80{background-color:#eef2ffcc}.bg-\[\#ef4444\]{background-color:#ef4444}.bg-\[\#eff6ff\]{background-color:#eff6ff}.bg-\[\#f0fdf4\]{background-color:#f0fdf4}.bg-\[\#f1f5f9\]{background-color:#f1f5f9}.bg-\[\#f3e8ff\]{background-color:#f3e8ff}.bg-\[\#f5f3ff\]{background-color:#f5f3ff}.bg-\[\#f5f3ff\]\/40{background-color:#f5f3ff66}.bg-\[\#f5f3ff\]\/60{background-color:#f5f3ff99}.bg-\[\#f7f9fc\]{background-color:#f7f9fc}.bg-\[\#f8fafc\]{background-color:#f8fafc}.bg-\[\#f8fafc\]\/50{background-color:#f8fafc80}.bg-\[\#f8fafc\]\/80{background-color:#f8fafccc}.bg-\[\#f8faff\]{background-color:#f8faff}.bg-\[\#f8fbff\]{background-color:#f8fbff}.bg-\[\#f43f5e\]{background-color:#f43f5e}.bg-\[\#f59e0b\]{background-color:#f59e0b}.bg-\[\#f97316\]{background-color:#f97316}.bg-\[\#fb7185\]{background-color:#fb7185}.bg-\[\#fbab41\]{background-color:#fbab41}.bg-\[\#fbbf24\]{background-color:#fbbf24}.bg-\[\#fdfdfd\]{background-color:#fdfdfd}.bg-\[\#fee2e2\]{background-color:#fee2e2}.bg-\[\#fff1f2\]{background-color:#fff1f2}.bg-\[\#fff3cd\]{background-color:#fff3cd}.bg-\[\#fff7ed\]{background-color:#fff7ed}.bg-\[\#fffbeb\]{background-color:#fffbeb}.bg-\[color-mix\(in_srgb\,var\(--chart-2\)_14\%\,transparent\)\]{background-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--chart-2\)_14\%\,transparent\)\]{background-color:color-mix(in srgb,var(--chart-2) 14%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--chart-3\)_14\%\,transparent\)\]{background-color:var(--chart-3)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--chart-3\)_14\%\,transparent\)\]{background-color:color-mix(in srgb,var(--chart-3) 14%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--chart-4\)_14\%\,transparent\)\]{background-color:var(--chart-4)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--chart-4\)_14\%\,transparent\)\]{background-color:color-mix(in srgb,var(--chart-4) 14%,transparent)}}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/20{background-color:#fffbeb33}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/20{background-color:color-mix(in oklab,var(--color-amber-50) 20%,transparent)}}.bg-amber-50\/30{background-color:#fffbeb4d}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/30{background-color:color-mix(in oklab,var(--color-amber-50) 30%,transparent)}}.bg-amber-50\/40{background-color:#fffbeb66}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/40{background-color:color-mix(in oklab,var(--color-amber-50) 40%,transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-300\/20{background-color:#ffd23633}@supports (color:color-mix(in lab,red,red)){.bg-amber-300\/20{background-color:color-mix(in oklab,var(--color-amber-300) 20%,transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-400\/90{background-color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/90{background-color:color-mix(in oklab,var(--color-amber-400) 90%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--background)}.bg-black\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-black\/0{background-color:color-mix(in oklab,var(--color-black) 0%,transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/15{background-color:#00000026}@supports (color:color-mix(in lab,red,red)){.bg-black\/15{background-color:color-mix(in oklab,var(--color-black) 15%,transparent)}}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/30{background-color:#eff6ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/30{background-color:color-mix(in oklab,var(--color-blue-50) 30%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-100\/40{background-color:#dbeafe66}@supports (color:color-mix(in lab,red,red)){.bg-blue-100\/40{background-color:color-mix(in oklab,var(--color-blue-100) 40%,transparent)}}.bg-blue-300\/40{background-color:#90c5ff66}@supports (color:color-mix(in lab,red,red)){.bg-blue-300\/40{background-color:color-mix(in oklab,var(--color-blue-300) 40%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-400\/30{background-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/30{background-color:color-mix(in oklab,var(--color-blue-400) 30%,transparent)}}.bg-blue-400\/40{background-color:#54a2ff66}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/40{background-color:color-mix(in oklab,var(--color-blue-400) 40%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/20{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/20{background-color:color-mix(in oklab,var(--card) 20%,transparent)}}.bg-cyan-400\/30{background-color:#00d2ef4d}@supports (color:color-mix(in lab,red,red)){.bg-cyan-400\/30{background-color:color-mix(in oklab,var(--color-cyan-400) 30%,transparent)}}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500) 10%,transparent)}}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/20{background-color:#ecfdf533}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/20{background-color:color-mix(in oklab,var(--color-emerald-50) 20%,transparent)}}.bg-emerald-50\/30{background-color:#ecfdf54d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/30{background-color:color-mix(in oklab,var(--color-emerald-50) 30%,transparent)}}.bg-emerald-50\/40{background-color:#ecfdf566}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/40{background-color:color-mix(in oklab,var(--color-emerald-50) 40%,transparent)}}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/50{background-color:color-mix(in oklab,var(--color-emerald-50) 50%,transparent)}}.bg-emerald-50\/80{background-color:#ecfdf5cc}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/80{background-color:color-mix(in oklab,var(--color-emerald-50) 80%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-100\/50{background-color:#d0fae580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-100\/50{background-color:color-mix(in oklab,var(--color-emerald-100) 50%,transparent)}}.bg-emerald-200{background-color:var(--color-emerald-200)}.bg-emerald-200\/50{background-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.bg-emerald-200\/50{background-color:color-mix(in oklab,var(--color-emerald-200) 50%,transparent)}}.bg-emerald-300{background-color:var(--color-emerald-300)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-emerald-500\/30{background-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/30{background-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-foreground{background-color:var(--foreground)}.bg-fuchsia-300\/20{background-color:#f2a9ff33}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-300\/20{background-color:color-mix(in oklab,var(--color-fuchsia-300) 20%,transparent)}}.bg-fuchsia-400\/30{background-color:#ec6cff4d}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-400\/30{background-color:color-mix(in oklab,var(--color-fuchsia-400) 30%,transparent)}}.bg-fuchsia-500{background-color:var(--color-fuchsia-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-50\/50{background-color:#eef2ff80}@supports (color:color-mix(in lab,red,red)){.bg-indigo-50\/50{background-color:color-mix(in oklab,var(--color-indigo-50) 50%,transparent)}}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-100\/50{background-color:#e0e7ff80}@supports (color:color-mix(in lab,red,red)){.bg-indigo-100\/50{background-color:color-mix(in oklab,var(--color-indigo-100) 50%,transparent)}}.bg-indigo-200{background-color:var(--color-indigo-200)}.bg-indigo-300{background-color:var(--color-indigo-300)}.bg-indigo-300\/10{background-color:#a4b3ff1a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-300\/10{background-color:color-mix(in oklab,var(--color-indigo-300) 10%,transparent)}}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-400\/30{background-color:#7d87ff4d}@supports (color:color-mix(in lab,red,red)){.bg-indigo-400\/30{background-color:color-mix(in oklab,var(--color-indigo-400) 30%,transparent)}}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/10{background-color:color-mix(in oklab,var(--color-indigo-500) 10%,transparent)}}.bg-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/20{background-color:color-mix(in oklab,var(--color-indigo-500) 20%,transparent)}}.bg-indigo-500\/30{background-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/30{background-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-input-background{background-color:var(--input-background)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab,var(--muted-foreground) 30%,transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--muted) 20%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-400{background-color:var(--color-orange-400)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.bg-orange-500\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/15{background-color:color-mix(in oklab,var(--color-orange-500) 15%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.bg-pink-500\/20{background-color:#f6339a33}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/20{background-color:color-mix(in oklab,var(--color-pink-500) 20%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-50\/20{background-color:#faf5ff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/20{background-color:color-mix(in oklab,var(--color-purple-50) 20%,transparent)}}.bg-purple-50\/30{background-color:#faf5ff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/30{background-color:color-mix(in oklab,var(--color-purple-50) 30%,transparent)}}.bg-purple-50\/40{background-color:#faf5ff66}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/40{background-color:color-mix(in oklab,var(--color-purple-50) 40%,transparent)}}.bg-purple-50\/50{background-color:#faf5ff80}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/50{background-color:color-mix(in oklab,var(--color-purple-50) 50%,transparent)}}.bg-purple-50\/80{background-color:#faf5ffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/80{background-color:color-mix(in oklab,var(--color-purple-50) 80%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-100\/30{background-color:#f3e8ff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-100\/30{background-color:color-mix(in oklab,var(--color-purple-100) 30%,transparent)}}.bg-purple-200\/30{background-color:#e9d5ff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-200\/30{background-color:color-mix(in oklab,var(--color-purple-200) 30%,transparent)}}.bg-purple-300{background-color:var(--color-purple-300)}.bg-purple-300\/10{background-color:#d9b3ff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-300\/10{background-color:color-mix(in oklab,var(--color-purple-300) 10%,transparent)}}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-400\/20{background-color:#c07eff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-400\/20{background-color:color-mix(in oklab,var(--color-purple-400) 20%,transparent)}}.bg-purple-400\/30{background-color:#c07eff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-400\/30{background-color:color-mix(in oklab,var(--color-purple-400) 30%,transparent)}}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-purple-500\/30{background-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/30{background-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-purple-900\/20{background-color:#59168b33}@supports (color:color-mix(in lab,red,red)){.bg-purple-900\/20{background-color:color-mix(in oklab,var(--color-purple-900) 20%,transparent)}}.bg-purple-900\/40{background-color:#59168b66}@supports (color:color-mix(in lab,red,red)){.bg-purple-900\/40{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/30{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/30{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/80{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/80{background-color:color-mix(in oklab,var(--color-red-500) 80%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-50\/20{background-color:#fff1f233}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/20{background-color:color-mix(in oklab,var(--color-rose-50) 20%,transparent)}}.bg-rose-50\/30{background-color:#fff1f24d}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/30{background-color:color-mix(in oklab,var(--color-rose-50) 30%,transparent)}}.bg-rose-50\/40{background-color:#fff1f266}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/40{background-color:color-mix(in oklab,var(--color-rose-50) 40%,transparent)}}.bg-rose-50\/60{background-color:#fff1f299}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/60{background-color:color-mix(in oklab,var(--color-rose-50) 60%,transparent)}}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-100\/30{background-color:#ffe4e64d}@supports (color:color-mix(in lab,red,red)){.bg-rose-100\/30{background-color:color-mix(in oklab,var(--color-rose-100) 30%,transparent)}}.bg-rose-100\/40{background-color:#ffe4e666}@supports (color:color-mix(in lab,red,red)){.bg-rose-100\/40{background-color:color-mix(in oklab,var(--color-rose-100) 40%,transparent)}}.bg-rose-200{background-color:var(--color-rose-200)}.bg-rose-200\/50{background-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.bg-rose-200\/50{background-color:color-mix(in oklab,var(--color-rose-200) 50%,transparent)}}.bg-rose-200\/60{background-color:#ffccd399}@supports (color:color-mix(in lab,red,red)){.bg-rose-200\/60{background-color:color-mix(in oklab,var(--color-rose-200) 60%,transparent)}}.bg-rose-300{background-color:var(--color-rose-300)}.bg-rose-300\/60{background-color:#ffa2ae99}@supports (color:color-mix(in lab,red,red)){.bg-rose-300\/60{background-color:color-mix(in oklab,var(--color-rose-300) 60%,transparent)}}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/5{background-color:#ff23570d}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/5{background-color:color-mix(in oklab,var(--color-rose-500) 5%,transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-rose-600{background-color:var(--color-rose-600)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-50{background-color:var(--color-violet-50)}.bg-sky-50\/40{background-color:#f5f3ff66}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/40{background-color:color-mix(in oklab,var(--color-violet-50) 40%,transparent)}}.bg-sky-50\/50{background-color:#f5f3ff80}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/50{background-color:color-mix(in oklab,var(--color-violet-50) 50%,transparent)}}.bg-sky-50\/70{background-color:#f5f3ffb3}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/70{background-color:color-mix(in oklab,var(--color-violet-50) 70%,transparent)}}.bg-sky-100{background-color:var(--color-violet-100)}.bg-sky-100\/40{background-color:#ede9fe66}@supports (color:color-mix(in lab,red,red)){.bg-sky-100\/40{background-color:color-mix(in oklab,var(--color-violet-100) 40%,transparent)}}.bg-sky-200{background-color:var(--color-violet-200)}.bg-sky-300\/10{background-color:#c4b4ff1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-300\/10{background-color:color-mix(in oklab,var(--color-violet-300) 10%,transparent)}}.bg-sky-400{background-color:var(--color-violet-400)}.bg-sky-400\/20{background-color:#a685ff33}@supports (color:color-mix(in lab,red,red)){.bg-sky-400\/20{background-color:color-mix(in oklab,var(--color-violet-400) 20%,transparent)}}.bg-sky-500{background-color:var(--color-violet-500)}.bg-sky-500\/5{background-color:#8d54ff0d}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/5{background-color:color-mix(in oklab,var(--color-violet-500) 5%,transparent)}}.bg-sky-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-sky-500\/20{background-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/20{background-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.bg-sky-600{background-color:var(--color-violet-600)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/20{background-color:#f8fafc33}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/20{background-color:color-mix(in oklab,var(--color-slate-50) 20%,transparent)}}.bg-slate-50\/30{background-color:#f8fafc4d}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/30{background-color:color-mix(in oklab,var(--color-slate-50) 30%,transparent)}}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.bg-slate-50\/60{background-color:#f8fafc99}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/60{background-color:color-mix(in oklab,var(--color-slate-50) 60%,transparent)}}.bg-slate-50\/80{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/80{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.bg-slate-50\/90{background-color:#f8fafce6}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/90{background-color:color-mix(in oklab,var(--color-slate-50) 90%,transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-100\/70{background-color:#f1f5f9b3}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/70{background-color:color-mix(in oklab,var(--color-slate-100) 70%,transparent)}}.bg-slate-100\/80{background-color:#f1f5f9cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/80{background-color:color-mix(in oklab,var(--color-slate-100) 80%,transparent)}}.bg-slate-100\/90{background-color:#f1f5f9e6}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/90{background-color:color-mix(in oklab,var(--color-slate-100) 90%,transparent)}}.bg-slate-100\/95{background-color:#f1f5f9f2}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/95{background-color:color-mix(in oklab,var(--color-slate-100) 95%,transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-200\/50{background-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/50{background-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.bg-slate-200\/80{background-color:#e2e8f0cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/80{background-color:color-mix(in oklab,var(--color-slate-200) 80%,transparent)}}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-300\/60{background-color:#cad5e299}@supports (color:color-mix(in lab,red,red)){.bg-slate-300\/60{background-color:color-mix(in oklab,var(--color-slate-300) 60%,transparent)}}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-500\/15{background-color:#62748e26}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/15{background-color:color-mix(in oklab,var(--color-slate-500) 15%,transparent)}}.bg-slate-500\/20{background-color:#62748e33}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/20{background-color:color-mix(in oklab,var(--color-slate-500) 20%,transparent)}}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/5{background-color:#1d293d0d}@supports (color:color-mix(in lab,red,red)){.bg-slate-800\/5{background-color:color-mix(in oklab,var(--color-slate-800) 5%,transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/5{background-color:#0f172b0d}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/5{background-color:color-mix(in oklab,var(--color-slate-900) 5%,transparent)}}.bg-slate-900\/10{background-color:#0f172b1a}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/10{background-color:color-mix(in oklab,var(--color-slate-900) 10%,transparent)}}.bg-slate-900\/40{background-color:#0f172b66}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/40{background-color:color-mix(in oklab,var(--color-slate-900) 40%,transparent)}}.bg-slate-900\/50{background-color:#0f172b80}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/50{background-color:color-mix(in oklab,var(--color-slate-900) 50%,transparent)}}.bg-slate-900\/60{background-color:#0f172b99}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/60{background-color:color-mix(in oklab,var(--color-slate-900) 60%,transparent)}}.bg-slate-900\/85{background-color:#0f172bd9}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/85{background-color:color-mix(in oklab,var(--color-slate-900) 85%,transparent)}}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-400\/50{background-color:#00d3bd80}@supports (color:color-mix(in lab,red,red)){.bg-teal-400\/50{background-color:color-mix(in oklab,var(--color-teal-400) 50%,transparent)}}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-500\/20{background-color:#00baa733}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/20{background-color:color-mix(in oklab,var(--color-teal-500) 20%,transparent)}}.bg-teal-600{background-color:var(--color-teal-600)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-100{background-color:var(--color-violet-100)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-violet-600{background-color:var(--color-violet-600)}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-white\/25{background-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.bg-white\/25{background-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.bg-white\/30{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.bg-white\/35{background-color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.bg-white\/35{background-color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.bg-white\/40{background-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.bg-white\/70{background-color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in oklab,var(--color-white) 85%,transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-white\/95{background-color:color-mix(in oklab,var(--color-white) 95%,transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-zinc-100{background-color:var(--color-zinc-100)}.\!bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}.\!bg-gradient-to-r{--tw-gradient-position:to right in oklab!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(circle_at_14\%_12\%\,rgba\(251\,150\,187\,0\.35\)\,transparent_42\%\)\,radial-gradient\(circle_at_80\%_80\%\,rgba\(117\,208\,106\,0\.25\)\,transparent_38\%\)\]{background-image:radial-gradient(circle at 14% 12%,#fb96bb59,#0000 42%),radial-gradient(circle at 80% 80%,#75d06a40,#0000 38%)}.bg-\[radial-gradient\(circle_at_18\%_8\%\,rgba\(251\,150\,187\,0\.32\)\,transparent_42\%\)\,radial-gradient\(circle_at_85\%_84\%\,rgba\(117\,208\,106\,0\.24\)\,transparent_40\%\)\]{background-image:radial-gradient(circle at 18% 8%,#fb96bb52,#0000 42%),radial-gradient(circle at 85% 84%,#75d06a3d,#0000 40%)}.bg-\[radial-gradient\(circle_at_50\%_100\%\,\#9333ea_0\%\,\#c084fc_40\%\,transparent_80\%\)\]{background-image:radial-gradient(circle at 50% 100%,#9333ea,#c084fc,#0000 80%)}.bg-\[radial-gradient\(circle_at_top_right\,rgba\(153\,86\,222\,0\.08\)\,transparent_45\%\)\,radial-gradient\(circle_at_bottom_left\,rgba\(31\,167\,225\,0\.08\)\,transparent_45\%\)\]{background-image:radial-gradient(circle at 100% 0,#9956de14,#0000 45%),radial-gradient(circle at 0 100%,#1fa7e114,#0000 45%)}.bg-\[radial-gradient\(ellipse_at_50\%_100\%\,\#7e22ce_10\%\,transparent_60\%\)\]{background-image:radial-gradient(at 50% 100%,#7e22ce 10%,#0000 60%)}.bg-\[url\(\'data\:image\/svg\+xml\;base64\,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAiLz4KPHBhdGggZD0iTTAgMEgxdjFIMHoiIGZpbGw9IiM2MzY2ZjEiIGZpbGwtb3BhY2l0eT0iMC4wNSIvPgo8L3N2Zz4\=\'\)\]{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAiLz4KPHBhdGggZD0iTTAgMEgxdjFIMHoiIGZpbGw9IiM2MzY2ZjEiIGZpbGwtb3BhY2l0eT0iMC4wNSIvPgo8L3N2Zz4=)}.bg-\[url\(\'data\:image\/svg\+xml\;base64\,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPgo8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAuMSI\+PC9yZWN0Pgo8L3N2Zz4\=\'\)\]{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPgo8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAuMSI+PC9yZWN0Pgo8L3N2Zz4=)}.\!from-\[\#6ED1CF\]{--tw-gradient-from:#6ed1cf!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.\!from-emerald-50{--tw-gradient-from:var(--color-emerald-50)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.from-\[\#0ea5e9\]{--tw-gradient-from:#0ea5e9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#1FA7E1\]\/10{--tw-gradient-from:oklab(68.7044% -.0807821 -.10979/.1);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#1a85a4\]{--tw-gradient-from:#1a85a4;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#3b3a82\]{--tw-gradient-from:#3b3a82;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#3b82f6\]{--tw-gradient-from:#3b82f6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#4DB9E9\]{--tw-gradient-from:#4db9e9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#4f46e5\]{--tw-gradient-from:#4f46e5;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#6ED1CF\]{--tw-gradient-from:#6ed1cf;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#6b7280\]{--tw-gradient-from:#6b7280;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#7ec16d\]{--tw-gradient-from:#7ec16d;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#9a67d0\]{--tw-gradient-from:#9a67d0;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#10b981\]{--tw-gradient-from:#10b981;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#48DA94\]{--tw-gradient-from:#48da94;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#48bca6\]{--tw-gradient-from:#48bca6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#75D06A\]{--tw-gradient-from:#75d06a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#7274ED\]{--tw-gradient-from:#7274ed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#9956DE\]{--tw-gradient-from:#9956de;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#059669\]{--tw-gradient-from:#059669;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#64748b\]{--tw-gradient-from:#64748b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#B467FF\]{--tw-gradient-from:#b467ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#FF7B88\]{--tw-gradient-from:#ff7b88;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#FFB356\]{--tw-gradient-from:#ffb356;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#a855f7\]{--tw-gradient-from:#a855f7;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#e8f7fc\]{--tw-gradient-from:#e8f7fc;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#e66a5e\]{--tw-gradient-from:#e66a5e;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#eb74a6\]{--tw-gradient-from:#eb74a6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#ecfdf5\]{--tw-gradient-from:#ecfdf5;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#eef2ff\]{--tw-gradient-from:#eef2ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#ef4444\]{--tw-gradient-from:#ef4444;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f8fafc\]{--tw-gradient-from:#f8fafc;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f43f5e\]{--tw-gradient-from:#f43f5e;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f59e0b\]{--tw-gradient-from:#f59e0b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f97316\]{--tw-gradient-from:#f97316;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#fbab41\]{--tw-gradient-from:#fbab41;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-100{--tw-gradient-from:var(--color-amber-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-300{--tw-gradient-from:var(--color-amber-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-400{--tw-gradient-from:var(--color-amber-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500{--tw-gradient-from:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500\/10{--tw-gradient-from:#f99c001a}@supports (color:color-mix(in lab,red,red)){.from-amber-500\/10{--tw-gradient-from:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.from-amber-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500\/20{--tw-gradient-from:#f99c0033}@supports (color:color-mix(in lab,red,red)){.from-amber-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.from-amber-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500\/50{--tw-gradient-from:#f99c0080}@supports (color:color-mix(in lab,red,red)){.from-amber-500\/50{--tw-gradient-from:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.from-amber-500\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-400{--tw-gradient-from:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-50{--tw-gradient-from:var(--color-emerald-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-50\/80{--tw-gradient-from:#ecfdf5cc}@supports (color:color-mix(in lab,red,red)){.from-emerald-50\/80{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-50) 80%, transparent)}}.from-emerald-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-100\/90{--tw-gradient-from:#d0fae5e6}@supports (color:color-mix(in lab,red,red)){.from-emerald-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-100) 90%, transparent)}}.from-emerald-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-400{--tw-gradient-from:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500\/10{--tw-gradient-from:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.from-emerald-500\/10{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.from-emerald-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500\/50{--tw-gradient-from:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.from-emerald-500\/50{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-500) 50%, transparent)}}.from-emerald-500\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-600{--tw-gradient-from:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-500{--tw-gradient-from:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-50{--tw-gradient-from:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-100\/90{--tw-gradient-from:#e0e7ffe6}@supports (color:color-mix(in lab,red,red)){.from-indigo-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-indigo-100) 90%, transparent)}}.from-indigo-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-200{--tw-gradient-from:var(--color-indigo-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500\/10{--tw-gradient-from:#625fff1a}@supports (color:color-mix(in lab,red,red)){.from-indigo-500\/10{--tw-gradient-from:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.from-indigo-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500\/20{--tw-gradient-from:#625fff33}@supports (color:color-mix(in lab,red,red)){.from-indigo-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.from-indigo-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-600{--tw-gradient-from:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-orange-50{--tw-gradient-from:var(--color-orange-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-orange-500{--tw-gradient-from:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-50{--tw-gradient-from:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-50\/80{--tw-gradient-from:#faf5ffcc}@supports (color:color-mix(in lab,red,red)){.from-purple-50\/80{--tw-gradient-from:color-mix(in oklab, var(--color-purple-50) 80%, transparent)}}.from-purple-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-100\/90{--tw-gradient-from:#f3e8ffe6}@supports (color:color-mix(in lab,red,red)){.from-purple-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-purple-100) 90%, transparent)}}.from-purple-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-400\/20{--tw-gradient-from:#c07eff33}@supports (color:color-mix(in lab,red,red)){.from-purple-400\/20{--tw-gradient-from:color-mix(in oklab, var(--color-purple-400) 20%, transparent)}}.from-purple-400\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-500{--tw-gradient-from:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-500\/20{--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.from-purple-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.from-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-50{--tw-gradient-from:var(--color-rose-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-100\/90{--tw-gradient-from:#ffe4e6e6}@supports (color:color-mix(in lab,red,red)){.from-rose-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-rose-100) 90%, transparent)}}.from-rose-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-400{--tw-gradient-from:var(--color-rose-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-500{--tw-gradient-from:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-500\/50{--tw-gradient-from:#ff235780}@supports (color:color-mix(in lab,red,red)){.from-rose-500\/50{--tw-gradient-from:color-mix(in oklab, var(--color-rose-500) 50%, transparent)}}.from-rose-500\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-50{--tw-gradient-from:var(--color-violet-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-100{--tw-gradient-from:var(--color-violet-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-400{--tw-gradient-from:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-500\/20{--tw-gradient-from:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.from-sky-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-violet-500) 20%, transparent)}}.from-sky-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-600{--tw-gradient-from:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-700{--tw-gradient-from:var(--color-violet-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-50\/30{--tw-gradient-from:#f8fafc4d}@supports (color:color-mix(in lab,red,red)){.from-slate-50\/30{--tw-gradient-from:color-mix(in oklab, var(--color-slate-50) 30%, transparent)}}.from-slate-50\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-100{--tw-gradient-from:var(--color-slate-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-200{--tw-gradient-from:var(--color-slate-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-400{--tw-gradient-from:var(--color-slate-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-800{--tw-gradient-from:var(--color-slate-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-teal-500{--tw-gradient-from:var(--color-teal-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-600{--tw-gradient-from:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/0{--tw-gradient-from:#0000}@supports (color:color-mix(in lab,red,red)){.from-white\/0{--tw-gradient-from:color-mix(in oklab, var(--color-white) 0%, transparent)}}.from-white\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/20{--tw-gradient-from:#fff3}@supports (color:color-mix(in lab,red,red)){.from-white\/20{--tw-gradient-from:color-mix(in oklab, var(--color-white) 20%, transparent)}}.from-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/60{--tw-gradient-from:#fff9}@supports (color:color-mix(in lab,red,red)){.from-white\/60{--tw-gradient-from:color-mix(in oklab, var(--color-white) 60%, transparent)}}.from-white\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-\[\#6ED1CF\]{--tw-gradient-via:#6ed1cf;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#75D06A\]{--tw-gradient-via:#75d06a;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#7274ED\]{--tw-gradient-via:#7274ed;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#9956DE\]{--tw-gradient-via:#9956de;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#e2e8f0\]{--tw-gradient-via:#e2e8f0;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#f0fdf4\]{--tw-gradient-via:#f0fdf4;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#f5f3ff\]{--tw-gradient-via:#f5f3ff;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-amber-400\/40{--tw-gradient-via:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.via-amber-400\/40{--tw-gradient-via:color-mix(in oklab, var(--color-amber-400) 40%, transparent)}}.via-amber-400\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-amber-500\/10{--tw-gradient-via:#f99c001a}@supports (color:color-mix(in lab,red,red)){.via-amber-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.via-amber-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-cyan-500{--tw-gradient-via:var(--color-cyan-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-cyan-500\/10{--tw-gradient-via:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.via-cyan-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.via-cyan-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-emerald-500\/10{--tw-gradient-via:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.via-emerald-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.via-emerald-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-emerald-500\/40{--tw-gradient-via:#00bb7f66}@supports (color:color-mix(in lab,red,red)){.via-emerald-500\/40{--tw-gradient-via:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.via-emerald-500\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-fuchsia-50{--tw-gradient-via:var(--color-fuchsia-50);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-fuchsia-500\/10{--tw-gradient-via:#e12afb1a}@supports (color:color-mix(in lab,red,red)){.via-fuchsia-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.via-fuchsia-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-indigo-50\/80{--tw-gradient-via:#eef2ffcc}@supports (color:color-mix(in lab,red,red)){.via-indigo-50\/80{--tw-gradient-via:color-mix(in oklab, var(--color-indigo-50) 80%, transparent)}}.via-indigo-50\/80{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-indigo-500{--tw-gradient-via:var(--color-indigo-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-orange-50{--tw-gradient-via:var(--color-orange-50);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-orange-500{--tw-gradient-via:var(--color-orange-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-orange-500\/5{--tw-gradient-via:#fe6e000d}@supports (color:color-mix(in lab,red,red)){.via-orange-500\/5{--tw-gradient-via:color-mix(in oklab, var(--color-orange-500) 5%, transparent)}}.via-orange-500\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-pink-500{--tw-gradient-via:var(--color-pink-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-pink-600{--tw-gradient-via:var(--color-pink-600);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-500\/5{--tw-gradient-via:#ac4bff0d}@supports (color:color-mix(in lab,red,red)){.via-purple-500\/5{--tw-gradient-via:color-mix(in oklab, var(--color-purple-500) 5%, transparent)}}.via-purple-500\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-rose-500\/10{--tw-gradient-via:#ff23571a}@supports (color:color-mix(in lab,red,red)){.via-rose-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.via-rose-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-rose-500\/40{--tw-gradient-via:#ff235766}@supports (color:color-mix(in lab,red,red)){.via-rose-500\/40{--tw-gradient-via:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.via-rose-500\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-50\/30{--tw-gradient-via:#f5f3ff4d}@supports (color:color-mix(in lab,red,red)){.via-sky-50\/30{--tw-gradient-via:color-mix(in oklab, var(--color-violet-50) 30%, transparent)}}.via-sky-50\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-50\/50{--tw-gradient-via:#f5f3ff80}@supports (color:color-mix(in lab,red,red)){.via-sky-50\/50{--tw-gradient-via:color-mix(in oklab, var(--color-violet-50) 50%, transparent)}}.via-sky-50\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-400\/30{--tw-gradient-via:#a685ff4d}@supports (color:color-mix(in lab,red,red)){.via-sky-400\/30{--tw-gradient-via:color-mix(in oklab, var(--color-violet-400) 30%, transparent)}}.via-sky-400\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-400\/50{--tw-gradient-via:#a685ff80}@supports (color:color-mix(in lab,red,red)){.via-sky-400\/50{--tw-gradient-via:color-mix(in oklab, var(--color-violet-400) 50%, transparent)}}.via-sky-400\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-500{--tw-gradient-via:var(--color-violet-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-teal-500\/5{--tw-gradient-via:#00baa70d}@supports (color:color-mix(in lab,red,red)){.via-teal-500\/5{--tw-gradient-via:color-mix(in oklab, var(--color-teal-500) 5%, transparent)}}.via-teal-500\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/15{--tw-gradient-via:#ffffff26}@supports (color:color-mix(in lab,red,red)){.via-white\/15{--tw-gradient-via:color-mix(in oklab, var(--color-white) 15%, transparent)}}.via-white\/15{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/30{--tw-gradient-via:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.via-white\/30{--tw-gradient-via:color-mix(in oklab, var(--color-white) 30%, transparent)}}.via-white\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/40{--tw-gradient-via:#fff6}@supports (color:color-mix(in lab,red,red)){.via-white\/40{--tw-gradient-via:color-mix(in oklab, var(--color-white) 40%, transparent)}}.via-white\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.\!to-\[\#1FA7E1\]{--tw-gradient-to:#1fa7e1!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.\!to-teal-50{--tw-gradient-to:var(--color-teal-50)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.to-\[\#1FA7E1\]{--tw-gradient-to:#1fa7e1;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#2BBF7B\]{--tw-gradient-to:#2bbf7b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#2DA1D8\]{--tw-gradient-to:#2da1d8;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#4b5563\]{--tw-gradient-to:#4b5563;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#6ED1CF\]{--tw-gradient-to:#6ed1cf;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#6ED1CF\]\/10{--tw-gradient-to:oklab(80.0346% -.0906707 -.0221346/.1);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#7c3aed\]{--tw-gradient-to:#7c3aed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#8a5cc0\]{--tw-gradient-to:#8a5cc0;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#9D44FF\]{--tw-gradient-to:#9d44ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#10b981\]{--tw-gradient-to:#10b981;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#40a794\]{--tw-gradient-to:#40a794;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#71ad62\]{--tw-gradient-to:#71ad62;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#75D06A\]{--tw-gradient-to:#75d06a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#126b84\]{--tw-gradient-to:#126b84;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#0284c7\]{--tw-gradient-to:#0284c7;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#2563eb\]{--tw-gradient-to:#2563eb;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#7274ED\]{--tw-gradient-to:#7274ed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#9333ea\]{--tw-gradient-to:#9333ea;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#9956DE\]{--tw-gradient-to:#9956de;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#059669\]{--tw-gradient-to:#059669;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#475569\]{--tw-gradient-to:#475569;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FF5C70\]{--tw-gradient-to:#ff5c70;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FF8B8B\]{--tw-gradient-to:#ff8b8b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FF8C00\]{--tw-gradient-to:#ff8c00;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FFB356\]{--tw-gradient-to:#ffb356;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#ce5e53\]{--tw-gradient-to:#ce5e53;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#d46895\]{--tw-gradient-to:#d46895;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#d97706\]{--tw-gradient-to:#d97706;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#dc2626\]{--tw-gradient-to:#dc2626;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#e11d48\]{--tw-gradient-to:#e11d48;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#e0983a\]{--tw-gradient-to:#e0983a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#ea580c\]{--tw-gradient-to:#ea580c;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#eef2ff\]{--tw-gradient-to:#eef2ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#f0fbff\]{--tw-gradient-to:#f0fbff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#f1f5f9\]{--tw-gradient-to:#f1f5f9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#f7fdf9\]{--tw-gradient-to:#f7fdf9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#faf5ff\]{--tw-gradient-to:#faf5ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#fff7ed\]{--tw-gradient-to:#fff7ed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-amber-50{--tw-gradient-to:var(--color-amber-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-amber-500{--tw-gradient-to:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-cyan-100{--tw-gradient-to:var(--color-cyan-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-cyan-500{--tw-gradient-to:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-100\/30{--tw-gradient-to:#d0fae54d}@supports (color:color-mix(in lab,red,red)){.to-emerald-100\/30{--tw-gradient-to:color-mix(in oklab, var(--color-emerald-100) 30%, transparent)}}.to-emerald-100\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-200{--tw-gradient-to:var(--color-emerald-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-800{--tw-gradient-to:var(--color-emerald-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-fuchsia-500{--tw-gradient-to:var(--color-fuchsia-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50\/50{--tw-gradient-to:#eef2ff80}@supports (color:color-mix(in lab,red,red)){.to-indigo-50\/50{--tw-gradient-to:color-mix(in oklab, var(--color-indigo-50) 50%, transparent)}}.to-indigo-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50\/80{--tw-gradient-to:#eef2ffcc}@supports (color:color-mix(in lab,red,red)){.to-indigo-50\/80{--tw-gradient-to:color-mix(in oklab, var(--color-indigo-50) 80%, transparent)}}.to-indigo-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-200{--tw-gradient-to:var(--color-indigo-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-400{--tw-gradient-to:var(--color-indigo-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-600{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-700{--tw-gradient-to:var(--color-indigo-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-800{--tw-gradient-to:var(--color-indigo-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-50{--tw-gradient-to:var(--color-orange-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-100{--tw-gradient-to:var(--color-orange-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-400{--tw-gradient-to:var(--color-orange-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-600{--tw-gradient-to:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-pink-400\/20{--tw-gradient-to:#fb64b633}@supports (color:color-mix(in lab,red,red)){.to-pink-400\/20{--tw-gradient-to:color-mix(in oklab, var(--color-pink-400) 20%, transparent)}}.to-pink-400\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-pink-500{--tw-gradient-to:var(--color-pink-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-50{--tw-gradient-to:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-50\/20{--tw-gradient-to:#faf5ff33}@supports (color:color-mix(in lab,red,red)){.to-purple-50\/20{--tw-gradient-to:color-mix(in oklab, var(--color-purple-50) 20%, transparent)}}.to-purple-50\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-500{--tw-gradient-to:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-500\/20{--tw-gradient-to:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/20{--tw-gradient-to:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.to-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600\/5{--tw-gradient-to:#9810fa0d}@supports (color:color-mix(in lab,red,red)){.to-purple-600\/5{--tw-gradient-to:color-mix(in oklab, var(--color-purple-600) 5%, transparent)}}.to-purple-600\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-rose-500{--tw-gradient-to:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-rose-600{--tw-gradient-to:var(--color-rose-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-400{--tw-gradient-to:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-500{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-600{--tw-gradient-to:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-600\/5{--tw-gradient-to:#7f22fe0d}@supports (color:color-mix(in lab,red,red)){.to-sky-600\/5{--tw-gradient-to:color-mix(in oklab, var(--color-violet-600) 5%, transparent)}}.to-sky-600\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-800{--tw-gradient-to:var(--color-violet-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-50{--tw-gradient-to:var(--color-slate-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-100{--tw-gradient-to:var(--color-slate-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-300{--tw-gradient-to:var(--color-slate-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-600{--tw-gradient-to:var(--color-slate-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-900{--tw-gradient-to:var(--color-slate-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-50{--tw-gradient-to:var(--color-teal-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-300{--tw-gradient-to:var(--color-teal-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-500{--tw-gradient-to:var(--color-teal-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-600{--tw-gradient-to:var(--color-teal-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-violet-700{--tw-gradient-to:var(--color-violet-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-violet-800{--tw-gradient-to:var(--color-violet-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/0{--tw-gradient-to:#0000}@supports (color:color-mix(in lab,red,red)){.to-white\/0{--tw-gradient-to:color-mix(in oklab, var(--color-white) 0%, transparent)}}.to-white\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/20{--tw-gradient-to:#fff3}@supports (color:color-mix(in lab,red,red)){.to-white\/20{--tw-gradient-to:color-mix(in oklab, var(--color-white) 20%, transparent)}}.to-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/80{--tw-gradient-to:#fffc}@supports (color:color-mix(in lab,red,red)){.to-white\/80{--tw-gradient-to:color-mix(in oklab, var(--color-white) 80%, transparent)}}.to-white\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/90{--tw-gradient-to:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.to-white\/90{--tw-gradient-to:color-mix(in oklab, var(--color-white) 90%, transparent)}}.to-white\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\[background-size\:var\(--beam-size\)_var\(--beam-size\)\]{background-size:var(--beam-size) var(--beam-size)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-\[\#1e293b\]{fill:#1e293b}.fill-\[\#4f46e5\]{fill:#4f46e5}.fill-\[\#64748b\]{fill:#64748b}.fill-\[\#475569\]{fill:#475569}.fill-amber-300{fill:var(--color-amber-300)}.fill-blue-500{fill:var(--color-blue-500)}.fill-current{fill:currentColor}.fill-emerald-600{fill:var(--color-emerald-600)}.fill-primary{fill:var(--primary)}.fill-purple-600{fill:var(--color-purple-600)}.fill-white{fill:var(--color-white)}.fill-yellow-300{fill:var(--color-yellow-300)}.fill-yellow-400{fill:var(--color-yellow-400)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-bottom{object-position:bottom}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.p-16{padding:calc(var(--spacing) * 16)}.p-\[1px\]{padding:1px}.p-\[2px_0_4px\]{padding:2px 0 4px}.p-\[3px\]{padding:3px}.p-\[10px\]{padding:10px}.p-\[10px_16px_8px\]{padding:10px 16px 8px}.p-\[12px\]{padding:12px}.p-\[12px_13px\]{padding:12px 13px}.p-\[12px_16px_0\]{padding:12px 16px 0}.p-\[14px\]{padding:14px}.p-\[14px_16px\]{padding:14px 16px}.p-\[16px\]{padding:16px}.p-\[18px\]{padding:18px}.p-\[18px_20px\]{padding:18px 20px}.p-\[20px\]{padding:20px}.p-\[22px_16px_10px\]{padding:22px 16px 10px}.p-\[24px\]{padding:24px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-10{padding-inline:calc(var(--spacing) * 10)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-\[5px\]{padding-inline:5px}.px-\[6px\]{padding-inline:6px}.px-\[8px\]{padding-inline:8px}.px-\[9px\]{padding-inline:9px}.px-\[10px\]{padding-inline:10px}.px-\[15px\]{padding-inline:15px}.px-\[16px\]{padding-inline:16px}.px-\[18px\]{padding-inline:18px}.px-\[22px\]{padding-inline:22px}.px-\[24px\]{padding-inline:24px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-32{padding-block:calc(var(--spacing) * 32)}.py-\[2px\]{padding-block:2px}.py-\[3px\]{padding-block:3px}.py-\[6px\]{padding-block:6px}.py-\[7px\]{padding-block:7px}.py-\[24px\]{padding-block:24px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-\[12px\]{padding-top:12px}.pt-\[24px\]{padding-top:24px}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pr-\[60px\]{padding-right:60px}.pr-\[150px\]{padding-right:150px}.pr-\[155px\]{padding-right:155px}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-28{padding-bottom:calc(var(--spacing) * 28)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-\[9px\]{padding-bottom:9px}.pb-\[10px\]{padding-bottom:10px}.pb-\[16px\]{padding-bottom:16px}.pb-\[32px\]{padding-bottom:32px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-\[16px\]{padding-left:16px}.pl-\[18px\]{padding-left:18px}.pl-\[32px\]{padding-left:32px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.05rem\]{font-size:1.05rem}.text-\[1rem\]{font-size:1rem}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[36px\]{font-size:36px}.text-\[38px\]{font-size:38px}.text-\[40px\]{font-size:40px}.text-\[50px\]{font-size:50px}.text-\[60px\]{font-size:60px}.text-\[80px\]{font-size:80px}.text-\[140px\]{font-size:140px}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.8\]{--tw-leading:1.8;line-height:1.8}.leading-\[1\.15\]{--tw-leading:1.15;line-height:1.15}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-\[1\.75\]{--tw-leading:1.75;line-height:1.75}.leading-\[1\.85\]{--tw-leading:1.85;line-height:1.85}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.3px\]{--tw-tracking:.3px;letter-spacing:.3px}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-\[\#1FA7E1\]{color:#1fa7e1!important}.\!text-white{color:var(--color-white)!important}.text-\[\#0a1628\]{color:#0a1628}.text-\[\#0ea5e9\]{color:#0ea5e9}.text-\[\#1E293B\]{color:#1e293b}.text-\[\#1FA7E1\]{color:#1fa7e1}.text-\[\#1a85a4\]{color:#1a85a4}.text-\[\#1e1b4b\]{color:#1e1b4b}.text-\[\#1e293b\]{color:#1e293b}.text-\[\#2E7D32\]{color:#2e7d32}.text-\[\#2e2b5e\]{color:#2e2b5e}.text-\[\#3E8538\]{color:#3e8538}.text-\[\#3b82f6\]{color:#3b82f6}.text-\[\#3c4043\]{color:#3c4043}.text-\[\#4D9F46\]{color:#4d9f46}.text-\[\#4f46e5\]{color:#4f46e5}.text-\[\#5E3388\]\/80{color:#5e3388cc}.text-\[\#5a6578\]{color:#5a6578}.text-\[\#5f6368\]{color:#5f6368}.text-\[\#6ED1CF\]{color:#6ed1cf}.text-\[\#6c47ff\]{color:#6c47ff}.text-\[\#6d28d9\]{color:#6d28d9}.text-\[\#7A44B3\]{color:#7a44b3}.text-\[\#7C3AED\]{color:#7c3aed}.text-\[\#7ec16d\]{color:#7ec16d}.text-\[\#8A1A1A\]{color:#8a1a1a}.text-\[\#8A3FD3\]{color:#8a3fd3}.text-\[\#8a7fbc\]{color:#8a7fbc}.text-\[\#8b5cf6\]{color:#8b5cf6}.text-\[\#9b51e0\]{color:#9b51e0}.text-\[\#10b981\]{color:#10b981}.text-\[\#22c55e\]{color:#22c55e}.text-\[\#065f46\]{color:#065f46}.text-\[\#75D06A\]{color:#75d06a}.text-\[\#94a3b8\]{color:#94a3b8}.text-\[\#818cf8\]{color:#818cf8}.text-\[\#2563eb\]{color:#2563eb}.text-\[\#6366f1\]{color:#6366f1}.text-\[\#6620a2\]{color:#6620a2}.text-\[\#7274ED\]{color:#7274ed}.text-\[\#9333ea\]{color:#9333ea}.text-\[\#9956DE\]{color:#9956de}.text-\[\#36326e\]{color:#36326e}.text-\[\#64748b\]{color:#64748b}.text-\[\#92400e\]{color:#92400e}.text-\[\#202124\]{color:#202124}.text-\[\#334155\]{color:#334155}.text-\[\#475569\]{color:#475569}.text-\[\#A56D29\]{color:#a56d29}.text-\[\#A74B50\]{color:#a74b50}.text-\[\#C65E63\]{color:#c65e63}.text-\[\#CC8A37\]{color:#cc8a37}.text-\[\#D66A6A\]{color:#d66a6a}.text-\[\#EAFBFF\]{color:#eafbff}.text-\[\#F08386\]{color:#f08386}.text-\[\#FF8B8B\]{color:#ff8b8b}.text-\[\#FFB356\]{color:#ffb356}.text-\[\#a0aec0\]{color:#a0aec0}.text-\[\#a3b1ee\]{color:#a3b1ee}.text-\[\#a8a5b3\]{color:#a8a5b3}.text-\[\#a855f7\]{color:#a855f7}.text-\[\#b91c1c\]{color:#b91c1c}.text-\[\#b45309\]{color:#b45309}.text-\[\#c4b5fd\]{color:#c4b5fd}.text-\[\#cbd5e1\]{color:#cbd5e1}.text-\[\#d1abff\]{color:#d1abff}.text-\[\#d1cec6\]{color:#d1cec6}.text-\[\#dde3eb\]{color:#dde3eb}.text-\[\#e66a5e\]{color:#e66a5e}.text-\[\#f8fafc\]{color:#f8fafc}.text-\[\#f43f5e\]{color:#f43f5e}.text-\[\#f97316\]{color:#f97316}.text-\[\#fcd34d\]{color:#fcd34d}.text-\[var\(--chart-2\)\]{color:var(--chart-2)}.text-\[var\(--chart-3\)\]{color:var(--chart-3)}.text-\[var\(--chart-4\)\]{color:var(--chart-4)}.text-\[var\(--primary\)\]{color:var(--primary)}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-600\/80{color:#dd7400cc}@supports (color:color-mix(in lab,red,red)){.text-amber-600\/80{color:color-mix(in oklab,var(--color-amber-600) 80%,transparent)}}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-amber-900\/80{color:#7b3306cc}@supports (color:color-mix(in lab,red,red)){.text-amber-900\/80{color:color-mix(in oklab,var(--color-amber-900) 80%,transparent)}}.text-amber-900\/85{color:#7b3306d9}@supports (color:color-mix(in lab,red,red)){.text-amber-900\/85{color:color-mix(in oklab,var(--color-amber-900) 85%,transparent)}}.text-black{color:var(--color-black)}.text-black\/25{color:#00000040}@supports (color:color-mix(in lab,red,red)){.text-black\/25{color:color-mix(in oklab,var(--color-black) 25%,transparent)}}.text-blue-200{color:var(--color-blue-200)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-100{color:var(--color-cyan-100)}.text-cyan-200{color:var(--color-cyan-200)}.text-cyan-500{color:var(--color-cyan-500)}.text-destructive{color:var(--destructive)}.text-emerald-100{color:var(--color-emerald-100)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-600\/80{color:#009767cc}@supports (color:color-mix(in lab,red,red)){.text-emerald-600\/80{color:color-mix(in oklab,var(--color-emerald-600) 80%,transparent)}}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-emerald-950{color:var(--color-emerald-950)}.text-foreground{color:var(--foreground)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-indigo-900{color:var(--color-indigo-900)}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/40{color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--muted-foreground) 60%,transparent)}}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-orange-500{color:var(--color-orange-500)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-pink-500{color:var(--color-pink-500)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-200{color:var(--color-purple-200)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-600\/80{color:#9810facc}@supports (color:color-mix(in lab,red,red)){.text-purple-600\/80{color:color-mix(in oklab,var(--color-purple-600) 80%,transparent)}}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-rose-100{color:var(--color-rose-100)}.text-rose-200{color:var(--color-rose-200)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-rose-900{color:var(--color-rose-900)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sky-100{color:var(--color-violet-100)}.text-sky-200{color:var(--color-violet-200)}.text-sky-300{color:var(--color-violet-300)}.text-sky-400{color:var(--color-violet-400)}.text-sky-500{color:var(--color-violet-500)}.text-sky-600{color:var(--color-violet-600)}.text-sky-600\/80{color:#7f22fecc}@supports (color:color-mix(in lab,red,red)){.text-sky-600\/80{color:color-mix(in oklab,var(--color-violet-600) 80%,transparent)}}.text-sky-700{color:var(--color-violet-700)}.text-sky-800{color:var(--color-violet-800)}.text-sky-900{color:var(--color-violet-900)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-500\/60{color:#62748e99}@supports (color:color-mix(in lab,red,red)){.text-slate-500\/60{color:color-mix(in oklab,var(--color-slate-500) 60%,transparent)}}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-400{color:var(--color-teal-400)}.text-teal-500{color:var(--color-teal-500)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-teal-900{color:var(--color-teal-900)}.text-transparent{color:#0000}.text-violet-300{color:var(--color-violet-300)}.text-violet-400{color:var(--color-violet-400)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.text-white\/5{color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.text-white\/5{color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.text-white\/10{color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.text-white\/10{color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.text-white\/25{color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\/30{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\/65{color:#ffffffa6}@supports (color:color-mix(in lab,red,red)){.text-white\/65{color:color-mix(in oklab,var(--color-white) 65%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.text-white\/85{color:color-mix(in oklab,var(--color-white) 85%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.text-white\/95{color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.text-white\/95{color:color-mix(in oklab,var(--color-white) 95%,transparent)}}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-800{color:var(--color-yellow-800)}.text-zinc-700{color:var(--color-zinc-700)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-slate-400{-webkit-text-decoration-color:var(--color-slate-400);text-decoration-color:var(--color-slate-400)}.underline-offset-4{text-underline-offset:4px}.accent-violet-500{accent-color:var(--color-violet-500)}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.opacity-\[0\.2\]{opacity:.2}.opacity-\[0\.03\]{opacity:.03}.opacity-\[0\.06\]{opacity:.06}.opacity-\[0\.15\]{opacity:.15}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-screen{mix-blend-mode:screen}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[-4px_0_24px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:-4px 0 24px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[-8px_0_40px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:-8px 0 40px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-4px_12px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 -4px 12px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-8px_30px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 -8px 30px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-10px_40px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 -10px 40px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-12px_0_0_\#f8fafc\]{--tw-shadow:0 -12px 0 0 var(--tw-shadow-color,#f8fafc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-15px_40px_rgba\(0\,0\,0\,0\.1\)\,inset_0_2px_15px_rgba\(255\,255\,255\,0\.7\)\,inset_0_1px_1px_rgba\(255\,255\,255\,1\)\]{--tw-shadow:0 -15px 40px var(--tw-shadow-color,#0000001a), inset 0 2px 15px var(--tw-shadow-color,#ffffffb3), inset 0 1px 1px var(--tw-shadow-color,#fff);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_2px_rgba\(251\,113\,133\,0\.45\)\,0_6px_0_rgba\(127\,29\,29\,1\)\]{--tw-shadow:0 0 0 2px var(--tw-shadow-color,#fb718573), 0 6px 0 var(--tw-shadow-color,#7f1d1d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_3px_\#c7d2fe\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#c7d2fe);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_4px_rgba\(168\,85\,247\,0\.6\)\]{--tw-shadow:0 0 4px var(--tw-shadow-color,#a855f799);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_4px_rgba\(244\,63\,94\,0\.6\)\]{--tw-shadow:0 0 4px var(--tw-shadow-color,#f43f5e99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(168\,85\,247\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#a855f7cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(244\,63\,94\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#f43f5ecc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(245\,158\,11\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#f59e0bcc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(255\,255\,255\,0\.7\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#ffffffb3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(129\,140\,248\,0\.8\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#818cf8cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(165\,180\,252\,0\.8\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#a5b4fccc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(244\,63\,94\,0\.6\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#f43f5e99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(255\,255\,255\,0\.8\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#fffc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_white\]{--tw-shadow:0 0 8px var(--tw-shadow-color,white);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(16\,185\,129\,0\.15\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#10b98126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(250\,204\,21\,0\.6\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#facc1599);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,146\,60\,0\.5\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fb923c80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,191\,36\,0\.5\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fbbf2480);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,191\,36\,0\.6\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fbbf2499);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,191\,36\,0\.8\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fbbf24cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(153\,86\,222\,0\.6\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#9956de99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(192\,132\,252\,0\.9\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#c084fce6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_14px_rgba\(16\,185\,129\,0\.25\)\]{--tw-shadow:0 0 14px var(--tw-shadow-color,#10b98140);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_14px_rgba\(148\,163\,184\,0\.2\)\]{--tw-shadow:0 0 14px var(--tw-shadow-color,#94a3b833);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(16\,185\,129\,0\.2\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#10b98133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(16\,185\,129\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#10b98126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(52\,211\,153\,0\.8\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#34d399cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(99\,102\,241\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#6366f126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(244\,63\,94\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#f43f5e26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(245\,158\,11\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#f59e0b26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(251\,191\,36\,0\.25\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#fbbf2440);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_rgba\(249\,115\,22\,0\.3\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,#f973164d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(251\,191\,36\,0\.35\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#fbbf2459);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(255\,139\,139\,0\.6\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#ff8b8b99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(255\,179\,86\,0\.6\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#ffb35699);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_20px_rgba\(245\,158\,11\,0\.15\)\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#f59e0b26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_20px_rgba\(251\,191\,36\,0\.3\)\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#fbbf244d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_24px_rgba\(250\,204\,21\,0\.6\)\]{--tw-shadow:0 0 24px var(--tw-shadow-color,#facc1599);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_-10px_rgba\(31\,167\,225\,0\.2\)\]{--tw-shadow:0 0 40px -10px var(--tw-shadow-color,#1fa7e133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_-10px_rgba\(138\,63\,211\,0\.2\)\]{--tw-shadow:0 0 40px -10px var(--tw-shadow-color,#8a3fd333);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_50px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 0 50px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(168\,85\,247\,0\.1\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#a855f71a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 1px 4px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 1px 4px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(79\,70\,229\,0\.13\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#4f46e521);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(168\,85\,247\,0\.15\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#a855f726);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_15px_-3px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 2px 15px -3px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_8px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 4px 8px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(5\,150\,105\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#0596694d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(14\,165\,233\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#0ea5e94d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(16\,185\,129\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#10b9814d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(139\,92\,246\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#8b5cf64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(14\,165\,233\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#0ea5e933);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(16\,185\,129\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#10b98133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(59\,130\,246\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#3b82f633);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(79\,70\,229\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#4f46e54d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(100\,116\,139\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#64748b33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(100\,116\,139\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#64748b4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f733);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f74d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.12\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f71f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(244\,63\,94\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f43f5e33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(244\,63\,94\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f43f5e4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(245\,158\,11\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f59e0b4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(249\,115\,22\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f9731633);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(43\,191\,123\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#2bbf7b66), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(45\,161\,216\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#2da1d866), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(157\,68\,255\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#9d44ff66), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(255\,92\,112\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#ff5c7066), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(14\,165\,233\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0ea5e921);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(16\,185\,129\,0\.08\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#10b98114);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(16\,185\,129\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#10b98121);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(168\,85\,247\,0\.3\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#a855f74d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(168\,85\,247\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#a855f721);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(168\,85\,247\,0\.15\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#a855f726);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(249\,115\,22\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#f9731621);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_24px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 4px 24px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_5px_12px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 5px 12px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(5\,150\,105\,1\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#059669);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(15\,20\,30\,0\.5\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#0f141e80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(79\,70\,229\,1\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#4f46e5);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(225\,29\,72\,1\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#e11d48);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(16\,185\,129\,0\.2\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#10b98133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(16\,185\,129\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#10b98140);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(59\,130\,246\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#3b82f640);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(168\,85\,247\,0\.12\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#a855f71f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(168\,85\,247\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#a855f740);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(244\,63\,94\,0\.2\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#f43f5e33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(244\,63\,94\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#f43f5e40);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(245\,158\,11\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#f59e0b40);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_20px_-8px_rgba\(79\,70\,229\,0\.5\)\]{--tw-shadow:0 8px 20px -8px var(--tw-shadow-color,#4f46e580);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_-10px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 8px 24px -10px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_-12px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 8px 30px -12px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgb\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(31\,167\,225\,0\.2\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#1fa7e133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(59\,58\,130\,0\.3\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#3b3a824d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(138\,63\,211\,0\.2\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#8a3fd333);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_10px_-10px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 10px 10px -10px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_40px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 10px 40px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_40px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 10px 40px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_25px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 12px 25px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_30px_-10px_rgba\(79\,70\,229\,0\.5\)\]{--tw-shadow:0 12px 30px -10px var(--tw-shadow-color,#4f46e580);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_15px_25px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 15px 25px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_18px_30px_-20px_rgba\(0\,0\,0\,0\.45\)\]{--tw-shadow:0 18px 30px -20px var(--tw-shadow-color,#00000073);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_30px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 20px 30px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_40px_-15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 20px 40px -15px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_45px_-15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 20px 45px -15px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_50px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 20px 50px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_50px_rgba\(15\,20\,34\,0\.2\)\]{--tw-shadow:0 20px 50px var(--tw-shadow-color,#0f142233);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_60px_-15px_rgba\(168\,85\,247\,0\.15\)\]{--tw-shadow:0 20px 60px -15px var(--tw-shadow-color,#a855f726);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_60px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 20px 60px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_24px_60px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 24px 60px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_24px_64px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow:0 24px 64px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_25px_60px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 25px 60px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_30px_80px_rgba\(0\,0\,0\,0\.6\)\]{--tw-shadow:0 30px 80px var(--tw-shadow-color,#0009);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_30px_80px_rgba\(0\,0\,0\,0\.8\)\]{--tw-shadow:0 30px 80px var(--tw-shadow-color,#000c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_30px_80px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 30px 80px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_0_4px_rgba\(0\,0\,0\,0\.01\)\]{--tw-shadow:2px 0 4px var(--tw-shadow-color,#00000003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_0_4px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:2px 0 4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_0_4px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:2px 0 4px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_-4px_6px_rgba\(0\,0\,0\,0\.05\)\,0_4px_6px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:inset 0 -4px 6px var(--tw-shadow-color,#0000000d), 0 4px 6px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_20px_rgba\(168\,85\,247\,0\.05\)\]{--tw-shadow:inset 0 0 20px var(--tw-shadow-color,#a855f70d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_1px_2px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:inset 0 1px 2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_1px_3px_rgba\(255\,255\,255\,0\.5\)\]{--tw-shadow:inset 0 1px 3px var(--tw-shadow-color,#ffffff80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_2px_4px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:inset 0 2px 4px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_6px_15px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:inset 0 6px 15px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4,.ring-\[4px\]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[\#1FA7E1\]\/20{--tw-shadow-color:#1fa7e133}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#1FA7E1\]\/20{--tw-shadow-color:color-mix(in oklab, oklab(68.7044% -.0807821 -.10979/.2) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#1FA7E1\]\/30{--tw-shadow-color:#1fa7e14d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#1FA7E1\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(68.7044% -.0807821 -.10979/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#1FA7E1\]\/40{--tw-shadow-color:#1fa7e166}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#1FA7E1\]\/40{--tw-shadow-color:color-mix(in oklab, oklab(68.7044% -.0807821 -.10979/.4) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#8A3FD3\]\/30{--tw-shadow-color:#8a3fd34d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#8A3FD3\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(54.1025% .117281 -.181162/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#8A3FD3\]\/40{--tw-shadow-color:#8a3fd366}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#8A3FD3\]\/40{--tw-shadow-color:color-mix(in oklab, oklab(54.1025% .117281 -.181162/.4) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#8B5CF6\]\/20{--tw-shadow-color:#8b5cf633}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#8B5CF6\]\/20{--tw-shadow-color:color-mix(in oklab, oklab(60.5631% .0845415 -.201932/.2) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#75D06A\]\/30{--tw-shadow-color:#75d06a4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#75D06A\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(77.7281% -.128439 .101669/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#9956DE\]\/20{--tw-shadow-color:#9956de33}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#9956DE\]\/20{--tw-shadow-color:color-mix(in oklab, oklab(59.4745% .111053 -.167638/.2) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#9956DE\]\/30{--tw-shadow-color:#9956de4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#9956DE\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(59.4745% .111053 -.167638/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#FB96BB\]\/30{--tw-shadow-color:#fb96bb4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#FB96BB\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(78.801% .12777 -.00670064/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#FF8B8B\]\/30{--tw-shadow-color:#ff8b8b4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#FF8B8B\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(76.3223% .131566 .050208/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#FFB356\]\/30{--tw-shadow-color:#ffb3564d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#FFB356\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(82.2219% .0499055 .130321/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[rgba\(124\,58\,237\,0\.05\)_0px_0px_30px_inset\]{--tw-shadow-color:#7c3aed0d}@supports (color:color-mix(in lab,red,red)){.shadow-\[rgba\(124\,58\,237\,0\.05\)_0px_0px_30px_inset\]{--tw-shadow-color:color-mix(in oklab, #7c3aed0d 0px 0px 30px inset var(--tw-shadow-alpha), transparent)}}.shadow-blue-200\/50{--tw-shadow-color:#bedbff80}@supports (color:color-mix(in lab,red,red)){.shadow-blue-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-500\/20{--tw-shadow-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.shadow-blue-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-200\/50{--tw-shadow-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-500\/20{--tw-shadow-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-500\/25{--tw-shadow-color:#00bb7f40}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-500\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-500) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-500\/30{--tw-shadow-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-500\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-100{--tw-shadow-color:oklch(93% .034 272.788)}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-100{--tw-shadow-color:color-mix(in oklab, var(--color-indigo-100) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-100\/20{--tw-shadow-color:#e0e7ff33}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-100\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-100) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-200{--tw-shadow-color:oklch(87% .065 274.039)}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-200{--tw-shadow-color:color-mix(in oklab, var(--color-indigo-200) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-200\/50{--tw-shadow-color:#c7d2ff80}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-500\/10{--tw-shadow-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-500\/20{--tw-shadow-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-500\/25{--tw-shadow-color:#625fff40}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-100{--tw-shadow-color:oklch(94.6% .033 307.174)}@supports (color:color-mix(in lab,red,red)){.shadow-purple-100{--tw-shadow-color:color-mix(in oklab, var(--color-purple-100) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200{--tw-shadow-color:oklch(90.2% .063 306.703)}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200{--tw-shadow-color:color-mix(in oklab, var(--color-purple-200) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200\/50{--tw-shadow-color:#e9d5ff80}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200\/60{--tw-shadow-color:#e9d5ff99}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200\/60{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-200) 60%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-500\/20{--tw-shadow-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.shadow-purple-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-600\/25{--tw-shadow-color:#9810fa40}@supports (color:color-mix(in lab,red,red)){.shadow-purple-600\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-600) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-900\/50{--tw-shadow-color:#59168b80}@supports (color:color-mix(in lab,red,red)){.shadow-purple-900\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-900) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-900\/10{--tw-shadow-color:#82181a1a}@supports (color:color-mix(in lab,red,red)){.shadow-red-900\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-900) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-200\/50{--tw-shadow-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.shadow-rose-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-500\/20{--tw-shadow-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.shadow-rose-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-sky-200{--tw-shadow-color:oklch(89.4% .057 293.283)}@supports (color:color-mix(in lab,red,red)){.shadow-sky-200{--tw-shadow-color:color-mix(in oklab, var(--color-violet-200) var(--tw-shadow-alpha), transparent)}}.shadow-sky-500\/20{--tw-shadow-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.shadow-sky-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-violet-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-100{--tw-shadow-color:oklch(96.8% .007 247.896)}@supports (color:color-mix(in lab,red,red)){.shadow-slate-100{--tw-shadow-color:color-mix(in oklab, var(--color-slate-100) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200{--tw-shadow-color:oklch(92.9% .013 255.508)}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200{--tw-shadow-color:color-mix(in oklab, var(--color-slate-200) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200\/40{--tw-shadow-color:#e2e8f066}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-200) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200\/50{--tw-shadow-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-900\/10{--tw-shadow-color:#0f172b1a}@supports (color:color-mix(in lab,red,red)){.shadow-slate-900\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-900) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-900\/\[0\.04\]{--tw-shadow-color:#0f172b0a}@supports (color:color-mix(in lab,red,red)){.shadow-slate-900\/\[0\.04\]{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-900) 4%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[\#1FA7E1\]\/35{--tw-ring-color:oklab(68.7044% -.0807821 -.10979/.35)}.ring-\[\#8B5CF6\]\/10{--tw-ring-color:oklab(60.5631% .0845415 -.201932/.1)}.ring-\[\#9956DE\]\/50{--tw-ring-color:oklab(59.4745% .111053 -.167638/.5)}.ring-\[color-mix\(in_srgb\,var\(--chart-2\)_40\%\,transparent\)\]{--tw-ring-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.ring-\[color-mix\(in_srgb\,var\(--chart-2\)_40\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--chart-2) 40%,transparent)}}.ring-\[color-mix\(in_srgb\,var\(--chart-3\)_40\%\,transparent\)\]{--tw-ring-color:var(--chart-3)}@supports (color:color-mix(in lab,red,red)){.ring-\[color-mix\(in_srgb\,var\(--chart-3\)_40\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--chart-3) 40%,transparent)}}.ring-\[color-mix\(in_srgb\,var\(--chart-4\)_40\%\,transparent\)\]{--tw-ring-color:var(--chart-4)}@supports (color:color-mix(in lab,red,red)){.ring-\[color-mix\(in_srgb\,var\(--chart-4\)_40\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--chart-4) 40%,transparent)}}.ring-green-300{--tw-ring-color:var(--color-green-300)}.ring-primary{--tw-ring-color:var(--primary)}.ring-red-300{--tw-ring-color:var(--color-red-300)}.ring-red-500{--tw-ring-color:var(--color-red-500)}.ring-ring\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-rose-300{--tw-ring-color:var(--color-rose-300)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-sky-50{--tw-ring-color:var(--color-violet-50)}.ring-slate-100{--tw-ring-color:var(--color-slate-100)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.ring-slate-800{--tw-ring-color:var(--color-slate-800)}.ring-white{--tw-ring-color:var(--color-white)}.ring-white\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.ring-white\/10{--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.ring-white\/20{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.ring-white\/20{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[4px\]{--tw-ring-offset-width:4px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[\#0B0F19\]{--tw-ring-offset-color:#0b0f19}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[2px\]{--tw-blur:blur(2px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[32px\]{--tw-blur:blur(32px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[60px\]{--tw-blur:blur(60px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[100px\]{--tw-blur:blur(100px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[140px\]{--tw-blur:blur(140px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[160px\]{--tw-blur:blur(160px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-md{--tw-blur:blur(var(--blur-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.brightness-105{--tw-brightness:brightness(105%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.contrast-50{--tw-contrast:contrast(50%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[-2px_3px_0px_rgba\(0\,0\,0\,0\.8\)\]{--tw-drop-shadow-size:drop-shadow(-2px 3px 0px var(--tw-drop-shadow-color,#000c));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_8px_rgba\(31\,167\,225\,0\.5\)\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#1fa7e180));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_8px_rgba\(138\,63\,211\,0\.5\)\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#8a3fd380));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_8px_rgba\(251\,191\,36\,0\.9\)\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#fbbf24e6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(245\,158\,11\,0\.6\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#f59e0b99));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(245\,158\,11\,0\.8\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#f59e0bcc));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(250\,204\,21\,0\.9\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#facc15e6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(255\,255\,255\,0\.4\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#fff6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_15px_rgba\(252\,211\,77\,0\.8\)\]{--tw-drop-shadow-size:drop-shadow(0 0 15px var(--tw-drop-shadow-color,#fcd34dcc));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_25px_rgba\(252\,211\,77\,0\.9\)\]{--tw-drop-shadow-size:drop-shadow(0 0 25px var(--tw-drop-shadow-color,#fcd34de6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_10px_20px_rgba\(0\,0\,0\,0\.15\)\]{--tw-drop-shadow-size:drop-shadow(0 10px 20px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_12px_15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-drop-shadow-size:drop-shadow(0 12px 15px var(--tw-drop-shadow-color,#0000004d));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_15px_15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-drop-shadow-size:drop-shadow(0 15px 15px var(--tw-drop-shadow-color,#0000004d));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.saturate-50{--tw-saturate:saturate(50%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[12px\]{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[16px\]{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[24px\]{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.delay-75{transition-delay:75ms}.duration-0{--tw-duration:0s;transition-duration:0s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.\[background\:linear-gradient\(var\(--grid-color\)_0_1px\,_transparent_1px_var\(--beam-size\)\)_50\%_-0\.5px_\/var\(--beam-size\)_var\(--beam-size\)\,linear-gradient\(90deg\,_var\(--grid-color\)_0_1px\,_transparent_1px_var\(--beam-size\)\)_50\%_50\%_\/var\(--beam-size\)_var\(--beam-size\)\]{background:linear-gradient(var(--grid-color) 0 1px,transparent 1px var(--beam-size)) 50% -.5px /var(--beam-size) var(--beam-size),linear-gradient(90deg,var(--grid-color) 0 1px,transparent 1px var(--beam-size)) 50% 50% /var(--beam-size) var(--beam-size)}.\[background\:var\(--background\)\]{background:var(--background)}.\[clip-path\:inset\(0\)\]{clip-path:inset(0)}.\[perspective\:var\(--perspective\)\]{perspective:var(--perspective)}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[transform-style\:preserve-3d\]{transform-style:preserve-3d}.ring-inset{--tw-ring-inset:inset}.group-focus-within\:text-\[\#4f46e5\]:is(:where(.group):focus-within *){color:#4f46e5}.group-focus-within\:text-\[\#9956DE\]:is(:where(.group):focus-within *){color:#9956de}.group-focus-within\:text-indigo-500:is(:where(.group):focus-within *){color:var(--color-indigo-500)}.group-focus-within\:text-indigo-600:is(:where(.group):focus-within *){color:var(--color-indigo-600)}.group-focus-within\:text-white:is(:where(.group):focus-within *){color:var(--color-white)}.group-focus-within\/input\:text-indigo-500:is(:where(.group\/input):focus-within *){color:var(--color-indigo-500)}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\:left-\[150\%\]:is(:where(.group):hover *){left:150%}.group-hover\:-translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-x-4:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-4:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-y-1:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-y-2:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-y-4:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-y-\[-3px\]:is(:where(.group):hover *){--tw-translate-y:-3px;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-150:is(:where(.group):hover *){--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-\[1\.2\]:is(:where(.group):hover *){scale:1.2}.group-hover\:scale-\[1\.3\]:is(:where(.group):hover *){scale:1.3}.group-hover\:scale-\[1\.4\]:is(:where(.group):hover *){scale:1.4}.group-hover\:scale-\[1\.05\]:is(:where(.group):hover *){scale:1.05}.group-hover\:scale-\[1\.6\]:is(:where(.group):hover *){scale:1.6}.group-hover\:scale-\[1\.8\]:is(:where(.group):hover *){scale:1.8}.group-hover\:-rotate-6:is(:where(.group):hover *){rotate:-6deg}.group-hover\:-rotate-12:is(:where(.group):hover *){rotate:-12deg}.group-hover\:rotate-3:is(:where(.group):hover *){rotate:3deg}.group-hover\:rotate-6:is(:where(.group):hover *){rotate:6deg}.group-hover\:rotate-12:is(:where(.group):hover *){rotate:12deg}.group-hover\:rotate-90:is(:where(.group):hover *){rotate:90deg}.group-hover\:rotate-180:is(:where(.group):hover *){rotate:180deg}.group-hover\:rotate-\[25deg\]:is(:where(.group):hover *){rotate:25deg}.group-hover\:animate-\[shimmer_1\.5s_ease-out\]:is(:where(.group):hover *){animation:1.5s ease-out shimmer}.group-hover\:border-amber-200:is(:where(.group):hover *){border-color:var(--color-amber-200)}.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}.group-hover\:border-emerald-200:is(:where(.group):hover *){border-color:var(--color-emerald-200)}.group-hover\:border-indigo-400:is(:where(.group):hover *){border-color:var(--color-indigo-400)}.group-hover\:border-purple-100:is(:where(.group):hover *){border-color:var(--color-purple-100)}.group-hover\:border-purple-200:is(:where(.group):hover *){border-color:var(--color-purple-200)}.group-hover\:border-rose-200:is(:where(.group):hover *){border-color:var(--color-rose-200)}.group-hover\:border-sky-200:is(:where(.group):hover *){border-color:var(--color-violet-200)}.group-hover\:border-sky-300:is(:where(.group):hover *){border-color:var(--color-violet-300)}.group-hover\:border-slate-300:is(:where(.group):hover *){border-color:var(--color-slate-300)}.group-hover\:border-teal-400:is(:where(.group):hover *){border-color:var(--color-teal-400)}.group-hover\:border-r-amber-400:is(:where(.group):hover *){border-right-color:var(--color-amber-400)}.group-hover\:border-r-teal-400:is(:where(.group):hover *){border-right-color:var(--color-teal-400)}.group-hover\:border-b-amber-400:is(:where(.group):hover *){border-bottom-color:var(--color-amber-400)}.group-hover\:border-b-teal-400:is(:where(.group):hover *){border-bottom-color:var(--color-teal-400)}.group-hover\:bg-\[\#9333ea\]:is(:where(.group):hover *){background-color:#9333ea}.group-hover\:bg-\[\#a855f7\]:is(:where(.group):hover *){background-color:#a855f7}.group-hover\:bg-amber-50:is(:where(.group):hover *){background-color:var(--color-amber-50)}.group-hover\:bg-amber-100\/50:is(:where(.group):hover *){background-color:#fef3c680}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-amber-100\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-amber-100) 50%,transparent)}}.group-hover\:bg-black\/20:is(:where(.group):hover *){background-color:#0003}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-black\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.group-hover\:bg-blue-100:is(:where(.group):hover *){background-color:var(--color-blue-100)}.group-hover\:bg-emerald-50:is(:where(.group):hover *){background-color:var(--color-emerald-50)}.group-hover\:bg-emerald-100:is(:where(.group):hover *){background-color:var(--color-emerald-100)}.group-hover\:bg-indigo-600:is(:where(.group):hover *){background-color:var(--color-indigo-600)}.group-hover\:bg-purple-100:is(:where(.group):hover *){background-color:var(--color-purple-100)}.group-hover\:bg-slate-50:is(:where(.group):hover *){background-color:var(--color-slate-50)}.group-hover\:bg-slate-50\/90:is(:where(.group):hover *){background-color:#f8fafce6}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-slate-50\/90:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-slate-50) 90%,transparent)}}.group-hover\:bg-slate-400:is(:where(.group):hover *){background-color:var(--color-slate-400)}.group-hover\:bg-slate-700:is(:where(.group):hover *){background-color:var(--color-slate-700)}.group-hover\:bg-teal-50:is(:where(.group):hover *){background-color:var(--color-teal-50)}.group-hover\:bg-white\/20:is(:where(.group):hover *){background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-white\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.group-hover\:bg-white\/30:is(:where(.group):hover *){background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-white\/30:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.group-hover\:p-2\.5:is(:where(.group):hover *){padding:calc(var(--spacing) * 2.5)}.group-hover\:text-\[\#1FA7E1\]:is(:where(.group):hover *){color:#1fa7e1}.group-hover\:text-\[\#1e293b\]:is(:where(.group):hover *){color:#1e293b}.group-hover\:text-\[\#4f46e5\]:is(:where(.group):hover *){color:#4f46e5}.group-hover\:text-\[\#6ED1CF\]:is(:where(.group):hover *){color:#6ed1cf}.group-hover\:text-\[\#7274ED\]:is(:where(.group):hover *){color:#7274ed}.group-hover\:text-\[\#9333ea\]:is(:where(.group):hover *){color:#9333ea}.group-hover\:text-\[\#9956DE\]:is(:where(.group):hover *){color:#9956de}.group-hover\:text-\[\#FFB356\]:is(:where(.group):hover *){color:#ffb356}.group-hover\:text-\[\#a855f7\]:is(:where(.group):hover *){color:#a855f7}.group-hover\:text-amber-500:is(:where(.group):hover *){color:var(--color-amber-500)}.group-hover\:text-blue-700:is(:where(.group):hover *){color:var(--color-blue-700)}.group-hover\:text-emerald-500:is(:where(.group):hover *){color:var(--color-emerald-500)}.group-hover\:text-emerald-600:is(:where(.group):hover *){color:var(--color-emerald-600)}.group-hover\:text-emerald-700:is(:where(.group):hover *){color:var(--color-emerald-700)}.group-hover\:text-indigo-600:is(:where(.group):hover *){color:var(--color-indigo-600)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--primary)}.group-hover\:text-purple-600:is(:where(.group):hover *){color:var(--color-purple-600)}.group-hover\:text-rose-500:is(:where(.group):hover *){color:var(--color-rose-500)}.group-hover\:text-rose-600:is(:where(.group):hover *){color:var(--color-rose-600)}.group-hover\:text-sky-500:is(:where(.group):hover *){color:var(--color-violet-500)}.group-hover\:text-sky-600:is(:where(.group):hover *){color:var(--color-violet-600)}.group-hover\:text-slate-700:is(:where(.group):hover *){color:var(--color-slate-700)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-90:is(:where(.group):hover *){opacity:.9}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:shadow-\[0_-20px_50px_rgba\(0\,0\,0\,0\.15\)\,inset_0_2px_15px_rgba\(255\,255\,255\,0\.8\)\,inset_0_1px_1px_rgba\(255\,255\,255\,1\)\]:is(:where(.group):hover *){--tw-shadow:0 -20px 50px var(--tw-shadow-color,#00000026), inset 0 2px 15px var(--tw-shadow-color,#fffc), inset 0 1px 1px var(--tw-shadow-color,#fff);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:shadow-\[0_24px_40px_-15px_rgba\(0\,0\,0\,0\.5\)\]:is(:where(.group):hover *){--tw-shadow:0 24px 40px -15px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:shadow-md:is(:where(.group):hover *){--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:duration-\[800ms\]:is(:where(.group):hover *){--tw-duration:.8s;transition-duration:.8s}.group-hover\/avatar\:scale-110:is(:where(.group\/avatar):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\/btn\:translate-x-0\.5:is(:where(.group\/btn):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\/btn\:-translate-y-0\.5:is(:where(.group\/btn):hover *){--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\/cal\:bg-slate-100:is(:where(.group\/cal):hover *){background-color:var(--color-slate-100)}.group-hover\/drop\:bg-purple-50:is(:where(.group\/drop):hover *){background-color:var(--color-purple-50)}.group-hover\/drop\:text-purple-500:is(:where(.group\/drop):hover *){color:var(--color-purple-500)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}.group-hover\/toggle\:block:is(:where(.group\/toggle):hover *){display:block}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}.peer-checked\:bg-\[\#4f46e5\]:is(:where(.peer):checked~*){background-color:#4f46e5}.peer-checked\:font-bold:is(:where(.peer):checked~*){--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.peer-checked\:text-\[\#1e293b\]:is(:where(.peer):checked~*){color:#1e293b}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-\[\#94a3b8\]::placeholder{color:#94a3b8}.placeholder\:text-\[\#64748b\]::placeholder{color:#64748b}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.placeholder\:text-white\/40::placeholder{color:#fff6}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-white\/40::placeholder{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-2:before{content:var(--tw-content);top:calc(var(--spacing) * 2)}.before\:bottom-\[-16px\]:before{content:var(--tw-content);bottom:-16px}.before\:bottom-\[-24px\]:before{content:var(--tw-content);bottom:-24px}.before\:left-1\.5:before{content:var(--tw-content);left:calc(var(--spacing) * 1.5)}.before\:left-2:before{content:var(--tw-content);left:calc(var(--spacing) * 2)}.before\:w-\[1px\]:before{content:var(--tw-content);width:1px}.before\:w-\[2px\]:before{content:var(--tw-content);width:2px}.before\:bg-slate-100:before{content:var(--tw-content);background-color:var(--color-slate-100)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing) * 4)}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing) * 4)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);border-color:var(--color-gray-300)}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:before\:hidden:last-child:before{content:var(--tw-content);display:none}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.focus-within\:border-\[\#a855f7\]:focus-within{border-color:#a855f7}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-4:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-\[\#a855f7\]\/10:focus-within{--tw-ring-color:oklab(62.6846% .129701 -.193012/.1)}.focus-within\:ring-indigo-500\/20:focus-within{--tw-ring-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.focus-within\:ring-indigo-500\/20:focus-within{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}@media(hover:hover){.hover\:z-10:hover{z-index:10}.hover\:h-20:hover{height:calc(var(--spacing) * 20)}.hover\:w-24:hover{width:calc(var(--spacing) * 24)}.hover\:-translate-x-1:hover{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-x-4:hover{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-2:hover{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-\[1px\]:hover{--tw-translate-y: -1px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.01\]:hover{scale:1.01}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:rotate-0:hover{rotate:0deg}.hover\:rotate-3:hover{rotate:3deg}.hover\:gap-2:hover{gap:calc(var(--spacing) * 2)}.hover\:border-\[\#1FA7E1\]:hover{border-color:#1fa7e1}.hover\:border-\[\#1FA7E1\]\/50:hover{border-color:#1fa7e180}.hover\:border-\[\#1a85a4\]\/40:hover{border-color:#1a85a466}.hover\:border-\[\#8A3FD3\]\/50:hover{border-color:#8a3fd380}.hover\:border-\[\#94a3b8\]:hover{border-color:#94a3b8}.hover\:border-\[\#818cf8\]:hover{border-color:#818cf8}.hover\:border-\[\#9956DE\]:hover{border-color:#9956de}.hover\:border-\[\#9956DE\]\/30:hover{border-color:#9956de4d}.hover\:border-\[\#9956DE\]\/50:hover{border-color:#9956de80}.hover\:border-\[\#9956DE\]\/60:hover{border-color:#9956de99}.hover\:border-\[\#F08386\]:hover{border-color:#f08386}.hover\:border-\[\#F08386\]\/60:hover{border-color:#f0838699}.hover\:border-\[\#a855f7\]:hover{border-color:#a855f7}.hover\:border-\[\#bbf7d0\]:hover{border-color:#bbf7d0}.hover\:border-\[\#bfdbfe\]:hover{border-color:#bfdbfe}.hover\:border-\[\#cbd5e1\]:hover{border-color:#cbd5e1}.hover\:border-\[\#d1cec6\]:hover{border-color:#d1cec6}.hover\:border-\[\#d8b4fe\]:hover{border-color:#d8b4fe}.hover\:border-\[\#dde3eb\]:hover{border-color:#dde3eb}.hover\:border-\[\#e2e8f0\]:hover{border-color:#e2e8f0}.hover\:border-\[\#fecdd3\]:hover{border-color:#fecdd3}.hover\:border-\[\#fed7aa\]:hover{border-color:#fed7aa}.hover\:border-amber-200:hover{border-color:var(--color-amber-200)}.hover\:border-amber-200\/60:hover{border-color:#fee68599}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-200\/60:hover{border-color:color-mix(in oklab,var(--color-amber-200) 60%,transparent)}}.hover\:border-blue-200:hover{border-color:var(--color-blue-200)}.hover\:border-emerald-100:hover{border-color:var(--color-emerald-100)}.hover\:border-emerald-200:hover{border-color:var(--color-emerald-200)}.hover\:border-emerald-300:hover{border-color:var(--color-emerald-300)}.hover\:border-indigo-100:hover{border-color:var(--color-indigo-100)}.hover\:border-indigo-200:hover{border-color:var(--color-indigo-200)}.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:border-indigo-600:hover{border-color:var(--color-indigo-600)}.hover\:border-purple-100:hover{border-color:var(--color-purple-100)}.hover\:border-purple-200:hover{border-color:var(--color-purple-200)}.hover\:border-purple-400:hover{border-color:var(--color-purple-400)}.hover\:border-purple-600:hover{border-color:var(--color-purple-600)}.hover\:border-rose-100:hover{border-color:var(--color-rose-100)}.hover\:border-rose-200:hover{border-color:var(--color-rose-200)}.hover\:border-rose-300:hover{border-color:var(--color-rose-300)}.hover\:border-sky-200:hover{border-color:var(--color-violet-200)}.hover\:border-sky-300:hover{border-color:var(--color-violet-300)}.hover\:border-slate-200:hover{border-color:var(--color-slate-200)}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:border-violet-100:hover{border-color:var(--color-violet-100)}.hover\:bg-\[\#1C96CB\]:hover{background-color:#1c96cb}.hover\:bg-\[\#1FA7E1\]\/5:hover{background-color:#1fa7e10d}.hover\:bg-\[\#1a95c9\]:hover{background-color:#1a95c9}.hover\:bg-\[\#4f46e5\]:hover{background-color:#4f46e5}.hover\:bg-\[\#5AB84E\]:hover{background-color:#5ab84e}.hover\:bg-\[\#6ab359\]:hover{background-color:#6ab359}.hover\:bg-\[\#6b4494\]:hover{background-color:#6b4494}.hover\:bg-\[\#7b35c0\]:hover{background-color:#7b35c0}.hover\:bg-\[\#7c3aed\]:hover{background-color:#7c3aed}.hover\:bg-\[\#008f5d\]:hover{background-color:#008f5d}.hover\:bg-\[\#8A3FD3\]\/5:hover{background-color:#8a3fd30d}.hover\:bg-\[\#8A4DCA\]:hover{background-color:#8a4dca}.hover\:bg-\[\#8b5cf6\]:hover{background-color:#8b5cf6}.hover\:bg-\[\#8b45d1\]:hover{background-color:#8b45d1}.hover\:bg-\[\#126b84\]:hover{background-color:#126b84}.hover\:bg-\[\#3730a3\]:hover{background-color:#3730a3}.hover\:bg-\[\#4338ca\]:hover{background-color:#4338ca}.hover\:bg-\[\#6366f1\]:hover{background-color:#6366f1}.hover\:bg-\[\#8544c7\]:hover{background-color:#8544c7}.hover\:bg-\[\#8850CE\]:hover{background-color:#8850ce}.hover\:bg-\[\#9333ea\]:hover{background-color:#9333ea}.hover\:bg-\[\#9956DE\]:hover{background-color:#9956de}.hover\:bg-\[\#9956DE\]\/5:hover{background-color:#9956de0d}.hover\:bg-\[\#9956DE\]\/6:hover{background-color:#9956de0f}.hover\:bg-\[\#9956DE\]\/8:hover{background-color:#9956de14}.hover\:bg-\[\#9956DE\]\/12:hover{background-color:#9956de1f}.hover\:bg-\[\#9956DE\]\/20:hover{background-color:#9956de33}.hover\:bg-\[\#059669\]:hover{background-color:#059669}.hover\:bg-\[\#283042\]:hover{background-color:#283042}.hover\:bg-\[\#334155\]:hover{background-color:#334155}.hover\:bg-\[\#F08386\]\/12:hover{background-color:#f083861f}.hover\:bg-\[\#FA7DA9\]:hover{background-color:#fa7da9}.hover\:bg-\[\#FF7373\]:hover{background-color:#ff7373}.hover\:bg-\[\#dde3eb\]:hover{background-color:#dde3eb}.hover\:bg-\[\#e0e7ff\]:hover{background-color:#e0e7ff}.hover\:bg-\[\#edf1f7\]:hover{background-color:#edf1f7}.hover\:bg-\[\#edf1f7\]\/50:hover{background-color:#edf1f780}.hover\:bg-\[\#f0fbff\]:hover{background-color:#f0fbff}.hover\:bg-\[\#f1f5f9\]:hover{background-color:#f1f5f9}.hover\:bg-\[\#f5f3ff\]:hover{background-color:#f5f3ff}.hover\:bg-\[\#f7f9fc\]:hover{background-color:#f7f9fc}.hover\:bg-\[\#f8fafc\]:hover{background-color:#f8fafc}.hover\:bg-\[\#fafbff\]:hover{background-color:#fafbff}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-200\/50:hover{background-color:#fee68580}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-200\/50:hover{background-color:color-mix(in oklab,var(--color-amber-200) 50%,transparent)}}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-black\/40:hover{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/40:hover{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-emerald-50:hover{background-color:var(--color-emerald-50)}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-400:hover{background-color:var(--color-emerald-400)}.hover\:bg-emerald-600:hover{background-color:var(--color-emerald-600)}.hover\:bg-emerald-700:hover{background-color:var(--color-emerald-700)}.hover\:bg-indigo-50:hover{background-color:var(--color-indigo-50)}.hover\:bg-indigo-100:hover{background-color:var(--color-indigo-100)}.hover\:bg-indigo-600:hover{background-color:var(--color-indigo-600)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-primary:hover,.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}.hover\:bg-purple-50\/10:hover{background-color:#faf5ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/10:hover{background-color:color-mix(in oklab,var(--color-purple-50) 10%,transparent)}}.hover\:bg-purple-50\/20:hover{background-color:#faf5ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/20:hover{background-color:color-mix(in oklab,var(--color-purple-50) 20%,transparent)}}.hover\:bg-purple-50\/30:hover{background-color:#faf5ff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/30:hover{background-color:color-mix(in oklab,var(--color-purple-50) 30%,transparent)}}.hover\:bg-purple-50\/40:hover{background-color:#faf5ff66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/40:hover{background-color:color-mix(in oklab,var(--color-purple-50) 40%,transparent)}}.hover\:bg-purple-100:hover{background-color:var(--color-purple-100)}.hover\:bg-purple-200:hover{background-color:var(--color-purple-200)}.hover\:bg-purple-500:hover{background-color:var(--color-purple-500)}.hover\:bg-purple-600:hover{background-color:var(--color-purple-600)}.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\:bg-purple-900\/40:hover{background-color:#59168b66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-900\/40:hover{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}.hover\:bg-rose-100:hover{background-color:var(--color-rose-100)}.hover\:bg-rose-500:hover{background-color:var(--color-rose-500)}.hover\:bg-rose-500\/10:hover{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-rose-500\/10:hover{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-rose-700:hover{background-color:var(--color-rose-700)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-sky-50:hover{background-color:var(--color-violet-50)}.hover\:bg-sky-50\/80:hover{background-color:#f5f3ffcc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sky-50\/80:hover{background-color:color-mix(in oklab,var(--color-violet-50) 80%,transparent)}}.hover\:bg-sky-300:hover{background-color:var(--color-violet-300)}.hover\:bg-sky-500:hover{background-color:var(--color-violet-500)}.hover\:bg-sky-600:hover{background-color:var(--color-violet-600)}.hover\:bg-sky-700:hover{background-color:var(--color-violet-700)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-50\/50:hover{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/50:hover{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.hover\:bg-slate-50\/60:hover{background-color:#f8fafc99}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/60:hover{background-color:color-mix(in oklab,var(--color-slate-50) 60%,transparent)}}.hover\:bg-slate-50\/70:hover{background-color:#f8fafcb3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/70:hover{background-color:color-mix(in oklab,var(--color-slate-50) 70%,transparent)}}.hover\:bg-slate-50\/80:hover{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/80:hover{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-100\/50:hover{background-color:#f1f5f980}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-100\/50:hover{background-color:color-mix(in oklab,var(--color-slate-100) 50%,transparent)}}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)}.hover\:bg-slate-200\/50:hover{background-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-200\/50:hover{background-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.hover\:bg-slate-200\/70:hover{background-color:#e2e8f0b3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-200\/70:hover{background-color:color-mix(in oklab,var(--color-slate-200) 70%,transparent)}}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-violet-100:hover{background-color:var(--color-violet-100)}.hover\:bg-violet-500:hover{background-color:var(--color-violet-500)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.hover\:bg-white\/50:hover{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/50:hover{background-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.hover\:bg-white\/60:hover{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/60:hover{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.hover\:bg-white\/80:hover{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/80:hover{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.hover\:bg-white\/90:hover{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/90:hover{background-color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.hover\:\!from-\[\#8FE4DA\]:hover{--tw-gradient-from:#8fe4da!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.hover\:from-\[\#9333ea\]:hover{--tw-gradient-from:#9333ea;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-\[\#FFA500\]:hover{--tw-gradient-from:orange;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-amber-600:hover{--tw-gradient-from:var(--color-amber-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-purple-500:hover{--tw-gradient-from:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-purple-700:hover{--tw-gradient-from:var(--color-purple-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-sky-700:hover{--tw-gradient-from:var(--color-violet-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:\!to-\[\#49BDEB\]:hover{--tw-gradient-to:#49bdeb!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.hover\:to-\[\#7e22ce\]:hover{--tw-gradient-to:#7e22ce;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-\[\#FF7F00\]:hover{--tw-gradient-to:#ff7f00;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-orange-600:hover{--tw-gradient-to:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-pink-400:hover{--tw-gradient-to:var(--color-pink-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-purple-600:hover{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-sky-600:hover{--tw-gradient-to:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-\[\#0a1628\]:hover{color:#0a1628}.hover\:text-\[\#1e293b\]:hover{color:#1e293b}.hover\:text-\[\#4f46e5\]:hover{color:#4f46e5}.hover\:text-\[\#5a6578\]:hover{color:#5a6578}.hover\:text-\[\#7c3aed\]:hover{color:#7c3aed}.hover\:text-\[\#3730a3\]:hover{color:#3730a3}.hover\:text-\[\#9333ea\]:hover{color:#9333ea}.hover\:text-\[\#9956DE\]:hover{color:#9956de}.hover\:text-\[\#64748b\]:hover{color:#64748b}.hover\:text-\[\#F08386\]:hover{color:#f08386}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-amber-500:hover{color:var(--color-amber-500)}.hover\:text-amber-600:hover{color:var(--color-amber-600)}.hover\:text-emerald-500:hover{color:var(--color-emerald-500)}.hover\:text-emerald-600:hover{color:var(--color-emerald-600)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-indigo-300:hover{color:var(--color-indigo-300)}.hover\:text-indigo-500:hover{color:var(--color-indigo-500)}.hover\:text-indigo-600:hover{color:var(--color-indigo-600)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-purple-600:hover{color:var(--color-purple-600)}.hover\:text-purple-700:hover{color:var(--color-purple-700)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-rose-300:hover{color:var(--color-rose-300)}.hover\:text-rose-500:hover{color:var(--color-rose-500)}.hover\:text-rose-600:hover{color:var(--color-rose-600)}.hover\:text-rose-700:hover{color:var(--color-rose-700)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-sky-300:hover{color:var(--color-violet-300)}.hover\:text-sky-500:hover{color:var(--color-violet-500)}.hover\:text-sky-600:hover{color:var(--color-violet-600)}.hover\:text-sky-700:hover{color:var(--color-violet-700)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/80:hover{color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/80:hover{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_2px_8px_rgba\(168\,85\,247\,0\.1\)\]:hover{--tw-shadow:0 2px 8px var(--tw-shadow-color,#a855f71a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_2px_8px_rgba\(168\,85\,247\,0\.08\)\]:hover{--tw-shadow:0 2px 8px var(--tw-shadow-color,#a855f714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_2px_10px_rgba\(0\,0\,0\,0\.04\)\]:hover{--tw-shadow:0 2px 10px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.08\)\]:hover{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.2\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.04\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.06\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(14\,165\,233\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0ea5e94d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(16\,185\,129\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#10b9814d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(59\,130\,246\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(168\,85\,247\,0\.1\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#a855f71a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(168\,85\,247\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#a855f74d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(168\,85\,247\,0\.4\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#a855f766);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(249\,115\,22\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#f973164d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_24px_rgba\(16\,185\,129\,0\.35\)\]:hover{--tw-shadow:0 12px 24px var(--tw-shadow-color,#10b98159);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_24px_rgba\(59\,130\,246\,0\.35\)\]:hover{--tw-shadow:0 12px 24px var(--tw-shadow-color,#3b82f659);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_24px_rgba\(168\,85\,247\,0\.35\)\]:hover{--tw-shadow:0 12px 24px var(--tw-shadow-color,#a855f759);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_45px_rgba\(31\,167\,225\,0\.4\)\]:hover{--tw-shadow:0 12px 45px var(--tw-shadow-color,#1fa7e166);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_45px_rgba\(138\,63\,211\,0\.4\)\]:hover{--tw-shadow:0 12px 45px var(--tw-shadow-color,#8a3fd366);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_16px_30px_rgba\(0\,0\,0\,0\.12\)\]:hover{--tw-shadow:0 16px 30px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_16px_40px_-15px_rgba\(0\,0\,0\,0\.12\)\]:hover{--tw-shadow:0 16px 40px -15px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_16px_40px_rgba\(114\,116\,237\,0\.28\)\]:hover{--tw-shadow:0 16px 40px var(--tw-shadow-color,#7274ed47);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-orange-500\/30:hover{--tw-shadow-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-orange-500\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-orange-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-pink-500\/35:hover{--tw-shadow-color:#f6339a59}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-pink-500\/35:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-pink-500) 35%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-purple-500\/30:hover{--tw-shadow-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-purple-500\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-sky-300\/50:hover{--tw-shadow-color:#c4b4ff80}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-sky-300\/50:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-violet-300) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-sky-500\/30:hover{--tw-shadow-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-sky-500\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-violet-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:border-\[\#4f46e5\]:focus{border-color:#4f46e5}.focus\:border-\[\#7C3AED\]:focus{border-color:#7c3aed}.focus\:border-\[\#75D06A\]:focus{border-color:#75d06a}.focus\:border-\[\#a855f7\]:focus{border-color:#a855f7}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:border-indigo-600:focus{border-color:var(--color-indigo-600)}.focus\:border-primary:focus{border-color:var(--primary)}.focus\:border-purple-400:focus{border-color:var(--color-purple-400)}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:border-rose-400:focus{border-color:var(--color-rose-400)}.focus\:border-sky-400:focus{border-color:var(--color-violet-400)}.focus\:border-sky-500:focus{border-color:var(--color-violet-500)}.focus\:border-sky-600:focus{border-color:var(--color-violet-600)}.focus\:border-white\/50:focus{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.focus\:border-white\/50:focus{border-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:bg-primary:focus{background-color:var(--primary)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-primary-foreground:focus{color:var(--primary-foreground)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[\#4f46e5\]:focus{--tw-ring-color:#4f46e5}.focus\:ring-\[\#4f46e5\]\/20:focus{--tw-ring-color:oklab(51.0573% .0278994 -.228355/.2)}.focus\:ring-\[\#9956DE\]\/10:focus{--tw-ring-color:oklab(59.4745% .111053 -.167638/.1)}.focus\:ring-\[\#a855f7\]:focus{--tw-ring-color:#a855f7}.focus\:ring-\[\#a855f7\]\/10:focus{--tw-ring-color:oklab(62.6846% .129701 -.193012/.1)}.focus\:ring-\[\#a855f7\]\/20:focus{--tw-ring-color:oklab(62.6846% .129701 -.193012/.2)}.focus\:ring-\[\#a855f7\]\/30:focus{--tw-ring-color:oklab(62.6846% .129701 -.193012/.3)}.focus\:ring-indigo-200:focus{--tw-ring-color:var(--color-indigo-200)}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:ring-indigo-500\/30:focus{--tw-ring-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.focus\:ring-primary\/20:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.focus\:ring-purple-50:focus{--tw-ring-color:var(--color-purple-50)}.focus\:ring-purple-500\/20:focus{--tw-ring-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-purple-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-sky-100:focus{--tw-ring-color:var(--color-violet-100)}.focus\:ring-sky-200:focus{--tw-ring-color:var(--color-violet-200)}.focus\:ring-sky-400:focus{--tw-ring-color:var(--color-violet-400)}.focus\:ring-sky-400\/20:focus{--tw-ring-color:#a685ff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-sky-400\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-violet-400) 20%, transparent)}}.focus\:ring-sky-500:focus{--tw-ring-color:var(--color-violet-500)}.focus\:ring-sky-500\/20:focus{--tw-ring-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-sky-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-violet-500) 20%, transparent)}}.focus\:ring-white\/20:focus{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.focus\:ring-white\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-\[\#9956DE\]:focus-visible{border-color:#9956de}.focus-visible\:border-indigo-500:focus-visible{border-color:var(--color-indigo-500)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[\#8A3FD3\]\/50:focus-visible{--tw-ring-color:oklab(54.1025% .117281 -.181162/.5)}.focus-visible\:ring-\[\#9956DE\]\/20:focus-visible{--tw-ring-color:oklab(59.4745% .111053 -.167638/.2)}.focus-visible\:ring-\[\#a855f7\]:focus-visible{--tw-ring-color:#a855f7}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-indigo-500\/20:focus-visible{--tw-ring-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-indigo-500\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.focus-visible\:ring-purple-500\/20:focus-visible{--tw-ring-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-purple-500\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-white\/20:focus-visible{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-white\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-0:active{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-\[2px\]:active{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.active\:scale-\[0\.99\]:active{scale:.99}.active\:border-b-0:active{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:bg-slate-200:active{background-color:var(--color-slate-200)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-70:disabled{opacity:.7}@media(hover:hover){.disabled\:hover\:translate-y-0:disabled:hover{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:hover\:scale-100:disabled:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\:hover\:bg-indigo-600:disabled:hover{background-color:var(--color-indigo-600)}.disabled\:hover\:text-\[\#a855f7\]:disabled:hover{color:#a855f7}.disabled\:hover\:shadow-sm:disabled:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:bg-accent[aria-selected=true]{background-color:var(--accent)}.aria-selected\:bg-primary[aria-selected=true]{background-color:var(--primary)}.aria-selected\:text-accent-foreground[aria-selected=true]{color:var(--accent-foreground)}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.aria-selected\:text-primary-foreground[aria-selected=true]{color:var(--primary-foreground)}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}@media(hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-4[data-orientation=horizontal]{height:calc(var(--spacing) * 4)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing) * 1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:min-w-0>*)[data-slot=select-value]{min-width:calc(var(--spacing) * 0)}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}:is(.\*\:data-\[slot\=select-value\]\:truncate>*)[data-slot=select-value]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.data-\[state\=active\]\:bg-card[data-state=active]{background-color:var(--card)}.data-\[state\=active\]\:bg-gradient-to-r[data-state=active]{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.data-\[state\=active\]\:from-blue-600[data-state=active]{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[state\=active\]\:to-sky-500[data-state=active]{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[state\=active\]\:text-white[data-state=active]{color:var(--color-white)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-emerald-500[data-state=checked]{background-color:var(--color-emerald-500)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:bg-red-600[data-state=checked]{background-color:var(--color-red-600)}.data-\[state\=checked\]\:bg-sky-600[data-state=checked]{background-color:var(--color-violet-600)}.data-\[state\=checked\]\:bg-white[data-state=checked]{background-color:var(--color-white)}.data-\[state\=checked\]\:text-\[\#9956DE\][data-state=checked]{color:#9956de}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-\[\#dde3eb\][data-state=unchecked]{background-color:#dde3eb}.data-\[state\=unchecked\]\:bg-slate-200[data-state=unchecked]{background-color:var(--color-slate-200)}.data-\[state\=unchecked\]\:bg-switch-background[data-state=unchecked]{background-color:var(--switch-background)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media(min-width:40rem){.sm\:-top-8{top:calc(var(--spacing) * -8)}.sm\:-right-8{right:calc(var(--spacing) * -8)}.sm\:right-8{right:calc(var(--spacing) * 8)}.sm\:right-\[-15px\]{right:-15px}.sm\:bottom-8{bottom:calc(var(--spacing) * 8)}.sm\:left-12{left:calc(var(--spacing) * 12)}.sm\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.sm\:mx-0{margin-inline:calc(var(--spacing) * 0)}.sm\:mx-2{margin-inline:calc(var(--spacing) * 2)}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:mt-1{margin-top:calc(var(--spacing) * 1)}.sm\:mt-2{margin-top:calc(var(--spacing) * 2)}.sm\:mt-3{margin-top:calc(var(--spacing) * 3)}.sm\:mt-6{margin-top:calc(var(--spacing) * 6)}.sm\:mt-\[24px\]{margin-top:24px}.sm\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.sm\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.sm\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.sm\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.sm\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.sm\:ml-auto{margin-left:auto}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-block{display:inline-block}.sm\:size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.sm\:h-2{height:calc(var(--spacing) * 2)}.sm\:h-4{height:calc(var(--spacing) * 4)}.sm\:h-5{height:calc(var(--spacing) * 5)}.sm\:h-6{height:calc(var(--spacing) * 6)}.sm\:h-7{height:calc(var(--spacing) * 7)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-10{height:calc(var(--spacing) * 10)}.sm\:h-11{height:calc(var(--spacing) * 11)}.sm\:h-12{height:calc(var(--spacing) * 12)}.sm\:h-14{height:calc(var(--spacing) * 14)}.sm\:h-16{height:calc(var(--spacing) * 16)}.sm\:h-20{height:calc(var(--spacing) * 20)}.sm\:h-28{height:calc(var(--spacing) * 28)}.sm\:h-32{height:calc(var(--spacing) * 32)}.sm\:h-\[90vh\]{height:90vh}.sm\:h-\[95px\]{height:95px}.sm\:h-\[115\%\]{height:115%}.sm\:h-\[125\%\]{height:125%}.sm\:h-\[140px\]{height:140px}.sm\:h-\[145px\]{height:145px}.sm\:h-\[245px\]{height:245px}.sm\:h-\[360px\]{height:360px}.sm\:h-\[450px\]{height:450px}.sm\:h-auto{height:auto}.sm\:max-h-\[85vh\]{max-height:85vh}.sm\:min-h-\[4rem\]{min-height:4rem}.sm\:min-h-\[130px\]{min-height:130px}.sm\:w-4{width:calc(var(--spacing) * 4)}.sm\:w-5{width:calc(var(--spacing) * 5)}.sm\:w-6{width:calc(var(--spacing) * 6)}.sm\:w-7{width:calc(var(--spacing) * 7)}.sm\:w-8{width:calc(var(--spacing) * 8)}.sm\:w-10{width:calc(var(--spacing) * 10)}.sm\:w-11{width:calc(var(--spacing) * 11)}.sm\:w-12{width:calc(var(--spacing) * 12)}.sm\:w-14{width:calc(var(--spacing) * 14)}.sm\:w-16{width:calc(var(--spacing) * 16)}.sm\:w-20{width:calc(var(--spacing) * 20)}.sm\:w-24{width:calc(var(--spacing) * 24)}.sm\:w-28{width:calc(var(--spacing) * 28)}.sm\:w-32{width:calc(var(--spacing) * 32)}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-\[32\%\]{width:32%}.sm\:w-\[40\%\]{width:40%}.sm\:w-\[100px\]{width:100px}.sm\:w-\[300px\]{width:300px}.sm\:w-\[450px\]{width:450px}.sm\:w-auto{width:auto}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-\[180px\]{max-width:180px}.sm\:max-w-\[220px\]{max-width:220px}.sm\:max-w-\[300px\]{max-width:300px}.sm\:max-w-\[400px\]{max-width:400px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[850px\]{max-width:850px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-\[120px\]{min-width:120px}.sm\:min-w-\[140px\]{min-width:140px}.sm\:flex-none{flex:none}.sm\:-translate-x-\[60px\]{--tw-translate-x: -60px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:translate-x-\[60px\]{--tw-translate-x:60px;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:scale-\[0\.85\]{scale:.85}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing) * 0)}.sm\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-5{gap:calc(var(--spacing) * 5)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-\[10px\]{gap:10px}.sm\:gap-\[16px\]{gap:16px}.sm\:gap-\[18px\]{gap:18px}.sm\:gap-\[24px\]{gap:24px}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-\[24px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(24px * var(--tw-space-y-reverse));margin-block-end:calc(24px * calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:self-auto{align-self:auto}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:rounded-\[1\.5rem\]{border-radius:1.5rem}.sm\:rounded-\[2rem\]{border-radius:2rem}.sm\:rounded-\[16px\]{border-radius:16px}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.sm\:rounded-t-\[40px\]{border-top-left-radius:40px;border-top-right-radius:40px}.sm\:rounded-b-\[40px\]{border-bottom-right-radius:40px;border-bottom-left-radius:40px}.sm\:p-2{padding:calc(var(--spacing) * 2)}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-\[15px\]{padding:15px}.sm\:p-\[18px_20px\]{padding:18px 20px}.sm\:p-\[20px\]{padding:20px}.sm\:p-\[24px\]{padding:24px}.sm\:p-\[32px\]{padding:32px}.sm\:px-0{padding-inline:calc(var(--spacing) * 0)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-7{padding-inline:calc(var(--spacing) * 7)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:px-\[7px\]{padding-inline:7px}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-6{padding-block:calc(var(--spacing) * 6)}.sm\:py-8{padding-block:calc(var(--spacing) * 8)}.sm\:pt-2{padding-top:calc(var(--spacing) * 2)}.sm\:pt-3{padding-top:calc(var(--spacing) * 3)}.sm\:pt-6{padding-top:calc(var(--spacing) * 6)}.sm\:pt-10{padding-top:calc(var(--spacing) * 10)}.sm\:pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.sm\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.sm\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.sm\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\:pb-28{padding-bottom:calc(var(--spacing) * 28)}.sm\:pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.sm\:pl-4{padding-left:calc(var(--spacing) * 4)}.sm\:pl-6{padding-left:calc(var(--spacing) * 6)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[9px\]{font-size:9px}.sm\:text-\[10px\]{font-size:10px}.sm\:text-\[11px\]{font-size:11px}.sm\:text-\[12px\]{font-size:12px}.sm\:text-\[13px\]{font-size:13px}.sm\:text-\[16px\]{font-size:16px}.sm\:text-\[26px\]{font-size:26px}.sm\:text-\[28px\]{font-size:28px}.sm\:text-\[32px\]{font-size:32px}.sm\:text-\[40px\]{font-size:40px}.sm\:tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:absolute{position:absolute}.md\:-top-7{top:calc(var(--spacing) * -7)}.md\:-top-8{top:calc(var(--spacing) * -8)}.md\:right-4{right:calc(var(--spacing) * 4)}.md\:right-10{right:calc(var(--spacing) * 10)}.md\:-bottom-7{bottom:calc(var(--spacing) * -7)}.md\:-bottom-8{bottom:calc(var(--spacing) * -8)}.md\:left-4{left:calc(var(--spacing) * 4)}.md\:left-16{left:calc(var(--spacing) * 16)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-9{grid-column:span 9/span 9}.md\:mx-0{margin-inline:calc(var(--spacing) * 0)}.md\:mt-1{margin-top:calc(var(--spacing) * 1)}.md\:mt-2{margin-top:calc(var(--spacing) * 2)}.md\:mt-6{margin-top:calc(var(--spacing) * 6)}.md\:mt-8{margin-top:calc(var(--spacing) * 8)}.md\:mt-12{margin-top:calc(var(--spacing) * 12)}.md\:mt-\[-40px\]{margin-top:-40px}.md\:mr-2{margin-right:calc(var(--spacing) * 2)}.md\:mr-4{margin-right:calc(var(--spacing) * 4)}.md\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.md\:mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.md\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.md\:mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.md\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.md\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.md\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.md\:ml-2{margin-left:calc(var(--spacing) * 2)}.md\:ml-16{margin-left:calc(var(--spacing) * 16)}.md\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:h-2{height:calc(var(--spacing) * 2)}.md\:h-3{height:calc(var(--spacing) * 3)}.md\:h-4{height:calc(var(--spacing) * 4)}.md\:h-5{height:calc(var(--spacing) * 5)}.md\:h-7{height:calc(var(--spacing) * 7)}.md\:h-9{height:calc(var(--spacing) * 9)}.md\:h-10{height:calc(var(--spacing) * 10)}.md\:h-11{height:calc(var(--spacing) * 11)}.md\:h-12{height:calc(var(--spacing) * 12)}.md\:h-14{height:calc(var(--spacing) * 14)}.md\:h-16{height:calc(var(--spacing) * 16)}.md\:h-20{height:calc(var(--spacing) * 20)}.md\:h-32{height:calc(var(--spacing) * 32)}.md\:h-40{height:calc(var(--spacing) * 40)}.md\:h-48{height:calc(var(--spacing) * 48)}.md\:h-\[10px\]{height:10px}.md\:h-\[72px\]{height:72px}.md\:h-\[85vh\]{height:85vh}.md\:h-\[86px\]{height:86px}.md\:h-\[100px\]{height:100px}.md\:h-\[130px\]{height:130px}.md\:h-\[180px\]{height:180px}.md\:h-\[310px\]{height:310px}.md\:h-\[400vw\]{height:400vw}.md\:h-\[calc\(100\%-24px\)\]{height:calc(100% - 24px)}.md\:h-auto{height:auto}.md\:min-h-\[5rem\]{min-height:5rem}.md\:min-h-\[290px\]{min-height:290px}.md\:w-2{width:calc(var(--spacing) * 2)}.md\:w-3{width:calc(var(--spacing) * 3)}.md\:w-4{width:calc(var(--spacing) * 4)}.md\:w-5{width:calc(var(--spacing) * 5)}.md\:w-7{width:calc(var(--spacing) * 7)}.md\:w-9{width:calc(var(--spacing) * 9)}.md\:w-10{width:calc(var(--spacing) * 10)}.md\:w-11{width:calc(var(--spacing) * 11)}.md\:w-12{width:calc(var(--spacing) * 12)}.md\:w-14{width:calc(var(--spacing) * 14)}.md\:w-20{width:calc(var(--spacing) * 20)}.md\:w-32{width:calc(var(--spacing) * 32)}.md\:w-40{width:calc(var(--spacing) * 40)}.md\:w-48{width:calc(var(--spacing) * 48)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-80{width:calc(var(--spacing) * 80)}.md\:w-\[10px\]{width:10px}.md\:w-\[72px\]{width:72px}.md\:w-\[86px\]{width:86px}.md\:w-\[150px\]{width:150px}.md\:w-\[200vw\]{width:200vw}.md\:w-\[300px\]{width:300px}.md\:w-\[320px\]{width:320px}.md\:w-\[400vw\]{width:400vw}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\[180px\]{max-width:180px}.md\:max-w-\[280px\]{max-width:280px}.md\:max-w-\[300px\]{max-width:300px}.md\:max-w-\[320px\]{max-width:320px}.md\:max-w-none{max-width:none}.md\:min-w-0{min-width:calc(var(--spacing) * 0)}.md\:min-w-\[320px\]{min-width:320px}.md\:shrink{flex-shrink:1}.md\:translate-y-\[21\%\]{--tw-translate-y:21%;translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:scale-\[1\.25\]{scale:1.25}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:flex-row{flex-direction:row}.md\:flex-nowrap{flex-wrap:nowrap}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}.md\:gap-1{gap:calc(var(--spacing) * 1)}.md\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:gap-4{gap:calc(var(--spacing) * 4)}.md\:gap-5{gap:calc(var(--spacing) * 5)}.md\:gap-6{gap:calc(var(--spacing) * 6)}:where(.md\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.md\:self-auto{align-self:auto}.md\:overflow-visible{overflow:visible}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:rounded-3xl{border-radius:var(--radius-3xl)}.md\:rounded-\[1\.4rem\]{border-radius:1.4rem}.md\:rounded-\[2rem\]{border-radius:2rem}.md\:rounded-\[14px\]{border-radius:14px}.md\:rounded-lg{border-radius:var(--radius)}.md\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.md\:rounded-t-xl{border-top-left-radius:calc(var(--radius) + 4px);border-top-right-radius:calc(var(--radius) + 4px)}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:bg-transparent{background-color:#0000}.md\:p-3{padding:calc(var(--spacing) * 3)}.md\:p-4{padding:calc(var(--spacing) * 4)}.md\:p-5{padding:calc(var(--spacing) * 5)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:px-0{padding-inline:calc(var(--spacing) * 0)}.md\:px-1{padding-inline:calc(var(--spacing) * 1)}.md\:px-2{padding-inline:calc(var(--spacing) * 2)}.md\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.md\:px-3{padding-inline:calc(var(--spacing) * 3)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:py-1{padding-block:calc(var(--spacing) * 1)}.md\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.md\:py-2{padding-block:calc(var(--spacing) * 2)}.md\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.md\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:py-6{padding-block:calc(var(--spacing) * 6)}.md\:pt-0{padding-top:calc(var(--spacing) * 0)}.md\:pt-4{padding-top:calc(var(--spacing) * 4)}.md\:pt-6{padding-top:calc(var(--spacing) * 6)}.md\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\:pr-4{padding-right:calc(var(--spacing) * 4)}.md\:pr-10{padding-right:calc(var(--spacing) * 10)}.md\:pr-40{padding-right:calc(var(--spacing) * 40)}.md\:pr-\[240px\]{padding-right:240px}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.md\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.md\:pl-6{padding-left:calc(var(--spacing) * 6)}.md\:pl-16{padding-left:calc(var(--spacing) * 16)}.md\:pl-20{padding-left:calc(var(--spacing) * 20)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md\:text-\[8px\]{font-size:8px}.md\:text-\[10px\]{font-size:10px}.md\:text-\[11px\]{font-size:11px}.md\:text-\[12px\]{font-size:12px}.md\:text-\[13px\]{font-size:13px}.md\:text-\[15px\]{font-size:15px}.md\:text-\[16px\]{font-size:16px}.md\:text-\[17px\]{font-size:17px}.md\:text-\[18px\]{font-size:18px}.md\:text-\[22px\]{font-size:22px}.md\:text-\[24px\]{font-size:24px}.md\:text-\[26px\]{font-size:26px}.md\:text-\[32px\]{font-size:32px}.md\:text-\[44px\]{font-size:44px}.md\:text-\[70px\]{font-size:70px}.md\:text-\[80px\]{font-size:80px}.md\:text-\[110px\]{font-size:110px}.md\:text-\[140px\]{font-size:140px}.md\:leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.md\:leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.md\:leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.md\:whitespace-normal{white-space:normal}.md\:opacity-0{opacity:0}.md\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:static{position:static}.lg\:top-\[5px\]{top:5px}.lg\:right-10{right:calc(var(--spacing) * 10)}.lg\:right-\[-15px\]{right:-15px}.lg\:right-\[250px\]{right:250px}.lg\:bottom-20{bottom:calc(var(--spacing) * 20)}.lg\:z-auto{z-index:auto}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:-mx-4{margin-inline:calc(var(--spacing) * -4)}.lg\:mx-0{margin-inline:calc(var(--spacing) * 0)}.lg\:-mt-4{margin-top:calc(var(--spacing) * -4)}.lg\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.lg\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.lg\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:table-cell{display:table-cell}.lg\:h-8{height:calc(var(--spacing) * 8)}.lg\:h-9{height:calc(var(--spacing) * 9)}.lg\:h-12{height:calc(var(--spacing) * 12)}.lg\:h-16{height:calc(var(--spacing) * 16)}.lg\:h-\[265px\]{height:265px}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:min-h-\[160px\]{min-height:160px}.lg\:w-8{width:calc(var(--spacing) * 8)}.lg\:w-9{width:calc(var(--spacing) * 9)}.lg\:w-12{width:calc(var(--spacing) * 12)}.lg\:w-16{width:calc(var(--spacing) * 16)}.lg\:w-\[35\%\]{width:35%}.lg\:w-\[65\%\]{width:65%}.lg\:w-\[260px\]{width:260px}.lg\:w-\[270px\]{width:270px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:w-max{width:max-content}.lg\:translate-y-\[19\%\]{--tw-translate-y:19%;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:scale-\[1\.3\]{scale:1.3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-\[1fr_300px\]{grid-template-columns:1fr 300px}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-start{align-items:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:justify-start{justify-content:flex-start}.lg\:gap-3{gap:calc(var(--spacing) * 3)}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:gap-6{gap:calc(var(--spacing) * 6)}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-12{gap:calc(var(--spacing) * 12)}.lg\:gap-14{gap:calc(var(--spacing) * 14)}:where(.lg\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.lg\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.lg\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.lg\:p-4{padding:calc(var(--spacing) * 4)}.lg\:p-5{padding:calc(var(--spacing) * 5)}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:p-\[32px\]{padding:32px}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:px-10{padding-inline:calc(var(--spacing) * 10)}.lg\:py-8{padding-block:calc(var(--spacing) * 8)}.lg\:pt-6{padding-top:calc(var(--spacing) * 6)}.lg\:pr-\[280px\]{padding-right:280px}.lg\:text-left{text-align:left}.lg\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.lg\:text-\[11px\]{font-size:11px}.lg\:text-\[18px\]{font-size:18px}.lg\:text-\[46px\]{font-size:46px}}@media(min-width:80rem){.xl\:right-\[32px\]{right:32px}.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-5{grid-column:span 5/span 5}.xl\:col-span-7{grid-column:span 7/span 7}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:col-span-9{grid-column:span 9/span 9}.xl\:-mx-10{margin-inline:calc(var(--spacing) * -10)}.xl\:-mx-\[32px\]{margin-inline:-32px}.xl\:mx-0{margin-inline:calc(var(--spacing) * 0)}.xl\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.xl\:flex{display:flex}.xl\:h-\[80vh\]{height:80vh}.xl\:h-\[600px\]{height:600px}.xl\:h-full{height:100%}.xl\:max-h-\[700px\]{max-height:700px}.xl\:min-h-\[120px\]{min-height:120px}.xl\:w-1\/3{width:33.3333%}.xl\:w-2\/3{width:66.6667%}.xl\:w-\[30\%\]{width:30%}.xl\:w-\[50\%\]{width:50%}.xl\:w-\[70\%\]{width:70%}.xl\:w-\[200px\]{width:200px}.xl\:w-\[350px\]{width:350px}.xl\:w-\[calc\(100\%\+64px\)\]{width:calc(100% + 64px)}.xl\:w-auto{width:auto}.xl\:max-w-\[1080px\]{max-width:1080px}.xl\:max-w-\[1400px\]{max-width:1400px}.xl\:max-w-none{max-width:none}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}.xl\:flex-row{flex-direction:row}.xl\:items-center{align-items:center}.xl\:justify-start{justify-content:flex-start}.xl\:gap-12{gap:calc(var(--spacing) * 12)}.xl\:self-center{align-self:center}.xl\:overflow-hidden{overflow:hidden}.xl\:p-\[32px\]{padding:32px}.xl\:px-8{padding-inline:calc(var(--spacing) * 8)}.xl\:px-10{padding-inline:calc(var(--spacing) * 10)}.xl\:px-\[32px\]{padding-inline:32px}.xl\:py-\[32px\]{padding-block:32px}.xl\:pt-4{padding-top:calc(var(--spacing) * 4)}.xl\:pt-8{padding-top:calc(var(--spacing) * 8)}.xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.xl\:text-\[3\.4rem\]{font-size:3.4rem}}@media(min-width:96rem){.\32xl\:block{display:block}.\32xl\:w-\[340px\]{width:340px}}.dark\:border-\[\#1FA7E1\]\/20:is(.dark *){border-color:#1fa7e133}.dark\:border-\[\#2b3140\]:is(.dark *){border-color:#2b3140}.dark\:border-\[\#2f3547\]:is(.dark *){border-color:#2f3547}.dark\:border-\[\#8A3FD3\]\/20:is(.dark *){border-color:#8a3fd333}.dark\:border-\[\#8A3FD3\]\/30:is(.dark *){border-color:#8a3fd34d}.dark\:border-amber-400\/40:is(.dark *){border-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-400\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-amber-400) 40%,transparent)}}.dark\:border-emerald-400\/40:is(.dark *){border-color:#00d29466}@supports (color:color-mix(in lab,red,red)){.dark\:border-emerald-400\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-emerald-400) 40%,transparent)}}.dark\:border-emerald-500\/40:is(.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab,red,red)){.dark\:border-emerald-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-emerald-500) 40%,transparent)}}.dark\:border-gray-600:is(.dark *){border-color:var(--color-gray-600)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-purple-700\/50:is(.dark *){border-color:#8200da80}@supports (color:color-mix(in lab,red,red)){.dark\:border-purple-700\/50:is(.dark *){border-color:color-mix(in oklab,var(--color-purple-700) 50%,transparent)}}.dark\:border-rose-400\/40:is(.dark *){border-color:#ff667f66}@supports (color:color-mix(in lab,red,red)){.dark\:border-rose-400\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-rose-400) 40%,transparent)}}.dark\:border-rose-500\/20:is(.dark *){border-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.dark\:border-rose-500\/20:is(.dark *){border-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.dark\:border-rose-900:is(.dark *){border-color:var(--color-rose-900)}.dark\:border-sky-700\/50:is(.dark *){border-color:#7008e780}@supports (color:color-mix(in lab,red,red)){.dark\:border-sky-700\/50:is(.dark *){border-color:color-mix(in oklab,var(--color-violet-700) 50%,transparent)}}.dark\:border-slate-700:is(.dark *){border-color:var(--color-slate-700)}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:border-white\/10:is(.dark *){border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.dark\:bg-\[\#1a1f2e\]\/90:is(.dark *){background-color:#1a1f2ee6}.dark\:bg-\[\#2a3143\]:is(.dark *){background-color:#2a3143}.dark\:bg-\[\#2b2b5f\]:is(.dark *){background-color:#2b2b5f}.dark\:bg-\[\#8A3FD3\]\/10:is(.dark *){background-color:#8a3fd31a}.dark\:bg-\[\#181d27\]:is(.dark *){background-color:#181d27}.dark\:bg-\[\#11151d\]:is(.dark *){background-color:#11151d}.dark\:bg-\[\#15803d\]:is(.dark *){background-color:#15803d}.dark\:bg-\[\#b45309\]:is(.dark *){background-color:#b45309}.dark\:bg-\[\#be123c\]:is(.dark *){background-color:#be123c}.dark\:bg-amber-100\/20:is(.dark *){background-color:#fef3c633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-100\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-100) 20%,transparent)}}.dark\:bg-amber-400\/10:is(.dark *){background-color:#fcbb001a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-400\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-400) 10%,transparent)}}.dark\:bg-amber-900\/20:is(.dark *){background-color:#7b330633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-900) 20%,transparent)}}.dark\:bg-black\/30:is(.dark *){background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.dark\:bg-black\/40:is(.dark *){background-color:#0006}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.dark\:bg-black\/50:is(.dark *){background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark\:bg-black\/80:is(.dark *){background-color:#000c}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/80:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-emerald-500\/10:is(.dark *){background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.dark\:bg-emerald-500\/30:is(.dark *){background-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.dark\:bg-emerald-900\/20:is(.dark *){background-color:#004e3b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-900) 20%,transparent)}}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-purple-900\/50:is(.dark *){background-color:#59168b80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900) 50%,transparent)}}.dark\:bg-rose-500\/10:is(.dark *){background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-rose-500\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.dark\:bg-rose-900\/20:is(.dark *){background-color:#8b083633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-rose-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-rose-900) 20%,transparent)}}.dark\:bg-sky-900\/50:is(.dark *){background-color:#4d179a80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-sky-900\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-violet-900) 50%,transparent)}}.dark\:from-\[\#2b2b5f\]:is(.dark *){--tw-gradient-from:#2b2b5f;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-purple-300:is(.dark *){--tw-gradient-from:var(--color-purple-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-purple-500\/20:is(.dark *){--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.dark\:from-purple-500\/20:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:from-purple-500\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-sky-300:is(.dark *){--tw-gradient-from:var(--color-violet-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-sky-500\/20:is(.dark *){--tw-gradient-from:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.dark\:from-sky-500\/20:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-violet-500) 20%, transparent)}}.dark\:from-sky-500\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:via-cyan-500\/10:is(.dark *){--tw-gradient-via:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.dark\:via-cyan-500\/10:is(.dark *){--tw-gradient-via:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.dark\:via-cyan-500\/10:is(.dark *){--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:via-fuchsia-500\/10:is(.dark *){--tw-gradient-via:#e12afb1a}@supports (color:color-mix(in lab,red,red)){.dark\:via-fuchsia-500\/10:is(.dark *){--tw-gradient-via:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.dark\:via-fuchsia-500\/10:is(.dark *){--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:to-cyan-200:is(.dark *){--tw-gradient-to:var(--color-cyan-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-fuchsia-200:is(.dark *){--tw-gradient-to:var(--color-fuchsia-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-purple-900\/10:is(.dark *){--tw-gradient-to:#59168b1a}@supports (color:color-mix(in lab,red,red)){.dark\:to-purple-900\/10:is(.dark *){--tw-gradient-to:color-mix(in oklab, var(--color-purple-900) 10%, transparent)}}.dark\:to-purple-900\/10:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-sky-900\/10:is(.dark *){--tw-gradient-to:#4d179a1a}@supports (color:color-mix(in lab,red,red)){.dark\:to-sky-900\/10:is(.dark *){--tw-gradient-to:color-mix(in oklab, var(--color-violet-900) 10%, transparent)}}.dark\:to-sky-900\/10:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:text-\[\#4bc1f2\]:is(.dark *){color:#4bc1f2}.dark\:text-\[\#7ad8ff\]:is(.dark *){color:#7ad8ff}.dark\:text-\[\#7f88a3\]:is(.dark *){color:#7f88a3}.dark\:text-\[\#8b95ad\]:is(.dark *){color:#8b95ad}.dark\:text-\[\#9aa4be\]:is(.dark *){color:#9aa4be}.dark\:text-\[\#9e8fff\]:is(.dark *){color:#9e8fff}.dark\:text-\[\#95a0bb\]:is(.dark *){color:#95a0bb}.dark\:text-\[\#a8b2c9\]:is(.dark *){color:#a8b2c9}.dark\:text-\[\#a35ceb\]:is(.dark *){color:#a35ceb}.dark\:text-\[\#aab3c7\]:is(.dark *){color:#aab3c7}.dark\:text-\[\#b2bad0\]:is(.dark *){color:#b2bad0}.dark\:text-\[\#c48bfc\]:is(.dark *){color:#c48bfc}.dark\:text-\[\#d3a8ff\]:is(.dark *){color:#d3a8ff}.dark\:text-\[\#e4e7f1\]:is(.dark *){color:#e4e7f1}.dark\:text-\[\#ecf0fb\]:is(.dark *){color:#ecf0fb}.dark\:text-\[\#f5f7fb\]:is(.dark *){color:#f5f7fb}.dark\:text-amber-100:is(.dark *){color:var(--color-amber-100)}.dark\:text-amber-100\/90:is(.dark *){color:#fef3c6e6}@supports (color:color-mix(in lab,red,red)){.dark\:text-amber-100\/90:is(.dark *){color:color-mix(in oklab,var(--color-amber-100) 90%,transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-purple-400\/80:is(.dark *){color:#c07effcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-purple-400\/80:is(.dark *){color:color-mix(in oklab,var(--color-purple-400) 80%,transparent)}}.dark\:text-rose-300:is(.dark *){color:var(--color-rose-300)}.dark\:text-rose-400:is(.dark *){color:var(--color-rose-400)}.dark\:text-sky-300:is(.dark *){color:var(--color-violet-300)}.dark\:text-sky-400:is(.dark *){color:var(--color-violet-400)}.dark\:text-sky-400\/80:is(.dark *){color:#a685ffcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-sky-400\/80:is(.dark *){color:color-mix(in oklab,var(--color-violet-400) 80%,transparent)}}.dark\:text-slate-200:is(.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:is(.dark *){color:var(--color-slate-400)}.dark\:text-white:is(.dark *){color:var(--color-white)}.dark\:opacity-10:is(.dark *){opacity:.1}.dark\:opacity-\[0\.25\]:is(.dark *){opacity:.25}.dark\:mix-blend-screen:is(.dark *){mix-blend-mode:screen}.dark\:shadow-\[0_12px_24px_rgba\(0\,0\,0\,0\.22\)\]:is(.dark *){--tw-shadow:0 12px 24px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:ring-offset-\[\#0B0F19\]:is(.dark *){--tw-ring-offset-color:#0b0f19}@media(hover:hover){.dark\:hover\:bg-\[\#1FA7E1\]\/10:is(.dark *):hover{background-color:#1fa7e11a}.dark\:hover\:bg-\[\#8A3FD3\]\/10:is(.dark *):hover{background-color:#8a3fd31a}.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.dark\:hover\:bg-black\/50:is(.dark *):hover{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-black\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark\:hover\:bg-black\/60:is(.dark *):hover{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-black\/60:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.dark\:hover\:bg-emerald-500\/20:is(.dark *):hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-emerald-500\/20:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-rose-900\/30:is(.dark *):hover{background-color:#8b08364d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-rose-900\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-rose-900) 30%,transparent)}}.dark\:hover\:bg-slate-800:is(.dark *):hover{background-color:var(--color-slate-800)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-card-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--card-foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:var(--border)}@supports (color:color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:color-mix(in oklab,var(--border) 50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]){border-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]){background-color:var(--accent)}.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:first-child:has([aria-selected]){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:last-child:has([aria-selected]),.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\]\:pb-6:last-child{padding-bottom:calc(var(--spacing) * 6)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button,.\[\&\>button\:last-child\]\:hidden>button:last-child{display:none}.\[\&\>option\]\:text-\[\#1e293b\]>option{color:#1e293b}.\[\&\>span\]\:flex>span{display:flex}.\[\&\>span\]\:items-center>span{align-items:center}.\[\&\>span\]\:gap-2>span{gap:calc(var(--spacing) * 2)}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--font-size:16px;--font-display:"Nunito", ui-sans-serif, system-ui, sans-serif;--font-body:"Nunito", ui-sans-serif, system-ui, sans-serif;--background:#f7f9fc;--foreground:#0a1628;--card:#fff;--card-foreground:#0a1628;--popover:#fff;--popover-foreground:#0a1628;--amethyst:#9956de;--slate-blue:#7274ed;--summer-sky:#1fa7e1;--downy:#6ed1cf;--pastel-green:#75d06a;--texas-rose:#ffb356;--mona-lisa:#ff8b8b;--illusion:#fb96bb;--primary:#9956de;--primary-foreground:#fff;--secondary:#7274ed;--secondary-foreground:#fff;--muted:#f4f4f5;--muted-foreground:#71717a;--accent:#1fa7e1;--accent-foreground:#fff;--destructive:#ff8b8b;--destructive-foreground:#fff;--border:#e4e4e7;--input:transparent;--input-background:#f4f4f5;--switch-background:#d4d4d8;--font-weight-medium:500;--font-weight-normal:400;--ring:#9956de;--chart-1:#9956de;--chart-2:#ff8b8b;--chart-3:#75d06a;--chart-4:#ffb356;--chart-5:#1fa7e1;--radius:1.25rem;--sidebar:#fff;--sidebar-foreground:#09090b;--sidebar-primary:#7c3aed;--sidebar-primary-foreground:#fff;--sidebar-accent:#f3f0ff;--sidebar-accent-foreground:#5b21b6;--sidebar-border:#e4e4e7;--sidebar-ring:#7c3aed}.dark{--background:#050d18;--foreground:#f0f7ff;--card:#0a1628;--card-foreground:#f0f7ff;--popover:#0a1628;--popover-foreground:#f0f7ff;--primary:#a78bfa;--primary-foreground:#fff;--secondary:#2e1065;--secondary-foreground:#c4b5fd;--muted:#27272a;--muted-foreground:#a1a1aa;--accent:#27272a;--accent-foreground:#f43f5e;--destructive:#ef4444;--destructive-foreground:#09090b;--border:#27272a;--input:#27272a;--input-background:#27272a;--switch-background:#3f3f46;--ring:#a78bfa;--font-weight-medium:500;--font-weight-normal:400;--chart-1:#a78bfa;--chart-2:#fb7185;--chart-3:#34d399;--chart-4:#fb923c;--chart-5:#38bdf8;--sidebar:#09090b;--sidebar-foreground:#fafafa;--sidebar-primary:#a78bfa;--sidebar-primary-foreground:#fff;--sidebar-accent:#27272a;--sidebar-accent-foreground:#fafafa;--sidebar-border:#27272a;--sidebar-ring:#a78bfa}html{font-size:var(--font-size)}html,body,#root{height:100%}html[data-density=compact]{--radius:.9rem}html.reduced-motion *,html.reduced-motion :before,html.reduced-motion :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html.smart-dark{filter:invert()hue-rotate(180deg);background:#101217}html.smart-dark img,html.smart-dark picture,html.smart-dark video,html.smart-dark canvas,html.smart-dark svg,html.smart-dark iframe,html.smart-dark [data-preserve-color=true]{filter:invert()hue-rotate(180deg)}.font-display{font-family:var(--font-display)}.font-body{font-family:var(--font-body)}.glow-blue{box-shadow:0 0 24px #0284c71f,0 0 64px #0284c70a}.glow-violet{box-shadow:0 0 24px #7c3aed1f,0 0 64px #7c3aed0a}.glow-rose{box-shadow:0 0 24px #f43f5e1f,0 0 64px #f43f5e0a}.glow-emerald{box-shadow:0 0 24px #0596691f,0 0 64px #0596690a}.bg-dot-pattern{background-image:radial-gradient(circle,#7c3aed14 1px,#0000 1px);background-size:24px 24px}.dark .bg-dot-pattern{background-image:radial-gradient(circle,#a78bfa1f 1px,#0000 1px)}.bg-math-pattern{background-color:var(--background);background-image:url("data:image/svg+xml,%3Csvg width='150' height='150' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='rgba(124, 58, 237, 0.05)' font-family='sans-serif' font-weight='bold' font-size='28'%3E%3Ctext x='20' y='40'%3E%2B%3C/text%3E%3Ctext x='90' y='60'%3E%3D%3C/text%3E%3Ctext x='40' y='110'%3E%25%3C/text%3E%3Ctext x='110' y='130'%3E%C3%97%3C/text%3E%3Ctext x='130' y='30'%3E%C3%B7%3C/text%3E%3C/g%3E%3C/svg%3E");background-size:150px 150px}.lesson-welcome-card{font-family:var(--font-body);position:relative;overflow:hidden}.lesson-welcome-card:before{content:"";pointer-events:none;z-index:0;border-radius:inherit;background-image:url("data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='rgba(26,133,164,0.06)' font-family='sans-serif' font-weight='900' font-size='36'%3E%3Ctext x='10' y='50'%3E%2B%3C/text%3E%3Ctext x='120' y='80'%3E%3D%3C/text%3E%3Ctext x='50' y='140'%3E%CF%80%3C/text%3E%3Ctext x='150' y='170'%3E%C3%97%3C/text%3E%3Ctext x='170' y='40'%3E%E2%88%91%3C/text%3E%3Ctext x='80' y='190'%3E%C3%B7%3C/text%3E%3C/g%3E%3C/svg%3E");background-size:200px 200px;position:absolute;inset:0}.lesson-welcome-card>*{z-index:1;position:relative}.lesson-section-heading{font-family:var(--font-display);letter-spacing:-.02em;font-weight:800;line-height:1.2}.lesson-body-text{font-family:var(--font-body);color:#334155;font-size:1rem;line-height:1.75}.lesson-callout-headsup{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:2px solid #f59e0b;border-left-width:5px;border-radius:1rem;padding:1rem 1.25rem;position:relative;overflow:hidden}.lesson-callout-headsup:after{content:"⚠";opacity:.06;pointer-events:none;font-size:3rem;position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.lesson-formula-box{text-align:center;color:#92400e;letter-spacing:.03em;background:linear-gradient(135deg,#fffbeb,#fef9ee);border:1.5px solid #fbbf24;border-radius:.875rem;padding:.875rem 1.25rem;font-family:Courier New,Courier,monospace;font-size:1.05rem;font-weight:700;box-shadow:0 2px 8px #fbbf2426}.lesson-key-term{color:#92400e;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:.3em;padding:.1em .4em;font-size:.95em;font-weight:700}.lesson-header-teal{color:#1a85a4;font-family:var(--font-display);font-weight:800}.lesson-header-orange{color:#fbab41;font-family:var(--font-display);font-weight:800}.bg-noise{position:relative}.bg-noise:before{content:"";opacity:.03;pointer-events:none;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:absolute;inset:0}.card-elevated{box-shadow:0 16px 40px -8px #7c3aed26,0 0 24px -5px #7c3aed14}.card-elevated-lg{box-shadow:0 24px 60px -12px #7c3aed33,0 0 32px -10px #7c3aed1a}.shadow-3d-button{box-shadow:0 12px 24px -6px var(--tw-shadow-color,#f9731666),0 6px 12px -4px var(--tw-shadow-color,#f973164d)}.dark .card-elevated{box-shadow:0 1px 2px #0003,0 4px 16px #00000026}.dark .card-elevated-lg{box-shadow:0 2px 4px #0003,0 8px 32px #0003}*{scrollbar-width:thin;scrollbar-color:transparent transparent}:hover{scrollbar-color:#0284c733 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:#0000;border-radius:10px;transition:background-color .3s}:hover::-webkit-scrollbar-thumb{background-color:#0284c733}::-webkit-scrollbar-thumb:hover{background-color:#0284c766}.scrollbar-hide{scrollbar-width:none;-ms-overflow-style:none}.scrollbar-hide::-webkit-scrollbar{display:none}.accent-line{position:relative}.accent-line:after{content:"";background:linear-gradient(90deg,#0284c7,#f43f5e);border-radius:2px;width:48px;height:3px;position:absolute;bottom:0;left:0}.surface-raised{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e2e8f0cc}.surface-inset{background:linear-gradient(135deg,#f1f5f9,#e8eef6);border:1px solid #cbd5e180}.bg-white-20{background-color:#fff3}.bg-white-15{background-color:#ffffff26}.bg-black-15{background-color:#00000026}.e-w{width:var(--w)}.e-bg{background-color:var(--bg)}.e-color{color:var(--c);fill:var(--c);stroke:var(--c)}.e-grid-cols{grid-template-columns:var(--grid-cols)}.e-perspective{perspective:var(--perspective)}.e-transform{transform:var(--tr)}.e-left-top{left:var(--left);top:var(--top)}.e-z{z-index:var(--z)}.e-filter{filter:var(--filter)}.e-opacity{opacity:var(--o)}.no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.no-scrollbar::-webkit-scrollbar{display:none}.module-detail-grid-pattern{opacity:.1;pointer-events:none;background-image:repeating-linear-gradient(0deg,#0000,#0000 39px,#fff 39px 40px),repeating-linear-gradient(90deg,#0000,#0000 39px,#fff 39px 40px)}.leaderboard-mask{-webkit-mask-image:linear-gradient(#0000,#000 15%);mask-image:linear-gradient(#0000,#000 15%)}.app-loader-screen{z-index:50;background:#f7f9fc;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.app-loader-card{background:#fff;border:1px solid #dde3eb;border-radius:2rem;flex-direction:column;align-items:center;gap:1.5rem;width:min(100%,24rem);padding:2rem;display:flex;box-shadow:0 24px 40px #38bdf81f}.app-loader-avatar-shell{background:linear-gradient(135deg,#e0f2fe,#e0e7ff);border:2px solid #fff;border-radius:1.5rem;justify-content:center;align-items:center;width:8rem;height:8rem;display:flex;box-shadow:0 12px 24px #0f172a1f}.app-loader-avatar{object-fit:contain;filter:drop-shadow(0 8px 12px #0f172a33);width:5.5rem;height:5.5rem}.app-loader-bot-icon{width:4rem;height:4rem}.app-loader-title{color:#0a1628;margin:0;font-size:1.25rem;font-weight:700}.app-loader-message-row{justify-content:center;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.app-loader-spinner{border:2px solid #0284c7;border-top-color:#0000;border-radius:999px;width:1rem;height:1rem}.app-loader-message{color:#64748b;margin:0;font-size:.875rem;font-weight:600}.avatar-gloss{clip-path:polygon(15% 0,85% 0,65% 100%,35% 100%);pointer-events:none;background:linear-gradient(#fff6,#ffffff0d 60%,#0000)}.login-bg{background:linear-gradient(135deg,#f0f9ff,#f8fafc,#fff1f2 60%,#f0f9ff)}.login-frost-overlay{pointer-events:none;background:radial-gradient(at 30%,#f0f9ff33,#f8fafc80 50%,#fff1f266 80%,#f8fafcd9)}.login-orb-purple{background:radial-gradient(circle,#a855f74d,#0000 70%)}.login-orb-pink{background:radial-gradient(circle,#ec489940,#0000 70%)}.login-orb-blue{background:radial-gradient(circle,#38bdf833,#0000 70%)}.dynamic-header{background-color:var(--bg);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));box-shadow:var(--shadow)}.e-max-h{max-height:var(--max-h);transition:max-height .22s;overflow:hidden}.hero-clip-inset{clip-path:inset(-100% -50% 0)}.card-3d{transform-origin:0;backface-visibility:hidden;transition:transform 2s ease-in-out}.card-accent-sky{border-left:3px solid #0284c7}.card-accent-rose{border-left:3px solid #f43f5e}.card-accent-emerald{border-left:3px solid #059669}.app-loader-copy{text-align:center}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes sunburst-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-sunburst-spin{animation:30s linear infinite sunburst-spin}.chat-markdown{font-family:var(--font-body);overflow-wrap:anywhere;word-break:break-word;font-size:.875rem;line-height:1.625}.chat-markdown h1{font-family:var(--font-display);color:var(--foreground);margin-top:.75rem;margin-bottom:.5rem;font-size:1.25rem;font-weight:700}.chat-markdown h2{font-family:var(--font-display);color:var(--foreground);margin-top:.75rem;margin-bottom:.375rem;font-size:1.1rem;font-weight:700}.chat-markdown h3{font-family:var(--font-display);color:var(--muted-foreground);margin-top:.5rem;margin-bottom:.25rem;font-size:1rem;font-weight:600}.chat-markdown p{margin-top:.375rem;margin-bottom:.375rem}.chat-markdown ul,.chat-markdown ol{margin-top:.375rem;margin-bottom:.375rem;padding-left:1.25rem}.chat-markdown ul{list-style-type:disc}.chat-markdown ol{list-style-type:decimal}.chat-markdown li{margin-top:.125rem;margin-bottom:.125rem}.chat-markdown strong{color:var(--foreground);font-weight:700}.chat-markdown em{font-style:italic}.chat-markdown code{background:var(--secondary);color:var(--primary);border-radius:.25rem;padding:.125rem .375rem;font-size:.8125rem}.chat-markdown pre{background:var(--muted);border:1px solid var(--border);border-radius:.5rem;margin-top:.5rem;margin-bottom:.5rem;padding:.75rem;overflow-x:auto}.chat-markdown pre code{color:inherit;background:0 0;padding:0}.chat-markdown hr{border-color:#94a3b873;margin:.75rem 0}.chat-markdown table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.8125rem}.chat-markdown th{background:var(--muted);text-align:left;border:1px solid var(--border);padding:.375rem .5rem;font-weight:600}.chat-markdown td{border:1px solid var(--border);padding:.375rem .5rem}.chat-markdown blockquote{border-left:3px solid var(--primary);color:var(--muted-foreground);margin:.5rem 0;padding-left:.75rem;font-style:italic}.chat-markdown a{color:var(--primary);text-decoration:underline}.chat-markdown>:first-child{margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown .katex-display{padding-bottom:.15rem;overflow:auto hidden}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} +/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-50:oklch(98.4% .014 180.72);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-teal-700:oklch(51.1% .096 186.391);--color-teal-900:oklch(38.6% .063 188.416);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-200:var(--color-violet-200);--color-sky-700:var(--color-violet-700);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-fuchsia-400:oklch(74% .238 322.16);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-700:oklch(37% .013 285.805);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-sm:0 1px 2px #00000026;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:var(--border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.02em;font-weight:700;line-height:1.3}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.01em;font-weight:700;line-height:1.35}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;line-height:1.4}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4{font-family:var(--font-display);font-size:var(--text-base);font-weight:600;line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\[container-type\:inline-size\]{container-type:inline-size}.\[container-type\:size\]{container-type:size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-\[5px\]{inset:-5px}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-\[-20px\]{inset-inline:-20px}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.end-1{inset-inline-end:calc(var(--spacing) * 1)}.-top-1{top:calc(var(--spacing) * -1)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-3\.5{top:calc(var(--spacing) * -3.5)}.-top-4{top:calc(var(--spacing) * -4)}.-top-5{top:calc(var(--spacing) * -5)}.-top-6{top:calc(var(--spacing) * -6)}.-top-8{top:calc(var(--spacing) * -8)}.-top-10{top:calc(var(--spacing) * -10)}.-top-12{top:calc(var(--spacing) * -12)}.-top-20{top:calc(var(--spacing) * -20)}.-top-24{top:calc(var(--spacing) * -24)}.-top-40{top:calc(var(--spacing) * -40)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1{top:calc(var(--spacing) * 1)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3{top:calc(var(--spacing) * 3)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.top-7{top:calc(var(--spacing) * 7)}.top-8{top:calc(var(--spacing) * 8)}.top-12{top:calc(var(--spacing) * 12)}.top-20{top:calc(var(--spacing) * 20)}.top-24{top:calc(var(--spacing) * 24)}.top-\[-5\%\]{top:-5%}.top-\[-10\%\]{top:-10%}.top-\[-30px\]{top:-30px}.top-\[0\%\]{top:0%}.top-\[1px\]{top:1px}.top-\[10\%\]{top:10%}.top-\[10px\]{top:10px}.top-\[15\%\]{top:15%}.top-\[20\%\]{top:20%}.top-\[25px\]{top:25px}.top-\[40\%\]{top:40%}.top-\[45\%\]{top:45%}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-\[80px\]{top:80px}.top-full{top:100%}.-right-1{right:calc(var(--spacing) * -1)}.-right-2{right:calc(var(--spacing) * -2)}.-right-2\.5{right:calc(var(--spacing) * -2.5)}.-right-3{right:calc(var(--spacing) * -3)}.-right-4{right:calc(var(--spacing) * -4)}.-right-5{right:calc(var(--spacing) * -5)}.-right-6{right:calc(var(--spacing) * -6)}.-right-8{right:calc(var(--spacing) * -8)}.-right-10{right:calc(var(--spacing) * -10)}.-right-12{right:calc(var(--spacing) * -12)}.-right-24{right:calc(var(--spacing) * -24)}.-right-40{right:calc(var(--spacing) * -40)}.right-0{right:calc(var(--spacing) * 0)}.right-0\.5{right:calc(var(--spacing) * .5)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-8{right:calc(var(--spacing) * 8)}.right-12{right:calc(var(--spacing) * 12)}.right-16{right:calc(var(--spacing) * 16)}.right-\[-5\%\]{right:-5%}.right-\[-5px\]{right:-5px}.right-\[-10\%\]{right:-10%}.right-\[-10px\]{right:-10px}.right-\[-20\%\]{right:-20%}.right-\[-20px\]{right:-20px}.right-\[-30px\]{right:-30px}.right-\[10\%\]{right:10%}.right-\[24px\]{right:24px}.right-\[150px\]{right:150px}.right-full{right:100%}.-bottom-1{bottom:calc(var(--spacing) * -1)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.-bottom-2\.5{bottom:calc(var(--spacing) * -2.5)}.-bottom-3{bottom:calc(var(--spacing) * -3)}.-bottom-4{bottom:calc(var(--spacing) * -4)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.-bottom-8{bottom:calc(var(--spacing) * -8)}.-bottom-10{bottom:calc(var(--spacing) * -10)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.-bottom-24{bottom:calc(var(--spacing) * -24)}.-bottom-40{bottom:calc(var(--spacing) * -40)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-12{bottom:calc(var(--spacing) * 12)}.bottom-16{bottom:calc(var(--spacing) * 16)}.bottom-28{bottom:calc(var(--spacing) * 28)}.bottom-\[-10\%\]{bottom:-10%}.bottom-\[-20px\]{bottom:-20px}.bottom-\[-500px\]{bottom:-500px}.bottom-\[0\%\]{bottom:0%}.bottom-\[2px\]{bottom:2px}.bottom-\[35px\]{bottom:35px}.bottom-\[50px\]{bottom:50px}.bottom-full{bottom:100%}.-left-2{left:calc(var(--spacing) * -2)}.-left-2\.5{left:calc(var(--spacing) * -2.5)}.-left-3{left:calc(var(--spacing) * -3)}.-left-4{left:calc(var(--spacing) * -4)}.-left-8{left:calc(var(--spacing) * -8)}.-left-10{left:calc(var(--spacing) * -10)}.-left-12{left:calc(var(--spacing) * -12)}.-left-40{left:calc(var(--spacing) * -40)}.-left-\[17px\]{left:-17px}.-left-\[150\%\]{left:-150%}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-3\.5{left:calc(var(--spacing) * 3.5)}.left-4{left:calc(var(--spacing) * 4)}.left-8{left:calc(var(--spacing) * 8)}.left-12{left:calc(var(--spacing) * 12)}.left-\[-5\%\]{left:-5%}.left-\[-10\%\]{left:-10%}.left-\[-20px\]{left:-20px}.left-\[10\%\]{left:10%}.left-\[15\%\]{left:15%}.left-\[20\%\]{left:20%}.left-\[40\%\]{left:40%}.left-\[50\%\]{left:50%}.left-\[54px\]{left:54px}.left-\[var\(--x\)\]{left:var(--x)}.left-full{left:100%}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[-1\]{z-index:-1}.z-\[-2\]{z-index:-2}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[3\]{z-index:3}.z-\[4\]{z-index:4}.z-\[11\]{z-index:11}.z-\[12\]{z-index:12}.z-\[13\]{z-index:13}.z-\[50\]{z-index:50}.z-\[51\]{z-index:51}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.z-\[75\]{z-index:75}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[200\]{z-index:200}.z-\[250\]{z-index:250}.z-\[300\]{z-index:300}.z-\[9998\]{z-index:9998}.z-\[9999\]{z-index:9999}.z-\[10000\]{z-index:10000}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-12{grid-column:span 12/span 12}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-3{margin-inline:calc(var(--spacing) * -3)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-\[24px\]{margin-inline:-24px}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-\[-20px\]{margin-inline:-20px}.mx-\[1px\]{margin-inline:1px}.mx-auto{margin-inline:auto}.-my-4{margin-block:calc(var(--spacing) * -4)}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-\[-10px\]{margin-top:-10px}.mt-\[-20px\]{margin-top:-20px}.mt-\[0\.5rem\]{margin-top:.5rem}.mt-\[1px\]{margin-top:1px}.mt-\[4px\]{margin-top:4px}.mt-\[24px\]{margin-top:24px}.mt-auto{margin-top:auto}.-mr-10{margin-right:calc(var(--spacing) * -10)}.-mr-24{margin-right:calc(var(--spacing) * -24)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-10{margin-bottom:calc(var(--spacing) * -10)}.-mb-18{margin-bottom:calc(var(--spacing) * -18)}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-\[-10px\]{margin-bottom:-10px}.mb-\[2px\]{margin-bottom:2px}.mb-\[8px\]{margin-bottom:8px}.mb-\[10px\]{margin-bottom:10px}.mb-\[14px\]{margin-bottom:14px}.mb-\[16px\]{margin-bottom:16px}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-10{margin-left:calc(var(--spacing) * -10)}.-ml-18{margin-left:calc(var(--spacing) * -18)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-14{margin-left:calc(var(--spacing) * 14)}.ml-\[20px\]{margin-left:20px}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.\[aspect-ratio\:1\/var\(--aspect-ratio\)\]{aspect-ratio:1/var(--aspect-ratio)}.aspect-\[4\/5\]{aspect-ratio:4/5}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-full{width:100%;height:100%}.\[height\:100cqmax\]{height:100cqmax}.h-0{height:calc(var(--spacing) * 0)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-3\/4{height:75%}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-28{height:calc(var(--spacing) * 28)}.h-32{height:calc(var(--spacing) * 32)}.h-36{height:calc(var(--spacing) * 36)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-80{height:calc(var(--spacing) * 80)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1\.5rem\]{height:1.5rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[6px\]{height:6px}.h-\[10px\]{height:10px}.h-\[14px\]{height:14px}.h-\[16px\]{height:16px}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[25px\]{height:25px}.h-\[28px\]{height:28px}.h-\[32px\]{height:32px}.h-\[35px\]{height:35px}.h-\[38px\]{height:38px}.h-\[40\%\]{height:40%}.h-\[40px\]{height:40px}.h-\[45px\]{height:45px}.h-\[46px\]{height:46px}.h-\[48px\]{height:48px}.h-\[50px\]{height:50px}.h-\[52px\]{height:52px}.h-\[54px\]{height:54px}.h-\[60\%\]{height:60%}.h-\[65px\]{height:65px}.h-\[70\%\]{height:70%}.h-\[75px\]{height:75px}.h-\[76px\]{height:76px}.h-\[80\%\]{height:80%}.h-\[80px\]{height:80px}.h-\[85\%\]{height:85%}.h-\[85px\]{height:85px}.h-\[92vh\]{height:92vh}.h-\[95vh\]{height:95vh}.h-\[96px\]{height:96px}.h-\[100px\]{height:100px}.h-\[100vh\]{height:100vh}.h-\[105\%\]{height:105%}.h-\[110\%\]{height:110%}.h-\[120\%\]{height:120%}.h-\[120px\]{height:120px}.h-\[140px\]{height:140px}.h-\[150vh\]{height:150vh}.h-\[160px\]{height:160px}.h-\[170px\]{height:170px}.h-\[185px\]{height:185px}.h-\[190px\]{height:190px}.h-\[220px\]{height:220px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[600vw\]{height:600vw}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[calc\(100\%-16px\)\]{height:calc(100% - 16px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.max-h-\[500px\]{max-height:500px}.max-h-\[calc\(90vh-200px\)\]{max-height:calc(90vh - 200px)}.max-h-\[calc\(90vh-320px\)\]{max-height:calc(90vh - 320px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[3rem\]{min-height:3rem}.min-h-\[24px\]{min-height:24px}.min-h-\[40px\]{min-height:40px}.min-h-\[44px\]{min-height:44px}.min-h-\[48px\]{min-height:48px}.min-h-\[50vh\]{min-height:50vh}.min-h-\[64px\]{min-height:64px}.min-h-\[75px\]{min-height:75px}.min-h-\[100px\]{min-height:100px}.min-h-\[110px\]{min-height:110px}.min-h-\[120px\]{min-height:120px}.min-h-\[140px\]{min-height:140px}.min-h-\[160px\]{min-height:160px}.min-h-\[170px\]{min-height:170px}.min-h-\[180px\]{min-height:180px}.min-h-\[185px\]{min-height:185px}.min-h-\[190px\]{min-height:190px}.min-h-\[200px\]{min-height:200px}.min-h-\[240px\]{min-height:240px}.min-h-\[250px\]{min-height:250px}.min-h-\[290px\]{min-height:290px}.min-h-\[300px\]{min-height:300px}.min-h-\[320px\]{min-height:320px}.min-h-\[330px\]{min-height:330px}.min-h-\[400px\]{min-height:400px}.min-h-\[500px\]{min-height:500px}.min-h-\[800px\]{min-height:800px}.min-h-\[calc\(100vh-3\.5rem\)\]{min-height:calc(100vh - 3.5rem)}.min-h-dvh{min-height:100dvh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.\!w-auto{width:auto!important}.\[width\:100cqh\]{width:100cqh}.\[width\:100cqi\]{width:100cqi}.\[width\:var\(--width\)\]{width:var(--width)}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[1px\]{width:1px}.w-\[2px\]{width:2px}.w-\[5px\]{width:5px}.w-\[6px\]{width:6px}.w-\[10px\]{width:10px}.w-\[16px\]{width:16px}.w-\[22px\]{width:22px}.w-\[30\%\]{width:30%}.w-\[32px\]{width:32px}.w-\[38\%\]{width:38%}.w-\[38px\]{width:38px}.w-\[40\%\]{width:40%}.w-\[46px\]{width:46px}.w-\[48px\]{width:48px}.w-\[52px\]{width:52px}.w-\[55\%\]{width:55%}.w-\[58\%\]{width:58%}.w-\[60\%\]{width:60%}.w-\[60px\]{width:60px}.w-\[65\%\]{width:65%}.w-\[65px\]{width:65px}.w-\[67\%\]{width:67%}.w-\[70\%\]{width:70%}.w-\[70px\]{width:70px}.w-\[72vw\]{width:72vw}.w-\[75px\]{width:75px}.w-\[76\%\]{width:76%}.w-\[78px\]{width:78px}.w-\[79\%\]{width:79%}.w-\[80\%\]{width:80%}.w-\[80px\]{width:80px}.w-\[81\%\]{width:81%}.w-\[84\%\]{width:84%}.w-\[85\%\]{width:85%}.w-\[86\%\]{width:86%}.w-\[88\%\]{width:88%}.w-\[89\%\]{width:89%}.w-\[90\%\]{width:90%}.w-\[90px\]{width:90px}.w-\[92\%\]{width:92%}.w-\[94\%\]{width:94%}.w-\[95\%\]{width:95%}.w-\[96px\]{width:96px}.w-\[100\%\]{width:100%}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[140px\]{width:140px}.w-\[150vw\]{width:150vw}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[250vw\]{width:250vw}.w-\[260px\]{width:260px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[320px\]{width:320px}.w-\[350px\]{width:350px}.w-\[380px\]{width:380px}.w-\[400px\]{width:400px}.w-\[600vw\]{width:600vw}.w-\[calc\(100\%\+48px\)\]{width:calc(100% + 48px)}.w-\[calc\(100\%-4rem\)\]{width:calc(100% - 4rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[19rem\]{max-width:19rem}.max-w-\[22rem\]{max-width:22rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[28rem\]{max-width:28rem}.max-w-\[36rem\]{max-width:36rem}.max-w-\[44rem\]{max-width:44rem}.max-w-\[48\%\]{max-width:48%}.max-w-\[50rem\]{max-width:50rem}.max-w-\[54rem\]{max-width:54rem}.max-w-\[70\%\]{max-width:70%}.max-w-\[75\%\]{max-width:75%}.max-w-\[80px\]{max-width:80px}.max-w-\[85vw\]{max-width:85vw}.max-w-\[88vw\]{max-width:88vw}.max-w-\[90\%\]{max-width:90%}.max-w-\[90px\]{max-width:90px}.max-w-\[90rem\]{max-width:90rem}.max-w-\[120px\]{max-width:120px}.max-w-\[130px\]{max-width:130px}.max-w-\[140px\]{max-width:140px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[330px\]{max-width:330px}.max-w-\[340px\]{max-width:340px}.max-w-\[380px\]{max-width:380px}.max-w-\[400px\]{max-width:400px}.max-w-\[420px\]{max-width:420px}.max-w-\[450px\]{max-width:450px}.max-w-\[460px\]{max-width:460px}.max-w-\[900px\]{max-width:900px}.max-w-\[1000px\]{max-width:1000px}.max-w-\[1100px\]{max-width:1100px}.max-w-\[1200px\]{max-width:1200px}.max-w-\[1400px\]{max-width:1400px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[calc\(100vw-24px\)\]{max-width:calc(100vw - 24px)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-\[1\.5rem\]{min-width:1.5rem}.min-w-\[1\.75rem\]{min-width:1.75rem}.min-w-\[2\.5rem\]{min-width:2.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[18px\]{min-width:18px}.min-w-\[60px\]{min-width:60px}.min-w-\[65px\]{min-width:65px}.min-w-\[85px\]{min-width:85px}.min-w-\[90px\]{min-width:90px}.min-w-\[120px\]{min-width:120px}.min-w-\[130px\]{min-width:130px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[240px\]{min-width:240px}.min-w-\[280px\]{min-width:280px}.min-w-\[800px\]{min-width:800px}.min-w-\[1000px\]{min-width:1000px}.min-w-\[1100px\]{min-width:1100px}.min-w-\[1140px\]{min-width:1140px}.min-w-\[1240px\]{min-width:1240px}.min-w-\[1320px\]{min-width:1320px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-\[1\.5\]{flex:1.5}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-y-2{--tw-border-spacing-y:calc(var(--spacing) * 2);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.\[transform-origin\:0\%_0\%\]{transform-origin:0 0}.\[transform-origin\:50\%_0\%\]{transform-origin:50% 0}.\[transform-origin\:100\%_0\%\]{transform-origin:100% 0}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.origin-bottom{transform-origin:bottom}.origin-bottom-right{transform-origin:100% 100%}.origin-right{transform-origin:100%}.origin-top-right{transform-origin:100% 0}.-translate-x-1{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/4{--tw-translate-x: -25% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-4{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-\[30px\]{--tw-translate-x: -30px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x: 50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/3{--tw-translate-x:calc(1 / 3 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/4{--tw-translate-x: 25% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-100\%\]{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[30px\]{--tw-translate-x:30px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y: 50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/3{--tw-translate-y:calc(1 / 3 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-10{--tw-translate-y:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[10\%\]{--tw-translate-y:10%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-50{--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-x-\[-1\]{--tw-scale-x:-1;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-75{--tw-scale-y:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-150{--tw-scale-y:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.80\]{scale:.8}.scale-\[0\.99\]{scale:.99}.scale-\[1\.01\]{scale:1.01}.scale-\[1\.1\]{scale:1.1}.scale-\[1\.02\]{scale:1.02}.scale-\[1\.05\]{scale:1.05}.scale-\[1\.15\]{scale:1.15}.scale-\[1\.35\]{scale:1.35}.-rotate-12{rotate:-12deg}.-rotate-\[15deg\]{rotate:-15deg}.rotate-6{rotate:6deg}.rotate-12{rotate:12deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-3deg\]{rotate:-3deg}.rotate-\[-5deg\]{rotate:-5deg}.rotate-\[15deg\]{rotate:15deg}.-skew-x-12{--tw-skew-x:skewX( -12deg );transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.\[transform\:rotate\(-90deg\)_rotateX\(-90deg\)\]{transform:rotate(-90deg)rotateX(-90deg)}.\[transform\:rotate\(90deg\)_rotateX\(-90deg\)\]{transform:rotate(90deg)rotateX(-90deg)}.\[transform\:rotateX\(-90deg\)\]{transform:rotateX(-90deg)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[fadeIn_0\.3s_ease-in-out\]{animation:.3s ease-in-out fadeIn}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.touch-manipulation{touch-action:manipulation}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-\[2px\]{gap:2px}.gap-\[3px\]{gap:3px}.gap-\[4px\]{gap:4px}.gap-\[5px\]{gap:5px}.gap-\[6px\]{gap:6px}.gap-\[8px\]{gap:8px}.gap-\[10px\]{gap:10px}.gap-\[12px\]{gap:12px}.gap-\[16px\]{gap:16px}.gap-\[18px\]{gap:18px}.gap-\[24px\]{gap:24px}:where(.-space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * -.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * -.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[8px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(8px * var(--tw-space-y-reverse));margin-block-end:calc(8px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[9px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(9px * var(--tw-space-y-reverse));margin-block-end:calc(9px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[12px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(12px * var(--tw-space-y-reverse));margin-block-end:calc(12px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[16px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(16px * var(--tw-space-y-reverse));margin-block-end:calc(16px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[24px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(24px * var(--tw-space-y-reverse));margin-block-end:calc(24px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[28px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(28px * var(--tw-space-y-reverse));margin-block-end:calc(28px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[32px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(32px * var(--tw-space-y-reverse));margin-block-end:calc(32px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-10{column-gap:calc(var(--spacing) * 10)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[\#edf1f7\]>:not(:last-child)){border-color:#edf1f7}:where(.divide-\[\#f1f5f9\]>:not(:last-child)){border-color:#f1f5f9}:where(.divide-border>:not(:last-child)){border-color:var(--border)}:where(.divide-slate-50>:not(:last-child)){border-color:var(--color-slate-50)}:where(.divide-slate-50\/60>:not(:last-child)){border-color:#f8fafc99}@supports (color:color-mix(in lab,red,red)){:where(.divide-slate-50\/60>:not(:last-child)){border-color:color-mix(in oklab,var(--color-slate-50) 60%,transparent)}}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[-20px\]{border-radius:-20px}.rounded-\[1\.2rem\]{border-radius:1.2rem}.rounded-\[1\.4rem\]{border-radius:1.4rem}.rounded-\[1\.5rem\]{border-radius:1.5rem}.rounded-\[1rem\]{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[2rem\]{border-radius:2rem}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[7px\]{border-radius:7px}.rounded-\[8px\]{border-radius:8px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[17px\]{border-radius:17px}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-\[22px\]{border-radius:22px}.rounded-\[24px\]{border-radius:24px}.rounded-\[28px\]{border-radius:28px}.rounded-\[32px\]{border-radius:32px}.rounded-\[40px\]{border-radius:40px}.rounded-\[50\%\]{border-radius:50%}.rounded-\[50\%_50\%_0_0\/100\%_100\%_0_0\]{border-radius:50% 50% 0 0/100% 100% 0 0}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-\[2\.5rem\]{border-top-left-radius:2.5rem;border-top-right-radius:2.5rem}.rounded-t-\[2px\]{border-top-left-radius:2px;border-top-right-radius:2px}.rounded-t-\[3px\]{border-top-left-radius:3px;border-top-right-radius:3px}.rounded-t-\[24px\]{border-top-left-radius:24px;border-top-right-radius:24px}.rounded-t-\[32px\]{border-top-left-radius:32px;border-top-right-radius:32px}.rounded-t-\[40px\]{border-top-left-radius:40px;border-top-right-radius:40px}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-t-xl{border-top-left-radius:calc(var(--radius) + 4px);border-top-right-radius:calc(var(--radius) + 4px)}.rounded-l-2xl{border-top-left-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.rounded-l-\[1\.5rem\]{border-top-left-radius:1.5rem;border-bottom-left-radius:1.5rem}.rounded-l-\[14px\]{border-top-left-radius:14px;border-bottom-left-radius:14px}.rounded-l-\[18px\]{border-top-left-radius:18px;border-bottom-left-radius:18px}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-tl-\[20px\]{border-top-left-radius:20px}.rounded-tl-\[24px\]{border-top-left-radius:24px}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r-2xl{border-top-right-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.rounded-tr-\[20px\]{border-top-right-radius:20px}.rounded-b-2xl{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.rounded-b-\[18px\]{border-bottom-right-radius:18px;border-bottom-left-radius:18px}.rounded-b-\[24px\]{border-bottom-right-radius:24px;border-bottom-left-radius:24px}.rounded-b-\[32px\]{border-bottom-right-radius:32px;border-bottom-left-radius:32px}.rounded-b-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.rounded-bl-\[24px\]{border-bottom-left-radius:24px}.rounded-bl-none{border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-\[4px\]{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-x-\[1\.5px\]{border-inline-style:var(--tw-border-style);border-inline-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-4,.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-r-4{border-right-style:var(--tw-border-style);border-right-width:4px}.border-r-\[6px\]{border-right-style:var(--tw-border-style);border-right-width:6px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-b-\[2\.5px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:2.5px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4,.border-l-\[4px\]{border-left-style:var(--tw-border-style);border-left-width:4px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\!border-emerald-400{border-color:var(--color-emerald-400)!important}.border-\(--color-border\){border-color:var(--color-border)}.border-\[\#0B0F19\]{border-color:#0b0f19}.border-\[\#0ea5e9\]\/20{border-color:#0ea5e933}.border-\[\#1FA7E1\]{border-color:#1fa7e1}.border-\[\#1FA7E1\]\/20{border-color:#1fa7e133}.border-\[\#1FA7E1\]\/30{border-color:#1fa7e14d}.border-\[\#1FA7E1\]\/40{border-color:#1fa7e166}.border-\[\#1a85a4\]\/20{border-color:#1a85a433}.border-\[\#1a85a4\]\/30{border-color:#1a85a44d}.border-\[\#2a3648\]{border-color:#2a3648}.border-\[\#2f384e\]{border-color:#2f384e}.border-\[\#4f46e5\]{border-color:#4f46e5}.border-\[\#4f46e5\]\/20{border-color:#4f46e533}.border-\[\#6ED1CF\]\/20{border-color:#6ed1cf33}.border-\[\#6ee7b7\]{border-color:#6ee7b7}.border-\[\#7C3AED\]{border-color:#7c3aed}.border-\[\#8A3FD3\]\/20{border-color:#8a3fd333}.border-\[\#8A3FD3\]\/30{border-color:#8a3fd34d}.border-\[\#8B5CF6\]\/40{border-color:#8b5cf666}.border-\[\#8b5cf6\]{border-color:#8b5cf6}.border-\[\#9b51e0\]{border-color:#9b51e0}.border-\[\#10b981\]{border-color:#10b981}.border-\[\#75D06A\]{border-color:#75d06a}.border-\[\#75D06A\]\/30{border-color:#75d06a4d}.border-\[\#75D06A\]\/35{border-color:#75d06a59}.border-\[\#75D06A\]\/40{border-color:#75d06a66}.border-\[\#6366f1\]{border-color:#6366f1}.border-\[\#7274ED\]\/20{border-color:#7274ed33}.border-\[\#7274ED\]\/30{border-color:#7274ed4d}.border-\[\#9956DE\]{border-color:#9956de}.border-\[\#9956DE\]\/20{border-color:#9956de33}.border-\[\#9956DE\]\/25{border-color:#9956de40}.border-\[\#9956DE\]\/30{border-color:#9956de4d}.border-\[\#9956DE\]\/40{border-color:#9956de66}.border-\[\#F1F5F9\]{border-color:#f1f5f9}.border-\[\#F08386\]{border-color:#f08386}.border-\[\#F08386\]\/30{border-color:#f083864d}.border-\[\#FF8B8B\]{border-color:#ff8b8b}.border-\[\#FF8B8B\]\/35{border-color:#ff8b8b59}.border-\[\#FFB356\]{border-color:#ffb356}.border-\[\#FFB356\]\/20{border-color:#ffb35633}.border-\[\#FFB356\]\/38{border-color:#ffb35661}.border-\[\#a5b4fc\]{border-color:#a5b4fc}.border-\[\#a5b4fc\]\/60{border-color:#a5b4fc99}.border-\[\#a855f7\]{border-color:#a855f7}.border-\[\#c7d2fe\]{border-color:#c7d2fe}.border-\[\#cbd5e1\]{border-color:#cbd5e1}.border-\[\#d1cec6\]{border-color:#d1cec6}.border-\[\#dadce0\]{border-color:#dadce0}.border-\[\#dde3eb\]{border-color:#dde3eb}.border-\[\#e0e7ff\]{border-color:#e0e7ff}.border-\[\#e2e8f0\]{border-color:#e2e8f0}.border-\[\#e2e8f0\]\/40{border-color:#e2e8f066}.border-\[\#e67e00\]{border-color:#e67e00}.border-\[\#edf1f7\]{border-color:#edf1f7}.border-\[\#f1f5f9\]{border-color:#f1f5f9}.border-\[\#fbbf24\]{border-color:#fbbf24}.border-\[\#fca5a5\]{border-color:#fca5a5}.border-\[\#fcd34d\]{border-color:#fcd34d}.border-\[\#fde68a\]{border-color:#fde68a}.border-amber-50{border-color:var(--color-amber-50)}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-100\/50{border-color:#fef3c680}@supports (color:color-mix(in lab,red,red)){.border-amber-100\/50{border-color:color-mix(in oklab,var(--color-amber-100) 50%,transparent)}}.border-amber-100\/80{border-color:#fef3c6cc}@supports (color:color-mix(in lab,red,red)){.border-amber-100\/80{border-color:color-mix(in oklab,var(--color-amber-100) 80%,transparent)}}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-200\/50{border-color:#fee68580}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/50{border-color:color-mix(in oklab,var(--color-amber-200) 50%,transparent)}}.border-amber-200\/60{border-color:#fee68599}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/60{border-color:color-mix(in oklab,var(--color-amber-200) 60%,transparent)}}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-300\/50{border-color:#ffd23680}@supports (color:color-mix(in lab,red,red)){.border-amber-300\/50{border-color:color-mix(in oklab,var(--color-amber-300) 50%,transparent)}}.border-amber-400{border-color:var(--color-amber-400)}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/40{border-color:color-mix(in oklab,var(--color-amber-500) 40%,transparent)}}.border-blue-50{border-color:var(--color-blue-50)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-100\/50{border-color:#dbeafe80}@supports (color:color-mix(in lab,red,red)){.border-blue-100\/50{border-color:color-mix(in oklab,var(--color-blue-100) 50%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400\/30{border-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-400\/30{border-color:color-mix(in oklab,var(--color-blue-400) 30%,transparent)}}.border-blue-500{border-color:var(--color-blue-500)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/80{border-color:color-mix(in oklab,var(--border) 80%,transparent)}}.border-emerald-50{border-color:var(--color-emerald-50)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-100\/50{border-color:#d0fae580}@supports (color:color-mix(in lab,red,red)){.border-emerald-100\/50{border-color:color-mix(in oklab,var(--color-emerald-100) 50%,transparent)}}.border-emerald-100\/60{border-color:#d0fae599}@supports (color:color-mix(in lab,red,red)){.border-emerald-100\/60{border-color:color-mix(in oklab,var(--color-emerald-100) 60%,transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-200\/50{border-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.border-emerald-200\/50{border-color:color-mix(in oklab,var(--color-emerald-200) 50%,transparent)}}.border-emerald-200\/60{border-color:#a4f4cf99}@supports (color:color-mix(in lab,red,red)){.border-emerald-200\/60{border-color:color-mix(in oklab,var(--color-emerald-200) 60%,transparent)}}.border-emerald-300{border-color:var(--color-emerald-300)}.border-emerald-300\/40{border-color:#5ee9b566}@supports (color:color-mix(in lab,red,red)){.border-emerald-300\/40{border-color:color-mix(in oklab,var(--color-emerald-300) 40%,transparent)}}.border-emerald-300\/70{border-color:#5ee9b5b3}@supports (color:color-mix(in lab,red,red)){.border-emerald-300\/70{border-color:color-mix(in oklab,var(--color-emerald-300) 70%,transparent)}}.border-emerald-400{border-color:var(--color-emerald-400)}.border-emerald-400\/30{border-color:#00d2944d}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/30{border-color:color-mix(in oklab,var(--color-emerald-400) 30%,transparent)}}.border-emerald-400\/50{border-color:#00d29480}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/50{border-color:color-mix(in oklab,var(--color-emerald-400) 50%,transparent)}}.border-emerald-500{border-color:var(--color-emerald-500)}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-emerald-500\/50{border-color:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/50{border-color:color-mix(in oklab,var(--color-emerald-500) 50%,transparent)}}.border-emerald-600\/50{border-color:#00976780}@supports (color:color-mix(in lab,red,red)){.border-emerald-600\/50{border-color:color-mix(in oklab,var(--color-emerald-600) 50%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-indigo-50{border-color:var(--color-indigo-50)}.border-indigo-100{border-color:var(--color-indigo-100)}.border-indigo-100\/50{border-color:#e0e7ff80}@supports (color:color-mix(in lab,red,red)){.border-indigo-100\/50{border-color:color-mix(in oklab,var(--color-indigo-100) 50%,transparent)}}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-200\/50{border-color:#c7d2ff80}@supports (color:color-mix(in lab,red,red)){.border-indigo-200\/50{border-color:color-mix(in oklab,var(--color-indigo-200) 50%,transparent)}}.border-indigo-300{border-color:var(--color-indigo-300)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/30{border-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.border-indigo-600\/50{border-color:#4f39f680}@supports (color:color-mix(in lab,red,red)){.border-indigo-600\/50{border-color:color-mix(in oklab,var(--color-indigo-600) 50%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/15{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/15{border-color:color-mix(in oklab,var(--muted-foreground) 15%,transparent)}}.border-orange-100{border-color:var(--color-orange-100)}.border-orange-100\/50{border-color:#ffedd580}@supports (color:color-mix(in lab,red,red)){.border-orange-100\/50{border-color:color-mix(in oklab,var(--color-orange-100) 50%,transparent)}}.border-orange-200{border-color:var(--color-orange-200)}.border-orange-200\/60{border-color:#ffd7a899}@supports (color:color-mix(in lab,red,red)){.border-orange-200\/60{border-color:color-mix(in oklab,var(--color-orange-200) 60%,transparent)}}.border-orange-300\/50{border-color:#ffb96d80}@supports (color:color-mix(in lab,red,red)){.border-orange-300\/50{border-color:color-mix(in oklab,var(--color-orange-300) 50%,transparent)}}.border-orange-400{border-color:var(--color-orange-400)}.border-orange-500{border-color:var(--color-orange-500)}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500) 30%,transparent)}}.border-orange-500\/40{border-color:#fe6e0066}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/40{border-color:color-mix(in oklab,var(--color-orange-500) 40%,transparent)}}.border-primary{border-color:var(--primary)}.border-purple-50{border-color:var(--color-purple-50)}.border-purple-100{border-color:var(--color-purple-100)}.border-purple-100\/50{border-color:#f3e8ff80}@supports (color:color-mix(in lab,red,red)){.border-purple-100\/50{border-color:color-mix(in oklab,var(--color-purple-100) 50%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-purple-200\/60{border-color:#e9d5ff99}@supports (color:color-mix(in lab,red,red)){.border-purple-200\/60{border-color:color-mix(in oklab,var(--color-purple-200) 60%,transparent)}}.border-purple-300{border-color:var(--color-purple-300)}.border-purple-400{border-color:var(--color-purple-400)}.border-purple-500{border-color:var(--color-purple-500)}.border-purple-500\/20{border-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/20{border-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.border-red-500{border-color:var(--color-red-500)}.border-rose-50{border-color:var(--color-rose-50)}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-100\/50{border-color:#ffe4e680}@supports (color:color-mix(in lab,red,red)){.border-rose-100\/50{border-color:color-mix(in oklab,var(--color-rose-100) 50%,transparent)}}.border-rose-100\/60{border-color:#ffe4e699}@supports (color:color-mix(in lab,red,red)){.border-rose-100\/60{border-color:color-mix(in oklab,var(--color-rose-100) 60%,transparent)}}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-200\/50{border-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.border-rose-200\/50{border-color:color-mix(in oklab,var(--color-rose-200) 50%,transparent)}}.border-rose-200\/60{border-color:#ffccd399}@supports (color:color-mix(in lab,red,red)){.border-rose-200\/60{border-color:color-mix(in oklab,var(--color-rose-200) 60%,transparent)}}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-300\/70{border-color:#ffa2aeb3}@supports (color:color-mix(in lab,red,red)){.border-rose-300\/70{border-color:color-mix(in oklab,var(--color-rose-300) 70%,transparent)}}.border-rose-400{border-color:var(--color-rose-400)}.border-rose-400\/50{border-color:#ff667f80}@supports (color:color-mix(in lab,red,red)){.border-rose-400\/50{border-color:color-mix(in oklab,var(--color-rose-400) 50%,transparent)}}.border-rose-500{border-color:var(--color-rose-500)}.border-rose-500\/20{border-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/20{border-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-rose-500\/50{border-color:#ff235780}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/50{border-color:color-mix(in oklab,var(--color-rose-500) 50%,transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-sky-100{border-color:var(--color-violet-100)}.border-sky-100\/80{border-color:#ede9fecc}@supports (color:color-mix(in lab,red,red)){.border-sky-100\/80{border-color:color-mix(in oklab,var(--color-violet-100) 80%,transparent)}}.border-sky-200{border-color:var(--color-violet-200)}.border-sky-200\/50{border-color:#ddd6ff80}@supports (color:color-mix(in lab,red,red)){.border-sky-200\/50{border-color:color-mix(in oklab,var(--color-violet-200) 50%,transparent)}}.border-sky-200\/60{border-color:#ddd6ff99}@supports (color:color-mix(in lab,red,red)){.border-sky-200\/60{border-color:color-mix(in oklab,var(--color-violet-200) 60%,transparent)}}.border-sky-300{border-color:var(--color-violet-300)}.border-sky-400{border-color:var(--color-violet-400)}.border-sky-500{border-color:var(--color-violet-500)}.border-sky-500\/20{border-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/20{border-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.border-sky-500\/30{border-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-violet-500) 30%,transparent)}}.border-sky-500\/40{border-color:#8d54ff66}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/40{border-color:color-mix(in oklab,var(--color-violet-500) 40%,transparent)}}.border-sky-600{border-color:var(--color-violet-600)}.border-slate-50{border-color:var(--color-slate-50)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-100\/30{border-color:#f1f5f94d}@supports (color:color-mix(in lab,red,red)){.border-slate-100\/30{border-color:color-mix(in oklab,var(--color-slate-100) 30%,transparent)}}.border-slate-100\/50{border-color:#f1f5f980}@supports (color:color-mix(in lab,red,red)){.border-slate-100\/50{border-color:color-mix(in oklab,var(--color-slate-100) 50%,transparent)}}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/50{border-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/50{border-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.border-slate-200\/60{border-color:#e2e8f099}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/60{border-color:color-mix(in oklab,var(--color-slate-200) 60%,transparent)}}.border-slate-200\/70{border-color:#e2e8f0b3}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/70{border-color:color-mix(in oklab,var(--color-slate-200) 70%,transparent)}}.border-slate-200\/80{border-color:#e2e8f0cc}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/80{border-color:color-mix(in oklab,var(--color-slate-200) 80%,transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-300\/30{border-color:#cad5e24d}@supports (color:color-mix(in lab,red,red)){.border-slate-300\/30{border-color:color-mix(in oklab,var(--color-slate-300) 30%,transparent)}}.border-slate-300\/50{border-color:#cad5e280}@supports (color:color-mix(in lab,red,red)){.border-slate-300\/50{border-color:color-mix(in oklab,var(--color-slate-300) 50%,transparent)}}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-700\/50{border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/50{border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-slate-800\/10{border-color:#1d293d1a}@supports (color:color-mix(in lab,red,red)){.border-slate-800\/10{border-color:color-mix(in oklab,var(--color-slate-800) 10%,transparent)}}.border-teal-300{border-color:var(--color-teal-300)}.border-teal-300\/60{border-color:#46ecd599}@supports (color:color-mix(in lab,red,red)){.border-teal-300\/60{border-color:color-mix(in oklab,var(--color-teal-300) 60%,transparent)}}.border-transparent{border-color:#0000}.border-violet-100{border-color:var(--color-violet-100)}.border-violet-200\/60{border-color:#ddd6ff99}@supports (color:color-mix(in lab,red,red)){.border-violet-200\/60{border-color:color-mix(in oklab,var(--color-violet-200) 60%,transparent)}}.border-violet-300{border-color:var(--color-violet-300)}.border-violet-800{border-color:var(--color-violet-800)}.border-white{border-color:var(--color-white)}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.border-white\/25{border-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.border-white\/25{border-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.border-white\/35{border-color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.border-white\/35{border-color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.border-white\/50{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.border-white\/80{border-color:#fffc}@supports (color:color-mix(in lab,red,red)){.border-white\/80{border-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.border-white\/90{border-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.border-white\/90{border-color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.border-zinc-200{border-color:var(--color-zinc-200)}.border-t-\[\#0ea5e9\]{border-top-color:#0ea5e9}.border-t-\[\#10b981\]{border-top-color:#10b981}.border-t-\[\#9956DE\]{border-top-color:#9956de}.border-t-\[\#a855f7\]{border-top-color:#a855f7}.border-t-slate-800{border-top-color:var(--color-slate-800)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-r-amber-300{border-right-color:var(--color-amber-300)}.border-r-teal-300{border-right-color:var(--color-teal-300)}.border-r-transparent{border-right-color:#0000}.border-b-amber-300{border-bottom-color:var(--color-amber-300)}.border-b-teal-300{border-bottom-color:var(--color-teal-300)}.border-l-\[\#1FA7E1\]{border-left-color:#1fa7e1}.border-l-\[\#6ED1CF\]{border-left-color:#6ed1cf}.border-l-\[\#10b981\]{border-left-color:#10b981}.border-l-\[\#7274ED\]{border-left-color:#7274ed}.border-l-\[\#9956DE\]{border-left-color:#9956de}.border-l-\[\#FFB356\]{border-left-color:#ffb356}.border-l-\[\#a855f7\]{border-left-color:#a855f7}.border-l-\[\#f43f5e\]{border-left-color:#f43f5e}.border-l-amber-400{border-left-color:var(--color-amber-400)}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-blue-400{border-left-color:var(--color-blue-400)}.border-l-emerald-400{border-left-color:var(--color-emerald-400)}.border-l-emerald-500{border-left-color:var(--color-emerald-500)}.border-l-rose-400{border-left-color:var(--color-rose-400)}.border-l-rose-500{border-left-color:var(--color-rose-500)}.border-l-transparent{border-left-color:#0000}.\!bg-\[\#6ED1CF\]\/35{background-color:#6ed1cf59!important}.\!bg-\[\#7274ED\]{background-color:#7274ed!important}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-\[\#0B0F19\]{background-color:#0b0f19}.bg-\[\#0a1628\]{background-color:#0a1628}.bg-\[\#0ea5e9\]{background-color:#0ea5e9}.bg-\[\#0ea5e9\]\/10{background-color:#0ea5e91a}.bg-\[\#0f1422\]{background-color:#0f1422}.bg-\[\#00a86b\]{background-color:#00a86b}.bg-\[\#1FA7E1\]{background-color:#1fa7e1}.bg-\[\#1FA7E1\]\/10{background-color:#1fa7e11a}.bg-\[\#1FA7E1\]\/80{background-color:#1fa7e1cc}.bg-\[\#1a85a4\]{background-color:#1a85a4}.bg-\[\#1a2030\]{background-color:#1a2030}.bg-\[\#1e293b\]{background-color:#1e293b}.bg-\[\#1e2433\]{background-color:#1e2433}.bg-\[\#1e2433\]\/95{background-color:#1e2433f2}.bg-\[\#1e2536\]{background-color:#1e2536}.bg-\[\#2d1b69\]{background-color:#2d1b69}.bg-\[\#2f3547\]{background-color:#2f3547}.bg-\[\#3b3a82\]{background-color:#3b3a82}.bg-\[\#3b82f6\]{background-color:#3b82f6}.bg-\[\#4f46e5\]{background-color:#4f46e5}.bg-\[\#4f46e5\]\/10{background-color:#4f46e51a}.bg-\[\#6D28D9\]{background-color:#6d28d9}.bg-\[\#6ED1CF\]\/10{background-color:#6ed1cf1a}.bg-\[\#6ED1CF\]\/30{background-color:#6ed1cf4d}.bg-\[\#6F2BAF\]{background-color:#6f2baf}.bg-\[\#7C51A8\]{background-color:#7c51a8}.bg-\[\#7ec16d\]{background-color:#7ec16d}.bg-\[\#8A3FD3\]{background-color:#8a3fd3}.bg-\[\#8A3FD3\]\/5{background-color:#8a3fd30d}.bg-\[\#8A3FD3\]\/10{background-color:#8a3fd31a}.bg-\[\#8B5CF6\]{background-color:#8b5cf6}.bg-\[\#8E1010\]{background-color:#8e1010}.bg-\[\#8b5cf6\]{background-color:#8b5cf6}.bg-\[\#9a67d0\]{background-color:#9a67d0}.bg-\[\#9b51e0\]{background-color:#9b51e0}.bg-\[\#10B981\],.bg-\[\#10b981\]{background-color:#10b981}.bg-\[\#22c55e\]{background-color:#22c55e}.bg-\[\#34d399\]{background-color:#34d399}.bg-\[\#48bca6\]{background-color:#48bca6}.bg-\[\#58B34D\]{background-color:#58b34d}.bg-\[\#62b658\]{background-color:#62b658}.bg-\[\#75D06A\]{background-color:#75d06a}.bg-\[\#75D06A\]\/10{background-color:#75d06a1a}.bg-\[\#75D06A\]\/14{background-color:#75d06a24}.bg-\[\#75D06A\]\/15{background-color:#75d06a26}.bg-\[\#75D06A\]\/22{background-color:#75d06a38}.bg-\[\#75D06A\]\/100{background-color:#75d06a}.bg-\[\#127DA6\]{background-color:#127da6}.bg-\[\#158abf\]{background-color:#158abf}.bg-\[\#161a25\]\/90{background-color:#161a25e6}.bg-\[\#181d27\]{background-color:#181d27}.bg-\[\#533ab6\]{background-color:#533ab6}.bg-\[\#662AA8\]{background-color:#662aa8}.bg-\[\#818cf8\]{background-color:#818cf8}.bg-\[\#2563eb\]{background-color:#2563eb}.bg-\[\#5154E7\]{background-color:#5154e7}.bg-\[\#6366f1\]{background-color:#6366f1}.bg-\[\#7274ED\]{background-color:#7274ed}.bg-\[\#7274ED\]\/10{background-color:#7274ed1a}.bg-\[\#7274ED\]\/80{background-color:#7274edcc}.bg-\[\#7274ED\]\/100{background-color:#7274ed}.bg-\[\#8544c7\]{background-color:#8544c7}.bg-\[\#9956DE\]{background-color:#9956de}.bg-\[\#9956DE\]\/5{background-color:#9956de0d}.bg-\[\#9956DE\]\/10{background-color:#9956de1a}.bg-\[\#9956DE\]\/12{background-color:#9956de1f}.bg-\[\#9956DE\]\/16{background-color:#9956de29}.bg-\[\#9956DE\]\/20{background-color:#9956de33}.bg-\[\#9956DE\]\/30{background-color:#9956de4d}.bg-\[\#9956DE\]\/32{background-color:#9956de52}.bg-\[\#9956DE\]\/80{background-color:#9956decc}.bg-\[\#9956de\]{background-color:#9956de}.bg-\[\#10709b\]{background-color:#10709b}.bg-\[\#42389d\]{background-color:#42389d}.bg-\[\#059669\]{background-color:#059669}.bg-\[\#111827\]{background-color:#111827}.bg-\[\#475569\]{background-color:#475569}.bg-\[\#633299\]{background-color:#633299}.bg-\[\#C62828\]{background-color:#c62828}.bg-\[\#D96C6A\]{background-color:#d96c6a}.bg-\[\#D44747\]{background-color:#d44747}.bg-\[\#DE7949\]{background-color:#de7949}.bg-\[\#E06A6A\]{background-color:#e06a6a}.bg-\[\#F43F5E\]{background-color:#f43f5e}.bg-\[\#F08386\]\/10{background-color:#f083861a}.bg-\[\#F08386\]\/12{background-color:#f083861f}.bg-\[\#F08386\]\/15{background-color:#f0838626}.bg-\[\#F08386\]\/20{background-color:#f0838633}.bg-\[\#F39029\]{background-color:#f39029}.bg-\[\#FB96BB\]{background-color:#fb96bb}.bg-\[\#FE6464\]{background-color:#fe6464}.bg-\[\#FF8B8B\]{background-color:#ff8b8b}.bg-\[\#FF8B8B\]\/10{background-color:#ff8b8b1a}.bg-\[\#FF8B8B\]\/14{background-color:#ff8b8b24}.bg-\[\#FF8B8B\]\/22{background-color:#ff8b8b38}.bg-\[\#FFA23A\]{background-color:#ffa23a}.bg-\[\#FFB356\]{background-color:#ffb356}.bg-\[\#FFB356\]\/10{background-color:#ffb3561a}.bg-\[\#FFB356\]\/16{background-color:#ffb35629}.bg-\[\#FFB356\]\/90{background-color:#ffb356e6}.bg-\[\#a855f7\]{background-color:#a855f7}.bg-\[\#be185d\]{background-color:#be185d}.bg-\[\#d946ef\]{background-color:#d946ef}.bg-\[\#dde3eb\]{background-color:#dde3eb}.bg-\[\#df7b9e\]{background-color:#df7b9e}.bg-\[\#e0e7ff\]{background-color:#e0e7ff}.bg-\[\#e0f4fa\]{background-color:#e0f4fa}.bg-\[\#e2e8f0\]{background-color:#e2e8f0}.bg-\[\#e66a5e\]{background-color:#e66a5e}.bg-\[\#e67070\]{background-color:#e67070}.bg-\[\#e69940\]{background-color:#e69940}.bg-\[\#eb74a6\]{background-color:#eb74a6}.bg-\[\#ecfdf5\]{background-color:#ecfdf5}.bg-\[\#edf1f7\]{background-color:#edf1f7}.bg-\[\#eef2ff\]{background-color:#eef2ff}.bg-\[\#eef2ff\]\/80{background-color:#eef2ffcc}.bg-\[\#ef4444\]{background-color:#ef4444}.bg-\[\#eff6ff\]{background-color:#eff6ff}.bg-\[\#f0fdf4\]{background-color:#f0fdf4}.bg-\[\#f1f5f9\]{background-color:#f1f5f9}.bg-\[\#f3e8ff\]{background-color:#f3e8ff}.bg-\[\#f5f3ff\]{background-color:#f5f3ff}.bg-\[\#f5f3ff\]\/40{background-color:#f5f3ff66}.bg-\[\#f5f3ff\]\/60{background-color:#f5f3ff99}.bg-\[\#f7f9fc\]{background-color:#f7f9fc}.bg-\[\#f8fafc\]{background-color:#f8fafc}.bg-\[\#f8fafc\]\/50{background-color:#f8fafc80}.bg-\[\#f8fafc\]\/80{background-color:#f8fafccc}.bg-\[\#f8faff\]{background-color:#f8faff}.bg-\[\#f8fbff\]{background-color:#f8fbff}.bg-\[\#f43f5e\]{background-color:#f43f5e}.bg-\[\#f59e0b\]{background-color:#f59e0b}.bg-\[\#f97316\]{background-color:#f97316}.bg-\[\#fb7185\]{background-color:#fb7185}.bg-\[\#fbab41\]{background-color:#fbab41}.bg-\[\#fbbf24\]{background-color:#fbbf24}.bg-\[\#fdfdfd\]{background-color:#fdfdfd}.bg-\[\#fee2e2\]{background-color:#fee2e2}.bg-\[\#fff1f2\]{background-color:#fff1f2}.bg-\[\#fff3cd\]{background-color:#fff3cd}.bg-\[\#fff7ed\]{background-color:#fff7ed}.bg-\[\#fffbeb\]{background-color:#fffbeb}.bg-\[color-mix\(in_srgb\,var\(--chart-2\)_14\%\,transparent\)\]{background-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--chart-2\)_14\%\,transparent\)\]{background-color:color-mix(in srgb,var(--chart-2) 14%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--chart-3\)_14\%\,transparent\)\]{background-color:var(--chart-3)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--chart-3\)_14\%\,transparent\)\]{background-color:color-mix(in srgb,var(--chart-3) 14%,transparent)}}.bg-\[color-mix\(in_srgb\,var\(--chart-4\)_14\%\,transparent\)\]{background-color:var(--chart-4)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--chart-4\)_14\%\,transparent\)\]{background-color:color-mix(in srgb,var(--chart-4) 14%,transparent)}}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/20{background-color:#fffbeb33}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/20{background-color:color-mix(in oklab,var(--color-amber-50) 20%,transparent)}}.bg-amber-50\/30{background-color:#fffbeb4d}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/30{background-color:color-mix(in oklab,var(--color-amber-50) 30%,transparent)}}.bg-amber-50\/40{background-color:#fffbeb66}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/40{background-color:color-mix(in oklab,var(--color-amber-50) 40%,transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-300\/20{background-color:#ffd23633}@supports (color:color-mix(in lab,red,red)){.bg-amber-300\/20{background-color:color-mix(in oklab,var(--color-amber-300) 20%,transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-400\/90{background-color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/90{background-color:color-mix(in oklab,var(--color-amber-400) 90%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--background)}.bg-black\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-black\/0{background-color:color-mix(in oklab,var(--color-black) 0%,transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/15{background-color:#00000026}@supports (color:color-mix(in lab,red,red)){.bg-black\/15{background-color:color-mix(in oklab,var(--color-black) 15%,transparent)}}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/30{background-color:#eff6ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/30{background-color:color-mix(in oklab,var(--color-blue-50) 30%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-100\/40{background-color:#dbeafe66}@supports (color:color-mix(in lab,red,red)){.bg-blue-100\/40{background-color:color-mix(in oklab,var(--color-blue-100) 40%,transparent)}}.bg-blue-300\/40{background-color:#90c5ff66}@supports (color:color-mix(in lab,red,red)){.bg-blue-300\/40{background-color:color-mix(in oklab,var(--color-blue-300) 40%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-400\/30{background-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/30{background-color:color-mix(in oklab,var(--color-blue-400) 30%,transparent)}}.bg-blue-400\/40{background-color:#54a2ff66}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/40{background-color:color-mix(in oklab,var(--color-blue-400) 40%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/20{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/20{background-color:color-mix(in oklab,var(--card) 20%,transparent)}}.bg-cyan-400\/30{background-color:#00d2ef4d}@supports (color:color-mix(in lab,red,red)){.bg-cyan-400\/30{background-color:color-mix(in oklab,var(--color-cyan-400) 30%,transparent)}}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500) 10%,transparent)}}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/20{background-color:#ecfdf533}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/20{background-color:color-mix(in oklab,var(--color-emerald-50) 20%,transparent)}}.bg-emerald-50\/30{background-color:#ecfdf54d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/30{background-color:color-mix(in oklab,var(--color-emerald-50) 30%,transparent)}}.bg-emerald-50\/40{background-color:#ecfdf566}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/40{background-color:color-mix(in oklab,var(--color-emerald-50) 40%,transparent)}}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/50{background-color:color-mix(in oklab,var(--color-emerald-50) 50%,transparent)}}.bg-emerald-50\/80{background-color:#ecfdf5cc}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/80{background-color:color-mix(in oklab,var(--color-emerald-50) 80%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-100\/50{background-color:#d0fae580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-100\/50{background-color:color-mix(in oklab,var(--color-emerald-100) 50%,transparent)}}.bg-emerald-200{background-color:var(--color-emerald-200)}.bg-emerald-200\/50{background-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.bg-emerald-200\/50{background-color:color-mix(in oklab,var(--color-emerald-200) 50%,transparent)}}.bg-emerald-300{background-color:var(--color-emerald-300)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-emerald-500\/30{background-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/30{background-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-foreground{background-color:var(--foreground)}.bg-fuchsia-300\/20{background-color:#f2a9ff33}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-300\/20{background-color:color-mix(in oklab,var(--color-fuchsia-300) 20%,transparent)}}.bg-fuchsia-400\/30{background-color:#ec6cff4d}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-400\/30{background-color:color-mix(in oklab,var(--color-fuchsia-400) 30%,transparent)}}.bg-fuchsia-500{background-color:var(--color-fuchsia-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-50\/50{background-color:#eef2ff80}@supports (color:color-mix(in lab,red,red)){.bg-indigo-50\/50{background-color:color-mix(in oklab,var(--color-indigo-50) 50%,transparent)}}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-100\/50{background-color:#e0e7ff80}@supports (color:color-mix(in lab,red,red)){.bg-indigo-100\/50{background-color:color-mix(in oklab,var(--color-indigo-100) 50%,transparent)}}.bg-indigo-200{background-color:var(--color-indigo-200)}.bg-indigo-300{background-color:var(--color-indigo-300)}.bg-indigo-300\/10{background-color:#a4b3ff1a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-300\/10{background-color:color-mix(in oklab,var(--color-indigo-300) 10%,transparent)}}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-400\/30{background-color:#7d87ff4d}@supports (color:color-mix(in lab,red,red)){.bg-indigo-400\/30{background-color:color-mix(in oklab,var(--color-indigo-400) 30%,transparent)}}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/10{background-color:color-mix(in oklab,var(--color-indigo-500) 10%,transparent)}}.bg-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/20{background-color:color-mix(in oklab,var(--color-indigo-500) 20%,transparent)}}.bg-indigo-500\/30{background-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/30{background-color:color-mix(in oklab,var(--color-indigo-500) 30%,transparent)}}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-input-background{background-color:var(--input-background)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab,var(--muted-foreground) 30%,transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--muted) 20%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-400{background-color:var(--color-orange-400)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.bg-orange-500\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/15{background-color:color-mix(in oklab,var(--color-orange-500) 15%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.bg-pink-500\/20{background-color:#f6339a33}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/20{background-color:color-mix(in oklab,var(--color-pink-500) 20%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-50\/20{background-color:#faf5ff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/20{background-color:color-mix(in oklab,var(--color-purple-50) 20%,transparent)}}.bg-purple-50\/30{background-color:#faf5ff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/30{background-color:color-mix(in oklab,var(--color-purple-50) 30%,transparent)}}.bg-purple-50\/40{background-color:#faf5ff66}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/40{background-color:color-mix(in oklab,var(--color-purple-50) 40%,transparent)}}.bg-purple-50\/50{background-color:#faf5ff80}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/50{background-color:color-mix(in oklab,var(--color-purple-50) 50%,transparent)}}.bg-purple-50\/80{background-color:#faf5ffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-50\/80{background-color:color-mix(in oklab,var(--color-purple-50) 80%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-100\/30{background-color:#f3e8ff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-100\/30{background-color:color-mix(in oklab,var(--color-purple-100) 30%,transparent)}}.bg-purple-200\/30{background-color:#e9d5ff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-200\/30{background-color:color-mix(in oklab,var(--color-purple-200) 30%,transparent)}}.bg-purple-300{background-color:var(--color-purple-300)}.bg-purple-300\/10{background-color:#d9b3ff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-300\/10{background-color:color-mix(in oklab,var(--color-purple-300) 10%,transparent)}}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-400\/20{background-color:#c07eff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-400\/20{background-color:color-mix(in oklab,var(--color-purple-400) 20%,transparent)}}.bg-purple-400\/30{background-color:#c07eff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-400\/30{background-color:color-mix(in oklab,var(--color-purple-400) 30%,transparent)}}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-purple-500\/30{background-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/30{background-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-purple-900\/20{background-color:#59168b33}@supports (color:color-mix(in lab,red,red)){.bg-purple-900\/20{background-color:color-mix(in oklab,var(--color-purple-900) 20%,transparent)}}.bg-purple-900\/40{background-color:#59168b66}@supports (color:color-mix(in lab,red,red)){.bg-purple-900\/40{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/30{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/30{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/80{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/80{background-color:color-mix(in oklab,var(--color-red-500) 80%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-50\/20{background-color:#fff1f233}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/20{background-color:color-mix(in oklab,var(--color-rose-50) 20%,transparent)}}.bg-rose-50\/30{background-color:#fff1f24d}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/30{background-color:color-mix(in oklab,var(--color-rose-50) 30%,transparent)}}.bg-rose-50\/40{background-color:#fff1f266}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/40{background-color:color-mix(in oklab,var(--color-rose-50) 40%,transparent)}}.bg-rose-50\/60{background-color:#fff1f299}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/60{background-color:color-mix(in oklab,var(--color-rose-50) 60%,transparent)}}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-100\/30{background-color:#ffe4e64d}@supports (color:color-mix(in lab,red,red)){.bg-rose-100\/30{background-color:color-mix(in oklab,var(--color-rose-100) 30%,transparent)}}.bg-rose-100\/40{background-color:#ffe4e666}@supports (color:color-mix(in lab,red,red)){.bg-rose-100\/40{background-color:color-mix(in oklab,var(--color-rose-100) 40%,transparent)}}.bg-rose-200{background-color:var(--color-rose-200)}.bg-rose-200\/50{background-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.bg-rose-200\/50{background-color:color-mix(in oklab,var(--color-rose-200) 50%,transparent)}}.bg-rose-200\/60{background-color:#ffccd399}@supports (color:color-mix(in lab,red,red)){.bg-rose-200\/60{background-color:color-mix(in oklab,var(--color-rose-200) 60%,transparent)}}.bg-rose-300{background-color:var(--color-rose-300)}.bg-rose-300\/60{background-color:#ffa2ae99}@supports (color:color-mix(in lab,red,red)){.bg-rose-300\/60{background-color:color-mix(in oklab,var(--color-rose-300) 60%,transparent)}}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/5{background-color:#ff23570d}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/5{background-color:color-mix(in oklab,var(--color-rose-500) 5%,transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-rose-600{background-color:var(--color-rose-600)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-50{background-color:var(--color-violet-50)}.bg-sky-50\/40{background-color:#f5f3ff66}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/40{background-color:color-mix(in oklab,var(--color-violet-50) 40%,transparent)}}.bg-sky-50\/50{background-color:#f5f3ff80}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/50{background-color:color-mix(in oklab,var(--color-violet-50) 50%,transparent)}}.bg-sky-50\/70{background-color:#f5f3ffb3}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/70{background-color:color-mix(in oklab,var(--color-violet-50) 70%,transparent)}}.bg-sky-100{background-color:var(--color-violet-100)}.bg-sky-100\/40{background-color:#ede9fe66}@supports (color:color-mix(in lab,red,red)){.bg-sky-100\/40{background-color:color-mix(in oklab,var(--color-violet-100) 40%,transparent)}}.bg-sky-200{background-color:var(--color-violet-200)}.bg-sky-300\/10{background-color:#c4b4ff1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-300\/10{background-color:color-mix(in oklab,var(--color-violet-300) 10%,transparent)}}.bg-sky-400{background-color:var(--color-violet-400)}.bg-sky-400\/20{background-color:#a685ff33}@supports (color:color-mix(in lab,red,red)){.bg-sky-400\/20{background-color:color-mix(in oklab,var(--color-violet-400) 20%,transparent)}}.bg-sky-500{background-color:var(--color-violet-500)}.bg-sky-500\/5{background-color:#8d54ff0d}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/5{background-color:color-mix(in oklab,var(--color-violet-500) 5%,transparent)}}.bg-sky-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-sky-500\/20{background-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/20{background-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.bg-sky-600{background-color:var(--color-violet-600)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/20{background-color:#f8fafc33}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/20{background-color:color-mix(in oklab,var(--color-slate-50) 20%,transparent)}}.bg-slate-50\/30{background-color:#f8fafc4d}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/30{background-color:color-mix(in oklab,var(--color-slate-50) 30%,transparent)}}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.bg-slate-50\/60{background-color:#f8fafc99}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/60{background-color:color-mix(in oklab,var(--color-slate-50) 60%,transparent)}}.bg-slate-50\/80{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/80{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.bg-slate-50\/90{background-color:#f8fafce6}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/90{background-color:color-mix(in oklab,var(--color-slate-50) 90%,transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-100\/70{background-color:#f1f5f9b3}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/70{background-color:color-mix(in oklab,var(--color-slate-100) 70%,transparent)}}.bg-slate-100\/80{background-color:#f1f5f9cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/80{background-color:color-mix(in oklab,var(--color-slate-100) 80%,transparent)}}.bg-slate-100\/90{background-color:#f1f5f9e6}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/90{background-color:color-mix(in oklab,var(--color-slate-100) 90%,transparent)}}.bg-slate-100\/95{background-color:#f1f5f9f2}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/95{background-color:color-mix(in oklab,var(--color-slate-100) 95%,transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-200\/50{background-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/50{background-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.bg-slate-200\/80{background-color:#e2e8f0cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/80{background-color:color-mix(in oklab,var(--color-slate-200) 80%,transparent)}}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-300\/60{background-color:#cad5e299}@supports (color:color-mix(in lab,red,red)){.bg-slate-300\/60{background-color:color-mix(in oklab,var(--color-slate-300) 60%,transparent)}}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-500\/15{background-color:#62748e26}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/15{background-color:color-mix(in oklab,var(--color-slate-500) 15%,transparent)}}.bg-slate-500\/20{background-color:#62748e33}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/20{background-color:color-mix(in oklab,var(--color-slate-500) 20%,transparent)}}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/5{background-color:#1d293d0d}@supports (color:color-mix(in lab,red,red)){.bg-slate-800\/5{background-color:color-mix(in oklab,var(--color-slate-800) 5%,transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/5{background-color:#0f172b0d}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/5{background-color:color-mix(in oklab,var(--color-slate-900) 5%,transparent)}}.bg-slate-900\/10{background-color:#0f172b1a}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/10{background-color:color-mix(in oklab,var(--color-slate-900) 10%,transparent)}}.bg-slate-900\/40{background-color:#0f172b66}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/40{background-color:color-mix(in oklab,var(--color-slate-900) 40%,transparent)}}.bg-slate-900\/50{background-color:#0f172b80}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/50{background-color:color-mix(in oklab,var(--color-slate-900) 50%,transparent)}}.bg-slate-900\/60{background-color:#0f172b99}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/60{background-color:color-mix(in oklab,var(--color-slate-900) 60%,transparent)}}.bg-slate-900\/85{background-color:#0f172bd9}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/85{background-color:color-mix(in oklab,var(--color-slate-900) 85%,transparent)}}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-400\/50{background-color:#00d3bd80}@supports (color:color-mix(in lab,red,red)){.bg-teal-400\/50{background-color:color-mix(in oklab,var(--color-teal-400) 50%,transparent)}}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-500\/20{background-color:#00baa733}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/20{background-color:color-mix(in oklab,var(--color-teal-500) 20%,transparent)}}.bg-teal-600{background-color:var(--color-teal-600)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-100{background-color:var(--color-violet-100)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-violet-600{background-color:var(--color-violet-600)}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-white\/25{background-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.bg-white\/25{background-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.bg-white\/30{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.bg-white\/35{background-color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.bg-white\/35{background-color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.bg-white\/40{background-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.bg-white\/70{background-color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in oklab,var(--color-white) 85%,transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-white\/95{background-color:color-mix(in oklab,var(--color-white) 95%,transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-zinc-100{background-color:var(--color-zinc-100)}.\!bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}.\!bg-gradient-to-r{--tw-gradient-position:to right in oklab!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(circle_at_14\%_12\%\,rgba\(251\,150\,187\,0\.35\)\,transparent_42\%\)\,radial-gradient\(circle_at_80\%_80\%\,rgba\(117\,208\,106\,0\.25\)\,transparent_38\%\)\]{background-image:radial-gradient(circle at 14% 12%,#fb96bb59,#0000 42%),radial-gradient(circle at 80% 80%,#75d06a40,#0000 38%)}.bg-\[radial-gradient\(circle_at_18\%_8\%\,rgba\(251\,150\,187\,0\.32\)\,transparent_42\%\)\,radial-gradient\(circle_at_85\%_84\%\,rgba\(117\,208\,106\,0\.24\)\,transparent_40\%\)\]{background-image:radial-gradient(circle at 18% 8%,#fb96bb52,#0000 42%),radial-gradient(circle at 85% 84%,#75d06a3d,#0000 40%)}.bg-\[radial-gradient\(circle_at_50\%_100\%\,\#9333ea_0\%\,\#c084fc_40\%\,transparent_80\%\)\]{background-image:radial-gradient(circle at 50% 100%,#9333ea,#c084fc,#0000 80%)}.bg-\[radial-gradient\(circle_at_top_right\,rgba\(153\,86\,222\,0\.08\)\,transparent_45\%\)\,radial-gradient\(circle_at_bottom_left\,rgba\(31\,167\,225\,0\.08\)\,transparent_45\%\)\]{background-image:radial-gradient(circle at 100% 0,#9956de14,#0000 45%),radial-gradient(circle at 0 100%,#1fa7e114,#0000 45%)}.bg-\[radial-gradient\(ellipse_at_50\%_100\%\,\#7e22ce_10\%\,transparent_60\%\)\]{background-image:radial-gradient(at 50% 100%,#7e22ce 10%,#0000 60%)}.bg-\[url\(\'data\:image\/svg\+xml\;base64\,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAiLz4KPHBhdGggZD0iTTAgMEgxdjFIMHoiIGZpbGw9IiM2MzY2ZjEiIGZpbGwtb3BhY2l0eT0iMC4wNSIvPgo8L3N2Zz4\=\'\)\]{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAiLz4KPHBhdGggZD0iTTAgMEgxdjFIMHoiIGZpbGw9IiM2MzY2ZjEiIGZpbGwtb3BhY2l0eT0iMC4wNSIvPgo8L3N2Zz4=)}.bg-\[url\(\'data\:image\/svg\+xml\;base64\,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPgo8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAuMSI\+PC9yZWN0Pgo8L3N2Zz4\=\'\)\]{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPgo8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9IjAuMSI+PC9yZWN0Pgo8L3N2Zz4=)}.\!from-\[\#6ED1CF\]{--tw-gradient-from:#6ed1cf!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.\!from-emerald-50{--tw-gradient-from:var(--color-emerald-50)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.from-\[\#0ea5e9\]{--tw-gradient-from:#0ea5e9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#1FA7E1\]\/10{--tw-gradient-from:oklab(68.7044% -.0807821 -.10979/.1);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#1a85a4\]{--tw-gradient-from:#1a85a4;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#3b3a82\]{--tw-gradient-from:#3b3a82;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#3b82f6\]{--tw-gradient-from:#3b82f6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#4DB9E9\]{--tw-gradient-from:#4db9e9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#4f46e5\]{--tw-gradient-from:#4f46e5;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#6ED1CF\]{--tw-gradient-from:#6ed1cf;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#6b7280\]{--tw-gradient-from:#6b7280;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#7ec16d\]{--tw-gradient-from:#7ec16d;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#9a67d0\]{--tw-gradient-from:#9a67d0;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#10b981\]{--tw-gradient-from:#10b981;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#48DA94\]{--tw-gradient-from:#48da94;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#48bca6\]{--tw-gradient-from:#48bca6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#75D06A\]{--tw-gradient-from:#75d06a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#7274ED\]{--tw-gradient-from:#7274ed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#9956DE\]{--tw-gradient-from:#9956de;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#059669\]{--tw-gradient-from:#059669;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#64748b\]{--tw-gradient-from:#64748b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#B467FF\]{--tw-gradient-from:#b467ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#FF7B88\]{--tw-gradient-from:#ff7b88;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#FFB356\]{--tw-gradient-from:#ffb356;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#a855f7\]{--tw-gradient-from:#a855f7;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#e8f7fc\]{--tw-gradient-from:#e8f7fc;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#e66a5e\]{--tw-gradient-from:#e66a5e;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#eb74a6\]{--tw-gradient-from:#eb74a6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#ecfdf5\]{--tw-gradient-from:#ecfdf5;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#eef2ff\]{--tw-gradient-from:#eef2ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#ef4444\]{--tw-gradient-from:#ef4444;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f8fafc\]{--tw-gradient-from:#f8fafc;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f43f5e\]{--tw-gradient-from:#f43f5e;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f59e0b\]{--tw-gradient-from:#f59e0b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#f97316\]{--tw-gradient-from:#f97316;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-\[\#fbab41\]{--tw-gradient-from:#fbab41;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-100{--tw-gradient-from:var(--color-amber-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-300{--tw-gradient-from:var(--color-amber-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-400{--tw-gradient-from:var(--color-amber-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500{--tw-gradient-from:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500\/10{--tw-gradient-from:#f99c001a}@supports (color:color-mix(in lab,red,red)){.from-amber-500\/10{--tw-gradient-from:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.from-amber-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500\/20{--tw-gradient-from:#f99c0033}@supports (color:color-mix(in lab,red,red)){.from-amber-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.from-amber-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-500\/50{--tw-gradient-from:#f99c0080}@supports (color:color-mix(in lab,red,red)){.from-amber-500\/50{--tw-gradient-from:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.from-amber-500\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-400{--tw-gradient-from:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-50{--tw-gradient-from:var(--color-emerald-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-50\/80{--tw-gradient-from:#ecfdf5cc}@supports (color:color-mix(in lab,red,red)){.from-emerald-50\/80{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-50) 80%, transparent)}}.from-emerald-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-100\/90{--tw-gradient-from:#d0fae5e6}@supports (color:color-mix(in lab,red,red)){.from-emerald-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-100) 90%, transparent)}}.from-emerald-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-400{--tw-gradient-from:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500\/10{--tw-gradient-from:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.from-emerald-500\/10{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.from-emerald-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500\/50{--tw-gradient-from:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.from-emerald-500\/50{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-500) 50%, transparent)}}.from-emerald-500\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-600{--tw-gradient-from:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-500{--tw-gradient-from:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-50{--tw-gradient-from:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-100\/90{--tw-gradient-from:#e0e7ffe6}@supports (color:color-mix(in lab,red,red)){.from-indigo-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-indigo-100) 90%, transparent)}}.from-indigo-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-200{--tw-gradient-from:var(--color-indigo-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500\/10{--tw-gradient-from:#625fff1a}@supports (color:color-mix(in lab,red,red)){.from-indigo-500\/10{--tw-gradient-from:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.from-indigo-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500\/20{--tw-gradient-from:#625fff33}@supports (color:color-mix(in lab,red,red)){.from-indigo-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.from-indigo-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-600{--tw-gradient-from:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-orange-50{--tw-gradient-from:var(--color-orange-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-orange-500{--tw-gradient-from:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-50{--tw-gradient-from:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-50\/80{--tw-gradient-from:#faf5ffcc}@supports (color:color-mix(in lab,red,red)){.from-purple-50\/80{--tw-gradient-from:color-mix(in oklab, var(--color-purple-50) 80%, transparent)}}.from-purple-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-100\/90{--tw-gradient-from:#f3e8ffe6}@supports (color:color-mix(in lab,red,red)){.from-purple-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-purple-100) 90%, transparent)}}.from-purple-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-400\/20{--tw-gradient-from:#c07eff33}@supports (color:color-mix(in lab,red,red)){.from-purple-400\/20{--tw-gradient-from:color-mix(in oklab, var(--color-purple-400) 20%, transparent)}}.from-purple-400\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-500{--tw-gradient-from:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-500\/20{--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.from-purple-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.from-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-50{--tw-gradient-from:var(--color-rose-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-100\/90{--tw-gradient-from:#ffe4e6e6}@supports (color:color-mix(in lab,red,red)){.from-rose-100\/90{--tw-gradient-from:color-mix(in oklab, var(--color-rose-100) 90%, transparent)}}.from-rose-100\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-400{--tw-gradient-from:var(--color-rose-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-500{--tw-gradient-from:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-500\/50{--tw-gradient-from:#ff235780}@supports (color:color-mix(in lab,red,red)){.from-rose-500\/50{--tw-gradient-from:color-mix(in oklab, var(--color-rose-500) 50%, transparent)}}.from-rose-500\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-50{--tw-gradient-from:var(--color-violet-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-100{--tw-gradient-from:var(--color-violet-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-400{--tw-gradient-from:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-500\/20{--tw-gradient-from:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.from-sky-500\/20{--tw-gradient-from:color-mix(in oklab, var(--color-violet-500) 20%, transparent)}}.from-sky-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-600{--tw-gradient-from:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-700{--tw-gradient-from:var(--color-violet-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-50\/30{--tw-gradient-from:#f8fafc4d}@supports (color:color-mix(in lab,red,red)){.from-slate-50\/30{--tw-gradient-from:color-mix(in oklab, var(--color-slate-50) 30%, transparent)}}.from-slate-50\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-100{--tw-gradient-from:var(--color-slate-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-200{--tw-gradient-from:var(--color-slate-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-400{--tw-gradient-from:var(--color-slate-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-800{--tw-gradient-from:var(--color-slate-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-teal-500{--tw-gradient-from:var(--color-teal-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-600{--tw-gradient-from:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/0{--tw-gradient-from:#0000}@supports (color:color-mix(in lab,red,red)){.from-white\/0{--tw-gradient-from:color-mix(in oklab, var(--color-white) 0%, transparent)}}.from-white\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/20{--tw-gradient-from:#fff3}@supports (color:color-mix(in lab,red,red)){.from-white\/20{--tw-gradient-from:color-mix(in oklab, var(--color-white) 20%, transparent)}}.from-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/60{--tw-gradient-from:#fff9}@supports (color:color-mix(in lab,red,red)){.from-white\/60{--tw-gradient-from:color-mix(in oklab, var(--color-white) 60%, transparent)}}.from-white\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-\[\#6ED1CF\]{--tw-gradient-via:#6ed1cf;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#75D06A\]{--tw-gradient-via:#75d06a;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#7274ED\]{--tw-gradient-via:#7274ed;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#9956DE\]{--tw-gradient-via:#9956de;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#e2e8f0\]{--tw-gradient-via:#e2e8f0;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#f0fdf4\]{--tw-gradient-via:#f0fdf4;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-\[\#f5f3ff\]{--tw-gradient-via:#f5f3ff;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-amber-400\/40{--tw-gradient-via:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.via-amber-400\/40{--tw-gradient-via:color-mix(in oklab, var(--color-amber-400) 40%, transparent)}}.via-amber-400\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-amber-500\/10{--tw-gradient-via:#f99c001a}@supports (color:color-mix(in lab,red,red)){.via-amber-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.via-amber-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-cyan-500{--tw-gradient-via:var(--color-cyan-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-cyan-500\/10{--tw-gradient-via:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.via-cyan-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.via-cyan-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-emerald-500\/10{--tw-gradient-via:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.via-emerald-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.via-emerald-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-emerald-500\/40{--tw-gradient-via:#00bb7f66}@supports (color:color-mix(in lab,red,red)){.via-emerald-500\/40{--tw-gradient-via:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.via-emerald-500\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-fuchsia-50{--tw-gradient-via:var(--color-fuchsia-50);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-fuchsia-500\/10{--tw-gradient-via:#e12afb1a}@supports (color:color-mix(in lab,red,red)){.via-fuchsia-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.via-fuchsia-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-indigo-50\/80{--tw-gradient-via:#eef2ffcc}@supports (color:color-mix(in lab,red,red)){.via-indigo-50\/80{--tw-gradient-via:color-mix(in oklab, var(--color-indigo-50) 80%, transparent)}}.via-indigo-50\/80{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-indigo-500{--tw-gradient-via:var(--color-indigo-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-orange-50{--tw-gradient-via:var(--color-orange-50);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-orange-500{--tw-gradient-via:var(--color-orange-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-orange-500\/5{--tw-gradient-via:#fe6e000d}@supports (color:color-mix(in lab,red,red)){.via-orange-500\/5{--tw-gradient-via:color-mix(in oklab, var(--color-orange-500) 5%, transparent)}}.via-orange-500\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-pink-500{--tw-gradient-via:var(--color-pink-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-pink-600{--tw-gradient-via:var(--color-pink-600);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-500\/5{--tw-gradient-via:#ac4bff0d}@supports (color:color-mix(in lab,red,red)){.via-purple-500\/5{--tw-gradient-via:color-mix(in oklab, var(--color-purple-500) 5%, transparent)}}.via-purple-500\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-rose-500\/10{--tw-gradient-via:#ff23571a}@supports (color:color-mix(in lab,red,red)){.via-rose-500\/10{--tw-gradient-via:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.via-rose-500\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-rose-500\/40{--tw-gradient-via:#ff235766}@supports (color:color-mix(in lab,red,red)){.via-rose-500\/40{--tw-gradient-via:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.via-rose-500\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-50\/30{--tw-gradient-via:#f5f3ff4d}@supports (color:color-mix(in lab,red,red)){.via-sky-50\/30{--tw-gradient-via:color-mix(in oklab, var(--color-violet-50) 30%, transparent)}}.via-sky-50\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-50\/50{--tw-gradient-via:#f5f3ff80}@supports (color:color-mix(in lab,red,red)){.via-sky-50\/50{--tw-gradient-via:color-mix(in oklab, var(--color-violet-50) 50%, transparent)}}.via-sky-50\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-400\/30{--tw-gradient-via:#a685ff4d}@supports (color:color-mix(in lab,red,red)){.via-sky-400\/30{--tw-gradient-via:color-mix(in oklab, var(--color-violet-400) 30%, transparent)}}.via-sky-400\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-400\/50{--tw-gradient-via:#a685ff80}@supports (color:color-mix(in lab,red,red)){.via-sky-400\/50{--tw-gradient-via:color-mix(in oklab, var(--color-violet-400) 50%, transparent)}}.via-sky-400\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-500{--tw-gradient-via:var(--color-violet-500);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-teal-500\/5{--tw-gradient-via:#00baa70d}@supports (color:color-mix(in lab,red,red)){.via-teal-500\/5{--tw-gradient-via:color-mix(in oklab, var(--color-teal-500) 5%, transparent)}}.via-teal-500\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/15{--tw-gradient-via:#ffffff26}@supports (color:color-mix(in lab,red,red)){.via-white\/15{--tw-gradient-via:color-mix(in oklab, var(--color-white) 15%, transparent)}}.via-white\/15{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/30{--tw-gradient-via:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.via-white\/30{--tw-gradient-via:color-mix(in oklab, var(--color-white) 30%, transparent)}}.via-white\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/40{--tw-gradient-via:#fff6}@supports (color:color-mix(in lab,red,red)){.via-white\/40{--tw-gradient-via:color-mix(in oklab, var(--color-white) 40%, transparent)}}.via-white\/40{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.\!to-\[\#1FA7E1\]{--tw-gradient-to:#1fa7e1!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.\!to-teal-50{--tw-gradient-to:var(--color-teal-50)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.to-\[\#1FA7E1\]{--tw-gradient-to:#1fa7e1;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#2BBF7B\]{--tw-gradient-to:#2bbf7b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#2DA1D8\]{--tw-gradient-to:#2da1d8;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#4b5563\]{--tw-gradient-to:#4b5563;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#6ED1CF\]{--tw-gradient-to:#6ed1cf;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#6ED1CF\]\/10{--tw-gradient-to:oklab(80.0346% -.0906707 -.0221346/.1);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#7c3aed\]{--tw-gradient-to:#7c3aed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#8a5cc0\]{--tw-gradient-to:#8a5cc0;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#9D44FF\]{--tw-gradient-to:#9d44ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#10b981\]{--tw-gradient-to:#10b981;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#40a794\]{--tw-gradient-to:#40a794;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#71ad62\]{--tw-gradient-to:#71ad62;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#75D06A\]{--tw-gradient-to:#75d06a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#126b84\]{--tw-gradient-to:#126b84;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#0284c7\]{--tw-gradient-to:#0284c7;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#2563eb\]{--tw-gradient-to:#2563eb;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#7274ED\]{--tw-gradient-to:#7274ed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#9333ea\]{--tw-gradient-to:#9333ea;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#9956DE\]{--tw-gradient-to:#9956de;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#059669\]{--tw-gradient-to:#059669;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#475569\]{--tw-gradient-to:#475569;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FF5C70\]{--tw-gradient-to:#ff5c70;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FF8B8B\]{--tw-gradient-to:#ff8b8b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FF8C00\]{--tw-gradient-to:#ff8c00;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#FFB356\]{--tw-gradient-to:#ffb356;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#ce5e53\]{--tw-gradient-to:#ce5e53;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#d46895\]{--tw-gradient-to:#d46895;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#d97706\]{--tw-gradient-to:#d97706;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#dc2626\]{--tw-gradient-to:#dc2626;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#e11d48\]{--tw-gradient-to:#e11d48;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#e0983a\]{--tw-gradient-to:#e0983a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#ea580c\]{--tw-gradient-to:#ea580c;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#eef2ff\]{--tw-gradient-to:#eef2ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#f0fbff\]{--tw-gradient-to:#f0fbff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#f1f5f9\]{--tw-gradient-to:#f1f5f9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#f7fdf9\]{--tw-gradient-to:#f7fdf9;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#faf5ff\]{--tw-gradient-to:#faf5ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#fff7ed\]{--tw-gradient-to:#fff7ed;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-amber-50{--tw-gradient-to:var(--color-amber-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-amber-500{--tw-gradient-to:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-cyan-100{--tw-gradient-to:var(--color-cyan-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-cyan-500{--tw-gradient-to:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-100\/30{--tw-gradient-to:#d0fae54d}@supports (color:color-mix(in lab,red,red)){.to-emerald-100\/30{--tw-gradient-to:color-mix(in oklab, var(--color-emerald-100) 30%, transparent)}}.to-emerald-100\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-200{--tw-gradient-to:var(--color-emerald-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-800{--tw-gradient-to:var(--color-emerald-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-fuchsia-500{--tw-gradient-to:var(--color-fuchsia-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50\/50{--tw-gradient-to:#eef2ff80}@supports (color:color-mix(in lab,red,red)){.to-indigo-50\/50{--tw-gradient-to:color-mix(in oklab, var(--color-indigo-50) 50%, transparent)}}.to-indigo-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50\/80{--tw-gradient-to:#eef2ffcc}@supports (color:color-mix(in lab,red,red)){.to-indigo-50\/80{--tw-gradient-to:color-mix(in oklab, var(--color-indigo-50) 80%, transparent)}}.to-indigo-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-200{--tw-gradient-to:var(--color-indigo-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-400{--tw-gradient-to:var(--color-indigo-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-600{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-700{--tw-gradient-to:var(--color-indigo-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-800{--tw-gradient-to:var(--color-indigo-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-50{--tw-gradient-to:var(--color-orange-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-100{--tw-gradient-to:var(--color-orange-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-400{--tw-gradient-to:var(--color-orange-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-600{--tw-gradient-to:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-pink-400\/20{--tw-gradient-to:#fb64b633}@supports (color:color-mix(in lab,red,red)){.to-pink-400\/20{--tw-gradient-to:color-mix(in oklab, var(--color-pink-400) 20%, transparent)}}.to-pink-400\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-pink-500{--tw-gradient-to:var(--color-pink-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-50{--tw-gradient-to:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-50\/20{--tw-gradient-to:#faf5ff33}@supports (color:color-mix(in lab,red,red)){.to-purple-50\/20{--tw-gradient-to:color-mix(in oklab, var(--color-purple-50) 20%, transparent)}}.to-purple-50\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-500{--tw-gradient-to:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-500\/20{--tw-gradient-to:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/20{--tw-gradient-to:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.to-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600\/5{--tw-gradient-to:#9810fa0d}@supports (color:color-mix(in lab,red,red)){.to-purple-600\/5{--tw-gradient-to:color-mix(in oklab, var(--color-purple-600) 5%, transparent)}}.to-purple-600\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-rose-500{--tw-gradient-to:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-rose-600{--tw-gradient-to:var(--color-rose-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-400{--tw-gradient-to:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-500{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-600{--tw-gradient-to:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-600\/5{--tw-gradient-to:#7f22fe0d}@supports (color:color-mix(in lab,red,red)){.to-sky-600\/5{--tw-gradient-to:color-mix(in oklab, var(--color-violet-600) 5%, transparent)}}.to-sky-600\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sky-800{--tw-gradient-to:var(--color-violet-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-50{--tw-gradient-to:var(--color-slate-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-100{--tw-gradient-to:var(--color-slate-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-300{--tw-gradient-to:var(--color-slate-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-600{--tw-gradient-to:var(--color-slate-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-900{--tw-gradient-to:var(--color-slate-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-50{--tw-gradient-to:var(--color-teal-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-300{--tw-gradient-to:var(--color-teal-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-500{--tw-gradient-to:var(--color-teal-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-teal-600{--tw-gradient-to:var(--color-teal-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-violet-700{--tw-gradient-to:var(--color-violet-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-violet-800{--tw-gradient-to:var(--color-violet-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/0{--tw-gradient-to:#0000}@supports (color:color-mix(in lab,red,red)){.to-white\/0{--tw-gradient-to:color-mix(in oklab, var(--color-white) 0%, transparent)}}.to-white\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/20{--tw-gradient-to:#fff3}@supports (color:color-mix(in lab,red,red)){.to-white\/20{--tw-gradient-to:color-mix(in oklab, var(--color-white) 20%, transparent)}}.to-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/80{--tw-gradient-to:#fffc}@supports (color:color-mix(in lab,red,red)){.to-white\/80{--tw-gradient-to:color-mix(in oklab, var(--color-white) 80%, transparent)}}.to-white\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/90{--tw-gradient-to:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.to-white\/90{--tw-gradient-to:color-mix(in oklab, var(--color-white) 90%, transparent)}}.to-white\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\[background-size\:var\(--beam-size\)_var\(--beam-size\)\]{background-size:var(--beam-size) var(--beam-size)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-\[\#1e293b\]{fill:#1e293b}.fill-\[\#4f46e5\]{fill:#4f46e5}.fill-\[\#64748b\]{fill:#64748b}.fill-\[\#475569\]{fill:#475569}.fill-amber-300{fill:var(--color-amber-300)}.fill-blue-500{fill:var(--color-blue-500)}.fill-current{fill:currentColor}.fill-emerald-600{fill:var(--color-emerald-600)}.fill-primary{fill:var(--primary)}.fill-purple-600{fill:var(--color-purple-600)}.fill-white{fill:var(--color-white)}.fill-yellow-300{fill:var(--color-yellow-300)}.fill-yellow-400{fill:var(--color-yellow-400)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-bottom{object-position:bottom}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.p-16{padding:calc(var(--spacing) * 16)}.p-\[1px\]{padding:1px}.p-\[2px_0_4px\]{padding:2px 0 4px}.p-\[3px\]{padding:3px}.p-\[10px\]{padding:10px}.p-\[10px_16px_8px\]{padding:10px 16px 8px}.p-\[12px\]{padding:12px}.p-\[12px_13px\]{padding:12px 13px}.p-\[12px_16px_0\]{padding:12px 16px 0}.p-\[14px\]{padding:14px}.p-\[14px_16px\]{padding:14px 16px}.p-\[16px\]{padding:16px}.p-\[18px\]{padding:18px}.p-\[18px_20px\]{padding:18px 20px}.p-\[20px\]{padding:20px}.p-\[22px_16px_10px\]{padding:22px 16px 10px}.p-\[24px\]{padding:24px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-10{padding-inline:calc(var(--spacing) * 10)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-\[5px\]{padding-inline:5px}.px-\[6px\]{padding-inline:6px}.px-\[8px\]{padding-inline:8px}.px-\[9px\]{padding-inline:9px}.px-\[10px\]{padding-inline:10px}.px-\[15px\]{padding-inline:15px}.px-\[16px\]{padding-inline:16px}.px-\[18px\]{padding-inline:18px}.px-\[22px\]{padding-inline:22px}.px-\[24px\]{padding-inline:24px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-32{padding-block:calc(var(--spacing) * 32)}.py-\[2px\]{padding-block:2px}.py-\[3px\]{padding-block:3px}.py-\[6px\]{padding-block:6px}.py-\[7px\]{padding-block:7px}.py-\[24px\]{padding-block:24px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-\[12px\]{padding-top:12px}.pt-\[24px\]{padding-top:24px}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pr-20{padding-right:calc(var(--spacing) * 20)}.pr-\[60px\]{padding-right:60px}.pr-\[150px\]{padding-right:150px}.pr-\[155px\]{padding-right:155px}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-28{padding-bottom:calc(var(--spacing) * 28)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-\[9px\]{padding-bottom:9px}.pb-\[10px\]{padding-bottom:10px}.pb-\[16px\]{padding-bottom:16px}.pb-\[32px\]{padding-bottom:32px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-\[16px\]{padding-left:16px}.pl-\[18px\]{padding-left:18px}.pl-\[32px\]{padding-left:32px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.05rem\]{font-size:1.05rem}.text-\[1rem\]{font-size:1rem}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[36px\]{font-size:36px}.text-\[38px\]{font-size:38px}.text-\[40px\]{font-size:40px}.text-\[50px\]{font-size:50px}.text-\[60px\]{font-size:60px}.text-\[80px\]{font-size:80px}.text-\[140px\]{font-size:140px}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.8\]{--tw-leading:1.8;line-height:1.8}.leading-\[1\.15\]{--tw-leading:1.15;line-height:1.15}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-\[1\.75\]{--tw-leading:1.75;line-height:1.75}.leading-\[1\.85\]{--tw-leading:1.85;line-height:1.85}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.3px\]{--tw-tracking:.3px;letter-spacing:.3px}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-\[\#1FA7E1\]{color:#1fa7e1!important}.\!text-white{color:var(--color-white)!important}.text-\[\#0a1628\]{color:#0a1628}.text-\[\#0ea5e9\]{color:#0ea5e9}.text-\[\#1E293B\]{color:#1e293b}.text-\[\#1FA7E1\]{color:#1fa7e1}.text-\[\#1a85a4\]{color:#1a85a4}.text-\[\#1e1b4b\]{color:#1e1b4b}.text-\[\#1e293b\]{color:#1e293b}.text-\[\#2E7D32\]{color:#2e7d32}.text-\[\#2e2b5e\]{color:#2e2b5e}.text-\[\#3E8538\]{color:#3e8538}.text-\[\#3b82f6\]{color:#3b82f6}.text-\[\#3c4043\]{color:#3c4043}.text-\[\#4D9F46\]{color:#4d9f46}.text-\[\#4f46e5\]{color:#4f46e5}.text-\[\#5E3388\]\/80{color:#5e3388cc}.text-\[\#5a6578\]{color:#5a6578}.text-\[\#5f6368\]{color:#5f6368}.text-\[\#6ED1CF\]{color:#6ed1cf}.text-\[\#6c47ff\]{color:#6c47ff}.text-\[\#6d28d9\]{color:#6d28d9}.text-\[\#7A44B3\]{color:#7a44b3}.text-\[\#7C3AED\]{color:#7c3aed}.text-\[\#7ec16d\]{color:#7ec16d}.text-\[\#8A1A1A\]{color:#8a1a1a}.text-\[\#8A3FD3\]{color:#8a3fd3}.text-\[\#8a7fbc\]{color:#8a7fbc}.text-\[\#8b5cf6\]{color:#8b5cf6}.text-\[\#9b51e0\]{color:#9b51e0}.text-\[\#10b981\]{color:#10b981}.text-\[\#22c55e\]{color:#22c55e}.text-\[\#065f46\]{color:#065f46}.text-\[\#75D06A\]{color:#75d06a}.text-\[\#94a3b8\]{color:#94a3b8}.text-\[\#818cf8\]{color:#818cf8}.text-\[\#2563eb\]{color:#2563eb}.text-\[\#6366f1\]{color:#6366f1}.text-\[\#6620a2\]{color:#6620a2}.text-\[\#7274ED\]{color:#7274ed}.text-\[\#9333ea\]{color:#9333ea}.text-\[\#9956DE\]{color:#9956de}.text-\[\#36326e\]{color:#36326e}.text-\[\#64748b\]{color:#64748b}.text-\[\#92400e\]{color:#92400e}.text-\[\#202124\]{color:#202124}.text-\[\#334155\]{color:#334155}.text-\[\#475569\]{color:#475569}.text-\[\#A56D29\]{color:#a56d29}.text-\[\#A74B50\]{color:#a74b50}.text-\[\#C65E63\]{color:#c65e63}.text-\[\#CC8A37\]{color:#cc8a37}.text-\[\#D66A6A\]{color:#d66a6a}.text-\[\#EAFBFF\]{color:#eafbff}.text-\[\#F08386\]{color:#f08386}.text-\[\#FF8B8B\]{color:#ff8b8b}.text-\[\#FFB356\]{color:#ffb356}.text-\[\#a0aec0\]{color:#a0aec0}.text-\[\#a3b1ee\]{color:#a3b1ee}.text-\[\#a8a5b3\]{color:#a8a5b3}.text-\[\#a855f7\]{color:#a855f7}.text-\[\#b91c1c\]{color:#b91c1c}.text-\[\#b45309\]{color:#b45309}.text-\[\#c4b5fd\]{color:#c4b5fd}.text-\[\#cbd5e1\]{color:#cbd5e1}.text-\[\#d1abff\]{color:#d1abff}.text-\[\#d1cec6\]{color:#d1cec6}.text-\[\#dde3eb\]{color:#dde3eb}.text-\[\#e66a5e\]{color:#e66a5e}.text-\[\#f8fafc\]{color:#f8fafc}.text-\[\#f43f5e\]{color:#f43f5e}.text-\[\#f97316\]{color:#f97316}.text-\[\#fcd34d\]{color:#fcd34d}.text-\[var\(--chart-2\)\]{color:var(--chart-2)}.text-\[var\(--chart-3\)\]{color:var(--chart-3)}.text-\[var\(--chart-4\)\]{color:var(--chart-4)}.text-\[var\(--primary\)\]{color:var(--primary)}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-600\/80{color:#dd7400cc}@supports (color:color-mix(in lab,red,red)){.text-amber-600\/80{color:color-mix(in oklab,var(--color-amber-600) 80%,transparent)}}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-amber-900\/80{color:#7b3306cc}@supports (color:color-mix(in lab,red,red)){.text-amber-900\/80{color:color-mix(in oklab,var(--color-amber-900) 80%,transparent)}}.text-amber-900\/85{color:#7b3306d9}@supports (color:color-mix(in lab,red,red)){.text-amber-900\/85{color:color-mix(in oklab,var(--color-amber-900) 85%,transparent)}}.text-black{color:var(--color-black)}.text-black\/25{color:#00000040}@supports (color:color-mix(in lab,red,red)){.text-black\/25{color:color-mix(in oklab,var(--color-black) 25%,transparent)}}.text-blue-200{color:var(--color-blue-200)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-100{color:var(--color-cyan-100)}.text-cyan-200{color:var(--color-cyan-200)}.text-cyan-500{color:var(--color-cyan-500)}.text-destructive{color:var(--destructive)}.text-emerald-100{color:var(--color-emerald-100)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-500\/70{color:#00bb7fb3}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/70{color:color-mix(in oklab,var(--color-emerald-500) 70%,transparent)}}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-600\/80{color:#009767cc}@supports (color:color-mix(in lab,red,red)){.text-emerald-600\/80{color:color-mix(in oklab,var(--color-emerald-600) 80%,transparent)}}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-emerald-950{color:var(--color-emerald-950)}.text-foreground{color:var(--foreground)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-indigo-900{color:var(--color-indigo-900)}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/40{color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--muted-foreground) 60%,transparent)}}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-orange-500{color:var(--color-orange-500)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-pink-500{color:var(--color-pink-500)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-200{color:var(--color-purple-200)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-600\/80{color:#9810facc}@supports (color:color-mix(in lab,red,red)){.text-purple-600\/80{color:color-mix(in oklab,var(--color-purple-600) 80%,transparent)}}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-rose-100{color:var(--color-rose-100)}.text-rose-200{color:var(--color-rose-200)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-rose-900{color:var(--color-rose-900)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sky-100{color:var(--color-violet-100)}.text-sky-200{color:var(--color-violet-200)}.text-sky-300{color:var(--color-violet-300)}.text-sky-400{color:var(--color-violet-400)}.text-sky-500{color:var(--color-violet-500)}.text-sky-600{color:var(--color-violet-600)}.text-sky-600\/80{color:#7f22fecc}@supports (color:color-mix(in lab,red,red)){.text-sky-600\/80{color:color-mix(in oklab,var(--color-violet-600) 80%,transparent)}}.text-sky-700{color:var(--color-violet-700)}.text-sky-800{color:var(--color-violet-800)}.text-sky-900{color:var(--color-violet-900)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-500\/60{color:#62748e99}@supports (color:color-mix(in lab,red,red)){.text-slate-500\/60{color:color-mix(in oklab,var(--color-slate-500) 60%,transparent)}}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-400{color:var(--color-teal-400)}.text-teal-500{color:var(--color-teal-500)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-teal-900{color:var(--color-teal-900)}.text-transparent{color:#0000}.text-violet-300{color:var(--color-violet-300)}.text-violet-400{color:var(--color-violet-400)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.text-white\/5{color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.text-white\/5{color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.text-white\/10{color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.text-white\/10{color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.text-white\/25{color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\/30{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\/65{color:#ffffffa6}@supports (color:color-mix(in lab,red,red)){.text-white\/65{color:color-mix(in oklab,var(--color-white) 65%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.text-white\/85{color:color-mix(in oklab,var(--color-white) 85%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.text-white\/95{color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.text-white\/95{color:color-mix(in oklab,var(--color-white) 95%,transparent)}}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-800{color:var(--color-yellow-800)}.text-zinc-700{color:var(--color-zinc-700)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-slate-400{-webkit-text-decoration-color:var(--color-slate-400);text-decoration-color:var(--color-slate-400)}.underline-offset-4{text-underline-offset:4px}.accent-violet-500{accent-color:var(--color-violet-500)}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.opacity-\[0\.2\]{opacity:.2}.opacity-\[0\.03\]{opacity:.03}.opacity-\[0\.06\]{opacity:.06}.opacity-\[0\.15\]{opacity:.15}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-screen{mix-blend-mode:screen}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[-4px_0_24px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:-4px 0 24px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[-8px_0_40px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:-8px 0 40px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-4px_12px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 -4px 12px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-8px_30px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 -8px 30px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-10px_40px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 -10px 40px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-12px_0_0_\#f8fafc\]{--tw-shadow:0 -12px 0 0 var(--tw-shadow-color,#f8fafc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-15px_40px_rgba\(0\,0\,0\,0\.1\)\,inset_0_2px_15px_rgba\(255\,255\,255\,0\.7\)\,inset_0_1px_1px_rgba\(255\,255\,255\,1\)\]{--tw-shadow:0 -15px 40px var(--tw-shadow-color,#0000001a), inset 0 2px 15px var(--tw-shadow-color,#ffffffb3), inset 0 1px 1px var(--tw-shadow-color,#fff);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_2px_rgba\(251\,113\,133\,0\.45\)\,0_6px_0_rgba\(127\,29\,29\,1\)\]{--tw-shadow:0 0 0 2px var(--tw-shadow-color,#fb718573), 0 6px 0 var(--tw-shadow-color,#7f1d1d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_3px_\#c7d2fe\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#c7d2fe);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_4px_rgba\(168\,85\,247\,0\.6\)\]{--tw-shadow:0 0 4px var(--tw-shadow-color,#a855f799);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_4px_rgba\(244\,63\,94\,0\.6\)\]{--tw-shadow:0 0 4px var(--tw-shadow-color,#f43f5e99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(168\,85\,247\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#a855f7cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(244\,63\,94\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#f43f5ecc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(245\,158\,11\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#f59e0bcc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(255\,255\,255\,0\.7\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#ffffffb3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(129\,140\,248\,0\.8\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#818cf8cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(165\,180\,252\,0\.8\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#a5b4fccc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(244\,63\,94\,0\.6\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#f43f5e99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(255\,255\,255\,0\.8\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#fffc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_white\]{--tw-shadow:0 0 8px var(--tw-shadow-color,white);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(16\,185\,129\,0\.15\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#10b98126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(250\,204\,21\,0\.6\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#facc1599);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,146\,60\,0\.5\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fb923c80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,191\,36\,0\.5\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fbbf2480);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,191\,36\,0\.6\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fbbf2499);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(251\,191\,36\,0\.8\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,#fbbf24cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(153\,86\,222\,0\.6\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#9956de99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(192\,132\,252\,0\.9\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#c084fce6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_14px_rgba\(16\,185\,129\,0\.25\)\]{--tw-shadow:0 0 14px var(--tw-shadow-color,#10b98140);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_14px_rgba\(148\,163\,184\,0\.2\)\]{--tw-shadow:0 0 14px var(--tw-shadow-color,#94a3b833);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(16\,185\,129\,0\.2\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#10b98133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(16\,185\,129\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#10b98126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(52\,211\,153\,0\.8\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#34d399cc);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(99\,102\,241\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#6366f126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(244\,63\,94\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#f43f5e26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(245\,158\,11\,0\.15\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#f59e0b26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(251\,191\,36\,0\.25\)\]{--tw-shadow:0 0 15px var(--tw-shadow-color,#fbbf2440);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_16px_rgba\(249\,115\,22\,0\.3\)\]{--tw-shadow:0 0 16px var(--tw-shadow-color,#f973164d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(251\,191\,36\,0\.35\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#fbbf2459);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(255\,139\,139\,0\.6\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#ff8b8b99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(255\,179\,86\,0\.6\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#ffb35699);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_20px_rgba\(245\,158\,11\,0\.15\)\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#f59e0b26);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_20px_rgba\(251\,191\,36\,0\.3\)\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#fbbf244d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_24px_rgba\(250\,204\,21\,0\.6\)\]{--tw-shadow:0 0 24px var(--tw-shadow-color,#facc1599);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_-10px_rgba\(31\,167\,225\,0\.2\)\]{--tw-shadow:0 0 40px -10px var(--tw-shadow-color,#1fa7e133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_-10px_rgba\(138\,63\,211\,0\.2\)\]{--tw-shadow:0 0 40px -10px var(--tw-shadow-color,#8a3fd333);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_50px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 0 50px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_3px_rgba\(168\,85\,247\,0\.1\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#a855f71a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 1px 4px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 1px 4px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(79\,70\,229\,0\.13\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#4f46e521);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(168\,85\,247\,0\.15\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#a855f726);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_15px_-3px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 2px 15px -3px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_8px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 4px 8px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(5\,150\,105\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#0596694d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(14\,165\,233\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#0ea5e94d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(16\,185\,129\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#10b9814d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_10px_rgba\(139\,92\,246\,0\.3\)\]{--tw-shadow:0 4px 10px var(--tw-shadow-color,#8b5cf64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(14\,165\,233\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#0ea5e933);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(16\,185\,129\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#10b98133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(59\,130\,246\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#3b82f633);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(79\,70\,229\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#4f46e54d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(100\,116\,139\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#64748b33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(100\,116\,139\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#64748b4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f733);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f74d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.12\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f71f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(244\,63\,94\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f43f5e33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(244\,63\,94\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f43f5e4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(245\,158\,11\,0\.3\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f59e0b4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(249\,115\,22\,0\.2\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#f9731633);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(43\,191\,123\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#2bbf7b66), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(45\,161\,216\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#2da1d866), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(157\,68\,255\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#9d44ff66), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_15px_rgba\(255\,92\,112\,0\.4\)\,inset_0_1px_1px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:0 4px 15px var(--tw-shadow-color,#ff5c7066), inset 0 1px 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(14\,165\,233\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0ea5e921);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(16\,185\,129\,0\.08\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#10b98114);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(16\,185\,129\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#10b98121);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(168\,85\,247\,0\.3\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#a855f74d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(168\,85\,247\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#a855f721);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(168\,85\,247\,0\.15\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#a855f726);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(249\,115\,22\,0\.13\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#f9731621);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_24px_rgba\(0\,0\,0\,0\.03\)\]{--tw-shadow:0 4px 24px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_5px_12px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 5px 12px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(5\,150\,105\,1\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#059669);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(15\,20\,30\,0\.5\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#0f141e80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(79\,70\,229\,1\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#4f46e5);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_6px_0_rgba\(225\,29\,72\,1\)\]{--tw-shadow:0 6px 0 var(--tw-shadow-color,#e11d48);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(16\,185\,129\,0\.2\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#10b98133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(16\,185\,129\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#10b98140);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(59\,130\,246\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#3b82f640);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(168\,85\,247\,0\.12\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#a855f71f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(168\,85\,247\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#a855f740);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(244\,63\,94\,0\.2\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#f43f5e33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(244\,63\,94\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#f43f5e40);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_16px_rgba\(245\,158\,11\,0\.25\)\]{--tw-shadow:0 8px 16px var(--tw-shadow-color,#f59e0b40);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_20px_-8px_rgba\(79\,70\,229\,0\.5\)\]{--tw-shadow:0 8px 20px -8px var(--tw-shadow-color,#4f46e580);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_-10px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 8px 24px -10px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_-12px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 8px 30px -12px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgb\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(31\,167\,225\,0\.2\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#1fa7e133);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(59\,58\,130\,0\.3\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#3b3a824d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(138\,63\,211\,0\.2\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#8a3fd333);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_10px_-10px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 10px 10px -10px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_40px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 10px 40px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_40px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 10px 40px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_25px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 12px 25px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_30px_-10px_rgba\(79\,70\,229\,0\.5\)\]{--tw-shadow:0 12px 30px -10px var(--tw-shadow-color,#4f46e580);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_15px_25px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 15px 25px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_18px_30px_-20px_rgba\(0\,0\,0\,0\.45\)\]{--tw-shadow:0 18px 30px -20px var(--tw-shadow-color,#00000073);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_30px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 20px 30px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_40px_-15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 20px 40px -15px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_45px_-15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 20px 45px -15px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_50px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 20px 50px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_50px_rgba\(15\,20\,34\,0\.2\)\]{--tw-shadow:0 20px 50px var(--tw-shadow-color,#0f142233);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_60px_-15px_rgba\(168\,85\,247\,0\.15\)\]{--tw-shadow:0 20px 60px -15px var(--tw-shadow-color,#a855f726);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_60px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 20px 60px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_24px_60px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 24px 60px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_24px_64px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow:0 24px 64px var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_25px_60px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 25px 60px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_30px_80px_rgba\(0\,0\,0\,0\.6\)\]{--tw-shadow:0 30px 80px var(--tw-shadow-color,#0009);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_30px_80px_rgba\(0\,0\,0\,0\.8\)\]{--tw-shadow:0 30px 80px var(--tw-shadow-color,#000c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_30px_80px_rgba\(0\,0\,0\,0\.15\)\]{--tw-shadow:0 30px 80px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_0_4px_rgba\(0\,0\,0\,0\.01\)\]{--tw-shadow:2px 0 4px var(--tw-shadow-color,#00000003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_0_4px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:2px 0 4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_0_4px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:2px 0 4px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_-4px_6px_rgba\(0\,0\,0\,0\.05\)\,0_4px_6px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:inset 0 -4px 6px var(--tw-shadow-color,#0000000d), 0 4px 6px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_20px_rgba\(168\,85\,247\,0\.05\)\]{--tw-shadow:inset 0 0 20px var(--tw-shadow-color,#a855f70d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_1px_2px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:inset 0 1px 2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_1px_3px_rgba\(255\,255\,255\,0\.5\)\]{--tw-shadow:inset 0 1px 3px var(--tw-shadow-color,#ffffff80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_2px_4px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:inset 0 2px 4px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_6px_15px_rgba\(255\,255\,255\,0\.4\)\]{--tw-shadow:inset 0 6px 15px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4,.ring-\[4px\]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[\#1FA7E1\]\/20{--tw-shadow-color:#1fa7e133}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#1FA7E1\]\/20{--tw-shadow-color:color-mix(in oklab, oklab(68.7044% -.0807821 -.10979/.2) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#1FA7E1\]\/30{--tw-shadow-color:#1fa7e14d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#1FA7E1\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(68.7044% -.0807821 -.10979/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#1FA7E1\]\/40{--tw-shadow-color:#1fa7e166}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#1FA7E1\]\/40{--tw-shadow-color:color-mix(in oklab, oklab(68.7044% -.0807821 -.10979/.4) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#8A3FD3\]\/30{--tw-shadow-color:#8a3fd34d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#8A3FD3\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(54.1025% .117281 -.181162/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#8A3FD3\]\/40{--tw-shadow-color:#8a3fd366}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#8A3FD3\]\/40{--tw-shadow-color:color-mix(in oklab, oklab(54.1025% .117281 -.181162/.4) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#8B5CF6\]\/20{--tw-shadow-color:#8b5cf633}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#8B5CF6\]\/20{--tw-shadow-color:color-mix(in oklab, oklab(60.5631% .0845415 -.201932/.2) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#75D06A\]\/30{--tw-shadow-color:#75d06a4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#75D06A\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(77.7281% -.128439 .101669/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#9956DE\]\/20{--tw-shadow-color:#9956de33}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#9956DE\]\/20{--tw-shadow-color:color-mix(in oklab, oklab(59.4745% .111053 -.167638/.2) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#9956DE\]\/30{--tw-shadow-color:#9956de4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#9956DE\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(59.4745% .111053 -.167638/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#FB96BB\]\/30{--tw-shadow-color:#fb96bb4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#FB96BB\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(78.801% .12777 -.00670064/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#FF8B8B\]\/30{--tw-shadow-color:#ff8b8b4d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#FF8B8B\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(76.3223% .131566 .050208/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[\#FFB356\]\/30{--tw-shadow-color:#ffb3564d}@supports (color:color-mix(in lab,red,red)){.shadow-\[\#FFB356\]\/30{--tw-shadow-color:color-mix(in oklab, oklab(82.2219% .0499055 .130321/.3) var(--tw-shadow-alpha), transparent)}}.shadow-\[rgba\(124\,58\,237\,0\.05\)_0px_0px_30px_inset\]{--tw-shadow-color:#7c3aed0d}@supports (color:color-mix(in lab,red,red)){.shadow-\[rgba\(124\,58\,237\,0\.05\)_0px_0px_30px_inset\]{--tw-shadow-color:color-mix(in oklab, #7c3aed0d 0px 0px 30px inset var(--tw-shadow-alpha), transparent)}}.shadow-blue-200\/50{--tw-shadow-color:#bedbff80}@supports (color:color-mix(in lab,red,red)){.shadow-blue-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-500\/20{--tw-shadow-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.shadow-blue-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-200\/50{--tw-shadow-color:#a4f4cf80}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-500\/20{--tw-shadow-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-500\/25{--tw-shadow-color:#00bb7f40}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-500\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-500) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-emerald-500\/30{--tw-shadow-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.shadow-emerald-500\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-emerald-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-100{--tw-shadow-color:oklch(93% .034 272.788)}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-100{--tw-shadow-color:color-mix(in oklab, var(--color-indigo-100) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-100\/20{--tw-shadow-color:#e0e7ff33}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-100\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-100) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-200{--tw-shadow-color:oklch(87% .065 274.039)}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-200{--tw-shadow-color:color-mix(in oklab, var(--color-indigo-200) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-200\/50{--tw-shadow-color:#c7d2ff80}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-500\/10{--tw-shadow-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-500\/20{--tw-shadow-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-indigo-500\/25{--tw-shadow-color:#625fff40}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-500) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-100{--tw-shadow-color:oklch(94.6% .033 307.174)}@supports (color:color-mix(in lab,red,red)){.shadow-purple-100{--tw-shadow-color:color-mix(in oklab, var(--color-purple-100) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200{--tw-shadow-color:oklch(90.2% .063 306.703)}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200{--tw-shadow-color:color-mix(in oklab, var(--color-purple-200) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200\/50{--tw-shadow-color:#e9d5ff80}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200\/60{--tw-shadow-color:#e9d5ff99}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200\/60{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-200) 60%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-500\/20{--tw-shadow-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.shadow-purple-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-600\/25{--tw-shadow-color:#9810fa40}@supports (color:color-mix(in lab,red,red)){.shadow-purple-600\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-600) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-900\/50{--tw-shadow-color:#59168b80}@supports (color:color-mix(in lab,red,red)){.shadow-purple-900\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-900) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-900\/10{--tw-shadow-color:#82181a1a}@supports (color:color-mix(in lab,red,red)){.shadow-red-900\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-900) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-200\/50{--tw-shadow-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.shadow-rose-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-rose-500\/20{--tw-shadow-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.shadow-rose-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-rose-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-sky-200{--tw-shadow-color:oklch(89.4% .057 293.283)}@supports (color:color-mix(in lab,red,red)){.shadow-sky-200{--tw-shadow-color:color-mix(in oklab, var(--color-violet-200) var(--tw-shadow-alpha), transparent)}}.shadow-sky-500\/20{--tw-shadow-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.shadow-sky-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-violet-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-100{--tw-shadow-color:oklch(96.8% .007 247.896)}@supports (color:color-mix(in lab,red,red)){.shadow-slate-100{--tw-shadow-color:color-mix(in oklab, var(--color-slate-100) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200{--tw-shadow-color:oklch(92.9% .013 255.508)}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200{--tw-shadow-color:color-mix(in oklab, var(--color-slate-200) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200\/40{--tw-shadow-color:#e2e8f066}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-200) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200\/50{--tw-shadow-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-900\/10{--tw-shadow-color:#0f172b1a}@supports (color:color-mix(in lab,red,red)){.shadow-slate-900\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-900) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-900\/\[0\.04\]{--tw-shadow-color:#0f172b0a}@supports (color:color-mix(in lab,red,red)){.shadow-slate-900\/\[0\.04\]{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-900) 4%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[\#1FA7E1\]\/35{--tw-ring-color:oklab(68.7044% -.0807821 -.10979/.35)}.ring-\[\#8B5CF6\]\/10{--tw-ring-color:oklab(60.5631% .0845415 -.201932/.1)}.ring-\[\#9956DE\]\/50{--tw-ring-color:oklab(59.4745% .111053 -.167638/.5)}.ring-\[color-mix\(in_srgb\,var\(--chart-2\)_40\%\,transparent\)\]{--tw-ring-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.ring-\[color-mix\(in_srgb\,var\(--chart-2\)_40\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--chart-2) 40%,transparent)}}.ring-\[color-mix\(in_srgb\,var\(--chart-3\)_40\%\,transparent\)\]{--tw-ring-color:var(--chart-3)}@supports (color:color-mix(in lab,red,red)){.ring-\[color-mix\(in_srgb\,var\(--chart-3\)_40\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--chart-3) 40%,transparent)}}.ring-\[color-mix\(in_srgb\,var\(--chart-4\)_40\%\,transparent\)\]{--tw-ring-color:var(--chart-4)}@supports (color:color-mix(in lab,red,red)){.ring-\[color-mix\(in_srgb\,var\(--chart-4\)_40\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--chart-4) 40%,transparent)}}.ring-green-300{--tw-ring-color:var(--color-green-300)}.ring-primary{--tw-ring-color:var(--primary)}.ring-red-300{--tw-ring-color:var(--color-red-300)}.ring-red-500{--tw-ring-color:var(--color-red-500)}.ring-ring\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-rose-300{--tw-ring-color:var(--color-rose-300)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-sky-50{--tw-ring-color:var(--color-violet-50)}.ring-slate-100{--tw-ring-color:var(--color-slate-100)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.ring-slate-800{--tw-ring-color:var(--color-slate-800)}.ring-white{--tw-ring-color:var(--color-white)}.ring-white\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.ring-white\/10{--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.ring-white\/20{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.ring-white\/20{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[4px\]{--tw-ring-offset-width:4px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[\#0B0F19\]{--tw-ring-offset-color:#0b0f19}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[2px\]{--tw-blur:blur(2px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[32px\]{--tw-blur:blur(32px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[60px\]{--tw-blur:blur(60px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[100px\]{--tw-blur:blur(100px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[140px\]{--tw-blur:blur(140px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-\[160px\]{--tw-blur:blur(160px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-md{--tw-blur:blur(var(--blur-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.brightness-105{--tw-brightness:brightness(105%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.contrast-50{--tw-contrast:contrast(50%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[-2px_3px_0px_rgba\(0\,0\,0\,0\.8\)\]{--tw-drop-shadow-size:drop-shadow(-2px 3px 0px var(--tw-drop-shadow-color,#000c));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_8px_rgba\(31\,167\,225\,0\.5\)\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#1fa7e180));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_8px_rgba\(138\,63\,211\,0\.5\)\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#8a3fd380));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_8px_rgba\(251\,191\,36\,0\.9\)\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#fbbf24e6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(245\,158\,11\,0\.6\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#f59e0b99));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(245\,158\,11\,0\.8\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#f59e0bcc));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(250\,204\,21\,0\.9\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#facc15e6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_12px_rgba\(255\,255\,255\,0\.4\)\]{--tw-drop-shadow-size:drop-shadow(0 0 12px var(--tw-drop-shadow-color,#fff6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_15px_rgba\(252\,211\,77\,0\.8\)\]{--tw-drop-shadow-size:drop-shadow(0 0 15px var(--tw-drop-shadow-color,#fcd34dcc));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_0_25px_rgba\(252\,211\,77\,0\.9\)\]{--tw-drop-shadow-size:drop-shadow(0 0 25px var(--tw-drop-shadow-color,#fcd34de6));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_10px_20px_rgba\(0\,0\,0\,0\.15\)\]{--tw-drop-shadow-size:drop-shadow(0 10px 20px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_12px_15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-drop-shadow-size:drop-shadow(0 12px 15px var(--tw-drop-shadow-color,#0000004d));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_15px_15px_rgba\(0\,0\,0\,0\.3\)\]{--tw-drop-shadow-size:drop-shadow(0 15px 15px var(--tw-drop-shadow-color,#0000004d));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.saturate-50{--tw-saturate:saturate(50%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[12px\]{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[16px\]{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[24px\]{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.delay-75{transition-delay:75ms}.duration-0{--tw-duration:0s;transition-duration:0s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.\[background\:linear-gradient\(var\(--grid-color\)_0_1px\,_transparent_1px_var\(--beam-size\)\)_50\%_-0\.5px_\/var\(--beam-size\)_var\(--beam-size\)\,linear-gradient\(90deg\,_var\(--grid-color\)_0_1px\,_transparent_1px_var\(--beam-size\)\)_50\%_50\%_\/var\(--beam-size\)_var\(--beam-size\)\]{background:linear-gradient(var(--grid-color) 0 1px,transparent 1px var(--beam-size)) 50% -.5px /var(--beam-size) var(--beam-size),linear-gradient(90deg,var(--grid-color) 0 1px,transparent 1px var(--beam-size)) 50% 50% /var(--beam-size) var(--beam-size)}.\[background\:var\(--background\)\]{background:var(--background)}.\[clip-path\:inset\(0\)\]{clip-path:inset(0)}.\[perspective\:var\(--perspective\)\]{perspective:var(--perspective)}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[transform-style\:preserve-3d\]{transform-style:preserve-3d}.ring-inset{--tw-ring-inset:inset}.group-focus-within\:text-\[\#4f46e5\]:is(:where(.group):focus-within *){color:#4f46e5}.group-focus-within\:text-\[\#9956DE\]:is(:where(.group):focus-within *){color:#9956de}.group-focus-within\:text-indigo-500:is(:where(.group):focus-within *){color:var(--color-indigo-500)}.group-focus-within\:text-indigo-600:is(:where(.group):focus-within *){color:var(--color-indigo-600)}.group-focus-within\/input\:text-indigo-500:is(:where(.group\/input):focus-within *){color:var(--color-indigo-500)}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\:left-\[150\%\]:is(:where(.group):hover *){left:150%}.group-hover\:-translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-x-4:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-4:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-y-1:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-y-2:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:-translate-y-4:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-y-\[-3px\]:is(:where(.group):hover *){--tw-translate-y:-3px;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-150:is(:where(.group):hover *){--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-\[1\.2\]:is(:where(.group):hover *){scale:1.2}.group-hover\:scale-\[1\.3\]:is(:where(.group):hover *){scale:1.3}.group-hover\:scale-\[1\.4\]:is(:where(.group):hover *){scale:1.4}.group-hover\:scale-\[1\.05\]:is(:where(.group):hover *){scale:1.05}.group-hover\:scale-\[1\.6\]:is(:where(.group):hover *){scale:1.6}.group-hover\:scale-\[1\.8\]:is(:where(.group):hover *){scale:1.8}.group-hover\:-rotate-6:is(:where(.group):hover *){rotate:-6deg}.group-hover\:-rotate-12:is(:where(.group):hover *){rotate:-12deg}.group-hover\:rotate-3:is(:where(.group):hover *){rotate:3deg}.group-hover\:rotate-6:is(:where(.group):hover *){rotate:6deg}.group-hover\:rotate-12:is(:where(.group):hover *){rotate:12deg}.group-hover\:rotate-90:is(:where(.group):hover *){rotate:90deg}.group-hover\:rotate-180:is(:where(.group):hover *){rotate:180deg}.group-hover\:rotate-\[25deg\]:is(:where(.group):hover *){rotate:25deg}.group-hover\:animate-\[shimmer_1\.5s_ease-out\]:is(:where(.group):hover *){animation:1.5s ease-out shimmer}.group-hover\:border-amber-200:is(:where(.group):hover *){border-color:var(--color-amber-200)}.group-hover\:border-amber-400:is(:where(.group):hover *){border-color:var(--color-amber-400)}.group-hover\:border-emerald-200:is(:where(.group):hover *){border-color:var(--color-emerald-200)}.group-hover\:border-indigo-400:is(:where(.group):hover *){border-color:var(--color-indigo-400)}.group-hover\:border-purple-100:is(:where(.group):hover *){border-color:var(--color-purple-100)}.group-hover\:border-purple-200:is(:where(.group):hover *){border-color:var(--color-purple-200)}.group-hover\:border-rose-200:is(:where(.group):hover *){border-color:var(--color-rose-200)}.group-hover\:border-sky-200:is(:where(.group):hover *){border-color:var(--color-violet-200)}.group-hover\:border-sky-300:is(:where(.group):hover *){border-color:var(--color-violet-300)}.group-hover\:border-slate-300:is(:where(.group):hover *){border-color:var(--color-slate-300)}.group-hover\:border-teal-400:is(:where(.group):hover *){border-color:var(--color-teal-400)}.group-hover\:border-r-amber-400:is(:where(.group):hover *){border-right-color:var(--color-amber-400)}.group-hover\:border-r-teal-400:is(:where(.group):hover *){border-right-color:var(--color-teal-400)}.group-hover\:border-b-amber-400:is(:where(.group):hover *){border-bottom-color:var(--color-amber-400)}.group-hover\:border-b-teal-400:is(:where(.group):hover *){border-bottom-color:var(--color-teal-400)}.group-hover\:bg-\[\#9333ea\]:is(:where(.group):hover *){background-color:#9333ea}.group-hover\:bg-\[\#a855f7\]:is(:where(.group):hover *){background-color:#a855f7}.group-hover\:bg-amber-50:is(:where(.group):hover *){background-color:var(--color-amber-50)}.group-hover\:bg-amber-100\/50:is(:where(.group):hover *){background-color:#fef3c680}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-amber-100\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-amber-100) 50%,transparent)}}.group-hover\:bg-black\/20:is(:where(.group):hover *){background-color:#0003}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-black\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.group-hover\:bg-blue-100:is(:where(.group):hover *){background-color:var(--color-blue-100)}.group-hover\:bg-emerald-50:is(:where(.group):hover *){background-color:var(--color-emerald-50)}.group-hover\:bg-emerald-100:is(:where(.group):hover *){background-color:var(--color-emerald-100)}.group-hover\:bg-indigo-600:is(:where(.group):hover *){background-color:var(--color-indigo-600)}.group-hover\:bg-purple-100:is(:where(.group):hover *){background-color:var(--color-purple-100)}.group-hover\:bg-slate-50:is(:where(.group):hover *){background-color:var(--color-slate-50)}.group-hover\:bg-slate-50\/90:is(:where(.group):hover *){background-color:#f8fafce6}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-slate-50\/90:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-slate-50) 90%,transparent)}}.group-hover\:bg-slate-400:is(:where(.group):hover *){background-color:var(--color-slate-400)}.group-hover\:bg-slate-700:is(:where(.group):hover *){background-color:var(--color-slate-700)}.group-hover\:bg-teal-50:is(:where(.group):hover *){background-color:var(--color-teal-50)}.group-hover\:bg-white\/20:is(:where(.group):hover *){background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-white\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.group-hover\:bg-white\/30:is(:where(.group):hover *){background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-white\/30:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.group-hover\:p-2\.5:is(:where(.group):hover *){padding:calc(var(--spacing) * 2.5)}.group-hover\:text-\[\#1FA7E1\]:is(:where(.group):hover *){color:#1fa7e1}.group-hover\:text-\[\#1e293b\]:is(:where(.group):hover *){color:#1e293b}.group-hover\:text-\[\#4f46e5\]:is(:where(.group):hover *){color:#4f46e5}.group-hover\:text-\[\#6ED1CF\]:is(:where(.group):hover *){color:#6ed1cf}.group-hover\:text-\[\#7274ED\]:is(:where(.group):hover *){color:#7274ed}.group-hover\:text-\[\#9333ea\]:is(:where(.group):hover *){color:#9333ea}.group-hover\:text-\[\#9956DE\]:is(:where(.group):hover *){color:#9956de}.group-hover\:text-\[\#FFB356\]:is(:where(.group):hover *){color:#ffb356}.group-hover\:text-\[\#a855f7\]:is(:where(.group):hover *){color:#a855f7}.group-hover\:text-amber-500:is(:where(.group):hover *){color:var(--color-amber-500)}.group-hover\:text-blue-700:is(:where(.group):hover *){color:var(--color-blue-700)}.group-hover\:text-emerald-500:is(:where(.group):hover *){color:var(--color-emerald-500)}.group-hover\:text-emerald-600:is(:where(.group):hover *){color:var(--color-emerald-600)}.group-hover\:text-emerald-700:is(:where(.group):hover *){color:var(--color-emerald-700)}.group-hover\:text-indigo-600:is(:where(.group):hover *){color:var(--color-indigo-600)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--primary)}.group-hover\:text-purple-600:is(:where(.group):hover *){color:var(--color-purple-600)}.group-hover\:text-rose-500:is(:where(.group):hover *){color:var(--color-rose-500)}.group-hover\:text-rose-600:is(:where(.group):hover *){color:var(--color-rose-600)}.group-hover\:text-sky-500:is(:where(.group):hover *){color:var(--color-violet-500)}.group-hover\:text-sky-600:is(:where(.group):hover *){color:var(--color-violet-600)}.group-hover\:text-slate-700:is(:where(.group):hover *){color:var(--color-slate-700)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-90:is(:where(.group):hover *){opacity:.9}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:shadow-\[0_-20px_50px_rgba\(0\,0\,0\,0\.15\)\,inset_0_2px_15px_rgba\(255\,255\,255\,0\.8\)\,inset_0_1px_1px_rgba\(255\,255\,255\,1\)\]:is(:where(.group):hover *){--tw-shadow:0 -20px 50px var(--tw-shadow-color,#00000026), inset 0 2px 15px var(--tw-shadow-color,#fffc), inset 0 1px 1px var(--tw-shadow-color,#fff);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:shadow-\[0_24px_40px_-15px_rgba\(0\,0\,0\,0\.5\)\]:is(:where(.group):hover *){--tw-shadow:0 24px 40px -15px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:shadow-md:is(:where(.group):hover *){--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:duration-\[800ms\]:is(:where(.group):hover *){--tw-duration:.8s;transition-duration:.8s}.group-hover\/avatar\:scale-110:is(:where(.group\/avatar):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\/btn\:translate-x-0\.5:is(:where(.group\/btn):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\/btn\:-translate-y-0\.5:is(:where(.group\/btn):hover *){--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\/cal\:bg-slate-100:is(:where(.group\/cal):hover *){background-color:var(--color-slate-100)}.group-hover\/drop\:bg-purple-50:is(:where(.group\/drop):hover *){background-color:var(--color-purple-50)}.group-hover\/drop\:text-purple-500:is(:where(.group\/drop):hover *){color:var(--color-purple-500)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}.group-hover\/toggle\:block:is(:where(.group\/toggle):hover *){display:block}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}.peer-checked\:bg-\[\#4f46e5\]:is(:where(.peer):checked~*){background-color:#4f46e5}.peer-checked\:font-bold:is(:where(.peer):checked~*){--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.peer-checked\:text-\[\#1e293b\]:is(:where(.peer):checked~*){color:#1e293b}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-\[\#94a3b8\]::placeholder{color:#94a3b8}.placeholder\:text-\[\#64748b\]::placeholder{color:#64748b}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-2:before{content:var(--tw-content);top:calc(var(--spacing) * 2)}.before\:bottom-\[-16px\]:before{content:var(--tw-content);bottom:-16px}.before\:bottom-\[-24px\]:before{content:var(--tw-content);bottom:-24px}.before\:left-1\.5:before{content:var(--tw-content);left:calc(var(--spacing) * 1.5)}.before\:left-2:before{content:var(--tw-content);left:calc(var(--spacing) * 2)}.before\:w-\[1px\]:before{content:var(--tw-content);width:1px}.before\:w-\[2px\]:before{content:var(--tw-content);width:2px}.before\:bg-slate-100:before{content:var(--tw-content);background-color:var(--color-slate-100)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing) * 4)}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing) * 4)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);border-color:var(--color-gray-300)}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:before\:hidden:last-child:before{content:var(--tw-content);display:none}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.focus-within\:border-\[\#a855f7\]:focus-within{border-color:#a855f7}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-4:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-\[\#a855f7\]\/10:focus-within{--tw-ring-color:oklab(62.6846% .129701 -.193012/.1)}.focus-within\:ring-indigo-500\/20:focus-within{--tw-ring-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.focus-within\:ring-indigo-500\/20:focus-within{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}@media(hover:hover){.hover\:z-10:hover{z-index:10}.hover\:h-20:hover{height:calc(var(--spacing) * 20)}.hover\:w-24:hover{width:calc(var(--spacing) * 24)}.hover\:-translate-x-1:hover{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-x-4:hover{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-2:hover{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-\[1px\]:hover{--tw-translate-y: -1px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.01\]:hover{scale:1.01}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:rotate-0:hover{rotate:0deg}.hover\:rotate-3:hover{rotate:3deg}.hover\:gap-2:hover{gap:calc(var(--spacing) * 2)}.hover\:border-\[\#1FA7E1\]:hover{border-color:#1fa7e1}.hover\:border-\[\#1FA7E1\]\/50:hover{border-color:#1fa7e180}.hover\:border-\[\#1a85a4\]\/40:hover{border-color:#1a85a466}.hover\:border-\[\#8A3FD3\]\/50:hover{border-color:#8a3fd380}.hover\:border-\[\#94a3b8\]:hover{border-color:#94a3b8}.hover\:border-\[\#818cf8\]:hover{border-color:#818cf8}.hover\:border-\[\#9956DE\]:hover{border-color:#9956de}.hover\:border-\[\#9956DE\]\/30:hover{border-color:#9956de4d}.hover\:border-\[\#9956DE\]\/50:hover{border-color:#9956de80}.hover\:border-\[\#9956DE\]\/60:hover{border-color:#9956de99}.hover\:border-\[\#F08386\]:hover{border-color:#f08386}.hover\:border-\[\#F08386\]\/60:hover{border-color:#f0838699}.hover\:border-\[\#a855f7\]:hover{border-color:#a855f7}.hover\:border-\[\#bbf7d0\]:hover{border-color:#bbf7d0}.hover\:border-\[\#bfdbfe\]:hover{border-color:#bfdbfe}.hover\:border-\[\#cbd5e1\]:hover{border-color:#cbd5e1}.hover\:border-\[\#d1cec6\]:hover{border-color:#d1cec6}.hover\:border-\[\#d8b4fe\]:hover{border-color:#d8b4fe}.hover\:border-\[\#dde3eb\]:hover{border-color:#dde3eb}.hover\:border-\[\#e2e8f0\]:hover{border-color:#e2e8f0}.hover\:border-\[\#fecdd3\]:hover{border-color:#fecdd3}.hover\:border-\[\#fed7aa\]:hover{border-color:#fed7aa}.hover\:border-amber-200:hover{border-color:var(--color-amber-200)}.hover\:border-amber-200\/60:hover{border-color:#fee68599}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-200\/60:hover{border-color:color-mix(in oklab,var(--color-amber-200) 60%,transparent)}}.hover\:border-blue-200:hover{border-color:var(--color-blue-200)}.hover\:border-emerald-100:hover{border-color:var(--color-emerald-100)}.hover\:border-emerald-200:hover{border-color:var(--color-emerald-200)}.hover\:border-emerald-300:hover{border-color:var(--color-emerald-300)}.hover\:border-indigo-100:hover{border-color:var(--color-indigo-100)}.hover\:border-indigo-200:hover{border-color:var(--color-indigo-200)}.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:border-indigo-600:hover{border-color:var(--color-indigo-600)}.hover\:border-purple-100:hover{border-color:var(--color-purple-100)}.hover\:border-purple-200:hover{border-color:var(--color-purple-200)}.hover\:border-purple-400:hover{border-color:var(--color-purple-400)}.hover\:border-rose-100:hover{border-color:var(--color-rose-100)}.hover\:border-rose-200:hover{border-color:var(--color-rose-200)}.hover\:border-rose-300:hover{border-color:var(--color-rose-300)}.hover\:border-sky-200:hover{border-color:var(--color-violet-200)}.hover\:border-sky-300:hover{border-color:var(--color-violet-300)}.hover\:border-slate-200:hover{border-color:var(--color-slate-200)}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:border-violet-100:hover{border-color:var(--color-violet-100)}.hover\:bg-\[\#1C96CB\]:hover{background-color:#1c96cb}.hover\:bg-\[\#1FA7E1\]\/5:hover{background-color:#1fa7e10d}.hover\:bg-\[\#1a95c9\]:hover{background-color:#1a95c9}.hover\:bg-\[\#4f46e5\]:hover{background-color:#4f46e5}.hover\:bg-\[\#5AB84E\]:hover{background-color:#5ab84e}.hover\:bg-\[\#6ab359\]:hover{background-color:#6ab359}.hover\:bg-\[\#6b4494\]:hover{background-color:#6b4494}.hover\:bg-\[\#7b35c0\]:hover{background-color:#7b35c0}.hover\:bg-\[\#7c3aed\]:hover{background-color:#7c3aed}.hover\:bg-\[\#008f5d\]:hover{background-color:#008f5d}.hover\:bg-\[\#8A3FD3\]\/5:hover{background-color:#8a3fd30d}.hover\:bg-\[\#8A4DCA\]:hover{background-color:#8a4dca}.hover\:bg-\[\#8b5cf6\]:hover{background-color:#8b5cf6}.hover\:bg-\[\#8b45d1\]:hover{background-color:#8b45d1}.hover\:bg-\[\#126b84\]:hover{background-color:#126b84}.hover\:bg-\[\#3730a3\]:hover{background-color:#3730a3}.hover\:bg-\[\#4338ca\]:hover{background-color:#4338ca}.hover\:bg-\[\#6366f1\]:hover{background-color:#6366f1}.hover\:bg-\[\#8544c7\]:hover{background-color:#8544c7}.hover\:bg-\[\#8850CE\]:hover{background-color:#8850ce}.hover\:bg-\[\#9333ea\]:hover{background-color:#9333ea}.hover\:bg-\[\#9956DE\]:hover{background-color:#9956de}.hover\:bg-\[\#9956DE\]\/5:hover{background-color:#9956de0d}.hover\:bg-\[\#9956DE\]\/6:hover{background-color:#9956de0f}.hover\:bg-\[\#9956DE\]\/8:hover{background-color:#9956de14}.hover\:bg-\[\#9956DE\]\/12:hover{background-color:#9956de1f}.hover\:bg-\[\#9956DE\]\/20:hover{background-color:#9956de33}.hover\:bg-\[\#059669\]:hover{background-color:#059669}.hover\:bg-\[\#283042\]:hover{background-color:#283042}.hover\:bg-\[\#334155\]:hover{background-color:#334155}.hover\:bg-\[\#F08386\]\/12:hover{background-color:#f083861f}.hover\:bg-\[\#FA7DA9\]:hover{background-color:#fa7da9}.hover\:bg-\[\#FF7373\]:hover{background-color:#ff7373}.hover\:bg-\[\#dde3eb\]:hover{background-color:#dde3eb}.hover\:bg-\[\#e0e7ff\]:hover{background-color:#e0e7ff}.hover\:bg-\[\#edf1f7\]:hover{background-color:#edf1f7}.hover\:bg-\[\#edf1f7\]\/50:hover{background-color:#edf1f780}.hover\:bg-\[\#f0fbff\]:hover{background-color:#f0fbff}.hover\:bg-\[\#f1f5f9\]:hover{background-color:#f1f5f9}.hover\:bg-\[\#f5f3ff\]:hover{background-color:#f5f3ff}.hover\:bg-\[\#f7f9fc\]:hover{background-color:#f7f9fc}.hover\:bg-\[\#f8fafc\]:hover{background-color:#f8fafc}.hover\:bg-\[\#fafbff\]:hover{background-color:#fafbff}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-200\/50:hover{background-color:#fee68580}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-200\/50:hover{background-color:color-mix(in oklab,var(--color-amber-200) 50%,transparent)}}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-black\/40:hover{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/40:hover{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-emerald-50:hover{background-color:var(--color-emerald-50)}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-400:hover{background-color:var(--color-emerald-400)}.hover\:bg-emerald-600:hover{background-color:var(--color-emerald-600)}.hover\:bg-emerald-700:hover{background-color:var(--color-emerald-700)}.hover\:bg-indigo-50:hover{background-color:var(--color-indigo-50)}.hover\:bg-indigo-100:hover{background-color:var(--color-indigo-100)}.hover\:bg-indigo-600:hover{background-color:var(--color-indigo-600)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-primary:hover,.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}.hover\:bg-purple-50\/10:hover{background-color:#faf5ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/10:hover{background-color:color-mix(in oklab,var(--color-purple-50) 10%,transparent)}}.hover\:bg-purple-50\/20:hover{background-color:#faf5ff33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/20:hover{background-color:color-mix(in oklab,var(--color-purple-50) 20%,transparent)}}.hover\:bg-purple-50\/30:hover{background-color:#faf5ff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/30:hover{background-color:color-mix(in oklab,var(--color-purple-50) 30%,transparent)}}.hover\:bg-purple-50\/40:hover{background-color:#faf5ff66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-50\/40:hover{background-color:color-mix(in oklab,var(--color-purple-50) 40%,transparent)}}.hover\:bg-purple-100:hover{background-color:var(--color-purple-100)}.hover\:bg-purple-200:hover{background-color:var(--color-purple-200)}.hover\:bg-purple-500:hover{background-color:var(--color-purple-500)}.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\:bg-purple-900\/40:hover{background-color:#59168b66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-purple-900\/40:hover{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}.hover\:bg-rose-100:hover{background-color:var(--color-rose-100)}.hover\:bg-rose-500:hover{background-color:var(--color-rose-500)}.hover\:bg-rose-500\/10:hover{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-rose-500\/10:hover{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-rose-700:hover{background-color:var(--color-rose-700)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-sky-50:hover{background-color:var(--color-violet-50)}.hover\:bg-sky-50\/80:hover{background-color:#f5f3ffcc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sky-50\/80:hover{background-color:color-mix(in oklab,var(--color-violet-50) 80%,transparent)}}.hover\:bg-sky-300:hover{background-color:var(--color-violet-300)}.hover\:bg-sky-500:hover{background-color:var(--color-violet-500)}.hover\:bg-sky-600:hover{background-color:var(--color-violet-600)}.hover\:bg-sky-700:hover{background-color:var(--color-violet-700)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-50\/50:hover{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/50:hover{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.hover\:bg-slate-50\/60:hover{background-color:#f8fafc99}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/60:hover{background-color:color-mix(in oklab,var(--color-slate-50) 60%,transparent)}}.hover\:bg-slate-50\/70:hover{background-color:#f8fafcb3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/70:hover{background-color:color-mix(in oklab,var(--color-slate-50) 70%,transparent)}}.hover\:bg-slate-50\/80:hover{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/80:hover{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-100\/50:hover{background-color:#f1f5f980}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-100\/50:hover{background-color:color-mix(in oklab,var(--color-slate-100) 50%,transparent)}}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)}.hover\:bg-slate-200\/50:hover{background-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-200\/50:hover{background-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.hover\:bg-slate-200\/70:hover{background-color:#e2e8f0b3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-200\/70:hover{background-color:color-mix(in oklab,var(--color-slate-200) 70%,transparent)}}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-violet-100:hover{background-color:var(--color-violet-100)}.hover\:bg-violet-500:hover{background-color:var(--color-violet-500)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.hover\:bg-white\/50:hover{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/50:hover{background-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.hover\:bg-white\/60:hover{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/60:hover{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.hover\:bg-white\/80:hover{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/80:hover{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.hover\:bg-white\/90:hover{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/90:hover{background-color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.hover\:\!from-\[\#8FE4DA\]:hover{--tw-gradient-from:#8fe4da!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.hover\:from-\[\#9333ea\]:hover{--tw-gradient-from:#9333ea;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-\[\#FFA500\]:hover{--tw-gradient-from:orange;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-amber-600:hover{--tw-gradient-from:var(--color-amber-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-purple-500:hover{--tw-gradient-from:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-purple-700:hover{--tw-gradient-from:var(--color-purple-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-sky-700:hover{--tw-gradient-from:var(--color-violet-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:\!to-\[\#49BDEB\]:hover{--tw-gradient-to:#49bdeb!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))!important}.hover\:to-\[\#7e22ce\]:hover{--tw-gradient-to:#7e22ce;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-\[\#FF7F00\]:hover{--tw-gradient-to:#ff7f00;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-orange-600:hover{--tw-gradient-to:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-pink-400:hover{--tw-gradient-to:var(--color-pink-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-purple-600:hover{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-sky-600:hover{--tw-gradient-to:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-\[\#0a1628\]:hover{color:#0a1628}.hover\:text-\[\#1e293b\]:hover{color:#1e293b}.hover\:text-\[\#4f46e5\]:hover{color:#4f46e5}.hover\:text-\[\#5a6578\]:hover{color:#5a6578}.hover\:text-\[\#7c3aed\]:hover{color:#7c3aed}.hover\:text-\[\#3730a3\]:hover{color:#3730a3}.hover\:text-\[\#9333ea\]:hover{color:#9333ea}.hover\:text-\[\#9956DE\]:hover{color:#9956de}.hover\:text-\[\#64748b\]:hover{color:#64748b}.hover\:text-\[\#F08386\]:hover{color:#f08386}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-amber-500:hover{color:var(--color-amber-500)}.hover\:text-amber-600:hover{color:var(--color-amber-600)}.hover\:text-emerald-500:hover{color:var(--color-emerald-500)}.hover\:text-emerald-600:hover{color:var(--color-emerald-600)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-indigo-300:hover{color:var(--color-indigo-300)}.hover\:text-indigo-500:hover{color:var(--color-indigo-500)}.hover\:text-indigo-600:hover{color:var(--color-indigo-600)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-purple-600:hover{color:var(--color-purple-600)}.hover\:text-purple-700:hover{color:var(--color-purple-700)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-rose-300:hover{color:var(--color-rose-300)}.hover\:text-rose-500:hover{color:var(--color-rose-500)}.hover\:text-rose-600:hover{color:var(--color-rose-600)}.hover\:text-rose-700:hover{color:var(--color-rose-700)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-sky-300:hover{color:var(--color-violet-300)}.hover\:text-sky-500:hover{color:var(--color-violet-500)}.hover\:text-sky-600:hover{color:var(--color-violet-600)}.hover\:text-sky-700:hover{color:var(--color-violet-700)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/80:hover{color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/80:hover{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_2px_8px_rgba\(168\,85\,247\,0\.1\)\]:hover{--tw-shadow:0 2px 8px var(--tw-shadow-color,#a855f71a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_2px_8px_rgba\(168\,85\,247\,0\.08\)\]:hover{--tw-shadow:0 2px 8px var(--tw-shadow-color,#a855f714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_2px_10px_rgba\(0\,0\,0\,0\.04\)\]:hover{--tw-shadow:0 2px 10px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_4px_12px_rgba\(168\,85\,247\,0\.08\)\]:hover{--tw-shadow:0 4px 12px var(--tw-shadow-color,#a855f714);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.2\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.04\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.06\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(14\,165\,233\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0ea5e94d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(16\,185\,129\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#10b9814d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(59\,130\,246\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(168\,85\,247\,0\.1\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#a855f71a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(168\,85\,247\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#a855f74d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(168\,85\,247\,0\.4\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#a855f766);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(249\,115\,22\,0\.3\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#f973164d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_24px_rgba\(16\,185\,129\,0\.35\)\]:hover{--tw-shadow:0 12px 24px var(--tw-shadow-color,#10b98159);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_24px_rgba\(59\,130\,246\,0\.35\)\]:hover{--tw-shadow:0 12px 24px var(--tw-shadow-color,#3b82f659);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_24px_rgba\(168\,85\,247\,0\.35\)\]:hover{--tw-shadow:0 12px 24px var(--tw-shadow-color,#a855f759);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_45px_rgba\(31\,167\,225\,0\.4\)\]:hover{--tw-shadow:0 12px 45px var(--tw-shadow-color,#1fa7e166);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_12px_45px_rgba\(138\,63\,211\,0\.4\)\]:hover{--tw-shadow:0 12px 45px var(--tw-shadow-color,#8a3fd366);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_16px_30px_rgba\(0\,0\,0\,0\.12\)\]:hover{--tw-shadow:0 16px 30px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_16px_40px_-15px_rgba\(0\,0\,0\,0\.12\)\]:hover{--tw-shadow:0 16px 40px -15px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_16px_40px_rgba\(114\,116\,237\,0\.28\)\]:hover{--tw-shadow:0 16px 40px var(--tw-shadow-color,#7274ed47);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-orange-500\/30:hover{--tw-shadow-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-orange-500\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-orange-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-pink-500\/35:hover{--tw-shadow-color:#f6339a59}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-pink-500\/35:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-pink-500) 35%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-purple-500\/30:hover{--tw-shadow-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-purple-500\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-sky-300\/50:hover{--tw-shadow-color:#c4b4ff80}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-sky-300\/50:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-violet-300) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-sky-500\/30:hover{--tw-shadow-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-sky-500\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-violet-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:border-\[\#4f46e5\]:focus{border-color:#4f46e5}.focus\:border-\[\#7C3AED\]:focus{border-color:#7c3aed}.focus\:border-\[\#75D06A\]:focus{border-color:#75d06a}.focus\:border-\[\#a855f7\]:focus{border-color:#a855f7}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:border-indigo-600:focus{border-color:var(--color-indigo-600)}.focus\:border-primary:focus{border-color:var(--primary)}.focus\:border-purple-400:focus{border-color:var(--color-purple-400)}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:border-rose-400:focus{border-color:var(--color-rose-400)}.focus\:border-sky-400:focus{border-color:var(--color-violet-400)}.focus\:border-sky-500:focus{border-color:var(--color-violet-500)}.focus\:border-sky-600:focus{border-color:var(--color-violet-600)}.focus\:border-white\/50:focus{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.focus\:border-white\/50:focus{border-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:bg-primary:focus{background-color:var(--primary)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-primary-foreground:focus{color:var(--primary-foreground)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[\#4f46e5\]:focus{--tw-ring-color:#4f46e5}.focus\:ring-\[\#4f46e5\]\/20:focus{--tw-ring-color:oklab(51.0573% .0278994 -.228355/.2)}.focus\:ring-\[\#9956DE\]\/10:focus{--tw-ring-color:oklab(59.4745% .111053 -.167638/.1)}.focus\:ring-\[\#a855f7\]:focus{--tw-ring-color:#a855f7}.focus\:ring-\[\#a855f7\]\/10:focus{--tw-ring-color:oklab(62.6846% .129701 -.193012/.1)}.focus\:ring-\[\#a855f7\]\/20:focus{--tw-ring-color:oklab(62.6846% .129701 -.193012/.2)}.focus\:ring-\[\#a855f7\]\/30:focus{--tw-ring-color:oklab(62.6846% .129701 -.193012/.3)}.focus\:ring-indigo-200:focus{--tw-ring-color:var(--color-indigo-200)}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:ring-indigo-500\/30:focus{--tw-ring-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.focus\:ring-primary\/20:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.focus\:ring-purple-50:focus{--tw-ring-color:var(--color-purple-50)}.focus\:ring-purple-500\/20:focus{--tw-ring-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-purple-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-sky-100:focus{--tw-ring-color:var(--color-violet-100)}.focus\:ring-sky-200:focus{--tw-ring-color:var(--color-violet-200)}.focus\:ring-sky-400:focus{--tw-ring-color:var(--color-violet-400)}.focus\:ring-sky-400\/20:focus{--tw-ring-color:#a685ff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-sky-400\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-violet-400) 20%, transparent)}}.focus\:ring-sky-500:focus{--tw-ring-color:var(--color-violet-500)}.focus\:ring-sky-500\/20:focus{--tw-ring-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-sky-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-violet-500) 20%, transparent)}}.focus\:ring-white\/20:focus{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.focus\:ring-white\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-\[\#9956DE\]:focus-visible{border-color:#9956de}.focus-visible\:border-indigo-500:focus-visible{border-color:var(--color-indigo-500)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[\#8A3FD3\]\/50:focus-visible{--tw-ring-color:oklab(54.1025% .117281 -.181162/.5)}.focus-visible\:ring-\[\#9956DE\]\/20:focus-visible{--tw-ring-color:oklab(59.4745% .111053 -.167638/.2)}.focus-visible\:ring-\[\#a855f7\]:focus-visible{--tw-ring-color:#a855f7}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-indigo-500\/20:focus-visible{--tw-ring-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-indigo-500\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 20%, transparent)}}.focus-visible\:ring-purple-500\/20:focus-visible{--tw-ring-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-purple-500\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-0:active{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-\[2px\]:active{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.active\:scale-\[0\.99\]:active{scale:.99}.active\:border-b-0:active{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:bg-slate-200:active{background-color:var(--color-slate-200)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-70:disabled{opacity:.7}@media(hover:hover){.disabled\:hover\:translate-y-0:disabled:hover{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:hover\:scale-100:disabled:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\:hover\:bg-indigo-600:disabled:hover{background-color:var(--color-indigo-600)}.disabled\:hover\:text-\[\#a855f7\]:disabled:hover{color:#a855f7}.disabled\:hover\:shadow-sm:disabled:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:bg-accent[aria-selected=true]{background-color:var(--accent)}.aria-selected\:bg-primary[aria-selected=true]{background-color:var(--primary)}.aria-selected\:text-accent-foreground[aria-selected=true]{color:var(--accent-foreground)}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.aria-selected\:text-primary-foreground[aria-selected=true]{color:var(--primary-foreground)}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}@media(hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-4[data-orientation=horizontal]{height:calc(var(--spacing) * 4)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing) * 1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:min-w-0>*)[data-slot=select-value]{min-width:calc(var(--spacing) * 0)}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}:is(.\*\:data-\[slot\=select-value\]\:truncate>*)[data-slot=select-value]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.data-\[state\=active\]\:bg-card[data-state=active]{background-color:var(--card)}.data-\[state\=active\]\:bg-gradient-to-r[data-state=active]{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.data-\[state\=active\]\:from-blue-600[data-state=active]{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[state\=active\]\:to-sky-500[data-state=active]{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[state\=active\]\:text-white[data-state=active]{color:var(--color-white)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-emerald-500[data-state=checked]{background-color:var(--color-emerald-500)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:bg-red-600[data-state=checked]{background-color:var(--color-red-600)}.data-\[state\=checked\]\:bg-sky-600[data-state=checked]{background-color:var(--color-violet-600)}.data-\[state\=checked\]\:bg-white[data-state=checked]{background-color:var(--color-white)}.data-\[state\=checked\]\:text-\[\#9956DE\][data-state=checked]{color:#9956de}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-\[\#dde3eb\][data-state=unchecked]{background-color:#dde3eb}.data-\[state\=unchecked\]\:bg-slate-200[data-state=unchecked]{background-color:var(--color-slate-200)}.data-\[state\=unchecked\]\:bg-switch-background[data-state=unchecked]{background-color:var(--switch-background)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media(min-width:40rem){.sm\:-top-8{top:calc(var(--spacing) * -8)}.sm\:-right-8{right:calc(var(--spacing) * -8)}.sm\:right-8{right:calc(var(--spacing) * 8)}.sm\:right-\[-15px\]{right:-15px}.sm\:bottom-8{bottom:calc(var(--spacing) * 8)}.sm\:left-12{left:calc(var(--spacing) * 12)}.sm\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.sm\:mx-0{margin-inline:calc(var(--spacing) * 0)}.sm\:mx-2{margin-inline:calc(var(--spacing) * 2)}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:mt-1{margin-top:calc(var(--spacing) * 1)}.sm\:mt-2{margin-top:calc(var(--spacing) * 2)}.sm\:mt-3{margin-top:calc(var(--spacing) * 3)}.sm\:mt-6{margin-top:calc(var(--spacing) * 6)}.sm\:mt-\[24px\]{margin-top:24px}.sm\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.sm\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.sm\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.sm\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.sm\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.sm\:ml-auto{margin-left:auto}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-block{display:inline-block}.sm\:size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.sm\:h-2{height:calc(var(--spacing) * 2)}.sm\:h-4{height:calc(var(--spacing) * 4)}.sm\:h-5{height:calc(var(--spacing) * 5)}.sm\:h-6{height:calc(var(--spacing) * 6)}.sm\:h-7{height:calc(var(--spacing) * 7)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-10{height:calc(var(--spacing) * 10)}.sm\:h-11{height:calc(var(--spacing) * 11)}.sm\:h-12{height:calc(var(--spacing) * 12)}.sm\:h-14{height:calc(var(--spacing) * 14)}.sm\:h-16{height:calc(var(--spacing) * 16)}.sm\:h-20{height:calc(var(--spacing) * 20)}.sm\:h-28{height:calc(var(--spacing) * 28)}.sm\:h-32{height:calc(var(--spacing) * 32)}.sm\:h-\[90vh\]{height:90vh}.sm\:h-\[95px\]{height:95px}.sm\:h-\[115\%\]{height:115%}.sm\:h-\[125\%\]{height:125%}.sm\:h-\[140px\]{height:140px}.sm\:h-\[145px\]{height:145px}.sm\:h-\[245px\]{height:245px}.sm\:h-\[360px\]{height:360px}.sm\:h-\[450px\]{height:450px}.sm\:h-auto{height:auto}.sm\:max-h-\[85vh\]{max-height:85vh}.sm\:min-h-\[4rem\]{min-height:4rem}.sm\:min-h-\[130px\]{min-height:130px}.sm\:w-4{width:calc(var(--spacing) * 4)}.sm\:w-5{width:calc(var(--spacing) * 5)}.sm\:w-6{width:calc(var(--spacing) * 6)}.sm\:w-7{width:calc(var(--spacing) * 7)}.sm\:w-8{width:calc(var(--spacing) * 8)}.sm\:w-10{width:calc(var(--spacing) * 10)}.sm\:w-11{width:calc(var(--spacing) * 11)}.sm\:w-12{width:calc(var(--spacing) * 12)}.sm\:w-14{width:calc(var(--spacing) * 14)}.sm\:w-16{width:calc(var(--spacing) * 16)}.sm\:w-20{width:calc(var(--spacing) * 20)}.sm\:w-24{width:calc(var(--spacing) * 24)}.sm\:w-28{width:calc(var(--spacing) * 28)}.sm\:w-32{width:calc(var(--spacing) * 32)}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-\[32\%\]{width:32%}.sm\:w-\[40\%\]{width:40%}.sm\:w-\[100px\]{width:100px}.sm\:w-\[300px\]{width:300px}.sm\:w-\[450px\]{width:450px}.sm\:w-auto{width:auto}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-\[180px\]{max-width:180px}.sm\:max-w-\[220px\]{max-width:220px}.sm\:max-w-\[300px\]{max-width:300px}.sm\:max-w-\[400px\]{max-width:400px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[850px\]{max-width:850px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-\[120px\]{min-width:120px}.sm\:min-w-\[140px\]{min-width:140px}.sm\:flex-none{flex:none}.sm\:-translate-x-\[60px\]{--tw-translate-x: -60px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:translate-x-\[60px\]{--tw-translate-x:60px;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:scale-\[0\.85\]{scale:.85}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing) * 0)}.sm\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-5{gap:calc(var(--spacing) * 5)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-\[10px\]{gap:10px}.sm\:gap-\[16px\]{gap:16px}.sm\:gap-\[18px\]{gap:18px}.sm\:gap-\[24px\]{gap:24px}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-\[24px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(24px * var(--tw-space-y-reverse));margin-block-end:calc(24px * calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:self-auto{align-self:auto}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:rounded-\[1\.5rem\]{border-radius:1.5rem}.sm\:rounded-\[2rem\]{border-radius:2rem}.sm\:rounded-\[16px\]{border-radius:16px}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.sm\:rounded-t-\[40px\]{border-top-left-radius:40px;border-top-right-radius:40px}.sm\:rounded-b-\[40px\]{border-bottom-right-radius:40px;border-bottom-left-radius:40px}.sm\:p-2{padding:calc(var(--spacing) * 2)}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-\[15px\]{padding:15px}.sm\:p-\[18px_20px\]{padding:18px 20px}.sm\:p-\[20px\]{padding:20px}.sm\:p-\[24px\]{padding:24px}.sm\:p-\[32px\]{padding:32px}.sm\:px-0{padding-inline:calc(var(--spacing) * 0)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-7{padding-inline:calc(var(--spacing) * 7)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:px-\[7px\]{padding-inline:7px}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-6{padding-block:calc(var(--spacing) * 6)}.sm\:py-8{padding-block:calc(var(--spacing) * 8)}.sm\:pt-2{padding-top:calc(var(--spacing) * 2)}.sm\:pt-3{padding-top:calc(var(--spacing) * 3)}.sm\:pt-6{padding-top:calc(var(--spacing) * 6)}.sm\:pt-10{padding-top:calc(var(--spacing) * 10)}.sm\:pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.sm\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.sm\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.sm\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\:pb-28{padding-bottom:calc(var(--spacing) * 28)}.sm\:pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.sm\:pl-4{padding-left:calc(var(--spacing) * 4)}.sm\:pl-6{padding-left:calc(var(--spacing) * 6)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[9px\]{font-size:9px}.sm\:text-\[10px\]{font-size:10px}.sm\:text-\[11px\]{font-size:11px}.sm\:text-\[12px\]{font-size:12px}.sm\:text-\[13px\]{font-size:13px}.sm\:text-\[16px\]{font-size:16px}.sm\:text-\[26px\]{font-size:26px}.sm\:text-\[28px\]{font-size:28px}.sm\:text-\[32px\]{font-size:32px}.sm\:text-\[40px\]{font-size:40px}.sm\:tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:absolute{position:absolute}.md\:-top-7{top:calc(var(--spacing) * -7)}.md\:-top-8{top:calc(var(--spacing) * -8)}.md\:right-4{right:calc(var(--spacing) * 4)}.md\:right-10{right:calc(var(--spacing) * 10)}.md\:-bottom-7{bottom:calc(var(--spacing) * -7)}.md\:-bottom-8{bottom:calc(var(--spacing) * -8)}.md\:left-4{left:calc(var(--spacing) * 4)}.md\:left-16{left:calc(var(--spacing) * 16)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-9{grid-column:span 9/span 9}.md\:mx-0{margin-inline:calc(var(--spacing) * 0)}.md\:mt-1{margin-top:calc(var(--spacing) * 1)}.md\:mt-2{margin-top:calc(var(--spacing) * 2)}.md\:mt-6{margin-top:calc(var(--spacing) * 6)}.md\:mt-8{margin-top:calc(var(--spacing) * 8)}.md\:mt-12{margin-top:calc(var(--spacing) * 12)}.md\:mt-\[-40px\]{margin-top:-40px}.md\:mr-2{margin-right:calc(var(--spacing) * 2)}.md\:mr-4{margin-right:calc(var(--spacing) * 4)}.md\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.md\:mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.md\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.md\:mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.md\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.md\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.md\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.md\:ml-2{margin-left:calc(var(--spacing) * 2)}.md\:ml-16{margin-left:calc(var(--spacing) * 16)}.md\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:h-2{height:calc(var(--spacing) * 2)}.md\:h-3{height:calc(var(--spacing) * 3)}.md\:h-4{height:calc(var(--spacing) * 4)}.md\:h-5{height:calc(var(--spacing) * 5)}.md\:h-7{height:calc(var(--spacing) * 7)}.md\:h-9{height:calc(var(--spacing) * 9)}.md\:h-10{height:calc(var(--spacing) * 10)}.md\:h-11{height:calc(var(--spacing) * 11)}.md\:h-12{height:calc(var(--spacing) * 12)}.md\:h-14{height:calc(var(--spacing) * 14)}.md\:h-16{height:calc(var(--spacing) * 16)}.md\:h-20{height:calc(var(--spacing) * 20)}.md\:h-32{height:calc(var(--spacing) * 32)}.md\:h-40{height:calc(var(--spacing) * 40)}.md\:h-48{height:calc(var(--spacing) * 48)}.md\:h-\[10px\]{height:10px}.md\:h-\[72px\]{height:72px}.md\:h-\[85vh\]{height:85vh}.md\:h-\[86px\]{height:86px}.md\:h-\[100px\]{height:100px}.md\:h-\[130px\]{height:130px}.md\:h-\[180px\]{height:180px}.md\:h-\[310px\]{height:310px}.md\:h-\[400vw\]{height:400vw}.md\:h-\[calc\(100\%-24px\)\]{height:calc(100% - 24px)}.md\:h-auto{height:auto}.md\:min-h-\[5rem\]{min-height:5rem}.md\:min-h-\[290px\]{min-height:290px}.md\:w-2{width:calc(var(--spacing) * 2)}.md\:w-3{width:calc(var(--spacing) * 3)}.md\:w-4{width:calc(var(--spacing) * 4)}.md\:w-5{width:calc(var(--spacing) * 5)}.md\:w-7{width:calc(var(--spacing) * 7)}.md\:w-9{width:calc(var(--spacing) * 9)}.md\:w-10{width:calc(var(--spacing) * 10)}.md\:w-11{width:calc(var(--spacing) * 11)}.md\:w-12{width:calc(var(--spacing) * 12)}.md\:w-14{width:calc(var(--spacing) * 14)}.md\:w-20{width:calc(var(--spacing) * 20)}.md\:w-32{width:calc(var(--spacing) * 32)}.md\:w-40{width:calc(var(--spacing) * 40)}.md\:w-48{width:calc(var(--spacing) * 48)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-80{width:calc(var(--spacing) * 80)}.md\:w-\[10px\]{width:10px}.md\:w-\[72px\]{width:72px}.md\:w-\[86px\]{width:86px}.md\:w-\[150px\]{width:150px}.md\:w-\[200vw\]{width:200vw}.md\:w-\[300px\]{width:300px}.md\:w-\[320px\]{width:320px}.md\:w-\[400vw\]{width:400vw}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\[180px\]{max-width:180px}.md\:max-w-\[280px\]{max-width:280px}.md\:max-w-\[300px\]{max-width:300px}.md\:max-w-\[320px\]{max-width:320px}.md\:max-w-none{max-width:none}.md\:min-w-0{min-width:calc(var(--spacing) * 0)}.md\:min-w-\[320px\]{min-width:320px}.md\:shrink{flex-shrink:1}.md\:translate-y-\[21\%\]{--tw-translate-y:21%;translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:scale-\[1\.25\]{scale:1.25}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:flex-row{flex-direction:row}.md\:flex-nowrap{flex-wrap:nowrap}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}.md\:gap-1{gap:calc(var(--spacing) * 1)}.md\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:gap-4{gap:calc(var(--spacing) * 4)}.md\:gap-5{gap:calc(var(--spacing) * 5)}.md\:gap-6{gap:calc(var(--spacing) * 6)}:where(.md\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.md\:self-auto{align-self:auto}.md\:overflow-visible{overflow:visible}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:rounded-3xl{border-radius:var(--radius-3xl)}.md\:rounded-\[1\.4rem\]{border-radius:1.4rem}.md\:rounded-\[2rem\]{border-radius:2rem}.md\:rounded-\[14px\]{border-radius:14px}.md\:rounded-lg{border-radius:var(--radius)}.md\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.md\:rounded-t-xl{border-top-left-radius:calc(var(--radius) + 4px);border-top-right-radius:calc(var(--radius) + 4px)}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:bg-transparent{background-color:#0000}.md\:p-3{padding:calc(var(--spacing) * 3)}.md\:p-4{padding:calc(var(--spacing) * 4)}.md\:p-5{padding:calc(var(--spacing) * 5)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:px-0{padding-inline:calc(var(--spacing) * 0)}.md\:px-1{padding-inline:calc(var(--spacing) * 1)}.md\:px-2{padding-inline:calc(var(--spacing) * 2)}.md\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.md\:px-3{padding-inline:calc(var(--spacing) * 3)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:py-1{padding-block:calc(var(--spacing) * 1)}.md\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.md\:py-2{padding-block:calc(var(--spacing) * 2)}.md\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.md\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:py-6{padding-block:calc(var(--spacing) * 6)}.md\:pt-0{padding-top:calc(var(--spacing) * 0)}.md\:pt-4{padding-top:calc(var(--spacing) * 4)}.md\:pt-6{padding-top:calc(var(--spacing) * 6)}.md\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\:pr-4{padding-right:calc(var(--spacing) * 4)}.md\:pr-10{padding-right:calc(var(--spacing) * 10)}.md\:pr-40{padding-right:calc(var(--spacing) * 40)}.md\:pr-\[240px\]{padding-right:240px}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.md\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.md\:pl-6{padding-left:calc(var(--spacing) * 6)}.md\:pl-16{padding-left:calc(var(--spacing) * 16)}.md\:pl-20{padding-left:calc(var(--spacing) * 20)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md\:text-\[8px\]{font-size:8px}.md\:text-\[10px\]{font-size:10px}.md\:text-\[11px\]{font-size:11px}.md\:text-\[12px\]{font-size:12px}.md\:text-\[13px\]{font-size:13px}.md\:text-\[15px\]{font-size:15px}.md\:text-\[16px\]{font-size:16px}.md\:text-\[17px\]{font-size:17px}.md\:text-\[18px\]{font-size:18px}.md\:text-\[22px\]{font-size:22px}.md\:text-\[24px\]{font-size:24px}.md\:text-\[26px\]{font-size:26px}.md\:text-\[32px\]{font-size:32px}.md\:text-\[44px\]{font-size:44px}.md\:text-\[70px\]{font-size:70px}.md\:text-\[80px\]{font-size:80px}.md\:text-\[110px\]{font-size:110px}.md\:text-\[140px\]{font-size:140px}.md\:leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.md\:leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.md\:leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.md\:whitespace-normal{white-space:normal}.md\:opacity-0{opacity:0}.md\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:static{position:static}.lg\:top-\[5px\]{top:5px}.lg\:right-10{right:calc(var(--spacing) * 10)}.lg\:right-\[-15px\]{right:-15px}.lg\:right-\[250px\]{right:250px}.lg\:bottom-20{bottom:calc(var(--spacing) * 20)}.lg\:z-auto{z-index:auto}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:-mx-4{margin-inline:calc(var(--spacing) * -4)}.lg\:mx-0{margin-inline:calc(var(--spacing) * 0)}.lg\:-mt-4{margin-top:calc(var(--spacing) * -4)}.lg\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.lg\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.lg\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:table-cell{display:table-cell}.lg\:h-8{height:calc(var(--spacing) * 8)}.lg\:h-9{height:calc(var(--spacing) * 9)}.lg\:h-12{height:calc(var(--spacing) * 12)}.lg\:h-16{height:calc(var(--spacing) * 16)}.lg\:h-\[265px\]{height:265px}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:min-h-\[160px\]{min-height:160px}.lg\:w-8{width:calc(var(--spacing) * 8)}.lg\:w-9{width:calc(var(--spacing) * 9)}.lg\:w-12{width:calc(var(--spacing) * 12)}.lg\:w-16{width:calc(var(--spacing) * 16)}.lg\:w-\[35\%\]{width:35%}.lg\:w-\[65\%\]{width:65%}.lg\:w-\[260px\]{width:260px}.lg\:w-\[270px\]{width:270px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:w-max{width:max-content}.lg\:translate-y-\[19\%\]{--tw-translate-y:19%;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:scale-\[1\.3\]{scale:1.3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-\[1fr_300px\]{grid-template-columns:1fr 300px}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-start{align-items:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:justify-start{justify-content:flex-start}.lg\:gap-3{gap:calc(var(--spacing) * 3)}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:gap-6{gap:calc(var(--spacing) * 6)}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-12{gap:calc(var(--spacing) * 12)}.lg\:gap-14{gap:calc(var(--spacing) * 14)}:where(.lg\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.lg\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.lg\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.lg\:p-4{padding:calc(var(--spacing) * 4)}.lg\:p-5{padding:calc(var(--spacing) * 5)}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:p-\[32px\]{padding:32px}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:px-10{padding-inline:calc(var(--spacing) * 10)}.lg\:py-8{padding-block:calc(var(--spacing) * 8)}.lg\:pt-6{padding-top:calc(var(--spacing) * 6)}.lg\:pr-\[280px\]{padding-right:280px}.lg\:text-left{text-align:left}.lg\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.lg\:text-\[11px\]{font-size:11px}.lg\:text-\[18px\]{font-size:18px}.lg\:text-\[46px\]{font-size:46px}}@media(min-width:80rem){.xl\:right-\[32px\]{right:32px}.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-5{grid-column:span 5/span 5}.xl\:col-span-7{grid-column:span 7/span 7}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:col-span-9{grid-column:span 9/span 9}.xl\:-mx-10{margin-inline:calc(var(--spacing) * -10)}.xl\:-mx-\[32px\]{margin-inline:-32px}.xl\:mx-0{margin-inline:calc(var(--spacing) * 0)}.xl\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.xl\:flex{display:flex}.xl\:h-\[80vh\]{height:80vh}.xl\:h-\[600px\]{height:600px}.xl\:h-full{height:100%}.xl\:max-h-\[700px\]{max-height:700px}.xl\:min-h-\[120px\]{min-height:120px}.xl\:w-1\/3{width:33.3333%}.xl\:w-2\/3{width:66.6667%}.xl\:w-\[30\%\]{width:30%}.xl\:w-\[50\%\]{width:50%}.xl\:w-\[70\%\]{width:70%}.xl\:w-\[200px\]{width:200px}.xl\:w-\[350px\]{width:350px}.xl\:w-\[calc\(100\%\+64px\)\]{width:calc(100% + 64px)}.xl\:w-auto{width:auto}.xl\:max-w-\[1080px\]{max-width:1080px}.xl\:max-w-\[1400px\]{max-width:1400px}.xl\:max-w-none{max-width:none}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xl\:grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}.xl\:flex-row{flex-direction:row}.xl\:items-center{align-items:center}.xl\:justify-start{justify-content:flex-start}.xl\:gap-12{gap:calc(var(--spacing) * 12)}.xl\:self-center{align-self:center}.xl\:overflow-hidden{overflow:hidden}.xl\:p-\[32px\]{padding:32px}.xl\:px-8{padding-inline:calc(var(--spacing) * 8)}.xl\:px-10{padding-inline:calc(var(--spacing) * 10)}.xl\:px-\[32px\]{padding-inline:32px}.xl\:py-\[32px\]{padding-block:32px}.xl\:pt-4{padding-top:calc(var(--spacing) * 4)}.xl\:pt-8{padding-top:calc(var(--spacing) * 8)}.xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.xl\:text-\[3\.4rem\]{font-size:3.4rem}}@media(min-width:96rem){.\32xl\:block{display:block}.\32xl\:w-\[340px\]{width:340px}}.dark\:border-\[\#1FA7E1\]\/20:is(.dark *){border-color:#1fa7e133}.dark\:border-\[\#2b3140\]:is(.dark *){border-color:#2b3140}.dark\:border-\[\#2f3547\]:is(.dark *){border-color:#2f3547}.dark\:border-\[\#8A3FD3\]\/20:is(.dark *){border-color:#8a3fd333}.dark\:border-\[\#8A3FD3\]\/30:is(.dark *){border-color:#8a3fd34d}.dark\:border-amber-400\/40:is(.dark *){border-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-400\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-amber-400) 40%,transparent)}}.dark\:border-emerald-400\/40:is(.dark *){border-color:#00d29466}@supports (color:color-mix(in lab,red,red)){.dark\:border-emerald-400\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-emerald-400) 40%,transparent)}}.dark\:border-emerald-500\/40:is(.dark *){border-color:#00bb7f66}@supports (color:color-mix(in lab,red,red)){.dark\:border-emerald-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-emerald-500) 40%,transparent)}}.dark\:border-gray-600:is(.dark *){border-color:var(--color-gray-600)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-purple-700\/50:is(.dark *){border-color:#8200da80}@supports (color:color-mix(in lab,red,red)){.dark\:border-purple-700\/50:is(.dark *){border-color:color-mix(in oklab,var(--color-purple-700) 50%,transparent)}}.dark\:border-rose-400\/40:is(.dark *){border-color:#ff667f66}@supports (color:color-mix(in lab,red,red)){.dark\:border-rose-400\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-rose-400) 40%,transparent)}}.dark\:border-rose-500\/20:is(.dark *){border-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.dark\:border-rose-500\/20:is(.dark *){border-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.dark\:border-rose-900:is(.dark *){border-color:var(--color-rose-900)}.dark\:border-sky-700\/50:is(.dark *){border-color:#7008e780}@supports (color:color-mix(in lab,red,red)){.dark\:border-sky-700\/50:is(.dark *){border-color:color-mix(in oklab,var(--color-violet-700) 50%,transparent)}}.dark\:border-slate-700:is(.dark *){border-color:var(--color-slate-700)}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:border-white\/10:is(.dark *){border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.dark\:bg-\[\#1a1f2e\]\/90:is(.dark *){background-color:#1a1f2ee6}.dark\:bg-\[\#2a3143\]:is(.dark *){background-color:#2a3143}.dark\:bg-\[\#2b2b5f\]:is(.dark *){background-color:#2b2b5f}.dark\:bg-\[\#8A3FD3\]\/10:is(.dark *){background-color:#8a3fd31a}.dark\:bg-\[\#181d27\]:is(.dark *){background-color:#181d27}.dark\:bg-\[\#11151d\]:is(.dark *){background-color:#11151d}.dark\:bg-\[\#15803d\]:is(.dark *){background-color:#15803d}.dark\:bg-\[\#b45309\]:is(.dark *){background-color:#b45309}.dark\:bg-\[\#be123c\]:is(.dark *){background-color:#be123c}.dark\:bg-amber-100\/20:is(.dark *){background-color:#fef3c633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-100\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-100) 20%,transparent)}}.dark\:bg-amber-400\/10:is(.dark *){background-color:#fcbb001a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-400\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-400) 10%,transparent)}}.dark\:bg-amber-900\/20:is(.dark *){background-color:#7b330633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-900) 20%,transparent)}}.dark\:bg-black\/30:is(.dark *){background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.dark\:bg-black\/40:is(.dark *){background-color:#0006}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.dark\:bg-black\/50:is(.dark *){background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark\:bg-black\/80:is(.dark *){background-color:#000c}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/80:is(.dark *){background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-emerald-500\/10:is(.dark *){background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.dark\:bg-emerald-500\/30:is(.dark *){background-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.dark\:bg-emerald-900\/20:is(.dark *){background-color:#004e3b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-900) 20%,transparent)}}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-purple-900\/50:is(.dark *){background-color:#59168b80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900) 50%,transparent)}}.dark\:bg-rose-500\/10:is(.dark *){background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-rose-500\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.dark\:bg-rose-900\/20:is(.dark *){background-color:#8b083633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-rose-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-rose-900) 20%,transparent)}}.dark\:bg-sky-900\/50:is(.dark *){background-color:#4d179a80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-sky-900\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-violet-900) 50%,transparent)}}.dark\:from-\[\#2b2b5f\]:is(.dark *){--tw-gradient-from:#2b2b5f;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-purple-300:is(.dark *){--tw-gradient-from:var(--color-purple-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-purple-500\/20:is(.dark *){--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.dark\:from-purple-500\/20:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.dark\:from-purple-500\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-sky-300:is(.dark *){--tw-gradient-from:var(--color-violet-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-sky-500\/20:is(.dark *){--tw-gradient-from:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.dark\:from-sky-500\/20:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-violet-500) 20%, transparent)}}.dark\:from-sky-500\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:via-cyan-500\/10:is(.dark *){--tw-gradient-via:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.dark\:via-cyan-500\/10:is(.dark *){--tw-gradient-via:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.dark\:via-cyan-500\/10:is(.dark *){--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:via-fuchsia-500\/10:is(.dark *){--tw-gradient-via:#e12afb1a}@supports (color:color-mix(in lab,red,red)){.dark\:via-fuchsia-500\/10:is(.dark *){--tw-gradient-via:color-mix(in oklab, var(--color-fuchsia-500) 10%, transparent)}}.dark\:via-fuchsia-500\/10:is(.dark *){--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:to-cyan-200:is(.dark *){--tw-gradient-to:var(--color-cyan-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-fuchsia-200:is(.dark *){--tw-gradient-to:var(--color-fuchsia-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-purple-900\/10:is(.dark *){--tw-gradient-to:#59168b1a}@supports (color:color-mix(in lab,red,red)){.dark\:to-purple-900\/10:is(.dark *){--tw-gradient-to:color-mix(in oklab, var(--color-purple-900) 10%, transparent)}}.dark\:to-purple-900\/10:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-sky-900\/10:is(.dark *){--tw-gradient-to:#4d179a1a}@supports (color:color-mix(in lab,red,red)){.dark\:to-sky-900\/10:is(.dark *){--tw-gradient-to:color-mix(in oklab, var(--color-violet-900) 10%, transparent)}}.dark\:to-sky-900\/10:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:text-\[\#4bc1f2\]:is(.dark *){color:#4bc1f2}.dark\:text-\[\#7ad8ff\]:is(.dark *){color:#7ad8ff}.dark\:text-\[\#7f88a3\]:is(.dark *){color:#7f88a3}.dark\:text-\[\#8b95ad\]:is(.dark *){color:#8b95ad}.dark\:text-\[\#9aa4be\]:is(.dark *){color:#9aa4be}.dark\:text-\[\#9e8fff\]:is(.dark *){color:#9e8fff}.dark\:text-\[\#95a0bb\]:is(.dark *){color:#95a0bb}.dark\:text-\[\#a8b2c9\]:is(.dark *){color:#a8b2c9}.dark\:text-\[\#a35ceb\]:is(.dark *){color:#a35ceb}.dark\:text-\[\#aab3c7\]:is(.dark *){color:#aab3c7}.dark\:text-\[\#b2bad0\]:is(.dark *){color:#b2bad0}.dark\:text-\[\#c48bfc\]:is(.dark *){color:#c48bfc}.dark\:text-\[\#d3a8ff\]:is(.dark *){color:#d3a8ff}.dark\:text-\[\#e4e7f1\]:is(.dark *){color:#e4e7f1}.dark\:text-\[\#ecf0fb\]:is(.dark *){color:#ecf0fb}.dark\:text-\[\#f5f7fb\]:is(.dark *){color:#f5f7fb}.dark\:text-amber-100:is(.dark *){color:var(--color-amber-100)}.dark\:text-amber-100\/90:is(.dark *){color:#fef3c6e6}@supports (color:color-mix(in lab,red,red)){.dark\:text-amber-100\/90:is(.dark *){color:color-mix(in oklab,var(--color-amber-100) 90%,transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-purple-400\/80:is(.dark *){color:#c07effcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-purple-400\/80:is(.dark *){color:color-mix(in oklab,var(--color-purple-400) 80%,transparent)}}.dark\:text-rose-300:is(.dark *){color:var(--color-rose-300)}.dark\:text-rose-400:is(.dark *){color:var(--color-rose-400)}.dark\:text-sky-300:is(.dark *){color:var(--color-violet-300)}.dark\:text-sky-400:is(.dark *){color:var(--color-violet-400)}.dark\:text-sky-400\/80:is(.dark *){color:#a685ffcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-sky-400\/80:is(.dark *){color:color-mix(in oklab,var(--color-violet-400) 80%,transparent)}}.dark\:text-slate-200:is(.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:is(.dark *){color:var(--color-slate-400)}.dark\:text-white:is(.dark *){color:var(--color-white)}.dark\:opacity-10:is(.dark *){opacity:.1}.dark\:opacity-\[0\.25\]:is(.dark *){opacity:.25}.dark\:mix-blend-screen:is(.dark *){mix-blend-mode:screen}.dark\:shadow-\[0_12px_24px_rgba\(0\,0\,0\,0\.22\)\]:is(.dark *){--tw-shadow:0 12px 24px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:ring-offset-\[\#0B0F19\]:is(.dark *){--tw-ring-offset-color:#0b0f19}@media(hover:hover){.dark\:hover\:bg-\[\#1FA7E1\]\/10:is(.dark *):hover{background-color:#1fa7e11a}.dark\:hover\:bg-\[\#8A3FD3\]\/10:is(.dark *):hover{background-color:#8a3fd31a}.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.dark\:hover\:bg-black\/50:is(.dark *):hover{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-black\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark\:hover\:bg-black\/60:is(.dark *):hover{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-black\/60:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.dark\:hover\:bg-emerald-500\/20:is(.dark *):hover{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-emerald-500\/20:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-rose-900\/30:is(.dark *):hover{background-color:#8b08364d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-rose-900\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-rose-900) 30%,transparent)}}.dark\:hover\:bg-slate-800:is(.dark *):hover{background-color:var(--color-slate-800)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-card-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--card-foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:var(--border)}@supports (color:color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:color-mix(in oklab,var(--border) 50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]){border-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]){background-color:var(--accent)}.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:first-child:has([aria-selected]){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:last-child:has([aria-selected]),.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\]\:pb-6:last-child{padding-bottom:calc(var(--spacing) * 6)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button,.\[\&\>button\:last-child\]\:hidden>button:last-child{display:none}.\[\&\>option\]\:text-\[\#1e293b\]>option{color:#1e293b}.\[\&\>span\]\:flex>span{display:flex}.\[\&\>span\]\:items-center>span{align-items:center}.\[\&\>span\]\:gap-2>span{gap:calc(var(--spacing) * 2)}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--font-size:16px;--font-display:"Nunito", ui-sans-serif, system-ui, sans-serif;--font-body:"Nunito", ui-sans-serif, system-ui, sans-serif;--background:#f7f9fc;--foreground:#0a1628;--card:#fff;--card-foreground:#0a1628;--popover:#fff;--popover-foreground:#0a1628;--amethyst:#9956de;--slate-blue:#7274ed;--summer-sky:#1fa7e1;--downy:#6ed1cf;--pastel-green:#75d06a;--texas-rose:#ffb356;--mona-lisa:#ff8b8b;--illusion:#fb96bb;--primary:#9956de;--primary-foreground:#fff;--secondary:#7274ed;--secondary-foreground:#fff;--muted:#f4f4f5;--muted-foreground:#71717a;--accent:#1fa7e1;--accent-foreground:#fff;--destructive:#ff8b8b;--destructive-foreground:#fff;--border:#e4e4e7;--input:transparent;--input-background:#f4f4f5;--switch-background:#d4d4d8;--font-weight-medium:500;--font-weight-normal:400;--ring:#9956de;--chart-1:#9956de;--chart-2:#ff8b8b;--chart-3:#75d06a;--chart-4:#ffb356;--chart-5:#1fa7e1;--radius:1.25rem;--sidebar:#fff;--sidebar-foreground:#09090b;--sidebar-primary:#7c3aed;--sidebar-primary-foreground:#fff;--sidebar-accent:#f3f0ff;--sidebar-accent-foreground:#5b21b6;--sidebar-border:#e4e4e7;--sidebar-ring:#7c3aed}.dark{--background:#050d18;--foreground:#f0f7ff;--card:#0a1628;--card-foreground:#f0f7ff;--popover:#0a1628;--popover-foreground:#f0f7ff;--primary:#a78bfa;--primary-foreground:#fff;--secondary:#2e1065;--secondary-foreground:#c4b5fd;--muted:#27272a;--muted-foreground:#a1a1aa;--accent:#27272a;--accent-foreground:#f43f5e;--destructive:#ef4444;--destructive-foreground:#09090b;--border:#27272a;--input:#27272a;--input-background:#27272a;--switch-background:#3f3f46;--ring:#a78bfa;--font-weight-medium:500;--font-weight-normal:400;--chart-1:#a78bfa;--chart-2:#fb7185;--chart-3:#34d399;--chart-4:#fb923c;--chart-5:#38bdf8;--sidebar:#09090b;--sidebar-foreground:#fafafa;--sidebar-primary:#a78bfa;--sidebar-primary-foreground:#fff;--sidebar-accent:#27272a;--sidebar-accent-foreground:#fafafa;--sidebar-border:#27272a;--sidebar-ring:#a78bfa}html{font-size:var(--font-size)}html,body,#root{height:100%}html[data-density=compact]{--radius:.9rem}html.reduced-motion *,html.reduced-motion :before,html.reduced-motion :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html.smart-dark{filter:invert()hue-rotate(180deg);background:#101217}html.smart-dark img,html.smart-dark picture,html.smart-dark video,html.smart-dark canvas,html.smart-dark svg,html.smart-dark iframe,html.smart-dark [data-preserve-color=true]{filter:invert()hue-rotate(180deg)}.font-display{font-family:var(--font-display)}.font-body{font-family:var(--font-body)}.glow-blue{box-shadow:0 0 24px #0284c71f,0 0 64px #0284c70a}.glow-violet{box-shadow:0 0 24px #7c3aed1f,0 0 64px #7c3aed0a}.glow-rose{box-shadow:0 0 24px #f43f5e1f,0 0 64px #f43f5e0a}.glow-emerald{box-shadow:0 0 24px #0596691f,0 0 64px #0596690a}.bg-dot-pattern{background-image:radial-gradient(circle,#7c3aed14 1px,#0000 1px);background-size:24px 24px}.dark .bg-dot-pattern{background-image:radial-gradient(circle,#a78bfa1f 1px,#0000 1px)}.bg-math-pattern{background-color:var(--background);background-image:url("data:image/svg+xml,%3Csvg width='150' height='150' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='rgba(124, 58, 237, 0.05)' font-family='sans-serif' font-weight='bold' font-size='28'%3E%3Ctext x='20' y='40'%3E%2B%3C/text%3E%3Ctext x='90' y='60'%3E%3D%3C/text%3E%3Ctext x='40' y='110'%3E%25%3C/text%3E%3Ctext x='110' y='130'%3E%C3%97%3C/text%3E%3Ctext x='130' y='30'%3E%C3%B7%3C/text%3E%3C/g%3E%3C/svg%3E");background-size:150px 150px}.lesson-welcome-card{font-family:var(--font-body);position:relative;overflow:hidden}.lesson-welcome-card:before{content:"";pointer-events:none;z-index:0;border-radius:inherit;background-image:url("data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='rgba(26,133,164,0.06)' font-family='sans-serif' font-weight='900' font-size='36'%3E%3Ctext x='10' y='50'%3E%2B%3C/text%3E%3Ctext x='120' y='80'%3E%3D%3C/text%3E%3Ctext x='50' y='140'%3E%CF%80%3C/text%3E%3Ctext x='150' y='170'%3E%C3%97%3C/text%3E%3Ctext x='170' y='40'%3E%E2%88%91%3C/text%3E%3Ctext x='80' y='190'%3E%C3%B7%3C/text%3E%3C/g%3E%3C/svg%3E");background-size:200px 200px;position:absolute;inset:0}.lesson-welcome-card>*{z-index:1;position:relative}.lesson-section-heading{font-family:var(--font-display);letter-spacing:-.02em;font-weight:800;line-height:1.2}.lesson-body-text{font-family:var(--font-body);color:#334155;font-size:1rem;line-height:1.75}.lesson-callout-headsup{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:2px solid #f59e0b;border-left-width:5px;border-radius:1rem;padding:1rem 1.25rem;position:relative;overflow:hidden}.lesson-callout-headsup:after{content:"⚠";opacity:.06;pointer-events:none;font-size:3rem;position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.lesson-formula-box{text-align:center;color:#92400e;letter-spacing:.03em;background:linear-gradient(135deg,#fffbeb,#fef9ee);border:1.5px solid #fbbf24;border-radius:.875rem;padding:.875rem 1.25rem;font-family:Courier New,Courier,monospace;font-size:1.05rem;font-weight:700;box-shadow:0 2px 8px #fbbf2426}.lesson-key-term{color:#92400e;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:.3em;padding:.1em .4em;font-size:.95em;font-weight:700}.lesson-header-teal{color:#1a85a4;font-family:var(--font-display);font-weight:800}.lesson-header-orange{color:#fbab41;font-family:var(--font-display);font-weight:800}.bg-noise{position:relative}.bg-noise:before{content:"";opacity:.03;pointer-events:none;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:absolute;inset:0}.card-elevated{box-shadow:0 16px 40px -8px #7c3aed26,0 0 24px -5px #7c3aed14}.card-elevated-lg{box-shadow:0 24px 60px -12px #7c3aed33,0 0 32px -10px #7c3aed1a}.shadow-3d-button{box-shadow:0 12px 24px -6px var(--tw-shadow-color,#f9731666),0 6px 12px -4px var(--tw-shadow-color,#f973164d)}.dark .card-elevated{box-shadow:0 1px 2px #0003,0 4px 16px #00000026}.dark .card-elevated-lg{box-shadow:0 2px 4px #0003,0 8px 32px #0003}*{scrollbar-width:thin;scrollbar-color:transparent transparent}:hover{scrollbar-color:#0284c733 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:#0000;border-radius:10px;transition:background-color .3s}:hover::-webkit-scrollbar-thumb{background-color:#0284c733}::-webkit-scrollbar-thumb:hover{background-color:#0284c766}.scrollbar-hide{scrollbar-width:none;-ms-overflow-style:none}.scrollbar-hide::-webkit-scrollbar{display:none}.accent-line{position:relative}.accent-line:after{content:"";background:linear-gradient(90deg,#0284c7,#f43f5e);border-radius:2px;width:48px;height:3px;position:absolute;bottom:0;left:0}.surface-raised{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e2e8f0cc}.surface-inset{background:linear-gradient(135deg,#f1f5f9,#e8eef6);border:1px solid #cbd5e180}.bg-white-20{background-color:#fff3}.bg-white-15{background-color:#ffffff26}.bg-black-15{background-color:#00000026}.e-w{width:var(--w)}.e-bg{background-color:var(--bg)}.e-color{color:var(--c);fill:var(--c);stroke:var(--c)}.e-grid-cols{grid-template-columns:var(--grid-cols)}.e-perspective{perspective:var(--perspective)}.e-transform{transform:var(--tr)}.e-left-top{left:var(--left);top:var(--top)}.e-z{z-index:var(--z)}.e-filter{filter:var(--filter)}.e-opacity{opacity:var(--o)}.no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.no-scrollbar::-webkit-scrollbar{display:none}.module-detail-grid-pattern{opacity:.1;pointer-events:none;background-image:repeating-linear-gradient(0deg,#0000,#0000 39px,#fff 39px 40px),repeating-linear-gradient(90deg,#0000,#0000 39px,#fff 39px 40px)}.leaderboard-mask{-webkit-mask-image:linear-gradient(#0000,#000 15%);mask-image:linear-gradient(#0000,#000 15%)}.app-loader-screen{z-index:50;background:#f7f9fc;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.app-loader-card{background:#fff;border:1px solid #dde3eb;border-radius:2rem;flex-direction:column;align-items:center;gap:1.5rem;width:min(100%,24rem);padding:2rem;display:flex;box-shadow:0 24px 40px #38bdf81f}.app-loader-avatar-shell{background:linear-gradient(135deg,#e0f2fe,#e0e7ff);border:2px solid #fff;border-radius:1.5rem;justify-content:center;align-items:center;width:8rem;height:8rem;display:flex;box-shadow:0 12px 24px #0f172a1f}.app-loader-avatar{object-fit:contain;filter:drop-shadow(0 8px 12px #0f172a33);width:5.5rem;height:5.5rem}.app-loader-bot-icon{width:4rem;height:4rem}.app-loader-title{color:#0a1628;margin:0;font-size:1.25rem;font-weight:700}.app-loader-message-row{justify-content:center;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.app-loader-spinner{border:2px solid #0284c7;border-top-color:#0000;border-radius:999px;width:1rem;height:1rem}.app-loader-message{color:#64748b;margin:0;font-size:.875rem;font-weight:600}.avatar-gloss{clip-path:polygon(15% 0,85% 0,65% 100%,35% 100%);pointer-events:none;background:linear-gradient(#fff6,#ffffff0d 60%,#0000)}.login-bg{background:linear-gradient(135deg,#f0f9ff,#f8fafc,#fff1f2 60%,#f0f9ff)}.login-frost-overlay{pointer-events:none;background:radial-gradient(at 30%,#f0f9ff33,#f8fafc80 50%,#fff1f266 80%,#f8fafcd9)}.login-orb-purple{background:radial-gradient(circle,#a855f74d,#0000 70%)}.login-orb-pink{background:radial-gradient(circle,#ec489940,#0000 70%)}.login-orb-blue{background:radial-gradient(circle,#38bdf833,#0000 70%)}.dynamic-header{background-color:var(--bg);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));box-shadow:var(--shadow)}.e-max-h{max-height:var(--max-h);transition:max-height .22s;overflow:hidden}.hero-clip-inset{clip-path:inset(-100% -50% 0)}.card-3d{transform-origin:0;backface-visibility:hidden;transition:transform 2s ease-in-out}.card-accent-sky{border-left:3px solid #0284c7}.card-accent-rose{border-left:3px solid #f43f5e}.card-accent-emerald{border-left:3px solid #059669}.app-loader-copy{text-align:center}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes sunburst-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-sunburst-spin{animation:30s linear infinite sunburst-spin}.chat-markdown{font-family:var(--font-body);overflow-wrap:anywhere;word-break:break-word;font-size:.875rem;line-height:1.625}.chat-markdown h1{font-family:var(--font-display);color:var(--foreground);margin-top:.75rem;margin-bottom:.5rem;font-size:1.25rem;font-weight:700}.chat-markdown h2{font-family:var(--font-display);color:var(--foreground);margin-top:.75rem;margin-bottom:.375rem;font-size:1.1rem;font-weight:700}.chat-markdown h3{font-family:var(--font-display);color:var(--muted-foreground);margin-top:.5rem;margin-bottom:.25rem;font-size:1rem;font-weight:600}.chat-markdown p{margin-top:.375rem;margin-bottom:.375rem}.chat-markdown ul,.chat-markdown ol{margin-top:.375rem;margin-bottom:.375rem;padding-left:1.25rem}.chat-markdown ul{list-style-type:disc}.chat-markdown ol{list-style-type:decimal}.chat-markdown li{margin-top:.125rem;margin-bottom:.125rem}.chat-markdown strong{color:var(--foreground);font-weight:700}.chat-markdown em{font-style:italic}.chat-markdown code{background:var(--secondary);color:var(--primary);border-radius:.25rem;padding:.125rem .375rem;font-size:.8125rem}.chat-markdown pre{background:var(--muted);border:1px solid var(--border);border-radius:.5rem;margin-top:.5rem;margin-bottom:.5rem;padding:.75rem;overflow-x:auto}.chat-markdown pre code{color:inherit;background:0 0;padding:0}.chat-markdown hr{border-color:#94a3b873;margin:.75rem 0}.chat-markdown table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.8125rem}.chat-markdown th{background:var(--muted);text-align:left;border:1px solid var(--border);padding:.375rem .5rem;font-weight:600}.chat-markdown td{border:1px solid var(--border);padding:.375rem .5rem}.chat-markdown blockquote{border-left:3px solid var(--primary);color:var(--muted-foreground);margin:.5rem 0;padding-left:.75rem;font-style:italic}.chat-markdown a{color:var(--primary);text-decoration:underline}.chat-markdown>:first-child{margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown .katex-display{padding-bottom:.15rem;overflow:auto hidden}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} diff --git a/assets/index-B2ktS_Ht.js b/assets/index-CT9JRJBD.js similarity index 91% rename from assets/index-B2ktS_Ht.js rename to assets/index-CT9JRJBD.js index 1a50d095bb354f8d3de56ac768cf47a75ff05139..876a88767f1a46fd9ebfb7cb13c474c9a5d31225 100644 --- a/assets/index-B2ktS_Ht.js +++ b/assets/index-CT9JRJBD.js @@ -1 +1 @@ -import{D as m,Z as u,a as p,X as h,T as f,E as b}from"./index-Dl2Y5a7s.js";import{a6 as V,a7 as W}from"./index-Dl2Y5a7s.js";import{j as e,r as c,b as g}from"./vendor-react-B4AQeu28.js";import{C as v}from"./circle-alert-CmKGy6F7.js";import{M as y}from"./megaphone-BGBgZ1iC.js";import{B as d}from"./bell-D8HSQb3o.js";import{C as j}from"./circle-check-big-D4jhmnoW.js";import{C as k}from"./clipboard-check-CVikGlbr.js";import{f as N,C as w}from"./formatDistanceToNow-E-4T8g7c.js";import{T as C}from"./trash-2-D0AgwsJy.js";import{X as _}from"./x-wHRRR-gQ.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const E={achievement_unlocked:b,level_up:f,quiz_result:k,daily_checkin:j,streak_milestone:h,streak_reminder:d,teacher_announcement:y,new_assignment:p,xp_earned:u,system_alert:v},R=t=>{switch(t){case"achievement_unlocked":case"achievement":return"bg-rose-500/10 text-rose-600";case"xp_earned":return"bg-amber-500/10 text-amber-600";case"daily_checkin":case"checkin":return"bg-emerald-500/10 text-emerald-600";case"streak_milestone":case"streak_reminder":return"bg-orange-500/10 text-orange-600";case"teacher_announcement":return"bg-violet-500/10 text-violet-600";case"new_assignment":case"quiz_result":return"bg-sky-500/10 text-sky-600";case"level_up":return"bg-indigo-500/10 text-indigo-600";case"system_alert":return"bg-red-500/10 text-red-600";default:return"bg-[#edf1f7] text-[#5a6578]"}},z=({notification:t})=>{const{markAsRead:r,deleteNotification:a}=m(),o=E[t.type]||d,i=R(t.type),n=()=>{if(t.isRead||r(t.id),t.type==="streak_reminder"||t.type==="daily_checkin"){window.dispatchEvent(new CustomEvent("mathpulse:navigate",{detail:{tab:"Modules"}}));return}t.actionUrl&&(window.location.href=t.actionUrl)},l=N(t.createdAt,{addSuffix:!0});return e.jsx("div",{role:"button",tabIndex:0,onClick:n,onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),n())},className:`group text-left p-4 border-b border-[#dde3eb] cursor-pointer transition-colors hover:bg-[#edf1f7]/50 ${t.isRead?"":"bg-sky-50/40"}`,children:e.jsxs("div",{className:"flex gap-3",children:[e.jsx("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center flex-shrink-0 ${i}`,children:e.jsx(o,{size:18})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2 mb-1",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] line-clamp-1 font-body",children:t.title}),!t.isRead&&e.jsx("span",{className:"w-2 h-2 rounded-full bg-sky-600 flex-shrink-0 mt-1.5"})]}),e.jsx("p",{className:"text-xs text-[#5a6578] mb-2 line-clamp-2 font-body",children:t.message}),e.jsx("p",{className:"text-xs text-slate-500",children:l})]}),e.jsx("button",{onClick:s=>{s.stopPropagation(),a(t.id)},className:"opacity-0 group-hover:opacity-100 transition-opacity text-slate-400 hover:text-red-500","aria-label":"Delete notification",children:e.jsx(C,{size:14})})]})})},T=({onClose:t})=>{const{notifications:r,unreadCount:a,isLoading:o,markAllAsRead:i}=m(),n=c.useRef(null);c.useEffect(()=>{const s=x=>{n.current&&!n.current.contains(x.target)&&t()};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[t]);const l=e.jsxs("div",{ref:n,className:"fixed right-4 top-20 w-80 bg-[#f7f9fc] rounded-xl shadow-2xl border border-[#dde3eb] max-h-96 overflow-y-auto z-[9999] overflow-hidden",style:{right:"1rem",top:"5rem"},children:[e.jsxs("div",{className:"p-4 border-b border-[#dde3eb] flex items-center justify-between bg-gradient-to-r from-sky-600 to-sky-500",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-display font-bold text-white text-sm",children:"Notifications"}),e.jsx("p",{className:"text-xs text-sky-100 mt-0.5",children:a>0?`${a} unread`:"No new alerts"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a>0&&e.jsxs("button",{onClick:i,className:"text-xs text-sky-200 hover:text-white font-bold transition-colors flex items-center gap-1",children:[e.jsx(w,{size:14}),"Mark all read"]}),e.jsx("button",{onClick:t,className:"text-sky-200 hover:text-white transition-colors",title:"Close",children:e.jsx(_,{size:16})})]})]}),e.jsx("div",{className:"max-h-80 overflow-y-auto",children:o?e.jsx("div",{className:"p-4 space-y-3",children:[1,2,3].map(s=>e.jsx("div",{className:"animate-pulse bg-[#dde3eb] rounded h-12"},s))}):r.length===0?e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(d,{size:48,className:"text-[#d1cec6] mx-auto mb-3"}),e.jsx("p",{className:"text-[#5a6578] text-sm font-body",children:"You're all caught up!"})]}):r.map(s=>e.jsx(z,{notification:s},s.id))})]});return g.createPortal(l,document.body)},H=()=>{const{unreadCount:t}=m(),[r,a]=c.useState(!1),o=c.useRef(null);c.useEffect(()=>{const n=l=>{o.current&&!o.current.contains(l.target)&&a(!1)};return r&&document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}},[r]);const i=t>99?"99+":t.toString();return e.jsxs("div",{ref:o,className:"relative",children:[e.jsxs("button",{onClick:()=>a(!r),className:"relative p-3 bg-[#edf1f7] rounded-xl text-[#5a6578] hover:bg-[#dde3eb] transition-colors","aria-label":"Notifications","aria-expanded":r,"aria-haspopup":"true",children:[e.jsx(d,{size:20}),t>0&&e.jsx("span",{className:"absolute -top-1 -right-1 bg-red-500 text-white text-xs font-bold rounded-full min-w-[18px] h-[18px] flex items-center justify-center px-1",children:i})]}),r&&e.jsx(T,{onClose:()=>a(!1)})]})};export{H as NotificationBell,V as NotificationProvider,W as notify,m as useNotifications}; +import{D as m,Z as u,a as p,X as h,T as f,E as b}from"./index-pcr0VEFr.js";import{a6 as V,a7 as W}from"./index-pcr0VEFr.js";import{j as e,r as c,b as g}from"./vendor-react-B4AQeu28.js";import{C as v}from"./circle-alert-BVTBnraV.js";import{M as y}from"./megaphone-D890PW9A.js";import{B as d}from"./bell-t5TgufAG.js";import{C as j}from"./circle-check-big-C3Ampp76.js";import{C as k}from"./clipboard-check-CrnXJj6c.js";import{f as N,C as w}from"./formatDistanceToNow-rY3oGFbJ.js";import{T as C}from"./trash-2-CcKz2OV0.js";import{X as _}from"./x-W9f2bIhn.js";import"./vendor-firebase-firestore-BJsL6-Wd.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const E={achievement_unlocked:b,level_up:f,quiz_result:k,daily_checkin:j,streak_milestone:h,streak_reminder:d,teacher_announcement:y,new_assignment:p,xp_earned:u,system_alert:v},R=t=>{switch(t){case"achievement_unlocked":case"achievement":return"bg-rose-500/10 text-rose-600";case"xp_earned":return"bg-amber-500/10 text-amber-600";case"daily_checkin":case"checkin":return"bg-emerald-500/10 text-emerald-600";case"streak_milestone":case"streak_reminder":return"bg-orange-500/10 text-orange-600";case"teacher_announcement":return"bg-violet-500/10 text-violet-600";case"new_assignment":case"quiz_result":return"bg-sky-500/10 text-sky-600";case"level_up":return"bg-indigo-500/10 text-indigo-600";case"system_alert":return"bg-red-500/10 text-red-600";default:return"bg-[#edf1f7] text-[#5a6578]"}},z=({notification:t})=>{const{markAsRead:r,deleteNotification:a}=m(),o=E[t.type]||d,i=R(t.type),n=()=>{if(t.isRead||r(t.id),t.type==="streak_reminder"||t.type==="daily_checkin"){window.dispatchEvent(new CustomEvent("mathpulse:navigate",{detail:{tab:"Modules"}}));return}t.actionUrl&&(window.location.href=t.actionUrl)},l=N(t.createdAt,{addSuffix:!0});return e.jsx("div",{role:"button",tabIndex:0,onClick:n,onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),n())},className:`group text-left p-4 border-b border-[#dde3eb] cursor-pointer transition-colors hover:bg-[#edf1f7]/50 ${t.isRead?"":"bg-sky-50/40"}`,children:e.jsxs("div",{className:"flex gap-3",children:[e.jsx("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center flex-shrink-0 ${i}`,children:e.jsx(o,{size:18})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2 mb-1",children:[e.jsx("h4",{className:"text-sm font-bold text-[#0a1628] line-clamp-1 font-body",children:t.title}),!t.isRead&&e.jsx("span",{className:"w-2 h-2 rounded-full bg-sky-600 flex-shrink-0 mt-1.5"})]}),e.jsx("p",{className:"text-xs text-[#5a6578] mb-2 line-clamp-2 font-body",children:t.message}),e.jsx("p",{className:"text-xs text-slate-500",children:l})]}),e.jsx("button",{onClick:s=>{s.stopPropagation(),a(t.id)},className:"opacity-0 group-hover:opacity-100 transition-opacity text-slate-400 hover:text-red-500","aria-label":"Delete notification",children:e.jsx(C,{size:14})})]})})},T=({onClose:t})=>{const{notifications:r,unreadCount:a,isLoading:o,markAllAsRead:i}=m(),n=c.useRef(null);c.useEffect(()=>{const s=x=>{n.current&&!n.current.contains(x.target)&&t()};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[t]);const l=e.jsxs("div",{ref:n,className:"fixed right-4 top-20 w-80 bg-[#f7f9fc] rounded-xl shadow-2xl border border-[#dde3eb] max-h-96 overflow-y-auto z-[9999] overflow-hidden",style:{right:"1rem",top:"5rem"},children:[e.jsxs("div",{className:"p-4 border-b border-[#dde3eb] flex items-center justify-between bg-gradient-to-r from-sky-600 to-sky-500",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-display font-bold text-white text-sm",children:"Notifications"}),e.jsx("p",{className:"text-xs text-sky-100 mt-0.5",children:a>0?`${a} unread`:"No new alerts"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a>0&&e.jsxs("button",{onClick:i,className:"text-xs text-sky-200 hover:text-white font-bold transition-colors flex items-center gap-1",children:[e.jsx(w,{size:14}),"Mark all read"]}),e.jsx("button",{onClick:t,className:"text-sky-200 hover:text-white transition-colors",title:"Close",children:e.jsx(_,{size:16})})]})]}),e.jsx("div",{className:"max-h-80 overflow-y-auto",children:o?e.jsx("div",{className:"p-4 space-y-3",children:[1,2,3].map(s=>e.jsx("div",{className:"animate-pulse bg-[#dde3eb] rounded h-12"},s))}):r.length===0?e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(d,{size:48,className:"text-[#d1cec6] mx-auto mb-3"}),e.jsx("p",{className:"text-[#5a6578] text-sm font-body",children:"You're all caught up!"})]}):r.map(s=>e.jsx(z,{notification:s},s.id))})]});return g.createPortal(l,document.body)},H=()=>{const{unreadCount:t}=m(),[r,a]=c.useState(!1),o=c.useRef(null);c.useEffect(()=>{const n=l=>{o.current&&!o.current.contains(l.target)&&a(!1)};return r&&document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}},[r]);const i=t>99?"99+":t.toString();return e.jsxs("div",{ref:o,className:"relative",children:[e.jsxs("button",{onClick:()=>a(!r),className:"relative p-3 bg-[#edf1f7] rounded-xl text-[#5a6578] hover:bg-[#dde3eb] transition-colors","aria-label":"Notifications","aria-expanded":r,"aria-haspopup":"true",children:[e.jsx(d,{size:20}),t>0&&e.jsx("span",{className:"absolute -top-1 -right-1 bg-red-500 text-white text-xs font-bold rounded-full min-w-[18px] h-[18px] flex items-center justify-center px-1",children:i})]}),r&&e.jsx(T,{onClose:()=>a(!1)})]})};export{H as NotificationBell,V as NotificationProvider,W as notify,m as useNotifications}; diff --git a/assets/index-Dl2Y5a7s.js b/assets/index-pcr0VEFr.js similarity index 98% rename from assets/index-Dl2Y5a7s.js rename to assets/index-pcr0VEFr.js index 05269f898a64626f47767d73a4629165aefdc523..ab1ec115971cadce11b3898cce1480b4d68284d1 100644 --- a/assets/index-Dl2Y5a7s.js +++ b/assets/index-pcr0VEFr.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/automationService-D0yPPxhq.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/chatService-DIDnODj8.js","assets/trackingService-D8Xl_0W8.js","assets/LoginPage-D-1Glnvg.js","assets/button-pKF8t5En.js","assets/input-DghAGnRL.js","assets/sparkles-DXDpj3ao.js","assets/mail-BNL7x2CT.js","assets/eye-BEaH2B-8.js","assets/shield-check-DwpyoHVp.js","assets/TeacherDashboard-BwfdR72-.js","assets/ConfirmModal-BO62ig7W.js","assets/x-wHRRR-gQ.js","assets/trash-2-D0AgwsJy.js","assets/log-out-wnJ21BJr.js","assets/search-D5s5o6Cr.js","assets/check-BoG998GJ.js","assets/plus-CrmryN2j.js","assets/NotificationDropdown-CwrXQKJ9.js","assets/formatDistanceToNow-E-4T8g7c.js","assets/bell-D8HSQb3o.js","assets/circle-check-OLox8hf3.js","assets/circle-alert-CmKGy6F7.js","assets/LogoutActionButton-BeDw8qfE.js","assets/quizService-C2o983YM.js","assets/tooltip--nIi8N_-.js","assets/circle-help-7egOqUPg.js","assets/send-Bv1lHqor.js","assets/chevron-up-bHLZImYg.js","assets/minus-BUZ8QSLu.js","assets/chart-column-CaIU59ve.js","assets/history-C0vXaWOF.js","assets/download-Bvx53dXJ.js","assets/chevron-left-BLeucdCi.js","assets/chevron-right-D8o3zg2m.js","assets/save-BkInuCbo.js","assets/upload-C4j9TBDs.js","assets/useQuery-B50cnw-J.js","assets/subjects-DcwoUK34.js","assets/useCurriculum-DnU6Jf3F.js","assets/circle-check-big-D4jhmnoW.js","assets/ChatMarkdown-C9qC9oWH.js","assets/clock-Dcq6nfrf.js","assets/dialog-DuLafn8Q.js","assets/skeleton-CWsSRCwx.js","assets/vendor-xlsx-uZelXSz_.js","assets/clipboard-check-CVikGlbr.js","assets/AdminDashboard-CIi7plOc.js","assets/Sidebar-BDEiqlEK.js","assets/shirt-CyYDebXG.js","assets/select-DStldRhf.js","assets/dollar-sign-CJnvMNrk.js","assets/switch-B8xho0UQ.js","assets/useSubjectAvailability-DLIjLCt1.js","assets/HeroBanner-CHubdhsr.js","assets/RightSidebar-Bqzdu2TQ.js","assets/quiz_battle_avatar-BXHPSput.js","assets/XPNotification-jBp7lMXB.js","assets/index-B2ktS_Ht.js","assets/megaphone-BGBgZ1iC.js","assets/SupplementalBanner-D8_daQur.js","assets/SupplementalPillCarousel-o-QfEIUf.js","assets/LearningPath-vROmF4Dn.js","assets/ModuleFolderCard-C1jLEevg.js","assets/CompetencyRadarChart-jpfAisiB.js","assets/ModulesPage-CGi0VHmG.js","assets/ScientificCalculator-BQeFLSJX.js","assets/volume-x-Cd_Nj-77.js","assets/confetti.module-C94ZD2ww.js","assets/funnel-C3sJcU2r.js","assets/AIChatPage-BjyZWRE5.js","assets/GradesPage-BX_8Snp_.js","assets/LeaderboardPage-CZ8M4eNL.js","assets/useFeatureAccess-Drs6_TME.js","assets/QuizBattlePage-Dsgg_cNb.js","assets/CompositeAvatar-Col05lJc.js","assets/avatarData-BuQSOXo3.js","assets/AvatarShop-CpnsOARn.js","assets/FloatingAITutor-DJ8KxCL3.js","assets/maximize-2-BkIrwX5U.js","assets/RewardsModal-DHn4d03T.js","assets/ProfileModal-Cqe9yb5X.js","assets/ProfilePictureUploader-5SyI9dXS.js","assets/SettingsModal-CKvK-HcP.js","assets/InitialAssessmentModal-DkLM9iVL.js","assets/diagnosticService-Db0MAPHF.js","assets/AssessmentPage-BlVH5UUU.js","assets/testResetService-BEUr-kie.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/automationService-wHepcbie.js","assets/vendor-firebase-firestore-BJsL6-Wd.js","assets/vendor-firebase-core-whx8i25I.js","assets/vendor-react-B4AQeu28.js","assets/vendor-firebase-auth-D7a6zeTO.js","assets/vendor-firebase-storage-Ct9KPL22.js","assets/vendor-firebase-analytics-N123OPpo.js","assets/vendor-radix-BPuEd8FG.js","assets/vendor-charts-D7t7JfSr.js","assets/vendor-markdown-yqZQ_iQm.js","assets/vendor-markdown-CfVKi3_s.css","assets/chatService-DIwOtBFg.js","assets/trackingService-DVTIYmY9.js","assets/LoginPage-DSKY9f8E.js","assets/button-AeTtN-Gk.js","assets/input-DfDzuOXr.js","assets/sparkles-CcaVyiD_.js","assets/mail-C-ekjMP7.js","assets/eye-5Jz6KeDY.js","assets/shield-check-DFEsr5NL.js","assets/TeacherDashboard-wimn3zBd.js","assets/ConfirmModal-BMBZzISp.js","assets/x-W9f2bIhn.js","assets/trash-2-CcKz2OV0.js","assets/log-out-CXrb7Klg.js","assets/search-NTEnzRsF.js","assets/check-DcmcqBba.js","assets/plus-dU-HIq9R.js","assets/NotificationDropdown-5cx88QEU.js","assets/formatDistanceToNow-rY3oGFbJ.js","assets/bell-t5TgufAG.js","assets/circle-check-DWLljvZa.js","assets/circle-alert-BVTBnraV.js","assets/LogoutActionButton-Bb9kSxNr.js","assets/quizService-oId-3Lm2.js","assets/tooltip-C238w8wC.js","assets/circle-help-DA-BsSug.js","assets/send-gL3P1x3P.js","assets/chevron-up-D_gmtVKu.js","assets/minus-Br3D3UVG.js","assets/chart-column-BNfaspCb.js","assets/history-CQZVqTob.js","assets/download-DnmwFFXB.js","assets/chevron-left-DV53pVuv.js","assets/chevron-right-BMVCfzLO.js","assets/save-UTAW-exi.js","assets/upload-BDJuFJqK.js","assets/useQuery-BbNTyvNN.js","assets/subjects-DsVN1z_r.js","assets/useCurriculum-0U0j41i7.js","assets/circle-check-big-C3Ampp76.js","assets/ChatMarkdown-DD4Fb-Bv.js","assets/clock-BUvVFwS_.js","assets/dialog-CD4cPDri.js","assets/skeleton-DLZLprS1.js","assets/vendor-xlsx-uZelXSz_.js","assets/clipboard-check-CrnXJj6c.js","assets/AdminDashboard-i4G_vjZ1.js","assets/Sidebar-Bm5I2Ejg.js","assets/shirt-DVTcv3em.js","assets/select-Dgzk2zFj.js","assets/dollar-sign-CsIn4CzM.js","assets/switch-VziX97fW.js","assets/useSubjectAvailability-CRpOB4yl.js","assets/HeroBanner-BDsbfXfG.js","assets/RightSidebar-WvOWGMnC.js","assets/quiz_battle_avatar-BXHPSput.js","assets/XPNotification-EXiWPwap.js","assets/index-CT9JRJBD.js","assets/megaphone-D890PW9A.js","assets/SupplementalBanner-DcjEtH8Q.js","assets/SupplementalPillCarousel-jsoA7qpk.js","assets/LearningPath-DjGP7KJN.js","assets/ModuleFolderCard-C2bCHQpq.js","assets/CompetencyRadarChart-SUEb2v3B.js","assets/ModulesPage-D50pSjZj.js","assets/ScientificCalculator-7T0QjPrs.js","assets/volume-x-Bg34ud3a.js","assets/confetti.module-C94ZD2ww.js","assets/funnel-qr3WhEld.js","assets/AIChatPage-BNaYJCk8.js","assets/GradesPage-Czo_osam.js","assets/LeaderboardPage-CP8e3_-L.js","assets/useFeatureAccess-BSo8Mi8o.js","assets/QuizBattlePage-BFiR3wAo.js","assets/CompositeAvatar-Col05lJc.js","assets/avatarData-BuQSOXo3.js","assets/AvatarShop-Dfbf05y9.js","assets/FloatingAITutor-DKZKREY2.js","assets/maximize-2-B618Jqze.js","assets/RewardsModal-DhmptbGU.js","assets/ProfileModal-CMm42gXn.js","assets/ProfilePictureUploader-Bce8Kzgs.js","assets/SettingsModal-PUs-qSAt.js","assets/InitialAssessmentModal-Z0B8mPEg.js","assets/diagnosticService-DXc8cCUG.js","assets/AssessmentPage-CX2nNZ46.js","assets/testResetService-BUxWmPp7.js"])))=>i.map(i=>d[i]); import{r as h,j as b,d as I,c as Tp,f as Pp}from"./vendor-react-B4AQeu28.js";import{persistentLocalCache as Ha,initializeFirestore as Za,setDoc as Ne,doc as W,serverTimestamp as ce,getDoc as we,getDocFromServer as Wo,onSnapshot as Jt,query as Dt,limit as Sr,orderBy as vn,collection as Xe,getDocs as jn,updateDoc as kt,arrayUnion as ju,increment as dr,where as Rt,deleteDoc as Ho,Timestamp as On,runTransaction as _p}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{U as Ep,V as Cp,Y as Ap,Z as Rp,$ as Mp,a0 as Ip,a1 as Dp,a2 as Op,a3 as Lp}from"./vendor-firebase-core-whx8i25I.js";import{browserLocalPersistence as Ka,initializeAuth as Qa,browserSessionPersistence as zp,inMemoryPersistence as Xa,GoogleAuthProvider as jp,createUserWithEmailAndPassword as Np,updateProfile as $p,signInWithEmailAndPassword as Fp,signOut as Vp,onAuthStateChanged as Bp,updatePassword as Up,updateEmail as qp,deleteUser as Gp,EmailAuthProvider as Wp,reauthenticateWithCredential as Hp}from"./vendor-firebase-auth-D7a6zeTO.js";import{g as Zp}from"./vendor-firebase-storage-Ct9KPL22.js";import{g as Kp}from"./vendor-firebase-analytics-N123OPpo.js";import{R as Qp,I as Xp,F as Yp}from"./vendor-radix-BPuEd8FG.js";import{c as Jp}from"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();var js=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},em=class extends js{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<"u"&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(t=>{typeof t=="boolean"?this.setFocused(t):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},Nu=new em,tm={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},nm=class{#e=tm;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}},Zo=new nm;function rm(e){setTimeout(e,0)}var sm=typeof window>"u"||"Deno"in globalThis;function wt(){}function om(e,t){return typeof e=="function"?e(t):e}function im(e){return typeof e=="number"&&e>=0&&e!==1/0}function am(e,t){return Math.max(e+(t||0)-Date.now(),0)}function Ko(e,t){return typeof e=="function"?e(t):e}function cm(e,t){return typeof e=="function"?e(t):e}function Ya(e,t){const{type:n="all",exact:r,fetchStatus:s,predicate:o,queryKey:i,stale:a}=e;if(i){if(r){if(t.queryHash!==ji(i,t.options))return!1}else if(!hr(t.queryKey,i))return!1}if(n!=="all"){const c=t.isActive();if(n==="active"&&!c||n==="inactive"&&c)return!1}return!(typeof a=="boolean"&&t.isStale()!==a||s&&s!==t.state.fetchStatus||o&&!o(t))}function Ja(e,t){const{exact:n,status:r,predicate:s,mutationKey:o}=e;if(o){if(!t.options.mutationKey)return!1;if(n){if(fr(t.options.mutationKey)!==fr(o))return!1}else if(!hr(t.options.mutationKey,o))return!1}return!(r&&t.state.status!==r||s&&!s(t))}function ji(e,t){return(t?.queryKeyHashFn||fr)(e)}function fr(e){return JSON.stringify(e,(t,n)=>Qo(n)?Object.keys(n).sort().reduce((r,s)=>(r[s]=n[s],r),{}):n)}function hr(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(n=>hr(e[n],t[n])):!1}var lm=Object.prototype.hasOwnProperty;function $u(e,t,n=0){if(e===t)return e;if(n>500)return t;const r=ec(e)&&ec(t);if(!r&&!(Qo(e)&&Qo(t)))return t;const o=(r?e:Object.keys(e)).length,i=r?t:Object.keys(t),a=i.length,c=r?new Array(a):{};let u=0;for(let d=0;d{Zo.setTimeout(t,e)})}function dm(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?$u(e,t):t}function fm(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function hm(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var Ni=Symbol();function Fu(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===Ni?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function vR(e,t){return typeof e=="function"?e(...t):!!e}function pm(e,t,n){let r=!1,s;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(s??=t(),r||(r=!0,s.aborted?n():s.addEventListener("abort",n,{once:!0})),s)}),e}var Vu=(()=>{let e=()=>sm;return{isServer(){return e()},setIsServer(t){e=t}}})();function mm(){let e,t;const n=new Promise((s,o)=>{e=s,t=o});n.status="pending",n.catch(()=>{});function r(s){Object.assign(n,s),delete n.resolve,delete n.reject}return n.resolve=s=>{r({status:"fulfilled",value:s}),e(s)},n.reject=s=>{r({status:"rejected",reason:s}),t(s)},n}var gm=rm;function ym(){let e=[],t=0,n=a=>{a()},r=a=>{a()},s=gm;const o=a=>{t?e.push(a):s(()=>{n(a)})},i=()=>{const a=e;e=[],a.length&&s(()=>{r(()=>{a.forEach(c=>{n(c)})})})};return{batch:a=>{let c;t++;try{c=a()}finally{t--,t||i()}return c},batchCalls:a=>(...c)=>{o(()=>{a(...c)})},schedule:o,setNotifyFunction:a=>{n=a},setBatchNotifyFunction:a=>{r=a},setScheduler:a=>{s=a}}}var Ze=ym(),bm=class extends js{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<"u"&&window.addEventListener){const t=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(n=>{n(e)}))}isOnline(){return this.#e}},ys=new bm;function vm(e){return Math.min(1e3*2**e,3e4)}function Bu(e){return(e??"online")==="online"?ys.isOnline():!0}var Xo=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function Uu(e){let t=!1,n=0,r;const s=mm(),o=()=>s.status!=="pending",i=y=>{if(!o()){const g=new Xo(y);f(g),e.onCancel?.(g)}},a=()=>{t=!0},c=()=>{t=!1},u=()=>Nu.isFocused()&&(e.networkMode==="always"||ys.isOnline())&&e.canRun(),d=()=>Bu(e.networkMode)&&e.canRun(),l=y=>{o()||(r?.(),s.resolve(y))},f=y=>{o()||(r?.(),s.reject(y))},p=()=>new Promise(y=>{r=g=>{(o()||u())&&y(g)},e.onPause?.()}).then(()=>{r=void 0,o()||e.onContinue?.()}),m=()=>{if(o())return;let y;const g=n===0?e.initialPromise:void 0;try{y=g??e.fn()}catch(v){y=Promise.reject(v)}Promise.resolve(y).then(l).catch(v=>{if(o())return;const k=e.retry??(Vu.isServer()?0:3),S=e.retryDelay??vm,x=typeof S=="function"?S(n,v):S,T=k===!0||typeof k=="number"&&nu()?void 0:p()).then(()=>{t?f(v):m()})})};return{promise:s,status:()=>s.status,cancel:i,continue:()=>(r?.(),s),cancelRetry:a,continueRetry:c,canStart:d,start:()=>(d()?m():p().then(m),s)}}var qu=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),im(this.gcTime)&&(this.#e=Zo.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Vu.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(Zo.clearTimeout(this.#e),this.#e=void 0)}};function wm(e){return{onFetch:(t,n)=>{const r=t.options,s=t.fetchOptions?.meta?.fetchMore?.direction,o=t.state.data?.pages||[],i=t.state.data?.pageParams||[];let a={pages:[],pageParams:[]},c=0;const u=async()=>{let d=!1;const l=m=>{pm(m,()=>t.signal,()=>d=!0)},f=Fu(t.options,t.fetchOptions),p=async(m,y,g)=>{if(d)return Promise.reject(t.signal.reason);if(y==null&&m.pages.length)return Promise.resolve(m);const k=(()=>{const P={client:t.client,queryKey:t.queryKey,pageParam:y,direction:g?"backward":"forward",meta:t.options.meta};return l(P),P})(),S=await f(k),{maxPages:x}=t.options,T=g?hm:fm;return{pages:T(m.pages,S,x),pageParams:T(m.pageParams,y,x)}};if(s&&o.length){const m=s==="backward",y=m?xm:nc,g={pages:o,pageParams:i},v=y(r,g);a=await p(g,v,m)}else{const m=e??o.length;do{const y=c===0?i[0]??r.initialPageParam:nc(r,a);if(c>0&&y==null)break;a=await p(a,y),c++}while(ct.options.persister?.(u,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=u}}}function nc(e,{pages:t,pageParams:n}){const r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function xm(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Sm=class extends qu{#e;#t;#n;#s;#o;#r;#c;#i;constructor(e){super(),this.#i=!1,this.#c=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#o=e.client,this.#s=this.#o.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=sc(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#r?.promise}setOptions(e){if(this.options={...this.#c,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const t=sc(this.options);t.data!==void 0&&(this.setState(rc(t.data,t.dataUpdatedAt)),this.#t=t)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#s.remove(this)}setData(e,t){const n=dm(this.state.data,e,this.options);return this.#a({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#a({type:"setState",state:e})}cancel(e){const t=this.#r?.promise;return this.#r?.cancel(e),t?t.then(wt).catch(wt):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>cm(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Ni||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>Ko(e.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e==="static"?!1:this.state.isInvalidated?!0:!am(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(t=>t.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#r?.continue()}onOnline(){this.observers.find(t=>t.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#r?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#s.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#r&&(this.#i||this.#l()?this.#r.cancel({revert:!0}):this.#r.cancelRetry()),this.scheduleGc()),this.#s.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}#l(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"}invalidate(){this.state.isInvalidated||this.#a({type:"invalidate"})}async fetch(e,t){if(this.state.fetchStatus!=="idle"&&this.#r?.status()!=="rejected"){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#r)return this.#r.continueRetry(),this.#r.promise}if(e&&this.setOptions(e),!this.options.queryFn){const c=this.observers.find(u=>u.options.queryFn);c&&this.setOptions(c.options)}const n=new AbortController,r=c=>{Object.defineProperty(c,"signal",{enumerable:!0,get:()=>(this.#i=!0,n.signal)})},s=()=>{const c=Fu(this.options,t),d=(()=>{const l={client:this.#o,queryKey:this.queryKey,meta:this.meta};return r(l),l})();return this.#i=!1,this.options.persister?this.options.persister(c,d,this):c(d)},i=(()=>{const c={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#o,state:this.state,fetchFn:s};return r(c),c})();(this.#e==="infinite"?wm(this.options.pages):this.options.behavior)?.onFetch(i,this),this.#n=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==i.fetchOptions?.meta)&&this.#a({type:"fetch",meta:i.fetchOptions?.meta}),this.#r=Uu({initialPromise:t?.initialPromise,fn:i.fetchFn,onCancel:c=>{c instanceof Xo&&c.revert&&this.setState({...this.#n,fetchStatus:"idle"}),n.abort()},onFail:(c,u)=>{this.#a({type:"failed",failureCount:c,error:u})},onPause:()=>{this.#a({type:"pause"})},onContinue:()=>{this.#a({type:"continue"})},retry:i.options.retry,retryDelay:i.options.retryDelay,networkMode:i.options.networkMode,canRun:()=>!0});try{const c=await this.#r.start();if(c===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(c),this.#s.config.onSuccess?.(c,this),this.#s.config.onSettled?.(c,this.state.error,this),c}catch(c){if(c instanceof Xo){if(c.silent)return this.#r.promise;if(c.revert){if(this.state.data===void 0)throw c;return this.state.data}}throw this.#a({type:"error",error:c}),this.#s.config.onError?.(c,this),this.#s.config.onSettled?.(this.state.data,c,this),c}finally{this.scheduleGc()}}#a(e){const t=n=>{switch(e.type){case"failed":return{...n,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...n,fetchStatus:"paused"};case"continue":return{...n,fetchStatus:"fetching"};case"fetch":return{...n,...km(n.data,this.options),fetchMeta:e.meta??null};case"success":const r={...n,...rc(e.data,e.dataUpdatedAt),dataUpdateCount:n.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?r:void 0,r;case"error":const s=e.error;return{...n,error:s,errorUpdateCount:n.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:n.fetchFailureCount+1,fetchFailureReason:s,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...n,isInvalidated:!0};case"setState":return{...n,...e.state}}};this.state=t(this.state),Ze.batch(()=>{this.observers.forEach(n=>{n.onQueryUpdate()}),this.#s.notify({query:this,type:"updated",action:e})})}};function km(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Bu(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function rc(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function sc(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var Tm=class extends qu{#e;#t;#n;#s;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||Pm(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status==="pending"?this.scheduleGc():this.#n.remove(this))}continue(){return this.#s?.continue()??this.execute(this.state.variables)}async execute(e){const t=()=>{this.#o({type:"continue"})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#s=Uu({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(new Error("No mutationFn found")),onFail:(o,i)=>{this.#o({type:"failed",failureCount:o,error:i})},onPause:()=>{this.#o({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});const r=this.state.status==="pending",s=!this.#s.canStart();try{if(r)t();else{this.#o({type:"pending",variables:e,isPaused:s}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);const i=await this.options.onMutate?.(e,n);i!==this.state.context&&this.#o({type:"pending",context:i,variables:e,isPaused:s})}const o=await this.#s.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,n),await this.options.onSuccess?.(o,e,this.state.context,n),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(o,null,e,this.state.context,n),this.#o({type:"success",data:o}),o}catch(o){try{await this.#n.config.onError?.(o,e,this.state.context,this,n)}catch(i){Promise.reject(i)}try{await this.options.onError?.(o,e,this.state.context,n)}catch(i){Promise.reject(i)}try{await this.#n.config.onSettled?.(void 0,o,this.state.variables,this.state.context,this,n)}catch(i){Promise.reject(i)}try{await this.options.onSettled?.(void 0,o,e,this.state.context,n)}catch(i){Promise.reject(i)}throw this.#o({type:"error",error:o}),o}finally{this.#n.runNext(this)}}#o(e){const t=n=>{switch(e.type){case"failed":return{...n,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...n,isPaused:!0};case"continue":return{...n,isPaused:!1};case"pending":return{...n,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...n,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...n,data:void 0,error:e.error,failureCount:n.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=t(this.state),Ze.batch(()=>{this.#t.forEach(n=>{n.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:"updated",action:e})})}};function Pm(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var _m=class extends js{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){const r=new Tm({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);const t=Nr(e);if(typeof t=="string"){const n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#e.delete(e)){const t=Nr(e);if(typeof t=="string"){const n=this.#t.get(t);if(n)if(n.length>1){const r=n.indexOf(e);r!==-1&&n.splice(r,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){const t=Nr(e);if(typeof t=="string"){const r=this.#t.get(t)?.find(s=>s.state.status==="pending");return!r||r===e}else return!0}runNext(e){const t=Nr(e);return typeof t=="string"?this.#t.get(t)?.find(r=>r!==e&&r.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){Ze.batch(()=>{this.#e.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){const t={exact:!0,...e};return this.getAll().find(n=>Ja(t,n))}findAll(e={}){return this.getAll().filter(t=>Ja(e,t))}notify(e){Ze.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){const e=this.getAll().filter(t=>t.state.isPaused);return Ze.batch(()=>Promise.all(e.map(t=>t.continue().catch(wt))))}};function Nr(e){return e.options.scope?.id}var Em=class extends js{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){const r=t.queryKey,s=t.queryHash??ji(r,t);let o=this.get(s);return o||(o=new Sm({client:e,queryKey:r,queryHash:s,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(o)),o}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){Ze.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){const t={exact:!0,...e};return this.getAll().find(n=>Ya(t,n))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter(n=>Ya(e,n)):t}notify(e){Ze.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){Ze.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){Ze.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Cm=class{#e;#t;#n;#s;#o;#r;#c;#i;constructor(e={}){this.#e=e.queryCache||new Em,this.#t=e.mutationCache||new _m,this.#n=e.defaultOptions||{},this.#s=new Map,this.#o=new Map,this.#r=0}mount(){this.#r++,this.#r===1&&(this.#c=Nu.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=ys.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#r--,this.#r===0&&(this.#c?.(),this.#c=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#t.findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Ko(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),o=this.#e.get(r.queryHash)?.state.data,i=om(t,o);if(i!==void 0)return this.#e.build(this,r).setData(i,{...n,manual:!0})}setQueriesData(e,t,n){return Ze.batch(()=>this.#e.findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){const t=this.#e;Ze.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=this.#e;return Ze.batch(()=>(n.findAll(e).forEach(r=>{r.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const n={revert:!0,...t},r=Ze.batch(()=>this.#e.findAll(e).map(s=>s.cancel(n)));return Promise.all(r).then(wt).catch(wt)}invalidateQueries(e,t={}){return Ze.batch(()=>(this.#e.findAll(e).forEach(n=>{n.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t)))}refetchQueries(e,t={}){const n={...t,cancelRefetch:t.cancelRefetch??!0},r=Ze.batch(()=>this.#e.findAll(e).filter(s=>!s.isDisabled()&&!s.isStatic()).map(s=>{let o=s.fetch(void 0,n);return n.throwOnError||(o=o.catch(wt)),s.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(r).then(wt)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=this.#e.build(this,t);return n.isStaleByTime(Ko(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(wt).catch(wt)}fetchInfiniteQuery(e){return e._type="infinite",this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(wt).catch(wt)}ensureInfiniteQueryData(e){return e._type="infinite",this.ensureQueryData(e)}resumePausedMutations(){return ys.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#s.set(fr(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#s.values()],n={};return t.forEach(r=>{hr(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,t){this.#o.set(fr(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#o.values()],n={};return t.forEach(r=>{hr(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=ji(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===Ni&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},Gu=h.createContext(void 0),wR=e=>{const t=h.useContext(Gu);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},Am=({client:e,children:t})=>(h.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),b.jsx(Gu.Provider,{value:e,children:t}));/** * react-router v7.14.2 * @@ -221,11 +221,11 @@ Please change the parent to k(f,S,x)};let o;const i=Rs,a=!rh.jitless,u=a&&aS.value,d=t.catchall;let l;e._zod.parse=(f,p)=>{l??(l=r.value);const m=f.value;return i(m)?a&&u&&p?.async===!1&&p.jitless!==!0?(o||(o=s(t.shape)),f=o(f,p),d?gh([],m,f,p,l,e):f):n(f,p):(f.issues.push({expected:"object",code:"invalid_type",input:m,inst:e}),f)}});function Bl(e,t,n,r){for(const o of e)if(o.issues.length===0)return t.value=o.value,t;const s=e.filter(o=>!Dn(o));return s.length===1?(t.value=s[0].value,s[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(o=>o.issues.map(i=>xn(i,r,wn())))}),t)}const F1=E("$ZodUnion",(e,t)=>{De.init(e,t),de(e._zod,"optin",()=>t.options.some(s=>s._zod.optin==="optional")?"optional":void 0),de(e._zod,"optout",()=>t.options.some(s=>s._zod.optout==="optional")?"optional":void 0),de(e._zod,"values",()=>{if(t.options.every(s=>s._zod.values))return new Set(t.options.flatMap(s=>Array.from(s._zod.values)))}),de(e._zod,"pattern",()=>{if(t.options.every(s=>s._zod.pattern)){const s=t.options.map(o=>o._zod.pattern);return new RegExp(`^(${s.map(o=>Pa(o.source)).join("|")})$`)}});const n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(s,o)=>{if(n)return r(s,o);let i=!1;const a=[];for(const c of t.options){const u=c._zod.run({value:s.value,issues:[]},o);if(u instanceof Promise)a.push(u),i=!0;else{if(u.issues.length===0)return u;a.push(u)}}return i?Promise.all(a).then(c=>Bl(c,s,e,o)):Bl(a,s,e,o)}}),V1=E("$ZodIntersection",(e,t)=>{De.init(e,t),e._zod.parse=(n,r)=>{const s=n.value,o=t.left._zod.run({value:s,issues:[]},r),i=t.right._zod.run({value:s,issues:[]},r);return o instanceof Promise||i instanceof Promise?Promise.all([o,i]).then(([c,u])=>Ul(n,c,u)):Ul(n,o,i)}});function Ei(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(vr(e)&&vr(t)){const n=Object.keys(t),r=Object.keys(e).filter(o=>n.indexOf(o)!==-1),s={...e,...t};for(const o of r){const i=Ei(e[o],t[o]);if(!i.valid)return{valid:!1,mergeErrorPath:[o,...i.mergeErrorPath]};s[o]=i.data}return{valid:!0,data:s}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let r=0;ra.l&&a.r).map(([a])=>a);if(o.length&&s&&e.issues.push({...s,keys:o}),Dn(e))return e;const i=Ei(t.value,n.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}const B1=E("$ZodEnum",(e,t)=>{De.init(e,t);const n=sh(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=new RegExp(`^(${n.filter(s=>cS.has(typeof s)).map(s=>typeof s=="string"?Ws(s):s.toString()).join("|")})$`),e._zod.parse=(s,o)=>{const i=s.value;return r.has(i)||s.issues.push({code:"invalid_value",values:n,input:i,inst:e}),s}}),U1=E("$ZodTransform",(e,t)=>{De.init(e,t),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new nh(e.constructor.name);const s=t.transform(n.value,n);if(r.async)return(s instanceof Promise?s:Promise.resolve(s)).then(i=>(n.value=i,n));if(s instanceof Promise)throw new zn;return n.value=s,n}});function ql(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const yh=E("$ZodOptional",(e,t)=>{De.init(e,t),e._zod.optin="optional",e._zod.optout="optional",de(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),de(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${Pa(n.source)})?$`):void 0}),e._zod.parse=(n,r)=>{if(t.innerType._zod.optin==="optional"){const s=t.innerType._zod.run(n,r);return s instanceof Promise?s.then(o=>ql(o,n.value)):ql(s,n.value)}return n.value===void 0?n:t.innerType._zod.run(n,r)}}),q1=E("$ZodExactOptional",(e,t)=>{yh.init(e,t),de(e._zod,"values",()=>t.innerType._zod.values),de(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(n,r)=>t.innerType._zod.run(n,r)}),G1=E("$ZodNullable",(e,t)=>{De.init(e,t),de(e._zod,"optin",()=>t.innerType._zod.optin),de(e._zod,"optout",()=>t.innerType._zod.optout),de(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${Pa(n.source)}|null)$`):void 0}),de(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,r)=>n.value===null?n:t.innerType._zod.run(n,r)}),W1=E("$ZodDefault",(e,t)=>{De.init(e,t),e._zod.optin="optional",de(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);if(n.value===void 0)return n.value=t.defaultValue,n;const s=t.innerType._zod.run(n,r);return s instanceof Promise?s.then(o=>Gl(o,t)):Gl(s,t)}});function Gl(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const H1=E("$ZodPrefault",(e,t)=>{De.init(e,t),e._zod.optin="optional",de(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,r)=>(r.direction==="backward"||n.value===void 0&&(n.value=t.defaultValue),t.innerType._zod.run(n,r))}),Z1=E("$ZodNonOptional",(e,t)=>{De.init(e,t),de(e._zod,"values",()=>{const n=t.innerType._zod.values;return n?new Set([...n].filter(r=>r!==void 0)):void 0}),e._zod.parse=(n,r)=>{const s=t.innerType._zod.run(n,r);return s instanceof Promise?s.then(o=>Wl(o,e)):Wl(s,e)}});function Wl(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const K1=E("$ZodCatch",(e,t)=>{De.init(e,t),de(e._zod,"optin",()=>t.innerType._zod.optin),de(e._zod,"optout",()=>t.innerType._zod.optout),de(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);const s=t.innerType._zod.run(n,r);return s instanceof Promise?s.then(o=>(n.value=o.value,o.issues.length&&(n.value=t.catchValue({...n,error:{issues:o.issues.map(i=>xn(i,r,wn()))},input:n.value}),n.issues=[]),n)):(n.value=s.value,s.issues.length&&(n.value=t.catchValue({...n,error:{issues:s.issues.map(o=>xn(o,r,wn()))},input:n.value}),n.issues=[]),n)}}),Q1=E("$ZodPipe",(e,t)=>{De.init(e,t),de(e._zod,"values",()=>t.in._zod.values),de(e._zod,"optin",()=>t.in._zod.optin),de(e._zod,"optout",()=>t.out._zod.optout),de(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,r)=>{if(r.direction==="backward"){const o=t.out._zod.run(n,r);return o instanceof Promise?o.then(i=>Hr(i,t.in,r)):Hr(o,t.in,r)}const s=t.in._zod.run(n,r);return s instanceof Promise?s.then(o=>Hr(o,t.out,r)):Hr(s,t.out,r)}});function Hr(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const X1=E("$ZodReadonly",(e,t)=>{De.init(e,t),de(e._zod,"propValues",()=>t.innerType._zod.propValues),de(e._zod,"values",()=>t.innerType._zod.values),de(e._zod,"optin",()=>t.innerType?._zod?.optin),de(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);const s=t.innerType._zod.run(n,r);return s instanceof Promise?s.then(Hl):Hl(s)}});function Hl(e){return e.value=Object.freeze(e.value),e}const Y1=E("$ZodCustom",(e,t)=>{Nt.init(e,t),De.init(e,t),e._zod.parse=(n,r)=>n,e._zod.check=n=>{const r=n.value,s=t.fn(r);if(s instanceof Promise)return s.then(o=>Zl(o,n,r,e));Zl(s,n,r,e)}});function Zl(e,t,n,r){if(!e){const s={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(s.params=r._zod.def.params),t.issues.push(wr(s))}}var Kl;class J1{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...n){const r=n[0];return this._map.set(t,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const n=this._map.get(t);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(t),this}get(t){const n=t._zod.parent;if(n){const r={...this.get(n)??{}};delete r.id;const s={...r,...this._map.get(t)};return Object.keys(s).length?s:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function ek(){return new J1}(Kl=globalThis).__zod_globalRegistry??(Kl.__zod_globalRegistry=ek());const ir=globalThis.__zod_globalRegistry;function tk(e,t){return new e({type:"string",...Q(t)})}function nk(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...Q(t)})}function Ql(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...Q(t)})}function rk(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...Q(t)})}function sk(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Q(t)})}function ok(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Q(t)})}function ik(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Q(t)})}function ak(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...Q(t)})}function ck(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...Q(t)})}function lk(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...Q(t)})}function uk(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...Q(t)})}function dk(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...Q(t)})}function fk(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...Q(t)})}function hk(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...Q(t)})}function pk(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...Q(t)})}function mk(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...Q(t)})}function gk(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...Q(t)})}function yk(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Q(t)})}function bk(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Q(t)})}function vk(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...Q(t)})}function wk(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...Q(t)})}function xk(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...Q(t)})}function Sk(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...Q(t)})}function kk(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Q(t)})}function Tk(e,t){return new e({type:"string",format:"date",check:"string_format",...Q(t)})}function Pk(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...Q(t)})}function _k(e,t){return new e({type:"string",format:"duration",check:"string_format",...Q(t)})}function Ek(e){return new e({type:"unknown"})}function Ck(e,t){return new e({type:"never",...Q(t)})}function bh(e,t){return new YS({check:"max_length",...Q(t),maximum:e})}function Is(e,t){return new JS({check:"min_length",...Q(t),minimum:e})}function vh(e,t){return new e1({check:"length_equals",...Q(t),length:e})}function Ak(e,t){return new t1({check:"string_format",format:"regex",...Q(t),pattern:e})}function Rk(e){return new n1({check:"string_format",format:"lowercase",...Q(e)})}function Mk(e){return new r1({check:"string_format",format:"uppercase",...Q(e)})}function Ik(e,t){return new s1({check:"string_format",format:"includes",...Q(t),includes:e})}function Dk(e,t){return new o1({check:"string_format",format:"starts_with",...Q(t),prefix:e})}function Ok(e,t){return new i1({check:"string_format",format:"ends_with",...Q(t),suffix:e})}function Gn(e){return new a1({check:"overwrite",tx:e})}function Lk(e){return Gn(t=>t.normalize(e))}function zk(){return Gn(e=>e.trim())}function jk(){return Gn(e=>e.toLowerCase())}function Nk(){return Gn(e=>e.toUpperCase())}function $k(){return Gn(e=>iS(e))}function Fk(e,t,n){return new e({type:"array",element:t,...Q(n)})}function Vk(e,t,n){return new e({type:"custom",check:"custom",fn:t,...Q(n)})}function Bk(e){const t=Uk(n=>(n.addIssue=r=>{if(typeof r=="string")n.issues.push(wr(r,n.value,t._zod.def));else{const s=r;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=n.value),s.inst??(s.inst=t),s.continue??(s.continue=!t._zod.def.abort),n.issues.push(wr(s))}},e(n.value,n)));return t}function Uk(e,t){const n=new Nt({check:"custom",...Q(t)});return n._zod.check=e,n}function wh(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ir,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function Be(e,t,n={path:[],schemaPath:[]}){var r;const s=e._zod.def,o=t.seen.get(e);if(o)return o.count++,n.schemaPath.includes(e)&&(o.cycle=n.path),o.schema;const i={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,i);const a=e._zod.toJSONSchema?.();if(a)i.schema=a;else{const d={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,d);else{const f=i.schema,p=t.processors[s.type];if(!p)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${s.type}`);p(e,t,f,d)}const l=e._zod.parent;l&&(i.ref||(i.ref=l),Be(l,t,d),t.seen.get(l).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(i.schema,c),t.io==="input"&&He(e)&&(delete i.schema.examples,delete i.schema.default),t.io==="input"&&i.schema._prefault&&((r=i.schema).default??(r.default=i.schema._prefault)),delete i.schema._prefault,t.seen.get(e).schema}function xh(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const i of e.seen.entries()){const a=e.metadataRegistry.get(i[0])?.id;if(a){const c=r.get(a);if(c&&c!==i[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(a,i[0])}}const s=i=>{const a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const l=e.external.registry.get(i[0])?.id,f=e.external.uri??(m=>m);if(l)return{ref:f(l)};const p=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=p,{defId:p,ref:`${f("__shared")}#/${a}/${p}`}}if(i[1]===n)return{ref:"#"};const u=`#/${a}/`,d=i[1].schema.id??`__schema${e.counter++}`;return{defId:d,ref:u+d}},o=i=>{if(i[1].schema.$ref)return;const a=i[1],{ref:c,defId:u}=s(i);a.def={...a.schema},u&&(a.defId=u);const d=a.schema;for(const l in d)delete d[l];d.$ref=c};if(e.cycles==="throw")for(const i of e.seen.entries()){const a=i[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/ -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const i of e.seen.entries()){const a=i[1];if(t===i[0]){o(i);continue}if(e.external){const u=e.external.registry.get(i[0])?.id;if(t!==i[0]&&u){o(i);continue}}if(e.metadataRegistry.get(i[0])?.id){o(i);continue}if(a.cycle){o(i);continue}if(a.count>1&&e.reused==="ref"){o(i);continue}}}function Sh(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=i=>{const a=e.seen.get(i);if(a.ref===null)return;const c=a.def??a.schema,u={...c},d=a.ref;if(a.ref=null,d){r(d);const f=e.seen.get(d),p=f.schema;if(p.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(p)):Object.assign(c,p),Object.assign(c,u),i._zod.parent===d)for(const y in c)y==="$ref"||y==="allOf"||y in u||delete c[y];if(p.$ref&&f.def)for(const y in c)y==="$ref"||y==="allOf"||y in f.def&&JSON.stringify(c[y])===JSON.stringify(f.def[y])&&delete c[y]}const l=i._zod.parent;if(l&&l!==d){r(l);const f=e.seen.get(l);if(f?.schema.$ref&&(c.$ref=f.schema.$ref,f.def))for(const p in c)p==="$ref"||p==="allOf"||p in f.def&&JSON.stringify(c[p])===JSON.stringify(f.def[p])&&delete c[p]}e.override({zodSchema:i,jsonSchema:c,path:a.path??[]})};for(const i of[...e.seen.entries()].reverse())r(i[0]);const s={};if(e.target==="draft-2020-12"?s.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?s.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?s.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");s.$id=e.external.uri(i)}Object.assign(s,n.def??n.schema);const o=e.external?.defs??{};for(const i of e.seen.entries()){const a=i[1];a.def&&a.defId&&(o[a.defId]=a.def)}e.external||Object.keys(o).length>0&&(e.target==="draft-2020-12"?s.$defs=o:s.definitions=o);try{const i=JSON.parse(JSON.stringify(s));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:Ds(t,"input",e.processors),output:Ds(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function He(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return He(r.element,n);if(r.type==="set")return He(r.valueType,n);if(r.type==="lazy")return He(r.getter(),n);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return He(r.innerType,n);if(r.type==="intersection")return He(r.left,n)||He(r.right,n);if(r.type==="record"||r.type==="map")return He(r.keyType,n)||He(r.valueType,n);if(r.type==="pipe")return He(r.in,n)||He(r.out,n);if(r.type==="object"){for(const s in r.shape)if(He(r.shape[s],n))return!0;return!1}if(r.type==="union"){for(const s of r.options)if(He(s,n))return!0;return!1}if(r.type==="tuple"){for(const s of r.items)if(He(s,n))return!0;return!!(r.rest&&He(r.rest,n))}return!1}const qk=(e,t={})=>n=>{const r=wh({...n,processors:t});return Be(e,r),xh(r,e),Sh(r,e)},Ds=(e,t,n={})=>r=>{const{libraryOptions:s,target:o}=r??{},i=wh({...s??{},target:o,io:t,processors:n});return Be(e,i),xh(i,e),Sh(i,e)},Gk={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Wk=(e,t,n,r)=>{const s=n;s.type="string";const{minimum:o,maximum:i,format:a,patterns:c,contentEncoding:u}=e._zod.bag;if(typeof o=="number"&&(s.minLength=o),typeof i=="number"&&(s.maxLength=i),a&&(s.format=Gk[a]??a,s.format===""&&delete s.format,a==="time"&&delete s.format),u&&(s.contentEncoding=u),c&&c.size>0){const d=[...c];d.length===1?s.pattern=d[0].source:d.length>1&&(s.allOf=[...d.map(l=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:l.source}))])}},Hk=(e,t,n,r)=>{n.not={}},Zk=(e,t,n,r)=>{},Kk=(e,t,n,r)=>{const s=e._zod.def,o=sh(s.entries);o.every(i=>typeof i=="number")&&(n.type="number"),o.every(i=>typeof i=="string")&&(n.type="string"),n.enum=o},Qk=(e,t,n,r)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Xk=(e,t,n,r)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Yk=(e,t,n,r)=>{const s=n,o=e._zod.def,{minimum:i,maximum:a}=e._zod.bag;typeof i=="number"&&(s.minItems=i),typeof a=="number"&&(s.maxItems=a),s.type="array",s.items=Be(o.element,t,{...r,path:[...r.path,"items"]})},Jk=(e,t,n,r)=>{const s=n,o=e._zod.def;s.type="object",s.properties={};const i=o.shape;for(const u in i)s.properties[u]=Be(i[u],t,{...r,path:[...r.path,"properties",u]});const a=new Set(Object.keys(i)),c=new Set([...a].filter(u=>{const d=o.shape[u]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));c.size>0&&(s.required=Array.from(c)),o.catchall?._zod.def.type==="never"?s.additionalProperties=!1:o.catchall?o.catchall&&(s.additionalProperties=Be(o.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):t.io==="output"&&(s.additionalProperties=!1)},eT=(e,t,n,r)=>{const s=e._zod.def,o=s.inclusive===!1,i=s.options.map((a,c)=>Be(a,t,{...r,path:[...r.path,o?"oneOf":"anyOf",c]}));o?n.oneOf=i:n.anyOf=i},tT=(e,t,n,r)=>{const s=e._zod.def,o=Be(s.left,t,{...r,path:[...r.path,"allOf",0]}),i=Be(s.right,t,{...r,path:[...r.path,"allOf",1]}),a=u=>"allOf"in u&&Object.keys(u).length===1,c=[...a(o)?o.allOf:[o],...a(i)?i.allOf:[i]];n.allOf=c},nT=(e,t,n,r)=>{const s=e._zod.def,o=Be(s.innerType,t,r),i=t.seen.get(e);t.target==="openapi-3.0"?(i.ref=s.innerType,n.nullable=!0):n.anyOf=[o,{type:"null"}]},rT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType},sT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType,n.default=JSON.parse(JSON.stringify(s.defaultValue))},oT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType,t.io==="input"&&(n._prefault=JSON.parse(JSON.stringify(s.defaultValue)))},iT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType;let i;try{i=s.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i},aT=(e,t,n,r)=>{const s=e._zod.def,o=t.io==="input"?s.in._zod.def.type==="transform"?s.out:s.in:s.out;Be(o,t,r);const i=t.seen.get(e);i.ref=o},cT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType,n.readOnly=!0},kh=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType},lT=E("ZodISODateTime",(e,t)=>{x1.init(e,t),Te.init(e,t)});function uT(e){return kk(lT,e)}const dT=E("ZodISODate",(e,t)=>{S1.init(e,t),Te.init(e,t)});function fT(e){return Tk(dT,e)}const hT=E("ZodISOTime",(e,t)=>{k1.init(e,t),Te.init(e,t)});function pT(e){return Pk(hT,e)}const mT=E("ZodISODuration",(e,t)=>{T1.init(e,t),Te.init(e,t)});function gT(e){return _k(mT,e)}const yT=(e,t)=>{lh.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>bS(e,n)},flatten:{value:n=>yS(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,_i,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,_i,2)}},isEmpty:{get(){return e.issues.length===0}}})},ft=E("ZodError",yT,{Parent:Error}),bT=Ea(ft),vT=Ca(ft),wT=Hs(ft),xT=Zs(ft),ST=xS(ft),kT=SS(ft),TT=kS(ft),PT=TS(ft),_T=PS(ft),ET=_S(ft),CT=ES(ft),AT=CS(ft),Oe=E("ZodType",(e,t)=>(De.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Ds(e,"input"),output:Ds(e,"output")}}),e.toJSONSchema=qk(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(rn(t,{checks:[...t.checks??[],...n.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(n,r)=>sn(e,n,r),e.brand=()=>e,e.register=((n,r)=>(n.add(e,r),e)),e.parse=(n,r)=>bT(e,n,r,{callee:e.parse}),e.safeParse=(n,r)=>wT(e,n,r),e.parseAsync=async(n,r)=>vT(e,n,r,{callee:e.parseAsync}),e.safeParseAsync=async(n,r)=>xT(e,n,r),e.spa=e.safeParseAsync,e.encode=(n,r)=>ST(e,n,r),e.decode=(n,r)=>kT(e,n,r),e.encodeAsync=async(n,r)=>TT(e,n,r),e.decodeAsync=async(n,r)=>PT(e,n,r),e.safeEncode=(n,r)=>_T(e,n,r),e.safeDecode=(n,r)=>ET(e,n,r),e.safeEncodeAsync=async(n,r)=>CT(e,n,r),e.safeDecodeAsync=async(n,r)=>AT(e,n,r),e.refine=(n,r)=>e.check(SP(n,r)),e.superRefine=n=>e.check(kP(n)),e.overwrite=n=>e.check(Gn(n)),e.optional=()=>Jl(e),e.exactOptional=()=>lP(e),e.nullable=()=>eu(e),e.nullish=()=>Jl(eu(e)),e.nonoptional=n=>mP(e,n),e.array=()=>YT(e),e.or=n=>nP([e,n]),e.and=n=>sP(e,n),e.transform=n=>tu(e,aP(n)),e.default=n=>fP(e,n),e.prefault=n=>pP(e,n),e.catch=n=>yP(e,n),e.pipe=n=>tu(e,n),e.readonly=()=>wP(e),e.describe=n=>{const r=e.clone();return ir.add(r,{description:n}),r},Object.defineProperty(e,"description",{get(){return ir.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return ir.get(e);const r=e.clone();return ir.add(r,n[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=n=>n(e),e)),Th=E("_ZodString",(e,t)=>{Aa.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(r,s,o)=>Wk(e,r,s);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...r)=>e.check(Ak(...r)),e.includes=(...r)=>e.check(Ik(...r)),e.startsWith=(...r)=>e.check(Dk(...r)),e.endsWith=(...r)=>e.check(Ok(...r)),e.min=(...r)=>e.check(Is(...r)),e.max=(...r)=>e.check(bh(...r)),e.length=(...r)=>e.check(vh(...r)),e.nonempty=(...r)=>e.check(Is(1,...r)),e.lowercase=r=>e.check(Rk(r)),e.uppercase=r=>e.check(Mk(r)),e.trim=()=>e.check(zk()),e.normalize=(...r)=>e.check(Lk(...r)),e.toLowerCase=()=>e.check(jk()),e.toUpperCase=()=>e.check(Nk()),e.slugify=()=>e.check($k())}),RT=E("ZodString",(e,t)=>{Aa.init(e,t),Th.init(e,t),e.email=n=>e.check(nk(MT,n)),e.url=n=>e.check(ak(IT,n)),e.jwt=n=>e.check(Sk(HT,n)),e.emoji=n=>e.check(ck(DT,n)),e.guid=n=>e.check(Ql(Xl,n)),e.uuid=n=>e.check(rk(Zr,n)),e.uuidv4=n=>e.check(sk(Zr,n)),e.uuidv6=n=>e.check(ok(Zr,n)),e.uuidv7=n=>e.check(ik(Zr,n)),e.nanoid=n=>e.check(lk(OT,n)),e.guid=n=>e.check(Ql(Xl,n)),e.cuid=n=>e.check(uk(LT,n)),e.cuid2=n=>e.check(dk(zT,n)),e.ulid=n=>e.check(fk(jT,n)),e.base64=n=>e.check(vk(qT,n)),e.base64url=n=>e.check(wk(GT,n)),e.xid=n=>e.check(hk(NT,n)),e.ksuid=n=>e.check(pk($T,n)),e.ipv4=n=>e.check(mk(FT,n)),e.ipv6=n=>e.check(gk(VT,n)),e.cidrv4=n=>e.check(yk(BT,n)),e.cidrv6=n=>e.check(bk(UT,n)),e.e164=n=>e.check(xk(WT,n)),e.datetime=n=>e.check(uT(n)),e.date=n=>e.check(fT(n)),e.time=n=>e.check(pT(n)),e.duration=n=>e.check(gT(n))});function Ph(e){return tk(RT,e)}const Te=E("ZodStringFormat",(e,t)=>{Se.init(e,t),Th.init(e,t)}),MT=E("ZodEmail",(e,t)=>{f1.init(e,t),Te.init(e,t)}),Xl=E("ZodGUID",(e,t)=>{u1.init(e,t),Te.init(e,t)}),Zr=E("ZodUUID",(e,t)=>{d1.init(e,t),Te.init(e,t)}),IT=E("ZodURL",(e,t)=>{h1.init(e,t),Te.init(e,t)}),DT=E("ZodEmoji",(e,t)=>{p1.init(e,t),Te.init(e,t)}),OT=E("ZodNanoID",(e,t)=>{m1.init(e,t),Te.init(e,t)}),LT=E("ZodCUID",(e,t)=>{g1.init(e,t),Te.init(e,t)}),zT=E("ZodCUID2",(e,t)=>{y1.init(e,t),Te.init(e,t)}),jT=E("ZodULID",(e,t)=>{b1.init(e,t),Te.init(e,t)}),NT=E("ZodXID",(e,t)=>{v1.init(e,t),Te.init(e,t)}),$T=E("ZodKSUID",(e,t)=>{w1.init(e,t),Te.init(e,t)}),FT=E("ZodIPv4",(e,t)=>{P1.init(e,t),Te.init(e,t)}),VT=E("ZodIPv6",(e,t)=>{_1.init(e,t),Te.init(e,t)}),BT=E("ZodCIDRv4",(e,t)=>{E1.init(e,t),Te.init(e,t)}),UT=E("ZodCIDRv6",(e,t)=>{C1.init(e,t),Te.init(e,t)}),qT=E("ZodBase64",(e,t)=>{A1.init(e,t),Te.init(e,t)}),GT=E("ZodBase64URL",(e,t)=>{M1.init(e,t),Te.init(e,t)}),WT=E("ZodE164",(e,t)=>{I1.init(e,t),Te.init(e,t)}),HT=E("ZodJWT",(e,t)=>{O1.init(e,t),Te.init(e,t)}),ZT=E("ZodUnknown",(e,t)=>{L1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Zk()});function Yl(){return Ek(ZT)}const KT=E("ZodNever",(e,t)=>{z1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Hk(e,n,r)});function QT(e){return Ck(KT,e)}const XT=E("ZodArray",(e,t)=>{j1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Yk(e,n,r,s),e.element=t.element,e.min=(n,r)=>e.check(Is(n,r)),e.nonempty=n=>e.check(Is(1,n)),e.max=(n,r)=>e.check(bh(n,r)),e.length=(n,r)=>e.check(vh(n,r)),e.unwrap=()=>e.element});function YT(e,t){return Fk(XT,e,t)}const JT=E("ZodObject",(e,t)=>{$1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Jk(e,n,r,s),de(e,"shape",()=>t.shape),e.keyof=()=>oP(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Yl()}),e.loose=()=>e.clone({...e._zod.def,catchall:Yl()}),e.strict=()=>e.clone({...e._zod.def,catchall:QT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>fS(e,n),e.safeExtend=n=>hS(e,n),e.merge=n=>pS(e,n),e.pick=n=>uS(e,n),e.omit=n=>dS(e,n),e.partial=(...n)=>mS(_h,e,n[0]),e.required=(...n)=>gS(Eh,e,n[0])});function eP(e,t){const n={type:"object",shape:e??{},...Q(t)};return new JT(n)}const tP=E("ZodUnion",(e,t)=>{F1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>eT(e,n,r,s),e.options=t.options});function nP(e,t){return new tP({type:"union",options:e,...Q(t)})}const rP=E("ZodIntersection",(e,t)=>{V1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>tT(e,n,r,s)});function sP(e,t){return new rP({type:"intersection",left:e,right:t})}const Ci=E("ZodEnum",(e,t)=>{B1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(r,s,o)=>Kk(e,r,s),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(r,s)=>{const o={};for(const i of r)if(n.has(i))o[i]=t.entries[i];else throw new Error(`Key ${i} not found in enum`);return new Ci({...t,checks:[],...Q(s),entries:o})},e.exclude=(r,s)=>{const o={...t.entries};for(const i of r)if(n.has(i))delete o[i];else throw new Error(`Key ${i} not found in enum`);return new Ci({...t,checks:[],...Q(s),entries:o})}});function oP(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Ci({type:"enum",entries:n,...Q(t)})}const iP=E("ZodTransform",(e,t)=>{U1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Xk(e,n),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new nh(e.constructor.name);n.addIssue=o=>{if(typeof o=="string")n.issues.push(wr(o,n.value,t));else{const i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=e),n.issues.push(wr(i))}};const s=t.transform(n.value,n);return s instanceof Promise?s.then(o=>(n.value=o,n)):(n.value=s,n)}});function aP(e){return new iP({type:"transform",transform:e})}const _h=E("ZodOptional",(e,t)=>{yh.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>kh(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function Jl(e){return new _h({type:"optional",innerType:e})}const cP=E("ZodExactOptional",(e,t)=>{q1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>kh(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function lP(e){return new cP({type:"optional",innerType:e})}const uP=E("ZodNullable",(e,t)=>{G1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>nT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function eu(e){return new uP({type:"nullable",innerType:e})}const dP=E("ZodDefault",(e,t)=>{W1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>sT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function fP(e,t){return new dP({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():ih(t)}})}const hP=E("ZodPrefault",(e,t)=>{H1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>oT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function pP(e,t){return new hP({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():ih(t)}})}const Eh=E("ZodNonOptional",(e,t)=>{Z1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>rT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function mP(e,t){return new Eh({type:"nonoptional",innerType:e,...Q(t)})}const gP=E("ZodCatch",(e,t)=>{K1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>iT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function yP(e,t){return new gP({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const bP=E("ZodPipe",(e,t)=>{Q1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>aT(e,n,r,s),e.in=t.in,e.out=t.out});function tu(e,t){return new bP({type:"pipe",in:e,out:t})}const vP=E("ZodReadonly",(e,t)=>{X1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>cT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function wP(e){return new vP({type:"readonly",innerType:e})}const xP=E("ZodCustom",(e,t)=>{Y1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Qk(e,n)});function SP(e,t={}){return Vk(xP,e,t)}function kP(e){return Bk(e)}const TP=/[<>]/;function PP(e,t="User"){if(typeof e!="string")return t;const n=e.replace(/[<>]/g,"").replace(/\s+/g," ").trim();return n.length>0?n.slice(0,100):t}const _P=/^\+?[0-9 ()\-.]{7,20}$/,EP=Ph().trim().min(1,"Full name is required").max(100,"Full name must be 100 characters or fewer").refine(e=>!TP.test(e),{message:"Full name cannot contain < or > characters"}),CP=Ph().trim().max(20,"Phone number must be 20 characters or fewer").refine(e=>e.length===0||_P.test(e),{message:"Phone number must contain only digits and + ( ) - . spaces"}),AP=eP({name:EP,phone:CP.optional()});function kR(e){const t=AP.safeParse({name:e.name??"",phone:e.phone??""});return t.success?null:t.error.issues[0]?.message??"Invalid profile data"}new jp;const Ai="mathpulse.pendingAuthRole",Ch="mathpulse.lastAuthRole",RP=e=>{if(e==="admin")throw new Error("Admin account creation is restricted. Please contact an existing administrator.")},Ra=(e,t)=>{const n=e,r=new Error(n.message||t);return n.code&&(r.code=n.code),r},TR=e=>{try{localStorage.setItem(Ai,e),localStorage.setItem(Ch,e)}catch{}},MP=()=>{try{const e=localStorage.getItem(Ai);return localStorage.removeItem(Ai),e==="student"||e==="teacher"||e==="admin"?e:null}catch{return null}},IP=()=>{try{const e=localStorage.getItem(Ch);return e==="student"||e==="teacher"||e==="admin"?e:null}catch{return null}},PR=async(e,t,n,r,s={})=>{try{RP(r);const i=(await Np(be,e,t)).user;return await $p(i,{displayName:n}),await Ah(i,r,s)}catch(o){const i=o;throw console.error("[ERROR] Error signing up:",{code:i.code,message:i.message,fullError:o}),Ra(o,"Failed to create account")}},_R=async(e,t)=>{try{await Fp(be,e,t)}catch(n){const r=n;throw console.error("[ERROR] Error signing in:",{code:r.code,message:r.message,fullError:n}),Ra(n,"Failed to sign in")}},nu=async()=>{try{await Vp(be)}catch(e){throw console.error("Error signing out:",e),Ra(e,"Failed to sign out")}},Ah=async(e,t,n)=>{const r=`${Date.now()}`.slice(-12).padStart(12,"0"),s={uid:e.uid,email:e.email||"",name:e.displayName||n.name||"User",role:t,photo:e.photoURL||"",createdAt:ce(),updatedAt:ce()},o=(()=>{switch(t){case"student":return{lrn:n.lrn||r,grade:n.grade||"Grade 11",section:n.section||"Section A",classSectionId:n.classSectionId||"",adviserTeacherId:n.adviserTeacherId||"",adviserTeacherName:n.adviserTeacherName||"",schoolYear:n.schoolYear||"",school:n.school||"",enrollmentDate:new Date().toISOString().split("T")[0],major:n.major||"General",gpa:n.gpa||"0.00",level:1,currentXP:0,totalXP:0,atRiskSubjects:[],hasTakenDiagnostic:!1,iarAssessmentState:"not_started",startingQuarterG11:"Q1",recommendedPace:"normal"};case"teacher":return{teacherId:`TCH-${Date.now()}`,department:n.department||"Mathematics",subject:n.subject||"Mathematics",yearsOfExperience:n.yearsOfExperience||"0",qualification:n.qualification||"",students:[]};case"admin":return{adminId:`ADM-${Date.now()}`,position:n.position||"Administrator",department:n.department||"System"}}})(),i={...s,...o};return await Ne(W($,"users",e.uid),i),i},Ma=async e=>{try{const t=W($,"users",e),n=await we(t);return n.exists()?{...n.data(),uid:n.id}:null}catch(t){return console.error("Error getting user profile:",t),null}},DP=async e=>{try{const t=W($,"users",e),n=await Wo(t);return n.exists()?{...n.data(),uid:n.id}:null}catch(t){return console.warn("[getUserProfileFromServer] Server read failed, falling back to cache:",t),Ma(e)}},OP=async(e,t)=>{try{const n=await Ma(e);if(!n)throw new Error("Profile not found");const r=["name","email","phone","photo","avatarLayers","gender"],s={student:["lrn","grade","section","school","enrollmentDate","major","gpa"],teacher:["department","subject","yearsOfExperience","qualification"],admin:["department","position"]},o=new Set([...r,...s[n.role]]),i={};Object.entries(t).forEach(([c,u])=>{if(!(u===void 0||!o.has(c))){if(c==="avatarLayers"&&typeof u=="object"&&u!==null){const d=u;i[c]={top:typeof d.top=="string"?d.top:"",bottom:typeof d.bottom=="string"?d.bottom:"",shoes:typeof d.shoes=="string"?d.shoes:"",accessory:typeof d.accessory=="string"?d.accessory:""};return}i[c]=u}});const a=W($,"users",e);await Ne(a,{...i,updatedAt:ce()},{merge:!0})}catch(n){throw console.error("Error updating user profile:",n),n}},Rh=h.createContext({currentUser:null,userProfile:null,loading:!0,isLoggedIn:!1,userRole:"student",refreshProfile:async()=>{}}),Rr=()=>{const e=h.useContext(Rh);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},LP=({children:e})=>{const[t,n]=h.useState(null),[r,s]=h.useState(null),[o,i]=h.useState(!0),[a,c]=h.useState("student"),u=f=>{if(!f)return null;const p=f.trim().toLowerCase();return p==="testteacher@school.edu"?"teacher":p==="testadmin@school.edu"?"admin":p==="teststudent@school.edu"?"student":null};h.useEffect(()=>Bp(be,async p=>{if(i(!0),n(p),p){const m=MP()||IP()||u(p.email)||"student",y=m==="admin"?"student":m;let g=await Ma(p.uid);if(!g&&p.email){const v=y,k=p.displayName||"User";try{g=await Ah(p,v,{name:k}),v==="student"&&oe(async()=>{const{triggerStudentEnrolled:S}=await import("./automationService-D0yPPxhq.js");return{triggerStudentEnrolled:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(({triggerStudentEnrolled:S})=>S({lrn:g?.lrn||p.uid,name:k,email:p.email||"",gradeLevel:""})).catch(S=>console.error("[WARN] Automation: enrollment pipeline failed:",S))}catch(S){console.error("[ERROR] AuthContext: Failed to auto-create profile:",S)}}g?(c(g.role),s(g)):(c(y),s({uid:p.uid,email:p.email||"",name:p.displayName||"User",role:y,photo:p.photoURL||"",createdAt:new Date,updatedAt:new Date}))}else c("student"),s(null);i(!1)}),[]);const d=async()=>{if(t){const f=await DP(t.uid);f&&s(f)}},l={currentUser:t,userProfile:r,loading:o,isLoggedIn:!!t,userRole:r?.role||a,refreshProfile:d};return b.jsx(Rh.Provider,{value:l,children:e})},zP=({children:e})=>{const{currentUser:t}=Rr(),[n,r]=h.useState(!1),[s,o]=h.useState(!0),[i,a]=h.useState("your teacher");return h.useEffect(()=>{if(!t?.uid){o(!1);return}const c=W($,"users",t.uid);return Jt(c,async d=>{if(!d.exists()){o(!1);return}const l=d.data(),f=l?.teacherAckRequired===!0,p=l?.teacherAcknowledged===!0;if(f&&!p){r(!0);const m=l?.teacherId;if(m)try{const{getDoc:y}=await oe(async()=>{const{getDoc:v}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{getDoc:v}},__vite__mapDeps([1,2])),g=await y(W($,"users",m));if(g.exists()){const v=g.data();a(PP(v?.displayName||v?.name,"your teacher"))}}catch{}}else r(!1);o(!1)},()=>{o(!1)})},[t?.uid]),s?b.jsx("div",{className:"flex items-center justify-center min-h-screen bg-slate-50",children:b.jsx(Rx,{className:"animate-spin text-slate-400",size:32})}):b.jsx(Ff,{mode:"wait",children:n?b.jsx(Ln.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"flex items-center justify-center min-h-screen bg-slate-50 p-6",children:b.jsxs("div",{className:"max-w-md w-full bg-white border border-slate-200 rounded-2xl p-8 shadow-sm text-center space-y-6",children:[b.jsx("div",{className:"w-16 h-16 bg-rose-50 rounded-full flex items-center justify-center mx-auto",children:b.jsx(Ix,{className:"text-rose-500",size:28})}),b.jsxs("div",{children:[b.jsx("h2",{className:"text-xl font-bold text-slate-900",children:"Progress Paused"}),b.jsxs("p",{className:"text-sm text-slate-500 mt-2",children:["Your learning path is temporarily paused while ",i," reviews your recent progress."]})]}),b.jsx("div",{className:"bg-amber-50 border border-amber-200 rounded-lg p-4 text-left",children:b.jsxs("div",{className:"flex items-start gap-3",children:[b.jsx(ki,{className:"text-amber-500 flex-shrink-0 mt-0.5",size:16}),b.jsxs("div",{className:"text-sm text-amber-800",children:[b.jsx("p",{className:"font-semibold",children:"Why am I seeing this?"}),b.jsxs("p",{className:"mt-1",children:["The system detected that you may need additional support. ",i," has been notified and will reach out soon with a personalized plan."]})]})]})}),b.jsx("div",{className:"text-xs text-slate-400",children:"You can still review completed lessons and practice problems while you wait."})]})},"gate"):b.jsx(Ln.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:e},"content")})},jP=/(```[\s\S]*?```|`[^`\n]+`)/g,NP=/(\$\$[\s\S]*?\$\$|\$[^$\n]+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]|\[(?![^[]*\]\()[^\]]+\]|(?]*>[\s\S]*?<\s*\/\s*think\s*>/gi,VP=/<\s*\/?\s*think\b[^>]*>/gi,BP=/<\s*\/\s*think\s*>/gi,UP=/<\s*(\/?)\s*think\b([\s\S]*?)>/gi,qP=/(?:<\s*\/?\s*t(?:h(?:i(?:n(?:k)?)?)?)?)\s*$/i,GP=/(?:<\s*\/?\s*t(?:h(?:i(?:n(?:k)?)?)?)?)\s*$/i,WP=/\bfinal\s+answer\s*:|(?:^|\n)\s*#{1,6}\s+\S|(?:^|\n)\s*(?:answer|solution)\s*:|(?:^|\n)\s*here(?:'s| is)\b|(?:^|\n)\s*(?:\d+[.)]|[-*])\s+\S/i,HP=/^\s*(?:okay|alright|let\s+me|i\s+should|i\s+need\s+to|i\s+will|wait|hmm|maybe|the\s+user\s+asked|let\s+us|let's)\b/i;function Mh(e){return e.replace(UP,(t,n,r)=>`<${n?"/":""}think${r}>`)}function ZP(e,t){t.lastIndex=0;let n=-1,r=t.exec(e);for(;r;)n=r.index+r[0].length,r=t.exec(e);return n}function KP(e){const t=Mh(e);if(/<\s*think\b/i.test(t))return"";const n=ZP(t,BP);return n===-1?"":t.slice(n).trim()}function QP(e){const t=e.replace(/\r\n?/g,` +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const i of e.seen.entries()){const a=i[1];if(t===i[0]){o(i);continue}if(e.external){const u=e.external.registry.get(i[0])?.id;if(t!==i[0]&&u){o(i);continue}}if(e.metadataRegistry.get(i[0])?.id){o(i);continue}if(a.cycle){o(i);continue}if(a.count>1&&e.reused==="ref"){o(i);continue}}}function Sh(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=i=>{const a=e.seen.get(i);if(a.ref===null)return;const c=a.def??a.schema,u={...c},d=a.ref;if(a.ref=null,d){r(d);const f=e.seen.get(d),p=f.schema;if(p.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(p)):Object.assign(c,p),Object.assign(c,u),i._zod.parent===d)for(const y in c)y==="$ref"||y==="allOf"||y in u||delete c[y];if(p.$ref&&f.def)for(const y in c)y==="$ref"||y==="allOf"||y in f.def&&JSON.stringify(c[y])===JSON.stringify(f.def[y])&&delete c[y]}const l=i._zod.parent;if(l&&l!==d){r(l);const f=e.seen.get(l);if(f?.schema.$ref&&(c.$ref=f.schema.$ref,f.def))for(const p in c)p==="$ref"||p==="allOf"||p in f.def&&JSON.stringify(c[p])===JSON.stringify(f.def[p])&&delete c[p]}e.override({zodSchema:i,jsonSchema:c,path:a.path??[]})};for(const i of[...e.seen.entries()].reverse())r(i[0]);const s={};if(e.target==="draft-2020-12"?s.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?s.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?s.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");s.$id=e.external.uri(i)}Object.assign(s,n.def??n.schema);const o=e.external?.defs??{};for(const i of e.seen.entries()){const a=i[1];a.def&&a.defId&&(o[a.defId]=a.def)}e.external||Object.keys(o).length>0&&(e.target==="draft-2020-12"?s.$defs=o:s.definitions=o);try{const i=JSON.parse(JSON.stringify(s));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:Ds(t,"input",e.processors),output:Ds(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function He(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return He(r.element,n);if(r.type==="set")return He(r.valueType,n);if(r.type==="lazy")return He(r.getter(),n);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return He(r.innerType,n);if(r.type==="intersection")return He(r.left,n)||He(r.right,n);if(r.type==="record"||r.type==="map")return He(r.keyType,n)||He(r.valueType,n);if(r.type==="pipe")return He(r.in,n)||He(r.out,n);if(r.type==="object"){for(const s in r.shape)if(He(r.shape[s],n))return!0;return!1}if(r.type==="union"){for(const s of r.options)if(He(s,n))return!0;return!1}if(r.type==="tuple"){for(const s of r.items)if(He(s,n))return!0;return!!(r.rest&&He(r.rest,n))}return!1}const qk=(e,t={})=>n=>{const r=wh({...n,processors:t});return Be(e,r),xh(r,e),Sh(r,e)},Ds=(e,t,n={})=>r=>{const{libraryOptions:s,target:o}=r??{},i=wh({...s??{},target:o,io:t,processors:n});return Be(e,i),xh(i,e),Sh(i,e)},Gk={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Wk=(e,t,n,r)=>{const s=n;s.type="string";const{minimum:o,maximum:i,format:a,patterns:c,contentEncoding:u}=e._zod.bag;if(typeof o=="number"&&(s.minLength=o),typeof i=="number"&&(s.maxLength=i),a&&(s.format=Gk[a]??a,s.format===""&&delete s.format,a==="time"&&delete s.format),u&&(s.contentEncoding=u),c&&c.size>0){const d=[...c];d.length===1?s.pattern=d[0].source:d.length>1&&(s.allOf=[...d.map(l=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:l.source}))])}},Hk=(e,t,n,r)=>{n.not={}},Zk=(e,t,n,r)=>{},Kk=(e,t,n,r)=>{const s=e._zod.def,o=sh(s.entries);o.every(i=>typeof i=="number")&&(n.type="number"),o.every(i=>typeof i=="string")&&(n.type="string"),n.enum=o},Qk=(e,t,n,r)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Xk=(e,t,n,r)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Yk=(e,t,n,r)=>{const s=n,o=e._zod.def,{minimum:i,maximum:a}=e._zod.bag;typeof i=="number"&&(s.minItems=i),typeof a=="number"&&(s.maxItems=a),s.type="array",s.items=Be(o.element,t,{...r,path:[...r.path,"items"]})},Jk=(e,t,n,r)=>{const s=n,o=e._zod.def;s.type="object",s.properties={};const i=o.shape;for(const u in i)s.properties[u]=Be(i[u],t,{...r,path:[...r.path,"properties",u]});const a=new Set(Object.keys(i)),c=new Set([...a].filter(u=>{const d=o.shape[u]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));c.size>0&&(s.required=Array.from(c)),o.catchall?._zod.def.type==="never"?s.additionalProperties=!1:o.catchall?o.catchall&&(s.additionalProperties=Be(o.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):t.io==="output"&&(s.additionalProperties=!1)},eT=(e,t,n,r)=>{const s=e._zod.def,o=s.inclusive===!1,i=s.options.map((a,c)=>Be(a,t,{...r,path:[...r.path,o?"oneOf":"anyOf",c]}));o?n.oneOf=i:n.anyOf=i},tT=(e,t,n,r)=>{const s=e._zod.def,o=Be(s.left,t,{...r,path:[...r.path,"allOf",0]}),i=Be(s.right,t,{...r,path:[...r.path,"allOf",1]}),a=u=>"allOf"in u&&Object.keys(u).length===1,c=[...a(o)?o.allOf:[o],...a(i)?i.allOf:[i]];n.allOf=c},nT=(e,t,n,r)=>{const s=e._zod.def,o=Be(s.innerType,t,r),i=t.seen.get(e);t.target==="openapi-3.0"?(i.ref=s.innerType,n.nullable=!0):n.anyOf=[o,{type:"null"}]},rT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType},sT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType,n.default=JSON.parse(JSON.stringify(s.defaultValue))},oT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType,t.io==="input"&&(n._prefault=JSON.parse(JSON.stringify(s.defaultValue)))},iT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType;let i;try{i=s.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i},aT=(e,t,n,r)=>{const s=e._zod.def,o=t.io==="input"?s.in._zod.def.type==="transform"?s.out:s.in:s.out;Be(o,t,r);const i=t.seen.get(e);i.ref=o},cT=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType,n.readOnly=!0},kh=(e,t,n,r)=>{const s=e._zod.def;Be(s.innerType,t,r);const o=t.seen.get(e);o.ref=s.innerType},lT=E("ZodISODateTime",(e,t)=>{x1.init(e,t),Te.init(e,t)});function uT(e){return kk(lT,e)}const dT=E("ZodISODate",(e,t)=>{S1.init(e,t),Te.init(e,t)});function fT(e){return Tk(dT,e)}const hT=E("ZodISOTime",(e,t)=>{k1.init(e,t),Te.init(e,t)});function pT(e){return Pk(hT,e)}const mT=E("ZodISODuration",(e,t)=>{T1.init(e,t),Te.init(e,t)});function gT(e){return _k(mT,e)}const yT=(e,t)=>{lh.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>bS(e,n)},flatten:{value:n=>yS(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,_i,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,_i,2)}},isEmpty:{get(){return e.issues.length===0}}})},ft=E("ZodError",yT,{Parent:Error}),bT=Ea(ft),vT=Ca(ft),wT=Hs(ft),xT=Zs(ft),ST=xS(ft),kT=SS(ft),TT=kS(ft),PT=TS(ft),_T=PS(ft),ET=_S(ft),CT=ES(ft),AT=CS(ft),Oe=E("ZodType",(e,t)=>(De.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Ds(e,"input"),output:Ds(e,"output")}}),e.toJSONSchema=qk(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(rn(t,{checks:[...t.checks??[],...n.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(n,r)=>sn(e,n,r),e.brand=()=>e,e.register=((n,r)=>(n.add(e,r),e)),e.parse=(n,r)=>bT(e,n,r,{callee:e.parse}),e.safeParse=(n,r)=>wT(e,n,r),e.parseAsync=async(n,r)=>vT(e,n,r,{callee:e.parseAsync}),e.safeParseAsync=async(n,r)=>xT(e,n,r),e.spa=e.safeParseAsync,e.encode=(n,r)=>ST(e,n,r),e.decode=(n,r)=>kT(e,n,r),e.encodeAsync=async(n,r)=>TT(e,n,r),e.decodeAsync=async(n,r)=>PT(e,n,r),e.safeEncode=(n,r)=>_T(e,n,r),e.safeDecode=(n,r)=>ET(e,n,r),e.safeEncodeAsync=async(n,r)=>CT(e,n,r),e.safeDecodeAsync=async(n,r)=>AT(e,n,r),e.refine=(n,r)=>e.check(SP(n,r)),e.superRefine=n=>e.check(kP(n)),e.overwrite=n=>e.check(Gn(n)),e.optional=()=>Jl(e),e.exactOptional=()=>lP(e),e.nullable=()=>eu(e),e.nullish=()=>Jl(eu(e)),e.nonoptional=n=>mP(e,n),e.array=()=>YT(e),e.or=n=>nP([e,n]),e.and=n=>sP(e,n),e.transform=n=>tu(e,aP(n)),e.default=n=>fP(e,n),e.prefault=n=>pP(e,n),e.catch=n=>yP(e,n),e.pipe=n=>tu(e,n),e.readonly=()=>wP(e),e.describe=n=>{const r=e.clone();return ir.add(r,{description:n}),r},Object.defineProperty(e,"description",{get(){return ir.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return ir.get(e);const r=e.clone();return ir.add(r,n[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=n=>n(e),e)),Th=E("_ZodString",(e,t)=>{Aa.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(r,s,o)=>Wk(e,r,s);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...r)=>e.check(Ak(...r)),e.includes=(...r)=>e.check(Ik(...r)),e.startsWith=(...r)=>e.check(Dk(...r)),e.endsWith=(...r)=>e.check(Ok(...r)),e.min=(...r)=>e.check(Is(...r)),e.max=(...r)=>e.check(bh(...r)),e.length=(...r)=>e.check(vh(...r)),e.nonempty=(...r)=>e.check(Is(1,...r)),e.lowercase=r=>e.check(Rk(r)),e.uppercase=r=>e.check(Mk(r)),e.trim=()=>e.check(zk()),e.normalize=(...r)=>e.check(Lk(...r)),e.toLowerCase=()=>e.check(jk()),e.toUpperCase=()=>e.check(Nk()),e.slugify=()=>e.check($k())}),RT=E("ZodString",(e,t)=>{Aa.init(e,t),Th.init(e,t),e.email=n=>e.check(nk(MT,n)),e.url=n=>e.check(ak(IT,n)),e.jwt=n=>e.check(Sk(HT,n)),e.emoji=n=>e.check(ck(DT,n)),e.guid=n=>e.check(Ql(Xl,n)),e.uuid=n=>e.check(rk(Zr,n)),e.uuidv4=n=>e.check(sk(Zr,n)),e.uuidv6=n=>e.check(ok(Zr,n)),e.uuidv7=n=>e.check(ik(Zr,n)),e.nanoid=n=>e.check(lk(OT,n)),e.guid=n=>e.check(Ql(Xl,n)),e.cuid=n=>e.check(uk(LT,n)),e.cuid2=n=>e.check(dk(zT,n)),e.ulid=n=>e.check(fk(jT,n)),e.base64=n=>e.check(vk(qT,n)),e.base64url=n=>e.check(wk(GT,n)),e.xid=n=>e.check(hk(NT,n)),e.ksuid=n=>e.check(pk($T,n)),e.ipv4=n=>e.check(mk(FT,n)),e.ipv6=n=>e.check(gk(VT,n)),e.cidrv4=n=>e.check(yk(BT,n)),e.cidrv6=n=>e.check(bk(UT,n)),e.e164=n=>e.check(xk(WT,n)),e.datetime=n=>e.check(uT(n)),e.date=n=>e.check(fT(n)),e.time=n=>e.check(pT(n)),e.duration=n=>e.check(gT(n))});function Ph(e){return tk(RT,e)}const Te=E("ZodStringFormat",(e,t)=>{Se.init(e,t),Th.init(e,t)}),MT=E("ZodEmail",(e,t)=>{f1.init(e,t),Te.init(e,t)}),Xl=E("ZodGUID",(e,t)=>{u1.init(e,t),Te.init(e,t)}),Zr=E("ZodUUID",(e,t)=>{d1.init(e,t),Te.init(e,t)}),IT=E("ZodURL",(e,t)=>{h1.init(e,t),Te.init(e,t)}),DT=E("ZodEmoji",(e,t)=>{p1.init(e,t),Te.init(e,t)}),OT=E("ZodNanoID",(e,t)=>{m1.init(e,t),Te.init(e,t)}),LT=E("ZodCUID",(e,t)=>{g1.init(e,t),Te.init(e,t)}),zT=E("ZodCUID2",(e,t)=>{y1.init(e,t),Te.init(e,t)}),jT=E("ZodULID",(e,t)=>{b1.init(e,t),Te.init(e,t)}),NT=E("ZodXID",(e,t)=>{v1.init(e,t),Te.init(e,t)}),$T=E("ZodKSUID",(e,t)=>{w1.init(e,t),Te.init(e,t)}),FT=E("ZodIPv4",(e,t)=>{P1.init(e,t),Te.init(e,t)}),VT=E("ZodIPv6",(e,t)=>{_1.init(e,t),Te.init(e,t)}),BT=E("ZodCIDRv4",(e,t)=>{E1.init(e,t),Te.init(e,t)}),UT=E("ZodCIDRv6",(e,t)=>{C1.init(e,t),Te.init(e,t)}),qT=E("ZodBase64",(e,t)=>{A1.init(e,t),Te.init(e,t)}),GT=E("ZodBase64URL",(e,t)=>{M1.init(e,t),Te.init(e,t)}),WT=E("ZodE164",(e,t)=>{I1.init(e,t),Te.init(e,t)}),HT=E("ZodJWT",(e,t)=>{O1.init(e,t),Te.init(e,t)}),ZT=E("ZodUnknown",(e,t)=>{L1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Zk()});function Yl(){return Ek(ZT)}const KT=E("ZodNever",(e,t)=>{z1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Hk(e,n,r)});function QT(e){return Ck(KT,e)}const XT=E("ZodArray",(e,t)=>{j1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Yk(e,n,r,s),e.element=t.element,e.min=(n,r)=>e.check(Is(n,r)),e.nonempty=n=>e.check(Is(1,n)),e.max=(n,r)=>e.check(bh(n,r)),e.length=(n,r)=>e.check(vh(n,r)),e.unwrap=()=>e.element});function YT(e,t){return Fk(XT,e,t)}const JT=E("ZodObject",(e,t)=>{$1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Jk(e,n,r,s),de(e,"shape",()=>t.shape),e.keyof=()=>oP(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Yl()}),e.loose=()=>e.clone({...e._zod.def,catchall:Yl()}),e.strict=()=>e.clone({...e._zod.def,catchall:QT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>fS(e,n),e.safeExtend=n=>hS(e,n),e.merge=n=>pS(e,n),e.pick=n=>uS(e,n),e.omit=n=>dS(e,n),e.partial=(...n)=>mS(_h,e,n[0]),e.required=(...n)=>gS(Eh,e,n[0])});function eP(e,t){const n={type:"object",shape:e??{},...Q(t)};return new JT(n)}const tP=E("ZodUnion",(e,t)=>{F1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>eT(e,n,r,s),e.options=t.options});function nP(e,t){return new tP({type:"union",options:e,...Q(t)})}const rP=E("ZodIntersection",(e,t)=>{V1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>tT(e,n,r,s)});function sP(e,t){return new rP({type:"intersection",left:e,right:t})}const Ci=E("ZodEnum",(e,t)=>{B1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(r,s,o)=>Kk(e,r,s),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(r,s)=>{const o={};for(const i of r)if(n.has(i))o[i]=t.entries[i];else throw new Error(`Key ${i} not found in enum`);return new Ci({...t,checks:[],...Q(s),entries:o})},e.exclude=(r,s)=>{const o={...t.entries};for(const i of r)if(n.has(i))delete o[i];else throw new Error(`Key ${i} not found in enum`);return new Ci({...t,checks:[],...Q(s),entries:o})}});function oP(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Ci({type:"enum",entries:n,...Q(t)})}const iP=E("ZodTransform",(e,t)=>{U1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Xk(e,n),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new nh(e.constructor.name);n.addIssue=o=>{if(typeof o=="string")n.issues.push(wr(o,n.value,t));else{const i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=e),n.issues.push(wr(i))}};const s=t.transform(n.value,n);return s instanceof Promise?s.then(o=>(n.value=o,n)):(n.value=s,n)}});function aP(e){return new iP({type:"transform",transform:e})}const _h=E("ZodOptional",(e,t)=>{yh.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>kh(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function Jl(e){return new _h({type:"optional",innerType:e})}const cP=E("ZodExactOptional",(e,t)=>{q1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>kh(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function lP(e){return new cP({type:"optional",innerType:e})}const uP=E("ZodNullable",(e,t)=>{G1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>nT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function eu(e){return new uP({type:"nullable",innerType:e})}const dP=E("ZodDefault",(e,t)=>{W1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>sT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function fP(e,t){return new dP({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():ih(t)}})}const hP=E("ZodPrefault",(e,t)=>{H1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>oT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function pP(e,t){return new hP({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():ih(t)}})}const Eh=E("ZodNonOptional",(e,t)=>{Z1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>rT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function mP(e,t){return new Eh({type:"nonoptional",innerType:e,...Q(t)})}const gP=E("ZodCatch",(e,t)=>{K1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>iT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function yP(e,t){return new gP({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const bP=E("ZodPipe",(e,t)=>{Q1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>aT(e,n,r,s),e.in=t.in,e.out=t.out});function tu(e,t){return new bP({type:"pipe",in:e,out:t})}const vP=E("ZodReadonly",(e,t)=>{X1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>cT(e,n,r,s),e.unwrap=()=>e._zod.def.innerType});function wP(e){return new vP({type:"readonly",innerType:e})}const xP=E("ZodCustom",(e,t)=>{Y1.init(e,t),Oe.init(e,t),e._zod.processJSONSchema=(n,r,s)=>Qk(e,n)});function SP(e,t={}){return Vk(xP,e,t)}function kP(e){return Bk(e)}const TP=/[<>]/;function PP(e,t="User"){if(typeof e!="string")return t;const n=e.replace(/[<>]/g,"").replace(/\s+/g," ").trim();return n.length>0?n.slice(0,100):t}const _P=/^\+?[0-9 ()\-.]{7,20}$/,EP=Ph().trim().min(1,"Full name is required").max(100,"Full name must be 100 characters or fewer").refine(e=>!TP.test(e),{message:"Full name cannot contain < or > characters"}),CP=Ph().trim().max(20,"Phone number must be 20 characters or fewer").refine(e=>e.length===0||_P.test(e),{message:"Phone number must contain only digits and + ( ) - . spaces"}),AP=eP({name:EP,phone:CP.optional()});function kR(e){const t=AP.safeParse({name:e.name??"",phone:e.phone??""});return t.success?null:t.error.issues[0]?.message??"Invalid profile data"}new jp;const Ai="mathpulse.pendingAuthRole",Ch="mathpulse.lastAuthRole",RP=e=>{if(e==="admin")throw new Error("Admin account creation is restricted. Please contact an existing administrator.")},Ra=(e,t)=>{const n=e,r=new Error(n.message||t);return n.code&&(r.code=n.code),r},TR=e=>{try{localStorage.setItem(Ai,e),localStorage.setItem(Ch,e)}catch{}},MP=()=>{try{const e=localStorage.getItem(Ai);return localStorage.removeItem(Ai),e==="student"||e==="teacher"||e==="admin"?e:null}catch{return null}},IP=()=>{try{const e=localStorage.getItem(Ch);return e==="student"||e==="teacher"||e==="admin"?e:null}catch{return null}},PR=async(e,t,n,r,s={})=>{try{RP(r);const i=(await Np(be,e,t)).user;return await $p(i,{displayName:n}),await Ah(i,r,s)}catch(o){const i=o;throw console.error("[ERROR] Error signing up:",{code:i.code,message:i.message,fullError:o}),Ra(o,"Failed to create account")}},_R=async(e,t)=>{try{await Fp(be,e,t)}catch(n){const r=n;throw console.error("[ERROR] Error signing in:",{code:r.code,message:r.message,fullError:n}),Ra(n,"Failed to sign in")}},nu=async()=>{try{await Vp(be)}catch(e){throw console.error("Error signing out:",e),Ra(e,"Failed to sign out")}},Ah=async(e,t,n)=>{const r=`${Date.now()}`.slice(-12).padStart(12,"0"),s={uid:e.uid,email:e.email||"",name:e.displayName||n.name||"User",role:t,photo:e.photoURL||"",createdAt:ce(),updatedAt:ce()},o=(()=>{switch(t){case"student":return{lrn:n.lrn||r,grade:n.grade||"Grade 11",section:n.section||"Section A",classSectionId:n.classSectionId||"",adviserTeacherId:n.adviserTeacherId||"",adviserTeacherName:n.adviserTeacherName||"",schoolYear:n.schoolYear||"",school:n.school||"",enrollmentDate:new Date().toISOString().split("T")[0],major:n.major||"General",gpa:n.gpa||"0.00",level:1,currentXP:0,totalXP:0,atRiskSubjects:[],hasTakenDiagnostic:!1,iarAssessmentState:"not_started",startingQuarterG11:"Q1",recommendedPace:"normal"};case"teacher":return{teacherId:`TCH-${Date.now()}`,department:n.department||"Mathematics",subject:n.subject||"Mathematics",yearsOfExperience:n.yearsOfExperience||"0",qualification:n.qualification||"",students:[]};case"admin":return{adminId:`ADM-${Date.now()}`,position:n.position||"Administrator",department:n.department||"System"}}})(),i={...s,...o};return await Ne(W($,"users",e.uid),i),i},Ma=async e=>{try{const t=W($,"users",e),n=await we(t);return n.exists()?{...n.data(),uid:n.id}:null}catch(t){return console.error("Error getting user profile:",t),null}},DP=async e=>{try{const t=W($,"users",e),n=await Wo(t);return n.exists()?{...n.data(),uid:n.id}:null}catch(t){return console.warn("[getUserProfileFromServer] Server read failed, falling back to cache:",t),Ma(e)}},OP=async(e,t)=>{try{const n=await Ma(e);if(!n)throw new Error("Profile not found");const r=["name","email","phone","photo","avatarLayers","gender"],s={student:["lrn","grade","section","school","enrollmentDate","major","gpa"],teacher:["department","subject","yearsOfExperience","qualification"],admin:["department","position"]},o=new Set([...r,...s[n.role]]),i={};Object.entries(t).forEach(([c,u])=>{if(!(u===void 0||!o.has(c))){if(c==="avatarLayers"&&typeof u=="object"&&u!==null){const d=u;i[c]={top:typeof d.top=="string"?d.top:"",bottom:typeof d.bottom=="string"?d.bottom:"",shoes:typeof d.shoes=="string"?d.shoes:"",accessory:typeof d.accessory=="string"?d.accessory:""};return}i[c]=u}});const a=W($,"users",e);await Ne(a,{...i,updatedAt:ce()},{merge:!0})}catch(n){throw console.error("Error updating user profile:",n),n}},Rh=h.createContext({currentUser:null,userProfile:null,loading:!0,isLoggedIn:!1,userRole:"student",refreshProfile:async()=>{}}),Rr=()=>{const e=h.useContext(Rh);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},LP=({children:e})=>{const[t,n]=h.useState(null),[r,s]=h.useState(null),[o,i]=h.useState(!0),[a,c]=h.useState("student"),u=f=>{if(!f)return null;const p=f.trim().toLowerCase();return p==="testteacher@school.edu"?"teacher":p==="testadmin@school.edu"?"admin":p==="teststudent@school.edu"?"student":null};h.useEffect(()=>Bp(be,async p=>{if(i(!0),n(p),p){const m=MP()||IP()||u(p.email)||"student",y=m==="admin"?"student":m;let g=await Ma(p.uid);if(!g&&p.email){const v=y,k=p.displayName||"User";try{g=await Ah(p,v,{name:k}),v==="student"&&oe(async()=>{const{triggerStudentEnrolled:S}=await import("./automationService-wHepcbie.js");return{triggerStudentEnrolled:S}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(({triggerStudentEnrolled:S})=>S({lrn:g?.lrn||p.uid,name:k,email:p.email||"",gradeLevel:""})).catch(S=>console.error("[WARN] Automation: enrollment pipeline failed:",S))}catch(S){console.error("[ERROR] AuthContext: Failed to auto-create profile:",S)}}g?(c(g.role),s(g)):(c(y),s({uid:p.uid,email:p.email||"",name:p.displayName||"User",role:y,photo:p.photoURL||"",createdAt:new Date,updatedAt:new Date}))}else c("student"),s(null);i(!1)}),[]);const d=async()=>{if(t){const f=await DP(t.uid);f&&s(f)}},l={currentUser:t,userProfile:r,loading:o,isLoggedIn:!!t,userRole:r?.role||a,refreshProfile:d};return b.jsx(Rh.Provider,{value:l,children:e})},zP=({children:e})=>{const{currentUser:t}=Rr(),[n,r]=h.useState(!1),[s,o]=h.useState(!0),[i,a]=h.useState("your teacher");return h.useEffect(()=>{if(!t?.uid){o(!1);return}const c=W($,"users",t.uid);return Jt(c,async d=>{if(!d.exists()){o(!1);return}const l=d.data(),f=l?.teacherAckRequired===!0,p=l?.teacherAcknowledged===!0;if(f&&!p){r(!0);const m=l?.teacherId;if(m)try{const{getDoc:y}=await oe(async()=>{const{getDoc:v}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{getDoc:v}},__vite__mapDeps([1,2])),g=await y(W($,"users",m));if(g.exists()){const v=g.data();a(PP(v?.displayName||v?.name,"your teacher"))}}catch{}}else r(!1);o(!1)},()=>{o(!1)})},[t?.uid]),s?b.jsx("div",{className:"flex items-center justify-center min-h-screen bg-slate-50",children:b.jsx(Rx,{className:"animate-spin text-slate-400",size:32})}):b.jsx(Ff,{mode:"wait",children:n?b.jsx(Ln.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"flex items-center justify-center min-h-screen bg-slate-50 p-6",children:b.jsxs("div",{className:"max-w-md w-full bg-white border border-slate-200 rounded-2xl p-8 shadow-sm text-center space-y-6",children:[b.jsx("div",{className:"w-16 h-16 bg-rose-50 rounded-full flex items-center justify-center mx-auto",children:b.jsx(Ix,{className:"text-rose-500",size:28})}),b.jsxs("div",{children:[b.jsx("h2",{className:"text-xl font-bold text-slate-900",children:"Progress Paused"}),b.jsxs("p",{className:"text-sm text-slate-500 mt-2",children:["Your learning path is temporarily paused while ",i," reviews your recent progress."]})]}),b.jsx("div",{className:"bg-amber-50 border border-amber-200 rounded-lg p-4 text-left",children:b.jsxs("div",{className:"flex items-start gap-3",children:[b.jsx(ki,{className:"text-amber-500 flex-shrink-0 mt-0.5",size:16}),b.jsxs("div",{className:"text-sm text-amber-800",children:[b.jsx("p",{className:"font-semibold",children:"Why am I seeing this?"}),b.jsxs("p",{className:"mt-1",children:["The system detected that you may need additional support. ",i," has been notified and will reach out soon with a personalized plan."]})]})]})}),b.jsx("div",{className:"text-xs text-slate-400",children:"You can still review completed lessons and practice problems while you wait."})]})},"gate"):b.jsx(Ln.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:e},"content")})},jP=/(```[\s\S]*?```|`[^`\n]+`)/g,NP=/(\$\$[\s\S]*?\$\$|\$[^$\n]+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]|\[(?![^[]*\]\()[^\]]+\]|(?]*>[\s\S]*?<\s*\/\s*think\s*>/gi,VP=/<\s*\/?\s*think\b[^>]*>/gi,BP=/<\s*\/\s*think\s*>/gi,UP=/<\s*(\/?)\s*think\b([\s\S]*?)>/gi,qP=/(?:<\s*\/?\s*t(?:h(?:i(?:n(?:k)?)?)?)?)\s*$/i,GP=/(?:<\s*\/?\s*t(?:h(?:i(?:n(?:k)?)?)?)?)\s*$/i,WP=/\bfinal\s+answer\s*:|(?:^|\n)\s*#{1,6}\s+\S|(?:^|\n)\s*(?:answer|solution)\s*:|(?:^|\n)\s*here(?:'s| is)\b|(?:^|\n)\s*(?:\d+[.)]|[-*])\s+\S/i,HP=/^\s*(?:okay|alright|let\s+me|i\s+should|i\s+need\s+to|i\s+will|wait|hmm|maybe|the\s+user\s+asked|let\s+us|let's)\b/i;function Mh(e){return e.replace(UP,(t,n,r)=>`<${n?"/":""}think${r}>`)}function ZP(e,t){t.lastIndex=0;let n=-1,r=t.exec(e);for(;r;)n=r.index+r[0].length,r=t.exec(e);return n}function KP(e){const t=Mh(e);if(/<\s*think\b/i.test(t))return"";const n=ZP(t,BP);return n===-1?"":t.slice(n).trim()}function QP(e){const t=e.replace(/\r\n?/g,` `).trim();if(!t)return"";const n=WP.exec(t);return n&&typeof n.index=="number"?t.slice(n.index).trim():t.split(` `).map(o=>o.trim()).filter(o=>o&&HP.test(o)).length>=2?"":t}function Ri(e,t={}){if(!e||typeof e!="string")return"";let n=Mh(e),r="";for(;n!==r;)r=n,n=n.replace(FP,"");if(!t.preserveUnclosedThinkBlocks){const s=n.toLowerCase(),o=s.lastIndexOf("");o!==-1&&o>i&&(n=n.slice(0,o))}return n=n.replace(VP,""),t.streamingSafeTail&&(n=n.replace(qP,"").replace(GP,"")),n}function XP(e){return Ri(e,{streamingSafeTail:!0}).trim()}function yt(e){const t=KP(e);if(t)return t;const n=Ri(e,{streamingSafeTail:!0}).trim();if(n)return n;const r=Ri(e,{streamingSafeTail:!0,preserveUnclosedThinkBlocks:!0}).trim();return QP(r)}function YP(e){return e.replace($P,t=>`$${t}$`)}function JP(e){const t=/[=\^{}\\_+\-*/<>]|x\d|y\d|a[12]|b[12]|c[12]|frac|sqrt|int|sum|prod|lim|sin|cos|tan|log|ln|alpha|beta|gamma|delta|theta|pi|omega|lambda|sigma/,n=/^https?:\/\//,r=o=>`$${o}$`,s=o=>`$$${o}$$`;if(e.startsWith("\\[")&&e.endsWith("\\]")||e.startsWith("[")&&e.endsWith("]")){const o=e.replace(/^\\?\[/,"").replace(/\\?\]$/,"").trim();return t.test(o)?s(o):e}if(e.startsWith("\\(")&&e.endsWith("\\)")||e.startsWith("(")&&e.endsWith(")")){const o=e.replace(/^\\?\(/,"").replace(/\\?\)$/,"").trim();return n.test(o)?e:t.test(o)?r(o):e}return e}function e_(e){let t=e.replace(/\\\[([\s\S]*?)\\\]/g,(n,r)=>`$$${r.replace(/\s+/g," ").trim()}$$`);return t=t.replace(/\[[\s\S]*?\]/g,n=>{if(n.includes("]("))return n;const r=n.slice(1,-1);return/[=\^{}\\_+\-*/<>]/.test(r)||/[a-z]\d|[a-z]_[a-z]|\b(frac|sqrt|int|sum|prod|lim|sin|cos|tan|log|ln|alpha|beta|gamma|delta|theta|pi|omega|lambda|sigma)\b/i.test(r)?"["+r.replace(/\s+/g," ").trim()+"]":n}),t}function t_(e){if(!e||typeof e!="string")return"";const n=yt(e).replace(/\r\n?/g,` `);return e_(n).split(jP).map((o,i)=>i%2===1?o:o.replace(/\\n/g,` -`).replace(/\\\\(?=(?:boxed|frac|sqrt|cdot|times|pm|mp|leq|geq|neq|approx|alpha|beta|gamma|delta|theta|pi|sum|int|left|right|begin|end)\b)/g,"\\").replace(/\\\$(?=\\)/g,"$").replace(/\\\$/g,"$").split(NP).map((f,p)=>p%2===1?JP(f):YP(f)).join("")).join("")}const n_=80;function Ro(e,t=n_){if(!e||typeof e!="string")return"";const n=t_(e).replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/```(?:[a-zA-Z0-9_-]+\n)?([\s\S]*?)```/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\$\$([\s\S]+?)\$\$/g,"$1").replace(/\$([^$\n]+)\$/g,"$1").replace(/\\\(([\s\S]+?)\\\)/g,"$1").replace(/\\\[([\s\S]+?)\\\]/g,"$1").replace(/^\s{0,3}#{1,6}\s+/gm,"").replace(/^\s{0,3}>\s?/gm,"").replace(/^\s{0,3}(?:[-*+]|\d+\.)\s+/gm,"").replace(/^\s{0,3}(?:[-*_]\s?){3,}$/gm," ").replace(/\\boxed\{([^{}]+)\}/g,"$1").replace(/\\frac\{([^{}]+)\}\{([^{}]+)\}/g,"$1/$2").replace(/\\sqrt\{([^{}]+)\}/g,"sqrt($1)").replace(/\\(?:cdot|times)/g,"*").replace(/\\(alpha|beta|gamma|delta|theta|pi|sum|int|pm|mp|leq|geq|neq|approx)\b/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/__([^_]+)__/g,"$1").replace(/\*([^*\n]+)\*/g,"$1").replace(/_([^_\n]+)_/g,"$1").replace(/~~([^~]+)~~/g,"$1").replace(/\*{2,}|_{2,}|~{2,}/g,"").replace(/`+/g,"").replace(/\|/g," ").replace(/\s+/g," ").trim();return n.length<=t?n:n.slice(0,t)}const r_=/^\s*(?:hi|hello|hey|good\s+(?:morning|afternoon|evening))\b/i,s_=/\b(?:thanks|thank\s+you|thank\s+u|ty)\b/i,Ih=["Hi! I am MathPulse, your math tutor. I can help with algebra, geometry, calculus, and more. What math question would you like to try?","Hello! Great to see you. I am here for math topics and step-by-step solutions whenever you are ready."],Dh=["You are very welcome. If you want, send another math question and we can work through it together.","Glad I could help. I am here anytime you want to practice more math."],ru=["That topic is outside my math scope, but I would be happy to help with mathematics like algebra, calculus, geometry, trigonometry, or statistics.","I focus on math-only support, so I may not be the best for that request. Share a math question and I will guide you step by step.","I am built for math tutoring, so I can best help with mathematical problems and explanations. If you want, ask me any math question next."],o_=["math","mathematics","algebra","geometry","trigonometry","calculus","statistics","probability","arithmetic","equation","inequality","function","graph","slope","derivative","integral","limit","matrix","determinant","fraction","percentage","ratio","polynomial","quadratic","logarithm","exponent","angle","triangle","circle","perimeter","area","volume","mean","median","mode","standard deviation","solve","simplify","factor","evaluate","compute","calculate","root","square root","cube root","nth root","sqrt"],i_=[/\d+\s*[%+\-*/^=]\s*[-+]?\d*/,/\b(?:sin|cos|tan|cot|sec|csc|log|ln|sqrt)\s*\(?/,/\b(?:differentiate|integrate|derive|proof|prove)\b/,/\b(?:x|y|z)\s*[=+\-*/^]\s*[-+]?\d/,/\b(?:square|cube|nth)?\s*root\b/i,/\b(?:what is|what's)\s*(?:the\s+)?(?:square\s+)?root\b/i,/\b\d+\s*\^\s*\d+/],a_=new Set(["go","continue","yes","ok","next","more"]),c_=[/\bshall\s+we\s+continue\b/i,/\b(?:would|do)\s+you\s+like\s+to\s+continue\b/i,/\b(?:want|need)\s+me\s+to\s+continue\b/i,/\bshould\s+(?:i|we)\s+continue\b/i,/\bcontinue\s*\?\s*$/i,/\b(?:ready\s+for|go\s+to)\s+the\s+next\s+step\b/i,/\bnext\s+step(?:s)?\s*\?\s*$/i,/\bkeep\s+going\s*\?\s*$/i],su="I can continue once I know which math problem you mean. Please share the problem again or tell me which step to continue.";function Kr(e){return e.length===0?"":e[Math.floor(Math.random()*e.length)]??e[0]}function l_(e){const t=(e??"").trim().toLowerCase();return t?o_.some(n=>t.includes(n))?!0:i_.some(n=>n.test(t)):!1}function u_(e){return(e??"").trim().toLowerCase().replace(/\s+/g," ").replace(/[\p{P}]+$/gu,"")}function Oh(e){const t=u_(e);return t?a_.has(t):!1}function ou(e){const t=(e??"").trim();return t?l_(t)?null:r_.test(t)?Kr(Ih):s_.test(t)?Kr(Dh):Kr(ru):Kr(ru)}function d_(e){const t=(e?.latestAssistantMessage??"").trim();if(t)return t;const n=e?.history??[];for(let r=n.length-1;r>=0;r-=1){const s=n[r],o=(s?.role??"").toLowerCase(),i=(s?.content??"").trim();if(i&&(o==="assistant"||o==="ai"))return i}return null}function f_(e){const t=d_(e);return t?c_.some(n=>n.test(t)):!1}function h_(e){const t=e?.history??[];for(let n=t.length-1;n>=0;n-=1){const r=t[n],s=(r?.role??"").toLowerCase(),o=(r?.content??"").trim();if(o&&s==="user"&&!Oh(o))return o}return null}function p_(e){return Ih.includes(e)||Dh.includes(e)}function Lh(e,t){const n=ou(e);if(n===null)return null;if(!Oh(e))return n;if(f_(t))return null;const r=h_(t);if(!r)return su;const s=ou(r);return s===null?null:p_(s)?su:s}const m_=2166136261,g_=16777619,Ia=e=>(e||"").trim().toLowerCase().replace(/\s+/g," "),iu=e=>{let t=m_;for(let n=0;n>>0).toString(36)},ER={modules:(e,t=[])=>["modules",e??"all",...t],topicMastery:(e,t)=>["topic-mastery",e,t??"all"],masteryHeatmap:()=>["mastery-heatmap"],avatarInventory:()=>["avatar-inventory"]},Da="mathpulse:chat-hint-cache:v1",y_=1200*1e3,qt=new Map,Oa=()=>typeof window<"u",La=()=>Date.now(),Mi=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),b_=e=>Mi(e)&&typeof e.value=="string"&&typeof e.expiresAt=="number"&&Number.isFinite(e.expiresAt),v_=()=>{if(!Oa())return{entries:{}};try{const e=sessionStorage.getItem(Da);if(!e)return{entries:{}};const t=JSON.parse(e);if(!Mi(t)||!Mi(t.entries))return{entries:{}};const n={};for(const[r,s]of Object.entries(t.entries)){if(!b_(s))continue;const o=s.value.trim();o&&(n[r]={value:o,expiresAt:s.expiresAt})}return{entries:n}}catch{return{entries:{}}}},Os=e=>{if(Oa())try{const t={entries:e};sessionStorage.setItem(Da,JSON.stringify(t))}catch{}},w_=e=>{const t=La(),n={};for(const[r,s]of Object.entries(e))s.expiresAt>t&&s.value.trim()&&(n[r]=s);return n},x_=e=>{qt.clear();for(const[t,n]of Object.entries(e))qt.set(t,n)},zh=()=>{try{const e=v_(),t=w_(e.entries);x_(t),Os(t)}catch{qt.clear(),Os({})}},S_=e=>e.slice(-4).map(n=>`${n.role}:${Ia(n.content)}`).join("|"),k_=e=>{const t=Ia(e);return t?/\b(hint|clue|nudge|guide me|without giving( me)? the answer|step by step|next step)\b/.test(t):!1},T_=({userId:e,prompt:t,history:n=[]})=>{const r=Ia(t),s=S_(n);return["chat-hint",e,iu(r),iu(s||"no-history")].join(":")},P_=e=>{zh();const t=qt.get(e);return t?t.expiresAt<=La()?(qt.delete(e),Os(Object.fromEntries(qt.entries())),null):t.value:null},__=(e,t,n=y_)=>{const r=(t||"").trim();if(!r)return;zh();const s={value:r,expiresAt:La()+Math.max(1e3,n)};qt.set(e,s),Os(Object.fromEntries(qt.entries()))},E_=()=>{if(qt.clear(),!!Oa())try{sessionStorage.removeItem(Da)}catch{}},jh=h.createContext(void 0);let Mo=null,Io=null;const au=()=>(Mo||(Mo=oe(()=>Promise.resolve().then(()=>WE),void 0)),Mo),un=()=>(Io||(Io=oe(()=>import("./chatService-DIDnODj8.js"),__vite__mapDeps([11,1,2,3,4,5,6,7,8,9,10]))),Io),C_=new Set(["go","continue","next","more","yes","ok"]),A_=[/\b(?:end|finish|stop)\s+with(?:\s+the\s+(?:exact\s+)?(?:marker|text))?\s*[:\-]?\s*(["'`]?)([A-Za-z0-9_:\-]{2,96})\1/i,/\b(?:include|append)\s+(?:the\s+)?marker\s*[:\-]?\s*(["'`]?)([A-Za-z0-9_:\-]{2,96})\1/i];function Mr(e){if(!e)return null;let t=e.trim();return!t||(t.length>=2&&t[0]===t[t.length-1]&&['"',"'","`"].includes(t[0])&&(t=t.slice(1,-1).trim()),t=t.replace(/[.,;\s]+$/g,""),!t)?null:t.slice(0,120)}function R_(e){return(e??"").trim().toLowerCase().replace(/\s+/g," ").replace(/[\p{P}]+$/gu,"")}function Nh(e){const t=R_(e);return t?C_.has(t):!1}function M_(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if(n.role!=="user")continue;const r=(n.content??"").trim();if(r&&!Nh(r))return r}return null}function I_(e){return["Continue the ongoing math explanation for the same user request.","Do not refuse or reset the topic if the request is mathematical.","Original user request:",e].join(` +`).replace(/\\\\(?=(?:boxed|frac|sqrt|cdot|times|pm|mp|leq|geq|neq|approx|alpha|beta|gamma|delta|theta|pi|sum|int|left|right|begin|end)\b)/g,"\\").replace(/\\\$(?=\\)/g,"$").replace(/\\\$/g,"$").split(NP).map((f,p)=>p%2===1?JP(f):YP(f)).join("")).join("")}const n_=80;function Ro(e,t=n_){if(!e||typeof e!="string")return"";const n=t_(e).replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/```(?:[a-zA-Z0-9_-]+\n)?([\s\S]*?)```/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\$\$([\s\S]+?)\$\$/g,"$1").replace(/\$([^$\n]+)\$/g,"$1").replace(/\\\(([\s\S]+?)\\\)/g,"$1").replace(/\\\[([\s\S]+?)\\\]/g,"$1").replace(/^\s{0,3}#{1,6}\s+/gm,"").replace(/^\s{0,3}>\s?/gm,"").replace(/^\s{0,3}(?:[-*+]|\d+\.)\s+/gm,"").replace(/^\s{0,3}(?:[-*_]\s?){3,}$/gm," ").replace(/\\boxed\{([^{}]+)\}/g,"$1").replace(/\\frac\{([^{}]+)\}\{([^{}]+)\}/g,"$1/$2").replace(/\\sqrt\{([^{}]+)\}/g,"sqrt($1)").replace(/\\(?:cdot|times)/g,"*").replace(/\\(alpha|beta|gamma|delta|theta|pi|sum|int|pm|mp|leq|geq|neq|approx)\b/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/__([^_]+)__/g,"$1").replace(/\*([^*\n]+)\*/g,"$1").replace(/_([^_\n]+)_/g,"$1").replace(/~~([^~]+)~~/g,"$1").replace(/\*{2,}|_{2,}|~{2,}/g,"").replace(/`+/g,"").replace(/\|/g," ").replace(/\s+/g," ").trim();return n.length<=t?n:n.slice(0,t)}const r_=/^\s*(?:hi|hello|hey|good\s+(?:morning|afternoon|evening))\b/i,s_=/\b(?:thanks|thank\s+you|thank\s+u|ty)\b/i,Ih=["Hi! I am MathPulse, your math tutor. I can help with algebra, geometry, calculus, and more. What math question would you like to try?","Hello! Great to see you. I am here for math topics and step-by-step solutions whenever you are ready."],Dh=["You are very welcome. If you want, send another math question and we can work through it together.","Glad I could help. I am here anytime you want to practice more math."],ru=["That topic is outside my math scope, but I would be happy to help with mathematics like algebra, calculus, geometry, trigonometry, or statistics.","I focus on math-only support, so I may not be the best for that request. Share a math question and I will guide you step by step.","I am built for math tutoring, so I can best help with mathematical problems and explanations. If you want, ask me any math question next."],o_=["math","mathematics","algebra","geometry","trigonometry","calculus","statistics","probability","arithmetic","equation","inequality","function","graph","slope","derivative","integral","limit","matrix","determinant","fraction","percentage","ratio","polynomial","quadratic","logarithm","exponent","angle","triangle","circle","perimeter","area","volume","mean","median","mode","standard deviation","solve","simplify","factor","evaluate","compute","calculate","root","square root","cube root","nth root","sqrt"],i_=[/\d+\s*[%+\-*/^=]\s*[-+]?\d*/,/\b(?:sin|cos|tan|cot|sec|csc|log|ln|sqrt)\s*\(?/,/\b(?:differentiate|integrate|derive|proof|prove)\b/,/\b(?:x|y|z)\s*[=+\-*/^]\s*[-+]?\d/,/\b(?:square|cube|nth)?\s*root\b/i,/\b(?:what is|what's)\s*(?:the\s+)?(?:square\s+)?root\b/i,/\b\d+\s*\^\s*\d+/],a_=new Set(["go","continue","yes","ok","next","more"]),c_=[/\bshall\s+we\s+continue\b/i,/\b(?:would|do)\s+you\s+like\s+to\s+continue\b/i,/\b(?:want|need)\s+me\s+to\s+continue\b/i,/\bshould\s+(?:i|we)\s+continue\b/i,/\bcontinue\s*\?\s*$/i,/\b(?:ready\s+for|go\s+to)\s+the\s+next\s+step\b/i,/\bnext\s+step(?:s)?\s*\?\s*$/i,/\bkeep\s+going\s*\?\s*$/i],su="I can continue once I know which math problem you mean. Please share the problem again or tell me which step to continue.";function Kr(e){return e.length===0?"":e[Math.floor(Math.random()*e.length)]??e[0]}function l_(e){const t=(e??"").trim().toLowerCase();return t?o_.some(n=>t.includes(n))?!0:i_.some(n=>n.test(t)):!1}function u_(e){return(e??"").trim().toLowerCase().replace(/\s+/g," ").replace(/[\p{P}]+$/gu,"")}function Oh(e){const t=u_(e);return t?a_.has(t):!1}function ou(e){const t=(e??"").trim();return t?l_(t)?null:r_.test(t)?Kr(Ih):s_.test(t)?Kr(Dh):Kr(ru):Kr(ru)}function d_(e){const t=(e?.latestAssistantMessage??"").trim();if(t)return t;const n=e?.history??[];for(let r=n.length-1;r>=0;r-=1){const s=n[r],o=(s?.role??"").toLowerCase(),i=(s?.content??"").trim();if(i&&(o==="assistant"||o==="ai"))return i}return null}function f_(e){const t=d_(e);return t?c_.some(n=>n.test(t)):!1}function h_(e){const t=e?.history??[];for(let n=t.length-1;n>=0;n-=1){const r=t[n],s=(r?.role??"").toLowerCase(),o=(r?.content??"").trim();if(o&&s==="user"&&!Oh(o))return o}return null}function p_(e){return Ih.includes(e)||Dh.includes(e)}function Lh(e,t){const n=ou(e);if(n===null)return null;if(!Oh(e))return n;if(f_(t))return null;const r=h_(t);if(!r)return su;const s=ou(r);return s===null?null:p_(s)?su:s}const m_=2166136261,g_=16777619,Ia=e=>(e||"").trim().toLowerCase().replace(/\s+/g," "),iu=e=>{let t=m_;for(let n=0;n>>0).toString(36)},ER={modules:(e,t=[])=>["modules",e??"all",...t],topicMastery:(e,t)=>["topic-mastery",e,t??"all"],masteryHeatmap:()=>["mastery-heatmap"],avatarInventory:()=>["avatar-inventory"]},Da="mathpulse:chat-hint-cache:v1",y_=1200*1e3,qt=new Map,Oa=()=>typeof window<"u",La=()=>Date.now(),Mi=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),b_=e=>Mi(e)&&typeof e.value=="string"&&typeof e.expiresAt=="number"&&Number.isFinite(e.expiresAt),v_=()=>{if(!Oa())return{entries:{}};try{const e=sessionStorage.getItem(Da);if(!e)return{entries:{}};const t=JSON.parse(e);if(!Mi(t)||!Mi(t.entries))return{entries:{}};const n={};for(const[r,s]of Object.entries(t.entries)){if(!b_(s))continue;const o=s.value.trim();o&&(n[r]={value:o,expiresAt:s.expiresAt})}return{entries:n}}catch{return{entries:{}}}},Os=e=>{if(Oa())try{const t={entries:e};sessionStorage.setItem(Da,JSON.stringify(t))}catch{}},w_=e=>{const t=La(),n={};for(const[r,s]of Object.entries(e))s.expiresAt>t&&s.value.trim()&&(n[r]=s);return n},x_=e=>{qt.clear();for(const[t,n]of Object.entries(e))qt.set(t,n)},zh=()=>{try{const e=v_(),t=w_(e.entries);x_(t),Os(t)}catch{qt.clear(),Os({})}},S_=e=>e.slice(-4).map(n=>`${n.role}:${Ia(n.content)}`).join("|"),k_=e=>{const t=Ia(e);return t?/\b(hint|clue|nudge|guide me|without giving( me)? the answer|step by step|next step)\b/.test(t):!1},T_=({userId:e,prompt:t,history:n=[]})=>{const r=Ia(t),s=S_(n);return["chat-hint",e,iu(r),iu(s||"no-history")].join(":")},P_=e=>{zh();const t=qt.get(e);return t?t.expiresAt<=La()?(qt.delete(e),Os(Object.fromEntries(qt.entries())),null):t.value:null},__=(e,t,n=y_)=>{const r=(t||"").trim();if(!r)return;zh();const s={value:r,expiresAt:La()+Math.max(1e3,n)};qt.set(e,s),Os(Object.fromEntries(qt.entries()))},E_=()=>{if(qt.clear(),!!Oa())try{sessionStorage.removeItem(Da)}catch{}},jh=h.createContext(void 0);let Mo=null,Io=null;const au=()=>(Mo||(Mo=oe(()=>Promise.resolve().then(()=>WE),void 0)),Mo),un=()=>(Io||(Io=oe(()=>import("./chatService-DIwOtBFg.js"),__vite__mapDeps([11,1,2,3,4,5,6,7,8,9,10]))),Io),C_=new Set(["go","continue","next","more","yes","ok"]),A_=[/\b(?:end|finish|stop)\s+with(?:\s+the\s+(?:exact\s+)?(?:marker|text))?\s*[:\-]?\s*(["'`]?)([A-Za-z0-9_:\-]{2,96})\1/i,/\b(?:include|append)\s+(?:the\s+)?marker\s*[:\-]?\s*(["'`]?)([A-Za-z0-9_:\-]{2,96})\1/i];function Mr(e){if(!e)return null;let t=e.trim();return!t||(t.length>=2&&t[0]===t[t.length-1]&&['"',"'","`"].includes(t[0])&&(t=t.slice(1,-1).trim()),t=t.replace(/[.,;\s]+$/g,""),!t)?null:t.slice(0,120)}function R_(e){return(e??"").trim().toLowerCase().replace(/\s+/g," ").replace(/[\p{P}]+$/gu,"")}function Nh(e){const t=R_(e);return t?C_.has(t):!1}function M_(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if(n.role!=="user")continue;const r=(n.content??"").trim();if(r&&!Nh(r))return r}return null}function I_(e){return["Continue the ongoing math explanation for the same user request.","Do not refuse or reset the topic if the request is mathematical.","Original user request:",e].join(` `)}function D_(e){const t=(e??"").trim();if(!t)return null;for(const n of A_){const r=n.exec(t);if(!r)continue;const s=Mr(r[2]);if(s)return s}return null}function O_(e,t){const n=Mr(t);return n?e.toLowerCase().includes(n.toLowerCase()):!1}function Ii(e,t,n,r){return n&&!O_(t,n)?!0:r?z_(e,t):!1}function L_(e){const t=e.trim();if(!t||[/```[^`]*$/,/\$\$[^$]*$/,/\$[^$\n]*$/,/\\\[[^\]]*$/,/\\\([^\)]*$/,/\\boxed\{[^}]*$/,/\\frac\{[^}]*\}\{?$/,/\\[a-zA-Z]+\s*$/,/(?:Step\s*\d+[:.]?)\s*$/i,/(?:Final\s*Answer[:.]?)\s*$/i].some(f=>f.test(t))||(t.match(/```/g)??[]).length%2!==0||(()=>{let f=0;for(let p=0;p=0&&t[y]==="\\";y-=1)m+=1;m%2===0&&(f+=1)}return f})()%2!==0)return!0;const o=(t.match(/\\left\b/g)??[]).length,i=(t.match(/\\right\b/g)??[]).length;if(o!==i)return!0;const a=[["(",")"],["[","]"],["{","}"]];for(const[f,p]of a){const m=(t.match(new RegExp(`\\${f}`,"g"))??[]).length,y=(t.match(new RegExp(`\\${p}`,"g"))??[]).length;if(m>y)return!0}if(t.length>=80&&/\b(?:and|or|but|because|since|so|then|which|that|where|when|with|for|to|from|of|in|on|at|by)\s*$/i.test(t))return!0;const c=t.split(/\r?\n/).map(f=>f.trim()).filter(Boolean),u=c.length>0?c[c.length-1]:t,d=/[.!?)]$/.test(u),l=/(?:=|\\boxed|\\int|d\/dx|f\(x\)|x\^\d+|\b\d+(?:\.\d+)?\b)\s*$/.test(u);return t.length>=140&&!d&&!l}function z_(e,t){const n=t.trim(),r=e.toLowerCase();if(!n||L_(n))return!0;const s=n.replace(/[#*_`>|\-]/g," ").replace(/\s+/g," ").trim();if(!s||s.length<24&&/(derivative|integral|equation|complete|explain|step)/.test(r))return!0;if(r.includes("derivative")&&r.includes("integral")){const o=n.toLowerCase(),i=/derivative|f'|d\/dx/.test(o),a=/integral|∫|\\int/.test(o);if(!i||!a)return!0}return!!((r.includes("complete equation")||r.includes("complete equations")||r.includes("step-by-step")||r.includes("step by step"))&&((n.match(/=|\\frac|\\int|∫|\\boxed|d\/dx|\b(dx|x\^\d+)\b/g)??[]).length<2||n.length<120))}function Cn(e){const t=e.split(/\n{2,}/).map(s=>s.trim()).filter(Boolean);if(t.length<=1)return e.trim();const n=new Set,r=[];for(const s of t){const o=s.toLowerCase().replace(/[#*_`]/g,"").replace(/\s+/g," ").trim();!o||n.has(o)||(n.add(o),r.push(s))}return r.join(` `).trim()}function Qr(e,t){const n=e.trim(),r=t.trim();if(!n)return Cn(r);if(!r)return Cn(n);const s=Math.min(n.length,r.length,220);for(let o=s;o>=24;o-=1){const i=n.slice(-o),a=r.slice(0,o);if(i===a)return Cn(`${n}${r.slice(o)}`.trim())}return n.endsWith(r)?Cn(n):r.startsWith(n)?Cn(r):Cn(`${n} @@ -709,9 +709,9 @@ I can help with a wide range of math topics. Try asking: - Arithmetic (fractions, percentages) - Logarithms, Exponents, Matrices -What would you like to learn about?`}const CR=()=>{const e=h.useContext(jh);if(!e)throw new Error("useChatContext must be used within ChatProvider");return e},$_=({children:e})=>{const{currentUser:t}=Rr(),[n,r]=h.useState([]),[s,o]=h.useState(null),[i,a]=h.useState(!1),[c,u]=h.useState(null),[d,l]=h.useState(!1),f=h.useRef(new Map);h.useEffect(()=>{if(!t){r([]),l(!1);return}(async()=>{try{const T=await un(),P=await T.getUserChatSessions(t.uid),_=await Promise.all(P.map(async w=>{const A=(await T.getSessionMessages(w.id,t.uid)).map(B=>({id:B.id,sender:B.role==="user"?"user":"ai",text:B.role==="assistant"?yt(B.content):B.content,timestamp:B.timestamp instanceof Date?B.timestamp.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):new Date(B.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}));return{id:w.id,title:w.title,date:w.updatedAt instanceof Date?w.updatedAt.toLocaleDateString():new Date(w.updatedAt).toLocaleDateString(),messageCount:A.length,preview:A.length>0&&Ro(A[A.length-1].text)||"No messages yet",topics:[],messages:A,createdAt:w.createdAt instanceof Date?w.createdAt:new Date(w.createdAt),updatedAt:w.updatedAt instanceof Date?w.updatedAt:new Date(w.updatedAt)}}));r(_)}catch(T){console.error("Error loading chat sessions:",T)}finally{l(!0)}})()},[t]);const p=x=>{if(x.length===0)return"New Chat";const T=x.find(w=>w.sender==="user")?.text||"",P=T.toLowerCase();if(P.includes("quadratic")||P.includes("ax² + bx + c"))return"Quadratic Equations Help";if(P.includes("derivative")||P.includes("calculus"))return"Derivatives & Calculus";if(P.includes("pythagor")||P.includes("right triangle"))return"Pythagorean Theorem";if(P.includes("trig")||P.includes("sin")||P.includes("cos"))return"Trigonometry Help";if(P.includes("area")||P.includes("perimeter"))return"Geometry - Area & Perimeter";if(P.includes("algebra")||P.includes("solve")&&P.includes("x"))return"Algebra Problem Solving";if(P.includes("factor"))return"Factoring Practice";if(P.includes("graph")||P.includes("plot"))return"Graphing Functions";if(P.includes("matrix")||P.includes("matrices"))return"Matrix Operations";if(P.includes("integral")||P.includes("integrate"))return"Integration Problems";if(P.includes("limit"))return"Limits in Calculus";if(P.includes("statistic")||P.includes("probability"))return"Statistics & Probability";const _=T.slice(0,40);return _.length{const T=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Date.now().toString(),P=new Date,_={id:T,title:x?p([x]):"New Chat",date:"Just now",messageCount:x?1:0,preview:x&&Ro(x.text)||"Start a new conversation...",topics:[],messages:x?[x]:[],createdAt:P,updatedAt:P};if(r(w=>[_,...w]),t){const w=x?p([x]):"New Chat",R=un().then(async A=>{const B=await A.createChatSession(t.uid,w);return oe(async()=>{const{logChatSession:F}=await import("./trackingService-D8Xl_0W8.js");return{logChatSession:F}},__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10])).then(({logChatSession:F})=>F(t.uid,B.id,x?1:0).catch(()=>{})),x&&await A.addMessageToSession(B.id,x.sender==="user"?"user":"assistant",x.text),B.id}).catch(A=>(console.error("Error creating Firebase session:",A),T));f.current.set(T,R)}return T},[t]),y=h.useCallback((x,T)=>{r(_=>_.map(w=>{if(w.id===x){const R=[...w.messages,T];return{...w,messages:R,messageCount:R.length,preview:Ro(T.text)||w.preview,updatedAt:new Date,title:R.length===2?p(R):w.title}}return w}));const P=async _=>{const w=f.current.get(_);return w?await w:_};P(x).then(async _=>{await(await un()).addMessageToSession(_,T.sender==="user"?"user":"assistant",T.text)}).catch(_=>console.error("Error persisting message:",_)),r(_=>{const w=_.find(R=>R.id===x);if(w&&w.messages.length===2){const R=p(w.messages);P(x).then(async A=>{await(await un()).updateSessionTitle(A,R)}).catch(A=>console.error("Error updating title:",A))}return _})},[]),g=h.useCallback(async(x,T)=>{const P=T.trim(),_={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Date.now().toString(),sender:"user",text:P,timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,_),u(x),a(!0);try{let w=null,R=null;const A=n.find(Z=>Z.id===x),F=[...A?.messages||[],_].map(Z=>({role:Z.sender==="user"?"user":"assistant",content:Z.text})),H=Nh(P)?M_(F):null,re=H?I_(H):P,te=H??P,V=k_(P)?T_({userId:t?.uid||"anonymous",prompt:P,history:F}):null,ie=Z=>{if(!V)return;const O=yt(Z).trim();O&&__(V,O)},se=Lh(P,{history:F});if(se){const Z={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:se,timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,Z);return}if(V){const Z=P_(V);if(Z){const O={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:Z,timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,O);return}}try{const Z=await au();w=Z.apiService,R=Z.ApiTimeoutError}catch(Z){console.error("Failed to load API service for chat:",Z);const O={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:Xr(te),timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,O);return}const ue=new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});let D="",he=null;const rt=j_(P),X=N_(P),U=D_(P),q=X||!!U,J={sessionId:x,...U?{expectedEndMarker:U,completionMode:"marker"}:{}},xe=Z=>Ii(P,Z,U,X),ae=Z=>{Z.trim()&&r(O=>O.map(ee=>{if(ee.id!==x)return ee;if(!he){he=`stream-${typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Date.now().toString()}-${Math.random().toString(36).slice(2,8)}`;const ye={id:he,sender:"ai",text:Z,timestamp:ue},K=[...ee.messages,ye];return{...ee,messages:K,messageCount:K.length,updatedAt:new Date}}return{...ee,messages:ee.messages.map(ye=>ye.id===he?{...ye,text:Z}:ye),updatedAt:new Date}}))},le=()=>{if(!he)return;const Z=he;r(O=>O.map(ee=>{if(ee.id!==x)return ee;const ye=ee.messages.filter(K=>K.id!==Z);return{...ee,messages:ye,messageCount:ye.length,updatedAt:new Date}}))};try{const{response:Z}=await w.chat(re,F,K=>{D+=K,rt&&ae(XP(D))},J);let O=yt(Z||D).trim();if(q&&O&&xe(O)){try{const K=await w.chatSafe(cu(P,O,U),F,J),Ye=yt(K.data.response).trim();O=Qr(O,Ye)}catch(K){console.warn("Streaming completion repair failed:",K)}if(q&&O&&xe(O))try{const K=await w.chatSafe(lu(P,O,U),F,J),Ye=yt(K.data.response).trim();O=Qr(O,Ye)}catch(K){console.warn("Streaming plain continuation repair failed:",K)}if(q&&O&&xe(O))try{const K=await w.chatSafe(uu(P,U),F,J),Ye=yt(K.data.response).trim();Ye&&(O=du(P,O,Ye,U,X))}catch(K){console.warn("Streaming full completion repair failed:",K)}}const ee=xe(O);(!O||ee&&!q)&&(O=Xr(te,F)),ie(O),he&&le();const ye={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:O,timestamp:ue};y(x,ye)}catch(Z){R&&Z instanceof R?console.warn(`Streaming timed out after ${Z.timeoutMs}ms, falling back to non-streaming chat.`,Z):console.warn("Streaming failed, falling back to non-streaming chat:",Z),he&&le();let O="";try{const K=w??(await au()).apiService,{data:Ye}=await K.chatSafe(re,F,J);if(O=yt(Ye.response).trim(),q&&O&&xe(O))try{const Le=await K.chatSafe(cu(P,O,U),F,J),Je=yt(Le.data.response).trim();O=Qr(O,Je)}catch(Le){console.warn("Non-stream completion repair failed:",Le)}if(q&&O&&xe(O))try{const Le=await K.chatSafe(lu(P,O,U),F,J),Je=yt(Le.data.response).trim();O=Qr(O,Je)}catch(Le){console.warn("Non-stream plain continuation repair failed:",Le)}if(q&&O&&xe(O))try{const Le=await K.chatSafe(uu(P,U),F,J),Je=yt(Le.data.response).trim();Je&&(O=du(P,O,Je,U,X))}catch(Le){console.warn("Non-stream full completion repair failed:",Le)}}catch(K){console.warn("Chat request failed, using local fallback response:",K),O=Xr(te,F)}const ee=xe(O);(!O||ee&&!q)&&(O=Xr(te,F)),ie(O);const ye={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:O,timestamp:ue};y(x,ye)}if(A&&A.messages.length===1){const Z=n.find(O=>O.id===x);if(Z&&Z.messages.length>1){const O=p(Z.messages),ee=f.current.get(x);(ee||Promise.resolve(x)).then(async K=>{await(await un()).updateSessionTitle(K,O)}).catch(K=>console.error("Error updating title:",K))}}}finally{a(!1),u(null)}},[n,y,t]),v=h.useCallback((x,T)=>{r(w=>w.map(R=>R.id===x?{...R,title:T}:R));const P=f.current.get(x);(P||Promise.resolve(x)).then(async w=>{await(await un()).updateSessionTitle(w,T)}).catch(w=>console.error("Error updating session title:",w))},[]),k=h.useCallback(x=>{r(_=>_.filter(w=>w.id!==x)),s===x&&o(null);const T=f.current.get(x);(T||Promise.resolve(x)).then(async _=>{await(await un()).deleteSession(_)}).catch(_=>console.error("Error deleting session:",_)),f.current.delete(x)},[s]),S=h.useCallback(()=>n.find(x=>x.id===s)||null,[n,s]);return b.jsx(jh.Provider,{value:{sessions:n,activeSessionId:s,isLoading:i,loadingSessionId:c,sessionsLoaded:d,setActiveSessionId:o,createNewSession:m,addMessageToSession:y,sendMessage:g,updateSessionTitle:v,deleteSession:k,getActiveSession:S,generateTitleFromMessages:p},children:e})},F_=[{id:"first_lesson",title:"First Steps",description:"Complete your first lesson",icon:Ao,iconColor:"text-yellow-500",xpReward:50,condition:"lesson_complete",threshold:1,category:"learning"},{id:"lesson_10",title:"Dedicated Learner",description:"Complete 10 lessons",icon:Ao,iconColor:"text-blue-500",xpReward:200,condition:"lesson_complete",threshold:10,category:"learning"},{id:"lesson_50",title:"Knowledge Seeker",description:"Complete 50 lessons",icon:Il,iconColor:"text-purple-500",xpReward:500,condition:"lesson_complete",threshold:50,category:"learning"},{id:"perfect_score",title:"Perfect Score",description:"Score 100% on any quiz",icon:zl,iconColor:"text-yellow-400",xpReward:150,condition:"perfect_score",category:"learning"},{id:"no_mistakes",title:"Flawless",description:"Complete a quiz with zero wrong answers",icon:Ol,iconColor:"text-emerald-500",xpReward:100,condition:"quiz_no_mistakes",category:"learning"},{id:"speed_demon",title:"Speed Demon",description:"Complete a quiz in under 2 minutes",icon:Ti,iconColor:"text-orange-500",xpReward:100,condition:"speed_quiz",category:"learning"},{id:"quiz_10",title:"Quiz Enthusiast",description:"Complete 10 quizzes",icon:gx,iconColor:"text-cyan-500",xpReward:200,condition:"quiz_complete",threshold:10,category:"learning"},{id:"quiz_50",title:"Quiz Champion",description:"Complete 50 quizzes",icon:Ao,iconColor:"text-indigo-500",xpReward:500,condition:"quiz_complete",threshold:50,category:"learning"},{id:"quiz_perfect",title:"Perfectionist",description:"Get 5 perfect quiz scores",icon:$x,iconColor:"text-amber-400",xpReward:300,condition:"perfect_score",threshold:5,category:"learning"},{id:"study_streak",title:"Study Streak",description:"Maintain a 7-day lesson completion streak",icon:ms,iconColor:"text-red-500",xpReward:300,condition:"mastery_10",threshold:7,category:"learning"},{id:"first_battle",title:"First Blood",description:"Win your first Quiz Battle",icon:Gr,iconColor:"text-red-400",xpReward:100,condition:"battle_win",threshold:1,category:"battle"},{id:"battle_10",title:"Battle Veteran",description:"Win 10 Quiz Battles",icon:Gr,iconColor:"text-orange-400",xpReward:300,condition:"battle_win",threshold:10,category:"battle"},{id:"battle_50",title:"Battle Legend",description:"Win 50 Quiz Battles",icon:Gr,iconColor:"text-red-500",xpReward:1e3,condition:"battle_win",threshold:50,category:"battle"},{id:"undefeated",title:"Undefeated",description:"Win 5 battles in a row without losing",icon:Dl,iconColor:"text-blue-500",xpReward:500,condition:"battle_undefeated",threshold:5,category:"battle"},{id:"quick_win",title:"Speed Battle",description:"Win a battle by answering all questions first",icon:Ti,iconColor:"text-yellow-500",xpReward:150,condition:"speed_quiz",category:"battle"},{id:"comeback",title:"The Comeback",description:"Win a battle after being behind in score",icon:zx,iconColor:"text-teal-500",xpReward:200,condition:"battle_comeback",category:"battle"},{id:"battle_master",title:"Battle Master",description:"Win 3 battles in a single day",icon:ps,iconColor:"text-yellow-500",xpReward:400,condition:"battle_win",threshold:3,category:"battle"},{id:"invincible",title:"Invincible",description:"Win 10 battles in a row",icon:Dl,iconColor:"text-violet-500",xpReward:1e3,condition:"battle_undefeated",threshold:10,category:"battle"},{id:"first_blood_daily",title:"Early Bird",description:"Win your first battle of the day",icon:Vx,iconColor:"text-amber-500",xpReward:50,condition:"battle_win",threshold:1,category:"battle"},{id:"rival_crusher",title:"Rival Crusher",description:"Win 25 battles total",icon:Gr,iconColor:"text-rose-500",xpReward:750,condition:"battle_win",threshold:25,category:"battle"},{id:"mastery_10",title:"Week Warrior",description:"Maintain a 10-day learning streak",icon:ms,iconColor:"text-orange-500",xpReward:500,condition:"mastery_10",threshold:10,category:"mastery"},{id:"mastery_level",title:"Rising Star",description:"Reach level 5",icon:ps,iconColor:"text-yellow-400",xpReward:250,condition:"mastery_level",threshold:5,category:"mastery"},{id:"mastery_xp",title:"XP Hunter",description:"Earn a total of 5,000 XP",icon:Ll,iconColor:"text-emerald-500",xpReward:400,condition:"mastery_xp",threshold:5e3,category:"mastery"},{id:"mastery_all_lessons",title:"Curriculum Complete",description:"Complete all available lessons",icon:Il,iconColor:"text-purple-500",xpReward:1e3,condition:"mastery_all_lessons",category:"mastery"},{id:"mastery_all_subjects",title:"Polymath",description:"Complete at least one lesson in every subject",icon:Px,iconColor:"text-cyan-500",xpReward:500,condition:"mastery_all_subjects",category:"mastery"},{id:"mastery_assessment_perfect",title:"Assessment Perfect",description:"Score 100% on a diagnostic assessment",icon:Ol,iconColor:"text-amber-500",xpReward:400,condition:"mastery_assessment_perfect",category:"mastery"},{id:"mastery_max_level",title:"Max Level",description:"Reach the maximum player level",icon:ps,iconColor:"text-yellow-500",xpReward:2e3,condition:"mastery_max_level",category:"mastery"},{id:"mastery_top_10",title:"Leaderboard Elite",description:"Reach the top 10 on the global leaderboard",icon:Rl,iconColor:"text-amber-400",xpReward:1e3,condition:"social_xp",category:"mastery"},{id:"explore_profile",title:"Identity Set",description:"Complete your user profile",icon:Kx,iconColor:"text-blue-400",xpReward:50,condition:"explore_profile_complete",category:"exploration"},{id:"explore_first_friend",title:"Socialite",description:"Add your first friend",icon:jl,iconColor:"text-green-500",xpReward:50,condition:"explore_friend_added",threshold:1,category:"exploration"},{id:"explore_daily_return",title:"Daily Visitor",description:"Return to the app 3 days in a row",icon:Ml,iconColor:"text-indigo-400",xpReward:100,condition:"social_daily_return",threshold:3,category:"exploration"},{id:"explore_10_friends",title:"Popular",description:"Have 10 friends on the platform",icon:Xx,iconColor:"text-teal-500",xpReward:300,condition:"explore_friend_added",threshold:10,category:"exploration"},{id:"explore_all_features",title:"Explorer",description:"Use all major app features",icon:xx,iconColor:"text-orange-400",xpReward:200,condition:"explore_profile_complete",category:"exploration"},{id:"explore_25_friends",title:"Social Butterfly",description:"Have 25 friends on the platform",icon:Cx,iconColor:"text-pink-500",xpReward:500,condition:"explore_social",threshold:25,category:"exploration"},{id:"explore_xp_1000",title:"XP Milestone",description:"Earn your first 1,000 XP",icon:Ll,iconColor:"text-blue-500",xpReward:100,condition:"mastery_xp",threshold:1e3,category:"exploration"},{id:"social_first_friend",title:"Friendship Starter",description:"Send your first friend request",icon:jl,iconColor:"text-green-400",xpReward:25,condition:"social_friend",threshold:1,category:"social"},{id:"social_helper",title:"Helpful Hand",description:"Contribute to the community",icon:Rl,iconColor:"text-cyan-500",xpReward:150,condition:"social_contribution",category:"social"},{id:"social_top_10",title:"Elite Status",description:"Reach the top 10 on the leaderboard",icon:zl,iconColor:"text-yellow-400",xpReward:500,condition:"social_xp",category:"social"},{id:"social_streak_30",title:"Dedicated Member",description:"Maintain a 30-day activity streak",icon:ms,iconColor:"text-red-400",xpReward:1e3,condition:"mastery_10",threshold:30,category:"social"},{id:"social_daily_7",title:"Weekly Visitor",description:"Return to the app 7 days in a row",icon:Ml,iconColor:"text-violet-400",xpReward:200,condition:"social_daily_return",threshold:7,category:"social"}];new Map(F_.map(e=>[e.id,e]));const Do=async(e,t,n,r)=>{try{const s=W($,"users",e),o=await we(s);if(!o.exists())throw new Error("User not found");const i=o.data(),a=i.currentXP||0,c=i.totalXP||0,u=i.xpMultiplier||1,d=Math.floor(t*u),l=a+d,f=c+d;let m=i.level||1;const y=f;let g=!1;for(;;){const S=Math.floor(100*Math.pow(1.5,m-1));let x=0;for(let T=1;T<=m;T++)x+=Math.floor(100*Math.pow(1.5,T-1));if(f>=x)m++,g=!0;else break}const v={currentXP:l,totalXP:f,level:m,updatedAt:ce()};u!==1&&(v.xpMultiplier=1),await kt(s,v);const k=W(Xe($,"xpActivities"));return await Ne(k,{activityId:k.id,userId:e,type:n,xpEarned:t,description:r,timestamp:ce()}),{newLevel:m,leveledUp:g,xp:l,addedXp:t}}catch(s){throw console.error("Error awarding XP:",s),s}},AR=async(e,t=!1,n="all",r=10)=>{try{const s=Dt(Xe($,"leaderboard"),vn("totalXP","desc"),Sr(r)),o=await jn(s);return o.empty?[]:o.docs.map((i,a)=>{const c=i.data();return{userId:i.id,name:c.name||"Unknown",photo:c.photo,xp:c.totalXP||0,level:c.level||1,rank:a+1,weeklyXP:c.weeklyXP||0,monthlyXP:c.monthlyXP||0}})}catch(s){return console.error("Error getting leaderboard:",s),[]}},RR=(e,t,n=!1,r="all",s=10)=>{const o=Dt(Xe($,"leaderboard"),vn("totalXP","desc"),Sr(s));return Jt(o,i=>{const a=i.docs.map((c,u)=>{const d=c.data();return{userId:c.id,name:d.name||"Unknown",photo:d.photo,xp:d.totalXP||0,level:d.level||1,rank:u+1,weeklyXP:d.weeklyXP||0,monthlyXP:d.monthlyXP||0}});e(a)},i=>{console.error("Error subscribing to leaderboard:",i),e([])})},MR=async e=>{try{const t=await we(W($,"achievements",e));return t.exists()?t.data().achievements||[]:[]}catch(t){return console.error("Error getting user achievements:",t),[]}},IR=async(e,t,n)=>{try{const r=W($,"users",e),s=await we(r);if(!s.exists())throw new Error("User not found");const o=s.data(),i=o.currentXP||0;if((o.ownedAvatarItems||[]).includes(t))return{success:!1,message:"You already own this item",currentXP:i};if(i{try{const n=W($,"users",e),r=await we(n);if(!r.exists())throw new Error("User not found");return(r.data().ownedAvatarItems||[]).includes(t)?{success:!0,message:"Item already owned"}:(await kt(n,{ownedAvatarItems:ju(t),updatedAt:ce()}),{success:!0,message:"Avatar item unlocked!"})}catch(n){return console.error("Error unlocking avatar item:",n),{success:!1,message:"Failed to unlock item"}}},Qs=3e4,$h=3,Fh=1e3;class It extends Error{status;statusText;endpoint;responseBody;retryable;requestId;constructor(t){super(`API Error ${t.status} (${t.statusText}) on ${t.endpoint}: ${t.responseBody}`),this.name="ApiError",this.status=t.status,this.statusText=t.statusText,this.endpoint=t.endpoint,this.responseBody=t.responseBody,this.retryable=t.retryable,this.requestId=t.requestId}}class bn extends Error{endpoint;timeoutMs;constructor(t,n){super(`Request to ${t} timed out after ${n}ms`),this.name="ApiTimeoutError",this.endpoint=t,this.timeoutMs=n}}class Ls extends Error{endpoint;originalError;constructor(t,n){super(`Network error on ${t}: ${n.message}`),this.name="ApiNetworkError",this.endpoint=t,this.originalError=n}}class ze extends Error{endpoint;details;constructor(t,n){super(`Validation error before calling ${t}: ${n}`),this.name="ApiValidationError",this.endpoint=t,this.details=n}}const V_=new Set([408,429,500,502,503,504]);function B_(e){return V_.has(e)}function za(e){const t=`[API ${e.level.toUpperCase()}] ${e.timestamp} ${e.method} ${e.endpoint}`;switch(e.level){case"error":console.error(t,e.message,e.details??"");break;case"warn":console.warn(t,e.message,e.details??"");break;default:console.info(t,e.message,e.details??"")}}function At(e,t,n,r){za({timestamp:new Date().toISOString(),level:"info",endpoint:e,method:t,message:n,details:r})}function Di(e,t,n,r){za({timestamp:new Date().toISOString(),level:"warn",endpoint:e,method:t,message:n,details:r})}function je(e,t,n,r){za({timestamp:new Date().toISOString(),level:"error",endpoint:e,method:t,message:n,details:r})}function U_(e,t,n=Qs){const r=new AbortController,s=setTimeout(()=>r.abort(),n);return{promise:fetch(e,{...t,signal:r.signal}).finally(()=>clearTimeout(s)),abort:()=>r.abort()}}let q_=e=>new Promise(t=>setTimeout(t,e));function fu(e){return q_(e)}function G_(e,t=Fh){const n=t*Math.pow(2,e),r=Math.random()*t;return Math.min(n+r,3e4)}async function hu(e,t={},n={}){const{maxRetries:r=$h,timeoutMs:s=Qs,baseBackoffMs:o=Fh}=n,i=(t.method??"GET").toUpperCase();let a;for(let c=0;c<=r;c++){const u=Date.now();try{c>0&&At(e,i,`Retry attempt ${c}/${r}`);const{promise:d}=U_(e,t,s),l=await d,f=Date.now()-u;if(l.ok)return At(e,i,`${l.status} in ${f}ms`,{attempt:c}),await l.json();const p=await l.text().catch(()=>"Unable to read response body"),m=B_(l.status),y=new It({status:l.status,statusText:l.statusText,endpoint:e,responseBody:p,retryable:m,requestId:l.headers.get("x-request-id")??void 0});if(je(e,i,`${l.status} ${l.statusText} in ${f}ms`,{attempt:c,responseBody:p.slice(0,500),retryable:m}),!m)throw y;if(l.status===429){const g=l.headers.get("retry-after");if(g){const v=parseInt(g,10);if(!isNaN(v)&&v>0){Di(e,i,`Rate limited. Waiting ${v}s (Retry-After header)`),await fu(v*1e3),a=y;continue}}}a=y}catch(d){const l=Date.now()-u;if(d instanceof It&&!d.retryable)throw d;if(d instanceof DOMException&&d.name==="AbortError"){const f=new bn(e,s);je(e,i,`Timeout after ${l}ms`,{attempt:c,timeoutMs:s}),a=f}else if(d instanceof TypeError&&d.message.includes("fetch")){const f=new Ls(e,d);je(e,i,`Network error after ${l}ms: ${d.message}`,{attempt:c}),a=f}else d instanceof It?a=d:(a=d instanceof Error?d:new Error(String(d)),je(e,i,`Unexpected error: ${a.message}`,{attempt:c}))}if(cr==null||r==="").map(([r])=>r);if(n.length>0)throw new ze(e,`Missing required fields: ${n.join(", ")}`)}function Re(e,t,n,r,s){if(typeof n!="number"||isNaN(n)||ns)throw new ze(e,`${t} must be a number between ${r} and ${s}, got ${n}`)}function W_(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const H_=e=>{switch(e){case"success":return Q_;case"info":return Y_;case"warning":return X_;case"error":return J_;default:return null}},Z_=Array(12).fill(0),K_=({visible:e,className:t})=>I.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},I.createElement("div",{className:"sonner-spinner"},Z_.map((n,r)=>I.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),Q_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),X_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Y_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),J_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),eE=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},I.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),I.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),tE=()=>{const[e,t]=I.useState(document.hidden);return I.useEffect(()=>{const n=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e};let Oi=1;class nE{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;const{message:r,...s}=t,o=typeof t?.id=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Oi++,i=this.toasts.find(c=>c.id===o),a=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),i?this.toasts=this.toasts.map(c=>c.id===o?(this.publish({...c,...t,id:o,title:r}),{...c,...t,id:o,dismissible:a,title:r}):c):this.addToast({title:r,...s,dismissible:a,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:t,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(r=>r({id:n.id,dismiss:!0}))}),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let r;n.loading!==void 0&&(r=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const s=Promise.resolve(t instanceof Function?t():t);let o=r!==void 0,i;const a=s.then(async u=>{if(i=["resolve",u],I.isValidElement(u))o=!1,this.create({id:r,type:"default",message:u});else if(sE(u)&&!u.ok){o=!1;const l=typeof n.error=="function"?await n.error(`HTTP error! status: ${u.status}`):n.error,f=typeof n.description=="function"?await n.description(`HTTP error! status: ${u.status}`):n.description,m=typeof l=="object"&&!I.isValidElement(l)?l:{message:l};this.create({id:r,type:"error",description:f,...m})}else if(u instanceof Error){o=!1;const l=typeof n.error=="function"?await n.error(u):n.error,f=typeof n.description=="function"?await n.description(u):n.description,m=typeof l=="object"&&!I.isValidElement(l)?l:{message:l};this.create({id:r,type:"error",description:f,...m})}else if(n.success!==void 0){o=!1;const l=typeof n.success=="function"?await n.success(u):n.success,f=typeof n.description=="function"?await n.description(u):n.description,m=typeof l=="object"&&!I.isValidElement(l)?l:{message:l};this.create({id:r,type:"success",description:f,...m})}}).catch(async u=>{if(i=["reject",u],n.error!==void 0){o=!1;const d=typeof n.error=="function"?await n.error(u):n.error,l=typeof n.description=="function"?await n.description(u):n.description,p=typeof d=="object"&&!I.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:l,...p})}}).finally(()=>{o&&(this.dismiss(r),r=void 0),n.finally==null||n.finally.call(n)}),c=()=>new Promise((u,d)=>a.then(()=>i[0]==="reject"?d(i[1]):u(i[1])).catch(d));return typeof r!="string"&&typeof r!="number"?{unwrap:c}:Object.assign(r,{unwrap:c})},this.custom=(t,n)=>{const r=n?.id||Oi++;return this.create({jsx:t(r),id:r,...n}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const nt=new nE,rE=(e,t)=>{const n=t?.id||Oi++;return nt.addToast({title:e,...t,id:n}),n},sE=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",oE=rE,iE=()=>nt.toasts,aE=()=>nt.getActiveToasts(),ct=Object.assign(oE,{success:nt.success,info:nt.info,warning:nt.warning,error:nt.error,custom:nt.custom,message:nt.message,promise:nt.promise,dismiss:nt.dismiss,loading:nt.loading},{getHistory:iE,getToasts:aE});W_("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Yr(e){return e.label!==void 0}const cE=3,lE="24px",uE="16px",pu=4e3,dE=356,fE=14,hE=45,pE=200;function Pt(...e){return e.filter(Boolean).join(" ")}function mE(e){const[t,n]=e.split("-"),r=[];return t&&r.push(t),n&&r.push(n),r}const gE=e=>{var t,n,r,s,o,i,a,c,u;const{invert:d,toast:l,unstyled:f,interacting:p,setHeights:m,visibleToasts:y,heights:g,index:v,toasts:k,expanded:S,removeToast:x,defaultRichColors:T,closeButton:P,style:_,cancelButtonStyle:w,actionButtonStyle:R,className:A="",descriptionClassName:B="",duration:F,position:H,gap:re,expandByDefault:te,classNames:V,icons:ie,closeButtonAriaLabel:se="Close toast"}=e,[ue,D]=I.useState(null),[he,rt]=I.useState(null),[X,U]=I.useState(!1),[q,J]=I.useState(!1),[xe,ae]=I.useState(!1),[le,Z]=I.useState(!1),[O,ee]=I.useState(!1),[ye,K]=I.useState(0),[Ye,Le]=I.useState(0),Je=I.useRef(l.duration||F||pu),an=I.useRef(null),ht=I.useRef(null),Ir=v===0,Dr=v+1<=y,Ue=l.type,it=l.dismissible!==!1,$t=l.className||"",Js=l.descriptionClassName||"",Ft=I.useMemo(()=>g.findIndex(Y=>Y.toastId===l.id)||0,[g,l.id]),cn=I.useMemo(()=>{var Y;return(Y=l.closeButton)!=null?Y:P},[l.closeButton,P]),Hn=I.useMemo(()=>l.duration||F||pu,[l.duration,F]),Tn=I.useRef(0),st=I.useRef(0),Ht=I.useRef(0),pt=I.useRef(null),[eo,Zn]=H.split("-"),Or=I.useMemo(()=>g.reduce((Y,pe,Pe)=>Pe>=Ft?Y:Y+pe.height,0),[g,Ft]),Kn=tE(),to=l.invert||d,Qn=Ue==="loading";st.current=I.useMemo(()=>Ft*re+Or,[Ft,Or]),I.useEffect(()=>{Je.current=Hn},[Hn]),I.useEffect(()=>{U(!0)},[]),I.useEffect(()=>{const Y=ht.current;if(Y){const pe=Y.getBoundingClientRect().height;return Le(pe),m(Pe=>[{toastId:l.id,height:pe,position:l.position},...Pe]),()=>m(Pe=>Pe.filter($e=>$e.toastId!==l.id))}},[m,l.id]),I.useLayoutEffect(()=>{if(!X)return;const Y=ht.current,pe=Y.style.height;Y.style.height="auto";const Pe=Y.getBoundingClientRect().height;Y.style.height=pe,Le(Pe),m($e=>$e.find(Ce=>Ce.toastId===l.id)?$e.map(Ce=>Ce.toastId===l.id?{...Ce,height:Pe}:Ce):[{toastId:l.id,height:Pe,position:l.position},...$e])},[X,l.title,l.description,m,l.id,l.jsx,l.action,l.cancel]);const at=I.useCallback(()=>{J(!0),K(st.current),m(Y=>Y.filter(pe=>pe.toastId!==l.id)),setTimeout(()=>{x(l)},pE)},[l,x,m,st]);I.useEffect(()=>{if(l.promise&&Ue==="loading"||l.duration===1/0||l.type==="loading")return;let Y;return S||p||Kn?(()=>{if(Ht.current{Je.current!==1/0&&(Tn.current=new Date().getTime(),Y=setTimeout(()=>{l.onAutoClose==null||l.onAutoClose.call(l,l),at()},Je.current))})(),()=>clearTimeout(Y)},[S,p,l,Ue,Kn,at]),I.useEffect(()=>{l.delete&&(at(),l.onDismiss==null||l.onDismiss.call(l,l))},[at,l.delete]);function Xn(){var Y;if(ie?.loading){var pe;return I.createElement("div",{className:Pt(V?.loader,l==null||(pe=l.classNames)==null?void 0:pe.loader,"sonner-loader"),"data-visible":Ue==="loading"},ie.loading)}return I.createElement(K_,{className:Pt(V?.loader,l==null||(Y=l.classNames)==null?void 0:Y.loader),visible:Ue==="loading"})}const Pn=l.icon||ie?.[Ue]||H_(Ue);var Lr,zr;return I.createElement("li",{tabIndex:0,ref:ht,className:Pt(A,$t,V?.toast,l==null||(t=l.classNames)==null?void 0:t.toast,V?.default,V?.[Ue],l==null||(n=l.classNames)==null?void 0:n[Ue]),"data-sonner-toast":"","data-rich-colors":(Lr=l.richColors)!=null?Lr:T,"data-styled":!(l.jsx||l.unstyled||f),"data-mounted":X,"data-promise":!!l.promise,"data-swiped":O,"data-removed":q,"data-visible":Dr,"data-y-position":eo,"data-x-position":Zn,"data-index":v,"data-front":Ir,"data-swiping":xe,"data-dismissible":it,"data-type":Ue,"data-invert":to,"data-swipe-out":le,"data-swipe-direction":he,"data-expanded":!!(S||te&&X),"data-testid":l.testId,style:{"--index":v,"--toasts-before":v,"--z-index":k.length-v,"--offset":`${q?ye:st.current}px`,"--initial-height":te?"auto":`${Ye}px`,..._,...l.style},onDragEnd:()=>{ae(!1),D(null),pt.current=null},onPointerDown:Y=>{Y.button!==2&&(Qn||!it||(an.current=new Date,K(st.current),Y.target.setPointerCapture(Y.pointerId),Y.target.tagName!=="BUTTON"&&(ae(!0),pt.current={x:Y.clientX,y:Y.clientY})))},onPointerUp:()=>{var Y,pe,Pe;if(le||!it)return;pt.current=null;const $e=Number(((Y=ht.current)==null?void 0:Y.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Vt=Number(((pe=ht.current)==null?void 0:pe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ce=new Date().getTime()-((Pe=an.current)==null?void 0:Pe.getTime()),qe=ue==="x"?$e:Vt,Tt=Math.abs(qe)/Ce;if(Math.abs(qe)>=hE||Tt>.11){K(st.current),l.onDismiss==null||l.onDismiss.call(l,l),rt(ue==="x"?$e>0?"right":"left":Vt>0?"down":"up"),at(),Z(!0);return}else{var et,Ge;(et=ht.current)==null||et.style.setProperty("--swipe-amount-x","0px"),(Ge=ht.current)==null||Ge.style.setProperty("--swipe-amount-y","0px")}ee(!1),ae(!1),D(null)},onPointerMove:Y=>{var pe,Pe,$e;if(!pt.current||!it||((pe=window.getSelection())==null?void 0:pe.toString().length)>0)return;const Ce=Y.clientY-pt.current.y,qe=Y.clientX-pt.current.x;var Tt;const et=(Tt=e.swipeDirections)!=null?Tt:mE(H);!ue&&(Math.abs(qe)>1||Math.abs(Ce)>1)&&D(Math.abs(qe)>Math.abs(Ce)?"x":"y");let Ge={x:0,y:0};const _n=Bt=>1/(1.5+Math.abs(Bt)/20);if(ue==="y"){if(et.includes("top")||et.includes("bottom"))if(et.includes("top")&&Ce<0||et.includes("bottom")&&Ce>0)Ge.y=Ce;else{const Bt=Ce*_n(Ce);Ge.y=Math.abs(Bt)0)Ge.x=qe;else{const Bt=qe*_n(qe);Ge.x=Math.abs(Bt)0||Math.abs(Ge.y)>0)&&ee(!0),(Pe=ht.current)==null||Pe.style.setProperty("--swipe-amount-x",`${Ge.x}px`),($e=ht.current)==null||$e.style.setProperty("--swipe-amount-y",`${Ge.y}px`)}},cn&&!l.jsx&&Ue!=="loading"?I.createElement("button",{"aria-label":se,"data-disabled":Qn,"data-close-button":!0,onClick:Qn||!it?()=>{}:()=>{at(),l.onDismiss==null||l.onDismiss.call(l,l)},className:Pt(V?.closeButton,l==null||(r=l.classNames)==null?void 0:r.closeButton)},(zr=ie?.close)!=null?zr:eE):null,(Ue||l.icon||l.promise)&&l.icon!==null&&(ie?.[Ue]!==null||l.icon)?I.createElement("div",{"data-icon":"",className:Pt(V?.icon,l==null||(s=l.classNames)==null?void 0:s.icon)},l.promise||l.type==="loading"&&!l.icon?l.icon||Xn():null,l.type!=="loading"?Pn:null):null,I.createElement("div",{"data-content":"",className:Pt(V?.content,l==null||(o=l.classNames)==null?void 0:o.content)},I.createElement("div",{"data-title":"",className:Pt(V?.title,l==null||(i=l.classNames)==null?void 0:i.title)},l.jsx?l.jsx:typeof l.title=="function"?l.title():l.title),l.description?I.createElement("div",{"data-description":"",className:Pt(B,Js,V?.description,l==null||(a=l.classNames)==null?void 0:a.description)},typeof l.description=="function"?l.description():l.description):null),I.isValidElement(l.cancel)?l.cancel:l.cancel&&Yr(l.cancel)?I.createElement("button",{"data-button":!0,"data-cancel":!0,style:l.cancelButtonStyle||w,onClick:Y=>{Yr(l.cancel)&&it&&(l.cancel.onClick==null||l.cancel.onClick.call(l.cancel,Y),at())},className:Pt(V?.cancelButton,l==null||(c=l.classNames)==null?void 0:c.cancelButton)},l.cancel.label):null,I.isValidElement(l.action)?l.action:l.action&&Yr(l.action)?I.createElement("button",{"data-button":!0,"data-action":!0,style:l.actionButtonStyle||R,onClick:Y=>{Yr(l.action)&&(l.action.onClick==null||l.action.onClick.call(l.action,Y),!Y.defaultPrevented&&at())},className:Pt(V?.actionButton,l==null||(u=l.classNames)==null?void 0:u.actionButton)},l.action.label):null)};function mu(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function yE(e,t){const n={};return[e,t].forEach((r,s)=>{const o=s===1,i=o?"--mobile-offset":"--offset",a=o?uE:lE;function c(u){["top","right","bottom","left"].forEach(d=>{n[`${i}-${d}`]=typeof u=="number"?`${u}px`:u})}typeof r=="number"||typeof r=="string"?c(r):typeof r=="object"?["top","right","bottom","left"].forEach(u=>{r[u]===void 0?n[`${i}-${u}`]=a:n[`${i}-${u}`]=typeof r[u]=="number"?`${r[u]}px`:r[u]}):c(a)}),n}const Oo=I.forwardRef(function(t,n){const{id:r,invert:s,position:o="bottom-right",hotkey:i=["altKey","KeyT"],expand:a,closeButton:c,className:u,offset:d,mobileOffset:l,theme:f="light",richColors:p,duration:m,style:y,visibleToasts:g=cE,toastOptions:v,dir:k=mu(),gap:S=fE,icons:x,containerAriaLabel:T="Notifications"}=t,[P,_]=I.useState([]),w=I.useMemo(()=>r?P.filter(X=>X.toasterId===r):P.filter(X=>!X.toasterId),[P,r]),R=I.useMemo(()=>Array.from(new Set([o].concat(w.filter(X=>X.position).map(X=>X.position)))),[w,o]),[A,B]=I.useState([]),[F,H]=I.useState(!1),[re,te]=I.useState(!1),[V,ie]=I.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),se=I.useRef(null),ue=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),D=I.useRef(null),he=I.useRef(!1),rt=I.useCallback(X=>{_(U=>{var q;return(q=U.find(J=>J.id===X.id))!=null&&q.delete||nt.dismiss(X.id),U.filter(({id:J})=>J!==X.id)})},[]);return I.useEffect(()=>nt.subscribe(X=>{if(X.dismiss){requestAnimationFrame(()=>{_(U=>U.map(q=>q.id===X.id?{...q,delete:!0}:q))});return}setTimeout(()=>{Tp.flushSync(()=>{_(U=>{const q=U.findIndex(J=>J.id===X.id);return q!==-1?[...U.slice(0,q),{...U[q],...X},...U.slice(q+1)]:[X,...U]})})})}),[P]),I.useEffect(()=>{if(f!=="system"){ie(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ie("dark"):ie("light")),typeof window>"u")return;const X=window.matchMedia("(prefers-color-scheme: dark)");try{X.addEventListener("change",({matches:U})=>{ie(U?"dark":"light")})}catch{X.addListener(({matches:q})=>{try{ie(q?"dark":"light")}catch(J){console.error(J)}})}},[f]),I.useEffect(()=>{P.length<=1&&H(!1)},[P]),I.useEffect(()=>{const X=U=>{var q;if(i.every(ae=>U[ae]||U.code===ae)){var xe;H(!0),(xe=se.current)==null||xe.focus()}U.code==="Escape"&&(document.activeElement===se.current||(q=se.current)!=null&&q.contains(document.activeElement))&&H(!1)};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[i]),I.useEffect(()=>{if(se.current)return()=>{D.current&&(D.current.focus({preventScroll:!0}),D.current=null,he.current=!1)}},[se.current]),I.createElement("section",{ref:n,"aria-label":`${T} ${ue}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},R.map((X,U)=>{var q;const[J,xe]=X.split("-");return w.length?I.createElement("ol",{key:X,dir:k==="auto"?mu():k,tabIndex:-1,ref:se,className:u,"data-sonner-toaster":!0,"data-sonner-theme":V,"data-y-position":J,"data-x-position":xe,style:{"--front-toast-height":`${((q=A[0])==null?void 0:q.height)||0}px`,"--width":`${dE}px`,"--gap":`${S}px`,...y,...yE(d,l)},onBlur:ae=>{he.current&&!ae.currentTarget.contains(ae.relatedTarget)&&(he.current=!1,D.current&&(D.current.focus({preventScroll:!0}),D.current=null))},onFocus:ae=>{ae.target instanceof HTMLElement&&ae.target.dataset.dismissible==="false"||he.current||(he.current=!0,D.current=ae.relatedTarget)},onMouseEnter:()=>H(!0),onMouseMove:()=>H(!0),onMouseLeave:()=>{re||H(!1)},onDragEnd:()=>H(!1),onPointerDown:ae=>{ae.target instanceof HTMLElement&&ae.target.dataset.dismissible==="false"||te(!0)},onPointerUp:()=>te(!1)},w.filter(ae=>!ae.position&&U===0||ae.position===X).map((ae,le)=>{var Z,O;return I.createElement(gE,{key:ae.id,icons:x,index:le,toast:ae,defaultRichColors:p,duration:(Z=v?.duration)!=null?Z:m,className:v?.className,descriptionClassName:v?.descriptionClassName,invert:s,visibleToasts:g,closeButton:(O=v?.closeButton)!=null?O:c,interacting:re,position:X,style:v?.style,unstyled:v?.unstyled,classNames:v?.classNames,cancelButtonStyle:v?.cancelButtonStyle,actionButtonStyle:v?.actionButtonStyle,closeButtonAriaLabel:v?.closeButtonAriaLabel,removeToast:rt,toasts:w.filter(ee=>ee.position==ae.position),heights:A.filter(ee=>ee.position==ae.position),setHeights:B,expandByDefault:a,gap:S,expanded:F,swipeDirections:t.swipeDirections})})):null}))});function bE(e){const t=e.headers.get("retry-after")||e.headers.get("Retry-After");if(t){const n=parseInt(t,10);if(!isNaN(n)&&n>0)return n}return e.clone().json().then(n=>{if(n?.retry_after){const r=parseInt(n.retry_after,10);if(!isNaN(r)&&r>0)return r}}).catch(()=>{}),60}async function vE(e,t){const n=be.currentUser;if(n)try{const r=W($,"_analytics/rateLimitHits",n.uid);await Ne(r,{uid:n.uid,endpoint:e,retryAfter:t,timestamp:ce()},{merge:!0})}catch(r){console.warn("Failed to log rate limit hit:",r)}}const Lo=new Map;function wE(e,t){const n=`${e}-${Date.now()}`,r=Date.now()+t*1e3;ct.error(`You're going too fast! Please wait ${t} seconds before trying again.`,{duration:t*1e3,id:n});const s=Lo.get(e);s&&clearInterval(s.timerId);const o=window.setInterval(()=>{Math.ceil((r-Date.now())/1e3)<=0&&(clearInterval(o),Lo.delete(e),ct.dismiss(n))},1e3);Lo.set(e,{endpoint:e,endsAt:r,timerId:o})}async function xE(e,t){if(e.status!==429)return!1;const n=bE(e);return await vE(t,n),wE(t,n),window.dispatchEvent(new CustomEvent("rate-limit-hit",{detail:{endpoint:t,retryAfter:n,expiresAt:Date.now()+n*1e3}})),!0}const xr="https://deign86-mathpulse-api-v3test.hf.space",Xs=(e,t)=>t,Vh=(e,t)=>t,zo=Xs(void 0,!0),gu=Xs(void 0,!0),yu=Xs(void 0,!0),bu=Xs(void 0,!0),vu=Vh(void 0,9e4),jo=Vh(void 0,9e5);let No=!0,wu=0;const SE=6e4;async function kE(){const e="https://deign86-mathpulse-api-v3test.hf.space",t={"Content-Type":"application/json"},n=be.currentUser;if(n)try{const s=await n.getIdToken(!1);s&&(t.Authorization=`Bearer ${s}`)}catch{}const r=await fetch(`${e}/api/rag/health`,{headers:t});if(!r.ok){const s=await r.text();throw new Error(`GET /api/rag/health failed: ${r.status} ${s}`)}return r.json()}async function TE(e){const t="https://deign86-mathpulse-api-v3test.hf.space",n={"Content-Type":"application/json"},r=be.currentUser;if(r)try{const o=await r.getIdToken(!1);o&&(n.Authorization=`Bearer ${o}`)}catch{}const s=await fetch(`${t}/api/rag/lesson`,{method:"POST",headers:n,body:JSON.stringify(e)});if(!s.ok){const o=await s.text();throw new Error(`POST /api/rag/lesson failed: ${s.status} ${o}`)}return s.json()}async function PE(e){const t="https://deign86-mathpulse-api-v3test.hf.space",n={"Content-Type":"application/json"},r=be.currentUser;if(r)try{const o=await r.getIdToken(!1);o&&(n.Authorization=`Bearer ${o}`)}catch{}const s=await fetch(`${t}/api/rag/generate-problem`,{method:"POST",headers:n,body:JSON.stringify(e)});if(!s.ok){const o=await s.text();throw new Error(`POST /api/rag/generate-problem failed: ${s.status} ${o}`)}return s.json()}async function _E(e){const t="https://deign86-mathpulse-api-v3test.hf.space",n={"Content-Type":"application/json"},r=be.currentUser;if(r)try{const o=await r.getIdToken(!1);o&&(n.Authorization=`Bearer ${o}`)}catch{}const s=await fetch(`${t}/api/rag/analysis-context`,{method:"POST",headers:n,body:JSON.stringify(e)});if(!s.ok){const o=await s.text();throw new Error(`POST /api/rag/analysis-context failed: ${s.status} ${o}`)}return s.json()}const Et={maxRetries:$h,timeoutMs:Qs,baseBackoffMs:1e3},Xt={...Et,timeoutMs:6e4},EE={...Xt,maxRetries:1,timeoutMs:45e3,baseBackoffMs:750},CE={...Et,maxRetries:1,timeoutMs:2e4,baseBackoffMs:500},rr={maxRetries:2,timeoutMs:12e4,baseBackoffMs:2e3},AE={maxRetries:0,timeoutMs:8e3,baseBackoffMs:500};let Jr=null;async function RE(){return Jr||(Jr=(async()=>{try{At("/health","GET","Warming up HuggingFace Space...");const e=new AbortController,t=setTimeout(()=>e.abort(),15e3),n=await fetch(`${xr}/health`,{method:"GET",signal:e.signal});return clearTimeout(t),n.ok?(At("/health","GET","Backend warm and ready"),!0):(console.warn("[apiService] Backend health check returned",n.status),!1)}catch(e){return console.warn("[apiService] Backend warmup failed (cold start expected):",e),!1}})(),Jr)}async function N(e,t,n=Et){const r=`${xr}${e}`,s=t?.method??"GET";At(e,s,"Starting request");const o=async a=>{const c=new Headers(t?.headers??{});!(t?.body instanceof FormData)&&!c.has("Content-Type")&&c.set("Content-Type","application/json");const u=be.currentUser;if(u)try{const d=await u.getIdToken(a);d&&c.set("Authorization",`Bearer ${d}`)}catch(d){je(e,s,"Failed to acquire Firebase ID token",d)}return{...t,headers:c}};let i=await o(!1);try{const a=await hu(r,i,n);return At(e,s,"Request succeeded"),a}catch(a){if(a instanceof It&&a.status===401&&be.currentUser)try{At(e,s,"401 received, refreshing Firebase token and retrying once"),i=await o(!0);const c=await hu(r,i,n);return At(e,s,"Request succeeded after token refresh"),c}catch(c){throw c instanceof It?je(e,s,`HTTP ${c.status}: ${c.responseBody.slice(0,300)}`):c instanceof bn?je(e,s,`Timeout after ${c.timeoutMs}ms`):c instanceof Ls?je(e,s,`Network error: ${c.originalError.message}`):je(e,s,`Unexpected: ${c instanceof Error?c.message:String(c)}`),c}throw a instanceof It?(je(e,s,`HTTP ${a.status}: ${a.responseBody.slice(0,300)}`),a.status===429&&await xE(new Response(a.responseBody,{status:429,headers:{"retry-after":"60"}}),e)):a instanceof bn?je(e,s,`Timeout after ${a.timeoutMs}ms`):a instanceof Ls?je(e,s,`Network error: ${a.originalError.message}`):je(e,s,`Unexpected: ${a instanceof Error?a.message:String(a)}`),a}}async function xu(e,t,n=Qs){const r=`${xr}${e}`,s=t?.method??"GET";At(e,s,"Starting blob request");const o=async i=>{const a=new Headers(t?.headers??{}),c=be.currentUser;if(c)try{const l=await c.getIdToken(i);l&&a.set("Authorization",`Bearer ${l}`)}catch(l){je(e,s,"Failed to acquire Firebase ID token",l)}const u=new AbortController,d=setTimeout(()=>u.abort(),n);try{const l=await fetch(r,{...t,headers:a,signal:u.signal});if(!l.ok){const f=await l.text();throw new It({status:l.status,statusText:l.statusText||"Request Failed",endpoint:e,responseBody:f,retryable:l.status>=500||l.status===429})}return await l.blob()}finally{clearTimeout(d)}};try{return await o(!1)}catch(i){if(i instanceof It&&i.status===401&&be.currentUser)return At(e,s,"401 received for blob request, refreshing Firebase token and retrying once"),o(!0);throw i}}const ME={response:"Sorry, the AI tutor is temporarily unavailable. Please try again in a moment."},IE={riskLevel:"Medium",confidence:0,analysis:{labels:[],scores:[]},risk_level:"medium",risk_score:0,top_factors:["Fallback risk response due to temporary service unavailability"]},DE={learningPath:"Unable to generate a learning path right now. Please try again later."},OE={insight:"Daily insight is temporarily unavailable. Please refresh later."},LE={expression:"",result:"Error: calculation service unavailable",steps:[],simplified:null,latex:null};function zE(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.riskLevel=="string"&&typeof t.confidence=="number"}function Su(e){if(typeof e!="object"||e===null)return!1;const t=e;return Array.isArray(t.questions)&&typeof t.totalPoints=="number"}const jE=e=>new Promise(t=>setTimeout(t,e));function NE(e){if(!e)return"Generation task failed without a detailed error.";if(typeof e=="string")return e;if(typeof e=="object"&&e!==null){const t=e;if(typeof t.message=="string")return t.message;try{return JSON.stringify(t)}catch{return"Generation task failed due to an unknown error."}}return String(e)}const bt={getImportGroundedRolloutFlags(){return{quizEnabled:zo,lessonEnabled:gu,feedbackEnabled:yu}},async reportImportGroundedFeedback(e){return yu?N("/api/feedback/import-grounded",{method:"POST",body:JSON.stringify(e)}):{success:!0,stored:!1,warnings:["Import-grounded feedback events are disabled by frontend rollout flag."]}},async health(){return N("/health",void 0,{...Et,timeoutMs:1e4})},async chat(e,t,n,r){ke("/api/chat",{message:e});const s={message:e,history:t??[],...r?.sessionId?{sessionId:r.sessionId}:{},...r?.expectedEndMarker?{expectedEndMarker:r.expectedEndMarker}:{},...r?.completionMode?{completionMode:r.completionMode}:{},...typeof r?.continuationMaxRounds=="number"?{continuationMaxRounds:Math.max(0,Math.floor(r.continuationMaxRounds))}:{},...r?.moduleContext?{moduleContext:r.moduleContext}:{}};if(n){const i=new AbortController;let a=null,c=null,u=null;const d=g=>{a||(a=g,i.abort())},l=()=>{c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null)},f=()=>{c&&clearTimeout(c),c=setTimeout(()=>d("idle"),vu)};u=setTimeout(()=>d("total"),jo);const p=new Headers({"Content-Type":"application/json"}),m=be.currentUser;if(m)try{const g=await m.getIdToken(!1);g&&p.set("Authorization",`Bearer ${g}`)}catch(g){je("/api/chat/stream","POST","Failed to acquire Firebase ID token",g)}let y=null;try{f();const g=await fetch(`${xr}/api/chat/stream`,{method:"POST",headers:p,body:JSON.stringify(s),signal:i.signal});if(!g.ok||!g.body){const P=await g.text().catch(()=>"Unable to read response body");throw new Error(`Streaming request failed (${g.status}): ${P.slice(0,300)}`)}y=g.body.getReader();const v=new TextDecoder;let k="",S="",x=!1;const T=P=>{const _=P.indexOf(` +What would you like to learn about?`}const CR=()=>{const e=h.useContext(jh);if(!e)throw new Error("useChatContext must be used within ChatProvider");return e},$_=({children:e})=>{const{currentUser:t}=Rr(),[n,r]=h.useState([]),[s,o]=h.useState(null),[i,a]=h.useState(!1),[c,u]=h.useState(null),[d,l]=h.useState(!1),f=h.useRef(new Map);h.useEffect(()=>{if(!t){r([]),l(!1);return}(async()=>{try{const T=await un(),P=await T.getUserChatSessions(t.uid),_=await Promise.all(P.map(async w=>{const A=(await T.getSessionMessages(w.id,t.uid)).map(B=>({id:B.id,sender:B.role==="user"?"user":"ai",text:B.role==="assistant"?yt(B.content):B.content,timestamp:B.timestamp instanceof Date?B.timestamp.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):new Date(B.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}));return{id:w.id,title:w.title,date:w.updatedAt instanceof Date?w.updatedAt.toLocaleDateString():new Date(w.updatedAt).toLocaleDateString(),messageCount:A.length,preview:A.length>0&&Ro(A[A.length-1].text)||"No messages yet",topics:[],messages:A,createdAt:w.createdAt instanceof Date?w.createdAt:new Date(w.createdAt),updatedAt:w.updatedAt instanceof Date?w.updatedAt:new Date(w.updatedAt)}}));r(_)}catch(T){console.error("Error loading chat sessions:",T)}finally{l(!0)}})()},[t]);const p=x=>{if(x.length===0)return"New Chat";const T=x.find(w=>w.sender==="user")?.text||"",P=T.toLowerCase();if(P.includes("quadratic")||P.includes("ax² + bx + c"))return"Quadratic Equations Help";if(P.includes("derivative")||P.includes("calculus"))return"Derivatives & Calculus";if(P.includes("pythagor")||P.includes("right triangle"))return"Pythagorean Theorem";if(P.includes("trig")||P.includes("sin")||P.includes("cos"))return"Trigonometry Help";if(P.includes("area")||P.includes("perimeter"))return"Geometry - Area & Perimeter";if(P.includes("algebra")||P.includes("solve")&&P.includes("x"))return"Algebra Problem Solving";if(P.includes("factor"))return"Factoring Practice";if(P.includes("graph")||P.includes("plot"))return"Graphing Functions";if(P.includes("matrix")||P.includes("matrices"))return"Matrix Operations";if(P.includes("integral")||P.includes("integrate"))return"Integration Problems";if(P.includes("limit"))return"Limits in Calculus";if(P.includes("statistic")||P.includes("probability"))return"Statistics & Probability";const _=T.slice(0,40);return _.length{const T=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Date.now().toString(),P=new Date,_={id:T,title:x?p([x]):"New Chat",date:"Just now",messageCount:x?1:0,preview:x&&Ro(x.text)||"Start a new conversation...",topics:[],messages:x?[x]:[],createdAt:P,updatedAt:P};if(r(w=>[_,...w]),t){const w=x?p([x]):"New Chat",R=un().then(async A=>{const B=await A.createChatSession(t.uid,w);return oe(async()=>{const{logChatSession:F}=await import("./trackingService-DVTIYmY9.js");return{logChatSession:F}},__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10])).then(({logChatSession:F})=>F(t.uid,B.id,x?1:0).catch(()=>{})),x&&await A.addMessageToSession(B.id,x.sender==="user"?"user":"assistant",x.text),B.id}).catch(A=>(console.error("Error creating Firebase session:",A),T));f.current.set(T,R)}return T},[t]),y=h.useCallback((x,T)=>{r(_=>_.map(w=>{if(w.id===x){const R=[...w.messages,T];return{...w,messages:R,messageCount:R.length,preview:Ro(T.text)||w.preview,updatedAt:new Date,title:R.length===2?p(R):w.title}}return w}));const P=async _=>{const w=f.current.get(_);return w?await w:_};P(x).then(async _=>{await(await un()).addMessageToSession(_,T.sender==="user"?"user":"assistant",T.text)}).catch(_=>console.error("Error persisting message:",_)),r(_=>{const w=_.find(R=>R.id===x);if(w&&w.messages.length===2){const R=p(w.messages);P(x).then(async A=>{await(await un()).updateSessionTitle(A,R)}).catch(A=>console.error("Error updating title:",A))}return _})},[]),g=h.useCallback(async(x,T)=>{const P=T.trim(),_={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Date.now().toString(),sender:"user",text:P,timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,_),u(x),a(!0);try{let w=null,R=null;const A=n.find(Z=>Z.id===x),F=[...A?.messages||[],_].map(Z=>({role:Z.sender==="user"?"user":"assistant",content:Z.text})),H=Nh(P)?M_(F):null,re=H?I_(H):P,te=H??P,V=k_(P)?T_({userId:t?.uid||"anonymous",prompt:P,history:F}):null,ie=Z=>{if(!V)return;const O=yt(Z).trim();O&&__(V,O)},se=Lh(P,{history:F});if(se){const Z={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:se,timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,Z);return}if(V){const Z=P_(V);if(Z){const O={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:Z,timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,O);return}}try{const Z=await au();w=Z.apiService,R=Z.ApiTimeoutError}catch(Z){console.error("Failed to load API service for chat:",Z);const O={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:Xr(te),timestamp:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})};y(x,O);return}const ue=new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});let D="",he=null;const rt=j_(P),X=N_(P),U=D_(P),q=X||!!U,J={sessionId:x,...U?{expectedEndMarker:U,completionMode:"marker"}:{}},xe=Z=>Ii(P,Z,U,X),ae=Z=>{Z.trim()&&r(O=>O.map(ee=>{if(ee.id!==x)return ee;if(!he){he=`stream-${typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Date.now().toString()}-${Math.random().toString(36).slice(2,8)}`;const ye={id:he,sender:"ai",text:Z,timestamp:ue},K=[...ee.messages,ye];return{...ee,messages:K,messageCount:K.length,updatedAt:new Date}}return{...ee,messages:ee.messages.map(ye=>ye.id===he?{...ye,text:Z}:ye),updatedAt:new Date}}))},le=()=>{if(!he)return;const Z=he;r(O=>O.map(ee=>{if(ee.id!==x)return ee;const ye=ee.messages.filter(K=>K.id!==Z);return{...ee,messages:ye,messageCount:ye.length,updatedAt:new Date}}))};try{const{response:Z}=await w.chat(re,F,K=>{D+=K,rt&&ae(XP(D))},J);let O=yt(Z||D).trim();if(q&&O&&xe(O)){try{const K=await w.chatSafe(cu(P,O,U),F,J),Ye=yt(K.data.response).trim();O=Qr(O,Ye)}catch(K){console.warn("Streaming completion repair failed:",K)}if(q&&O&&xe(O))try{const K=await w.chatSafe(lu(P,O,U),F,J),Ye=yt(K.data.response).trim();O=Qr(O,Ye)}catch(K){console.warn("Streaming plain continuation repair failed:",K)}if(q&&O&&xe(O))try{const K=await w.chatSafe(uu(P,U),F,J),Ye=yt(K.data.response).trim();Ye&&(O=du(P,O,Ye,U,X))}catch(K){console.warn("Streaming full completion repair failed:",K)}}const ee=xe(O);(!O||ee&&!q)&&(O=Xr(te,F)),ie(O),he&&le();const ye={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:O,timestamp:ue};y(x,ye)}catch(Z){R&&Z instanceof R?console.warn(`Streaming timed out after ${Z.timeoutMs}ms, falling back to non-streaming chat.`,Z):console.warn("Streaming failed, falling back to non-streaming chat:",Z),he&&le();let O="";try{const K=w??(await au()).apiService,{data:Ye}=await K.chatSafe(re,F,J);if(O=yt(Ye.response).trim(),q&&O&&xe(O))try{const Le=await K.chatSafe(cu(P,O,U),F,J),Je=yt(Le.data.response).trim();O=Qr(O,Je)}catch(Le){console.warn("Non-stream completion repair failed:",Le)}if(q&&O&&xe(O))try{const Le=await K.chatSafe(lu(P,O,U),F,J),Je=yt(Le.data.response).trim();O=Qr(O,Je)}catch(Le){console.warn("Non-stream plain continuation repair failed:",Le)}if(q&&O&&xe(O))try{const Le=await K.chatSafe(uu(P,U),F,J),Je=yt(Le.data.response).trim();Je&&(O=du(P,O,Je,U,X))}catch(Le){console.warn("Non-stream full completion repair failed:",Le)}}catch(K){console.warn("Chat request failed, using local fallback response:",K),O=Xr(te,F)}const ee=xe(O);(!O||ee&&!q)&&(O=Xr(te,F)),ie(O);const ye={id:typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(Date.now()+1).toString(),sender:"ai",text:O,timestamp:ue};y(x,ye)}if(A&&A.messages.length===1){const Z=n.find(O=>O.id===x);if(Z&&Z.messages.length>1){const O=p(Z.messages),ee=f.current.get(x);(ee||Promise.resolve(x)).then(async K=>{await(await un()).updateSessionTitle(K,O)}).catch(K=>console.error("Error updating title:",K))}}}finally{a(!1),u(null)}},[n,y,t]),v=h.useCallback((x,T)=>{r(w=>w.map(R=>R.id===x?{...R,title:T}:R));const P=f.current.get(x);(P||Promise.resolve(x)).then(async w=>{await(await un()).updateSessionTitle(w,T)}).catch(w=>console.error("Error updating session title:",w))},[]),k=h.useCallback(x=>{r(_=>_.filter(w=>w.id!==x)),s===x&&o(null);const T=f.current.get(x);(T||Promise.resolve(x)).then(async _=>{await(await un()).deleteSession(_)}).catch(_=>console.error("Error deleting session:",_)),f.current.delete(x)},[s]),S=h.useCallback(()=>n.find(x=>x.id===s)||null,[n,s]);return b.jsx(jh.Provider,{value:{sessions:n,activeSessionId:s,isLoading:i,loadingSessionId:c,sessionsLoaded:d,setActiveSessionId:o,createNewSession:m,addMessageToSession:y,sendMessage:g,updateSessionTitle:v,deleteSession:k,getActiveSession:S,generateTitleFromMessages:p},children:e})},F_=[{id:"first_lesson",title:"First Steps",description:"Complete your first lesson",icon:Ao,iconColor:"text-yellow-500",xpReward:50,condition:"lesson_complete",threshold:1,category:"learning"},{id:"lesson_10",title:"Dedicated Learner",description:"Complete 10 lessons",icon:Ao,iconColor:"text-blue-500",xpReward:200,condition:"lesson_complete",threshold:10,category:"learning"},{id:"lesson_50",title:"Knowledge Seeker",description:"Complete 50 lessons",icon:Il,iconColor:"text-purple-500",xpReward:500,condition:"lesson_complete",threshold:50,category:"learning"},{id:"perfect_score",title:"Perfect Score",description:"Score 100% on any quiz",icon:zl,iconColor:"text-yellow-400",xpReward:150,condition:"perfect_score",category:"learning"},{id:"no_mistakes",title:"Flawless",description:"Complete a quiz with zero wrong answers",icon:Ol,iconColor:"text-emerald-500",xpReward:100,condition:"quiz_no_mistakes",category:"learning"},{id:"speed_demon",title:"Speed Demon",description:"Complete a quiz in under 2 minutes",icon:Ti,iconColor:"text-orange-500",xpReward:100,condition:"speed_quiz",category:"learning"},{id:"quiz_10",title:"Quiz Enthusiast",description:"Complete 10 quizzes",icon:gx,iconColor:"text-cyan-500",xpReward:200,condition:"quiz_complete",threshold:10,category:"learning"},{id:"quiz_50",title:"Quiz Champion",description:"Complete 50 quizzes",icon:Ao,iconColor:"text-indigo-500",xpReward:500,condition:"quiz_complete",threshold:50,category:"learning"},{id:"quiz_perfect",title:"Perfectionist",description:"Get 5 perfect quiz scores",icon:$x,iconColor:"text-amber-400",xpReward:300,condition:"perfect_score",threshold:5,category:"learning"},{id:"study_streak",title:"Study Streak",description:"Maintain a 7-day lesson completion streak",icon:ms,iconColor:"text-red-500",xpReward:300,condition:"mastery_10",threshold:7,category:"learning"},{id:"first_battle",title:"First Blood",description:"Win your first Quiz Battle",icon:Gr,iconColor:"text-red-400",xpReward:100,condition:"battle_win",threshold:1,category:"battle"},{id:"battle_10",title:"Battle Veteran",description:"Win 10 Quiz Battles",icon:Gr,iconColor:"text-orange-400",xpReward:300,condition:"battle_win",threshold:10,category:"battle"},{id:"battle_50",title:"Battle Legend",description:"Win 50 Quiz Battles",icon:Gr,iconColor:"text-red-500",xpReward:1e3,condition:"battle_win",threshold:50,category:"battle"},{id:"undefeated",title:"Undefeated",description:"Win 5 battles in a row without losing",icon:Dl,iconColor:"text-blue-500",xpReward:500,condition:"battle_undefeated",threshold:5,category:"battle"},{id:"quick_win",title:"Speed Battle",description:"Win a battle by answering all questions first",icon:Ti,iconColor:"text-yellow-500",xpReward:150,condition:"speed_quiz",category:"battle"},{id:"comeback",title:"The Comeback",description:"Win a battle after being behind in score",icon:zx,iconColor:"text-teal-500",xpReward:200,condition:"battle_comeback",category:"battle"},{id:"battle_master",title:"Battle Master",description:"Win 3 battles in a single day",icon:ps,iconColor:"text-yellow-500",xpReward:400,condition:"battle_win",threshold:3,category:"battle"},{id:"invincible",title:"Invincible",description:"Win 10 battles in a row",icon:Dl,iconColor:"text-violet-500",xpReward:1e3,condition:"battle_undefeated",threshold:10,category:"battle"},{id:"first_blood_daily",title:"Early Bird",description:"Win your first battle of the day",icon:Vx,iconColor:"text-amber-500",xpReward:50,condition:"battle_win",threshold:1,category:"battle"},{id:"rival_crusher",title:"Rival Crusher",description:"Win 25 battles total",icon:Gr,iconColor:"text-rose-500",xpReward:750,condition:"battle_win",threshold:25,category:"battle"},{id:"mastery_10",title:"Week Warrior",description:"Maintain a 10-day learning streak",icon:ms,iconColor:"text-orange-500",xpReward:500,condition:"mastery_10",threshold:10,category:"mastery"},{id:"mastery_level",title:"Rising Star",description:"Reach level 5",icon:ps,iconColor:"text-yellow-400",xpReward:250,condition:"mastery_level",threshold:5,category:"mastery"},{id:"mastery_xp",title:"XP Hunter",description:"Earn a total of 5,000 XP",icon:Ll,iconColor:"text-emerald-500",xpReward:400,condition:"mastery_xp",threshold:5e3,category:"mastery"},{id:"mastery_all_lessons",title:"Curriculum Complete",description:"Complete all available lessons",icon:Il,iconColor:"text-purple-500",xpReward:1e3,condition:"mastery_all_lessons",category:"mastery"},{id:"mastery_all_subjects",title:"Polymath",description:"Complete at least one lesson in every subject",icon:Px,iconColor:"text-cyan-500",xpReward:500,condition:"mastery_all_subjects",category:"mastery"},{id:"mastery_assessment_perfect",title:"Assessment Perfect",description:"Score 100% on a diagnostic assessment",icon:Ol,iconColor:"text-amber-500",xpReward:400,condition:"mastery_assessment_perfect",category:"mastery"},{id:"mastery_max_level",title:"Max Level",description:"Reach the maximum player level",icon:ps,iconColor:"text-yellow-500",xpReward:2e3,condition:"mastery_max_level",category:"mastery"},{id:"mastery_top_10",title:"Leaderboard Elite",description:"Reach the top 10 on the global leaderboard",icon:Rl,iconColor:"text-amber-400",xpReward:1e3,condition:"social_xp",category:"mastery"},{id:"explore_profile",title:"Identity Set",description:"Complete your user profile",icon:Kx,iconColor:"text-blue-400",xpReward:50,condition:"explore_profile_complete",category:"exploration"},{id:"explore_first_friend",title:"Socialite",description:"Add your first friend",icon:jl,iconColor:"text-green-500",xpReward:50,condition:"explore_friend_added",threshold:1,category:"exploration"},{id:"explore_daily_return",title:"Daily Visitor",description:"Return to the app 3 days in a row",icon:Ml,iconColor:"text-indigo-400",xpReward:100,condition:"social_daily_return",threshold:3,category:"exploration"},{id:"explore_10_friends",title:"Popular",description:"Have 10 friends on the platform",icon:Xx,iconColor:"text-teal-500",xpReward:300,condition:"explore_friend_added",threshold:10,category:"exploration"},{id:"explore_all_features",title:"Explorer",description:"Use all major app features",icon:xx,iconColor:"text-orange-400",xpReward:200,condition:"explore_profile_complete",category:"exploration"},{id:"explore_25_friends",title:"Social Butterfly",description:"Have 25 friends on the platform",icon:Cx,iconColor:"text-pink-500",xpReward:500,condition:"explore_social",threshold:25,category:"exploration"},{id:"explore_xp_1000",title:"XP Milestone",description:"Earn your first 1,000 XP",icon:Ll,iconColor:"text-blue-500",xpReward:100,condition:"mastery_xp",threshold:1e3,category:"exploration"},{id:"social_first_friend",title:"Friendship Starter",description:"Send your first friend request",icon:jl,iconColor:"text-green-400",xpReward:25,condition:"social_friend",threshold:1,category:"social"},{id:"social_helper",title:"Helpful Hand",description:"Contribute to the community",icon:Rl,iconColor:"text-cyan-500",xpReward:150,condition:"social_contribution",category:"social"},{id:"social_top_10",title:"Elite Status",description:"Reach the top 10 on the leaderboard",icon:zl,iconColor:"text-yellow-400",xpReward:500,condition:"social_xp",category:"social"},{id:"social_streak_30",title:"Dedicated Member",description:"Maintain a 30-day activity streak",icon:ms,iconColor:"text-red-400",xpReward:1e3,condition:"mastery_10",threshold:30,category:"social"},{id:"social_daily_7",title:"Weekly Visitor",description:"Return to the app 7 days in a row",icon:Ml,iconColor:"text-violet-400",xpReward:200,condition:"social_daily_return",threshold:7,category:"social"}];new Map(F_.map(e=>[e.id,e]));const Do=async(e,t,n,r)=>{try{const s=W($,"users",e),o=await we(s);if(!o.exists())throw new Error("User not found");const i=o.data(),a=i.currentXP||0,c=i.totalXP||0,u=i.xpMultiplier||1,d=Math.floor(t*u),l=a+d,f=c+d;let m=i.level||1;const y=f;let g=!1;for(;;){const S=Math.floor(100*Math.pow(1.5,m-1));let x=0;for(let T=1;T<=m;T++)x+=Math.floor(100*Math.pow(1.5,T-1));if(f>=x)m++,g=!0;else break}const v={currentXP:l,totalXP:f,level:m,updatedAt:ce()};u!==1&&(v.xpMultiplier=1),await kt(s,v);const k=W(Xe($,"xpActivities"));return await Ne(k,{activityId:k.id,userId:e,type:n,xpEarned:t,description:r,timestamp:ce()}),{newLevel:m,leveledUp:g,xp:l,addedXp:t}}catch(s){throw console.error("Error awarding XP:",s),s}},AR=async(e,t=!1,n="all",r=10)=>{try{const s=Dt(Xe($,"leaderboard"),vn("totalXP","desc"),Sr(r)),o=await jn(s);return o.empty?[]:o.docs.map((i,a)=>{const c=i.data();return{userId:i.id,name:c.name||"Unknown",photo:c.photo,xp:c.totalXP||0,level:c.level||1,rank:a+1,weeklyXP:c.weeklyXP||0,monthlyXP:c.monthlyXP||0}})}catch(s){return console.error("Error getting leaderboard:",s),[]}},RR=(e,t,n=!1,r="all",s=10)=>{const o=Dt(Xe($,"leaderboard"),vn("totalXP","desc"),Sr(s));return Jt(o,i=>{const a=i.docs.map((c,u)=>{const d=c.data();return{userId:c.id,name:d.name||"Unknown",photo:d.photo,xp:d.totalXP||0,level:d.level||1,rank:u+1,weeklyXP:d.weeklyXP||0,monthlyXP:d.monthlyXP||0}});e(a)},i=>{console.error("Error subscribing to leaderboard:",i),e([])})},MR=async e=>{try{const t=await we(W($,"achievements",e));return t.exists()?t.data().achievements||[]:[]}catch(t){return console.error("Error getting user achievements:",t),[]}},IR=async(e,t,n)=>{try{const r=W($,"users",e),s=await we(r);if(!s.exists())throw new Error("User not found");const o=s.data(),i=o.currentXP||0;if((o.ownedAvatarItems||[]).includes(t))return{success:!1,message:"You already own this item",currentXP:i};if(i{try{const n=W($,"users",e),r=await we(n);if(!r.exists())throw new Error("User not found");return(r.data().ownedAvatarItems||[]).includes(t)?{success:!0,message:"Item already owned"}:(await kt(n,{ownedAvatarItems:ju(t),updatedAt:ce()}),{success:!0,message:"Avatar item unlocked!"})}catch(n){return console.error("Error unlocking avatar item:",n),{success:!1,message:"Failed to unlock item"}}},Qs=3e4,$h=3,Fh=1e3;class It extends Error{status;statusText;endpoint;responseBody;retryable;requestId;constructor(t){super(`API Error ${t.status} (${t.statusText}) on ${t.endpoint}: ${t.responseBody}`),this.name="ApiError",this.status=t.status,this.statusText=t.statusText,this.endpoint=t.endpoint,this.responseBody=t.responseBody,this.retryable=t.retryable,this.requestId=t.requestId}}class bn extends Error{endpoint;timeoutMs;constructor(t,n){super(`Request to ${t} timed out after ${n}ms`),this.name="ApiTimeoutError",this.endpoint=t,this.timeoutMs=n}}class Ls extends Error{endpoint;originalError;constructor(t,n){super(`Network error on ${t}: ${n.message}`),this.name="ApiNetworkError",this.endpoint=t,this.originalError=n}}class ze extends Error{endpoint;details;constructor(t,n){super(`Validation error before calling ${t}: ${n}`),this.name="ApiValidationError",this.endpoint=t,this.details=n}}const V_=new Set([408,429,500,502,503,504]);function B_(e){return V_.has(e)}function za(e){const t=`[API ${e.level.toUpperCase()}] ${e.timestamp} ${e.method} ${e.endpoint}`;switch(e.level){case"error":console.error(t,e.message,e.details??"");break;case"warn":console.warn(t,e.message,e.details??"");break;default:console.info(t,e.message,e.details??"")}}function At(e,t,n,r){za({timestamp:new Date().toISOString(),level:"info",endpoint:e,method:t,message:n,details:r})}function Di(e,t,n,r){za({timestamp:new Date().toISOString(),level:"warn",endpoint:e,method:t,message:n,details:r})}function je(e,t,n,r){za({timestamp:new Date().toISOString(),level:"error",endpoint:e,method:t,message:n,details:r})}function U_(e,t,n=Qs){const r=new AbortController,s=setTimeout(()=>r.abort(),n);return{promise:fetch(e,{...t,signal:r.signal}).finally(()=>clearTimeout(s)),abort:()=>r.abort()}}let q_=e=>new Promise(t=>setTimeout(t,e));function fu(e){return q_(e)}function G_(e,t=Fh){const n=t*Math.pow(2,e),r=Math.random()*t;return Math.min(n+r,3e4)}async function hu(e,t={},n={}){const{maxRetries:r=$h,timeoutMs:s=Qs,baseBackoffMs:o=Fh}=n,i=(t.method??"GET").toUpperCase();let a;for(let c=0;c<=r;c++){const u=Date.now();try{c>0&&At(e,i,`Retry attempt ${c}/${r}`);const{promise:d}=U_(e,t,s),l=await d,f=Date.now()-u;if(l.ok)return At(e,i,`${l.status} in ${f}ms`,{attempt:c}),await l.json();const p=await l.text().catch(()=>"Unable to read response body"),m=B_(l.status),y=new It({status:l.status,statusText:l.statusText,endpoint:e,responseBody:p,retryable:m,requestId:l.headers.get("x-request-id")??void 0});if(je(e,i,`${l.status} ${l.statusText} in ${f}ms`,{attempt:c,responseBody:p.slice(0,500),retryable:m}),!m)throw y;if(l.status===429){const g=l.headers.get("retry-after");if(g){const v=parseInt(g,10);if(!isNaN(v)&&v>0){Di(e,i,`Rate limited. Waiting ${v}s (Retry-After header)`),await fu(v*1e3),a=y;continue}}}a=y}catch(d){const l=Date.now()-u;if(d instanceof It&&!d.retryable)throw d;if(d instanceof DOMException&&d.name==="AbortError"){const f=new bn(e,s);je(e,i,`Timeout after ${l}ms`,{attempt:c,timeoutMs:s}),a=f}else if(d instanceof TypeError&&d.message.includes("fetch")){const f=new Ls(e,d);je(e,i,`Network error after ${l}ms: ${d.message}`,{attempt:c}),a=f}else d instanceof It?a=d:(a=d instanceof Error?d:new Error(String(d)),je(e,i,`Unexpected error: ${a.message}`,{attempt:c}))}if(cr==null||r==="").map(([r])=>r);if(n.length>0)throw new ze(e,`Missing required fields: ${n.join(", ")}`)}function Re(e,t,n,r,s){if(typeof n!="number"||isNaN(n)||ns)throw new ze(e,`${t} must be a number between ${r} and ${s}, got ${n}`)}function W_(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const H_=e=>{switch(e){case"success":return Q_;case"info":return Y_;case"warning":return X_;case"error":return J_;default:return null}},Z_=Array(12).fill(0),K_=({visible:e,className:t})=>I.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},I.createElement("div",{className:"sonner-spinner"},Z_.map((n,r)=>I.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),Q_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),X_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Y_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),J_=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},I.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),eE=I.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},I.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),I.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),tE=()=>{const[e,t]=I.useState(document.hidden);return I.useEffect(()=>{const n=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e};let Oi=1;class nE{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;const{message:r,...s}=t,o=typeof t?.id=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Oi++,i=this.toasts.find(c=>c.id===o),a=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),i?this.toasts=this.toasts.map(c=>c.id===o?(this.publish({...c,...t,id:o,title:r}),{...c,...t,id:o,dismissible:a,title:r}):c):this.addToast({title:r,...s,dismissible:a,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:t,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(r=>r({id:n.id,dismiss:!0}))}),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let r;n.loading!==void 0&&(r=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const s=Promise.resolve(t instanceof Function?t():t);let o=r!==void 0,i;const a=s.then(async u=>{if(i=["resolve",u],I.isValidElement(u))o=!1,this.create({id:r,type:"default",message:u});else if(sE(u)&&!u.ok){o=!1;const l=typeof n.error=="function"?await n.error(`HTTP error! status: ${u.status}`):n.error,f=typeof n.description=="function"?await n.description(`HTTP error! status: ${u.status}`):n.description,m=typeof l=="object"&&!I.isValidElement(l)?l:{message:l};this.create({id:r,type:"error",description:f,...m})}else if(u instanceof Error){o=!1;const l=typeof n.error=="function"?await n.error(u):n.error,f=typeof n.description=="function"?await n.description(u):n.description,m=typeof l=="object"&&!I.isValidElement(l)?l:{message:l};this.create({id:r,type:"error",description:f,...m})}else if(n.success!==void 0){o=!1;const l=typeof n.success=="function"?await n.success(u):n.success,f=typeof n.description=="function"?await n.description(u):n.description,m=typeof l=="object"&&!I.isValidElement(l)?l:{message:l};this.create({id:r,type:"success",description:f,...m})}}).catch(async u=>{if(i=["reject",u],n.error!==void 0){o=!1;const d=typeof n.error=="function"?await n.error(u):n.error,l=typeof n.description=="function"?await n.description(u):n.description,p=typeof d=="object"&&!I.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:l,...p})}}).finally(()=>{o&&(this.dismiss(r),r=void 0),n.finally==null||n.finally.call(n)}),c=()=>new Promise((u,d)=>a.then(()=>i[0]==="reject"?d(i[1]):u(i[1])).catch(d));return typeof r!="string"&&typeof r!="number"?{unwrap:c}:Object.assign(r,{unwrap:c})},this.custom=(t,n)=>{const r=n?.id||Oi++;return this.create({jsx:t(r),id:r,...n}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const nt=new nE,rE=(e,t)=>{const n=t?.id||Oi++;return nt.addToast({title:e,...t,id:n}),n},sE=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",oE=rE,iE=()=>nt.toasts,aE=()=>nt.getActiveToasts(),ct=Object.assign(oE,{success:nt.success,info:nt.info,warning:nt.warning,error:nt.error,custom:nt.custom,message:nt.message,promise:nt.promise,dismiss:nt.dismiss,loading:nt.loading},{getHistory:iE,getToasts:aE});W_("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Yr(e){return e.label!==void 0}const cE=3,lE="24px",uE="16px",pu=4e3,dE=356,fE=14,hE=45,pE=200;function Pt(...e){return e.filter(Boolean).join(" ")}function mE(e){const[t,n]=e.split("-"),r=[];return t&&r.push(t),n&&r.push(n),r}const gE=e=>{var t,n,r,s,o,i,a,c,u;const{invert:d,toast:l,unstyled:f,interacting:p,setHeights:m,visibleToasts:y,heights:g,index:v,toasts:k,expanded:S,removeToast:x,defaultRichColors:T,closeButton:P,style:_,cancelButtonStyle:w,actionButtonStyle:R,className:A="",descriptionClassName:B="",duration:F,position:H,gap:re,expandByDefault:te,classNames:V,icons:ie,closeButtonAriaLabel:se="Close toast"}=e,[ue,D]=I.useState(null),[he,rt]=I.useState(null),[X,U]=I.useState(!1),[q,J]=I.useState(!1),[xe,ae]=I.useState(!1),[le,Z]=I.useState(!1),[O,ee]=I.useState(!1),[ye,K]=I.useState(0),[Ye,Le]=I.useState(0),Je=I.useRef(l.duration||F||pu),an=I.useRef(null),ht=I.useRef(null),Ir=v===0,Dr=v+1<=y,Ue=l.type,it=l.dismissible!==!1,$t=l.className||"",Js=l.descriptionClassName||"",Ft=I.useMemo(()=>g.findIndex(Y=>Y.toastId===l.id)||0,[g,l.id]),cn=I.useMemo(()=>{var Y;return(Y=l.closeButton)!=null?Y:P},[l.closeButton,P]),Hn=I.useMemo(()=>l.duration||F||pu,[l.duration,F]),Tn=I.useRef(0),st=I.useRef(0),Ht=I.useRef(0),pt=I.useRef(null),[eo,Zn]=H.split("-"),Or=I.useMemo(()=>g.reduce((Y,pe,Pe)=>Pe>=Ft?Y:Y+pe.height,0),[g,Ft]),Kn=tE(),to=l.invert||d,Qn=Ue==="loading";st.current=I.useMemo(()=>Ft*re+Or,[Ft,Or]),I.useEffect(()=>{Je.current=Hn},[Hn]),I.useEffect(()=>{U(!0)},[]),I.useEffect(()=>{const Y=ht.current;if(Y){const pe=Y.getBoundingClientRect().height;return Le(pe),m(Pe=>[{toastId:l.id,height:pe,position:l.position},...Pe]),()=>m(Pe=>Pe.filter($e=>$e.toastId!==l.id))}},[m,l.id]),I.useLayoutEffect(()=>{if(!X)return;const Y=ht.current,pe=Y.style.height;Y.style.height="auto";const Pe=Y.getBoundingClientRect().height;Y.style.height=pe,Le(Pe),m($e=>$e.find(Ce=>Ce.toastId===l.id)?$e.map(Ce=>Ce.toastId===l.id?{...Ce,height:Pe}:Ce):[{toastId:l.id,height:Pe,position:l.position},...$e])},[X,l.title,l.description,m,l.id,l.jsx,l.action,l.cancel]);const at=I.useCallback(()=>{J(!0),K(st.current),m(Y=>Y.filter(pe=>pe.toastId!==l.id)),setTimeout(()=>{x(l)},pE)},[l,x,m,st]);I.useEffect(()=>{if(l.promise&&Ue==="loading"||l.duration===1/0||l.type==="loading")return;let Y;return S||p||Kn?(()=>{if(Ht.current{Je.current!==1/0&&(Tn.current=new Date().getTime(),Y=setTimeout(()=>{l.onAutoClose==null||l.onAutoClose.call(l,l),at()},Je.current))})(),()=>clearTimeout(Y)},[S,p,l,Ue,Kn,at]),I.useEffect(()=>{l.delete&&(at(),l.onDismiss==null||l.onDismiss.call(l,l))},[at,l.delete]);function Xn(){var Y;if(ie?.loading){var pe;return I.createElement("div",{className:Pt(V?.loader,l==null||(pe=l.classNames)==null?void 0:pe.loader,"sonner-loader"),"data-visible":Ue==="loading"},ie.loading)}return I.createElement(K_,{className:Pt(V?.loader,l==null||(Y=l.classNames)==null?void 0:Y.loader),visible:Ue==="loading"})}const Pn=l.icon||ie?.[Ue]||H_(Ue);var Lr,zr;return I.createElement("li",{tabIndex:0,ref:ht,className:Pt(A,$t,V?.toast,l==null||(t=l.classNames)==null?void 0:t.toast,V?.default,V?.[Ue],l==null||(n=l.classNames)==null?void 0:n[Ue]),"data-sonner-toast":"","data-rich-colors":(Lr=l.richColors)!=null?Lr:T,"data-styled":!(l.jsx||l.unstyled||f),"data-mounted":X,"data-promise":!!l.promise,"data-swiped":O,"data-removed":q,"data-visible":Dr,"data-y-position":eo,"data-x-position":Zn,"data-index":v,"data-front":Ir,"data-swiping":xe,"data-dismissible":it,"data-type":Ue,"data-invert":to,"data-swipe-out":le,"data-swipe-direction":he,"data-expanded":!!(S||te&&X),"data-testid":l.testId,style:{"--index":v,"--toasts-before":v,"--z-index":k.length-v,"--offset":`${q?ye:st.current}px`,"--initial-height":te?"auto":`${Ye}px`,..._,...l.style},onDragEnd:()=>{ae(!1),D(null),pt.current=null},onPointerDown:Y=>{Y.button!==2&&(Qn||!it||(an.current=new Date,K(st.current),Y.target.setPointerCapture(Y.pointerId),Y.target.tagName!=="BUTTON"&&(ae(!0),pt.current={x:Y.clientX,y:Y.clientY})))},onPointerUp:()=>{var Y,pe,Pe;if(le||!it)return;pt.current=null;const $e=Number(((Y=ht.current)==null?void 0:Y.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Vt=Number(((pe=ht.current)==null?void 0:pe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ce=new Date().getTime()-((Pe=an.current)==null?void 0:Pe.getTime()),qe=ue==="x"?$e:Vt,Tt=Math.abs(qe)/Ce;if(Math.abs(qe)>=hE||Tt>.11){K(st.current),l.onDismiss==null||l.onDismiss.call(l,l),rt(ue==="x"?$e>0?"right":"left":Vt>0?"down":"up"),at(),Z(!0);return}else{var et,Ge;(et=ht.current)==null||et.style.setProperty("--swipe-amount-x","0px"),(Ge=ht.current)==null||Ge.style.setProperty("--swipe-amount-y","0px")}ee(!1),ae(!1),D(null)},onPointerMove:Y=>{var pe,Pe,$e;if(!pt.current||!it||((pe=window.getSelection())==null?void 0:pe.toString().length)>0)return;const Ce=Y.clientY-pt.current.y,qe=Y.clientX-pt.current.x;var Tt;const et=(Tt=e.swipeDirections)!=null?Tt:mE(H);!ue&&(Math.abs(qe)>1||Math.abs(Ce)>1)&&D(Math.abs(qe)>Math.abs(Ce)?"x":"y");let Ge={x:0,y:0};const _n=Bt=>1/(1.5+Math.abs(Bt)/20);if(ue==="y"){if(et.includes("top")||et.includes("bottom"))if(et.includes("top")&&Ce<0||et.includes("bottom")&&Ce>0)Ge.y=Ce;else{const Bt=Ce*_n(Ce);Ge.y=Math.abs(Bt)0)Ge.x=qe;else{const Bt=qe*_n(qe);Ge.x=Math.abs(Bt)0||Math.abs(Ge.y)>0)&&ee(!0),(Pe=ht.current)==null||Pe.style.setProperty("--swipe-amount-x",`${Ge.x}px`),($e=ht.current)==null||$e.style.setProperty("--swipe-amount-y",`${Ge.y}px`)}},cn&&!l.jsx&&Ue!=="loading"?I.createElement("button",{"aria-label":se,"data-disabled":Qn,"data-close-button":!0,onClick:Qn||!it?()=>{}:()=>{at(),l.onDismiss==null||l.onDismiss.call(l,l)},className:Pt(V?.closeButton,l==null||(r=l.classNames)==null?void 0:r.closeButton)},(zr=ie?.close)!=null?zr:eE):null,(Ue||l.icon||l.promise)&&l.icon!==null&&(ie?.[Ue]!==null||l.icon)?I.createElement("div",{"data-icon":"",className:Pt(V?.icon,l==null||(s=l.classNames)==null?void 0:s.icon)},l.promise||l.type==="loading"&&!l.icon?l.icon||Xn():null,l.type!=="loading"?Pn:null):null,I.createElement("div",{"data-content":"",className:Pt(V?.content,l==null||(o=l.classNames)==null?void 0:o.content)},I.createElement("div",{"data-title":"",className:Pt(V?.title,l==null||(i=l.classNames)==null?void 0:i.title)},l.jsx?l.jsx:typeof l.title=="function"?l.title():l.title),l.description?I.createElement("div",{"data-description":"",className:Pt(B,Js,V?.description,l==null||(a=l.classNames)==null?void 0:a.description)},typeof l.description=="function"?l.description():l.description):null),I.isValidElement(l.cancel)?l.cancel:l.cancel&&Yr(l.cancel)?I.createElement("button",{"data-button":!0,"data-cancel":!0,style:l.cancelButtonStyle||w,onClick:Y=>{Yr(l.cancel)&&it&&(l.cancel.onClick==null||l.cancel.onClick.call(l.cancel,Y),at())},className:Pt(V?.cancelButton,l==null||(c=l.classNames)==null?void 0:c.cancelButton)},l.cancel.label):null,I.isValidElement(l.action)?l.action:l.action&&Yr(l.action)?I.createElement("button",{"data-button":!0,"data-action":!0,style:l.actionButtonStyle||R,onClick:Y=>{Yr(l.action)&&(l.action.onClick==null||l.action.onClick.call(l.action,Y),!Y.defaultPrevented&&at())},className:Pt(V?.actionButton,l==null||(u=l.classNames)==null?void 0:u.actionButton)},l.action.label):null)};function mu(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function yE(e,t){const n={};return[e,t].forEach((r,s)=>{const o=s===1,i=o?"--mobile-offset":"--offset",a=o?uE:lE;function c(u){["top","right","bottom","left"].forEach(d=>{n[`${i}-${d}`]=typeof u=="number"?`${u}px`:u})}typeof r=="number"||typeof r=="string"?c(r):typeof r=="object"?["top","right","bottom","left"].forEach(u=>{r[u]===void 0?n[`${i}-${u}`]=a:n[`${i}-${u}`]=typeof r[u]=="number"?`${r[u]}px`:r[u]}):c(a)}),n}const Oo=I.forwardRef(function(t,n){const{id:r,invert:s,position:o="bottom-right",hotkey:i=["altKey","KeyT"],expand:a,closeButton:c,className:u,offset:d,mobileOffset:l,theme:f="light",richColors:p,duration:m,style:y,visibleToasts:g=cE,toastOptions:v,dir:k=mu(),gap:S=fE,icons:x,containerAriaLabel:T="Notifications"}=t,[P,_]=I.useState([]),w=I.useMemo(()=>r?P.filter(X=>X.toasterId===r):P.filter(X=>!X.toasterId),[P,r]),R=I.useMemo(()=>Array.from(new Set([o].concat(w.filter(X=>X.position).map(X=>X.position)))),[w,o]),[A,B]=I.useState([]),[F,H]=I.useState(!1),[re,te]=I.useState(!1),[V,ie]=I.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),se=I.useRef(null),ue=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),D=I.useRef(null),he=I.useRef(!1),rt=I.useCallback(X=>{_(U=>{var q;return(q=U.find(J=>J.id===X.id))!=null&&q.delete||nt.dismiss(X.id),U.filter(({id:J})=>J!==X.id)})},[]);return I.useEffect(()=>nt.subscribe(X=>{if(X.dismiss){requestAnimationFrame(()=>{_(U=>U.map(q=>q.id===X.id?{...q,delete:!0}:q))});return}setTimeout(()=>{Tp.flushSync(()=>{_(U=>{const q=U.findIndex(J=>J.id===X.id);return q!==-1?[...U.slice(0,q),{...U[q],...X},...U.slice(q+1)]:[X,...U]})})})}),[P]),I.useEffect(()=>{if(f!=="system"){ie(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ie("dark"):ie("light")),typeof window>"u")return;const X=window.matchMedia("(prefers-color-scheme: dark)");try{X.addEventListener("change",({matches:U})=>{ie(U?"dark":"light")})}catch{X.addListener(({matches:q})=>{try{ie(q?"dark":"light")}catch(J){console.error(J)}})}},[f]),I.useEffect(()=>{P.length<=1&&H(!1)},[P]),I.useEffect(()=>{const X=U=>{var q;if(i.every(ae=>U[ae]||U.code===ae)){var xe;H(!0),(xe=se.current)==null||xe.focus()}U.code==="Escape"&&(document.activeElement===se.current||(q=se.current)!=null&&q.contains(document.activeElement))&&H(!1)};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[i]),I.useEffect(()=>{if(se.current)return()=>{D.current&&(D.current.focus({preventScroll:!0}),D.current=null,he.current=!1)}},[se.current]),I.createElement("section",{ref:n,"aria-label":`${T} ${ue}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},R.map((X,U)=>{var q;const[J,xe]=X.split("-");return w.length?I.createElement("ol",{key:X,dir:k==="auto"?mu():k,tabIndex:-1,ref:se,className:u,"data-sonner-toaster":!0,"data-sonner-theme":V,"data-y-position":J,"data-x-position":xe,style:{"--front-toast-height":`${((q=A[0])==null?void 0:q.height)||0}px`,"--width":`${dE}px`,"--gap":`${S}px`,...y,...yE(d,l)},onBlur:ae=>{he.current&&!ae.currentTarget.contains(ae.relatedTarget)&&(he.current=!1,D.current&&(D.current.focus({preventScroll:!0}),D.current=null))},onFocus:ae=>{ae.target instanceof HTMLElement&&ae.target.dataset.dismissible==="false"||he.current||(he.current=!0,D.current=ae.relatedTarget)},onMouseEnter:()=>H(!0),onMouseMove:()=>H(!0),onMouseLeave:()=>{re||H(!1)},onDragEnd:()=>H(!1),onPointerDown:ae=>{ae.target instanceof HTMLElement&&ae.target.dataset.dismissible==="false"||te(!0)},onPointerUp:()=>te(!1)},w.filter(ae=>!ae.position&&U===0||ae.position===X).map((ae,le)=>{var Z,O;return I.createElement(gE,{key:ae.id,icons:x,index:le,toast:ae,defaultRichColors:p,duration:(Z=v?.duration)!=null?Z:m,className:v?.className,descriptionClassName:v?.descriptionClassName,invert:s,visibleToasts:g,closeButton:(O=v?.closeButton)!=null?O:c,interacting:re,position:X,style:v?.style,unstyled:v?.unstyled,classNames:v?.classNames,cancelButtonStyle:v?.cancelButtonStyle,actionButtonStyle:v?.actionButtonStyle,closeButtonAriaLabel:v?.closeButtonAriaLabel,removeToast:rt,toasts:w.filter(ee=>ee.position==ae.position),heights:A.filter(ee=>ee.position==ae.position),setHeights:B,expandByDefault:a,gap:S,expanded:F,swipeDirections:t.swipeDirections})})):null}))});function bE(e){const t=e.headers.get("retry-after")||e.headers.get("Retry-After");if(t){const n=parseInt(t,10);if(!isNaN(n)&&n>0)return n}return e.clone().json().then(n=>{if(n?.retry_after){const r=parseInt(n.retry_after,10);if(!isNaN(r)&&r>0)return r}}).catch(()=>{}),60}async function vE(e,t){const n=be.currentUser;if(n)try{const r=W($,"_analytics/rateLimitHits",n.uid);await Ne(r,{uid:n.uid,endpoint:e,retryAfter:t,timestamp:ce()},{merge:!0})}catch(r){console.warn("Failed to log rate limit hit:",r)}}const Lo=new Map;function wE(e,t){const n=`${e}-${Date.now()}`,r=Date.now()+t*1e3;ct.error(`You're going too fast! Please wait ${t} seconds before trying again.`,{duration:t*1e3,id:n});const s=Lo.get(e);s&&clearInterval(s.timerId);const o=window.setInterval(()=>{Math.ceil((r-Date.now())/1e3)<=0&&(clearInterval(o),Lo.delete(e),ct.dismiss(n))},1e3);Lo.set(e,{endpoint:e,endsAt:r,timerId:o})}async function xE(e,t){if(e.status!==429)return!1;const n=bE(e);return await vE(t,n),wE(t,n),window.dispatchEvent(new CustomEvent("rate-limit-hit",{detail:{endpoint:t,retryAfter:n,expiresAt:Date.now()+n*1e3}})),!0}const xr="https://deign86-mathpulse-api-v3test.hf.space",Xs=(e,t)=>t,Vh=(e,t)=>t,zo=Xs(void 0,!0),gu=Xs(void 0,!0),yu=Xs(void 0,!0),bu=Xs(void 0,!0),vu=Vh(void 0,9e4),jo=Vh(void 0,9e5);let No=!0,wu=0;const SE=6e4;async function kE(){const e="https://deign86-mathpulse-api-v3test.hf.space",t={"Content-Type":"application/json"},n=be.currentUser;if(n)try{const s=await n.getIdToken(!1);s&&(t.Authorization=`Bearer ${s}`)}catch{}const r=await fetch(`${e}/api/rag/health`,{headers:t});if(!r.ok){const s=await r.text();throw new Error(`GET /api/rag/health failed: ${r.status} ${s}`)}return r.json()}async function TE(e){const t="https://deign86-mathpulse-api-v3test.hf.space",n={"Content-Type":"application/json"},r=be.currentUser;if(r)try{const o=await r.getIdToken(!1);o&&(n.Authorization=`Bearer ${o}`)}catch{}const s=await fetch(`${t}/api/rag/lesson`,{method:"POST",headers:n,body:JSON.stringify(e)});if(!s.ok){const o=await s.text();throw new Error(`POST /api/rag/lesson failed: ${s.status} ${o}`)}return s.json()}async function PE(e){const t="https://deign86-mathpulse-api-v3test.hf.space",n={"Content-Type":"application/json"},r=be.currentUser;if(r)try{const o=await r.getIdToken(!1);o&&(n.Authorization=`Bearer ${o}`)}catch{}const s=await fetch(`${t}/api/rag/generate-problem`,{method:"POST",headers:n,body:JSON.stringify(e)});if(!s.ok){const o=await s.text();throw new Error(`POST /api/rag/generate-problem failed: ${s.status} ${o}`)}return s.json()}async function _E(e){const t="https://deign86-mathpulse-api-v3test.hf.space",n={"Content-Type":"application/json"},r=be.currentUser;if(r)try{const o=await r.getIdToken(!1);o&&(n.Authorization=`Bearer ${o}`)}catch{}const s=await fetch(`${t}/api/rag/analysis-context`,{method:"POST",headers:n,body:JSON.stringify(e)});if(!s.ok){const o=await s.text();throw new Error(`POST /api/rag/analysis-context failed: ${s.status} ${o}`)}return s.json()}const Et={maxRetries:$h,timeoutMs:Qs,baseBackoffMs:1e3},Xt={...Et,timeoutMs:6e4},EE={...Xt,maxRetries:1,timeoutMs:45e3,baseBackoffMs:750},CE={...Et,maxRetries:1,timeoutMs:2e4,baseBackoffMs:500},rr={maxRetries:2,timeoutMs:12e4,baseBackoffMs:2e3},AE={maxRetries:0,timeoutMs:8e3,baseBackoffMs:500};let Jr=null;async function RE(){return Jr||(Jr=(async()=>{try{At("/health","GET","Warming up HuggingFace Space...");const e=new AbortController,t=setTimeout(()=>e.abort(),15e3),n=await fetch(`${xr}/health`,{method:"GET",signal:e.signal});return clearTimeout(t),n.ok?(At("/health","GET","Backend warm and ready"),!0):(console.warn("[apiService] Backend health check returned",n.status),!1)}catch(e){return console.warn("[apiService] Backend warmup failed (cold start expected):",e),!1}})(),Jr)}async function N(e,t,n=Et){const r=`${xr}${e}`,s=t?.method??"GET";At(e,s,"Starting request");const o=async a=>{const c=new Headers(t?.headers??{});!(t?.body instanceof FormData)&&!c.has("Content-Type")&&c.set("Content-Type","application/json");const u=be.currentUser;if(u)try{const d=await u.getIdToken(a);d&&c.set("Authorization",`Bearer ${d}`)}catch(d){je(e,s,"Failed to acquire Firebase ID token",d)}return{...t,headers:c}};let i=await o(!1);try{const a=await hu(r,i,n);return At(e,s,"Request succeeded"),a}catch(a){if(a instanceof It&&a.status===401&&be.currentUser)try{At(e,s,"401 received, refreshing Firebase token and retrying once"),i=await o(!0);const c=await hu(r,i,n);return At(e,s,"Request succeeded after token refresh"),c}catch(c){throw c instanceof It?je(e,s,`HTTP ${c.status}: ${c.responseBody.slice(0,300)}`):c instanceof bn?je(e,s,`Timeout after ${c.timeoutMs}ms`):c instanceof Ls?je(e,s,`Network error: ${c.originalError.message}`):je(e,s,`Unexpected: ${c instanceof Error?c.message:String(c)}`),c}throw a instanceof It?(je(e,s,`HTTP ${a.status}: ${a.responseBody.slice(0,300)}`),a.status===429&&await xE(new Response(a.responseBody,{status:429,headers:{"retry-after":"60"}}),e)):a instanceof bn?je(e,s,`Timeout after ${a.timeoutMs}ms`):a instanceof Ls?je(e,s,`Network error: ${a.originalError.message}`):je(e,s,`Unexpected: ${a instanceof Error?a.message:String(a)}`),a}}async function xu(e,t,n=Qs){const r=`${xr}${e}`,s=t?.method??"GET";At(e,s,"Starting blob request");const o=async i=>{const a=new Headers(t?.headers??{}),c=be.currentUser;if(c)try{const l=await c.getIdToken(i);l&&a.set("Authorization",`Bearer ${l}`)}catch(l){je(e,s,"Failed to acquire Firebase ID token",l)}const u=new AbortController,d=setTimeout(()=>u.abort(),n);try{const l=await fetch(r,{...t,headers:a,signal:u.signal});if(!l.ok){const f=await l.text();throw new It({status:l.status,statusText:l.statusText||"Request Failed",endpoint:e,responseBody:f,retryable:l.status>=500||l.status===429})}return await l.blob()}finally{clearTimeout(d)}};try{return await o(!1)}catch(i){if(i instanceof It&&i.status===401&&be.currentUser)return At(e,s,"401 received for blob request, refreshing Firebase token and retrying once"),o(!0);throw i}}const ME={response:"Sorry, the AI tutor is temporarily unavailable. Please try again in a moment."},IE={riskLevel:"Medium",confidence:0,analysis:{labels:[],scores:[]},risk_level:"medium",risk_score:0,top_factors:["Fallback risk response due to temporary service unavailability"]},DE={learningPath:"Unable to generate a learning path right now. Please try again later."},OE={insight:"Daily insight is temporarily unavailable. Please refresh later."},LE={expression:"",result:"Error: calculation service unavailable",steps:[],simplified:null,latex:null};function zE(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.riskLevel=="string"&&typeof t.confidence=="number"}function Su(e){if(typeof e!="object"||e===null)return!1;const t=e;return Array.isArray(t.questions)&&typeof t.totalPoints=="number"}const jE=e=>new Promise(t=>setTimeout(t,e));function NE(e){if(!e)return"Generation task failed without a detailed error.";if(typeof e=="string")return e;if(typeof e=="object"&&e!==null){const t=e;if(typeof t.message=="string")return t.message;try{return JSON.stringify(t)}catch{return"Generation task failed due to an unknown error."}}return String(e)}const bt={getImportGroundedRolloutFlags(){return{quizEnabled:zo,lessonEnabled:gu,feedbackEnabled:yu}},async reportImportGroundedFeedback(e){return yu?N("/api/feedback/import-grounded",{method:"POST",body:JSON.stringify(e)}):{success:!0,stored:!1,warnings:["Import-grounded feedback events are disabled by frontend rollout flag."]}},async health(){return N("/health",void 0,{...Et,timeoutMs:1e4})},async chat(e,t,n,r){ke("/api/chat",{message:e});const s={message:e,history:t??[],...r?.sessionId?{sessionId:r.sessionId}:{},...r?.expectedEndMarker?{expectedEndMarker:r.expectedEndMarker}:{},...r?.completionMode?{completionMode:r.completionMode}:{},...typeof r?.continuationMaxRounds=="number"?{continuationMaxRounds:Math.max(0,Math.floor(r.continuationMaxRounds))}:{},...r?.moduleContext?{moduleContext:r.moduleContext}:{}};if(n){const i=new AbortController;let a=null,c=null,u=null;const d=g=>{a||(a=g,i.abort())},l=()=>{c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null)},f=()=>{c&&clearTimeout(c),c=setTimeout(()=>d("idle"),vu)};u=setTimeout(()=>d("total"),jo);const p=new Headers({"Content-Type":"application/json"}),m=be.currentUser;if(m)try{const g=await m.getIdToken(!1);g&&p.set("Authorization",`Bearer ${g}`)}catch(g){je("/api/chat/stream","POST","Failed to acquire Firebase ID token",g)}let y=null;try{f();const g=await fetch(`${xr}/api/chat/stream`,{method:"POST",headers:p,body:JSON.stringify(s),signal:i.signal});if(!g.ok||!g.body){const P=await g.text().catch(()=>"Unable to read response body");throw new Error(`Streaming request failed (${g.status}): ${P.slice(0,300)}`)}y=g.body.getReader();const v=new TextDecoder;let k="",S="",x=!1;const T=P=>{const _=P.indexOf(` `),w=P.indexOf(`\r \r `);return _===-1&&w===-1?null:_===-1?{index:w,length:4}:w===-1?{index:_,length:2}:_bt.chat(e,t,void 0,n),ME,"chat")},async predictRisk(e){ke("/api/predict-risk",{engagementScore:e.engagementScore,avgQuizScore:e.avgQuizScore,attendance:e.attendance,assignmentCompletion:e.assignmentCompletion}),Re("/api/predict-risk","engagementScore",e.engagementScore,0,100),Re("/api/predict-risk","avgQuizScore",e.avgQuizScore,0,100),Re("/api/predict-risk","attendance",e.attendance,0,100),Re("/api/predict-risk","assignmentCompletion",e.assignmentCompletion,0,100);const t=await N("/api/predict-risk",{method:"POST",body:JSON.stringify(e)});if(!zE(t))throw je("/api/predict-risk","POST","Invalid response shape",t),new Error("Invalid risk prediction response from server");return t},async predictRiskSafe(e){return nr(()=>bt.predictRisk(e),IE,"predictRisk")},async predictRiskBatch(e){if(!Array.isArray(e)||e.length===0)throw new ze("/api/predict-risk/batch","students array must not be empty");return N("/api/predict-risk/batch",{method:"POST",body:JSON.stringify({students:e})})},async getLearningPath(e){if(ke("/api/learning-path",{weaknesses:e.weaknesses,gradeLevel:e.gradeLevel}),!Array.isArray(e.weaknesses)||e.weaknesses.length===0)throw new ze("/api/learning-path","weaknesses must be a non-empty array");return N("/api/learning-path",{method:"POST",body:JSON.stringify(e)},Xt)},async getLearningPathSafe(e){return nr(()=>bt.getLearningPath(e),DE,"getLearningPath")},async getDailyInsight(e,t){if(!Array.isArray(e.students)||e.students.length===0)throw new ze("/api/analytics/daily-insight","students array must not be empty");return N("/api/analytics/daily-insight",{method:"POST",body:JSON.stringify(e),signal:t?.signal},Xt)},async getDailyInsightSafe(e){return nr(()=>bt.getDailyInsight(e),OE,"getDailyInsight")},async getImportedClassOverview(e){if(!e?.forceRefresh&&!No&&Date.now()!s||s.size===0))throw new ze("/api/upload/class-records","All files must be non-empty");if(n.some(s=>s.size>10*1024*1024))throw new ze("/api/upload/class-records","One or more files exceed the 10 MB size limit");const r=new FormData;return n.forEach(s=>r.append("files",s)),t?.classSectionId&&r.append("classSectionId",t.classSectionId),t?.className&&r.append("className",t.className),r.append("datasetIntent",t?.datasetIntent??"synthetic_student_records"),N("/api/upload/class-records",{method:"POST",body:r},rr)},async downloadClassRecordTemplate(e){const t=new URLSearchParams;e?.quarter&&t.set("quarter",e.quarter),e?.school_year&&t.set("school_year",e.school_year),e?.subject&&t.set("subject",e.subject);const n=t.toString();return xu(`/api/templates/class-records${n?`?${n}`:""}`,{method:"GET"},3e4)},async uploadClassRecordTemplate(e,t){if(!e||e.size===0)throw new ze("/api/class-records/upload","File must be non-empty");if(e.size>10*1024*1024)throw new ze("/api/class-records/upload","File exceeds the 10 MB size limit");const n=new FormData;return n.append("file",e),t?.subject&&n.append("subject",t.subject),t?.quarter&&n.append("quarter",t.quarter),t?.gradeLevel&&n.append("gradeLevel",t.gradeLevel),N("/api/class-records/upload",{method:"POST",body:n},rr)},async previewStudentAccountImport(e,t){if(!e||e.size===0)throw new ze("/api/import/student-accounts/preview","A non-empty file is required");if(e.size>10*1024*1024)throw new ze("/api/import/student-accounts/preview","File exceeds 10 MB size limit");const n=new FormData;return n.append("file",e),t?.classSectionId&&n.append("classSectionId",t.classSectionId),t?.className&&n.append("className",t.className),t?.defaultGrade&&n.append("defaultGrade",t.defaultGrade),t?.defaultSection&&n.append("defaultSection",t.defaultSection),N("/api/import/student-accounts/preview",{method:"POST",body:n},rr)},async commitStudentAccountImport(e){return ke("/api/import/student-accounts/commit",{previewToken:e.previewToken}),N("/api/import/student-accounts/commit",{method:"POST",body:JSON.stringify(e)},Et)},async createStudentAccount(e){ke("/api/teacher/create-student-account",{name:e.name,email:e.email,temporaryPassword:e.temporaryPassword,adviserTeacherId:e.adviserTeacherId});const t={name:e.name,email:e.email,temporary_password:e.temporaryPassword,lrn:e.lrn??null,grade:e.grade??null,section:e.section??null,class_section_id:e.classSectionId??null,adviser_teacher_id:e.adviserTeacherId,adviser_teacher_name:e.adviserTeacherName??null,school_year:e.schoolYear??null};return N("/api/teacher/create-student-account",{method:"POST",body:JSON.stringify(t)},Et)},async getAdminUsers(e){const t=e?.page??1,n=e?.pageSize??25;Re("/api/admin/users","page",t,1,1e4),Re("/api/admin/users","pageSize",n,1,200);const r=new URLSearchParams;return r.set("page",String(t)),r.set("pageSize",String(n)),e?.search?.trim()&&r.set("search",e.search.trim()),e?.role?.trim()&&r.set("role",e.role.trim()),e?.status?.trim()&&r.set("status",e.status.trim()),e?.grade?.trim()&&r.set("grade",e.grade.trim()),e?.section?.trim()&&r.set("section",e.section.trim()),e?.classSectionId?.trim()&&r.set("classSectionId",e.classSectionId.trim()),N(`/api/admin/users?${r.toString()}`,{method:"GET"},CE)},async updateAdminUser(e,t){const n=e.trim();ke("/api/admin/users",{uid:n});const r=new URLSearchParams;return r.set("uid",n),N(`/api/admin/users?${r.toString()}`,{method:"POST",body:JSON.stringify(t)},Et)},async bulkAdminUsers(e){return ke("/api/admin/users/bulk-action",{action:e.action}),N("/api/admin/users/bulk-action",{method:"POST",body:JSON.stringify(e)},Et)},async createAdminUser(e){if(ke("/api/admin/users",{name:e.name,email:e.email,password:e.password,confirmPassword:e.confirmPassword,role:e.role,status:e.status,grade:e.grade,section:e.section}),e.role.trim().toLowerCase()==="student"&&!e.lrn?.trim())throw new ze("/api/admin/users","lrn is required for student accounts");return N("/api/admin/users",{method:"POST",body:JSON.stringify(e)},Et)},async deleteAdminUser(e){const t=e.trim();ke("/api/admin/users",{uid:t});const n=new URLSearchParams;return n.set("uid",t),N(`/api/admin/users?${n.toString()}`,{method:"DELETE"},Et)},async getRiskRefreshMonitor(e){const t=e?.limit??10;Re("/api/upload/class-records/risk-refresh/recent","limit",t,1,50);const n=new URLSearchParams;return n.set("limit",String(t)),e?.classSectionId&&n.set("classSectionId",e.classSectionId),N(`/api/upload/class-records/risk-refresh/recent?${n.toString()}`)},async getImportGroundedTelemetrySummary(e){const t=e?.days??7,n=e?.limit??5e3;Re("/api/feedback/import-grounded/summary","days",t,1,30),Re("/api/feedback/import-grounded/summary","limit",n,100,2e4);const r=new URLSearchParams;return r.set("days",String(t)),r.set("limit",String(n)),e?.classSectionId&&r.set("classSectionId",e.classSectionId),N(`/api/feedback/import-grounded/summary?${r.toString()}`)},async getImportGroundedAccessAudit(e){const t=e?.days??7,n=e?.limit??200;Re("/api/import-grounded/access-audit","days",t,1,30),Re("/api/import-grounded/access-audit","limit",n,1,1e3);const r=new URLSearchParams;return r.set("days",String(t)),r.set("limit",String(n)),r.set("export","json"),e?.classSectionId&&r.set("classSectionId",e.classSectionId),N(`/api/import-grounded/access-audit?${r.toString()}`)},async exportImportGroundedAccessAuditCsv(e){const t=e?.days??7,n=e?.limit??200;Re("/api/import-grounded/access-audit","days",t,1,30),Re("/api/import-grounded/access-audit","limit",n,1,1e3);const r=new URLSearchParams;return r.set("days",String(t)),r.set("limit",String(n)),r.set("export","csv"),e?.classSectionId&&r.set("classSectionId",e.classSectionId),xu(`/api/import-grounded/access-audit?${r.toString()}`,{method:"GET"},3e4)},async uploadCourseMaterials(e,t){const n=Array.isArray(e)?e:[e];if(n.length===0)throw new ze("/api/upload/course-materials","At least one file is required");if(n.some(s=>!s||s.size===0))throw new ze("/api/upload/course-materials","All files must be non-empty");if(n.some(s=>s.size>10*1024*1024))throw new ze("/api/upload/course-materials","One or more files exceed the 10 MB size limit");const r=new FormData;return n.forEach(s=>r.append("files",s)),t?.classSectionId&&r.append("classSectionId",t.classSectionId),t?.className&&r.append("className",t.className),N("/api/upload/course-materials",{method:"POST",body:r},rr)},async uploadTeacherMaterial(e,t){const n=new FormData;return n.append("file",e),t?.teacherId&&n.append("teacherId",t.teacherId),t?.classId&&n.append("classId",t.classId),t?.gradeLevel&&n.append("gradeLevel",t.gradeLevel),t?.subject&&n.append("subject",t.subject),t?.quarter&&n.append("quarter",t.quarter),t?.strandOrTrack&&n.append("strandOrTrack",t.strandOrTrack),N("/api/teacher-materials/upload",{method:"POST",body:n},rr)},async getRecentCourseMaterials(e){const t=e?.limit??10;Re("/api/upload/course-materials/recent","limit",t,1,50);const n=new URLSearchParams;return n.set("limit",String(t)),e?.classSectionId&&n.set("classSectionId",e.classSectionId),N(`/api/upload/course-materials/recent?${n.toString()}`)},async getCourseMaterialTopics(e){const t=e?.limit??20;Re("/api/course-materials/topics","limit",t,1,50);const n=new URLSearchParams;return n.set("limit",String(t)),e?.classSectionId&&n.set("classSectionId",e.classSectionId),e?.materialId&&n.set("materialId",e.materialId),N(`/api/course-materials/topics?${n.toString()}`)},async generateLessonPlan(e){ke("/api/lesson/generate",{gradeLevel:e.gradeLevel});const t={...e,preferImportedTopics:gu&&(e.preferImportedTopics??!0)};if(bu){const n=await bt.submitLessonPlanAsync(t),s=(await bt.waitForTaskResult(n.taskId,{timeoutMs:24e4,pollIntervalMs:1500})).result;if(!s||typeof s!="object")throw new Error("Lesson generation completed without a valid result payload.");return s}return N("/api/lesson/generate",{method:"POST",body:JSON.stringify(t)},Xt)},async generateQuiz(e,t){if(ke("/api/quiz/generate",{topics:e.topics,gradeLevel:e.gradeLevel}),!Array.isArray(e.topics)||e.topics.length===0)throw new ze("/api/quiz/generate","topics must be a non-empty array");const n={...e,preferImportedTopics:zo&&(e.preferImportedTopics??!0)};if(bu){const s=await bt.submitQuizAsync(n);t?.onTaskCreated?.(s.taskId);const i=(await bt.waitForTaskResult(s.taskId,{timeoutMs:24e4,pollIntervalMs:1500,onProgress:t?.onProgress})).result;if(!i||typeof i!="object")throw new Error("Quiz generation completed without a valid result payload.");if(!Su(i))throw new Error("Invalid quiz generation response from async task payload.");return i}const r=await N("/api/quiz/generate",{method:"POST",body:JSON.stringify(n)},Xt);if(!Su(r))throw je("/api/quiz/generate","POST","Invalid response shape",r),new Error("Invalid quiz generation response from server");return r},async previewQuiz(e){ke("/api/quiz/preview",{topics:e.topics,gradeLevel:e.gradeLevel});const t={...e,preferImportedTopics:zo&&(e.preferImportedTopics??!0)};return N("/api/quiz/preview",{method:"POST",body:JSON.stringify(t)},Xt)},async submitLessonPlanAsync(e){return N("/api/lesson/generate-async",{method:"POST",body:JSON.stringify(e)},Xt)},async submitQuizAsync(e){return N("/api/quiz/generate-async",{method:"POST",body:JSON.stringify(e)},Xt)},async getTaskStatus(e){return ke("/api/tasks/{taskId}",{taskId:e}),N(`/api/tasks/${encodeURIComponent(e)}`)},async listTasks(e){const t=new URLSearchParams;e?.limit!=null&&(Re("/api/tasks","limit",e.limit,1,200),t.set("limit",String(e.limit))),e?.status&&t.set("status",e.status),e?.includeResults!=null&&t.set("include_results",String(e.includeResults));const n=t.toString();return N(`/api/tasks${n?`?${n}`:""}`)},async cancelTask(e){return ke("/api/tasks/{taskId}/cancel",{taskId:e}),N(`/api/tasks/${encodeURIComponent(e)}/cancel`,{method:"POST"})},async waitForTaskResult(e,t){const n=t?.timeoutMs??18e4,r=t?.pollIntervalMs??1500,s=Date.now();for(;Date.now()-s<=n;){const o=await bt.getTaskStatus(e);if(t?.onProgress?.(o),o.status==="completed")return o;if(o.status==="failed"||o.status==="cancelled")throw new Error(NE(o.error));await jE(r)}throw new Error(`Async generation task timed out after ${Math.round(n/1e3)} seconds.`)},async getQuizTopics(e){const t=e?`?gradeLevel=${encodeURIComponent(e)}`:"";return N(`/api/quiz/topics${t}`)},async getStudentCompetency(e,t){return ke("/api/quiz/student-competency",{studentId:e}),N("/api/quiz/student-competency",{method:"POST",body:JSON.stringify({studentId:e,quizHistory:t})})},async evaluateExpression(e){return ke("/api/calculator/evaluate",{expression:e}),N("/api/calculator/evaluate",{method:"POST",body:JSON.stringify({expression:e})})},async evaluateExpressionSafe(e){return nr(()=>bt.evaluateExpression(e),{...LE,expression:e},"evaluateExpression")},async automationDiagnosticCompleted(e){return ke("/api/automation/diagnostic-completed",{lrn:e.lrn,results:e.results}),N("/api/automation/diagnostic-completed",{method:"POST",body:JSON.stringify(e)})},async automationQuizSubmitted(e){return ke("/api/automation/quiz-submitted",{lrn:e.lrn,quizId:e.quizId,subject:e.subject}),N("/api/automation/quiz-submitted",{method:"POST",body:JSON.stringify(e)})},async automationStudentEnrolled(e){return ke("/api/automation/student-enrolled",{lrn:e.lrn,name:e.name,email:e.email}),N("/api/automation/student-enrolled",{method:"POST",body:JSON.stringify(e)})},async automationDataImported(e){return ke("/api/automation/data-imported",{teacherId:e.teacherId,students:e.students}),N("/api/automation/data-imported",{method:"POST",body:JSON.stringify(e)})},async automationContentUpdated(e){return ke("/api/automation/content-updated",{adminId:e.adminId,action:e.action,contentType:e.contentType,contentId:e.contentId}),N("/api/automation/content-updated",{method:"POST",body:JSON.stringify(e)})},getInferenceMetrics:async()=>N("/api/ops/inference-metrics",{method:"GET"}),getModelConfig:async()=>N("/api/admin/model-config",{method:"GET"}),setModelProfile:async e=>N("/api/admin/model-config/profile",{method:"POST",body:JSON.stringify({profile:e})}),setModelOverride:async(e,t)=>N("/api/admin/model-config/override",{method:"POST",body:JSON.stringify({key:e,value:t})}),resetModelConfig:async()=>N("/api/admin/model-config/reset",{method:"DELETE"}),uploadModulePdf:async e=>{const t=be.currentUser,n=t?await t.getIdToken():void 0,r=await fetch(`${xr}/api/admin/upload-pdf`,{method:"POST",headers:n?{Authorization:`Bearer ${n}`}:{},body:e});if(!r.ok){const s=await r.json().catch(()=>({detail:"Upload failed"}));throw new Error(s.detail||`Upload failed (${r.status})`)}return r.json()},reingestModulePdf:async(e,t)=>{const n=be.currentUser?await be.currentUser.getIdToken():void 0;return N("/api/admin/reingest-pdf",{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:`Bearer ${n}`}:{}},body:JSON.stringify({subjectId:e,storagePath:t})})},getRagHealth:async()=>N("/api/rag/health",{method:"GET"}),async generateInterventionPlan(e){return N("/api/class-records/intervention-plan",{method:"POST",body:JSON.stringify(e)})},async fetchClassRecords(e){const t=new URLSearchParams;e?.limit&&t.set("limit",String(e.limit)),e?.after&&t.set("after",e.after);const n=t.toString();return N(`/api/class-records${n?`?${n}`:""}`,{method:"GET"})},async fetchQuizBattleResults(e){const t=new URLSearchParams;e?.classId&&t.set("classId",e.classId),e?.limit&&t.set("limit",String(e.limit)),e?.after&&t.set("after",e.after);const n=t.toString();return N(`/api/quiz-battle/results${n?`?${n}`:""}`,{method:"GET"})},async fetchUploadStudents(e,t){const n=new URLSearchParams;t?.limit&&n.set("limit",String(t.limit)),t?.after&&n.set("after",t.after);const r=n.toString();return N(`/api/class-records/${e}/students${r?`?${r}`:""}`,{method:"GET"})},async generateClassReport(e){return N(`/api/class-records/${e}/ai-report`,{method:"POST"})},async generateQuizFromModule(e){return N(`/api/teacher-materials/${e}/generate-quiz`,{method:"POST"})},async getStudentRecommendations(e){return N(`/api/student/${e}/recommendations`,{method:"GET"})}};async function $E(e,t,n,r){ke("/api/rag/lesson",{topic:e,subject:t,quarter:n}),Re("/api/rag/lesson","quarter",n,1,4);const s=await N("/api/rag/lesson",{method:"POST",body:JSON.stringify({topic:e,subject:t,quarter:n,lessonTitle:r?.lessonTitle,learningCompetency:r?.learningCompetency,moduleUnit:r?.moduleUnit,learnerLevel:r?.learnerLevel})}),o=(s.sources||[]).map(i=>({...i,sourceFile:i.source_file||i.sourceFile,content:i.content||i.content,contentDomain:i.content_domain||i.contentDomain,chunkType:i.chunk_type||i.chunkType}));return{explanation:s.explanation,sources:o,retrievalConfidence:s.retrievalConfidence,retrievalBand:s.retrievalBand,retrievalQuery:s.retrievalQuery,needsReview:s.needsReview}}async function FE(e,t,n,r){ke("/api/rag/generate-problem",{topic:e,subject:t,quarter:n,difficulty:r}),Re("/api/rag/generate-problem","quarter",n,1,4);const s=await N("/api/rag/generate-problem",{method:"POST",body:JSON.stringify({topic:e,subject:t,quarter:n,difficulty:r})}),o=(s.sources||[]).map(i=>({...i,sourceFile:i.source_file||i.sourceFile}));return{problem:s.problem,solution:s.solution,competencyReference:s.competencyReference,sources:o}}async function VE(e,t){return!Array.isArray(e)||e.length===0?"":(await N("/api/rag/analysis-context",{method:"POST",body:JSON.stringify({weakTopics:e,subject:t})})).curriculumContext||""}async function BE(e){const t=e?`?grade_level=${encodeURIComponent(e)}`:"";return N(`/api/curriculum/subjects${t}`)}async function UE(e){try{return await N(`/api/curriculum/subjects/${e}`)}catch{return null}}async function qE(e){try{return await N(`/api/curriculum/subjects/${e}/topics`)}catch{return[]}}async function GE(e,t){try{return await N(`/api/curriculum/subjects/${e}/topics/${t}`)}catch{return null}}const WE=Object.freeze(Object.defineProperty({__proto__:null,ApiError:It,ApiNetworkError:Ls,ApiTimeoutError:bn,ApiValidationError:ze,apiFetch:N,apiService:bt,fetchAnalysisCurriculumContext:VE,generateGroundedProblem:FE,generateRagLesson:TE,generateRagProblem:PE,getCurriculumGroundedLesson:$E,getCurriculumSubject:UE,getCurriculumSubjects:BE,getCurriculumTopic:GE,getCurriculumTopics:qE,getRagAnalysisContext:_E,getRagHealth:kE,warmupBackend:RE},Symbol.toStringTag,{value:"Module"})),Bh="competencyProfiles",OR=async e=>{const t=W($,Bh,e),n=await we(t);return n.exists()?n.data():null},HE=async(e,t)=>{const{strengths:n,weaknesses:r,borderline:s}=t.proficiencyProfile,o=n.length>0?n[0]:null,i=r.length>0?r[0]:null,a=t.proficiencyProfile.suggestedStartingModule,c={uid:e,lastAssessmentDate:ce(),lastAssessmentType:t.assessmentType,overallScore:t.rawScore,competencies:Object.fromEntries(Object.entries(t.competencyScores).map(([u,d])=>[u,{score:d.score,correct:d.correct,attempted:d.attempted,lastAttemptedAt:ce()}])),primaryWeakness:i,primaryStrength:o,suggestedModule:a,updatedAt:ce()};await Ne(W($,Bh,e),c,{merge:!0})},Ys=async e=>{const t={userId:e,subjects:{},lessons:{},quizAttempts:[],totalLessonsCompleted:0,totalQuizzesCompleted:0,averageScore:0,updatedAt:new Date};return await Ne(W($,"progress",e),t),t},ZE=async e=>{try{const t=W($,"progress",e),n=await we(t);if(n.exists()){const r=n.data();return{...r,updatedAt:r.updatedAt?.toDate()||new Date}}return await Ys(e)}catch(t){return console.error("Error getting user progress:",t),null}},LR=(e,t)=>{const n=W($,"progress",e);return Jt(n,r=>{if(!r.exists()){t(null);return}const s=r.data();t({...s,updatedAt:s.updatedAt?.toDate?.()||new Date})},r=>{console.error("Error subscribing to user progress:",r),t(null)})},zR=async(e,t,n)=>{const r=Math.max(0,Math.min(100,n)),s=W($,"progress",e);await Ne(s,{[`lessons.${t}.lessonId`]:t,[`lessons.${t}.progressPercent`]:r,updatedAt:ce()},{merge:!0})},jR=async(e,t,n,r,s)=>{const o=W($,"progress",e),i=await we(o);if(!i.exists())return 0;const c=i.data().subjects?.[t]?.modulesProgress?.[n];if(!c)return 0;const u=Math.max(1,r+s),d=c.lessonsCompleted?.length||0,l=c.quizzesCompleted?.length||0,f=Math.round((d+l)/u*100);return await Ne(o,{[`subjects.${t}.modulesProgress.${n}.progress`]:f,[`subjects.${t}.modulesProgress.${n}.lastAccessedAt`]:ce(),updatedAt:ce()},{merge:!0}),f},NR=async(e,t,n,r,s,o=50,i,a)=>{try{const c=W($,"progress",e);let u=await we(c);u.exists()||(await Ys(e),u=await we(c));const d=u.data(),l={lessonId:r,completed:!0,completedAt:new Date,timeSpent:s,...i!==void 0&&{quizCompleted:i},...a!==void 0&&{quizScore:a}};d.subjects||(d.subjects={}),d.subjects[t]||(d.subjects[t]={subjectId:t,progress:0,completedModules:0,totalModules:0,modulesProgress:{}});const f=d.subjects[t];f.modulesProgress[n]||(f.modulesProgress[n]={moduleId:n,subjectId:t,progress:0,lessonsCompleted:[],quizzesCompleted:[],startedAt:new Date,lastAccessedAt:new Date});const p=f.modulesProgress[n],m=!p.lessonsCompleted.includes(r);m&&(p.lessonsCompleted.push(r),p.lastAccessedAt=new Date),await Ne(c,{[`lessons.${r}`]:l,[`subjects.${t}.modulesProgress.${n}`]:p,...m&&{totalLessonsCompleted:dr(1)},updatedAt:ce()},{merge:!0}),await Uh(e,o,"lesson_complete",`Completed lesson: ${r}`)}catch(c){throw console.error("Error completing lesson:",c),c}},$R=async(e,t,n,r,s,o)=>{try{const i=W($,"progress",e);let a=await we(i);a.exists()||(await Ys(e),a=await we(i));const c=a.data(),u={quizId:t,attemptNumber:(c.quizAttempts?.filter(l=>l.quizId===t).length||0)+1,score:r,completedAt:new Date,timeSpent:o,answers:s},d=!c.quizAttempts?.some(l=>l.quizId===t);await kt(i,{quizAttempts:[...c.quizAttempts||[],u],...d&&{totalQuizzesCompleted:dr(1)},updatedAt:ce()})}catch(i){throw console.error("Error recording practice quiz:",i),i}},FR=async(e,t,n,r,s,o,i,a)=>{try{const c=W($,"progress",e);let u=await we(c);u.exists()||(await Ys(e),u=await we(c));const d=u.data(),l={quizId:r,attemptNumber:(d.quizAttempts?.filter(g=>g.quizId===r).length||0)+1,score:s,completedAt:new Date,timeSpent:i,answers:o},f=a!==void 0?a:Math.floor(s/100*100);d.subjects||(d.subjects={}),d.subjects[t]||(d.subjects[t]={subjectId:t,progress:0,completedModules:0,totalModules:0,modulesProgress:{}});const p=d.subjects[t];p.modulesProgress[n]||(p.modulesProgress[n]={moduleId:n,subjectId:t,progress:0,lessonsCompleted:[],quizzesCompleted:[],startedAt:new Date,lastAccessedAt:new Date});const m=p.modulesProgress[n],y=!m.quizzesCompleted.includes(r);y&&(m.quizzesCompleted.push(r),m.lastAccessedAt=new Date),await kt(c,{quizAttempts:[...d.quizAttempts||[],l],[`subjects.${t}.modulesProgress.${n}`]:m,...y&&{totalQuizzesCompleted:dr(1)},updatedAt:ce()}),await Uh(e,f,"quiz_complete",`Completed quiz: ${r} (Score: ${s}%)`)}catch(c){throw console.error("Error completing quiz:",c),c}},Uh=async(e,t,n,r)=>{try{const s=W($,"users",e);let o=1;try{const u=(await we(s)).data();u?.xpMultiplier&&typeof u.xpMultiplier=="number"&&(o=u.xpMultiplier)}catch{}const i=Math.round(t*o);await kt(s,{currentXP:dr(i),totalXP:dr(i),updatedAt:ce()});const a=W(Xe($,"xpActivities"));await Ne(a,{activityId:a.id,userId:e,type:n,xpEarned:i,description:r,timestamp:ce()})}catch(s){console.error("Error awarding XP:",s)}},gs={notifications:{emailNotifications:!0,pushNotifications:!0,soundEnabled:!0,notificationTypes:{quizReminders:!0,newContent:!0,achievements:!0,streakAlerts:!0,weeklySummary:!0},quietHours:{start:"22:00",end:"08:00"}},pushPreferences:{pushEnabled:!0,achievement:!0,quiz_battle:!0,daily_reward:!0,assignment:!0,grade_posted:!0,streak_reminder:!0,leaderboard:!0,system:!0},appearance:{darkMode:!1,fontSize:16,compactView:!1,reduceAnimations:!1},privacy:{profileVisibility:"everyone",showActivityStatus:!0,dataSharing:!0},learning:{dailyXpGoal:100,preferredStudyTime:"evening",autoPlayLessons:!1,showHints:!0,quizDifficultyPreference:"adaptive",studyReminderTime:"18:00"},adminPanel:{siteName:"MathPulse AI",siteDescription:"AI-Powered Mathematics Learning Platform",defaultLanguage:"English",maintenanceMode:!1,enforceStrongPasswords:!0,sessionTimeoutMinutes:60,aiTutorEnabled:!0,aiAutoRecommendations:!0,aiRiskAlertsEnabled:!0,gradingScale:"percentage",passingGrade:75,parentSummaryEmails:!0,teacherDigestEmails:!0,weeklyPlatformReport:!0,autoBackupEnabled:!1,backupFrequency:"weekly"}},KE=300*1e3,QE=1800*1e3,Li=new Cm({defaultOptions:{queries:{staleTime:KE,gcTime:QE,retry:1,refetchOnWindowFocus:!1}}}),XE=async()=>{await Li.cancelQueries(),Li.clear()},ku={quizDefaults:{timeLimitMinutes:30,passingScore:75,maxAttempts:3},classPreferences:{autoEnroll:!1,classVisibility:"public"},studentAnalyticsVisibility:!0,notifyOnSubmission:!0,notifyOnStudentActivity:!1},Tu={maintenanceMode:!1,defaultGradeLevel:"Grade 11",defaultCurriculum:"STEM",maxClassSize:50,auditLogVisible:!0,aiConfig:{modelName:"deepseek-chat",temperature:.7,endpoint:"https://api.deepseek.com"}},YE="preferences",ja=()=>JSON.parse(JSON.stringify(gs)),qh=e=>{const t=ja();return e?{...t,...e,notifications:{...t.notifications,...e.notifications,notificationTypes:{...t.notifications.notificationTypes,...e.notifications?.notificationTypes},quietHours:{...t.notifications.quietHours,...e.notifications?.quietHours}},pushPreferences:{...t.pushPreferences,...e.pushPreferences},appearance:{...t.appearance,...e.appearance},privacy:{...t.privacy,...e.privacy},learning:{...t.learning,...e.learning},adminPanel:{...t.adminPanel,...e.adminPanel}}:t},Na=e=>W($,"users",e,"settings",YE),Gh=async e=>{const t=Na(e),n=await we(t);if(!n.exists()){const r=ja();return await Ne(t,{...r,createdAt:ce(),updatedAt:ce()}),r}return qh(n.data())},JE=async(e,t)=>{const n=await Gh(e),r=qh({...n,...t});return await Ne(Na(e),{...r,updatedAt:ce()},{merge:!0}),r},Wh="mathpulse_appearance",eC=e=>{const t=document.documentElement;t.style.setProperty("--font-size",`${e.appearance.fontSize}px`),t.dataset.density=e.appearance.compactView?"compact":"comfortable",e.appearance.reduceAnimations?t.classList.add("reduced-motion"):t.classList.remove("reduced-motion"),e.appearance.darkMode?t.classList.add("smart-dark"):t.classList.remove("smart-dark");try{localStorage.setItem(Wh,JSON.stringify(e.appearance))}catch{}},tC=()=>{try{const e=localStorage.getItem(Wh);if(!e)return;const t=JSON.parse(e),n=document.documentElement;n.style.setProperty("--font-size",`${t.fontSize}px`),n.dataset.density=t.compactView?"compact":"comfortable",t.reduceAnimations&&n.classList.add("reduced-motion"),t.darkMode&&n.classList.add("smart-dark")}catch{}},nC=async()=>{try{if(await XE(),E_(),localStorage.clear(),sessionStorage.clear(),"caches"in window){const e=await caches.keys();await Promise.all(e.map(t=>caches.delete(t)))}}catch(e){throw console.error("Failed clearing client cache:",e),new Error("Unable to clear cache on this device.")}},rC=async e=>{const t=W($,"users",e),n=await we(t),r=await we(Na(e)),s=["progress","xpActivities","achievements","notifications","tasks","chatSessions","chatMessages"],o=await Promise.all(s.map(async i=>{const a=Dt(Xe($,i),Rt("userId","==",e)),c=await jn(a);return{collectionName:i,items:c.docs.map(u=>({id:u.id,...u.data()}))}}));return{exportedAt:new Date().toISOString(),user:n.exists()?{id:n.id,...n.data()}:null,settings:r.exists()?r.data():ja(),collections:o.reduce((i,a)=>(i[a.collectionName]=a.items,i),{})}},$a=async e=>{const t=be.currentUser;if(!t||!t.email)throw new Error("No user logged in");const n=Wp.credential(t.email,e);await Hp(t,n)},VR=async(e,t)=>{if(await $a(e),!be.currentUser)throw new Error("Re-auth failed");await qp(be.currentUser,t)},BR=async(e,t)=>{if(await $a(e),!be.currentUser)throw new Error("Re-auth failed");await Up(be.currentUser,t)},UR=async(e,t)=>{if(await $a(e),!be.currentUser)throw new Error("Re-auth failed");await Gp(be.currentUser);try{const{deleteDoc:n}=await oe(async()=>{const{deleteDoc:r}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{deleteDoc:r}},__vite__mapDeps([1,2]));await n(W($,"users",t))}catch{}},Hh=e=>W($,"users",e,"settings","teacherPreferences"),sC=async e=>{const t=await we(Hh(e));return t.exists()?{...ku,...t.data()}:{...ku}},qR=async(e,t)=>{const n=await sC(e),r={...n,...t,quizDefaults:{...n.quizDefaults,...t.quizDefaults},classPreferences:{...n.classPreferences,...t.classPreferences}};return await Ne(Hh(e),{...r,updatedAt:ce()},{merge:!0}),r},Zh=()=>W($,"system","config"),oC=async()=>{const e=await we(Zh());return e.exists()?{...Tu,...e.data()}:{...Tu}},GR=async e=>{const t=await oC(),n={...t,...e,aiConfig:{...t.aiConfig,...e.aiConfig}};return await Ne(Zh(),{...n,updatedAt:ce()},{merge:!0}),n};function Kh(e){const t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="[object Date]"?new e.constructor(+e):typeof e=="number"||t==="[object Number]"||typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Qh(e){const t=Kh(e);return t.setHours(0,0,0,0),t}function iC(e){const t=Kh(e);return t.setHours(23,59,59,999),t}function Wn(){const e=be.currentUser?.uid??null;return e||console.warn("[notificationFirestoreService] Skipping Firestore call — user not authenticated"),e}const aC=e=>{const t=e.data(),n=t.createdAt,r=n instanceof On?n.toDate():n instanceof Date?n:new Date;return{id:e.id,userId:t.userId,type:t.type,title:t.title,message:t.message,isRead:t.isRead,createdAt:r,metadata:t.metadata,actionUrl:t.actionUrl}},cC=async e=>{if(!Wn())throw new Error("Cannot create notification — not authenticated");try{const n=W(Xe($,"notifications",e.userId,"items")),r={userId:e.userId,type:e.type,title:e.title,message:e.message,isRead:!1,createdAt:ce(),...e.metadata?{metadata:e.metadata}:{},...e.actionUrl?{actionUrl:e.actionUrl}:{}};return await Ne(n,r),n.id}catch(n){throw console.error("[notificationFirestoreService] Error creating notification:",n),n}},lC=async(e,t)=>{if(Wn())try{const n=W($,"notifications",e,"items",t);await kt(n,{isRead:!0})}catch(n){throw console.error("[notificationFirestoreService] Error marking as read:",n),n}},uC=async e=>{if(Wn())try{const t=Dt(Xe($,"notifications",e,"items"),Rt("isRead","==",!1)),n=await jn(t),r=Dt(Xe($,"notifications"),Rt("userId","==",e),Rt("read","==",!1)),s=await jn(r),o=[...n.docs.map(i=>kt(i.ref,{isRead:!0})),...s.docs.map(i=>kt(i.ref,{read:!0}))];await Promise.all(o)}catch(t){throw console.error("[notificationFirestoreService] Error marking all as read:",t),t}},dC=async(e,t)=>{try{const n=W($,"notifications",e,"items",t);await Ho(n)}catch(n){throw console.error("[notificationFirestoreService] Error deleting notification:",n),n}},fC=(e,t)=>{const n=Wn();if(!n||n!==e)return console.warn("[notificationFirestoreService] subscribeToNotifications skipped — auth UID mismatch or not signed in"),t([]),()=>{};const r=Dt(Xe($,"notifications",e,"items"),vn("createdAt","desc")),s=Dt(Xe($,"notifications"),Rt("userId","==",e),vn("createdAt","desc"));let o=[],i=[],a=!1,c=!1;const u=()=>{const f=new Map;for(const m of i)f.set(m.id,m);for(const m of o)f.set(m.id,m);const p=Array.from(f.values()).sort((m,y)=>y.createdAt.getTime()-m.createdAt.getTime());t(p)},d=Jt(r,f=>{o=f.docs.map(p=>aC(p)),a=!0,c&&u()},()=>{a=!0,c&&u()}),l=Jt(s,f=>{i=f.docs.map(p=>{const m=p.data(),y=m.createdAt,g=y instanceof On?y.toDate():y instanceof Date?y:new Date;return{id:p.id,userId:m.userId,type:m.type||"message",title:m.title,message:m.message,isRead:m.isRead??m.read??!1,createdAt:g,metadata:m.metadata,actionUrl:m.actionUrl||m.link}}),c=!0,a&&u()},()=>{c=!0,a&&u()});return()=>{d(),l()}},hC=async e=>{if(!Wn())return!1;try{const t=new Date,n=Qh(t),r=iC(t),s=Dt(Xe($,"notifications",e,"items"),Rt("type","==","daily_checkin"),Rt("createdAt",">=",n),Rt("createdAt","<=",r),vn("createdAt","asc"),Sr(1));return!(await jn(s)).empty}catch(t){return console.error("[notificationFirestoreService] Error checking daily check-in:",t),!1}},pC=async e=>{if(!Wn())return!1;try{const n=Qh(new Date),r=Dt(Xe($,"notifications",e,"items"),Rt("type","==","streak_reminder"),Rt("createdAt",">=",n),vn("createdAt","asc"),Sr(1));return!(await jn(r)).empty}catch(t){return console.error("[notificationFirestoreService] Error checking reminder:",t),!1}};async function Xh(e){try{await cC(e)}catch(t){console.error("[NotificationService] Failed to create notification:",t)}}function mC(e){const t=h.useRef(!1);h.useEffect(()=>{if(!e||t.current)return;t.current=!0,(async()=>{try{if(await hC(e)||await pC(e))return;await Xh({userId:e,type:"streak_reminder",title:"Don't forget your daily check-in!",message:"Check in today to keep your streak alive and earn bonus XP."})}catch(r){console.error("[useDailyCheckInReminder] Error:",r)}})()},[e])}const Yh=h.createContext(null),$o=({children:e})=>{const{currentUser:t,userProfile:n}=Rr(),[r,s]=h.useState([]),[o,i]=h.useState(!0),a=t?.uid??null;mC(n?.role==="student"?a:null),h.useEffect(()=>{if(!a)return s([]),i(!1),()=>{};i(!0);const p=fC(a,m=>{s(m),i(!1)});return()=>p()},[a]);const c=h.useMemo(()=>r.filter(p=>!p.isRead).length,[r]),u=h.useCallback(async p=>{a&&await lC(a,p)},[a]),d=h.useCallback(async()=>{a&&(s(p=>p.map(m=>m.isRead?m:{...m,isRead:!0})),await uC(a))},[a]),l=h.useCallback(async p=>{a&&await dC(a,p)},[a]),f=h.useMemo(()=>({notifications:r,unreadCount:c,isLoading:o,markAsRead:u,markAllAsRead:d,deleteNotification:l}),[r,c,o,u,d,l]);return b.jsx(Yh.Provider,{value:f,children:e})},WR=()=>{const e=h.useContext(Yh);if(!e)throw new Error("useNotifications must be used within a NotificationProvider");return e},Pu="/firebase-messaging-sw.js";let Fo=null,_u=!1,Vo=!1;async function Fa(){if(!_u){try{Vo=await Op()}catch{Vo=!1}_u=!0}return Vo?(Fo||(Fo=Lp(zt)),Fo):null}async function gC(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;try{const e=await navigator.serviceWorker.getRegistration(Pu);return e||await navigator.serviceWorker.register(Pu,{scope:"/"})}catch(e){return console.warn("[pushNotificationService] SW registration failed:",e),null}}async function Jh(e){if(!e||typeof window>"u"||typeof Notification>"u")return null;const t=await Fa();if(!t)return console.warn("[pushNotificationService] FCM not supported in this browser."),null;let n;try{if(Notification.permission==="granted")n="granted";else{if(Notification.permission==="denied")return null;n=await Notification.requestPermission()}}catch(i){return console.warn("[pushNotificationService] permission prompt failed:",i),null}if(n!=="granted")return null;const r="BCydYLOb7oDjcaIwvBq8VUbNE7AzIBSdNbPXHDvSBC9B_2COzlK16MlCLJbDmNynf0yFkx_ZvTLPQYlhiu-C91Q".trim();if(!r)return console.warn("[pushNotificationService] VITE_FIREBASE_VAPID_KEY missing — cannot fetch FCM token."),null;const s=await gC();if(!s)return null;let o=null;try{o=await Dp(t,{vapidKey:r,serviceWorkerRegistration:s})}catch(i){return console.warn("[pushNotificationService] getToken failed:",i),null}if(!o)return null;try{const i=W($,"users",e,"fcmTokens",o),a={token:o,userId:e,platform:"web",userAgent:typeof navigator<"u"?navigator.userAgent:"",createdAt:ce(),updatedAt:ce(),active:!0};await Ne(i,a,{merge:!0})}catch(i){console.warn("[pushNotificationService] persisting token failed:",i)}return o}function ep(e){let t,n=!1;return Fa().then(r=>{n||!r||(t=Ip(r,e))}),()=>{n=!0,t?.()}}async function tp(e,t){if(!(!e||!t)){try{const n=W($,"users",e,"fcmTokens",t);await kt(n,{active:!1,updatedAt:ce()})}catch(n){console.warn("[pushNotificationService] marking token inactive failed:",n)}try{const n=await Fa();n&&await Mp(n)}catch(n){console.warn("[pushNotificationService] deleteToken failed:",n)}}}const HR=Object.freeze(Object.defineProperty({__proto__:null,deregisterPushToken:tp,onForegroundMessage:ep,requestPushPermissionAndRegister:Jh},Symbol.toStringTag,{value:"Module"})),yC={achievement:"achievement_unlocked",quiz_battle:"system_alert",daily_reward:"daily_checkin",assignment:"new_assignment",grade_posted:"quiz_result",streak_reminder:"streak_reminder",leaderboard:"system_alert",system:"system_alert"};function bC(e){return e?yC[e]??"system_alert":"system_alert"}function vC(){const{currentUser:e}=Rr(),t=Vi(),n=h.useRef(null),r=h.useRef(null);return h.useEffect(()=>{const o=e?.uid??null;if(r.current=o,!o)return;let i,a=!1;return(async()=>{const c=await Jh(o);a||(n.current=c,c&&(i=ep(u=>{const d=u.notification??{},l=u.data??{},f=d.title||l.title||"MathPulse AI",p=d.body||l.body||"",m=l.notificationType;Xh({userId:o,type:bC(m),title:f,message:p,actionUrl:l.url,metadata:{...l,source:"fcm_foreground",fcmType:m??null}})})))})(),()=>{a=!0,i?.()}},[e?.uid]),h.useEffect(()=>{if(typeof navigator>"u"||!("serviceWorker"in navigator))return;const o=i=>{const a=i.data;if(!a||a.type!=="NOTIFICATION_CLICK")return;const c=a.url||"/";try{const u=c.startsWith("http")?new URL(c).pathname:c;t(u)}catch{window.location.href=c}};return navigator.serviceWorker.addEventListener("message",o),()=>navigator.serviceWorker.removeEventListener("message",o)},[t]),{unregister:async()=>{const o=r.current,i=n.current;!o||!i||(await tp(o,i),n.current=null)}}}const Bo=()=>(vC(),null),wC=(e,t)=>{const n=new Array(e.length+t.length);for(let r=0;r({classGroupId:e,validator:t}),np=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),zs="-",Eu=[],SC="arbitrary..",kC=e=>{const t=PC(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:i=>{if(i.startsWith("[")&&i.endsWith("]"))return TC(i);const a=i.split(zs),c=a[0]===""&&a.length>1?1:0;return rp(a,c,t)},getConflictingClassGroupIds:(i,a)=>{if(a){const c=r[i],u=n[i];return c?u?wC(u,c):c:u||Eu}return n[i]||Eu}}},rp=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const s=e[t],o=n.nextPart.get(s);if(o){const u=rp(e,t+1,o);if(u)return u}const i=n.validators;if(i===null)return;const a=t===0?e.join(zs):e.slice(t).join(zs),c=i.length;for(let u=0;ue.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),r=t.slice(0,n);return r?SC+r:void 0})(),PC=e=>{const{theme:t,classGroups:n}=e;return _C(n,t)},_C=(e,t)=>{const n=np();for(const r in e){const s=e[r];Va(s,n,r,t)}return n},Va=(e,t,n,r)=>{const s=e.length;for(let o=0;o{if(typeof e=="string"){CC(e,t,n);return}if(typeof e=="function"){AC(e,t,n,r);return}RC(e,t,n,r)},CC=(e,t,n)=>{const r=e===""?t:sp(t,e);r.classGroupId=n},AC=(e,t,n,r)=>{if(MC(e)){Va(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(xC(n,e))},RC=(e,t,n,r)=>{const s=Object.entries(e),o=s.length;for(let i=0;i{let n=e;const r=t.split(zs),s=r.length;for(let o=0;o"isThemeGetter"in e&&e.isThemeGetter===!0,IC=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null);const s=(o,i)=>{n[o]=i,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(o){let i=n[o];if(i!==void 0)return i;if((i=r[o])!==void 0)return s(o,i),i},set(o,i){o in n?n[o]=i:s(o,i)}}},zi="!",Cu=":",DC=[],Au=(e,t,n,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),OC=e=>{const{prefix:t,experimentalParseClassName:n}=e;let r=s=>{const o=[];let i=0,a=0,c=0,u;const d=s.length;for(let y=0;yc?u-c:void 0;return Au(o,p,f,m)};if(t){const s=t+Cu,o=r;r=i=>i.startsWith(s)?o(i.slice(s.length)):Au(DC,!1,i,void 0,!0)}if(n){const s=r;r=o=>n({className:o,parseClassName:s})}return r},LC=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,r)=>{t.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let o=0;o0&&(s.sort(),r.push(...s),s=[]),r.push(i)):s.push(i)}return s.length>0&&(s.sort(),r.push(...s)),r}},zC=e=>({cache:IC(e.cacheSize),parseClassName:OC(e),sortModifiers:LC(e),...kC(e)}),jC=/\s+/,NC=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:o}=t,i=[],a=e.trim().split(jC);let c="";for(let u=a.length-1;u>=0;u-=1){const d=a[u],{isExternal:l,modifiers:f,hasImportantModifier:p,baseClassName:m,maybePostfixModifierPosition:y}=n(d);if(l){c=d+(c.length>0?" "+c:c);continue}let g=!!y,v=r(g?m.substring(0,y):m);if(!v){if(!g){c=d+(c.length>0?" "+c:c);continue}if(v=r(m),!v){c=d+(c.length>0?" "+c:c);continue}g=!1}const k=f.length===0?"":f.length===1?f[0]:o(f).join(":"),S=p?k+zi:k,x=S+v;if(i.indexOf(x)>-1)continue;i.push(x);const T=s(v,g);for(let P=0;P0?" "+c:c)}return c},$C=(...e)=>{let t=0,n,r,s="";for(;t{if(typeof e=="string")return e;let t,n="";for(let r=0;r{let n,r,s,o;const i=c=>{const u=t.reduce((d,l)=>l(d),e());return n=zC(u),r=n.cache.get,s=n.cache.set,o=a,a(c)},a=c=>{const u=r(c);if(u)return u;const d=NC(c,n);return s(c,d),d};return o=i,(...c)=>o($C(...c))},VC=[],Ae=e=>{const t=n=>n[e]||VC;return t.isThemeGetter=!0,t},ip=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ap=/^\((?:(\w[\w-]*):)?(.+)\)$/i,BC=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,UC=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,qC=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,GC=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,WC=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,HC=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Zt=e=>BC.test(e),ne=e=>!!e&&!Number.isNaN(Number(e)),Kt=e=>!!e&&Number.isInteger(Number(e)),Uo=e=>e.endsWith("%")&&ne(e.slice(0,-1)),Ut=e=>UC.test(e),cp=()=>!0,ZC=e=>qC.test(e)&&!GC.test(e),Ba=()=>!1,KC=e=>WC.test(e),QC=e=>HC.test(e),XC=e=>!L(e)&&!j(e),YC=e=>on(e,dp,Ba),L=e=>ip.test(e),dn=e=>on(e,fp,ZC),Ru=e=>on(e,iA,ne),JC=e=>on(e,pp,cp),eA=e=>on(e,hp,Ba),Mu=e=>on(e,lp,Ba),tA=e=>on(e,up,QC),es=e=>on(e,mp,KC),j=e=>ap.test(e),sr=e=>kn(e,fp),nA=e=>kn(e,hp),Iu=e=>kn(e,lp),rA=e=>kn(e,dp),sA=e=>kn(e,up),ts=e=>kn(e,mp,!0),oA=e=>kn(e,pp,!0),on=(e,t,n)=>{const r=ip.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},kn=(e,t,n=!1)=>{const r=ap.exec(e);return r?r[1]?t(r[1]):n:!1},lp=e=>e==="position"||e==="percentage",up=e=>e==="image"||e==="url",dp=e=>e==="length"||e==="size"||e==="bg-size",fp=e=>e==="length",iA=e=>e==="number",hp=e=>e==="family-name",pp=e=>e==="number"||e==="weight",mp=e=>e==="shadow",aA=()=>{const e=Ae("color"),t=Ae("font"),n=Ae("text"),r=Ae("font-weight"),s=Ae("tracking"),o=Ae("leading"),i=Ae("breakpoint"),a=Ae("container"),c=Ae("spacing"),u=Ae("radius"),d=Ae("shadow"),l=Ae("inset-shadow"),f=Ae("text-shadow"),p=Ae("drop-shadow"),m=Ae("blur"),y=Ae("perspective"),g=Ae("aspect"),v=Ae("ease"),k=Ae("animate"),S=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],T=()=>[...x(),j,L],P=()=>["auto","hidden","clip","visible","scroll"],_=()=>["auto","contain","none"],w=()=>[j,L,c],R=()=>[Zt,"full","auto",...w()],A=()=>[Kt,"none","subgrid",j,L],B=()=>["auto",{span:["full",Kt,j,L]},Kt,j,L],F=()=>[Kt,"auto",j,L],H=()=>["auto","min","max","fr",j,L],re=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],te=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...w()],ie=()=>[Zt,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...w()],se=()=>[Zt,"screen","full","dvw","lvw","svw","min","max","fit",...w()],ue=()=>[Zt,"screen","full","lh","dvh","lvh","svh","min","max","fit",...w()],D=()=>[e,j,L],he=()=>[...x(),Iu,Mu,{position:[j,L]}],rt=()=>["no-repeat",{repeat:["","x","y","space","round"]}],X=()=>["auto","cover","contain",rA,YC,{size:[j,L]}],U=()=>[Uo,sr,dn],q=()=>["","none","full",u,j,L],J=()=>["",ne,sr,dn],xe=()=>["solid","dashed","dotted","double"],ae=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],le=()=>[ne,Uo,Iu,Mu],Z=()=>["","none",m,j,L],O=()=>["none",ne,j,L],ee=()=>["none",ne,j,L],ye=()=>[ne,j,L],K=()=>[Zt,"full",...w()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ut],breakpoint:[Ut],color:[cp],container:[Ut],"drop-shadow":[Ut],ease:["in","out","in-out"],font:[XC],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ut],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ut],shadow:[Ut],spacing:["px",ne],text:[Ut],"text-shadow":[Ut],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Zt,L,j,g]}],container:["container"],columns:[{columns:[ne,L,j,a]}],"break-after":[{"break-after":S()}],"break-before":[{"break-before":S()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:T()}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:_()}],"overscroll-x":[{"overscroll-x":_()}],"overscroll-y":[{"overscroll-y":_()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{"inset-s":R(),start:R()}],end:[{"inset-e":R(),end:R()}],"inset-bs":[{"inset-bs":R()}],"inset-be":[{"inset-be":R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[Kt,"auto",j,L]}],basis:[{basis:[Zt,"full","auto",a,...w()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ne,Zt,"auto","initial","none",L]}],grow:[{grow:["",ne,j,L]}],shrink:[{shrink:["",ne,j,L]}],order:[{order:[Kt,"first","last","none",j,L]}],"grid-cols":[{"grid-cols":A()}],"col-start-end":[{col:B()}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":A()}],"row-start-end":[{row:B()}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...re(),"normal"]}],"justify-items":[{"justify-items":[...te(),"normal"]}],"justify-self":[{"justify-self":["auto",...te()]}],"align-content":[{content:["normal",...re()]}],"align-items":[{items:[...te(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...te(),{baseline:["","last"]}]}],"place-content":[{"place-content":re()}],"place-items":[{"place-items":[...te(),"baseline"]}],"place-self":[{"place-self":["auto",...te()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":w()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":w()}],"space-y-reverse":["space-y-reverse"],size:[{size:ie()}],"inline-size":[{inline:["auto",...se()]}],"min-inline-size":[{"min-inline":["auto",...se()]}],"max-inline-size":[{"max-inline":["none",...se()]}],"block-size":[{block:["auto",...ue()]}],"min-block-size":[{"min-block":["auto",...ue()]}],"max-block-size":[{"max-block":["none",...ue()]}],w:[{w:[a,"screen",...ie()]}],"min-w":[{"min-w":[a,"screen","none",...ie()]}],"max-w":[{"max-w":[a,"screen","none","prose",{screen:[i]},...ie()]}],h:[{h:["screen","lh",...ie()]}],"min-h":[{"min-h":["screen","lh","none",...ie()]}],"max-h":[{"max-h":["screen","lh",...ie()]}],"font-size":[{text:["base",n,sr,dn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,oA,JC]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Uo,L]}],"font-family":[{font:[nA,eA,t]}],"font-features":[{"font-features":[L]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,j,L]}],"line-clamp":[{"line-clamp":[ne,"none",j,Ru]}],leading:[{leading:[o,...w()]}],"list-image":[{"list-image":["none",j,L]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",j,L]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:D()}],"text-color":[{text:D()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...xe(),"wavy"]}],"text-decoration-thickness":[{decoration:[ne,"from-font","auto",j,dn]}],"text-decoration-color":[{decoration:D()}],"underline-offset":[{"underline-offset":[ne,"auto",j,L]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",j,L]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",j,L]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:he()}],"bg-repeat":[{bg:rt()}],"bg-size":[{bg:X()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Kt,j,L],radial:["",j,L],conic:[Kt,j,L]},sA,tA]}],"bg-color":[{bg:D()}],"gradient-from-pos":[{from:U()}],"gradient-via-pos":[{via:U()}],"gradient-to-pos":[{to:U()}],"gradient-from":[{from:D()}],"gradient-via":[{via:D()}],"gradient-to":[{to:D()}],rounded:[{rounded:q()}],"rounded-s":[{"rounded-s":q()}],"rounded-e":[{"rounded-e":q()}],"rounded-t":[{"rounded-t":q()}],"rounded-r":[{"rounded-r":q()}],"rounded-b":[{"rounded-b":q()}],"rounded-l":[{"rounded-l":q()}],"rounded-ss":[{"rounded-ss":q()}],"rounded-se":[{"rounded-se":q()}],"rounded-ee":[{"rounded-ee":q()}],"rounded-es":[{"rounded-es":q()}],"rounded-tl":[{"rounded-tl":q()}],"rounded-tr":[{"rounded-tr":q()}],"rounded-br":[{"rounded-br":q()}],"rounded-bl":[{"rounded-bl":q()}],"border-w":[{border:J()}],"border-w-x":[{"border-x":J()}],"border-w-y":[{"border-y":J()}],"border-w-s":[{"border-s":J()}],"border-w-e":[{"border-e":J()}],"border-w-bs":[{"border-bs":J()}],"border-w-be":[{"border-be":J()}],"border-w-t":[{"border-t":J()}],"border-w-r":[{"border-r":J()}],"border-w-b":[{"border-b":J()}],"border-w-l":[{"border-l":J()}],"divide-x":[{"divide-x":J()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":J()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...xe(),"hidden","none"]}],"divide-style":[{divide:[...xe(),"hidden","none"]}],"border-color":[{border:D()}],"border-color-x":[{"border-x":D()}],"border-color-y":[{"border-y":D()}],"border-color-s":[{"border-s":D()}],"border-color-e":[{"border-e":D()}],"border-color-bs":[{"border-bs":D()}],"border-color-be":[{"border-be":D()}],"border-color-t":[{"border-t":D()}],"border-color-r":[{"border-r":D()}],"border-color-b":[{"border-b":D()}],"border-color-l":[{"border-l":D()}],"divide-color":[{divide:D()}],"outline-style":[{outline:[...xe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ne,j,L]}],"outline-w":[{outline:["",ne,sr,dn]}],"outline-color":[{outline:D()}],shadow:[{shadow:["","none",d,ts,es]}],"shadow-color":[{shadow:D()}],"inset-shadow":[{"inset-shadow":["none",l,ts,es]}],"inset-shadow-color":[{"inset-shadow":D()}],"ring-w":[{ring:J()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:D()}],"ring-offset-w":[{"ring-offset":[ne,dn]}],"ring-offset-color":[{"ring-offset":D()}],"inset-ring-w":[{"inset-ring":J()}],"inset-ring-color":[{"inset-ring":D()}],"text-shadow":[{"text-shadow":["none",f,ts,es]}],"text-shadow-color":[{"text-shadow":D()}],opacity:[{opacity:[ne,j,L]}],"mix-blend":[{"mix-blend":[...ae(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ae()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ne]}],"mask-image-linear-from-pos":[{"mask-linear-from":le()}],"mask-image-linear-to-pos":[{"mask-linear-to":le()}],"mask-image-linear-from-color":[{"mask-linear-from":D()}],"mask-image-linear-to-color":[{"mask-linear-to":D()}],"mask-image-t-from-pos":[{"mask-t-from":le()}],"mask-image-t-to-pos":[{"mask-t-to":le()}],"mask-image-t-from-color":[{"mask-t-from":D()}],"mask-image-t-to-color":[{"mask-t-to":D()}],"mask-image-r-from-pos":[{"mask-r-from":le()}],"mask-image-r-to-pos":[{"mask-r-to":le()}],"mask-image-r-from-color":[{"mask-r-from":D()}],"mask-image-r-to-color":[{"mask-r-to":D()}],"mask-image-b-from-pos":[{"mask-b-from":le()}],"mask-image-b-to-pos":[{"mask-b-to":le()}],"mask-image-b-from-color":[{"mask-b-from":D()}],"mask-image-b-to-color":[{"mask-b-to":D()}],"mask-image-l-from-pos":[{"mask-l-from":le()}],"mask-image-l-to-pos":[{"mask-l-to":le()}],"mask-image-l-from-color":[{"mask-l-from":D()}],"mask-image-l-to-color":[{"mask-l-to":D()}],"mask-image-x-from-pos":[{"mask-x-from":le()}],"mask-image-x-to-pos":[{"mask-x-to":le()}],"mask-image-x-from-color":[{"mask-x-from":D()}],"mask-image-x-to-color":[{"mask-x-to":D()}],"mask-image-y-from-pos":[{"mask-y-from":le()}],"mask-image-y-to-pos":[{"mask-y-to":le()}],"mask-image-y-from-color":[{"mask-y-from":D()}],"mask-image-y-to-color":[{"mask-y-to":D()}],"mask-image-radial":[{"mask-radial":[j,L]}],"mask-image-radial-from-pos":[{"mask-radial-from":le()}],"mask-image-radial-to-pos":[{"mask-radial-to":le()}],"mask-image-radial-from-color":[{"mask-radial-from":D()}],"mask-image-radial-to-color":[{"mask-radial-to":D()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[ne]}],"mask-image-conic-from-pos":[{"mask-conic-from":le()}],"mask-image-conic-to-pos":[{"mask-conic-to":le()}],"mask-image-conic-from-color":[{"mask-conic-from":D()}],"mask-image-conic-to-color":[{"mask-conic-to":D()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:he()}],"mask-repeat":[{mask:rt()}],"mask-size":[{mask:X()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",j,L]}],filter:[{filter:["","none",j,L]}],blur:[{blur:Z()}],brightness:[{brightness:[ne,j,L]}],contrast:[{contrast:[ne,j,L]}],"drop-shadow":[{"drop-shadow":["","none",p,ts,es]}],"drop-shadow-color":[{"drop-shadow":D()}],grayscale:[{grayscale:["",ne,j,L]}],"hue-rotate":[{"hue-rotate":[ne,j,L]}],invert:[{invert:["",ne,j,L]}],saturate:[{saturate:[ne,j,L]}],sepia:[{sepia:["",ne,j,L]}],"backdrop-filter":[{"backdrop-filter":["","none",j,L]}],"backdrop-blur":[{"backdrop-blur":Z()}],"backdrop-brightness":[{"backdrop-brightness":[ne,j,L]}],"backdrop-contrast":[{"backdrop-contrast":[ne,j,L]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ne,j,L]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ne,j,L]}],"backdrop-invert":[{"backdrop-invert":["",ne,j,L]}],"backdrop-opacity":[{"backdrop-opacity":[ne,j,L]}],"backdrop-saturate":[{"backdrop-saturate":[ne,j,L]}],"backdrop-sepia":[{"backdrop-sepia":["",ne,j,L]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",j,L]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ne,"initial",j,L]}],ease:[{ease:["linear","initial",v,j,L]}],delay:[{delay:[ne,j,L]}],animate:[{animate:["none",k,j,L]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,j,L]}],"perspective-origin":[{"perspective-origin":T()}],rotate:[{rotate:O()}],"rotate-x":[{"rotate-x":O()}],"rotate-y":[{"rotate-y":O()}],"rotate-z":[{"rotate-z":O()}],scale:[{scale:ee()}],"scale-x":[{"scale-x":ee()}],"scale-y":[{"scale-y":ee()}],"scale-z":[{"scale-z":ee()}],"scale-3d":["scale-3d"],skew:[{skew:ye()}],"skew-x":[{"skew-x":ye()}],"skew-y":[{"skew-y":ye()}],transform:[{transform:[j,L,"","none","gpu","cpu"]}],"transform-origin":[{origin:T()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:K()}],"translate-x":[{"translate-x":K()}],"translate-y":[{"translate-y":K()}],"translate-z":[{"translate-z":K()}],"translate-none":["translate-none"],accent:[{accent:D()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:D()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",j,L]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",j,L]}],fill:[{fill:["none",...D()]}],"stroke-w":[{stroke:[ne,sr,dn,Ru]}],stroke:[{stroke:["none",...D()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},cA=FC(aA);function mn(...e){return cA(Jp(e))}function lA({className:e,...t}){return b.jsx(Qp,{"data-slot":"avatar",className:mn("relative flex size-10 shrink-0 overflow-hidden rounded-full",e),...t})}function Du({className:e,...t}){return b.jsx(Xp,{"data-slot":"avatar-image",className:mn("aspect-square size-full",e),...t})}function uA({className:e,...t}){return b.jsx(Yp,{"data-slot":"avatar-fallback",className:mn("bg-muted flex size-full items-center justify-center rounded-full",e),...t})}function dA(e){return e==="male"?"/icons/male-student.png":e==="female"?"/icons/female-student.png":"/icons/neutral-student.png"}const fA=e=>{const t=(e||"").trim();return t?t.split(/\s+/).slice(0,2).map(n=>n[0]?.toUpperCase()).join(""):"U"},hA=({src:e,name:t,gender:n,className:r,fallbackClassName:s,imageClassName:o})=>{const i=fA(t),a=dA(n);return b.jsxs(lA,{className:mn("shrink-0",r),children:[e?b.jsx(Du,{src:e,alt:t||"User",className:mn("object-cover",o)}):b.jsx(Du,{src:a,alt:t||"User",className:mn("object-cover",o)}),b.jsx(uA,{className:mn("bg-gradient-to-br from-violet-500 to-indigo-600 text-white font-display font-bold text-xs select-none",s),children:i})]})},pA={Functions:"Functions and Graphs",BusinessMath:"Business and Financial Mathematics",Logic:"Logic and Reasoning"},ZR={Functions:"gm-q2-functions-graphs",BusinessMath:"gm-q1-business-finance",Logic:"gm-q4-propositions-syllogisms-fallacies"},mA=e=>{const t=e.trim().toLowerCase();return t==="functions"||t.includes("function")?"Functions":t==="businessmath"||t.includes("business")?"BusinessMath":t==="logic"||t.includes("reason")?"Logic":null},gA=[{lessonId:"gm-q1-bf-1",lessonTitle:"Represent business transactions and financial goals using variables and equations.",moduleId:"gm-q1-business-finance",subjectId:"gen-math",subject:"General Mathematics",quarter:1,competencyCode:"GM11-BF-1",learningCompetency:"Represent business transactions and financial goals using variables and equations.",storagePath:"curriculum/general_math/GENERAL-MATHEMATICS-1.pdf",sourceFile:"GENERAL-MATHEMATICS-1.pdf"},{lessonId:"gm-q1-pss-1",lessonTitle:"Identify and describe arithmetic and geometric patterns in data.",moduleId:"gm-q1-patterns-sequences-series",subjectId:"gen-math",subject:"General Mathematics",quarter:1,competencyCode:"GM11-PSS-1",learningCompetency:"Identify and describe arithmetic and geometric patterns in data.",storagePath:"curriculum/general_math/GENERAL-MATHEMATICS-1.pdf",sourceFile:"GENERAL-MATHEMATICS-1.pdf"},{lessonId:"gm-q1-fass-1",lessonTitle:"Use arithmetic and geometric series to estimate cumulative financial outcomes.",moduleId:"gm-q1-financial-application-sequences-series",subjectId:"gen-math",subject:"General Mathematics",quarter:1,competencyCode:"GM11-FASS-1",learningCompetency:"Use arithmetic and geometric series to estimate cumulative financial outcomes.",storagePath:"curriculum/gen_math_sdo/SDO_Navotas_Gen.Math_SHS_1stSem.FV.pdf",sourceFile:"SDO_Navotas_Gen.Math_SHS_1stSem.FV.pdf"},{lessonId:"bm-q1-1",lessonTitle:"Translate verbal phrases to mathematical expressions; model business scenarios using linear equations and inequalities.",moduleId:"bm-q1-business-math",subjectId:"business-math",subject:"Business Mathematics",quarter:1,competencyCode:"ABM_BM11BS-Ia-b-1",learningCompetency:"Translate verbal phrases to mathematical expressions; model business scenarios using linear equations and inequalities.",storagePath:"curriculum/business_math/SDO_Navotas_Bus.Math_SHS_1stSem.FV.pdf",sourceFile:"SDO_Navotas_Bus.Math_SHS_1stSem.FV.pdf"},{lessonId:"stat-q1-1",lessonTitle:"Define and describe random variables and their types.",moduleId:"stat-q1-probability",subjectId:"stats-prob",subject:"Statistics and Probability",quarter:1,competencyCode:"SP_SHS11-Ia-1",learningCompetency:"Define and describe random variables and their types.",storagePath:"curriculum/stat_prob/SDO_Navotas_STAT_PROB_SHS_1stSem.FV.pdf",sourceFile:"SDO_Navotas_STAT_PROB_SHS_1stSem_FV.pdf"},{lessonId:"bc-q3-lf-1",lessonTitle:"Evaluate limits using limit theorems.",moduleId:"bc-q3-limits-of-functions",subjectId:"basic-calc",subject:"Basic Calculus",quarter:3,competencyCode:"BC12-LF-1",learningCompetency:"Evaluate limits using limit theorems.",storagePath:"curriculum/basic_calc/SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf",sourceFile:"SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf"},{lessonId:"bc-q3-d-1",lessonTitle:"Apply the limit definition of the derivative.",moduleId:"bc-q3-derivatives",subjectId:"basic-calc",subject:"Basic Calculus",quarter:3,competencyCode:"BC12-D-1",learningCompetency:"Apply the limit definition of the derivative.",storagePath:"curriculum/basic_calc/SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf",sourceFile:"SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf"},{lessonId:"bc-q3-i-1",lessonTitle:"Determine antiderivatives of functions.",moduleId:"bc-q3-integration",subjectId:"basic-calc",subject:"Basic Calculus",quarter:3,competencyCode:"BC12-I-1",learningCompetency:"Determine antiderivatives of functions.",storagePath:"curriculum/basic_calc/SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf",sourceFile:"SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf"}],yA=Object.fromEntries(gA.map(e=>[e.competencyCode,{lessonId:e.lessonId,storagePath:e.storagePath,sourceFile:e.sourceFile}])),Ou=[{id:"deped-strengthened-gm",title:"DepEd Strengthened SHS General Mathematics Guide",url:"https://www.deped.gov.ph/"},{id:"deped-approved-exemplars",title:"Approved SHS Lesson Exemplars and Activity Sheets",url:"https://www.deped.gov.ph/"}],Ua={"gen-math":{id:"gen-math",label:"General Mathematics",color:"#1f4ea8",accent:"#3f7cff"},"business-math":{id:"business-math",label:"Business Mathematics",color:"#166534",accent:"#22c55e"},"stats-prob":{id:"stats-prob",label:"Statistics and Probability",color:"#6b21a8",accent:"#a855f7"}},bA={"Grade 11":["gen-math"]},vA="Foundational competency flow with guided examples, step-by-step vocabulary support, and scaffolded checkpoints.",tt=(e,t,n,r,s,o,i,a,c,u,d,l)=>({id:e,subjectId:t,subject:Ua[t].label,quarter:n,moduleTitle:r,moduleDescription:s,contentDomain:o,competencyGroup:i,competencies:a,performanceStandard:c,realWorldTheme:u,grade_level_availability:d,recommended_grade_level:l,sources:[Ou[0],Ou[1]]}),wA=[tt("gm-q1-business-finance","gen-math","Q1","Business and Finance","Interpret business contexts using mathematical models for pricing, savings, and financial planning.","Business Mathematics","GM-Q1-BF",[{code:"GM11-BF-1",outcome:"Represent business transactions and financial goals using variables and equations."},{code:"GM11-BF-2",outcome:"Analyze financial options using ratio, percent change, and margin reasoning."},{code:"GM11-BF-3",outcome:"Justify practical decisions with mathematically sound comparisons."}],"Produces a finance decision brief that explains and defends a chosen option using quantitative evidence.","Household budgeting and MSME pricing",["Grade 11"],"Grade 11"),tt("gm-q1-patterns-sequences-series","gen-math","Q1","Patterns, Sequences, and Series","Investigate arithmetic and geometric patterns, then model recurring structures in real settings.","Patterns and Algebraic Thinking","GM-Q1-PSS",[{code:"GM11-PSS-1",outcome:"Identify and describe arithmetic and geometric patterns in data."},{code:"GM11-PSS-2",outcome:"Construct explicit and recursive rules for sequences."},{code:"GM11-PSS-3",outcome:"Solve contextual problems involving finite series."}],"Creates a pattern model with formula, table, and verbal interpretation for a real-life process.","Savings goals and production growth",["Grade 11"],"Grade 11"),tt("gm-q1-financial-application-sequences-series","gen-math","Q1","Financial Application of Sequences and Series","Apply sequence and series models in annuities, installment planning, and long-term savings behavior.","Financial Applications","GM-Q1-FASS",[{code:"GM11-FASS-1",outcome:"Use arithmetic and geometric series to estimate cumulative financial outcomes."},{code:"GM11-FASS-2",outcome:"Compare payment plans and saving schemes using sequence-based models."}],"Builds a comparative recommendation report for financial plans grounded in sequence and series computations.","Installment plans and savings projections",["Grade 11"],"Grade 11"),tt("gm-q2-measurement-conversion","gen-math","Q2","Measurement and Conversion","Convert and validate units in practical settings involving length, area, volume, and rate.","Measurement","GM-Q2-MC",[{code:"GM11-MC-1",outcome:"Perform unit conversions accurately across metric and mixed contexts."},{code:"GM11-MC-2",outcome:"Evaluate measurement precision and reasonableness in applied tasks."}],"Produces an accurate conversion workflow with checks for reasonableness and precision.","Construction estimates and food production",["Grade 11"],"Grade 11"),tt("gm-q2-functions-graphs","gen-math","Q2","Functions and Their Graphs","Model relationships using function notation, tables, and graphs to explain changing quantities.","Functions","GM-Q2-FG",[{code:"GM11-FG-1",outcome:"Represent real-life relationships as functions and interpret domain/range."},{code:"GM11-FG-2",outcome:"Analyze function behavior from tables, equations, and graphs."},{code:"GM11-FG-3",outcome:"Use graph interpretation to support contextual conclusions."}],"Submits a function modeling portfolio with equation selection and graph-based interpretation.","Transport fare, utility consumption, and growth trends",["Grade 11"],"Grade 11"),tt("gm-q2-piecewise-functions","gen-math","Q2","Piecewise Functions","Use piecewise definitions to model tiered pricing, conditional rates, and policy thresholds.","Functions","GM-Q2-PF",[{code:"GM11-PF-1",outcome:"Translate threshold-based scenarios into piecewise functions."},{code:"GM11-PF-2",outcome:"Evaluate and graph piecewise functions for decision-making."}],"Constructs and defends a piecewise model for a threshold-driven policy scenario.","Electricity billing tiers and shipping rates",["Grade 11"],"Grade 11"),tt("gm-q2-statistical-variables","gen-math","Q2","Statistical Variables","Differentiate variable types and build data representations suitable for statistical analysis.","Data and Statistics","GM-Q2-SV",[{code:"GM11-SV-1",outcome:"Classify variables and choose appropriate data representations."},{code:"GM11-SV-2",outcome:"Interpret variable distributions and detect potential data issues."}],"Prepares a data profile report with justified variable treatment and representation choices.","School survey dashboards",["Grade 11"],"Grade 11"),tt("gm-q3-basic-trigonometry","gen-math","Q3","Basic Trigonometry","Solve right-triangle and angle problems using trigonometric ratios in practical contexts.","Geometry and Trigonometry","GM-Q3-BT",[{code:"GM11-BT-1",outcome:"Apply trigonometric ratios to solve angle and distance problems."},{code:"GM11-BT-2",outcome:"Interpret trigonometric results in measurement contexts."}],"Creates a field-measurement solution set that justifies method and interpretation.","Building height and slope analysis",["Grade 11"],"Grade 11"),tt("gm-q3-practical-applications-measurement","gen-math","Q3","Practical Applications of Measurement","Integrate measurement methods to solve multi-step tasks in planning, costing, and logistics.","Measurement Applications","GM-Q3-PAM",[{code:"GM11-PAM-1",outcome:"Select and apply measurement methods in practical multi-step tasks."},{code:"GM11-PAM-2",outcome:"Estimate uncertainty and communicate justified approximations."}],"Delivers a practical measurement plan with justified estimates and assumptions.","Project costing and logistics planning",["Grade 11"],"Grade 11"),tt("gm-q3-transformational-geometry-volume-capacity","gen-math","Q3","Transformational Geometry / Volume and Capacity","Use geometric transformations and solid measurement to solve design and storage problems.","Geometry","GM-Q3-TGVC",[{code:"GM11-TGVC-1",outcome:"Analyze geometric transformations in patterned and engineered layouts."},{code:"GM11-TGVC-2",outcome:"Compute volume and capacity for practical container and space tasks."}],"Produces a geometry-based layout and capacity justification for a real constraint.","Packaging and facility layout",["Grade 11"],"Grade 11"),tt("gm-q3-random-variables-sampling","gen-math","Q3","Random Variables and Sampling","Model uncertainty and sampling behavior to support evidence-based conclusions.","Probability and Sampling","GM-Q3-RVS",[{code:"GM11-RVS-1",outcome:"Define random variables and compute basic expected outcomes."},{code:"GM11-RVS-2",outcome:"Explain sampling methods and sampling bias in practical studies."},{code:"GM11-RVS-3",outcome:"Interpret sampling outcomes in context."}],"Presents a sampling design and interpretation memo for a study question.","Consumer preference and public opinion studies",["Grade 11"],"Grade 11"),tt("gm-q4-compound-interest-annuities-loans","gen-math","Q4","Compound Interest, Annuities, and Loans","Evaluate long-term financial commitments using compound growth and annuity structures.","Financial Mathematics","GM-Q4-CIAL",[{code:"GM11-CIAL-1",outcome:"Compute and compare compound interest outcomes across periods and rates."},{code:"GM11-CIAL-2",outcome:"Model annuity and loan payment structures for planning decisions."},{code:"GM11-CIAL-3",outcome:"Assess affordability and sustainability of borrowing plans."}],"Builds a defensible personal finance plan covering savings and borrowing scenarios.","Education financing and long-term savings",["Grade 11"],"Grade 11"),tt("gm-q4-hypothesis-testing-regression","gen-math","Q4","Hypothesis Testing and Regression","Use inferential reasoning and regression modeling to evaluate data-driven claims.","Statistics","GM-Q4-HTR",[{code:"GM11-HTR-1",outcome:"Formulate and interpret hypotheses using context-appropriate tests."},{code:"GM11-HTR-2",outcome:"Develop and interpret regression models for trend analysis."}],"Produces an evidence report with hypothesis decision and regression-backed interpretation.","School performance and market trend analysis",["Grade 11"],"Grade 11"),tt("gm-q4-propositions-syllogisms-fallacies","gen-math","Q4","Logical Propositions, Syllogisms, and Fallacies","Evaluate arguments using formal logic, syllogistic forms, and fallacy detection.","Logic and Reasoning","GM-Q4-PSF",[{code:"GM11-PSF-1",outcome:"Translate statements into logical propositions and evaluate validity."},{code:"GM11-PSF-2",outcome:"Test syllogistic arguments and identify common fallacies."},{code:"GM11-PSF-3",outcome:"Construct sound arguments supported by formal reasoning."}],"Submits a logic audit that classifies validity and fallacies in real arguments.","Media literacy and policy argument review",["Grade 11"],"Grade 11")];function xA(e,t){return`${e.moduleDescription} ${vA}`}function SA(e,t){const n=t==="Grade 11"?"22 min":"18 min";return e.competencies.map((r,s)=>{const o=yA[r.code];return{id:o?.lessonId??`${e.id}-l${s+1}`,title:r.outcome,duration:n,completed:!1,locked:!1,description:`${r.code} · ${r.outcome}`,competencyCode:r.code,subjectId:e.subjectId,subject:e.subject,quarter:parseInt(e.quarter.replace("Q","")),learningCompetency:r.outcome,...o&&{storagePath:o.storagePath,sourceFile:o.sourceFile}}})}function kA(e){const t=[];let r=0;for(let s=0;si.code),type:r===Math.ceil(e.competencies.length/2)?"module":"practice"})}return t}function TA(e,t){return t.map((n,r)=>({id:`${e.id}-q${r+1}`,title:n.title,questions:Math.max(8,n.competencyCodes.length*5),duration:n.type==="module"?"22 min":"15 min",completed:!1,locked:r>0,type:n.type}))}function PA(e){const t=(e||"").trim();if(!t)return"Grade 11";const n=t.match(/(\d{1,2})/);if(n){const r=parseInt(n[1],10);return r>=11&&r<=12?`Grade ${r}`:"Grade 11"}if(/^grade\s*\d{1,2}$/i.test(t)){const r=parseInt(t.replace(/grade\s*/i,""),10);if(r>=11&&r<=12)return`Grade ${r}`}return"Grade 11"}function _A(e){if(!Array.isArray(e)||e.length===0)return null;const t=new Set(["gen-math","business-math","stats-prob"]),n=e.map(r=>r.trim().toLowerCase()).map(r=>r==="gen-math"||r==="general-mathematics"||r==="general mathematics"?"gen-math":r==="business-math"||r==="business mathematics"||r==="bm"?"business-math":r==="stats-prob"||r==="statistics and probability"||r==="statistics"?"stats-prob":null).filter(r=>r!==null&&t.has(r));return n.length>0?n:null}function EA(e){return PA(e)}function CA(e,t){const n=_A(t),r=bA[e];return n?r.filter(s=>n.includes(s)):r}function AA(e,t){const n=CA(e,t);return wA.filter(r=>r.grade_level_availability.includes(e)).filter(r=>n.includes(r.subjectId)).map(r=>{const s=kA(r),o=SA(r,e),i=TA(r,s),a=Ua[r.subjectId],c=o.some(d=>d.storagePath&&d.storagePath.length>0),u=r.isAvailable??c??!0;return{id:r.id,title:r.moduleTitle,description:xA(r),lessons:o,quizzes:i,progress:0,color:"bg-white",iconColor:"text-slate-700",accentColor:"bg-slate-700",subjectId:r.subjectId,subject:r.subject,subjectColor:a.color,subjectAccentColor:a.accent,grade_level_availability:r.grade_level_availability,recommended_grade_level:r.recommended_grade_level,active_grade_level:e,quarter:r.quarter,content_domain:r.contentDomain,competency_group:r.competencyGroup,competencies:r.competencies,performance_standard:r.performanceStandard,real_world_theme:r.realWorldTheme,lesson_count:o.length,quiz_count:i.length,is_visible_for_grade:r.grade_level_availability.includes(e),curriculum_aligned_label:"Curriculum-aligned",module_sources:r.sources,module_assessments:s,isAvailable:u}})}const KR=Ua,RA=()=>{const e=new Date,t=e.getMonth(),n=e.getFullYear();return t>=7?`${n}-${n+1}-1`:t>=5?`${n-1}-${n}-summer`:`${n-1}-${n}-2`},MA=async e=>{const{uid:t,score:n,subject:r,title:s}=e,o=r||s||"General";let i="";return await _p($,async a=>{const c=W($,"users",t,"gradeSummary","current"),u=await a.get(c);let d;if(!u.exists())d={overallGpa:n/100*4,averageScore:n,quizzesCompleted:1,subjectPerformance:{[o]:{totalScore:n,count:1,avgScore:n}},lastUpdated:On.now()};else{const m=u.data(),y=(m.quizzesCompleted||0)+1,v=((m.averageScore||0)*(m.quizzesCompleted||0)+n)/y,k=m.subjectPerformance||{},S=k[o]||{totalScore:0,count:0},x=S.count+1,T=S.totalScore+n,P=T/x;d={overallGpa:v/100*4,averageScore:v,quizzesCompleted:y,subjectPerformance:{...k,[o]:{totalScore:T,count:x,avgScore:P}},lastUpdated:On.now()}}a.set(c,d,{merge:!0});const l=Xe($,"users",t,"assessments"),f=W(l);i=f.id;const p={title:e.title,subject:o,type:e.type,score:e.score,totalQuestions:e.totalQuestions,completedAt:On.now(),risk:e.risk,intervention:e.intervention,xpEarned:e.xpEarned,badgeUnlocked:e.badgeUnlocked,semester:RA(),createdAt:ce()};a.set(f,p)}),i},QR=(e,t)=>{const n=W($,"users",e,"gradeSummary","current");return Jt(n,r=>{r.exists()?t(r.data()):t(null)})},XR=(e,t)=>{const n=Dt(Xe($,"users",e,"assessments"),vn("completedAt","desc"),Sr(20));return Jt(n,r=>{const s=[];r.forEach(o=>{s.push({id:o.id,...o.data()})}),t(s)})};function IA(e){const{assessmentId:t,overallScorePercent:n,overallRisk:r,intervention:s,proficiencyProfile:o}=e,i=OA(n),a=LA(n,r,o),c=zA(r,s),u=o?.strengths??[],d=o?.weaknesses??[];return{status:"ready",headline:i,summary:a,strengths:u,weaknesses:d,recommendation:c,latestAssessmentId:t,latestScorePercent:n,latestRiskLevel:gp(r),updatedAt:new Date}}async function DA(e,t){const n=W($,"users",e,"dashboardSummary","heroBannerModal");await Ne(n,{...t,updatedAt:ce()})}async function YR(e){const t=W($,"users",e,"dashboardSummary","heroBannerModal"),n=await we(t);if(!n.exists())return null;const r=n.data();return{status:r.status??"not_started",headline:r.headline??"",summary:r.summary??"",strengths:r.strengths??[],weaknesses:r.weaknesses??[],recommendation:r.recommendation??"",latestAssessmentId:r.latestAssessmentId??"",latestScorePercent:r.latestScorePercent??0,latestRiskLevel:r.latestRiskLevel??"",updatedAt:yp(r.updatedAt)}}function JR(e,t){const n=W($,"users",e,"dashboardSummary","heroBannerModal");return Jt(n,r=>{if(!r.exists()){t(null);return}const s=r.data();t({status:s.status??"not_started",headline:s.headline??"",summary:s.summary??"",strengths:s.strengths??[],weaknesses:s.weaknesses??[],recommendation:s.recommendation??"",latestAssessmentId:s.latestAssessmentId??"",latestScorePercent:s.latestScorePercent??0,latestRiskLevel:s.latestRiskLevel??"",updatedAt:yp(s.updatedAt)})},r=>{console.warn("[heroBannerSummaryService] Subscription error:",r),t(null)})}function OA(e){return e>=80?"Outstanding performance! 🎉":e>=65?"Good job — keep it up!":e>=50?"You're making progress!":"Let's build your foundation"}function LA(e,t,n){const r=n?.strengths??[],s=n?.weaknesses??[];if(r.length>0&&s.length>0){const o=r[0],i=s[0];return`You show stronger understanding in ${o}, while ${i} needs more attention. Keep practicing to strengthen your weaker areas!`}return r.length>0?"Great work! You demonstrated strong understanding. Focus on maintaining your performance and expanding your skills.":s.length>0?"You have some areas to work on. With guided practice and focused review, you can build a stronger foundation in the topics that need attention.":e>=70?"You performed well overall! You have a solid foundation. Continue practicing to maintain and expand your skills.":e>=50?"You showed understanding in several areas. Keep practicing and review the topics where you lost points.":"The diagnostic shows there are foundational topics to work on. Don't worry — with consistent practice, you'll build confidence and improve!"}function zA(e,t,n){return t&&t.trim().length>0?t:(gp(e),e==="critical"||e==="high"?"We recommend starting with foundational lessons and guided practice to build confidence. Focus on one topic at a time, and don't hesitate to review earlier material.":e==="moderate"?"Start with guided review lessons to strengthen your foundation, then progressively tackle more challenging problems.":"Continue practicing regularly and review topics you find challenging. Your personalized learning path will guide you to the right lessons.")}function gp(e){switch(e){case"low":return"Low";case"moderate":return"Moderate";case"high":return"High";case"critical":return"Critical";default:return e.charAt(0).toUpperCase()+e.slice(1)}}function yp(e){return e?e instanceof Date?e:e instanceof On?e.toDate():typeof e=="string"||typeof e=="number"?new Date(e):new Date:new Date}const jA=h.lazy(()=>oe(()=>import("./LoginPage-D-1Glnvg.js"),__vite__mapDeps([13,3,14,7,8,15,16,17,18,19,1,2,4,5,6,9,10]))),NA=h.lazy(()=>oe(()=>import("./TeacherDashboard-BwfdR72-.js"),__vite__mapDeps([20,3,14,7,8,15,21,22,23,24,1,2,4,5,6,9,10,25,26,27,28,29,30,31,32,16,33,34,35,36,18,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]))),$A=h.lazy(()=>oe(()=>import("./AdminDashboard-CIi7plOc.js"),__vite__mapDeps([57,3,58,33,24,35,7,22,44,43,40,59,21,14,8,23,1,2,4,5,6,9,10,60,38,26,15,48,46,28,29,30,31,32,16,25,53,42,19,52,18,17,27,45,47,54,61,62,63,36]))),Lu=h.lazy(()=>oe(()=>import("./Sidebar-BDEiqlEK.js").then(e=>e.a),__vite__mapDeps([58,3,33,24,35,7,22,44,43,40,59]))),FA=h.lazy(()=>oe(()=>import("./HeroBanner-CHubdhsr.js"),__vite__mapDeps([64,3,53,7,22,8,1,2,32,31,16,4,5,6,9,10]))),VA=h.lazy(()=>oe(()=>import("./RightSidebar-Bqzdu2TQ.js"),__vite__mapDeps([65,3,66,50,35,7,44,1,2,4,5,6,8,9,10]))),BA=h.lazy(()=>oe(()=>import("./XPNotification-jBp7lMXB.js"),__vite__mapDeps([67,3,16,1,2,4,5,6,7,8,9,10]))),UA=h.lazy(()=>oe(()=>import("./index-B2ktS_Ht.js"),__vite__mapDeps([68,3,32,69,30,50,56,29,23,22,1,2,4,5,6,7,8,9,10])).then(e=>({default:e.NotificationBell})));h.lazy(()=>oe(()=>import("./SupplementalBanner-D8_daQur.js"),__vite__mapDeps([70,3,22,16,44,1,2,4,5,6,7,8,9,10])));const qA=h.lazy(()=>oe(()=>import("./SupplementalPillCarousel-o-QfEIUf.js"),__vite__mapDeps([71,3,44,1,2,4,5,6,7,8,9,10]))),GA=h.lazy(()=>oe(()=>import("./LearningPath-vROmF4Dn.js"),__vite__mapDeps([72,3,73,63,1,2,52,4,5,6,7,8,9,10]))),WA=h.lazy(()=>oe(()=>import("./CompetencyRadarChart-jpfAisiB.js"),__vite__mapDeps([74,3,1,2,48,40,16,8,4,5,6,7,9,10])).then(e=>({default:e.CompetencyRadarChart}))),HA=h.lazy(()=>oe(()=>import("./ModulesPage-CGi0VHmG.js"),__vite__mapDeps([75,3,47,1,2,73,63,52,14,7,8,76,38,22,4,5,6,9,10,26,77,43,44,36,34,50,12,56,48,40,31,61,0,78,49,25,79,16]))),ZA=h.lazy(()=>oe(()=>import("./AIChatPage-BjyZWRE5.js"),__vite__mapDeps([80,3,14,7,8,15,51,9,10,1,2,4,5,6,27,25,23,43,37]))),KA=h.lazy(()=>oe(()=>import("./GradesPage-BX_8Snp_.js"),__vite__mapDeps([81,3,14,7,8,48,40,49,1,2,42,31,32,79,4,5,6,9,10]))),QA=h.lazy(()=>oe(()=>import("./LeaderboardPage-CZ8M4eNL.js"),__vite__mapDeps([82,3,22,52,83,1,2,4,5,6,7,8,9,10]))),XA=h.lazy(()=>oe(()=>import("./QuizBattlePage-Dsgg_cNb.js"),__vite__mapDeps([84,3,66,48,40,1,2,14,7,8,60,38,26,15,62,54,77,85,86,16,41,44,4,5,6,9,10]))),YA=h.lazy(()=>oe(()=>import("./AvatarShop-CpnsOARn.js"),__vite__mapDeps([87,3,7,83,1,2,35,85,86,45,16,59,4,5,6,8,9,10]))),JA=h.lazy(()=>oe(()=>import("./FloatingAITutor-DJ8KxCL3.js"),__vite__mapDeps([88,3,89,39,22,37,1,2,4,5,6,7,8,9,10]))),eR=h.lazy(()=>oe(()=>import("./RewardsModal-DHn4d03T.js"),__vite__mapDeps([90,3,1,2,22,4,5,6,7,8,9,10]))),qo=h.lazy(()=>oe(()=>import("./ProfileModal-Cqe9yb5X.js"),__vite__mapDeps([91,3,14,7,8,15,60,38,26,92,4,2,5,22,39,27,46,17,36,45,1,6,9,10]))),tR=h.lazy(()=>oe(()=>import("./ConfirmModal-BO62ig7W.js"),__vite__mapDeps([21,3,14,7,8,22,23,24,1,2,4,5,6,9,10]))),Go=h.lazy(()=>oe(()=>import("./SettingsModal-CKvK-HcP.js"),__vite__mapDeps([93,3,60,7,38,26,14,8,15,62,21,22,23,24,1,2,4,5,6,9,10,92,39,27,46,30,42,36,40,69,52,18]))),nR=h.lazy(()=>oe(()=>import("./ScientificCalculator-BQeFLSJX.js"),__vite__mapDeps([76,3,38,22,1,2,4,5,6,7,8,9,10]))),rR=h.lazy(()=>oe(()=>import("./InitialAssessmentModal-DkLM9iVL.js"),__vite__mapDeps([94,3,14,7,8,95,1,2,22,50,4,5,6,9,10]))),sR=h.lazy(()=>oe(()=>import("./AssessmentPage-BlVH5UUU.js"),__vite__mapDeps([96,3,14,7,8,95,89,22,52,50,44,1,2,4,5,6,9,10]))),oR=()=>{const{isLoggedIn:e,userProfile:t,userRole:n,loading:r,refreshProfile:s}=Rr();Vi();const o=jt(),i=b.jsx("div",{className:"flex min-h-[320px] items-center justify-center text-sm font-semibold text-slate-500",children:"Loading content..."}),a=b.jsx("div",{className:"pb-4 text-sm font-semibold text-slate-500",children:"Loading dashboard content..."}),c=b.jsx("div",{className:"h-11 w-11 shrink-0 rounded-xl bg-[#edf1f7]","aria-hidden":"true"}),u=b.jsx("div",{className:"h-screen w-72 border-r border-[#dde3eb] bg-white/70","aria-hidden":"true"}),d=b.jsx("div",{className:"min-h-[240px] rounded-3xl border border-[#dde3eb] bg-white/70","aria-hidden":"true"}),[l,f]=h.useState("Dashboard"),p=h.useRef(null),m=h.useRef(null),[y,g]=h.useState(!1),[v,k]=h.useState(!1),[S,x]=h.useState(!1),[T,P]=h.useState(!1);h.useEffect(()=>{(async()=>{try{const M=await we(W($,"settings","general"));M.exists()&&M.data()?.maintenanceMode===!0?(x(!0),e&&n!=="admin"&&await nu()):x(!1)}catch{}P(!0)})()},[e,n]);const _=t,[w,R]=h.useState(_?.level||1),[A,B]=h.useState(_?.currentXP||0),[F,H]=h.useState(_?.totalXP||0),re=Math.floor(100*Math.pow(1.5,w-1));let te=0;for(let C=1;C{const C=_?.learnerCurriculumAssignments?.subjects??_?.assignedSubjects??_?.curriculumAssignedSubjects??[];return Array.isArray(C)?C:[]},[_]),ue=h.useMemo(()=>AA(ie,se),[ie,se]),[D,he]=h.useState({collapsed:!1}),rt={Dashboard:"/",Modules:"/modules","AI Chat":"/chat",Assessment:"/assessment","Quiz Battle":"/battle",Leaderboard:"/leaderboard",Grades:"/grades","Avatar Studio":"/avatar"},X={"/":"Dashboard","/modules":"Modules","/chat":"AI Chat","/assessment":"Assessment","/battle":"Quiz Battle","/leaderboard":"Leaderboard","/grades":"Grades","/avatar":"Avatar Studio"};h.useEffect(()=>{const C=X[o.pathname]||"Dashboard";f(C)},[o.pathname]),h.useEffect(()=>{const C=()=>{const M=X[window.location.pathname]||"Dashboard";f(M)};return window.addEventListener("popstate",C),()=>window.removeEventListener("popstate",C)},[]);const U=(C,M)=>{M?Ir(M):C==="Modules"&&l!=="Modules"&&Ir(null),C==="Quiz Battle"&&l!=="Quiz Battle"?(he({collapsed:y}),g(!0)):l==="Quiz Battle"&&C!=="Quiz Battle"&&g(D.collapsed),f(C);const G=rt[C];G&&window.location.pathname!==G&&window.history.pushState({},"",G),k(!1)},[q,J]=h.useState(!1),[xe,ae]=h.useState({show:!1,xp:0,message:""}),[le,Z]=h.useState(!1),[O,ee]=h.useState(!1),[ye,K]=h.useState(!1),[Ye,Le]=h.useState(!1),[Je,an]=h.useState({}),[ht,Ir]=h.useState(null),[Dr,Ue]=h.useState(!1),[it,$t]=h.useState(gs),[Js,Ft]=h.useState(""),[cn,Hn]=h.useState(!1),[Tn,st]=h.useState(!1),[Ht,pt]=h.useState(null),[eo,Zn]=h.useState(!1),[Or,Kn]=h.useState(!1),[to,Qn]=h.useState(0),[at,Xn]=h.useState(!1),[Pn,Lr]=h.useState(""),[zr,Y]=h.useState([]),[pe,Pe]=h.useState(_?.atRiskSubjects||[]),[$e,Vt]=h.useState(_?.priorityTopics||[]),[Ce,qe]=h.useState(_?.gpa||"0.00");h.useEffect(()=>{e&&n==="student"&&t&&ZE(t.uid).then(C=>{if(C&&C.averageScore>0){const M=Math.min(C.averageScore/25,4).toFixed(2);qe(M)}}).catch(C=>console.error("Error loading progress for GPA:",C))},[e,n,t]);const[Tt,et]=h.useState(!1);h.useEffect(()=>{_&&n==="student"?(R(_.level||1),B(_.currentXP||0),H(_.totalXP||0),Pe(_.atRiskSubjects||[]),Vt(_.priorityTopics||[]),et(!0)):n!=="student"&&et(!0)},[t,n]),h.useEffect(()=>{if(!e||n!=="student"){Hn(!1);return}let C=!1;const M=()=>{C||Hn(!0)},G=window.requestIdleCallback,me=window.cancelIdleCallback,ao=window.setTimeout(M,800),co=window.requestAnimationFrame(()=>{G||M()}),mt=G?.(()=>{M()},{timeout:500});return()=>{C=!0,window.clearTimeout(ao),window.cancelAnimationFrame(co),mt!==void 0&&me&&me(mt)}},[e,n]),h.useEffect(()=>{an({})},[t?.uid]);const Ge=h.useMemo(()=>{const C=new Set;return pe.map(G=>mA(G)).filter(G=>G!==null).filter(G=>C.has(G)?!1:(C.add(G),!0))},[pe]),_n=h.useMemo(()=>{const C=$e.length>0?$e:Ge,M=new Set;return C.filter(G=>M.has(G)?!1:(M.add(G),!0))},[$e,Ge]),Bt=()=>{st(!0)};h.useEffect(()=>{const C=()=>st(!0);return window.addEventListener("mathpulse:open-assessment",C),()=>window.removeEventListener("mathpulse:open-assessment",C)},[]),h.useEffect(()=>{if(!e||n!=="student"||!Tt||!t?.uid)return;let C=!1;return(async()=>{try{Zn(!!_?.assessmentDismissed),Kn(!!_?.initialAssessmentCompleted);const G=await Wo(W($,"diagnosticResults",t.uid)).catch(()=>we(W($,"diagnosticResults",t.uid))),me=await Wo(W($,"competencyProfiles",t.uid)).catch(()=>we(W($,"competencyProfiles",t.uid)));if(C)return;const ao=G.exists()&&G.data()?.status==="completed",co=me.exists()&&me.data()?.overallScore>0;if(!ao&&!co){pt(!1);const mt=setTimeout(()=>{!C&&!eo&&!Or&&(sessionStorage.getItem("mathpulse_iar_session_dismissed")==="true"||st(!0))},1e3);return()=>clearTimeout(mt)}else{if(pt(!0),G.exists()){const mt=G.data();mt?.riskProfile&&(Pe(mt.riskProfile.weak_domains||[]),Vt(mt.riskProfile.critical_gaps||[]))}if(me.exists()){const mt=me.data();mt?.primaryWeakness&&Pe(Wa=>[...new Set([...Wa,mt.primaryWeakness])])}}}catch(G){console.error("[diagnostic] Firestore check failed:",G)}})(),()=>{C=!0}},[e,n,Tt,t?.uid,to]);const qa=[...pe].sort().join("|"),Yn=t?.uid?`mathpulse_supplemental_dismissed_${t.uid}`:null;h.useEffect(()=>{if(!Yn){Ft("");return}try{const C=localStorage.getItem(Yn)||"";Ft(C)}catch{Ft("")}},[Yn]);const vp=()=>{if(Ft(""),!!Yn)try{localStorage.removeItem(Yn)}catch{}};pe.length>0,h.useEffect(()=>{(async()=>{if(!t?.uid){$t(gs);return}try{const M=await Gh(t.uid);$t(M)}catch(M){console.error("Error loading user settings:",M),$t(gs)}})()},[t?.uid]),h.useEffect(()=>{eC(it)},[it]);const wp=(C,M)=>{st(!1),Lr(C),Y(M),Xn(!0)},Ga=async C=>{if(Xn(!1),pt(!0),f("Dashboard"),C.xpEarned>0&&t?.uid)try{await Do(t.uid,C.xpEarned,"manual","Diagnostic assessment completed"),ct.success(`Assessment complete! +${C.xpEarned} XP earned. ${C.badgeUnlocked.replace("_"," ")} badge unlocked!`)}catch{ct.success("Assessment complete!")}else ct.success("Assessment complete!");if(t?.uid&&C.competencyScores&&C.proficiencyProfile)try{await HE(t.uid,{uid:t.uid,assessmentId:`assessment-${Date.now()}`,completedAt:new Date,rawScore:C.overallScorePercent,totalQuestions:Object.values(C.competencyScores).reduce((M,G)=>M+G.attempted,0),correctAnswers:Object.values(C.competencyScores).reduce((M,G)=>M+G.correct,0),timeSpentSeconds:0,competencyScores:C.competencyScores,recommendations:C.proficiencyProfile.weaknesses.map(M=>`Focus on ${M}`),proficiencyProfile:C.proficiencyProfile,assessmentType:"initial"})}catch(M){console.error("[WARN] Failed to save competency profile:",M)}if(t?.uid)try{const M=IA({assessmentId:Pn?`assessment-${Pn}`:`assessment-${Date.now()}`,overallScorePercent:C.overallScorePercent,overallRisk:C.overallRisk,intervention:C.intervention,proficiencyProfile:C.proficiencyProfile});await DA(t.uid,M)}catch(M){console.error("[App] Failed to save hero banner summary:",M)}if(t?.uid){try{const M=await we(W($,"diagnosticResults",t.uid));if(M.exists()){const G=M.data();G?.riskProfile&&(Pe(G.riskProfile.weak_domains||[]),Vt(G.riskProfile.critical_gaps||[]))}vp()}catch(M){console.error("[diagnostic] Failed to refresh risk data:",M)}try{await kt(W($,"users",t.uid),{initialAssessmentCompleted:!0,assessmentDismissed:!1,assessmentCompletedAt:ce()}),await Do(t.uid,50,"initial_assessment","Initial assessment completed")}catch(M){console.error("[App] Failed to persist assessment completion:",M)}try{await MA({uid:t.uid,testId:Pn||"diagnostic",title:"Diagnostic Assessment",subject:"General Mathematics",type:"diagnostic",score:C.overallScorePercent,totalQuestions:Object.values(C.competencyScores||{}).reduce((M,G)=>M+G.attempted,0),risk:C.overallRisk,intervention:C.intervention,xpEarned:C.xpEarned,badgeUnlocked:C.badgeUnlocked})}catch(M){console.error("[App] Failed to persist grade result:",M)}}},xp=()=>{f("AI Chat")},Sp=async(C,M)=>{if(t)try{const G=await Do(t.uid,C,"manual",M);B(G.xp),G.leveledUp&&R(G.newLevel),H(me=>me+C),await s(),ae({show:!0,xp:C,message:M})}catch(G){console.error("Error awarding XP:",G)}},no=async()=>{try{await nu(),an({}),f("Dashboard"),Z(!1)}catch(C){console.error("Error logging out:",C)}},En=async C=>{if(!t){K(!1),ee(!1);return}const M={};["name","email","phone","photo","avatarLayers","gender","lrn","grade","section","school","enrollmentDate","major","gpa","department","subject","yearsOfExperience","qualification","position"].forEach(me=>{C[me]!==void 0&&(M[me]=C[me])});try{await OP(t.uid,M),an(me=>({...me,...M})),K(!1),ee(!1),ct.success("Profile updated successfully")}catch(me){console.error("Error saving profile:",me),ct.error("Failed to update profile")}},ro=async C=>{if(t?.uid)try{const M=await JE(t.uid,C);$t(M),ct.success("Settings saved successfully")}catch(M){throw console.error("Error saving settings:",M),ct.error("Failed to save settings"),M}},so=async()=>{if(!t?.uid)return;const C=await rC(t.uid),M=new Blob([JSON.stringify(C,null,2)],{type:"application/json"}),G=URL.createObjectURL(M),me=document.createElement("a");me.href=G,me.download=`mathpulse-data-export-${t.uid}-${Date.now()}.json`,document.body.appendChild(me),me.click(),document.body.removeChild(me),URL.revokeObjectURL(G),ct.success("Data export downloaded")},oo=async()=>{await nC(),ct.success("Local cache cleared")},io=async()=>{if(!t)throw new Error("No active profile found.");const C=n==="student"?_?.lrn||t.uid:void 0;n==="student"&&(await Ho(W($,"diagnosticResults",t.uid)).catch(()=>{}),await Ho(W($,"competencyProfiles",t.uid)).catch(()=>{}));const{resetTestingDataForRole:M}=await oe(async()=>{const{resetTestingDataForRole:me}=await import("./testResetService-BEUr-kie.js");return{resetTestingDataForRole:me}},__vite__mapDeps([97,1,2,3,4,5,6,7,8,9,10])),G=await M({uid:t.uid,role:n,lrn:C});n==="student"&&(R(1),B(0),H(0),Pe([]),Vt([]),pt(null),Zn(!1),Kn(!1),qe("0.00"),f("Dashboard"),s(),Qn(me=>me+1)),ct.success(G.summary)},We=t?{uid:t.uid,name:t.name,email:t.email,phone:t.phone||"",photo:t.photo||"",avatarLayers:t.avatarLayers,role:t.role,...n==="student"&&_?{lrn:_.lrn,grade:_.grade,section:_.section,school:_.school,enrollmentDate:_.enrollmentDate,major:_.major,gpa:Ce}:{},...Je}:{uid:void 0,name:"User",email:"",phone:"",photo:"",avatarLayers:void 0,role:n},jr=We.name.trim().split(/\s+/).find(C=>/\p{L}/u.test(C))||We.name.trim()||"User";if(h.useEffect(()=>{const C=M=>{if(!(M.target instanceof HTMLInputElement||M.target instanceof HTMLTextAreaElement)&&M.altKey)switch(M.key.toLowerCase()){case"d":M.preventDefault(),U("Dashboard");break;case"m":M.preventDefault(),U("Modules");break;case"c":M.preventDefault(),U("AI Chat");break;case"g":M.preventDefault(),U("Grades");break;case"b":M.preventDefault(),U("Quiz Battle");break;case"s":M.preventDefault(),ee(!0);break;case"p":M.preventDefault(),K(!0);break;case"k":M.preventDefault(),Le(G=>!G);break}};if(e&&n==="student")return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[e,n]),h.useEffect(()=>{const C=M=>{const G=M.detail;G?.tab&&e&&U(G.tab)};return window.addEventListener("mathpulse:navigate",C),()=>window.removeEventListener("mathpulse:navigate",C)},[e]),r)return b.jsx(tr,{});if(S&&(!e||n!=="admin"))return b.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gradient-to-br from-[#f8fafc] to-[#eef2ff] p-6",children:b.jsxs("div",{className:"bg-white rounded-2xl shadow-xl border border-slate-200 p-8 max-w-md w-full text-center",children:[b.jsx("div",{className:"w-16 h-16 rounded-full bg-amber-100 flex items-center justify-center mx-auto mb-5",children:b.jsx(ki,{className:"w-8 h-8 text-amber-600"})}),b.jsx("h1",{className:"text-xl font-bold text-[#1e293b] mb-2",children:"System Under Maintenance"}),b.jsx("p",{className:"text-sm text-[#64748b] leading-relaxed mb-4",children:"MathPulse AI is currently undergoing scheduled maintenance. All user sessions have been paused and your progress has been saved."}),b.jsx("p",{className:"text-xs text-[#94a3b8]",children:"Please check back shortly. We apologize for the inconvenience."})]})});if(!e)return b.jsx(h.Suspense,{fallback:b.jsx(tr,{message:"Loading sign in..."}),children:b.jsx(jA,{})});if(!(n!=="student"||Tt))return b.jsx(tr,{message:"Preparing your dashboard..."});if(n==="teacher")return b.jsx($o,{children:b.jsxs(b.Fragment,{children:[b.jsx(Bo,{}),b.jsx(h.Suspense,{fallback:b.jsx(tr,{message:"Loading teacher dashboard..."}),children:b.jsx(NA,{onLogout:no,onOpenProfile:()=>K(!0),onOpenSettings:()=>ee(!0)})}),ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(qo,{isOpen:ye,onClose:()=>K(!1),profileData:We,onSave:En})}),O&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(Go,{isOpen:O,onClose:()=>ee(!1),profileData:We,onSave:En,settingsData:it,onSaveSettings:ro,onApplySettingsPreview:$t,onExportData:so,onClearCache:oo,onResetData:io})}),b.jsx(Oo,{position:"top-right",richColors:!0,closeButton:!0})]})});if(n==="admin")return b.jsx($o,{children:b.jsxs(b.Fragment,{children:[b.jsx(Bo,{}),b.jsx(h.Suspense,{fallback:b.jsx(tr,{message:"Loading admin dashboard..."}),children:b.jsx($A,{onLogout:no,onOpenProfile:()=>K(!0),onOpenSettings:()=>ee(!0)})}),ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(qo,{isOpen:ye,onClose:()=>K(!1),profileData:We,onSave:En})}),O&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(Go,{isOpen:O,onClose:()=>ee(!1),profileData:We,onSave:En,settingsData:it,onSaveSettings:ro,onApplySettingsPreview:$t,onExportData:so,onClearCache:oo,onResetData:io})}),b.jsx(Oo,{position:"top-right",richColors:!0,closeButton:!0})]})});const kp=b.jsx($o,{children:b.jsxs(b.Fragment,{children:[b.jsx(Bo,{}),b.jsx($_,{children:b.jsxs("div",{className:"flex h-screen w-full bg-[#f8faff] overflow-hidden",children:[b.jsx("div",{className:"hidden lg:block",children:b.jsx(h.Suspense,{fallback:u,children:b.jsx(Lu,{activeTab:l,setActiveTab:U,userRole:n,onOpenSettings:()=>ee(!0),onLogout:()=>Z(!0),sidebarCollapsed:y,setSidebarCollapsed:g,forceCollapsed:l==="Quiz Battle"})})}),v&&b.jsxs(b.Fragment,{children:[b.jsx("button",{"aria-label":"Close navigation",className:"fixed inset-0 z-40 bg-slate-900/40 backdrop-blur-[1px] lg:hidden",onClick:()=>k(!1)}),b.jsx("div",{className:"fixed inset-y-0 left-0 z-50 p-3 lg:hidden",children:b.jsx(h.Suspense,{fallback:u,children:b.jsx(Lu,{mode:"mobile",onRequestClose:()=>k(!1),activeTab:l,setActiveTab:U,userRole:n,onOpenSettings:()=>{ee(!0),k(!1)},onLogout:()=>{Z(!0),k(!1)},sidebarCollapsed:!1})})})]}),b.jsxs("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 bg-gradient-to-br from-indigo-200 via-fuchsia-50 to-orange-100 relative z-10 shadow-[rgba(124,58,237,0.05)_0px_0px_30px_inset]",children:[b.jsx("div",{className:"absolute inset-0 bg-math-pattern opacity-30 pointer-events-none mix-blend-multiply z-0"}),b.jsxs("header",{className:"bg-white/90 backdrop-blur-md border-b border-[#dde3eb] px-3 sm:px-6 py-2 sm:py-3 flex flex-row items-center justify-between gap-2 sm:gap-3 sticky top-0 z-30 shadow-sm",children:[b.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[b.jsx("button",{className:"lg:hidden p-2 rounded-xl bg-[#edf1f7] hover:bg-[#dde3eb] text-[#5a6578] hover:text-primary transition-colors",onClick:()=>k(!0),"aria-label":"Open navigation",children:b.jsx(Ox,{size:20})}),b.jsxs("div",{className:"min-w-0",children:[b.jsx("h1",{className:"text-base sm:text-xl font-display font-bold text-[#0a1628] leading-tight truncate",children:l==="Grades"?"Assessment":l==="Leaderboard"?"Leadership Board":l}),b.jsxs("p",{className:"hidden sm:block text-xs text-[#5a6578] font-body truncate",children:["Welcome back, ",We.name.split(" ")[0],"!"]})]}),b.jsxs("div",{className:"hidden md:flex items-center gap-2 ml-2",children:[b.jsxs("button",{onClick:()=>J(!0),className:"flex items-center gap-1.5 px-3 py-1.5 bg-rose-50 hover:bg-rose-100 border border-rose-200/60 rounded-lg transition-colors cursor-pointer group",title:"View Rewards & Progress",children:[b.jsx(ps,{className:"h-3.5 w-3.5 text-rose-500","aria-hidden":"true"}),b.jsxs("span",{className:"text-xs font-display font-bold text-rose-700",children:["Lv ",w]})]}),b.jsxs("button",{onClick:()=>J(!0),className:"flex items-center gap-2 px-3 py-1.5 bg-violet-50 hover:bg-violet-100 border border-violet-200/60 rounded-lg transition-colors cursor-pointer w-[180px] xl:w-[200px] justify-between",title:`${V}/${re} XP to next level`,children:[b.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[b.jsx(Ti,{className:"h-3.5 w-3.5 text-violet-500","aria-hidden":"true"}),b.jsxs("span",{className:"text-xs font-display font-bold text-violet-700 whitespace-nowrap",children:[A," XP"]})]}),b.jsx("div",{className:"h-1.5 flex-1 min-w-0 bg-violet-100 rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full bg-violet-500 rounded-full transition-all e-w",style:{"--w":`${Math.max(0,Math.min(100,V/re*100))}%`}})})]}),b.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-orange-50 border border-orange-200/60 rounded-lg",children:[b.jsx(ms,{className:"h-3.5 w-3.5 text-orange-500","aria-hidden":"true"}),b.jsx("span",{className:"text-xs font-display font-bold text-orange-700",children:"Daily Rewards"})]})]})]}),b.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 shrink-0",children:[b.jsx("button",{onClick:()=>Le(C=>!C),className:"p-3 rounded-xl bg-[#edf1f7] hover:bg-[#dde3eb] text-[#5a6578] hover:text-primary transition-all group",title:"Scientific Calculator (Alt+K)",children:b.jsx(bx,{size:20,className:"group-hover:scale-110 transition-transform"})}),b.jsx(h.Suspense,{fallback:c,children:b.jsx(UA,{})}),b.jsxs("button",{onClick:()=>K(!0),className:"flex items-center gap-2.5 h-11 shrink-0 bg-[#edf1f7] hover:bg-[#dde3eb] p-1.5 pr-3 rounded-lg cursor-pointer transition-all group","aria-label":`Profile: ${We.name}`,children:[b.jsx(hA,{src:We.photo,name:We.name,className:"w-8 h-8 rounded-lg"}),b.jsx("div",{className:"hidden sm:block text-left min-w-0 flex-1",children:b.jsx("p",{className:"text-sm font-semibold text-[#0a1628] leading-none group-hover:text-primary transition-colors font-body truncate",children:jr})})]})]})]}),b.jsx("main",{ref:m,className:`flex-1 min-h-0 ${l==="AI Chat"||l==="Modules"?"overflow-hidden p-0":"p-3 lg:p-4 overflow-y-auto pb-24 sm:pb-28"}`,children:b.jsx(Ff,{mode:"wait",children:b.jsx(Ln.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25,ease:[.22,1,.36,1]},className:l==="AI Chat"||l==="Modules"?"h-full min-h-0":"",children:l==="Dashboard"?b.jsx("div",{className:"px-4 sm:px-6 xl:px-10 py-6 sm:py-8",children:b.jsxs("div",{className:"grid grid-cols-12 gap-6 sm:gap-8 lg:gap-10",children:[b.jsxs("div",{className:"col-span-12 xl:col-span-9 flex flex-col gap-10 lg:gap-14 pt-0",children:[b.jsx(h.Suspense,{fallback:d,children:b.jsx(FA,{userName:jr,userLevel:w,avatarLayers:We.avatarLayers,onContinueLearning:()=>U("Modules"),showAssessmentTooltip:!Ht&&Ht!==null,onOpenAssessment:Bt,studentId:t?.uid,assessmentCompleted:Ht===!0})}),cn&&Ht&&Ge.length>0&&b.jsxs("div",{className:"rounded-2xl border border-amber-300 bg-amber-50 px-5 py-4 shadow-sm dark:border-amber-400/40 dark:bg-amber-400/10",children:[b.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[b.jsxs("div",{children:[b.jsxs("p",{className:"inline-flex items-center gap-2 text-sm font-black text-amber-900 dark:text-amber-200",children:[b.jsx(ki,{className:"h-4 w-4"}),"Assessment Focus Review"]}),b.jsx("p",{className:"mt-1 text-sm text-amber-900/85 dark:text-amber-100/90",children:"Your latest diagnostic flagged these topics for review. Modules are prioritized based on this focus order."})]}),b.jsxs("button",{type:"button",onClick:()=>U("Modules"),className:"inline-flex items-center gap-1.5 rounded-xl bg-amber-600 px-3 py-2 text-xs font-bold text-white transition-colors hover:bg-amber-700",children:["Open Modules",b.jsx(ux,{className:"h-3.5 w-3.5"})]})]}),b.jsx("div",{className:"mt-3 flex flex-wrap gap-2",children:_n.map((C,M)=>b.jsxs("span",{className:"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-amber-900 shadow-sm dark:bg-amber-100/20 dark:text-amber-100",children:[M+1,". ",pA[C]]},C))})]}),cn&&pe.length>0&&b.jsx(h.Suspense,{fallback:a,children:b.jsx(qA,{atRiskSubjects:pe,onTopicClick:C=>{U("Modules")}})}),Tt&&cn&&b.jsx(h.Suspense,{fallback:a,children:b.jsx("div",{className:"pb-4",children:b.jsx(GA,{modules:ue,onNavigateToModules:C=>U("Modules",C),atRiskSubjects:pe,priorityTopics:_n})})}),Tt&&cn&&b.jsx(h.Suspense,{fallback:a,children:b.jsx("div",{className:"pb-4",children:b.jsx(WA,{})})})]}),b.jsx("div",{className:"col-span-12 xl:col-span-3 pt-2",children:cn?b.jsx(h.Suspense,{fallback:d,children:b.jsx(VA,{currentUserId:t?.uid||"",onOpenRewards:()=>J(!0),onOpenLeaderboard:()=>f("Leaderboard"),onNavigateToModules:()=>f("Modules"),onNavigateToQuizBattle:()=>U("Quiz Battle"),userLevel:w,userPhoto:We.photo,currentXP:V,xpToNextLevel:re,overallXP:A,userName:jr})}):d})]})}):l==="Modules"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(HA,{onEarnXP:Sp,atRiskSubjects:pe,priorityTopics:_n,initialModuleId:ht,isInQuizMode:Dr,setIsInQuizMode:Ue,hasCompletedDiagnostic:Ht??!1})}):l==="Leaderboard"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(QA,{currentUserPhoto:We.photo})}):l==="Quiz Battle"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(XA,{})}):l==="AI Chat"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(ZA,{})}):l==="Grades"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(KA,{})}):l==="Avatar Studio"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(YA,{onSaveProfile:C=>{an(M=>({...M,avatarLayers:C}))},onNavigateToModules:()=>U("Modules")})}):b.jsxs("div",{className:"flex-1 flex items-center justify-center text-[#a8a5b3] font-medium font-body",children:[l," Content Coming Soon"]})},l)})}),l!=="AI Chat"&&!Dr&&b.jsx(h.Suspense,{fallback:null,children:b.jsx("div",{className:"fixed bottom-4 right-4 sm:bottom-8 sm:right-8 z-50",children:b.jsx(JA,{constraintsRef:p,onFullScreen:xp})})}),b.jsx(h.Suspense,{fallback:null,children:b.jsx(BA,{xp:xe.xp,message:xe.message,show:xe.show,onComplete:()=>ae(C=>({...C,show:!1}))})}),q&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(eR,{isOpen:q,onClose:()=>J(!1),userLevel:w,currentXP:A,xpToNextLevel:re,totalXP:F,userId:t?.uid||""})}),ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(qo,{isOpen:ye,onClose:()=>K(!1),profileData:We,onSave:En})}),le&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(tR,{isOpen:le,onClose:()=>Z(!1),onConfirm:no,title:"Confirm Logout",message:"Are you sure you want to log out? Your progress is saved automatically.",confirmText:"Logout",cancelText:"Stay",type:"warning",icon:"logout"})}),O&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(Go,{isOpen:O,onClose:()=>ee(!1),profileData:We,onSave:En,settingsData:it,onSaveSettings:ro,onApplySettingsPreview:$t,onExportData:so,onClearCache:oo,onResetData:io})}),Ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(nR,{isOpen:Ye,onClose:()=>Le(!1)})}),Tn&&!at&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(rR,{isOpen:Tn&&!at,onClose:()=>st(!1),onDismiss:()=>{st(!1),Zn(!0)},userId:t?.uid||"",strand:_?.major||"STEM",gradeLevel:_?.grade||"Grade 11",onAssessmentStart:wp,onAssessmentComplete:Ga})}),at&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(sR,{testId:Pn,questions:zr,userName:jr,onComplete:Ga,onCancel:()=>{Xn(!1),f("Dashboard")}})})]})]})}),b.jsx(Oo,{position:"top-right",richColors:!0,closeButton:!0})]})});return b.jsx(zP,{children:kp})},ns="mathpulse_chunk_reload_attempted",iR=[/Failed to fetch dynamically imported module/i,/Loading chunk \d+ failed/i,/Importing a module script failed/i,/error loading dynamically imported module/i];function zu(e){return e?.message?iR.some(t=>t.test(e.message)):!1}class aR extends h.Component{constructor(t){super(t),this.state={hasError:!1,error:null}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){if(console.error("[ErrorBoundary] Caught render error:",t.message,n.componentStack),zu(t))try{sessionStorage.getItem(ns)||(sessionStorage.setItem(ns,String(Date.now())),console.warn("[ErrorBoundary] Stale chunk detected — reloading to recover."),window.location.reload())}catch{}}handleReset=()=>{try{sessionStorage.removeItem(ns)}catch{}this.setState({hasError:!1,error:null})};render(){if(this.state.hasError){if(zu(this.state.error)){let t=!1;try{t=!!sessionStorage.getItem(ns)}catch{}if(!t)return null}return this.props.fallback?this.props.fallback:b.jsx("div",{className:"flex min-h-screen flex-col items-center justify-center bg-slate-50 p-8 text-center",children:b.jsxs("div",{className:"max-w-md rounded-xl border border-slate-200 bg-white p-8 shadow-sm",children:[b.jsx("h2",{className:"mb-2 text-xl font-semibold text-slate-900",children:"Something went wrong"}),b.jsx("p",{className:"mb-6 text-sm text-slate-600",children:"The application encountered an unexpected error. Please try refreshing the page."}),this.state.error&&b.jsx("pre",{className:"mb-6 max-h-24 overflow-auto rounded bg-red-50 p-3 text-left text-xs text-red-700",children:this.state.error.message}),b.jsx("button",{onClick:this.handleReset,className:"rounded-lg bg-blue-600 px-6 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700",children:"Try again"}),b.jsx("button",{onClick:()=>window.location.reload(),className:"ml-3 rounded-lg border border-slate-300 bg-white px-6 py-2 text-sm font-medium text-slate-700 transition-colors hover:bg-slate-50",children:"Refresh page"})]})})}return this.props.children}}tC();try{sessionStorage.removeItem("mathpulse_chunk_reload_attempted")}catch{}typeof window<"u"&&(window.addEventListener("error",e=>{console.error("[global] Uncaught error:",e.error?.message??e.message)}),window.addEventListener("unhandledrejection",e=>{console.error("[global] Unhandled promise rejection:",e.reason?.message??e.reason),e.preventDefault()}));{const e=(...t)=>{};console.log=e,console.info=e,console.debug=e}const bp=document.getElementById("root");if(!bp)throw new Error("Root element not found");Pp.createRoot(bp).render(b.jsx(aR,{children:b.jsx(Kg,{children:b.jsx(Am,{client:Li,children:b.jsx(LP,{children:b.jsx(oR,{})})})})}));export{Px as $,Rl as A,gx as B,bx as C,WR as D,zl as E,Ml as F,Il as G,tr as H,px as I,hA as J,VE as K,Ix as L,Ox as M,be as N,bn as O,Ls as P,lA as Q,zx as R,Dl as S,Ll as T,Xx as U,Du as V,uA as W,ms as X,wR as Y,Ti as Z,oe as _,Ao as a,VR as a$,Gr as a0,JR as a1,YR as a2,RR as a3,ps as a4,$x as a5,$o as a6,Xh as a7,iC as a8,mA as a9,km as aA,dm as aB,Ze as aC,vR as aD,CR as aE,QR as aF,XR as aG,BE as aH,MR as aI,AR as aJ,sS as aK,eh as aL,IR as aM,OP as aN,F_ as aO,Cx as aP,xx as aQ,Vx as aR,kR as aS,ku as aT,Tu as aU,qR as aV,GR as aW,sC as aX,oC as aY,gs as aZ,BR as a_,ZR as aa,LR as ab,NR as ac,jR as ad,zR as ae,FR as af,$R as ag,Do as ah,DR as ai,EA as aj,AA as ak,OR as al,KR as am,_E as an,pA as ao,js as ap,mm as aq,cm as ar,bR as as,Ko as at,wt as au,Vu as av,im as aw,am as ax,Zo as ay,Nu as az,ux as b,UR as b0,nS as b1,zt as b2,Ys as b3,t_ as b4,SR as b5,WE as b6,HR as b7,PR as c,_R as d,fe as e,Qh as f,$ as g,Ff as h,jl as i,ct as j,$E as k,bt as l,Ln as m,mn as n,It as o,Rx as p,Ol as q,dA as r,TR as s,Kh as t,Rr as u,N as v,ER as w,ki as x,ZE as y,Kx as z}; +`);if(!F){w=T(k);continue}if(A==="chunk"){let H=F;try{const re=JSON.parse(F);typeof re?.chunk=="string"&&(H=re.chunk)}catch{}H&&(S+=H,n(H),f())}else if(A==="error"){let H="Streaming failed on server.";try{const re=JSON.parse(F);typeof re?.detail=="string"&&re.detail.trim()&&(H=re.detail)}catch{F.trim()&&(H=F.trim())}throw new Error(H)}w=T(k)}}if(x)return{response:S};throw new Error("Stream closed before end event.")}catch(g){throw a==="idle"?new bn("/api/chat/stream",vu):a==="total"?new bn("/api/chat/stream",jo):g instanceof DOMException&&g.name==="AbortError"?new bn("/api/chat/stream",jo):g}finally{if(l(),y)try{await y.cancel()}catch{}}}return await N("/api/chat",{method:"POST",body:JSON.stringify(s)},EE)},async chatSafe(e,t,n){return nr(()=>bt.chat(e,t,void 0,n),ME,"chat")},async predictRisk(e){ke("/api/predict-risk",{engagementScore:e.engagementScore,avgQuizScore:e.avgQuizScore,attendance:e.attendance,assignmentCompletion:e.assignmentCompletion}),Re("/api/predict-risk","engagementScore",e.engagementScore,0,100),Re("/api/predict-risk","avgQuizScore",e.avgQuizScore,0,100),Re("/api/predict-risk","attendance",e.attendance,0,100),Re("/api/predict-risk","assignmentCompletion",e.assignmentCompletion,0,100);const t=await N("/api/predict-risk",{method:"POST",body:JSON.stringify(e)});if(!zE(t))throw je("/api/predict-risk","POST","Invalid response shape",t),new Error("Invalid risk prediction response from server");return t},async predictRiskSafe(e){return nr(()=>bt.predictRisk(e),IE,"predictRisk")},async predictRiskBatch(e){if(!Array.isArray(e)||e.length===0)throw new ze("/api/predict-risk/batch","students array must not be empty");return N("/api/predict-risk/batch",{method:"POST",body:JSON.stringify({students:e})})},async getLearningPath(e){if(ke("/api/learning-path",{weaknesses:e.weaknesses,gradeLevel:e.gradeLevel}),!Array.isArray(e.weaknesses)||e.weaknesses.length===0)throw new ze("/api/learning-path","weaknesses must be a non-empty array");return N("/api/learning-path",{method:"POST",body:JSON.stringify(e)},Xt)},async getLearningPathSafe(e){return nr(()=>bt.getLearningPath(e),DE,"getLearningPath")},async getDailyInsight(e,t){if(!Array.isArray(e.students)||e.students.length===0)throw new ze("/api/analytics/daily-insight","students array must not be empty");return N("/api/analytics/daily-insight",{method:"POST",body:JSON.stringify(e),signal:t?.signal},Xt)},async getDailyInsightSafe(e){return nr(()=>bt.getDailyInsight(e),OE,"getDailyInsight")},async getImportedClassOverview(e){if(!e?.forceRefresh&&!No&&Date.now()!s||s.size===0))throw new ze("/api/upload/class-records","All files must be non-empty");if(n.some(s=>s.size>10*1024*1024))throw new ze("/api/upload/class-records","One or more files exceed the 10 MB size limit");const r=new FormData;return n.forEach(s=>r.append("files",s)),t?.classSectionId&&r.append("classSectionId",t.classSectionId),t?.className&&r.append("className",t.className),r.append("datasetIntent",t?.datasetIntent??"synthetic_student_records"),N("/api/upload/class-records",{method:"POST",body:r},rr)},async downloadClassRecordTemplate(e){const t=new URLSearchParams;e?.quarter&&t.set("quarter",e.quarter),e?.school_year&&t.set("school_year",e.school_year),e?.subject&&t.set("subject",e.subject);const n=t.toString();return xu(`/api/templates/class-records${n?`?${n}`:""}`,{method:"GET"},3e4)},async uploadClassRecordTemplate(e,t){if(!e||e.size===0)throw new ze("/api/class-records/upload","File must be non-empty");if(e.size>10*1024*1024)throw new ze("/api/class-records/upload","File exceeds the 10 MB size limit");const n=new FormData;return n.append("file",e),t?.subject&&n.append("subject",t.subject),t?.quarter&&n.append("quarter",t.quarter),t?.gradeLevel&&n.append("gradeLevel",t.gradeLevel),N("/api/class-records/upload",{method:"POST",body:n},rr)},async previewStudentAccountImport(e,t){if(!e||e.size===0)throw new ze("/api/import/student-accounts/preview","A non-empty file is required");if(e.size>10*1024*1024)throw new ze("/api/import/student-accounts/preview","File exceeds 10 MB size limit");const n=new FormData;return n.append("file",e),t?.classSectionId&&n.append("classSectionId",t.classSectionId),t?.className&&n.append("className",t.className),t?.defaultGrade&&n.append("defaultGrade",t.defaultGrade),t?.defaultSection&&n.append("defaultSection",t.defaultSection),N("/api/import/student-accounts/preview",{method:"POST",body:n},rr)},async commitStudentAccountImport(e){return ke("/api/import/student-accounts/commit",{previewToken:e.previewToken}),N("/api/import/student-accounts/commit",{method:"POST",body:JSON.stringify(e)},Et)},async createStudentAccount(e){ke("/api/teacher/create-student-account",{name:e.name,email:e.email,temporaryPassword:e.temporaryPassword,adviserTeacherId:e.adviserTeacherId});const t={name:e.name,email:e.email,temporary_password:e.temporaryPassword,lrn:e.lrn??null,grade:e.grade??null,section:e.section??null,class_section_id:e.classSectionId??null,adviser_teacher_id:e.adviserTeacherId,adviser_teacher_name:e.adviserTeacherName??null,school_year:e.schoolYear??null};return N("/api/teacher/create-student-account",{method:"POST",body:JSON.stringify(t)},Et)},async getAdminUsers(e){const t=e?.page??1,n=e?.pageSize??25;Re("/api/admin/users","page",t,1,1e4),Re("/api/admin/users","pageSize",n,1,200);const r=new URLSearchParams;return r.set("page",String(t)),r.set("pageSize",String(n)),e?.search?.trim()&&r.set("search",e.search.trim()),e?.role?.trim()&&r.set("role",e.role.trim()),e?.status?.trim()&&r.set("status",e.status.trim()),e?.grade?.trim()&&r.set("grade",e.grade.trim()),e?.section?.trim()&&r.set("section",e.section.trim()),e?.classSectionId?.trim()&&r.set("classSectionId",e.classSectionId.trim()),N(`/api/admin/users?${r.toString()}`,{method:"GET"},CE)},async updateAdminUser(e,t){const n=e.trim();ke("/api/admin/users",{uid:n});const r=new URLSearchParams;return r.set("uid",n),N(`/api/admin/users?${r.toString()}`,{method:"POST",body:JSON.stringify(t)},Et)},async bulkAdminUsers(e){return ke("/api/admin/users/bulk-action",{action:e.action}),N("/api/admin/users/bulk-action",{method:"POST",body:JSON.stringify(e)},Et)},async createAdminUser(e){if(ke("/api/admin/users",{name:e.name,email:e.email,password:e.password,confirmPassword:e.confirmPassword,role:e.role,status:e.status,grade:e.grade,section:e.section}),e.role.trim().toLowerCase()==="student"&&!e.lrn?.trim())throw new ze("/api/admin/users","lrn is required for student accounts");return N("/api/admin/users",{method:"POST",body:JSON.stringify(e)},Et)},async deleteAdminUser(e){const t=e.trim();ke("/api/admin/users",{uid:t});const n=new URLSearchParams;return n.set("uid",t),N(`/api/admin/users?${n.toString()}`,{method:"DELETE"},Et)},async getRiskRefreshMonitor(e){const t=e?.limit??10;Re("/api/upload/class-records/risk-refresh/recent","limit",t,1,50);const n=new URLSearchParams;return n.set("limit",String(t)),e?.classSectionId&&n.set("classSectionId",e.classSectionId),N(`/api/upload/class-records/risk-refresh/recent?${n.toString()}`)},async getImportGroundedTelemetrySummary(e){const t=e?.days??7,n=e?.limit??5e3;Re("/api/feedback/import-grounded/summary","days",t,1,30),Re("/api/feedback/import-grounded/summary","limit",n,100,2e4);const r=new URLSearchParams;return r.set("days",String(t)),r.set("limit",String(n)),e?.classSectionId&&r.set("classSectionId",e.classSectionId),N(`/api/feedback/import-grounded/summary?${r.toString()}`)},async getImportGroundedAccessAudit(e){const t=e?.days??7,n=e?.limit??200;Re("/api/import-grounded/access-audit","days",t,1,30),Re("/api/import-grounded/access-audit","limit",n,1,1e3);const r=new URLSearchParams;return r.set("days",String(t)),r.set("limit",String(n)),r.set("export","json"),e?.classSectionId&&r.set("classSectionId",e.classSectionId),N(`/api/import-grounded/access-audit?${r.toString()}`)},async exportImportGroundedAccessAuditCsv(e){const t=e?.days??7,n=e?.limit??200;Re("/api/import-grounded/access-audit","days",t,1,30),Re("/api/import-grounded/access-audit","limit",n,1,1e3);const r=new URLSearchParams;return r.set("days",String(t)),r.set("limit",String(n)),r.set("export","csv"),e?.classSectionId&&r.set("classSectionId",e.classSectionId),xu(`/api/import-grounded/access-audit?${r.toString()}`,{method:"GET"},3e4)},async uploadCourseMaterials(e,t){const n=Array.isArray(e)?e:[e];if(n.length===0)throw new ze("/api/upload/course-materials","At least one file is required");if(n.some(s=>!s||s.size===0))throw new ze("/api/upload/course-materials","All files must be non-empty");if(n.some(s=>s.size>10*1024*1024))throw new ze("/api/upload/course-materials","One or more files exceed the 10 MB size limit");const r=new FormData;return n.forEach(s=>r.append("files",s)),t?.classSectionId&&r.append("classSectionId",t.classSectionId),t?.className&&r.append("className",t.className),N("/api/upload/course-materials",{method:"POST",body:r},rr)},async uploadTeacherMaterial(e,t){const n=new FormData;return n.append("file",e),t?.teacherId&&n.append("teacherId",t.teacherId),t?.classId&&n.append("classId",t.classId),t?.gradeLevel&&n.append("gradeLevel",t.gradeLevel),t?.subject&&n.append("subject",t.subject),t?.quarter&&n.append("quarter",t.quarter),t?.strandOrTrack&&n.append("strandOrTrack",t.strandOrTrack),N("/api/teacher-materials/upload",{method:"POST",body:n},rr)},async getRecentCourseMaterials(e){const t=e?.limit??10;Re("/api/upload/course-materials/recent","limit",t,1,50);const n=new URLSearchParams;return n.set("limit",String(t)),e?.classSectionId&&n.set("classSectionId",e.classSectionId),N(`/api/upload/course-materials/recent?${n.toString()}`)},async getCourseMaterialTopics(e){const t=e?.limit??20;Re("/api/course-materials/topics","limit",t,1,50);const n=new URLSearchParams;return n.set("limit",String(t)),e?.classSectionId&&n.set("classSectionId",e.classSectionId),e?.materialId&&n.set("materialId",e.materialId),N(`/api/course-materials/topics?${n.toString()}`)},async generateLessonPlan(e){ke("/api/lesson/generate",{gradeLevel:e.gradeLevel});const t={...e,preferImportedTopics:gu&&(e.preferImportedTopics??!0)};if(bu){const n=await bt.submitLessonPlanAsync(t),s=(await bt.waitForTaskResult(n.taskId,{timeoutMs:24e4,pollIntervalMs:1500})).result;if(!s||typeof s!="object")throw new Error("Lesson generation completed without a valid result payload.");return s}return N("/api/lesson/generate",{method:"POST",body:JSON.stringify(t)},Xt)},async generateQuiz(e,t){if(ke("/api/quiz/generate",{topics:e.topics,gradeLevel:e.gradeLevel}),!Array.isArray(e.topics)||e.topics.length===0)throw new ze("/api/quiz/generate","topics must be a non-empty array");const n={...e,preferImportedTopics:zo&&(e.preferImportedTopics??!0)};if(bu){const s=await bt.submitQuizAsync(n);t?.onTaskCreated?.(s.taskId);const i=(await bt.waitForTaskResult(s.taskId,{timeoutMs:24e4,pollIntervalMs:1500,onProgress:t?.onProgress})).result;if(!i||typeof i!="object")throw new Error("Quiz generation completed without a valid result payload.");if(!Su(i))throw new Error("Invalid quiz generation response from async task payload.");return i}const r=await N("/api/quiz/generate",{method:"POST",body:JSON.stringify(n)},Xt);if(!Su(r))throw je("/api/quiz/generate","POST","Invalid response shape",r),new Error("Invalid quiz generation response from server");return r},async previewQuiz(e){ke("/api/quiz/preview",{topics:e.topics,gradeLevel:e.gradeLevel});const t={...e,preferImportedTopics:zo&&(e.preferImportedTopics??!0)};return N("/api/quiz/preview",{method:"POST",body:JSON.stringify(t)},Xt)},async submitLessonPlanAsync(e){return N("/api/lesson/generate-async",{method:"POST",body:JSON.stringify(e)},Xt)},async submitQuizAsync(e){return N("/api/quiz/generate-async",{method:"POST",body:JSON.stringify(e)},Xt)},async getTaskStatus(e){return ke("/api/tasks/{taskId}",{taskId:e}),N(`/api/tasks/${encodeURIComponent(e)}`)},async listTasks(e){const t=new URLSearchParams;e?.limit!=null&&(Re("/api/tasks","limit",e.limit,1,200),t.set("limit",String(e.limit))),e?.status&&t.set("status",e.status),e?.includeResults!=null&&t.set("include_results",String(e.includeResults));const n=t.toString();return N(`/api/tasks${n?`?${n}`:""}`)},async cancelTask(e){return ke("/api/tasks/{taskId}/cancel",{taskId:e}),N(`/api/tasks/${encodeURIComponent(e)}/cancel`,{method:"POST"})},async waitForTaskResult(e,t){const n=t?.timeoutMs??18e4,r=t?.pollIntervalMs??1500,s=Date.now();for(;Date.now()-s<=n;){const o=await bt.getTaskStatus(e);if(t?.onProgress?.(o),o.status==="completed")return o;if(o.status==="failed"||o.status==="cancelled")throw new Error(NE(o.error));await jE(r)}throw new Error(`Async generation task timed out after ${Math.round(n/1e3)} seconds.`)},async getQuizTopics(e){const t=e?`?gradeLevel=${encodeURIComponent(e)}`:"";return N(`/api/quiz/topics${t}`)},async getStudentCompetency(e,t){return ke("/api/quiz/student-competency",{studentId:e}),N("/api/quiz/student-competency",{method:"POST",body:JSON.stringify({studentId:e,quizHistory:t})})},async evaluateExpression(e){return ke("/api/calculator/evaluate",{expression:e}),N("/api/calculator/evaluate",{method:"POST",body:JSON.stringify({expression:e})})},async evaluateExpressionSafe(e){return nr(()=>bt.evaluateExpression(e),{...LE,expression:e},"evaluateExpression")},async automationDiagnosticCompleted(e){return ke("/api/automation/diagnostic-completed",{lrn:e.lrn,results:e.results}),N("/api/automation/diagnostic-completed",{method:"POST",body:JSON.stringify(e)})},async automationQuizSubmitted(e){return ke("/api/automation/quiz-submitted",{lrn:e.lrn,quizId:e.quizId,subject:e.subject}),N("/api/automation/quiz-submitted",{method:"POST",body:JSON.stringify(e)})},async automationStudentEnrolled(e){return ke("/api/automation/student-enrolled",{lrn:e.lrn,name:e.name,email:e.email}),N("/api/automation/student-enrolled",{method:"POST",body:JSON.stringify(e)})},async automationDataImported(e){return ke("/api/automation/data-imported",{teacherId:e.teacherId,students:e.students}),N("/api/automation/data-imported",{method:"POST",body:JSON.stringify(e)})},async automationContentUpdated(e){return ke("/api/automation/content-updated",{adminId:e.adminId,action:e.action,contentType:e.contentType,contentId:e.contentId}),N("/api/automation/content-updated",{method:"POST",body:JSON.stringify(e)})},getInferenceMetrics:async()=>N("/api/ops/inference-metrics",{method:"GET"}),getModelConfig:async()=>N("/api/admin/model-config",{method:"GET"}),setModelProfile:async e=>N("/api/admin/model-config/profile",{method:"POST",body:JSON.stringify({profile:e})}),setModelOverride:async(e,t)=>N("/api/admin/model-config/override",{method:"POST",body:JSON.stringify({key:e,value:t})}),resetModelConfig:async()=>N("/api/admin/model-config/reset",{method:"DELETE"}),uploadModulePdf:async e=>{const t=be.currentUser,n=t?await t.getIdToken():void 0,r=await fetch(`${xr}/api/admin/upload-pdf`,{method:"POST",headers:n?{Authorization:`Bearer ${n}`}:{},body:e});if(!r.ok){const s=await r.json().catch(()=>({detail:"Upload failed"}));throw new Error(s.detail||`Upload failed (${r.status})`)}return r.json()},reingestModulePdf:async(e,t)=>{const n=be.currentUser?await be.currentUser.getIdToken():void 0;return N("/api/admin/reingest-pdf",{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:`Bearer ${n}`}:{}},body:JSON.stringify({subjectId:e,storagePath:t})})},getRagHealth:async()=>N("/api/rag/health",{method:"GET"}),async generateInterventionPlan(e){return N("/api/class-records/intervention-plan",{method:"POST",body:JSON.stringify(e)})},async fetchClassRecords(e){const t=new URLSearchParams;e?.limit&&t.set("limit",String(e.limit)),e?.after&&t.set("after",e.after);const n=t.toString();return N(`/api/class-records${n?`?${n}`:""}`,{method:"GET"})},async fetchQuizBattleResults(e){const t=new URLSearchParams;e?.classId&&t.set("classId",e.classId),e?.limit&&t.set("limit",String(e.limit)),e?.after&&t.set("after",e.after);const n=t.toString();return N(`/api/quiz-battle/results${n?`?${n}`:""}`,{method:"GET"})},async fetchUploadStudents(e,t){const n=new URLSearchParams;t?.limit&&n.set("limit",String(t.limit)),t?.after&&n.set("after",t.after);const r=n.toString();return N(`/api/class-records/${e}/students${r?`?${r}`:""}`,{method:"GET"})},async generateClassReport(e){return N(`/api/class-records/${e}/ai-report`,{method:"POST"})},async generateQuizFromModule(e){return N(`/api/teacher-materials/${e}/generate-quiz`,{method:"POST"})},async getStudentRecommendations(e){return N(`/api/student/${e}/recommendations`,{method:"GET"})}};async function $E(e,t,n,r){ke("/api/rag/lesson",{topic:e,subject:t,quarter:n}),Re("/api/rag/lesson","quarter",n,1,4);const s=await N("/api/rag/lesson",{method:"POST",body:JSON.stringify({topic:e,subject:t,quarter:n,lessonTitle:r?.lessonTitle,learningCompetency:r?.learningCompetency,moduleUnit:r?.moduleUnit,learnerLevel:r?.learnerLevel})}),o=(s.sources||[]).map(i=>({...i,sourceFile:i.source_file||i.sourceFile,content:i.content||i.content,contentDomain:i.content_domain||i.contentDomain,chunkType:i.chunk_type||i.chunkType}));return{explanation:s.explanation,sources:o,retrievalConfidence:s.retrievalConfidence,retrievalBand:s.retrievalBand,retrievalQuery:s.retrievalQuery,needsReview:s.needsReview}}async function FE(e,t,n,r){ke("/api/rag/generate-problem",{topic:e,subject:t,quarter:n,difficulty:r}),Re("/api/rag/generate-problem","quarter",n,1,4);const s=await N("/api/rag/generate-problem",{method:"POST",body:JSON.stringify({topic:e,subject:t,quarter:n,difficulty:r})}),o=(s.sources||[]).map(i=>({...i,sourceFile:i.source_file||i.sourceFile}));return{problem:s.problem,solution:s.solution,competencyReference:s.competencyReference,sources:o}}async function VE(e,t){return!Array.isArray(e)||e.length===0?"":(await N("/api/rag/analysis-context",{method:"POST",body:JSON.stringify({weakTopics:e,subject:t})})).curriculumContext||""}async function BE(e){const t=e?`?grade_level=${encodeURIComponent(e)}`:"";return N(`/api/curriculum/subjects${t}`)}async function UE(e){try{return await N(`/api/curriculum/subjects/${e}`)}catch{return null}}async function qE(e){try{return await N(`/api/curriculum/subjects/${e}/topics`)}catch{return[]}}async function GE(e,t){try{return await N(`/api/curriculum/subjects/${e}/topics/${t}`)}catch{return null}}const WE=Object.freeze(Object.defineProperty({__proto__:null,ApiError:It,ApiNetworkError:Ls,ApiTimeoutError:bn,ApiValidationError:ze,apiFetch:N,apiService:bt,fetchAnalysisCurriculumContext:VE,generateGroundedProblem:FE,generateRagLesson:TE,generateRagProblem:PE,getCurriculumGroundedLesson:$E,getCurriculumSubject:UE,getCurriculumSubjects:BE,getCurriculumTopic:GE,getCurriculumTopics:qE,getRagAnalysisContext:_E,getRagHealth:kE,warmupBackend:RE},Symbol.toStringTag,{value:"Module"})),Bh="competencyProfiles",OR=async e=>{const t=W($,Bh,e),n=await we(t);return n.exists()?n.data():null},HE=async(e,t)=>{const{strengths:n,weaknesses:r,borderline:s}=t.proficiencyProfile,o=n.length>0?n[0]:null,i=r.length>0?r[0]:null,a=t.proficiencyProfile.suggestedStartingModule,c={uid:e,lastAssessmentDate:ce(),lastAssessmentType:t.assessmentType,overallScore:t.rawScore,competencies:Object.fromEntries(Object.entries(t.competencyScores).map(([u,d])=>[u,{score:d.score,correct:d.correct,attempted:d.attempted,lastAttemptedAt:ce()}])),primaryWeakness:i,primaryStrength:o,suggestedModule:a,updatedAt:ce()};await Ne(W($,Bh,e),c,{merge:!0})},Ys=async e=>{const t={userId:e,subjects:{},lessons:{},quizAttempts:[],totalLessonsCompleted:0,totalQuizzesCompleted:0,averageScore:0,updatedAt:new Date};return await Ne(W($,"progress",e),t),t},ZE=async e=>{try{const t=W($,"progress",e),n=await we(t);if(n.exists()){const r=n.data();return{...r,updatedAt:r.updatedAt?.toDate()||new Date}}return await Ys(e)}catch(t){return console.error("Error getting user progress:",t),null}},LR=(e,t)=>{const n=W($,"progress",e);return Jt(n,r=>{if(!r.exists()){t(null);return}const s=r.data();t({...s,updatedAt:s.updatedAt?.toDate?.()||new Date})},r=>{console.error("Error subscribing to user progress:",r),t(null)})},zR=async(e,t,n)=>{const r=Math.max(0,Math.min(100,n)),s=W($,"progress",e);await Ne(s,{[`lessons.${t}.lessonId`]:t,[`lessons.${t}.progressPercent`]:r,updatedAt:ce()},{merge:!0})},jR=async(e,t,n,r,s)=>{const o=W($,"progress",e),i=await we(o);if(!i.exists())return 0;const c=i.data().subjects?.[t]?.modulesProgress?.[n];if(!c)return 0;const u=Math.max(1,r+s),d=c.lessonsCompleted?.length||0,l=c.quizzesCompleted?.length||0,f=Math.round((d+l)/u*100);return await Ne(o,{[`subjects.${t}.modulesProgress.${n}.progress`]:f,[`subjects.${t}.modulesProgress.${n}.lastAccessedAt`]:ce(),updatedAt:ce()},{merge:!0}),f},NR=async(e,t,n,r,s,o=50,i,a)=>{try{const c=W($,"progress",e);let u=await we(c);u.exists()||(await Ys(e),u=await we(c));const d=u.data(),l={lessonId:r,completed:!0,completedAt:new Date,timeSpent:s,...i!==void 0&&{quizCompleted:i},...a!==void 0&&{quizScore:a}};d.subjects||(d.subjects={}),d.subjects[t]||(d.subjects[t]={subjectId:t,progress:0,completedModules:0,totalModules:0,modulesProgress:{}});const f=d.subjects[t];f.modulesProgress[n]||(f.modulesProgress[n]={moduleId:n,subjectId:t,progress:0,lessonsCompleted:[],quizzesCompleted:[],startedAt:new Date,lastAccessedAt:new Date});const p=f.modulesProgress[n],m=!p.lessonsCompleted.includes(r);m&&(p.lessonsCompleted.push(r),p.lastAccessedAt=new Date),await Ne(c,{[`lessons.${r}`]:l,[`subjects.${t}.modulesProgress.${n}`]:p,...m&&{totalLessonsCompleted:dr(1)},updatedAt:ce()},{merge:!0}),await Uh(e,o,"lesson_complete",`Completed lesson: ${r}`)}catch(c){throw console.error("Error completing lesson:",c),c}},$R=async(e,t,n,r,s,o)=>{try{const i=W($,"progress",e);let a=await we(i);a.exists()||(await Ys(e),a=await we(i));const c=a.data(),u={quizId:t,attemptNumber:(c.quizAttempts?.filter(l=>l.quizId===t).length||0)+1,score:r,completedAt:new Date,timeSpent:o,answers:s},d=!c.quizAttempts?.some(l=>l.quizId===t);await kt(i,{quizAttempts:[...c.quizAttempts||[],u],...d&&{totalQuizzesCompleted:dr(1)},updatedAt:ce()})}catch(i){throw console.error("Error recording practice quiz:",i),i}},FR=async(e,t,n,r,s,o,i,a)=>{try{const c=W($,"progress",e);let u=await we(c);u.exists()||(await Ys(e),u=await we(c));const d=u.data(),l={quizId:r,attemptNumber:(d.quizAttempts?.filter(g=>g.quizId===r).length||0)+1,score:s,completedAt:new Date,timeSpent:i,answers:o},f=a!==void 0?a:Math.floor(s/100*100);d.subjects||(d.subjects={}),d.subjects[t]||(d.subjects[t]={subjectId:t,progress:0,completedModules:0,totalModules:0,modulesProgress:{}});const p=d.subjects[t];p.modulesProgress[n]||(p.modulesProgress[n]={moduleId:n,subjectId:t,progress:0,lessonsCompleted:[],quizzesCompleted:[],startedAt:new Date,lastAccessedAt:new Date});const m=p.modulesProgress[n],y=!m.quizzesCompleted.includes(r);y&&(m.quizzesCompleted.push(r),m.lastAccessedAt=new Date),await kt(c,{quizAttempts:[...d.quizAttempts||[],l],[`subjects.${t}.modulesProgress.${n}`]:m,...y&&{totalQuizzesCompleted:dr(1)},updatedAt:ce()}),await Uh(e,f,"quiz_complete",`Completed quiz: ${r} (Score: ${s}%)`)}catch(c){throw console.error("Error completing quiz:",c),c}},Uh=async(e,t,n,r)=>{try{const s=W($,"users",e);let o=1;try{const u=(await we(s)).data();u?.xpMultiplier&&typeof u.xpMultiplier=="number"&&(o=u.xpMultiplier)}catch{}const i=Math.round(t*o);await kt(s,{currentXP:dr(i),totalXP:dr(i),updatedAt:ce()});const a=W(Xe($,"xpActivities"));await Ne(a,{activityId:a.id,userId:e,type:n,xpEarned:i,description:r,timestamp:ce()})}catch(s){console.error("Error awarding XP:",s)}},gs={notifications:{emailNotifications:!0,pushNotifications:!0,soundEnabled:!0,notificationTypes:{quizReminders:!0,newContent:!0,achievements:!0,streakAlerts:!0,weeklySummary:!0},quietHours:{start:"22:00",end:"08:00"}},pushPreferences:{pushEnabled:!0,achievement:!0,quiz_battle:!0,daily_reward:!0,assignment:!0,grade_posted:!0,streak_reminder:!0,leaderboard:!0,system:!0},appearance:{darkMode:!1,fontSize:16,compactView:!1,reduceAnimations:!1},privacy:{profileVisibility:"everyone",showActivityStatus:!0,dataSharing:!0},learning:{dailyXpGoal:100,preferredStudyTime:"evening",autoPlayLessons:!1,showHints:!0,quizDifficultyPreference:"adaptive",studyReminderTime:"18:00"},adminPanel:{siteName:"MathPulse AI",siteDescription:"AI-Powered Mathematics Learning Platform",defaultLanguage:"English",maintenanceMode:!1,enforceStrongPasswords:!0,sessionTimeoutMinutes:60,aiTutorEnabled:!0,aiAutoRecommendations:!0,aiRiskAlertsEnabled:!0,gradingScale:"percentage",passingGrade:75,parentSummaryEmails:!0,teacherDigestEmails:!0,weeklyPlatformReport:!0,autoBackupEnabled:!1,backupFrequency:"weekly"}},KE=300*1e3,QE=1800*1e3,Li=new Cm({defaultOptions:{queries:{staleTime:KE,gcTime:QE,retry:1,refetchOnWindowFocus:!1}}}),XE=async()=>{await Li.cancelQueries(),Li.clear()},ku={quizDefaults:{timeLimitMinutes:30,passingScore:75,maxAttempts:3},classPreferences:{autoEnroll:!1,classVisibility:"public"},studentAnalyticsVisibility:!0,notifyOnSubmission:!0,notifyOnStudentActivity:!1},Tu={maintenanceMode:!1,defaultGradeLevel:"Grade 11",defaultCurriculum:"STEM",maxClassSize:50,auditLogVisible:!0,aiConfig:{modelName:"deepseek-chat",temperature:.7,endpoint:"https://api.deepseek.com"}},YE="preferences",ja=()=>JSON.parse(JSON.stringify(gs)),qh=e=>{const t=ja();return e?{...t,...e,notifications:{...t.notifications,...e.notifications,notificationTypes:{...t.notifications.notificationTypes,...e.notifications?.notificationTypes},quietHours:{...t.notifications.quietHours,...e.notifications?.quietHours}},pushPreferences:{...t.pushPreferences,...e.pushPreferences},appearance:{...t.appearance,...e.appearance},privacy:{...t.privacy,...e.privacy},learning:{...t.learning,...e.learning},adminPanel:{...t.adminPanel,...e.adminPanel}}:t},Na=e=>W($,"users",e,"settings",YE),Gh=async e=>{const t=Na(e),n=await we(t);if(!n.exists()){const r=ja();return await Ne(t,{...r,createdAt:ce(),updatedAt:ce()}),r}return qh(n.data())},JE=async(e,t)=>{const n=await Gh(e),r=qh({...n,...t});return await Ne(Na(e),{...r,updatedAt:ce()},{merge:!0}),r},Wh="mathpulse_appearance",eC=e=>{const t=document.documentElement;t.style.setProperty("--font-size",`${e.appearance.fontSize}px`),t.dataset.density=e.appearance.compactView?"compact":"comfortable",e.appearance.reduceAnimations?t.classList.add("reduced-motion"):t.classList.remove("reduced-motion"),e.appearance.darkMode?t.classList.add("smart-dark"):t.classList.remove("smart-dark");try{localStorage.setItem(Wh,JSON.stringify(e.appearance))}catch{}},tC=()=>{try{const e=localStorage.getItem(Wh);if(!e)return;const t=JSON.parse(e),n=document.documentElement;n.style.setProperty("--font-size",`${t.fontSize}px`),n.dataset.density=t.compactView?"compact":"comfortable",t.reduceAnimations&&n.classList.add("reduced-motion"),t.darkMode&&n.classList.add("smart-dark")}catch{}},nC=async()=>{try{if(await XE(),E_(),localStorage.clear(),sessionStorage.clear(),"caches"in window){const e=await caches.keys();await Promise.all(e.map(t=>caches.delete(t)))}}catch(e){throw console.error("Failed clearing client cache:",e),new Error("Unable to clear cache on this device.")}},rC=async e=>{const t=W($,"users",e),n=await we(t),r=await we(Na(e)),s=["progress","xpActivities","achievements","notifications","tasks","chatSessions","chatMessages"],o=await Promise.all(s.map(async i=>{const a=Dt(Xe($,i),Rt("userId","==",e)),c=await jn(a);return{collectionName:i,items:c.docs.map(u=>({id:u.id,...u.data()}))}}));return{exportedAt:new Date().toISOString(),user:n.exists()?{id:n.id,...n.data()}:null,settings:r.exists()?r.data():ja(),collections:o.reduce((i,a)=>(i[a.collectionName]=a.items,i),{})}},$a=async e=>{const t=be.currentUser;if(!t||!t.email)throw new Error("No user logged in");const n=Wp.credential(t.email,e);await Hp(t,n)},VR=async(e,t)=>{if(await $a(e),!be.currentUser)throw new Error("Re-auth failed");await qp(be.currentUser,t)},BR=async(e,t)=>{if(await $a(e),!be.currentUser)throw new Error("Re-auth failed");await Up(be.currentUser,t)},UR=async(e,t)=>{if(await $a(e),!be.currentUser)throw new Error("Re-auth failed");await Gp(be.currentUser);try{const{deleteDoc:n}=await oe(async()=>{const{deleteDoc:r}=await import("./vendor-firebase-firestore-BJsL6-Wd.js");return{deleteDoc:r}},__vite__mapDeps([1,2]));await n(W($,"users",t))}catch{}},Hh=e=>W($,"users",e,"settings","teacherPreferences"),sC=async e=>{const t=await we(Hh(e));return t.exists()?{...ku,...t.data()}:{...ku}},qR=async(e,t)=>{const n=await sC(e),r={...n,...t,quizDefaults:{...n.quizDefaults,...t.quizDefaults},classPreferences:{...n.classPreferences,...t.classPreferences}};return await Ne(Hh(e),{...r,updatedAt:ce()},{merge:!0}),r},Zh=()=>W($,"system","config"),oC=async()=>{const e=await we(Zh());return e.exists()?{...Tu,...e.data()}:{...Tu}},GR=async e=>{const t=await oC(),n={...t,...e,aiConfig:{...t.aiConfig,...e.aiConfig}};return await Ne(Zh(),{...n,updatedAt:ce()},{merge:!0}),n};function Kh(e){const t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="[object Date]"?new e.constructor(+e):typeof e=="number"||t==="[object Number]"||typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Qh(e){const t=Kh(e);return t.setHours(0,0,0,0),t}function iC(e){const t=Kh(e);return t.setHours(23,59,59,999),t}function Wn(){const e=be.currentUser?.uid??null;return e||console.warn("[notificationFirestoreService] Skipping Firestore call — user not authenticated"),e}const aC=e=>{const t=e.data(),n=t.createdAt,r=n instanceof On?n.toDate():n instanceof Date?n:new Date;return{id:e.id,userId:t.userId,type:t.type,title:t.title,message:t.message,isRead:t.isRead,createdAt:r,metadata:t.metadata,actionUrl:t.actionUrl}},cC=async e=>{if(!Wn())throw new Error("Cannot create notification — not authenticated");try{const n=W(Xe($,"notifications",e.userId,"items")),r={userId:e.userId,type:e.type,title:e.title,message:e.message,isRead:!1,createdAt:ce(),...e.metadata?{metadata:e.metadata}:{},...e.actionUrl?{actionUrl:e.actionUrl}:{}};return await Ne(n,r),n.id}catch(n){throw console.error("[notificationFirestoreService] Error creating notification:",n),n}},lC=async(e,t)=>{if(Wn())try{const n=W($,"notifications",e,"items",t);await kt(n,{isRead:!0})}catch(n){throw console.error("[notificationFirestoreService] Error marking as read:",n),n}},uC=async e=>{if(Wn())try{const t=Dt(Xe($,"notifications",e,"items"),Rt("isRead","==",!1)),n=await jn(t),r=Dt(Xe($,"notifications"),Rt("userId","==",e),Rt("read","==",!1)),s=await jn(r),o=[...n.docs.map(i=>kt(i.ref,{isRead:!0})),...s.docs.map(i=>kt(i.ref,{read:!0}))];await Promise.all(o)}catch(t){throw console.error("[notificationFirestoreService] Error marking all as read:",t),t}},dC=async(e,t)=>{try{const n=W($,"notifications",e,"items",t);await Ho(n)}catch(n){throw console.error("[notificationFirestoreService] Error deleting notification:",n),n}},fC=(e,t)=>{const n=Wn();if(!n||n!==e)return console.warn("[notificationFirestoreService] subscribeToNotifications skipped — auth UID mismatch or not signed in"),t([]),()=>{};const r=Dt(Xe($,"notifications",e,"items"),vn("createdAt","desc")),s=Dt(Xe($,"notifications"),Rt("userId","==",e),vn("createdAt","desc"));let o=[],i=[],a=!1,c=!1;const u=()=>{const f=new Map;for(const m of i)f.set(m.id,m);for(const m of o)f.set(m.id,m);const p=Array.from(f.values()).sort((m,y)=>y.createdAt.getTime()-m.createdAt.getTime());t(p)},d=Jt(r,f=>{o=f.docs.map(p=>aC(p)),a=!0,c&&u()},()=>{a=!0,c&&u()}),l=Jt(s,f=>{i=f.docs.map(p=>{const m=p.data(),y=m.createdAt,g=y instanceof On?y.toDate():y instanceof Date?y:new Date;return{id:p.id,userId:m.userId,type:m.type||"message",title:m.title,message:m.message,isRead:m.isRead??m.read??!1,createdAt:g,metadata:m.metadata,actionUrl:m.actionUrl||m.link}}),c=!0,a&&u()},()=>{c=!0,a&&u()});return()=>{d(),l()}},hC=async e=>{if(!Wn())return!1;try{const t=new Date,n=Qh(t),r=iC(t),s=Dt(Xe($,"notifications",e,"items"),Rt("type","==","daily_checkin"),Rt("createdAt",">=",n),Rt("createdAt","<=",r),vn("createdAt","asc"),Sr(1));return!(await jn(s)).empty}catch(t){return console.error("[notificationFirestoreService] Error checking daily check-in:",t),!1}},pC=async e=>{if(!Wn())return!1;try{const n=Qh(new Date),r=Dt(Xe($,"notifications",e,"items"),Rt("type","==","streak_reminder"),Rt("createdAt",">=",n),vn("createdAt","asc"),Sr(1));return!(await jn(r)).empty}catch(t){return console.error("[notificationFirestoreService] Error checking reminder:",t),!1}};async function Xh(e){try{await cC(e)}catch(t){console.error("[NotificationService] Failed to create notification:",t)}}function mC(e){const t=h.useRef(!1);h.useEffect(()=>{if(!e||t.current)return;t.current=!0,(async()=>{try{if(await hC(e)||await pC(e))return;await Xh({userId:e,type:"streak_reminder",title:"Don't forget your daily check-in!",message:"Check in today to keep your streak alive and earn bonus XP."})}catch(r){console.error("[useDailyCheckInReminder] Error:",r)}})()},[e])}const Yh=h.createContext(null),$o=({children:e})=>{const{currentUser:t,userProfile:n}=Rr(),[r,s]=h.useState([]),[o,i]=h.useState(!0),a=t?.uid??null;mC(n?.role==="student"?a:null),h.useEffect(()=>{if(!a)return s([]),i(!1),()=>{};i(!0);const p=fC(a,m=>{s(m),i(!1)});return()=>p()},[a]);const c=h.useMemo(()=>r.filter(p=>!p.isRead).length,[r]),u=h.useCallback(async p=>{a&&await lC(a,p)},[a]),d=h.useCallback(async()=>{a&&(s(p=>p.map(m=>m.isRead?m:{...m,isRead:!0})),await uC(a))},[a]),l=h.useCallback(async p=>{a&&await dC(a,p)},[a]),f=h.useMemo(()=>({notifications:r,unreadCount:c,isLoading:o,markAsRead:u,markAllAsRead:d,deleteNotification:l}),[r,c,o,u,d,l]);return b.jsx(Yh.Provider,{value:f,children:e})},WR=()=>{const e=h.useContext(Yh);if(!e)throw new Error("useNotifications must be used within a NotificationProvider");return e},Pu="/firebase-messaging-sw.js";let Fo=null,_u=!1,Vo=!1;async function Fa(){if(!_u){try{Vo=await Op()}catch{Vo=!1}_u=!0}return Vo?(Fo||(Fo=Lp(zt)),Fo):null}async function gC(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;try{const e=await navigator.serviceWorker.getRegistration(Pu);return e||await navigator.serviceWorker.register(Pu,{scope:"/"})}catch(e){return console.warn("[pushNotificationService] SW registration failed:",e),null}}async function Jh(e){if(!e||typeof window>"u"||typeof Notification>"u")return null;const t=await Fa();if(!t)return console.warn("[pushNotificationService] FCM not supported in this browser."),null;let n;try{if(Notification.permission==="granted")n="granted";else{if(Notification.permission==="denied")return null;n=await Notification.requestPermission()}}catch(i){return console.warn("[pushNotificationService] permission prompt failed:",i),null}if(n!=="granted")return null;const r="BCydYLOb7oDjcaIwvBq8VUbNE7AzIBSdNbPXHDvSBC9B_2COzlK16MlCLJbDmNynf0yFkx_ZvTLPQYlhiu-C91Q".trim();if(!r)return console.warn("[pushNotificationService] VITE_FIREBASE_VAPID_KEY missing — cannot fetch FCM token."),null;const s=await gC();if(!s)return null;let o=null;try{o=await Dp(t,{vapidKey:r,serviceWorkerRegistration:s})}catch(i){return console.warn("[pushNotificationService] getToken failed:",i),null}if(!o)return null;try{const i=W($,"users",e,"fcmTokens",o),a={token:o,userId:e,platform:"web",userAgent:typeof navigator<"u"?navigator.userAgent:"",createdAt:ce(),updatedAt:ce(),active:!0};await Ne(i,a,{merge:!0})}catch(i){console.warn("[pushNotificationService] persisting token failed:",i)}return o}function ep(e){let t,n=!1;return Fa().then(r=>{n||!r||(t=Ip(r,e))}),()=>{n=!0,t?.()}}async function tp(e,t){if(!(!e||!t)){try{const n=W($,"users",e,"fcmTokens",t);await kt(n,{active:!1,updatedAt:ce()})}catch(n){console.warn("[pushNotificationService] marking token inactive failed:",n)}try{const n=await Fa();n&&await Mp(n)}catch(n){console.warn("[pushNotificationService] deleteToken failed:",n)}}}const HR=Object.freeze(Object.defineProperty({__proto__:null,deregisterPushToken:tp,onForegroundMessage:ep,requestPushPermissionAndRegister:Jh},Symbol.toStringTag,{value:"Module"})),yC={achievement:"achievement_unlocked",quiz_battle:"system_alert",daily_reward:"daily_checkin",assignment:"new_assignment",grade_posted:"quiz_result",streak_reminder:"streak_reminder",leaderboard:"system_alert",system:"system_alert"};function bC(e){return e?yC[e]??"system_alert":"system_alert"}function vC(){const{currentUser:e}=Rr(),t=Vi(),n=h.useRef(null),r=h.useRef(null);return h.useEffect(()=>{const o=e?.uid??null;if(r.current=o,!o)return;let i,a=!1;return(async()=>{const c=await Jh(o);a||(n.current=c,c&&(i=ep(u=>{const d=u.notification??{},l=u.data??{},f=d.title||l.title||"MathPulse AI",p=d.body||l.body||"",m=l.notificationType;Xh({userId:o,type:bC(m),title:f,message:p,actionUrl:l.url,metadata:{...l,source:"fcm_foreground",fcmType:m??null}})})))})(),()=>{a=!0,i?.()}},[e?.uid]),h.useEffect(()=>{if(typeof navigator>"u"||!("serviceWorker"in navigator))return;const o=i=>{const a=i.data;if(!a||a.type!=="NOTIFICATION_CLICK")return;const c=a.url||"/";try{const u=c.startsWith("http")?new URL(c).pathname:c;t(u)}catch{window.location.href=c}};return navigator.serviceWorker.addEventListener("message",o),()=>navigator.serviceWorker.removeEventListener("message",o)},[t]),{unregister:async()=>{const o=r.current,i=n.current;!o||!i||(await tp(o,i),n.current=null)}}}const Bo=()=>(vC(),null),wC=(e,t)=>{const n=new Array(e.length+t.length);for(let r=0;r({classGroupId:e,validator:t}),np=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),zs="-",Eu=[],SC="arbitrary..",kC=e=>{const t=PC(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:i=>{if(i.startsWith("[")&&i.endsWith("]"))return TC(i);const a=i.split(zs),c=a[0]===""&&a.length>1?1:0;return rp(a,c,t)},getConflictingClassGroupIds:(i,a)=>{if(a){const c=r[i],u=n[i];return c?u?wC(u,c):c:u||Eu}return n[i]||Eu}}},rp=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const s=e[t],o=n.nextPart.get(s);if(o){const u=rp(e,t+1,o);if(u)return u}const i=n.validators;if(i===null)return;const a=t===0?e.join(zs):e.slice(t).join(zs),c=i.length;for(let u=0;ue.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),r=t.slice(0,n);return r?SC+r:void 0})(),PC=e=>{const{theme:t,classGroups:n}=e;return _C(n,t)},_C=(e,t)=>{const n=np();for(const r in e){const s=e[r];Va(s,n,r,t)}return n},Va=(e,t,n,r)=>{const s=e.length;for(let o=0;o{if(typeof e=="string"){CC(e,t,n);return}if(typeof e=="function"){AC(e,t,n,r);return}RC(e,t,n,r)},CC=(e,t,n)=>{const r=e===""?t:sp(t,e);r.classGroupId=n},AC=(e,t,n,r)=>{if(MC(e)){Va(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(xC(n,e))},RC=(e,t,n,r)=>{const s=Object.entries(e),o=s.length;for(let i=0;i{let n=e;const r=t.split(zs),s=r.length;for(let o=0;o"isThemeGetter"in e&&e.isThemeGetter===!0,IC=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null);const s=(o,i)=>{n[o]=i,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(o){let i=n[o];if(i!==void 0)return i;if((i=r[o])!==void 0)return s(o,i),i},set(o,i){o in n?n[o]=i:s(o,i)}}},zi="!",Cu=":",DC=[],Au=(e,t,n,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),OC=e=>{const{prefix:t,experimentalParseClassName:n}=e;let r=s=>{const o=[];let i=0,a=0,c=0,u;const d=s.length;for(let y=0;yc?u-c:void 0;return Au(o,p,f,m)};if(t){const s=t+Cu,o=r;r=i=>i.startsWith(s)?o(i.slice(s.length)):Au(DC,!1,i,void 0,!0)}if(n){const s=r;r=o=>n({className:o,parseClassName:s})}return r},LC=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,r)=>{t.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let o=0;o0&&(s.sort(),r.push(...s),s=[]),r.push(i)):s.push(i)}return s.length>0&&(s.sort(),r.push(...s)),r}},zC=e=>({cache:IC(e.cacheSize),parseClassName:OC(e),sortModifiers:LC(e),...kC(e)}),jC=/\s+/,NC=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:o}=t,i=[],a=e.trim().split(jC);let c="";for(let u=a.length-1;u>=0;u-=1){const d=a[u],{isExternal:l,modifiers:f,hasImportantModifier:p,baseClassName:m,maybePostfixModifierPosition:y}=n(d);if(l){c=d+(c.length>0?" "+c:c);continue}let g=!!y,v=r(g?m.substring(0,y):m);if(!v){if(!g){c=d+(c.length>0?" "+c:c);continue}if(v=r(m),!v){c=d+(c.length>0?" "+c:c);continue}g=!1}const k=f.length===0?"":f.length===1?f[0]:o(f).join(":"),S=p?k+zi:k,x=S+v;if(i.indexOf(x)>-1)continue;i.push(x);const T=s(v,g);for(let P=0;P0?" "+c:c)}return c},$C=(...e)=>{let t=0,n,r,s="";for(;t{if(typeof e=="string")return e;let t,n="";for(let r=0;r{let n,r,s,o;const i=c=>{const u=t.reduce((d,l)=>l(d),e());return n=zC(u),r=n.cache.get,s=n.cache.set,o=a,a(c)},a=c=>{const u=r(c);if(u)return u;const d=NC(c,n);return s(c,d),d};return o=i,(...c)=>o($C(...c))},VC=[],Ae=e=>{const t=n=>n[e]||VC;return t.isThemeGetter=!0,t},ip=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ap=/^\((?:(\w[\w-]*):)?(.+)\)$/i,BC=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,UC=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,qC=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,GC=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,WC=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,HC=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Zt=e=>BC.test(e),ne=e=>!!e&&!Number.isNaN(Number(e)),Kt=e=>!!e&&Number.isInteger(Number(e)),Uo=e=>e.endsWith("%")&&ne(e.slice(0,-1)),Ut=e=>UC.test(e),cp=()=>!0,ZC=e=>qC.test(e)&&!GC.test(e),Ba=()=>!1,KC=e=>WC.test(e),QC=e=>HC.test(e),XC=e=>!L(e)&&!j(e),YC=e=>on(e,dp,Ba),L=e=>ip.test(e),dn=e=>on(e,fp,ZC),Ru=e=>on(e,iA,ne),JC=e=>on(e,pp,cp),eA=e=>on(e,hp,Ba),Mu=e=>on(e,lp,Ba),tA=e=>on(e,up,QC),es=e=>on(e,mp,KC),j=e=>ap.test(e),sr=e=>kn(e,fp),nA=e=>kn(e,hp),Iu=e=>kn(e,lp),rA=e=>kn(e,dp),sA=e=>kn(e,up),ts=e=>kn(e,mp,!0),oA=e=>kn(e,pp,!0),on=(e,t,n)=>{const r=ip.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},kn=(e,t,n=!1)=>{const r=ap.exec(e);return r?r[1]?t(r[1]):n:!1},lp=e=>e==="position"||e==="percentage",up=e=>e==="image"||e==="url",dp=e=>e==="length"||e==="size"||e==="bg-size",fp=e=>e==="length",iA=e=>e==="number",hp=e=>e==="family-name",pp=e=>e==="number"||e==="weight",mp=e=>e==="shadow",aA=()=>{const e=Ae("color"),t=Ae("font"),n=Ae("text"),r=Ae("font-weight"),s=Ae("tracking"),o=Ae("leading"),i=Ae("breakpoint"),a=Ae("container"),c=Ae("spacing"),u=Ae("radius"),d=Ae("shadow"),l=Ae("inset-shadow"),f=Ae("text-shadow"),p=Ae("drop-shadow"),m=Ae("blur"),y=Ae("perspective"),g=Ae("aspect"),v=Ae("ease"),k=Ae("animate"),S=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],T=()=>[...x(),j,L],P=()=>["auto","hidden","clip","visible","scroll"],_=()=>["auto","contain","none"],w=()=>[j,L,c],R=()=>[Zt,"full","auto",...w()],A=()=>[Kt,"none","subgrid",j,L],B=()=>["auto",{span:["full",Kt,j,L]},Kt,j,L],F=()=>[Kt,"auto",j,L],H=()=>["auto","min","max","fr",j,L],re=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],te=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...w()],ie=()=>[Zt,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...w()],se=()=>[Zt,"screen","full","dvw","lvw","svw","min","max","fit",...w()],ue=()=>[Zt,"screen","full","lh","dvh","lvh","svh","min","max","fit",...w()],D=()=>[e,j,L],he=()=>[...x(),Iu,Mu,{position:[j,L]}],rt=()=>["no-repeat",{repeat:["","x","y","space","round"]}],X=()=>["auto","cover","contain",rA,YC,{size:[j,L]}],U=()=>[Uo,sr,dn],q=()=>["","none","full",u,j,L],J=()=>["",ne,sr,dn],xe=()=>["solid","dashed","dotted","double"],ae=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],le=()=>[ne,Uo,Iu,Mu],Z=()=>["","none",m,j,L],O=()=>["none",ne,j,L],ee=()=>["none",ne,j,L],ye=()=>[ne,j,L],K=()=>[Zt,"full",...w()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ut],breakpoint:[Ut],color:[cp],container:[Ut],"drop-shadow":[Ut],ease:["in","out","in-out"],font:[XC],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ut],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ut],shadow:[Ut],spacing:["px",ne],text:[Ut],"text-shadow":[Ut],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Zt,L,j,g]}],container:["container"],columns:[{columns:[ne,L,j,a]}],"break-after":[{"break-after":S()}],"break-before":[{"break-before":S()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:T()}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:_()}],"overscroll-x":[{"overscroll-x":_()}],"overscroll-y":[{"overscroll-y":_()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{"inset-s":R(),start:R()}],end:[{"inset-e":R(),end:R()}],"inset-bs":[{"inset-bs":R()}],"inset-be":[{"inset-be":R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[Kt,"auto",j,L]}],basis:[{basis:[Zt,"full","auto",a,...w()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ne,Zt,"auto","initial","none",L]}],grow:[{grow:["",ne,j,L]}],shrink:[{shrink:["",ne,j,L]}],order:[{order:[Kt,"first","last","none",j,L]}],"grid-cols":[{"grid-cols":A()}],"col-start-end":[{col:B()}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":A()}],"row-start-end":[{row:B()}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...re(),"normal"]}],"justify-items":[{"justify-items":[...te(),"normal"]}],"justify-self":[{"justify-self":["auto",...te()]}],"align-content":[{content:["normal",...re()]}],"align-items":[{items:[...te(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...te(),{baseline:["","last"]}]}],"place-content":[{"place-content":re()}],"place-items":[{"place-items":[...te(),"baseline"]}],"place-self":[{"place-self":["auto",...te()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":w()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":w()}],"space-y-reverse":["space-y-reverse"],size:[{size:ie()}],"inline-size":[{inline:["auto",...se()]}],"min-inline-size":[{"min-inline":["auto",...se()]}],"max-inline-size":[{"max-inline":["none",...se()]}],"block-size":[{block:["auto",...ue()]}],"min-block-size":[{"min-block":["auto",...ue()]}],"max-block-size":[{"max-block":["none",...ue()]}],w:[{w:[a,"screen",...ie()]}],"min-w":[{"min-w":[a,"screen","none",...ie()]}],"max-w":[{"max-w":[a,"screen","none","prose",{screen:[i]},...ie()]}],h:[{h:["screen","lh",...ie()]}],"min-h":[{"min-h":["screen","lh","none",...ie()]}],"max-h":[{"max-h":["screen","lh",...ie()]}],"font-size":[{text:["base",n,sr,dn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,oA,JC]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Uo,L]}],"font-family":[{font:[nA,eA,t]}],"font-features":[{"font-features":[L]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,j,L]}],"line-clamp":[{"line-clamp":[ne,"none",j,Ru]}],leading:[{leading:[o,...w()]}],"list-image":[{"list-image":["none",j,L]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",j,L]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:D()}],"text-color":[{text:D()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...xe(),"wavy"]}],"text-decoration-thickness":[{decoration:[ne,"from-font","auto",j,dn]}],"text-decoration-color":[{decoration:D()}],"underline-offset":[{"underline-offset":[ne,"auto",j,L]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",j,L]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",j,L]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:he()}],"bg-repeat":[{bg:rt()}],"bg-size":[{bg:X()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Kt,j,L],radial:["",j,L],conic:[Kt,j,L]},sA,tA]}],"bg-color":[{bg:D()}],"gradient-from-pos":[{from:U()}],"gradient-via-pos":[{via:U()}],"gradient-to-pos":[{to:U()}],"gradient-from":[{from:D()}],"gradient-via":[{via:D()}],"gradient-to":[{to:D()}],rounded:[{rounded:q()}],"rounded-s":[{"rounded-s":q()}],"rounded-e":[{"rounded-e":q()}],"rounded-t":[{"rounded-t":q()}],"rounded-r":[{"rounded-r":q()}],"rounded-b":[{"rounded-b":q()}],"rounded-l":[{"rounded-l":q()}],"rounded-ss":[{"rounded-ss":q()}],"rounded-se":[{"rounded-se":q()}],"rounded-ee":[{"rounded-ee":q()}],"rounded-es":[{"rounded-es":q()}],"rounded-tl":[{"rounded-tl":q()}],"rounded-tr":[{"rounded-tr":q()}],"rounded-br":[{"rounded-br":q()}],"rounded-bl":[{"rounded-bl":q()}],"border-w":[{border:J()}],"border-w-x":[{"border-x":J()}],"border-w-y":[{"border-y":J()}],"border-w-s":[{"border-s":J()}],"border-w-e":[{"border-e":J()}],"border-w-bs":[{"border-bs":J()}],"border-w-be":[{"border-be":J()}],"border-w-t":[{"border-t":J()}],"border-w-r":[{"border-r":J()}],"border-w-b":[{"border-b":J()}],"border-w-l":[{"border-l":J()}],"divide-x":[{"divide-x":J()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":J()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...xe(),"hidden","none"]}],"divide-style":[{divide:[...xe(),"hidden","none"]}],"border-color":[{border:D()}],"border-color-x":[{"border-x":D()}],"border-color-y":[{"border-y":D()}],"border-color-s":[{"border-s":D()}],"border-color-e":[{"border-e":D()}],"border-color-bs":[{"border-bs":D()}],"border-color-be":[{"border-be":D()}],"border-color-t":[{"border-t":D()}],"border-color-r":[{"border-r":D()}],"border-color-b":[{"border-b":D()}],"border-color-l":[{"border-l":D()}],"divide-color":[{divide:D()}],"outline-style":[{outline:[...xe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ne,j,L]}],"outline-w":[{outline:["",ne,sr,dn]}],"outline-color":[{outline:D()}],shadow:[{shadow:["","none",d,ts,es]}],"shadow-color":[{shadow:D()}],"inset-shadow":[{"inset-shadow":["none",l,ts,es]}],"inset-shadow-color":[{"inset-shadow":D()}],"ring-w":[{ring:J()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:D()}],"ring-offset-w":[{"ring-offset":[ne,dn]}],"ring-offset-color":[{"ring-offset":D()}],"inset-ring-w":[{"inset-ring":J()}],"inset-ring-color":[{"inset-ring":D()}],"text-shadow":[{"text-shadow":["none",f,ts,es]}],"text-shadow-color":[{"text-shadow":D()}],opacity:[{opacity:[ne,j,L]}],"mix-blend":[{"mix-blend":[...ae(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ae()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ne]}],"mask-image-linear-from-pos":[{"mask-linear-from":le()}],"mask-image-linear-to-pos":[{"mask-linear-to":le()}],"mask-image-linear-from-color":[{"mask-linear-from":D()}],"mask-image-linear-to-color":[{"mask-linear-to":D()}],"mask-image-t-from-pos":[{"mask-t-from":le()}],"mask-image-t-to-pos":[{"mask-t-to":le()}],"mask-image-t-from-color":[{"mask-t-from":D()}],"mask-image-t-to-color":[{"mask-t-to":D()}],"mask-image-r-from-pos":[{"mask-r-from":le()}],"mask-image-r-to-pos":[{"mask-r-to":le()}],"mask-image-r-from-color":[{"mask-r-from":D()}],"mask-image-r-to-color":[{"mask-r-to":D()}],"mask-image-b-from-pos":[{"mask-b-from":le()}],"mask-image-b-to-pos":[{"mask-b-to":le()}],"mask-image-b-from-color":[{"mask-b-from":D()}],"mask-image-b-to-color":[{"mask-b-to":D()}],"mask-image-l-from-pos":[{"mask-l-from":le()}],"mask-image-l-to-pos":[{"mask-l-to":le()}],"mask-image-l-from-color":[{"mask-l-from":D()}],"mask-image-l-to-color":[{"mask-l-to":D()}],"mask-image-x-from-pos":[{"mask-x-from":le()}],"mask-image-x-to-pos":[{"mask-x-to":le()}],"mask-image-x-from-color":[{"mask-x-from":D()}],"mask-image-x-to-color":[{"mask-x-to":D()}],"mask-image-y-from-pos":[{"mask-y-from":le()}],"mask-image-y-to-pos":[{"mask-y-to":le()}],"mask-image-y-from-color":[{"mask-y-from":D()}],"mask-image-y-to-color":[{"mask-y-to":D()}],"mask-image-radial":[{"mask-radial":[j,L]}],"mask-image-radial-from-pos":[{"mask-radial-from":le()}],"mask-image-radial-to-pos":[{"mask-radial-to":le()}],"mask-image-radial-from-color":[{"mask-radial-from":D()}],"mask-image-radial-to-color":[{"mask-radial-to":D()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[ne]}],"mask-image-conic-from-pos":[{"mask-conic-from":le()}],"mask-image-conic-to-pos":[{"mask-conic-to":le()}],"mask-image-conic-from-color":[{"mask-conic-from":D()}],"mask-image-conic-to-color":[{"mask-conic-to":D()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:he()}],"mask-repeat":[{mask:rt()}],"mask-size":[{mask:X()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",j,L]}],filter:[{filter:["","none",j,L]}],blur:[{blur:Z()}],brightness:[{brightness:[ne,j,L]}],contrast:[{contrast:[ne,j,L]}],"drop-shadow":[{"drop-shadow":["","none",p,ts,es]}],"drop-shadow-color":[{"drop-shadow":D()}],grayscale:[{grayscale:["",ne,j,L]}],"hue-rotate":[{"hue-rotate":[ne,j,L]}],invert:[{invert:["",ne,j,L]}],saturate:[{saturate:[ne,j,L]}],sepia:[{sepia:["",ne,j,L]}],"backdrop-filter":[{"backdrop-filter":["","none",j,L]}],"backdrop-blur":[{"backdrop-blur":Z()}],"backdrop-brightness":[{"backdrop-brightness":[ne,j,L]}],"backdrop-contrast":[{"backdrop-contrast":[ne,j,L]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ne,j,L]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ne,j,L]}],"backdrop-invert":[{"backdrop-invert":["",ne,j,L]}],"backdrop-opacity":[{"backdrop-opacity":[ne,j,L]}],"backdrop-saturate":[{"backdrop-saturate":[ne,j,L]}],"backdrop-sepia":[{"backdrop-sepia":["",ne,j,L]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",j,L]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ne,"initial",j,L]}],ease:[{ease:["linear","initial",v,j,L]}],delay:[{delay:[ne,j,L]}],animate:[{animate:["none",k,j,L]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,j,L]}],"perspective-origin":[{"perspective-origin":T()}],rotate:[{rotate:O()}],"rotate-x":[{"rotate-x":O()}],"rotate-y":[{"rotate-y":O()}],"rotate-z":[{"rotate-z":O()}],scale:[{scale:ee()}],"scale-x":[{"scale-x":ee()}],"scale-y":[{"scale-y":ee()}],"scale-z":[{"scale-z":ee()}],"scale-3d":["scale-3d"],skew:[{skew:ye()}],"skew-x":[{"skew-x":ye()}],"skew-y":[{"skew-y":ye()}],transform:[{transform:[j,L,"","none","gpu","cpu"]}],"transform-origin":[{origin:T()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:K()}],"translate-x":[{"translate-x":K()}],"translate-y":[{"translate-y":K()}],"translate-z":[{"translate-z":K()}],"translate-none":["translate-none"],accent:[{accent:D()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:D()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",j,L]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",j,L]}],fill:[{fill:["none",...D()]}],"stroke-w":[{stroke:[ne,sr,dn,Ru]}],stroke:[{stroke:["none",...D()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},cA=FC(aA);function mn(...e){return cA(Jp(e))}function lA({className:e,...t}){return b.jsx(Qp,{"data-slot":"avatar",className:mn("relative flex size-10 shrink-0 overflow-hidden rounded-full",e),...t})}function Du({className:e,...t}){return b.jsx(Xp,{"data-slot":"avatar-image",className:mn("aspect-square size-full",e),...t})}function uA({className:e,...t}){return b.jsx(Yp,{"data-slot":"avatar-fallback",className:mn("bg-muted flex size-full items-center justify-center rounded-full",e),...t})}function dA(e){return e==="male"?"/icons/male-student.png":e==="female"?"/icons/female-student.png":"/icons/neutral-student.png"}const fA=e=>{const t=(e||"").trim();return t?t.split(/\s+/).slice(0,2).map(n=>n[0]?.toUpperCase()).join(""):"U"},hA=({src:e,name:t,gender:n,className:r,fallbackClassName:s,imageClassName:o})=>{const i=fA(t),a=dA(n);return b.jsxs(lA,{className:mn("shrink-0",r),children:[e?b.jsx(Du,{src:e,alt:t||"User",className:mn("object-cover",o)}):b.jsx(Du,{src:a,alt:t||"User",className:mn("object-cover",o)}),b.jsx(uA,{className:mn("bg-gradient-to-br from-violet-500 to-indigo-600 text-white font-display font-bold text-xs select-none",s),children:i})]})},pA={Functions:"Functions and Graphs",BusinessMath:"Business and Financial Mathematics",Logic:"Logic and Reasoning"},ZR={Functions:"gm-q2-functions-graphs",BusinessMath:"gm-q1-business-finance",Logic:"gm-q4-propositions-syllogisms-fallacies"},mA=e=>{const t=e.trim().toLowerCase();return t==="functions"||t.includes("function")?"Functions":t==="businessmath"||t.includes("business")?"BusinessMath":t==="logic"||t.includes("reason")?"Logic":null},gA=[{lessonId:"gm-q1-bf-1",lessonTitle:"Represent business transactions and financial goals using variables and equations.",moduleId:"gm-q1-business-finance",subjectId:"gen-math",subject:"General Mathematics",quarter:1,competencyCode:"GM11-BF-1",learningCompetency:"Represent business transactions and financial goals using variables and equations.",storagePath:"curriculum/general_math/GENERAL-MATHEMATICS-1.pdf",sourceFile:"GENERAL-MATHEMATICS-1.pdf"},{lessonId:"gm-q1-pss-1",lessonTitle:"Identify and describe arithmetic and geometric patterns in data.",moduleId:"gm-q1-patterns-sequences-series",subjectId:"gen-math",subject:"General Mathematics",quarter:1,competencyCode:"GM11-PSS-1",learningCompetency:"Identify and describe arithmetic and geometric patterns in data.",storagePath:"curriculum/general_math/GENERAL-MATHEMATICS-1.pdf",sourceFile:"GENERAL-MATHEMATICS-1.pdf"},{lessonId:"gm-q1-fass-1",lessonTitle:"Use arithmetic and geometric series to estimate cumulative financial outcomes.",moduleId:"gm-q1-financial-application-sequences-series",subjectId:"gen-math",subject:"General Mathematics",quarter:1,competencyCode:"GM11-FASS-1",learningCompetency:"Use arithmetic and geometric series to estimate cumulative financial outcomes.",storagePath:"curriculum/gen_math_sdo/SDO_Navotas_Gen.Math_SHS_1stSem.FV.pdf",sourceFile:"SDO_Navotas_Gen.Math_SHS_1stSem.FV.pdf"},{lessonId:"bm-q1-1",lessonTitle:"Translate verbal phrases to mathematical expressions; model business scenarios using linear equations and inequalities.",moduleId:"bm-q1-business-math",subjectId:"business-math",subject:"Business Mathematics",quarter:1,competencyCode:"ABM_BM11BS-Ia-b-1",learningCompetency:"Translate verbal phrases to mathematical expressions; model business scenarios using linear equations and inequalities.",storagePath:"curriculum/business_math/SDO_Navotas_Bus.Math_SHS_1stSem.FV.pdf",sourceFile:"SDO_Navotas_Bus.Math_SHS_1stSem.FV.pdf"},{lessonId:"stat-q1-1",lessonTitle:"Define and describe random variables and their types.",moduleId:"stat-q1-probability",subjectId:"stats-prob",subject:"Statistics and Probability",quarter:1,competencyCode:"SP_SHS11-Ia-1",learningCompetency:"Define and describe random variables and their types.",storagePath:"curriculum/stat_prob/SDO_Navotas_STAT_PROB_SHS_1stSem.FV.pdf",sourceFile:"SDO_Navotas_STAT_PROB_SHS_1stSem_FV.pdf"},{lessonId:"bc-q3-lf-1",lessonTitle:"Evaluate limits using limit theorems.",moduleId:"bc-q3-limits-of-functions",subjectId:"basic-calc",subject:"Basic Calculus",quarter:3,competencyCode:"BC12-LF-1",learningCompetency:"Evaluate limits using limit theorems.",storagePath:"curriculum/basic_calc/SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf",sourceFile:"SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf"},{lessonId:"bc-q3-d-1",lessonTitle:"Apply the limit definition of the derivative.",moduleId:"bc-q3-derivatives",subjectId:"basic-calc",subject:"Basic Calculus",quarter:3,competencyCode:"BC12-D-1",learningCompetency:"Apply the limit definition of the derivative.",storagePath:"curriculum/basic_calc/SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf",sourceFile:"SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf"},{lessonId:"bc-q3-i-1",lessonTitle:"Determine antiderivatives of functions.",moduleId:"bc-q3-integration",subjectId:"basic-calc",subject:"Basic Calculus",quarter:3,competencyCode:"BC12-I-1",learningCompetency:"Determine antiderivatives of functions.",storagePath:"curriculum/basic_calc/SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf",sourceFile:"SDO_Navotas_BasicCalc_SHS_Q3.FV.pdf"}],yA=Object.fromEntries(gA.map(e=>[e.competencyCode,{lessonId:e.lessonId,storagePath:e.storagePath,sourceFile:e.sourceFile}])),Ou=[{id:"deped-strengthened-gm",title:"DepEd Strengthened SHS General Mathematics Guide",url:"https://www.deped.gov.ph/"},{id:"deped-approved-exemplars",title:"Approved SHS Lesson Exemplars and Activity Sheets",url:"https://www.deped.gov.ph/"}],Ua={"gen-math":{id:"gen-math",label:"General Mathematics",color:"#1f4ea8",accent:"#3f7cff"},"business-math":{id:"business-math",label:"Business Mathematics",color:"#166534",accent:"#22c55e"},"stats-prob":{id:"stats-prob",label:"Statistics and Probability",color:"#6b21a8",accent:"#a855f7"}},bA={"Grade 11":["gen-math"]},vA="Foundational competency flow with guided examples, step-by-step vocabulary support, and scaffolded checkpoints.",tt=(e,t,n,r,s,o,i,a,c,u,d,l)=>({id:e,subjectId:t,subject:Ua[t].label,quarter:n,moduleTitle:r,moduleDescription:s,contentDomain:o,competencyGroup:i,competencies:a,performanceStandard:c,realWorldTheme:u,grade_level_availability:d,recommended_grade_level:l,sources:[Ou[0],Ou[1]]}),wA=[tt("gm-q1-business-finance","gen-math","Q1","Business and Finance","Interpret business contexts using mathematical models for pricing, savings, and financial planning.","Business Mathematics","GM-Q1-BF",[{code:"GM11-BF-1",outcome:"Represent business transactions and financial goals using variables and equations."},{code:"GM11-BF-2",outcome:"Analyze financial options using ratio, percent change, and margin reasoning."},{code:"GM11-BF-3",outcome:"Justify practical decisions with mathematically sound comparisons."}],"Produces a finance decision brief that explains and defends a chosen option using quantitative evidence.","Household budgeting and MSME pricing",["Grade 11"],"Grade 11"),tt("gm-q1-patterns-sequences-series","gen-math","Q1","Patterns, Sequences, and Series","Investigate arithmetic and geometric patterns, then model recurring structures in real settings.","Patterns and Algebraic Thinking","GM-Q1-PSS",[{code:"GM11-PSS-1",outcome:"Identify and describe arithmetic and geometric patterns in data."},{code:"GM11-PSS-2",outcome:"Construct explicit and recursive rules for sequences."},{code:"GM11-PSS-3",outcome:"Solve contextual problems involving finite series."}],"Creates a pattern model with formula, table, and verbal interpretation for a real-life process.","Savings goals and production growth",["Grade 11"],"Grade 11"),tt("gm-q1-financial-application-sequences-series","gen-math","Q1","Financial Application of Sequences and Series","Apply sequence and series models in annuities, installment planning, and long-term savings behavior.","Financial Applications","GM-Q1-FASS",[{code:"GM11-FASS-1",outcome:"Use arithmetic and geometric series to estimate cumulative financial outcomes."},{code:"GM11-FASS-2",outcome:"Compare payment plans and saving schemes using sequence-based models."}],"Builds a comparative recommendation report for financial plans grounded in sequence and series computations.","Installment plans and savings projections",["Grade 11"],"Grade 11"),tt("gm-q2-measurement-conversion","gen-math","Q2","Measurement and Conversion","Convert and validate units in practical settings involving length, area, volume, and rate.","Measurement","GM-Q2-MC",[{code:"GM11-MC-1",outcome:"Perform unit conversions accurately across metric and mixed contexts."},{code:"GM11-MC-2",outcome:"Evaluate measurement precision and reasonableness in applied tasks."}],"Produces an accurate conversion workflow with checks for reasonableness and precision.","Construction estimates and food production",["Grade 11"],"Grade 11"),tt("gm-q2-functions-graphs","gen-math","Q2","Functions and Their Graphs","Model relationships using function notation, tables, and graphs to explain changing quantities.","Functions","GM-Q2-FG",[{code:"GM11-FG-1",outcome:"Represent real-life relationships as functions and interpret domain/range."},{code:"GM11-FG-2",outcome:"Analyze function behavior from tables, equations, and graphs."},{code:"GM11-FG-3",outcome:"Use graph interpretation to support contextual conclusions."}],"Submits a function modeling portfolio with equation selection and graph-based interpretation.","Transport fare, utility consumption, and growth trends",["Grade 11"],"Grade 11"),tt("gm-q2-piecewise-functions","gen-math","Q2","Piecewise Functions","Use piecewise definitions to model tiered pricing, conditional rates, and policy thresholds.","Functions","GM-Q2-PF",[{code:"GM11-PF-1",outcome:"Translate threshold-based scenarios into piecewise functions."},{code:"GM11-PF-2",outcome:"Evaluate and graph piecewise functions for decision-making."}],"Constructs and defends a piecewise model for a threshold-driven policy scenario.","Electricity billing tiers and shipping rates",["Grade 11"],"Grade 11"),tt("gm-q2-statistical-variables","gen-math","Q2","Statistical Variables","Differentiate variable types and build data representations suitable for statistical analysis.","Data and Statistics","GM-Q2-SV",[{code:"GM11-SV-1",outcome:"Classify variables and choose appropriate data representations."},{code:"GM11-SV-2",outcome:"Interpret variable distributions and detect potential data issues."}],"Prepares a data profile report with justified variable treatment and representation choices.","School survey dashboards",["Grade 11"],"Grade 11"),tt("gm-q3-basic-trigonometry","gen-math","Q3","Basic Trigonometry","Solve right-triangle and angle problems using trigonometric ratios in practical contexts.","Geometry and Trigonometry","GM-Q3-BT",[{code:"GM11-BT-1",outcome:"Apply trigonometric ratios to solve angle and distance problems."},{code:"GM11-BT-2",outcome:"Interpret trigonometric results in measurement contexts."}],"Creates a field-measurement solution set that justifies method and interpretation.","Building height and slope analysis",["Grade 11"],"Grade 11"),tt("gm-q3-practical-applications-measurement","gen-math","Q3","Practical Applications of Measurement","Integrate measurement methods to solve multi-step tasks in planning, costing, and logistics.","Measurement Applications","GM-Q3-PAM",[{code:"GM11-PAM-1",outcome:"Select and apply measurement methods in practical multi-step tasks."},{code:"GM11-PAM-2",outcome:"Estimate uncertainty and communicate justified approximations."}],"Delivers a practical measurement plan with justified estimates and assumptions.","Project costing and logistics planning",["Grade 11"],"Grade 11"),tt("gm-q3-transformational-geometry-volume-capacity","gen-math","Q3","Transformational Geometry / Volume and Capacity","Use geometric transformations and solid measurement to solve design and storage problems.","Geometry","GM-Q3-TGVC",[{code:"GM11-TGVC-1",outcome:"Analyze geometric transformations in patterned and engineered layouts."},{code:"GM11-TGVC-2",outcome:"Compute volume and capacity for practical container and space tasks."}],"Produces a geometry-based layout and capacity justification for a real constraint.","Packaging and facility layout",["Grade 11"],"Grade 11"),tt("gm-q3-random-variables-sampling","gen-math","Q3","Random Variables and Sampling","Model uncertainty and sampling behavior to support evidence-based conclusions.","Probability and Sampling","GM-Q3-RVS",[{code:"GM11-RVS-1",outcome:"Define random variables and compute basic expected outcomes."},{code:"GM11-RVS-2",outcome:"Explain sampling methods and sampling bias in practical studies."},{code:"GM11-RVS-3",outcome:"Interpret sampling outcomes in context."}],"Presents a sampling design and interpretation memo for a study question.","Consumer preference and public opinion studies",["Grade 11"],"Grade 11"),tt("gm-q4-compound-interest-annuities-loans","gen-math","Q4","Compound Interest, Annuities, and Loans","Evaluate long-term financial commitments using compound growth and annuity structures.","Financial Mathematics","GM-Q4-CIAL",[{code:"GM11-CIAL-1",outcome:"Compute and compare compound interest outcomes across periods and rates."},{code:"GM11-CIAL-2",outcome:"Model annuity and loan payment structures for planning decisions."},{code:"GM11-CIAL-3",outcome:"Assess affordability and sustainability of borrowing plans."}],"Builds a defensible personal finance plan covering savings and borrowing scenarios.","Education financing and long-term savings",["Grade 11"],"Grade 11"),tt("gm-q4-hypothesis-testing-regression","gen-math","Q4","Hypothesis Testing and Regression","Use inferential reasoning and regression modeling to evaluate data-driven claims.","Statistics","GM-Q4-HTR",[{code:"GM11-HTR-1",outcome:"Formulate and interpret hypotheses using context-appropriate tests."},{code:"GM11-HTR-2",outcome:"Develop and interpret regression models for trend analysis."}],"Produces an evidence report with hypothesis decision and regression-backed interpretation.","School performance and market trend analysis",["Grade 11"],"Grade 11"),tt("gm-q4-propositions-syllogisms-fallacies","gen-math","Q4","Logical Propositions, Syllogisms, and Fallacies","Evaluate arguments using formal logic, syllogistic forms, and fallacy detection.","Logic and Reasoning","GM-Q4-PSF",[{code:"GM11-PSF-1",outcome:"Translate statements into logical propositions and evaluate validity."},{code:"GM11-PSF-2",outcome:"Test syllogistic arguments and identify common fallacies."},{code:"GM11-PSF-3",outcome:"Construct sound arguments supported by formal reasoning."}],"Submits a logic audit that classifies validity and fallacies in real arguments.","Media literacy and policy argument review",["Grade 11"],"Grade 11")];function xA(e,t){return`${e.moduleDescription} ${vA}`}function SA(e,t){const n=t==="Grade 11"?"22 min":"18 min";return e.competencies.map((r,s)=>{const o=yA[r.code];return{id:o?.lessonId??`${e.id}-l${s+1}`,title:r.outcome,duration:n,completed:!1,locked:!1,description:`${r.code} · ${r.outcome}`,competencyCode:r.code,subjectId:e.subjectId,subject:e.subject,quarter:parseInt(e.quarter.replace("Q","")),learningCompetency:r.outcome,...o&&{storagePath:o.storagePath,sourceFile:o.sourceFile}}})}function kA(e){const t=[];let r=0;for(let s=0;si.code),type:r===Math.ceil(e.competencies.length/2)?"module":"practice"})}return t}function TA(e,t){return t.map((n,r)=>({id:`${e.id}-q${r+1}`,title:n.title,questions:Math.max(8,n.competencyCodes.length*5),duration:n.type==="module"?"22 min":"15 min",completed:!1,locked:r>0,type:n.type}))}function PA(e){const t=(e||"").trim();if(!t)return"Grade 11";const n=t.match(/(\d{1,2})/);if(n){const r=parseInt(n[1],10);return r>=11&&r<=12?`Grade ${r}`:"Grade 11"}if(/^grade\s*\d{1,2}$/i.test(t)){const r=parseInt(t.replace(/grade\s*/i,""),10);if(r>=11&&r<=12)return`Grade ${r}`}return"Grade 11"}function _A(e){if(!Array.isArray(e)||e.length===0)return null;const t=new Set(["gen-math","business-math","stats-prob"]),n=e.map(r=>r.trim().toLowerCase()).map(r=>r==="gen-math"||r==="general-mathematics"||r==="general mathematics"?"gen-math":r==="business-math"||r==="business mathematics"||r==="bm"?"business-math":r==="stats-prob"||r==="statistics and probability"||r==="statistics"?"stats-prob":null).filter(r=>r!==null&&t.has(r));return n.length>0?n:null}function EA(e){return PA(e)}function CA(e,t){const n=_A(t),r=bA[e];return n?r.filter(s=>n.includes(s)):r}function AA(e,t){const n=CA(e,t);return wA.filter(r=>r.grade_level_availability.includes(e)).filter(r=>n.includes(r.subjectId)).map(r=>{const s=kA(r),o=SA(r,e),i=TA(r,s),a=Ua[r.subjectId],c=o.some(d=>d.storagePath&&d.storagePath.length>0),u=r.isAvailable??c??!0;return{id:r.id,title:r.moduleTitle,description:xA(r),lessons:o,quizzes:i,progress:0,color:"bg-white",iconColor:"text-slate-700",accentColor:"bg-slate-700",subjectId:r.subjectId,subject:r.subject,subjectColor:a.color,subjectAccentColor:a.accent,grade_level_availability:r.grade_level_availability,recommended_grade_level:r.recommended_grade_level,active_grade_level:e,quarter:r.quarter,content_domain:r.contentDomain,competency_group:r.competencyGroup,competencies:r.competencies,performance_standard:r.performanceStandard,real_world_theme:r.realWorldTheme,lesson_count:o.length,quiz_count:i.length,is_visible_for_grade:r.grade_level_availability.includes(e),curriculum_aligned_label:"Curriculum-aligned",module_sources:r.sources,module_assessments:s,isAvailable:u}})}const KR=Ua,RA=()=>{const e=new Date,t=e.getMonth(),n=e.getFullYear();return t>=7?`${n}-${n+1}-1`:t>=5?`${n-1}-${n}-summer`:`${n-1}-${n}-2`},MA=async e=>{const{uid:t,score:n,subject:r,title:s}=e,o=r||s||"General";let i="";return await _p($,async a=>{const c=W($,"users",t,"gradeSummary","current"),u=await a.get(c);let d;if(!u.exists())d={overallGpa:n/100*4,averageScore:n,quizzesCompleted:1,subjectPerformance:{[o]:{totalScore:n,count:1,avgScore:n}},lastUpdated:On.now()};else{const m=u.data(),y=(m.quizzesCompleted||0)+1,v=((m.averageScore||0)*(m.quizzesCompleted||0)+n)/y,k=m.subjectPerformance||{},S=k[o]||{totalScore:0,count:0},x=S.count+1,T=S.totalScore+n,P=T/x;d={overallGpa:v/100*4,averageScore:v,quizzesCompleted:y,subjectPerformance:{...k,[o]:{totalScore:T,count:x,avgScore:P}},lastUpdated:On.now()}}a.set(c,d,{merge:!0});const l=Xe($,"users",t,"assessments"),f=W(l);i=f.id;const p={title:e.title,subject:o,type:e.type,score:e.score,totalQuestions:e.totalQuestions,completedAt:On.now(),risk:e.risk,intervention:e.intervention,xpEarned:e.xpEarned,badgeUnlocked:e.badgeUnlocked,semester:RA(),createdAt:ce()};a.set(f,p)}),i},QR=(e,t)=>{const n=W($,"users",e,"gradeSummary","current");return Jt(n,r=>{r.exists()?t(r.data()):t(null)})},XR=(e,t)=>{const n=Dt(Xe($,"users",e,"assessments"),vn("completedAt","desc"),Sr(20));return Jt(n,r=>{const s=[];r.forEach(o=>{s.push({id:o.id,...o.data()})}),t(s)})};function IA(e){const{assessmentId:t,overallScorePercent:n,overallRisk:r,intervention:s,proficiencyProfile:o}=e,i=OA(n),a=LA(n,r,o),c=zA(r,s),u=o?.strengths??[],d=o?.weaknesses??[];return{status:"ready",headline:i,summary:a,strengths:u,weaknesses:d,recommendation:c,latestAssessmentId:t,latestScorePercent:n,latestRiskLevel:gp(r),updatedAt:new Date}}async function DA(e,t){const n=W($,"users",e,"dashboardSummary","heroBannerModal");await Ne(n,{...t,updatedAt:ce()})}async function YR(e){const t=W($,"users",e,"dashboardSummary","heroBannerModal"),n=await we(t);if(!n.exists())return null;const r=n.data();return{status:r.status??"not_started",headline:r.headline??"",summary:r.summary??"",strengths:r.strengths??[],weaknesses:r.weaknesses??[],recommendation:r.recommendation??"",latestAssessmentId:r.latestAssessmentId??"",latestScorePercent:r.latestScorePercent??0,latestRiskLevel:r.latestRiskLevel??"",updatedAt:yp(r.updatedAt)}}function JR(e,t){const n=W($,"users",e,"dashboardSummary","heroBannerModal");return Jt(n,r=>{if(!r.exists()){t(null);return}const s=r.data();t({status:s.status??"not_started",headline:s.headline??"",summary:s.summary??"",strengths:s.strengths??[],weaknesses:s.weaknesses??[],recommendation:s.recommendation??"",latestAssessmentId:s.latestAssessmentId??"",latestScorePercent:s.latestScorePercent??0,latestRiskLevel:s.latestRiskLevel??"",updatedAt:yp(s.updatedAt)})},r=>{console.warn("[heroBannerSummaryService] Subscription error:",r),t(null)})}function OA(e){return e>=80?"Outstanding performance! 🎉":e>=65?"Good job — keep it up!":e>=50?"You're making progress!":"Let's build your foundation"}function LA(e,t,n){const r=n?.strengths??[],s=n?.weaknesses??[];if(r.length>0&&s.length>0){const o=r[0],i=s[0];return`You show stronger understanding in ${o}, while ${i} needs more attention. Keep practicing to strengthen your weaker areas!`}return r.length>0?"Great work! You demonstrated strong understanding. Focus on maintaining your performance and expanding your skills.":s.length>0?"You have some areas to work on. With guided practice and focused review, you can build a stronger foundation in the topics that need attention.":e>=70?"You performed well overall! You have a solid foundation. Continue practicing to maintain and expand your skills.":e>=50?"You showed understanding in several areas. Keep practicing and review the topics where you lost points.":"The diagnostic shows there are foundational topics to work on. Don't worry — with consistent practice, you'll build confidence and improve!"}function zA(e,t,n){return t&&t.trim().length>0?t:(gp(e),e==="critical"||e==="high"?"We recommend starting with foundational lessons and guided practice to build confidence. Focus on one topic at a time, and don't hesitate to review earlier material.":e==="moderate"?"Start with guided review lessons to strengthen your foundation, then progressively tackle more challenging problems.":"Continue practicing regularly and review topics you find challenging. Your personalized learning path will guide you to the right lessons.")}function gp(e){switch(e){case"low":return"Low";case"moderate":return"Moderate";case"high":return"High";case"critical":return"Critical";default:return e.charAt(0).toUpperCase()+e.slice(1)}}function yp(e){return e?e instanceof Date?e:e instanceof On?e.toDate():typeof e=="string"||typeof e=="number"?new Date(e):new Date:new Date}const jA=h.lazy(()=>oe(()=>import("./LoginPage-DSKY9f8E.js"),__vite__mapDeps([13,3,14,7,8,15,16,17,18,19,1,2,4,5,6,9,10]))),NA=h.lazy(()=>oe(()=>import("./TeacherDashboard-wimn3zBd.js"),__vite__mapDeps([20,3,14,7,8,15,21,22,23,24,1,2,4,5,6,9,10,25,26,27,28,29,30,31,32,16,33,34,35,36,18,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]))),$A=h.lazy(()=>oe(()=>import("./AdminDashboard-i4G_vjZ1.js"),__vite__mapDeps([57,3,58,33,24,35,7,22,44,43,40,59,21,14,8,23,1,2,4,5,6,9,10,60,38,26,15,48,46,28,29,30,31,32,16,53,42,19,25,52,18,17,27,45,47,54,61,62,63,36]))),Lu=h.lazy(()=>oe(()=>import("./Sidebar-Bm5I2Ejg.js").then(e=>e.a),__vite__mapDeps([58,3,33,24,35,7,22,44,43,40,59]))),FA=h.lazy(()=>oe(()=>import("./HeroBanner-BDsbfXfG.js"),__vite__mapDeps([64,3,53,7,22,8,1,2,32,31,16,4,5,6,9,10]))),VA=h.lazy(()=>oe(()=>import("./RightSidebar-WvOWGMnC.js"),__vite__mapDeps([65,3,66,50,35,7,44,1,2,4,5,6,8,9,10]))),BA=h.lazy(()=>oe(()=>import("./XPNotification-EXiWPwap.js"),__vite__mapDeps([67,3,16,1,2,4,5,6,7,8,9,10]))),UA=h.lazy(()=>oe(()=>import("./index-CT9JRJBD.js"),__vite__mapDeps([68,3,32,69,30,50,56,29,23,22,1,2,4,5,6,7,8,9,10])).then(e=>({default:e.NotificationBell})));h.lazy(()=>oe(()=>import("./SupplementalBanner-DcjEtH8Q.js"),__vite__mapDeps([70,3,22,16,44,1,2,4,5,6,7,8,9,10])));const qA=h.lazy(()=>oe(()=>import("./SupplementalPillCarousel-jsoA7qpk.js"),__vite__mapDeps([71,3,44,1,2,4,5,6,7,8,9,10]))),GA=h.lazy(()=>oe(()=>import("./LearningPath-DjGP7KJN.js"),__vite__mapDeps([72,3,73,63,1,2,52,4,5,6,7,8,9,10]))),WA=h.lazy(()=>oe(()=>import("./CompetencyRadarChart-SUEb2v3B.js"),__vite__mapDeps([74,3,1,2,48,40,16,8,4,5,6,7,9,10])).then(e=>({default:e.CompetencyRadarChart}))),HA=h.lazy(()=>oe(()=>import("./ModulesPage-D50pSjZj.js"),__vite__mapDeps([75,3,47,1,2,73,63,52,14,7,8,76,38,22,4,5,6,9,10,26,77,43,44,36,34,50,12,56,48,40,31,61,0,78,49,25,79,16]))),ZA=h.lazy(()=>oe(()=>import("./AIChatPage-BNaYJCk8.js"),__vite__mapDeps([80,3,14,7,8,15,51,9,10,1,2,4,5,6,27,25,23,43,37]))),KA=h.lazy(()=>oe(()=>import("./GradesPage-Czo_osam.js"),__vite__mapDeps([81,3,14,7,8,48,40,49,1,2,42,31,32,79,4,5,6,9,10]))),QA=h.lazy(()=>oe(()=>import("./LeaderboardPage-CP8e3_-L.js"),__vite__mapDeps([82,3,22,52,83,1,2,4,5,6,7,8,9,10]))),XA=h.lazy(()=>oe(()=>import("./QuizBattlePage-BFiR3wAo.js"),__vite__mapDeps([84,3,66,48,40,1,2,14,7,8,60,38,26,15,62,54,77,85,86,16,41,44,4,5,6,9,10]))),YA=h.lazy(()=>oe(()=>import("./AvatarShop-Dfbf05y9.js"),__vite__mapDeps([87,3,7,83,1,2,35,85,86,45,16,59,4,5,6,8,9,10]))),JA=h.lazy(()=>oe(()=>import("./FloatingAITutor-DKZKREY2.js"),__vite__mapDeps([88,3,89,39,22,37,1,2,4,5,6,7,8,9,10]))),eR=h.lazy(()=>oe(()=>import("./RewardsModal-DhmptbGU.js"),__vite__mapDeps([90,3,1,2,22,4,5,6,7,8,9,10]))),qo=h.lazy(()=>oe(()=>import("./ProfileModal-CMm42gXn.js"),__vite__mapDeps([91,3,14,7,8,15,60,38,26,92,4,2,5,22,39,27,46,17,36,45,1,6,9,10]))),tR=h.lazy(()=>oe(()=>import("./ConfirmModal-BMBZzISp.js"),__vite__mapDeps([21,3,14,7,8,22,23,24,1,2,4,5,6,9,10]))),Go=h.lazy(()=>oe(()=>import("./SettingsModal-PUs-qSAt.js"),__vite__mapDeps([93,3,60,7,38,26,14,8,15,62,21,22,23,24,1,2,4,5,6,9,10,92,39,27,46,30,42,36,40,69,52,18]))),nR=h.lazy(()=>oe(()=>import("./ScientificCalculator-7T0QjPrs.js"),__vite__mapDeps([76,3,38,22,1,2,4,5,6,7,8,9,10]))),rR=h.lazy(()=>oe(()=>import("./InitialAssessmentModal-Z0B8mPEg.js"),__vite__mapDeps([94,3,14,7,8,95,1,2,22,50,4,5,6,9,10]))),sR=h.lazy(()=>oe(()=>import("./AssessmentPage-CX2nNZ46.js"),__vite__mapDeps([96,3,14,7,8,95,89,22,52,50,44,1,2,4,5,6,9,10]))),oR=()=>{const{isLoggedIn:e,userProfile:t,userRole:n,loading:r,refreshProfile:s}=Rr();Vi();const o=jt(),i=b.jsx("div",{className:"flex min-h-[320px] items-center justify-center text-sm font-semibold text-slate-500",children:"Loading content..."}),a=b.jsx("div",{className:"pb-4 text-sm font-semibold text-slate-500",children:"Loading dashboard content..."}),c=b.jsx("div",{className:"h-11 w-11 shrink-0 rounded-xl bg-[#edf1f7]","aria-hidden":"true"}),u=b.jsx("div",{className:"h-screen w-72 border-r border-[#dde3eb] bg-white/70","aria-hidden":"true"}),d=b.jsx("div",{className:"min-h-[240px] rounded-3xl border border-[#dde3eb] bg-white/70","aria-hidden":"true"}),[l,f]=h.useState("Dashboard"),p=h.useRef(null),m=h.useRef(null),[y,g]=h.useState(!1),[v,k]=h.useState(!1),[S,x]=h.useState(!1),[T,P]=h.useState(!1);h.useEffect(()=>{(async()=>{try{const M=await we(W($,"settings","general"));M.exists()&&M.data()?.maintenanceMode===!0?(x(!0),e&&n!=="admin"&&await nu()):x(!1)}catch{}P(!0)})()},[e,n]);const _=t,[w,R]=h.useState(_?.level||1),[A,B]=h.useState(_?.currentXP||0),[F,H]=h.useState(_?.totalXP||0),re=Math.floor(100*Math.pow(1.5,w-1));let te=0;for(let C=1;C{const C=_?.learnerCurriculumAssignments?.subjects??_?.assignedSubjects??_?.curriculumAssignedSubjects??[];return Array.isArray(C)?C:[]},[_]),ue=h.useMemo(()=>AA(ie,se),[ie,se]),[D,he]=h.useState({collapsed:!1}),rt={Dashboard:"/",Modules:"/modules","AI Chat":"/chat",Assessment:"/assessment","Quiz Battle":"/battle",Leaderboard:"/leaderboard",Grades:"/grades","Avatar Studio":"/avatar"},X={"/":"Dashboard","/modules":"Modules","/chat":"AI Chat","/assessment":"Assessment","/battle":"Quiz Battle","/leaderboard":"Leaderboard","/grades":"Grades","/avatar":"Avatar Studio"};h.useEffect(()=>{const C=X[o.pathname]||"Dashboard";f(C)},[o.pathname]),h.useEffect(()=>{const C=()=>{const M=X[window.location.pathname]||"Dashboard";f(M)};return window.addEventListener("popstate",C),()=>window.removeEventListener("popstate",C)},[]);const U=(C,M)=>{M?Ir(M):C==="Modules"&&l!=="Modules"&&Ir(null),C==="Quiz Battle"&&l!=="Quiz Battle"?(he({collapsed:y}),g(!0)):l==="Quiz Battle"&&C!=="Quiz Battle"&&g(D.collapsed),f(C);const G=rt[C];G&&window.location.pathname!==G&&window.history.pushState({},"",G),k(!1)},[q,J]=h.useState(!1),[xe,ae]=h.useState({show:!1,xp:0,message:""}),[le,Z]=h.useState(!1),[O,ee]=h.useState(!1),[ye,K]=h.useState(!1),[Ye,Le]=h.useState(!1),[Je,an]=h.useState({}),[ht,Ir]=h.useState(null),[Dr,Ue]=h.useState(!1),[it,$t]=h.useState(gs),[Js,Ft]=h.useState(""),[cn,Hn]=h.useState(!1),[Tn,st]=h.useState(!1),[Ht,pt]=h.useState(null),[eo,Zn]=h.useState(!1),[Or,Kn]=h.useState(!1),[to,Qn]=h.useState(0),[at,Xn]=h.useState(!1),[Pn,Lr]=h.useState(""),[zr,Y]=h.useState([]),[pe,Pe]=h.useState(_?.atRiskSubjects||[]),[$e,Vt]=h.useState(_?.priorityTopics||[]),[Ce,qe]=h.useState(_?.gpa||"0.00");h.useEffect(()=>{e&&n==="student"&&t&&ZE(t.uid).then(C=>{if(C&&C.averageScore>0){const M=Math.min(C.averageScore/25,4).toFixed(2);qe(M)}}).catch(C=>console.error("Error loading progress for GPA:",C))},[e,n,t]);const[Tt,et]=h.useState(!1);h.useEffect(()=>{_&&n==="student"?(R(_.level||1),B(_.currentXP||0),H(_.totalXP||0),Pe(_.atRiskSubjects||[]),Vt(_.priorityTopics||[]),et(!0)):n!=="student"&&et(!0)},[t,n]),h.useEffect(()=>{if(!e||n!=="student"){Hn(!1);return}let C=!1;const M=()=>{C||Hn(!0)},G=window.requestIdleCallback,me=window.cancelIdleCallback,ao=window.setTimeout(M,800),co=window.requestAnimationFrame(()=>{G||M()}),mt=G?.(()=>{M()},{timeout:500});return()=>{C=!0,window.clearTimeout(ao),window.cancelAnimationFrame(co),mt!==void 0&&me&&me(mt)}},[e,n]),h.useEffect(()=>{an({})},[t?.uid]);const Ge=h.useMemo(()=>{const C=new Set;return pe.map(G=>mA(G)).filter(G=>G!==null).filter(G=>C.has(G)?!1:(C.add(G),!0))},[pe]),_n=h.useMemo(()=>{const C=$e.length>0?$e:Ge,M=new Set;return C.filter(G=>M.has(G)?!1:(M.add(G),!0))},[$e,Ge]),Bt=()=>{st(!0)};h.useEffect(()=>{const C=()=>st(!0);return window.addEventListener("mathpulse:open-assessment",C),()=>window.removeEventListener("mathpulse:open-assessment",C)},[]),h.useEffect(()=>{if(!e||n!=="student"||!Tt||!t?.uid)return;let C=!1;return(async()=>{try{Zn(!!_?.assessmentDismissed),Kn(!!_?.initialAssessmentCompleted);const G=await Wo(W($,"diagnosticResults",t.uid)).catch(()=>we(W($,"diagnosticResults",t.uid))),me=await Wo(W($,"competencyProfiles",t.uid)).catch(()=>we(W($,"competencyProfiles",t.uid)));if(C)return;const ao=G.exists()&&G.data()?.status==="completed",co=me.exists()&&me.data()?.overallScore>0;if(!ao&&!co){pt(!1);const mt=setTimeout(()=>{!C&&!eo&&!Or&&(sessionStorage.getItem("mathpulse_iar_session_dismissed")==="true"||st(!0))},1e3);return()=>clearTimeout(mt)}else{if(pt(!0),G.exists()){const mt=G.data();mt?.riskProfile&&(Pe(mt.riskProfile.weak_domains||[]),Vt(mt.riskProfile.critical_gaps||[]))}if(me.exists()){const mt=me.data();mt?.primaryWeakness&&Pe(Wa=>[...new Set([...Wa,mt.primaryWeakness])])}}}catch(G){console.error("[diagnostic] Firestore check failed:",G)}})(),()=>{C=!0}},[e,n,Tt,t?.uid,to]);const qa=[...pe].sort().join("|"),Yn=t?.uid?`mathpulse_supplemental_dismissed_${t.uid}`:null;h.useEffect(()=>{if(!Yn){Ft("");return}try{const C=localStorage.getItem(Yn)||"";Ft(C)}catch{Ft("")}},[Yn]);const vp=()=>{if(Ft(""),!!Yn)try{localStorage.removeItem(Yn)}catch{}};pe.length>0,h.useEffect(()=>{(async()=>{if(!t?.uid){$t(gs);return}try{const M=await Gh(t.uid);$t(M)}catch(M){console.error("Error loading user settings:",M),$t(gs)}})()},[t?.uid]),h.useEffect(()=>{eC(it)},[it]);const wp=(C,M)=>{st(!1),Lr(C),Y(M),Xn(!0)},Ga=async C=>{if(Xn(!1),pt(!0),f("Dashboard"),C.xpEarned>0&&t?.uid)try{await Do(t.uid,C.xpEarned,"manual","Diagnostic assessment completed"),ct.success(`Assessment complete! +${C.xpEarned} XP earned. ${C.badgeUnlocked.replace("_"," ")} badge unlocked!`)}catch{ct.success("Assessment complete!")}else ct.success("Assessment complete!");if(t?.uid&&C.competencyScores&&C.proficiencyProfile)try{await HE(t.uid,{uid:t.uid,assessmentId:`assessment-${Date.now()}`,completedAt:new Date,rawScore:C.overallScorePercent,totalQuestions:Object.values(C.competencyScores).reduce((M,G)=>M+G.attempted,0),correctAnswers:Object.values(C.competencyScores).reduce((M,G)=>M+G.correct,0),timeSpentSeconds:0,competencyScores:C.competencyScores,recommendations:C.proficiencyProfile.weaknesses.map(M=>`Focus on ${M}`),proficiencyProfile:C.proficiencyProfile,assessmentType:"initial"})}catch(M){console.error("[WARN] Failed to save competency profile:",M)}if(t?.uid)try{const M=IA({assessmentId:Pn?`assessment-${Pn}`:`assessment-${Date.now()}`,overallScorePercent:C.overallScorePercent,overallRisk:C.overallRisk,intervention:C.intervention,proficiencyProfile:C.proficiencyProfile});await DA(t.uid,M)}catch(M){console.error("[App] Failed to save hero banner summary:",M)}if(t?.uid){try{const M=await we(W($,"diagnosticResults",t.uid));if(M.exists()){const G=M.data();G?.riskProfile&&(Pe(G.riskProfile.weak_domains||[]),Vt(G.riskProfile.critical_gaps||[]))}vp()}catch(M){console.error("[diagnostic] Failed to refresh risk data:",M)}try{await kt(W($,"users",t.uid),{initialAssessmentCompleted:!0,assessmentDismissed:!1,assessmentCompletedAt:ce()}),await Do(t.uid,50,"initial_assessment","Initial assessment completed")}catch(M){console.error("[App] Failed to persist assessment completion:",M)}try{await MA({uid:t.uid,testId:Pn||"diagnostic",title:"Diagnostic Assessment",subject:"General Mathematics",type:"diagnostic",score:C.overallScorePercent,totalQuestions:Object.values(C.competencyScores||{}).reduce((M,G)=>M+G.attempted,0),risk:C.overallRisk,intervention:C.intervention,xpEarned:C.xpEarned,badgeUnlocked:C.badgeUnlocked})}catch(M){console.error("[App] Failed to persist grade result:",M)}}},xp=()=>{f("AI Chat")},Sp=async(C,M)=>{if(t)try{const G=await Do(t.uid,C,"manual",M);B(G.xp),G.leveledUp&&R(G.newLevel),H(me=>me+C),await s(),ae({show:!0,xp:C,message:M})}catch(G){console.error("Error awarding XP:",G)}},no=async()=>{try{await nu(),an({}),f("Dashboard"),Z(!1)}catch(C){console.error("Error logging out:",C)}},En=async C=>{if(!t){K(!1),ee(!1);return}const M={};["name","email","phone","photo","avatarLayers","gender","lrn","grade","section","school","enrollmentDate","major","gpa","department","subject","yearsOfExperience","qualification","position"].forEach(me=>{C[me]!==void 0&&(M[me]=C[me])});try{await OP(t.uid,M),an(me=>({...me,...M})),K(!1),ee(!1),ct.success("Profile updated successfully")}catch(me){console.error("Error saving profile:",me),ct.error("Failed to update profile")}},ro=async C=>{if(t?.uid)try{const M=await JE(t.uid,C);$t(M),ct.success("Settings saved successfully")}catch(M){throw console.error("Error saving settings:",M),ct.error("Failed to save settings"),M}},so=async()=>{if(!t?.uid)return;const C=await rC(t.uid),M=new Blob([JSON.stringify(C,null,2)],{type:"application/json"}),G=URL.createObjectURL(M),me=document.createElement("a");me.href=G,me.download=`mathpulse-data-export-${t.uid}-${Date.now()}.json`,document.body.appendChild(me),me.click(),document.body.removeChild(me),URL.revokeObjectURL(G),ct.success("Data export downloaded")},oo=async()=>{await nC(),ct.success("Local cache cleared")},io=async()=>{if(!t)throw new Error("No active profile found.");const C=n==="student"?_?.lrn||t.uid:void 0;n==="student"&&(await Ho(W($,"diagnosticResults",t.uid)).catch(()=>{}),await Ho(W($,"competencyProfiles",t.uid)).catch(()=>{}));const{resetTestingDataForRole:M}=await oe(async()=>{const{resetTestingDataForRole:me}=await import("./testResetService-BUxWmPp7.js");return{resetTestingDataForRole:me}},__vite__mapDeps([97,1,2,3,4,5,6,7,8,9,10])),G=await M({uid:t.uid,role:n,lrn:C});n==="student"&&(R(1),B(0),H(0),Pe([]),Vt([]),pt(null),Zn(!1),Kn(!1),qe("0.00"),f("Dashboard"),s(),Qn(me=>me+1)),ct.success(G.summary)},We=t?{uid:t.uid,name:t.name,email:t.email,phone:t.phone||"",photo:t.photo||"",avatarLayers:t.avatarLayers,role:t.role,...n==="student"&&_?{lrn:_.lrn,grade:_.grade,section:_.section,school:_.school,enrollmentDate:_.enrollmentDate,major:_.major,gpa:Ce}:{},...Je}:{uid:void 0,name:"User",email:"",phone:"",photo:"",avatarLayers:void 0,role:n},jr=We.name.trim().split(/\s+/).find(C=>/\p{L}/u.test(C))||We.name.trim()||"User";if(h.useEffect(()=>{const C=M=>{if(!(M.target instanceof HTMLInputElement||M.target instanceof HTMLTextAreaElement)&&M.altKey)switch(M.key.toLowerCase()){case"d":M.preventDefault(),U("Dashboard");break;case"m":M.preventDefault(),U("Modules");break;case"c":M.preventDefault(),U("AI Chat");break;case"g":M.preventDefault(),U("Grades");break;case"b":M.preventDefault(),U("Quiz Battle");break;case"s":M.preventDefault(),ee(!0);break;case"p":M.preventDefault(),K(!0);break;case"k":M.preventDefault(),Le(G=>!G);break}};if(e&&n==="student")return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[e,n]),h.useEffect(()=>{const C=M=>{const G=M.detail;G?.tab&&e&&U(G.tab)};return window.addEventListener("mathpulse:navigate",C),()=>window.removeEventListener("mathpulse:navigate",C)},[e]),r)return b.jsx(tr,{});if(S&&(!e||n!=="admin"))return b.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gradient-to-br from-[#f8fafc] to-[#eef2ff] p-6",children:b.jsxs("div",{className:"bg-white rounded-2xl shadow-xl border border-slate-200 p-8 max-w-md w-full text-center",children:[b.jsx("div",{className:"w-16 h-16 rounded-full bg-amber-100 flex items-center justify-center mx-auto mb-5",children:b.jsx(ki,{className:"w-8 h-8 text-amber-600"})}),b.jsx("h1",{className:"text-xl font-bold text-[#1e293b] mb-2",children:"System Under Maintenance"}),b.jsx("p",{className:"text-sm text-[#64748b] leading-relaxed mb-4",children:"MathPulse AI is currently undergoing scheduled maintenance. All user sessions have been paused and your progress has been saved."}),b.jsx("p",{className:"text-xs text-[#94a3b8]",children:"Please check back shortly. We apologize for the inconvenience."})]})});if(!e)return b.jsx(h.Suspense,{fallback:b.jsx(tr,{message:"Loading sign in..."}),children:b.jsx(jA,{})});if(!(n!=="student"||Tt))return b.jsx(tr,{message:"Preparing your dashboard..."});if(n==="teacher")return b.jsx($o,{children:b.jsxs(b.Fragment,{children:[b.jsx(Bo,{}),b.jsx(h.Suspense,{fallback:b.jsx(tr,{message:"Loading teacher dashboard..."}),children:b.jsx(NA,{onLogout:no,onOpenProfile:()=>K(!0),onOpenSettings:()=>ee(!0)})}),ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(qo,{isOpen:ye,onClose:()=>K(!1),profileData:We,onSave:En})}),O&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(Go,{isOpen:O,onClose:()=>ee(!1),profileData:We,onSave:En,settingsData:it,onSaveSettings:ro,onApplySettingsPreview:$t,onExportData:so,onClearCache:oo,onResetData:io})}),b.jsx(Oo,{position:"top-right",richColors:!0,closeButton:!0})]})});if(n==="admin")return b.jsx($o,{children:b.jsxs(b.Fragment,{children:[b.jsx(Bo,{}),b.jsx(h.Suspense,{fallback:b.jsx(tr,{message:"Loading admin dashboard..."}),children:b.jsx($A,{onLogout:no,onOpenProfile:()=>K(!0),onOpenSettings:()=>ee(!0)})}),ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(qo,{isOpen:ye,onClose:()=>K(!1),profileData:We,onSave:En})}),O&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(Go,{isOpen:O,onClose:()=>ee(!1),profileData:We,onSave:En,settingsData:it,onSaveSettings:ro,onApplySettingsPreview:$t,onExportData:so,onClearCache:oo,onResetData:io})}),b.jsx(Oo,{position:"top-right",richColors:!0,closeButton:!0})]})});const kp=b.jsx($o,{children:b.jsxs(b.Fragment,{children:[b.jsx(Bo,{}),b.jsx($_,{children:b.jsxs("div",{className:"flex h-screen w-full bg-[#f8faff] overflow-hidden",children:[b.jsx("div",{className:"hidden lg:block",children:b.jsx(h.Suspense,{fallback:u,children:b.jsx(Lu,{activeTab:l,setActiveTab:U,userRole:n,onOpenSettings:()=>ee(!0),onLogout:()=>Z(!0),sidebarCollapsed:y,setSidebarCollapsed:g,forceCollapsed:l==="Quiz Battle"})})}),v&&b.jsxs(b.Fragment,{children:[b.jsx("button",{"aria-label":"Close navigation",className:"fixed inset-0 z-40 bg-slate-900/40 backdrop-blur-[1px] lg:hidden",onClick:()=>k(!1)}),b.jsx("div",{className:"fixed inset-y-0 left-0 z-50 p-3 lg:hidden",children:b.jsx(h.Suspense,{fallback:u,children:b.jsx(Lu,{mode:"mobile",onRequestClose:()=>k(!1),activeTab:l,setActiveTab:U,userRole:n,onOpenSettings:()=>{ee(!0),k(!1)},onLogout:()=>{Z(!0),k(!1)},sidebarCollapsed:!1})})})]}),b.jsxs("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 bg-gradient-to-br from-indigo-200 via-fuchsia-50 to-orange-100 relative z-10 shadow-[rgba(124,58,237,0.05)_0px_0px_30px_inset]",children:[b.jsx("div",{className:"absolute inset-0 bg-math-pattern opacity-30 pointer-events-none mix-blend-multiply z-0"}),b.jsxs("header",{className:"bg-white/90 backdrop-blur-md border-b border-[#dde3eb] px-3 sm:px-6 py-2 sm:py-3 flex flex-row items-center justify-between gap-2 sm:gap-3 sticky top-0 z-30 shadow-sm",children:[b.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[b.jsx("button",{className:"lg:hidden p-2 rounded-xl bg-[#edf1f7] hover:bg-[#dde3eb] text-[#5a6578] hover:text-primary transition-colors",onClick:()=>k(!0),"aria-label":"Open navigation",children:b.jsx(Ox,{size:20})}),b.jsxs("div",{className:"min-w-0",children:[b.jsx("h1",{className:"text-base sm:text-xl font-display font-bold text-[#0a1628] leading-tight truncate",children:l==="Grades"?"Assessment":l==="Leaderboard"?"Leadership Board":l}),b.jsxs("p",{className:"hidden sm:block text-xs text-[#5a6578] font-body truncate",children:["Welcome back, ",We.name.split(" ")[0],"!"]})]}),b.jsxs("div",{className:"hidden md:flex items-center gap-2 ml-2",children:[b.jsxs("button",{onClick:()=>J(!0),className:"flex items-center gap-1.5 px-3 py-1.5 bg-rose-50 hover:bg-rose-100 border border-rose-200/60 rounded-lg transition-colors cursor-pointer group",title:"View Rewards & Progress",children:[b.jsx(ps,{className:"h-3.5 w-3.5 text-rose-500","aria-hidden":"true"}),b.jsxs("span",{className:"text-xs font-display font-bold text-rose-700",children:["Lv ",w]})]}),b.jsxs("button",{onClick:()=>J(!0),className:"flex items-center gap-2 px-3 py-1.5 bg-violet-50 hover:bg-violet-100 border border-violet-200/60 rounded-lg transition-colors cursor-pointer w-[180px] xl:w-[200px] justify-between",title:`${V}/${re} XP to next level`,children:[b.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[b.jsx(Ti,{className:"h-3.5 w-3.5 text-violet-500","aria-hidden":"true"}),b.jsxs("span",{className:"text-xs font-display font-bold text-violet-700 whitespace-nowrap",children:[A," XP"]})]}),b.jsx("div",{className:"h-1.5 flex-1 min-w-0 bg-violet-100 rounded-full overflow-hidden",children:b.jsx("div",{className:"h-full bg-violet-500 rounded-full transition-all e-w",style:{"--w":`${Math.max(0,Math.min(100,V/re*100))}%`}})})]}),b.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 bg-orange-50 border border-orange-200/60 rounded-lg",children:[b.jsx(ms,{className:"h-3.5 w-3.5 text-orange-500","aria-hidden":"true"}),b.jsx("span",{className:"text-xs font-display font-bold text-orange-700",children:"Daily Rewards"})]})]})]}),b.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 shrink-0",children:[b.jsx("button",{onClick:()=>Le(C=>!C),className:"p-3 rounded-xl bg-[#edf1f7] hover:bg-[#dde3eb] text-[#5a6578] hover:text-primary transition-all group",title:"Scientific Calculator (Alt+K)",children:b.jsx(bx,{size:20,className:"group-hover:scale-110 transition-transform"})}),b.jsx(h.Suspense,{fallback:c,children:b.jsx(UA,{})}),b.jsxs("button",{onClick:()=>K(!0),className:"flex items-center gap-2.5 h-11 shrink-0 bg-[#edf1f7] hover:bg-[#dde3eb] p-1.5 pr-3 rounded-lg cursor-pointer transition-all group","aria-label":`Profile: ${We.name}`,children:[b.jsx(hA,{src:We.photo,name:We.name,className:"w-8 h-8 rounded-lg"}),b.jsx("div",{className:"hidden sm:block text-left min-w-0 flex-1",children:b.jsx("p",{className:"text-sm font-semibold text-[#0a1628] leading-none group-hover:text-primary transition-colors font-body truncate",children:jr})})]})]})]}),b.jsx("main",{ref:m,className:`flex-1 min-h-0 ${l==="AI Chat"||l==="Modules"?"overflow-hidden p-0":"p-3 lg:p-4 overflow-y-auto pb-24 sm:pb-28"}`,children:b.jsx(Ff,{mode:"wait",children:b.jsx(Ln.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25,ease:[.22,1,.36,1]},className:l==="AI Chat"||l==="Modules"?"h-full min-h-0":"",children:l==="Dashboard"?b.jsx("div",{className:"px-4 sm:px-6 xl:px-10 py-6 sm:py-8",children:b.jsxs("div",{className:"grid grid-cols-12 gap-6 sm:gap-8 lg:gap-10",children:[b.jsxs("div",{className:"col-span-12 xl:col-span-9 flex flex-col gap-10 lg:gap-14 pt-0",children:[b.jsx(h.Suspense,{fallback:d,children:b.jsx(FA,{userName:jr,userLevel:w,avatarLayers:We.avatarLayers,onContinueLearning:()=>U("Modules"),showAssessmentTooltip:!Ht&&Ht!==null,onOpenAssessment:Bt,studentId:t?.uid,assessmentCompleted:Ht===!0})}),cn&&Ht&&Ge.length>0&&b.jsxs("div",{className:"rounded-2xl border border-amber-300 bg-amber-50 px-5 py-4 shadow-sm dark:border-amber-400/40 dark:bg-amber-400/10",children:[b.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[b.jsxs("div",{children:[b.jsxs("p",{className:"inline-flex items-center gap-2 text-sm font-black text-amber-900 dark:text-amber-200",children:[b.jsx(ki,{className:"h-4 w-4"}),"Assessment Focus Review"]}),b.jsx("p",{className:"mt-1 text-sm text-amber-900/85 dark:text-amber-100/90",children:"Your latest diagnostic flagged these topics for review. Modules are prioritized based on this focus order."})]}),b.jsxs("button",{type:"button",onClick:()=>U("Modules"),className:"inline-flex items-center gap-1.5 rounded-xl bg-amber-600 px-3 py-2 text-xs font-bold text-white transition-colors hover:bg-amber-700",children:["Open Modules",b.jsx(ux,{className:"h-3.5 w-3.5"})]})]}),b.jsx("div",{className:"mt-3 flex flex-wrap gap-2",children:_n.map((C,M)=>b.jsxs("span",{className:"rounded-full bg-white/90 px-3 py-1 text-xs font-semibold text-amber-900 shadow-sm dark:bg-amber-100/20 dark:text-amber-100",children:[M+1,". ",pA[C]]},C))})]}),cn&&pe.length>0&&b.jsx(h.Suspense,{fallback:a,children:b.jsx(qA,{atRiskSubjects:pe,onTopicClick:C=>{U("Modules")}})}),Tt&&cn&&b.jsx(h.Suspense,{fallback:a,children:b.jsx("div",{className:"pb-4",children:b.jsx(GA,{modules:ue,onNavigateToModules:C=>U("Modules",C),atRiskSubjects:pe,priorityTopics:_n})})}),Tt&&cn&&b.jsx(h.Suspense,{fallback:a,children:b.jsx("div",{className:"pb-4",children:b.jsx(WA,{})})})]}),b.jsx("div",{className:"col-span-12 xl:col-span-3 pt-2",children:cn?b.jsx(h.Suspense,{fallback:d,children:b.jsx(VA,{currentUserId:t?.uid||"",onOpenRewards:()=>J(!0),onOpenLeaderboard:()=>f("Leaderboard"),onNavigateToModules:()=>f("Modules"),onNavigateToQuizBattle:()=>U("Quiz Battle"),userLevel:w,userPhoto:We.photo,currentXP:V,xpToNextLevel:re,overallXP:A,userName:jr})}):d})]})}):l==="Modules"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(HA,{onEarnXP:Sp,atRiskSubjects:pe,priorityTopics:_n,initialModuleId:ht,isInQuizMode:Dr,setIsInQuizMode:Ue,hasCompletedDiagnostic:Ht??!1})}):l==="Leaderboard"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(QA,{currentUserPhoto:We.photo})}):l==="Quiz Battle"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(XA,{})}):l==="AI Chat"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(ZA,{})}):l==="Grades"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(KA,{})}):l==="Avatar Studio"?b.jsx(h.Suspense,{fallback:i,children:b.jsx(YA,{onSaveProfile:C=>{an(M=>({...M,avatarLayers:C}))},onNavigateToModules:()=>U("Modules")})}):b.jsxs("div",{className:"flex-1 flex items-center justify-center text-[#a8a5b3] font-medium font-body",children:[l," Content Coming Soon"]})},l)})}),l!=="AI Chat"&&!Dr&&b.jsx(h.Suspense,{fallback:null,children:b.jsx("div",{className:"fixed bottom-4 right-4 sm:bottom-8 sm:right-8 z-50",children:b.jsx(JA,{constraintsRef:p,onFullScreen:xp})})}),b.jsx(h.Suspense,{fallback:null,children:b.jsx(BA,{xp:xe.xp,message:xe.message,show:xe.show,onComplete:()=>ae(C=>({...C,show:!1}))})}),q&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(eR,{isOpen:q,onClose:()=>J(!1),userLevel:w,currentXP:A,xpToNextLevel:re,totalXP:F,userId:t?.uid||""})}),ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(qo,{isOpen:ye,onClose:()=>K(!1),profileData:We,onSave:En})}),le&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(tR,{isOpen:le,onClose:()=>Z(!1),onConfirm:no,title:"Confirm Logout",message:"Are you sure you want to log out? Your progress is saved automatically.",confirmText:"Logout",cancelText:"Stay",type:"warning",icon:"logout"})}),O&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(Go,{isOpen:O,onClose:()=>ee(!1),profileData:We,onSave:En,settingsData:it,onSaveSettings:ro,onApplySettingsPreview:$t,onExportData:so,onClearCache:oo,onResetData:io})}),Ye&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(nR,{isOpen:Ye,onClose:()=>Le(!1)})}),Tn&&!at&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(rR,{isOpen:Tn&&!at,onClose:()=>st(!1),onDismiss:()=>{st(!1),Zn(!0)},userId:t?.uid||"",strand:_?.major||"STEM",gradeLevel:_?.grade||"Grade 11",onAssessmentStart:wp,onAssessmentComplete:Ga})}),at&&b.jsx(h.Suspense,{fallback:null,children:b.jsx(sR,{testId:Pn,questions:zr,userName:jr,onComplete:Ga,onCancel:()=>{Xn(!1),f("Dashboard")}})})]})]})}),b.jsx(Oo,{position:"top-right",richColors:!0,closeButton:!0})]})});return b.jsx(zP,{children:kp})},ns="mathpulse_chunk_reload_attempted",iR=[/Failed to fetch dynamically imported module/i,/Loading chunk \d+ failed/i,/Importing a module script failed/i,/error loading dynamically imported module/i];function zu(e){return e?.message?iR.some(t=>t.test(e.message)):!1}class aR extends h.Component{constructor(t){super(t),this.state={hasError:!1,error:null}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){if(console.error("[ErrorBoundary] Caught render error:",t.message,n.componentStack),zu(t))try{sessionStorage.getItem(ns)||(sessionStorage.setItem(ns,String(Date.now())),console.warn("[ErrorBoundary] Stale chunk detected — reloading to recover."),window.location.reload())}catch{}}handleReset=()=>{try{sessionStorage.removeItem(ns)}catch{}this.setState({hasError:!1,error:null})};render(){if(this.state.hasError){if(zu(this.state.error)){let t=!1;try{t=!!sessionStorage.getItem(ns)}catch{}if(!t)return null}return this.props.fallback?this.props.fallback:b.jsx("div",{className:"flex min-h-screen flex-col items-center justify-center bg-slate-50 p-8 text-center",children:b.jsxs("div",{className:"max-w-md rounded-xl border border-slate-200 bg-white p-8 shadow-sm",children:[b.jsx("h2",{className:"mb-2 text-xl font-semibold text-slate-900",children:"Something went wrong"}),b.jsx("p",{className:"mb-6 text-sm text-slate-600",children:"The application encountered an unexpected error. Please try refreshing the page."}),this.state.error&&b.jsx("pre",{className:"mb-6 max-h-24 overflow-auto rounded bg-red-50 p-3 text-left text-xs text-red-700",children:this.state.error.message}),b.jsx("button",{onClick:this.handleReset,className:"rounded-lg bg-blue-600 px-6 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700",children:"Try again"}),b.jsx("button",{onClick:()=>window.location.reload(),className:"ml-3 rounded-lg border border-slate-300 bg-white px-6 py-2 text-sm font-medium text-slate-700 transition-colors hover:bg-slate-50",children:"Refresh page"})]})})}return this.props.children}}tC();try{sessionStorage.removeItem("mathpulse_chunk_reload_attempted")}catch{}typeof window<"u"&&(window.addEventListener("error",e=>{console.error("[global] Uncaught error:",e.error?.message??e.message)}),window.addEventListener("unhandledrejection",e=>{console.error("[global] Unhandled promise rejection:",e.reason?.message??e.reason),e.preventDefault()}));{const e=(...t)=>{};console.log=e,console.info=e,console.debug=e}const bp=document.getElementById("root");if(!bp)throw new Error("Root element not found");Pp.createRoot(bp).render(b.jsx(aR,{children:b.jsx(Kg,{children:b.jsx(Am,{client:Li,children:b.jsx(LP,{children:b.jsx(oR,{})})})})}));export{Px as $,Rl as A,gx as B,bx as C,WR as D,zl as E,Ml as F,Il as G,tr as H,px as I,hA as J,VE as K,Ix as L,Ox as M,be as N,bn as O,Ls as P,lA as Q,zx as R,Dl as S,Ll as T,Xx as U,Du as V,uA as W,ms as X,wR as Y,Ti as Z,oe as _,Ao as a,VR as a$,Gr as a0,JR as a1,YR as a2,RR as a3,ps as a4,$x as a5,$o as a6,Xh as a7,iC as a8,mA as a9,km as aA,dm as aB,Ze as aC,vR as aD,CR as aE,QR as aF,XR as aG,BE as aH,MR as aI,AR as aJ,sS as aK,eh as aL,IR as aM,OP as aN,F_ as aO,Cx as aP,xx as aQ,Vx as aR,kR as aS,ku as aT,Tu as aU,qR as aV,GR as aW,sC as aX,oC as aY,gs as aZ,BR as a_,ZR as aa,LR as ab,NR as ac,jR as ad,zR as ae,FR as af,$R as ag,Do as ah,DR as ai,EA as aj,AA as ak,OR as al,KR as am,_E as an,pA as ao,js as ap,mm as aq,cm as ar,bR as as,Ko as at,wt as au,Vu as av,im as aw,am as ax,Zo as ay,Nu as az,ux as b,UR as b0,nS as b1,zt as b2,Ys as b3,t_ as b4,SR as b5,WE as b6,HR as b7,PR as c,_R as d,fe as e,Qh as f,$ as g,Ff as h,jl as i,ct as j,$E as k,bt as l,Ln as m,mn as n,It as o,Rx as p,Ol as q,dA as r,TR as s,Kh as t,Rr as u,N as v,ER as w,ki as x,ZE as y,Kx as z}; diff --git a/assets/input-DghAGnRL.js b/assets/input-DfDzuOXr.js similarity index 92% rename from assets/input-DghAGnRL.js rename to assets/input-DfDzuOXr.js index 538d6b83813f6632e3964089d64ae0c0b0f5de42..2d91152ec8ae7098c4eb0c580cd5c31aa3199457 100644 --- a/assets/input-DghAGnRL.js +++ b/assets/input-DfDzuOXr.js @@ -1 +1 @@ -import{j as t}from"./vendor-react-B4AQeu28.js";import{n}from"./index-Dl2Y5a7s.js";function a({className:e,type:i,...r}){return t.jsx("input",{type:i,"data-slot":"input",className:n("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}export{a as I}; +import{j as t}from"./vendor-react-B4AQeu28.js";import{n}from"./index-pcr0VEFr.js";function a({className:e,type:i,...r}){return t.jsx("input",{type:i,"data-slot":"input",className:n("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}export{a as I}; diff --git a/assets/log-out-wnJ21BJr.js b/assets/log-out-CXrb7Klg.js similarity index 89% rename from assets/log-out-wnJ21BJr.js rename to assets/log-out-CXrb7Klg.js index a868a6bc2e6fb1070ffb7f23b2d9393207e4b5d1..31984047da78bc175d0406874dc24aeca230d941 100644 --- a/assets/log-out-wnJ21BJr.js +++ b/assets/log-out-CXrb7Klg.js @@ -1,4 +1,4 @@ -import{e as o}from"./index-Dl2Y5a7s.js";/** +import{e as o}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/mail-BNL7x2CT.js b/assets/mail-C-ekjMP7.js similarity index 89% rename from assets/mail-BNL7x2CT.js rename to assets/mail-C-ekjMP7.js index a3cce9fc887ceb99c674fdc58360a734e0a6a5e6..c4a1399262aeccf70038c95aa9f0f8dae4871542 100644 --- a/assets/mail-BNL7x2CT.js +++ b/assets/mail-C-ekjMP7.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/maximize-2-BkIrwX5U.js b/assets/maximize-2-B618Jqze.js similarity index 91% rename from assets/maximize-2-BkIrwX5U.js rename to assets/maximize-2-B618Jqze.js index 5e6a87b383853a1c870cab3618ec26da1258114f..ead4a0bd20f6b938c46e7e74119d7ad51968fa78 100644 --- a/assets/maximize-2-BkIrwX5U.js +++ b/assets/maximize-2-B618Jqze.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/megaphone-BGBgZ1iC.js b/assets/megaphone-D890PW9A.js similarity index 89% rename from assets/megaphone-BGBgZ1iC.js rename to assets/megaphone-D890PW9A.js index 8f488db4c389c52a11b9c1ff26876ac390f79b48..4f268a400d43214fba44f6c590bb4e5a93ff56d7 100644 --- a/assets/megaphone-BGBgZ1iC.js +++ b/assets/megaphone-D890PW9A.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/minus-BUZ8QSLu.js b/assets/minus-Br3D3UVG.js similarity index 84% rename from assets/minus-BUZ8QSLu.js rename to assets/minus-Br3D3UVG.js index ba38412b8cf72f85b5b88c329fa58828ad68ae58..dc8f8710f0adc2e2953d125c490e28ae7dfe8207 100644 --- a/assets/minus-BUZ8QSLu.js +++ b/assets/minus-Br3D3UVG.js @@ -1,4 +1,4 @@ -import{e as o}from"./index-Dl2Y5a7s.js";/** +import{e as o}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/plus-CrmryN2j.js b/assets/plus-dU-HIq9R.js similarity index 87% rename from assets/plus-CrmryN2j.js rename to assets/plus-dU-HIq9R.js index 81af3a4206b89d37092834988840e1b6f88657a9..033ef6eb194df079707931f4766a99f73e355d9b 100644 --- a/assets/plus-CrmryN2j.js +++ b/assets/plus-dU-HIq9R.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/quizService-C2o983YM.js b/assets/quizService-oId-3Lm2.js similarity index 98% rename from assets/quizService-C2o983YM.js rename to assets/quizService-oId-3Lm2.js index 2e6815102cef4414c516411018cfd33fbea8182b..37f53edb7c95026ec9bb266a416f58e520964fe6 100644 --- a/assets/quizService-C2o983YM.js +++ b/assets/quizService-oId-3Lm2.js @@ -1,4 +1,4 @@ -import{e as g,g as n}from"./index-Dl2Y5a7s.js";import{query as h,collection as d,where as m,orderBy as L,getDocs as w,doc as o,setDoc as l,updateDoc as y,serverTimestamp as r,deleteDoc as _}from"./vendor-firebase-firestore-BJsL6-Wd.js";/** +import{e as g,g as n}from"./index-pcr0VEFr.js";import{query as h,collection as d,where as m,orderBy as L,getDocs as w,doc as o,setDoc as l,updateDoc as y,serverTimestamp as r,deleteDoc as _}from"./vendor-firebase-firestore-BJsL6-Wd.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/save-BkInuCbo.js b/assets/save-UTAW-exi.js similarity index 91% rename from assets/save-BkInuCbo.js rename to assets/save-UTAW-exi.js index 8b6eaa92903338776f9e31fbf226ddbd23d511b4..4db73f3983a07df977e42ede0bb14300ee1c9830 100644 --- a/assets/save-BkInuCbo.js +++ b/assets/save-UTAW-exi.js @@ -1,4 +1,4 @@ -import{e as a}from"./index-Dl2Y5a7s.js";/** +import{e as a}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/search-D5s5o6Cr.js b/assets/search-NTEnzRsF.js similarity index 88% rename from assets/search-D5s5o6Cr.js rename to assets/search-NTEnzRsF.js index d871ba72fa069a8a5ad1ed513abce525c40583e6..f471d2c176a6a2b165a656260620370358ae467a 100644 --- a/assets/search-D5s5o6Cr.js +++ b/assets/search-NTEnzRsF.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/select-DStldRhf.js b/assets/select-Dgzk2zFj.js similarity index 94% rename from assets/select-DStldRhf.js rename to assets/select-Dgzk2zFj.js index 2b41debecd35b5b45e3e40e3c3a34ee08171524c..f6c5ab94f8bd75090ae38b8b5d83547a8ca12f20 100644 --- a/assets/select-DStldRhf.js +++ b/assets/select-Dgzk2zFj.js @@ -1 +1 @@ -import{j as e}from"./vendor-react-B4AQeu28.js";import{t as l,u as i,v as d,V as c,w as u,x as m,y as p,z as f,B as x,E as g,G as v}from"./vendor-radix-BPuEd8FG.js";import{n as r}from"./index-Dl2Y5a7s.js";import{C as n,a as h}from"./chevron-up-bHLZImYg.js";import{C as b}from"./check-BoG998GJ.js";function _({...t}){return e.jsx(l,{"data-slot":"select",...t})}function k({...t}){return e.jsx(c,{"data-slot":"select-value",...t})}function B({className:t,size:a="default",children:s,...o}){return e.jsxs(i,{"data-slot":"select-trigger","data-size":a,className:r("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:min-w-0 *:data-[slot=select-value]:truncate *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...o,children:[s,e.jsx(d,{asChild:!0,children:e.jsx(n,{className:"size-4"})})]})}function I({className:t,children:a,position:s="popper",...o}){return e.jsx(u,{children:e.jsxs(m,{"data-slot":"select-content",className:r("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",s==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:s,...o,children:[e.jsx(j,{}),e.jsx(p,{className:r("p-1",s==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:a}),e.jsx(w,{})]})})}function V({className:t,children:a,...s}){return e.jsxs(f,{"data-slot":"select-item",className:r("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...s,children:[e.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:e.jsx(x,{children:e.jsx(b,{className:"size-4"})})}),a]})}function j({className:t,...a}){return e.jsx(g,{"data-slot":"select-scroll-up-button",className:r("flex cursor-default items-center justify-center py-1",t),...a,children:e.jsx(h,{className:"size-4"})})}function w({className:t,...a}){return e.jsx(v,{"data-slot":"select-scroll-down-button",className:r("flex cursor-default items-center justify-center py-1",t),...a,children:e.jsx(n,{className:"size-4"})})}export{_ as S,B as a,k as b,I as c,V as d}; +import{j as e}from"./vendor-react-B4AQeu28.js";import{t as l,u as i,v as d,V as c,w as u,x as m,y as p,z as f,B as x,E as g,G as v}from"./vendor-radix-BPuEd8FG.js";import{n as r}from"./index-pcr0VEFr.js";import{C as n,a as h}from"./chevron-up-D_gmtVKu.js";import{C as b}from"./check-DcmcqBba.js";function _({...t}){return e.jsx(l,{"data-slot":"select",...t})}function k({...t}){return e.jsx(c,{"data-slot":"select-value",...t})}function B({className:t,size:a="default",children:s,...o}){return e.jsxs(i,{"data-slot":"select-trigger","data-size":a,className:r("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:min-w-0 *:data-[slot=select-value]:truncate *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...o,children:[s,e.jsx(d,{asChild:!0,children:e.jsx(n,{className:"size-4"})})]})}function I({className:t,children:a,position:s="popper",...o}){return e.jsx(u,{children:e.jsxs(m,{"data-slot":"select-content",className:r("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",s==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:s,...o,children:[e.jsx(j,{}),e.jsx(p,{className:r("p-1",s==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:a}),e.jsx(w,{})]})})}function V({className:t,children:a,...s}){return e.jsxs(f,{"data-slot":"select-item",className:r("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...s,children:[e.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:e.jsx(x,{children:e.jsx(b,{className:"size-4"})})}),a]})}function j({className:t,...a}){return e.jsx(g,{"data-slot":"select-scroll-up-button",className:r("flex cursor-default items-center justify-center py-1",t),...a,children:e.jsx(h,{className:"size-4"})})}function w({className:t,...a}){return e.jsx(v,{"data-slot":"select-scroll-down-button",className:r("flex cursor-default items-center justify-center py-1",t),...a,children:e.jsx(n,{className:"size-4"})})}export{_ as S,B as a,k as b,I as c,V as d}; diff --git a/assets/send-Bv1lHqor.js b/assets/send-gL3P1x3P.js similarity index 90% rename from assets/send-Bv1lHqor.js rename to assets/send-gL3P1x3P.js index e331893fbbbc4ecc54fbcfa72979bffbd2380134..9068421ced1f93db368f45f288abad587ec2bf39 100644 --- a/assets/send-Bv1lHqor.js +++ b/assets/send-gL3P1x3P.js @@ -1,4 +1,4 @@ -import{e as a}from"./index-Dl2Y5a7s.js";/** +import{e as a}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/shield-check-DwpyoHVp.js b/assets/shield-check-DFEsr5NL.js similarity index 92% rename from assets/shield-check-DwpyoHVp.js rename to assets/shield-check-DFEsr5NL.js index f57237e2181b3d017c0ee664e06bb221396fc750..29bfdfaf78e49a189b70a07b8ee3baba05400c62 100644 --- a/assets/shield-check-DwpyoHVp.js +++ b/assets/shield-check-DFEsr5NL.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/shirt-CyYDebXG.js b/assets/shirt-DVTcv3em.js similarity index 90% rename from assets/shirt-CyYDebXG.js rename to assets/shirt-DVTcv3em.js index 7ee912fcc0bcb93aaca40e1184dc4e7822ebfd58..c332327b91e47c8b4649d8856e5cfbedf8e1b9a8 100644 --- a/assets/shirt-CyYDebXG.js +++ b/assets/shirt-DVTcv3em.js @@ -1,4 +1,4 @@ -import{e as a}from"./index-Dl2Y5a7s.js";/** +import{e as a}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/skeleton-CWsSRCwx.js b/assets/skeleton-DLZLprS1.js similarity index 72% rename from assets/skeleton-CWsSRCwx.js rename to assets/skeleton-DLZLprS1.js index e60981468bdc809d03f70196f28b8db4223fabb5..7bc2a801df23a641de48d250081ea4da3a267041 100644 --- a/assets/skeleton-CWsSRCwx.js +++ b/assets/skeleton-DLZLprS1.js @@ -1 +1 @@ -import{j as n}from"./vendor-react-B4AQeu28.js";import{n as o}from"./index-Dl2Y5a7s.js";function r({className:t,...e}){return n.jsx("div",{"data-slot":"skeleton",className:o("bg-accent animate-pulse rounded-md",t),...e})}export{r as S}; +import{j as n}from"./vendor-react-B4AQeu28.js";import{n as o}from"./index-pcr0VEFr.js";function r({className:t,...e}){return n.jsx("div",{"data-slot":"skeleton",className:o("bg-accent animate-pulse rounded-md",t),...e})}export{r as S}; diff --git a/assets/sparkles-DXDpj3ao.js b/assets/sparkles-CcaVyiD_.js similarity index 93% rename from assets/sparkles-DXDpj3ao.js rename to assets/sparkles-CcaVyiD_.js index 37b3ee6c0865650a2afcae9d235a00ced05a3b28..5fb9375c84c93e2af87d7677a24de582fb30c863 100644 --- a/assets/sparkles-DXDpj3ao.js +++ b/assets/sparkles-CcaVyiD_.js @@ -1,4 +1,4 @@ -import{e as a}from"./index-Dl2Y5a7s.js";/** +import{e as a}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/subjects-DcwoUK34.js b/assets/subjects-DsVN1z_r.js similarity index 98% rename from assets/subjects-DcwoUK34.js rename to assets/subjects-DsVN1z_r.js index 3847028a81336db521a1814d23b5b1f91437b636..77378370c4ee78f1683d3703e07971b15762c399 100644 --- a/assets/subjects-DcwoUK34.js +++ b/assets/subjects-DsVN1z_r.js @@ -1 +1 @@ -import{C as a}from"./index-Dl2Y5a7s.js";import{C as o}from"./chart-column-CaIU59ve.js";const t=[{id:"gen-math",code:"GEN MATH",name:"General Mathematics",gradeLevel:"Grade 11",semester:"1st Semester",color:"from-blue-500 to-cyan-500",pdfAvailable:!0,topics:[{id:"gen-math-001",name:"Patterns and Real-Life Relationships",unit:"Patterns, Relations, and Functions"},{id:"gen-math-002",name:"Functions as Mathematical Models",unit:"Patterns, Relations, and Functions"},{id:"gen-math-003",name:"Function Notation and Evaluation",unit:"Patterns, Relations, and Functions"},{id:"gen-math-004",name:"Domain and Range of Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-005",name:"Operations on Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-006",name:"Composite Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-007",name:"Inverse Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-008",name:"Graphs of Rational Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-009",name:"Graphs of Exponential Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-010",name:"Graphs of Logarithmic Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-011",name:"Simple and Compound Interest",unit:"Financial Mathematics"},{id:"gen-math-012",name:"Simple and General Annuities",unit:"Financial Mathematics"},{id:"gen-math-013",name:"Present and Future Value",unit:"Financial Mathematics"},{id:"gen-math-014",name:"Loans, Amortization, and Sinking Funds",unit:"Financial Mathematics"},{id:"gen-math-015",name:"Stocks, Bonds, and Market Indices",unit:"Financial Mathematics"},{id:"gen-math-016",name:"Business Decision-Making with Mathematical Models",unit:"Financial Mathematics"},{id:"gen-math-017",name:"Propositions and Logical Connectives",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-018",name:"Truth Values and Truth Tables",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-019",name:"Logical Equivalence and Implication",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-020",name:"Quantifiers and Negation",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-021",name:"Validity of Arguments",unit:"Logic and Mathematical Reasoning"}]},{id:"stats-prob",code:"STAT&PROB",name:"Statistics and Probability",gradeLevel:"Grade 11",semester:"2nd Semester",color:"from-sky-500 to-cyan-500",pdfAvailable:!0,topics:[{id:"stat-001",name:"Random Variables",unit:"Random Variables"},{id:"stat-002",name:"Discrete Probability Distributions",unit:"Random Variables"},{id:"stat-003",name:"Mean and Variance of Discrete RV",unit:"Random Variables"},{id:"stat-004",name:"Normal Distribution",unit:"Normal Distribution"},{id:"stat-005",name:"Standard Normal Distribution and Z-scores",unit:"Normal Distribution"},{id:"stat-006",name:"Areas Under the Normal Curve",unit:"Normal Distribution"},{id:"stat-007",name:"Sampling Distributions",unit:"Sampling and Estimation"},{id:"stat-008",name:"Central Limit Theorem",unit:"Sampling and Estimation"},{id:"stat-009",name:"Point Estimation",unit:"Sampling and Estimation"},{id:"stat-010",name:"Confidence Intervals",unit:"Sampling and Estimation"},{id:"stat-011",name:"Hypothesis Testing Concepts",unit:"Hypothesis Testing"},{id:"stat-012",name:"T-test",unit:"Hypothesis Testing"},{id:"stat-013",name:"Z-test",unit:"Hypothesis Testing"},{id:"stat-014",name:"Correlation and Regression",unit:"Correlation and Regression"}]}],c=["Grade 11"];[...t];const s={"Grade 11":["gen-math","stats-prob"]};function l(i){if(!i)return null;const e=i.trim().toLowerCase();return e==="grade 11"||e==="11"||e.includes("11")?"Grade 11":null}function m(i){const e=l(i);return e?s[e]:t.map(n=>n.id)}const u=[{id:"gen-math",title:"General Mathematics",description:"Functions, business math, and logic for Grade 11 Senior High School students.",icon:a,color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,totalModules:3,completedModules:0,rating:4.9,reviewCount:204,pdfAvailable:!0,modules:[{id:"gm-1",title:"Functions and Their Graphs",description:"Evaluate, compose, and represent functions including rational, exponential, and logarithmic types.",color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,lessons:[{id:"gm-1-l1",title:"Patterns and Real-Life Relationships",duration:"15 min",completed:!1,locked:!1},{id:"gm-1-l2",title:"Functions as Mathematical Models",duration:"16 min",completed:!1,locked:!1},{id:"gm-1-l3",title:"Operations on Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l4",title:"Composite Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l5",title:"Function Notation and Evaluation",duration:"16 min",completed:!1,locked:!1},{id:"gm-1-l6",title:"Domain and Range of Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l7",title:"Inverse Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l8",title:"Graphs of Rational Functions",duration:"20 min",completed:!1,locked:!1},{id:"gm-1-l9",title:"Graphs of Exponential Functions",duration:"20 min",completed:!1,locked:!1},{id:"gm-1-l10",title:"Graphs of Logarithmic Functions",duration:"22 min",completed:!1,locked:!1}],quizzes:[{id:"gm-1-q1",title:"Practice Quiz: Functions",questions:10,duration:"15 min",completed:!1,locked:!1,type:"practice"},{id:"gm-1-q2",title:"Module Quiz: Functions and Graphs",questions:15,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"gm-2",title:"Business Mathematics",description:"Simple and compound interest, annuities, stocks, and bonds.",color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,lessons:[{id:"gm-2-l1",title:"Simple and Compound Interest",duration:"18 min",completed:!1,locked:!1},{id:"gm-2-l2",title:"Simple and General Annuities",duration:"20 min",completed:!1,locked:!1},{id:"gm-2-l3",title:"Present and Future Value",duration:"18 min",completed:!1,locked:!1},{id:"gm-2-l4",title:"Loans, Amortization, and Sinking Funds",duration:"20 min",completed:!1,locked:!1},{id:"gm-2-l5",title:"Stocks, Bonds, and Market Indices",duration:"18 min",completed:!1,locked:!1},{id:"gm-2-l6",title:"Business Decision-Making with Mathematical Models",duration:"20 min",completed:!1,locked:!1}],quizzes:[{id:"gm-2-q1",title:"Practice Quiz: Interest",questions:12,duration:"18 min",completed:!1,locked:!1,type:"practice"},{id:"gm-2-q2",title:"Module Quiz: Business Math",questions:15,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"gm-3",title:"Logic",description:"Propositions, truth tables, logical equivalence, and valid arguments.",color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,lessons:[{id:"gm-3-l1",title:"Propositions and Connectives",duration:"15 min",completed:!1,locked:!1},{id:"gm-3-l2",title:"Truth Values and Truth Tables",duration:"18 min",completed:!1,locked:!1},{id:"gm-3-l3",title:"Logical Equivalence and Implication",duration:"18 min",completed:!1,locked:!1},{id:"gm-3-l4",title:"Quantifiers and Negation",duration:"18 min",completed:!1,locked:!1},{id:"gm-3-l5",title:"Validity of Arguments",duration:"22 min",completed:!1,locked:!1}],quizzes:[{id:"gm-3-q1",title:"Practice Quiz: Logic",questions:10,duration:"15 min",completed:!1,locked:!1,type:"practice"},{id:"gm-3-q2",title:"Module Quiz: Logic",questions:12,duration:"18 min",completed:!1,locked:!0,type:"module"}]}]},{id:"stats-prob",title:"Statistics and Probability",description:"Random variables, distributions, sampling, and hypothesis testing for Grade 11 students.",icon:o,color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,totalModules:4,completedModules:0,rating:4.8,reviewCount:160,pdfAvailable:!0,modules:[{id:"sp-1",title:"Random Variables and Probability Distributions",description:"Discrete random variables, probability distributions, mean, and variance.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-1-l1",title:"Random Variables",duration:"16 min",completed:!1,locked:!1},{id:"sp-1-l2",title:"Discrete Probability Distributions",duration:"18 min",completed:!1,locked:!1},{id:"sp-1-l3",title:"Mean and Variance of Discrete RV",duration:"20 min",completed:!1,locked:!1}],quizzes:[{id:"sp-1-q1",title:"Practice Quiz: Random Variables",questions:10,duration:"15 min",completed:!1,locked:!1,type:"practice"},{id:"sp-1-q2",title:"Module Quiz: Probability Distributions",questions:15,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"sp-2",title:"Normal Distribution",description:"The normal curve, standard normal distribution, z-scores, and areas under the curve.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-2-l1",title:"Normal Distribution",duration:"16 min",completed:!1,locked:!1},{id:"sp-2-l2",title:"Standard Normal Distribution and Z-scores",duration:"18 min",completed:!1,locked:!1},{id:"sp-2-l3",title:"Areas Under the Normal Curve",duration:"18 min",completed:!1,locked:!1}],quizzes:[{id:"sp-2-q1",title:"Practice Quiz: Normal Distribution",questions:12,duration:"18 min",completed:!1,locked:!1,type:"practice"},{id:"sp-2-q2",title:"Module Quiz: Z-Scores & Normal Curve",questions:14,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"sp-3",title:"Sampling and Estimation",description:"Sampling distributions, central limit theorem, point estimation, and confidence intervals.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-3-l1",title:"Sampling Distributions",duration:"18 min",completed:!1,locked:!1},{id:"sp-3-l2",title:"Central Limit Theorem",duration:"20 min",completed:!1,locked:!1},{id:"sp-3-l3",title:"Point Estimation",duration:"16 min",completed:!1,locked:!1},{id:"sp-3-l4",title:"Confidence Intervals",duration:"20 min",completed:!1,locked:!1}],quizzes:[{id:"sp-3-q1",title:"Practice Quiz: Sampling",questions:12,duration:"18 min",completed:!1,locked:!1,type:"practice"},{id:"sp-3-q2",title:"Module Quiz: Estimation",questions:16,duration:"24 min",completed:!1,locked:!1,type:"module"}]},{id:"sp-4",title:"Hypothesis Testing",description:"Hypothesis testing concepts, t-test, z-test, and correlation.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-4-l1",title:"Hypothesis Testing Concepts",duration:"20 min",completed:!1,locked:!1},{id:"sp-4-l2",title:"T-test",duration:"22 min",completed:!1,locked:!1},{id:"sp-4-l3",title:"Z-test",duration:"22 min",completed:!1,locked:!1},{id:"sp-4-l4",title:"Correlation and Regression",duration:"24 min",completed:!1,locked:!1}],quizzes:[{id:"sp-4-q1",title:"Practice Quiz: Hypothesis Testing",questions:14,duration:"22 min",completed:!1,locked:!1,type:"practice"},{id:"sp-4-q2",title:"Module Quiz: Hypothesis Testing",questions:18,duration:"28 min",completed:!1,locked:!0,type:"module"}]}]}];export{c as G,t as S,m as g,u as s}; +import{C as a}from"./index-pcr0VEFr.js";import{C as o}from"./chart-column-BNfaspCb.js";const t=[{id:"gen-math",code:"GEN MATH",name:"General Mathematics",gradeLevel:"Grade 11",semester:"1st Semester",color:"from-blue-500 to-cyan-500",pdfAvailable:!0,topics:[{id:"gen-math-001",name:"Patterns and Real-Life Relationships",unit:"Patterns, Relations, and Functions"},{id:"gen-math-002",name:"Functions as Mathematical Models",unit:"Patterns, Relations, and Functions"},{id:"gen-math-003",name:"Function Notation and Evaluation",unit:"Patterns, Relations, and Functions"},{id:"gen-math-004",name:"Domain and Range of Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-005",name:"Operations on Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-006",name:"Composite Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-007",name:"Inverse Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-008",name:"Graphs of Rational Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-009",name:"Graphs of Exponential Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-010",name:"Graphs of Logarithmic Functions",unit:"Patterns, Relations, and Functions"},{id:"gen-math-011",name:"Simple and Compound Interest",unit:"Financial Mathematics"},{id:"gen-math-012",name:"Simple and General Annuities",unit:"Financial Mathematics"},{id:"gen-math-013",name:"Present and Future Value",unit:"Financial Mathematics"},{id:"gen-math-014",name:"Loans, Amortization, and Sinking Funds",unit:"Financial Mathematics"},{id:"gen-math-015",name:"Stocks, Bonds, and Market Indices",unit:"Financial Mathematics"},{id:"gen-math-016",name:"Business Decision-Making with Mathematical Models",unit:"Financial Mathematics"},{id:"gen-math-017",name:"Propositions and Logical Connectives",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-018",name:"Truth Values and Truth Tables",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-019",name:"Logical Equivalence and Implication",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-020",name:"Quantifiers and Negation",unit:"Logic and Mathematical Reasoning"},{id:"gen-math-021",name:"Validity of Arguments",unit:"Logic and Mathematical Reasoning"}]},{id:"stats-prob",code:"STAT&PROB",name:"Statistics and Probability",gradeLevel:"Grade 11",semester:"2nd Semester",color:"from-sky-500 to-cyan-500",pdfAvailable:!0,topics:[{id:"stat-001",name:"Random Variables",unit:"Random Variables"},{id:"stat-002",name:"Discrete Probability Distributions",unit:"Random Variables"},{id:"stat-003",name:"Mean and Variance of Discrete RV",unit:"Random Variables"},{id:"stat-004",name:"Normal Distribution",unit:"Normal Distribution"},{id:"stat-005",name:"Standard Normal Distribution and Z-scores",unit:"Normal Distribution"},{id:"stat-006",name:"Areas Under the Normal Curve",unit:"Normal Distribution"},{id:"stat-007",name:"Sampling Distributions",unit:"Sampling and Estimation"},{id:"stat-008",name:"Central Limit Theorem",unit:"Sampling and Estimation"},{id:"stat-009",name:"Point Estimation",unit:"Sampling and Estimation"},{id:"stat-010",name:"Confidence Intervals",unit:"Sampling and Estimation"},{id:"stat-011",name:"Hypothesis Testing Concepts",unit:"Hypothesis Testing"},{id:"stat-012",name:"T-test",unit:"Hypothesis Testing"},{id:"stat-013",name:"Z-test",unit:"Hypothesis Testing"},{id:"stat-014",name:"Correlation and Regression",unit:"Correlation and Regression"}]}],c=["Grade 11"];[...t];const s={"Grade 11":["gen-math","stats-prob"]};function l(i){if(!i)return null;const e=i.trim().toLowerCase();return e==="grade 11"||e==="11"||e.includes("11")?"Grade 11":null}function m(i){const e=l(i);return e?s[e]:t.map(n=>n.id)}const u=[{id:"gen-math",title:"General Mathematics",description:"Functions, business math, and logic for Grade 11 Senior High School students.",icon:a,color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,totalModules:3,completedModules:0,rating:4.9,reviewCount:204,pdfAvailable:!0,modules:[{id:"gm-1",title:"Functions and Their Graphs",description:"Evaluate, compose, and represent functions including rational, exponential, and logarithmic types.",color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,lessons:[{id:"gm-1-l1",title:"Patterns and Real-Life Relationships",duration:"15 min",completed:!1,locked:!1},{id:"gm-1-l2",title:"Functions as Mathematical Models",duration:"16 min",completed:!1,locked:!1},{id:"gm-1-l3",title:"Operations on Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l4",title:"Composite Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l5",title:"Function Notation and Evaluation",duration:"16 min",completed:!1,locked:!1},{id:"gm-1-l6",title:"Domain and Range of Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l7",title:"Inverse Functions",duration:"18 min",completed:!1,locked:!1},{id:"gm-1-l8",title:"Graphs of Rational Functions",duration:"20 min",completed:!1,locked:!1},{id:"gm-1-l9",title:"Graphs of Exponential Functions",duration:"20 min",completed:!1,locked:!1},{id:"gm-1-l10",title:"Graphs of Logarithmic Functions",duration:"22 min",completed:!1,locked:!1}],quizzes:[{id:"gm-1-q1",title:"Practice Quiz: Functions",questions:10,duration:"15 min",completed:!1,locked:!1,type:"practice"},{id:"gm-1-q2",title:"Module Quiz: Functions and Graphs",questions:15,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"gm-2",title:"Business Mathematics",description:"Simple and compound interest, annuities, stocks, and bonds.",color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,lessons:[{id:"gm-2-l1",title:"Simple and Compound Interest",duration:"18 min",completed:!1,locked:!1},{id:"gm-2-l2",title:"Simple and General Annuities",duration:"20 min",completed:!1,locked:!1},{id:"gm-2-l3",title:"Present and Future Value",duration:"18 min",completed:!1,locked:!1},{id:"gm-2-l4",title:"Loans, Amortization, and Sinking Funds",duration:"20 min",completed:!1,locked:!1},{id:"gm-2-l5",title:"Stocks, Bonds, and Market Indices",duration:"18 min",completed:!1,locked:!1},{id:"gm-2-l6",title:"Business Decision-Making with Mathematical Models",duration:"20 min",completed:!1,locked:!1}],quizzes:[{id:"gm-2-q1",title:"Practice Quiz: Interest",questions:12,duration:"18 min",completed:!1,locked:!1,type:"practice"},{id:"gm-2-q2",title:"Module Quiz: Business Math",questions:15,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"gm-3",title:"Logic",description:"Propositions, truth tables, logical equivalence, and valid arguments.",color:"bg-indigo-50",iconColor:"text-indigo-600",accentColor:"bg-indigo-600",progress:0,lessons:[{id:"gm-3-l1",title:"Propositions and Connectives",duration:"15 min",completed:!1,locked:!1},{id:"gm-3-l2",title:"Truth Values and Truth Tables",duration:"18 min",completed:!1,locked:!1},{id:"gm-3-l3",title:"Logical Equivalence and Implication",duration:"18 min",completed:!1,locked:!1},{id:"gm-3-l4",title:"Quantifiers and Negation",duration:"18 min",completed:!1,locked:!1},{id:"gm-3-l5",title:"Validity of Arguments",duration:"22 min",completed:!1,locked:!1}],quizzes:[{id:"gm-3-q1",title:"Practice Quiz: Logic",questions:10,duration:"15 min",completed:!1,locked:!1,type:"practice"},{id:"gm-3-q2",title:"Module Quiz: Logic",questions:12,duration:"18 min",completed:!1,locked:!0,type:"module"}]}]},{id:"stats-prob",title:"Statistics and Probability",description:"Random variables, distributions, sampling, and hypothesis testing for Grade 11 students.",icon:o,color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,totalModules:4,completedModules:0,rating:4.8,reviewCount:160,pdfAvailable:!0,modules:[{id:"sp-1",title:"Random Variables and Probability Distributions",description:"Discrete random variables, probability distributions, mean, and variance.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-1-l1",title:"Random Variables",duration:"16 min",completed:!1,locked:!1},{id:"sp-1-l2",title:"Discrete Probability Distributions",duration:"18 min",completed:!1,locked:!1},{id:"sp-1-l3",title:"Mean and Variance of Discrete RV",duration:"20 min",completed:!1,locked:!1}],quizzes:[{id:"sp-1-q1",title:"Practice Quiz: Random Variables",questions:10,duration:"15 min",completed:!1,locked:!1,type:"practice"},{id:"sp-1-q2",title:"Module Quiz: Probability Distributions",questions:15,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"sp-2",title:"Normal Distribution",description:"The normal curve, standard normal distribution, z-scores, and areas under the curve.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-2-l1",title:"Normal Distribution",duration:"16 min",completed:!1,locked:!1},{id:"sp-2-l2",title:"Standard Normal Distribution and Z-scores",duration:"18 min",completed:!1,locked:!1},{id:"sp-2-l3",title:"Areas Under the Normal Curve",duration:"18 min",completed:!1,locked:!1}],quizzes:[{id:"sp-2-q1",title:"Practice Quiz: Normal Distribution",questions:12,duration:"18 min",completed:!1,locked:!1,type:"practice"},{id:"sp-2-q2",title:"Module Quiz: Z-Scores & Normal Curve",questions:14,duration:"20 min",completed:!1,locked:!1,type:"module"}]},{id:"sp-3",title:"Sampling and Estimation",description:"Sampling distributions, central limit theorem, point estimation, and confidence intervals.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-3-l1",title:"Sampling Distributions",duration:"18 min",completed:!1,locked:!1},{id:"sp-3-l2",title:"Central Limit Theorem",duration:"20 min",completed:!1,locked:!1},{id:"sp-3-l3",title:"Point Estimation",duration:"16 min",completed:!1,locked:!1},{id:"sp-3-l4",title:"Confidence Intervals",duration:"20 min",completed:!1,locked:!1}],quizzes:[{id:"sp-3-q1",title:"Practice Quiz: Sampling",questions:12,duration:"18 min",completed:!1,locked:!1,type:"practice"},{id:"sp-3-q2",title:"Module Quiz: Estimation",questions:16,duration:"24 min",completed:!1,locked:!1,type:"module"}]},{id:"sp-4",title:"Hypothesis Testing",description:"Hypothesis testing concepts, t-test, z-test, and correlation.",color:"bg-sky-50",iconColor:"text-sky-600",accentColor:"bg-sky-500",progress:0,lessons:[{id:"sp-4-l1",title:"Hypothesis Testing Concepts",duration:"20 min",completed:!1,locked:!1},{id:"sp-4-l2",title:"T-test",duration:"22 min",completed:!1,locked:!1},{id:"sp-4-l3",title:"Z-test",duration:"22 min",completed:!1,locked:!1},{id:"sp-4-l4",title:"Correlation and Regression",duration:"24 min",completed:!1,locked:!1}],quizzes:[{id:"sp-4-q1",title:"Practice Quiz: Hypothesis Testing",questions:14,duration:"22 min",completed:!1,locked:!1,type:"practice"},{id:"sp-4-q2",title:"Module Quiz: Hypothesis Testing",questions:18,duration:"28 min",completed:!1,locked:!0,type:"module"}]}]}];export{c as G,t as S,m as g,u as s}; diff --git a/assets/switch-B8xho0UQ.js b/assets/switch-VziX97fW.js similarity index 93% rename from assets/switch-B8xho0UQ.js rename to assets/switch-VziX97fW.js index 4dbf7d4c085ea064f8efb7884b3c701b84a33215..6e943da1b0d498fa1d1cbfa31d815f907ddc5400 100644 --- a/assets/switch-B8xho0UQ.js +++ b/assets/switch-VziX97fW.js @@ -1 +1 @@ -import{j as e}from"./vendor-react-B4AQeu28.js";import{m as n,n as s}from"./vendor-radix-BPuEd8FG.js";import{n as t}from"./index-Dl2Y5a7s.js";function c({className:a,...r}){return e.jsx(n,{"data-slot":"switch",className:t("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...r,children:e.jsx(s,{"data-slot":"switch-thumb",className:t("bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}export{c as S}; +import{j as e}from"./vendor-react-B4AQeu28.js";import{m as n,n as s}from"./vendor-radix-BPuEd8FG.js";import{n as t}from"./index-pcr0VEFr.js";function c({className:a,...r}){return e.jsx(n,{"data-slot":"switch",className:t("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...r,children:e.jsx(s,{"data-slot":"switch-thumb",className:t("bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}export{c as S}; diff --git a/assets/testResetService-BEUr-kie.js b/assets/testResetService-BUxWmPp7.js similarity index 99% rename from assets/testResetService-BEUr-kie.js rename to assets/testResetService-BUxWmPp7.js index 6393e52a76e802a0dad9433e220eec23cb52d537..b9aec763a945422d4a119fe2390c3ff74966af9d 100644 --- a/assets/testResetService-BEUr-kie.js +++ b/assets/testResetService-BUxWmPp7.js @@ -1 +1 @@ -import{getDoc as R,doc as d,setDoc as p,serverTimestamp as h,deleteField as c,deleteDoc as l,getDocs as y,query as I,where as v,collection as f,writeBatch as g}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{b3 as k,g as i,N as T}from"./index-Dl2Y5a7s.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const $=400,C="https://deign86-mathpulse-api-v3test.hf.space";async function B(e){const t=T.currentUser;if(!t)throw new Error("Authentication is required to reset testing data.");const r=await t.getIdToken(),s=await fetch(`${C}/api/testing/reset-data`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({role:e.role,...e.lrn?{lrn:e.lrn}:{}})}),o=await s.json().catch(()=>({}));if(!s.ok){const S=typeof o?.detail=="string"?o.detail:"";throw new Error(S||`Reset request failed with status ${s.status}.`)}const n=typeof o?.role=="string"?o.role:e.role,u=Number(o?.deletedDocs??0),m=Number(o?.updatedDocs??0),A=typeof o?.summary=="string"?o.summary:`${n} reset complete: ${u} records deleted, ${m} records reset.`;return{role:n,deletedDocs:u,updatedDocs:m,summary:A}}async function D(e){const t=await y(e);if(t.empty)return 0;let r=g(i),s=0,o=0;for(const n of t.docs)r.delete(n.ref),s+=1,o+=1,s>=$&&(await r.commit(),r=g(i),s=0);return s>0&&await r.commit(),o}async function b(e,t,r){return D(I(f(i,e),v(t,"==",r)))}async function a(e,t,r){try{return await b(e,t,r)}catch{return 0}}async function w(e,t){try{const r=f(i,e,t);return await D(r)}catch{return 0}}async function q(e,t){const r=t||e;let s=0,o=0;await k(e),o+=1;const n=await R(d(i,"users",e));let u={};if(n.exists()){const m=n.data();u={...m.photo?{photo:m.photo}:{},...m.avatarLayers?{avatarLayers:m.avatarLayers}:{},...m.ownedAvatarItems?{ownedAvatarItems:m.ownedAvatarItems}:{}}}return await p(d(i,"users",e),{...u,level:1,currentXP:0,totalXP:0,streak:0,streakHistory:[],quizzesCompleted:0,averageScore:0,atRiskSubjects:[],hasTakenDiagnostic:!1,iarAssessmentState:"not_started",learningPathState:"unlocked",remediationState:"not_required",subjectBadges:{},riskClassifications:{},overallRisk:"Low",assessmentDismissed:!1,initialAssessmentCompleted:!1,hasCompletedInitialAssessment:!1,assessmentResults:null,assessmentCompletedAt:null,initialAssessmentCompletedAt:c(),diagnosticCompleted:!1,lastAssessmentDate:c(),assessmentAttemptCount:0,initialProficiencyLevel:c(),iarQuestionSetVersion:c(),iarTopicClassifications:c(),topicScores:c(),priorityTopics:c(),recommendedPace:c(),g12ReadinessIndicators:c(),riskFlags:c(),iarMode:c(),lastAssessmentType:c(),startingQuarterG11:c(),recommendedNextTopicGroupId:c(),recommendationRationale:c(),recommendationReasonCode:c(),grade12TransitionGate:c(),currentCurriculumVersionSetId:c(),unlockCriteriaVersion:c(),updatedAt:h()},{merge:!0}),o+=1,s+=await a("notifications","userId",e),s+=await a("chatSessions","userId",e),s+=await a("chatMessages","userId",e),await l(d(i,"diagnosticResults",e)).then(()=>{s+=1}).catch(()=>{}),await l(d(i,"competencyProfiles",e)).then(()=>{s+=1}).catch(()=>{}),await l(d(i,"assessments",e)).then(()=>{s+=1}).catch(()=>{}),s+=await w(`assessmentResults/${e}`,"attempts"),s+=await w(`assessments/${e}`,"attempts"),s+=await w(`studentProgress/${e}`,"diagnostics"),s+=await w(`assessmentQuestionHistory/${e}`,"questions"),s+=await w(`practice_results/${e}`,"sessions"),await l(d(i,"users",e,"gradeSummary","current")).then(()=>{s+=1}).catch(()=>{}),s+=await w(`users/${e}`,"assessments"),r!==e&&(s+=await a("notifications","userId",r),await l(d(i,"diagnosticResults",r)).then(()=>{s+=1}).catch(()=>{})),s+=await a("xpActivities","userId",e),s+=await a("quizBattleHistory","studentId",e),await l(d(i,"studentBattleStats",e)).then(()=>{s+=1}).catch(()=>{}),await l(d(i,"studentBattleLeaderboard",e)).then(()=>{s+=1}).catch(()=>{}),s+=await a("quizResults","studentId",e),s+=await a("quizResults","lrn",e),s+=await a("quizSubmissions","lrn",e),s+=await w(`users/${e}`,"moduleProgress"),await l(d(i,"users",e,"dashboardSummary","heroBannerModal")).then(()=>{s+=1}).catch(()=>{}),await p(d(i,"achievements",e),{userId:e,achievements:[],totalAchievements:0,updatedAt:h()},{merge:!0}).catch(()=>{}),{deletedDocs:s,updatedDocs:o}}async function P(e){let t=0,r=0;const o=(await y(I(f(i,"classrooms"),v("teacherId","==",e)))).docs.map(n=>n.id);t+=await a("notifications","userId",e),t+=await a("chatSessions","userId",e),t+=await a("chatMessages","userId",e),t+=await a("announcements","teacherId",e),t+=await a("classSectionOwnership","ownerTeacherId",e),t+=await a("managedStudents","teacherId",e),t+=await a("classrooms","teacherId",e),t+=await a("normalizedClassRecords","teacherId",e),t+=await a("classRecordImports","teacherId",e),t+=await a("courseMaterials","teacherId",e),t+=await a("riskRefreshEvents","teacherId",e),t+=await a("riskRefreshJobs","teacherId",e),t+=await a("importGroundedFeedbackEvents","teacherId",e),t+=await a("accessAuditLogs","actorUid",e),t+=await a("accessAuditLogs","teacherId",e);for(const n of o)t+=await a("managedStudents","classroomId",n),t+=await a("activities","classroomId",n),t+=await a("announcements","classroomId",n),await l(d(i,"classrooms",n)).then(()=>{t+=1}).catch(()=>{});return await l(d(i,"riskRefreshStats",e)).then(()=>{t+=1}).catch(()=>{}),await p(d(i,"users",e),{testingResetAt:h(),updatedAt:h()},{merge:!0}).catch(()=>{}),r+=1,{deletedDocs:t,updatedDocs:r}}async function L(e){let t=0,r=0;return t+=await a("notifications","userId",e),t+=await a("chatSessions","userId",e),t+=await a("chatMessages","userId",e),t+=await a("curriculumContent","updatedBy",e),t+=await a("curriculumContent","deletedBy",e),await p(d(i,"users",e),{testingResetAt:h(),updatedAt:h()},{merge:!0}).catch(()=>{}),r+=1,{deletedDocs:t,updatedDocs:r}}async function H(e){const{uid:t,role:r,lrn:s}=e;if(!t)throw new Error("Missing user id for reset.");let o;r==="student"?o=await q(t,s):r==="teacher"?o=await P(t):o=await L(t);let n=null;try{n=await B(e)}catch(u){console.warn("[testReset] Backend sync failed (non-fatal):",u)}return{role:r,deletedDocs:o.deletedDocs+(n?.deletedDocs??0),updatedDocs:o.updatedDocs+(n?.updatedDocs??0),summary:`${r} reset complete: ${o.deletedDocs} local records deleted, ${o.updatedDocs} local records updated.${n?` Backend: ${n.summary}`:""}`}}export{H as resetTestingDataForRole}; +import{getDoc as R,doc as d,setDoc as p,serverTimestamp as h,deleteField as c,deleteDoc as l,getDocs as y,query as I,where as v,collection as f,writeBatch as g}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{b3 as k,g as i,N as T}from"./index-pcr0VEFr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const $=400,C="https://deign86-mathpulse-api-v3test.hf.space";async function B(e){const t=T.currentUser;if(!t)throw new Error("Authentication is required to reset testing data.");const r=await t.getIdToken(),s=await fetch(`${C}/api/testing/reset-data`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({role:e.role,...e.lrn?{lrn:e.lrn}:{}})}),o=await s.json().catch(()=>({}));if(!s.ok){const S=typeof o?.detail=="string"?o.detail:"";throw new Error(S||`Reset request failed with status ${s.status}.`)}const n=typeof o?.role=="string"?o.role:e.role,u=Number(o?.deletedDocs??0),m=Number(o?.updatedDocs??0),A=typeof o?.summary=="string"?o.summary:`${n} reset complete: ${u} records deleted, ${m} records reset.`;return{role:n,deletedDocs:u,updatedDocs:m,summary:A}}async function D(e){const t=await y(e);if(t.empty)return 0;let r=g(i),s=0,o=0;for(const n of t.docs)r.delete(n.ref),s+=1,o+=1,s>=$&&(await r.commit(),r=g(i),s=0);return s>0&&await r.commit(),o}async function b(e,t,r){return D(I(f(i,e),v(t,"==",r)))}async function a(e,t,r){try{return await b(e,t,r)}catch{return 0}}async function w(e,t){try{const r=f(i,e,t);return await D(r)}catch{return 0}}async function q(e,t){const r=t||e;let s=0,o=0;await k(e),o+=1;const n=await R(d(i,"users",e));let u={};if(n.exists()){const m=n.data();u={...m.photo?{photo:m.photo}:{},...m.avatarLayers?{avatarLayers:m.avatarLayers}:{},...m.ownedAvatarItems?{ownedAvatarItems:m.ownedAvatarItems}:{}}}return await p(d(i,"users",e),{...u,level:1,currentXP:0,totalXP:0,streak:0,streakHistory:[],quizzesCompleted:0,averageScore:0,atRiskSubjects:[],hasTakenDiagnostic:!1,iarAssessmentState:"not_started",learningPathState:"unlocked",remediationState:"not_required",subjectBadges:{},riskClassifications:{},overallRisk:"Low",assessmentDismissed:!1,initialAssessmentCompleted:!1,hasCompletedInitialAssessment:!1,assessmentResults:null,assessmentCompletedAt:null,initialAssessmentCompletedAt:c(),diagnosticCompleted:!1,lastAssessmentDate:c(),assessmentAttemptCount:0,initialProficiencyLevel:c(),iarQuestionSetVersion:c(),iarTopicClassifications:c(),topicScores:c(),priorityTopics:c(),recommendedPace:c(),g12ReadinessIndicators:c(),riskFlags:c(),iarMode:c(),lastAssessmentType:c(),startingQuarterG11:c(),recommendedNextTopicGroupId:c(),recommendationRationale:c(),recommendationReasonCode:c(),grade12TransitionGate:c(),currentCurriculumVersionSetId:c(),unlockCriteriaVersion:c(),updatedAt:h()},{merge:!0}),o+=1,s+=await a("notifications","userId",e),s+=await a("chatSessions","userId",e),s+=await a("chatMessages","userId",e),await l(d(i,"diagnosticResults",e)).then(()=>{s+=1}).catch(()=>{}),await l(d(i,"competencyProfiles",e)).then(()=>{s+=1}).catch(()=>{}),await l(d(i,"assessments",e)).then(()=>{s+=1}).catch(()=>{}),s+=await w(`assessmentResults/${e}`,"attempts"),s+=await w(`assessments/${e}`,"attempts"),s+=await w(`studentProgress/${e}`,"diagnostics"),s+=await w(`assessmentQuestionHistory/${e}`,"questions"),s+=await w(`practice_results/${e}`,"sessions"),await l(d(i,"users",e,"gradeSummary","current")).then(()=>{s+=1}).catch(()=>{}),s+=await w(`users/${e}`,"assessments"),r!==e&&(s+=await a("notifications","userId",r),await l(d(i,"diagnosticResults",r)).then(()=>{s+=1}).catch(()=>{})),s+=await a("xpActivities","userId",e),s+=await a("quizBattleHistory","studentId",e),await l(d(i,"studentBattleStats",e)).then(()=>{s+=1}).catch(()=>{}),await l(d(i,"studentBattleLeaderboard",e)).then(()=>{s+=1}).catch(()=>{}),s+=await a("quizResults","studentId",e),s+=await a("quizResults","lrn",e),s+=await a("quizSubmissions","lrn",e),s+=await w(`users/${e}`,"moduleProgress"),await l(d(i,"users",e,"dashboardSummary","heroBannerModal")).then(()=>{s+=1}).catch(()=>{}),await p(d(i,"achievements",e),{userId:e,achievements:[],totalAchievements:0,updatedAt:h()},{merge:!0}).catch(()=>{}),{deletedDocs:s,updatedDocs:o}}async function P(e){let t=0,r=0;const o=(await y(I(f(i,"classrooms"),v("teacherId","==",e)))).docs.map(n=>n.id);t+=await a("notifications","userId",e),t+=await a("chatSessions","userId",e),t+=await a("chatMessages","userId",e),t+=await a("announcements","teacherId",e),t+=await a("classSectionOwnership","ownerTeacherId",e),t+=await a("managedStudents","teacherId",e),t+=await a("classrooms","teacherId",e),t+=await a("normalizedClassRecords","teacherId",e),t+=await a("classRecordImports","teacherId",e),t+=await a("courseMaterials","teacherId",e),t+=await a("riskRefreshEvents","teacherId",e),t+=await a("riskRefreshJobs","teacherId",e),t+=await a("importGroundedFeedbackEvents","teacherId",e),t+=await a("accessAuditLogs","actorUid",e),t+=await a("accessAuditLogs","teacherId",e);for(const n of o)t+=await a("managedStudents","classroomId",n),t+=await a("activities","classroomId",n),t+=await a("announcements","classroomId",n),await l(d(i,"classrooms",n)).then(()=>{t+=1}).catch(()=>{});return await l(d(i,"riskRefreshStats",e)).then(()=>{t+=1}).catch(()=>{}),await p(d(i,"users",e),{testingResetAt:h(),updatedAt:h()},{merge:!0}).catch(()=>{}),r+=1,{deletedDocs:t,updatedDocs:r}}async function L(e){let t=0,r=0;return t+=await a("notifications","userId",e),t+=await a("chatSessions","userId",e),t+=await a("chatMessages","userId",e),t+=await a("curriculumContent","updatedBy",e),t+=await a("curriculumContent","deletedBy",e),await p(d(i,"users",e),{testingResetAt:h(),updatedAt:h()},{merge:!0}).catch(()=>{}),r+=1,{deletedDocs:t,updatedDocs:r}}async function H(e){const{uid:t,role:r,lrn:s}=e;if(!t)throw new Error("Missing user id for reset.");let o;r==="student"?o=await q(t,s):r==="teacher"?o=await P(t):o=await L(t);let n=null;try{n=await B(e)}catch(u){console.warn("[testReset] Backend sync failed (non-fatal):",u)}return{role:r,deletedDocs:o.deletedDocs+(n?.deletedDocs??0),updatedDocs:o.updatedDocs+(n?.updatedDocs??0),summary:`${r} reset complete: ${o.deletedDocs} local records deleted, ${o.updatedDocs} local records updated.${n?` Backend: ${n.summary}`:""}`}}export{H as resetTestingDataForRole}; diff --git a/assets/tooltip--nIi8N_-.js b/assets/tooltip-C238w8wC.js similarity index 94% rename from assets/tooltip--nIi8N_-.js rename to assets/tooltip-C238w8wC.js index c0f0c77656f05e1d4132faef8d89d0d35167b088..e88f009cffeb80ddc25764da9d8816e39d73c65b 100644 --- a/assets/tooltip--nIi8N_-.js +++ b/assets/tooltip-C238w8wC.js @@ -1 +1 @@ -import{j as o}from"./vendor-react-B4AQeu28.js";import{h as e,i as s,j as n,k as d,A as l,l as m}from"./vendor-radix-BPuEd8FG.js";import{n as p}from"./index-Dl2Y5a7s.js";function f({delayDuration:t=0,...a}){return o.jsx(m,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function g({...t}){return o.jsx(f,{children:o.jsx(e,{"data-slot":"tooltip",...t})})}function j({...t}){return o.jsx(s,{"data-slot":"tooltip-trigger",...t})}function T({className:t,sideOffset:a=0,children:r,...i}){return o.jsx(n,{children:o.jsxs(d,{"data-slot":"tooltip-content",sideOffset:a,className:p("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",t),...i,children:[r,o.jsx(l,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}export{g as T,j as a,T as b}; +import{j as o}from"./vendor-react-B4AQeu28.js";import{h as e,i as s,j as n,k as d,A as l,l as m}from"./vendor-radix-BPuEd8FG.js";import{n as p}from"./index-pcr0VEFr.js";function f({delayDuration:t=0,...a}){return o.jsx(m,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function g({...t}){return o.jsx(f,{children:o.jsx(e,{"data-slot":"tooltip",...t})})}function j({...t}){return o.jsx(s,{"data-slot":"tooltip-trigger",...t})}function T({className:t,sideOffset:a=0,children:r,...i}){return o.jsx(n,{children:o.jsxs(d,{"data-slot":"tooltip-content",sideOffset:a,className:p("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",t),...i,children:[r,o.jsx(l,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}export{g as T,j as a,T as b}; diff --git a/assets/trackingService-D8Xl_0W8.js b/assets/trackingService-DVTIYmY9.js similarity index 93% rename from assets/trackingService-D8Xl_0W8.js rename to assets/trackingService-DVTIYmY9.js index ebc5eec40656d645d96f8fe98a9d69e8043d14c4..90b7060f601c39abf4902d0c8e2b3ea756cd5eca 100644 --- a/assets/trackingService-D8Xl_0W8.js +++ b/assets/trackingService-DVTIYmY9.js @@ -1 +1 @@ -import{collection as e,addDoc as s,serverTimestamp as a}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as c}from"./index-Dl2Y5a7s.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const m="moduleActivities",E=async(o,r,i)=>{try{const t=e(c,m);await s(t,{userId:o,activityType:"chat_session",metadata:{sessionId:r,messageCount:i},timestamp:a()})}catch(t){throw console.error("Error logging chat session:",t),t}},T=async(o,r,i)=>{try{const t=e(c,m);await s(t,{userId:o,activityType:"lesson_view",moduleId:r,topicId:i,timestamp:a()})}catch(t){throw console.error("Error logging lesson view:",t),t}};export{E as logChatSession,T as logLessonView}; +import{collection as e,addDoc as s,serverTimestamp as a}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as c}from"./index-pcr0VEFr.js";import"./vendor-firebase-core-whx8i25I.js";import"./vendor-react-B4AQeu28.js";import"./vendor-firebase-auth-D7a6zeTO.js";import"./vendor-firebase-storage-Ct9KPL22.js";import"./vendor-firebase-analytics-N123OPpo.js";import"./vendor-radix-BPuEd8FG.js";import"./vendor-charts-D7t7JfSr.js";import"./vendor-markdown-yqZQ_iQm.js";const m="moduleActivities",E=async(o,r,i)=>{try{const t=e(c,m);await s(t,{userId:o,activityType:"chat_session",metadata:{sessionId:r,messageCount:i},timestamp:a()})}catch(t){throw console.error("Error logging chat session:",t),t}},T=async(o,r,i)=>{try{const t=e(c,m);await s(t,{userId:o,activityType:"lesson_view",moduleId:r,topicId:i,timestamp:a()})}catch(t){throw console.error("Error logging lesson view:",t),t}};export{E as logChatSession,T as logLessonView}; diff --git a/assets/trash-2-D0AgwsJy.js b/assets/trash-2-CcKz2OV0.js similarity index 92% rename from assets/trash-2-D0AgwsJy.js rename to assets/trash-2-CcKz2OV0.js index 891cb4b2ba3d2a0a04914738bd22d136f9531b78..101a6fb0515f716286b990627934ba6910bf3d6b 100644 --- a/assets/trash-2-D0AgwsJy.js +++ b/assets/trash-2-CcKz2OV0.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/upload-C4j9TBDs.js b/assets/upload-BDJuFJqK.js similarity index 89% rename from assets/upload-C4j9TBDs.js rename to assets/upload-BDJuFJqK.js index 6bb6588013bdfc8008357ce905a0d10be33b6a06..6163daafffe5902b51652da935b042ebb5c8daac 100644 --- a/assets/upload-C4j9TBDs.js +++ b/assets/upload-BDJuFJqK.js @@ -1,4 +1,4 @@ -import{e as o}from"./index-Dl2Y5a7s.js";/** +import{e as o}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/useCurriculum-DnU6Jf3F.js b/assets/useCurriculum-0U0j41i7.js similarity index 93% rename from assets/useCurriculum-DnU6Jf3F.js rename to assets/useCurriculum-0U0j41i7.js index 4082ec5232b5750c413f4e65a968039dd4d335a2..857665a4249138949bd030b12bff1c1c716f2670 100644 --- a/assets/useCurriculum-DnU6Jf3F.js +++ b/assets/useCurriculum-0U0j41i7.js @@ -1 +1 @@ -import{r}from"./vendor-react-B4AQeu28.js";import{aH as g}from"./index-Dl2Y5a7s.js";import{S as f}from"./subjects-DcwoUK34.js";const m=e=>({id:e.id,code:e.code,name:e.name,gradeLevel:e.gradeLevel,semester:e.semester,color:e.color,pdfAvailable:e.pdfAvailable,topics:e.topics.map(s=>({id:s.id,name:s.name,unit:s.unit}))});function k(e){const[s,c]=r.useState([]),[d,n]=r.useState(!0),[p,l]=r.useState(null),[C,i]=r.useState("static"),u=r.useCallback(async()=>{n(!0),l(null);try{const t=await g(e);if(t&&t.length>0)c(t),i("firestore");else{const a=f.filter(o=>!e||o.gradeLevel===e);c(a.map(m)),i("static")}}catch(t){console.warn("[useCurriculum] API failed, using static:",t);const a=f.filter(o=>!e||o.gradeLevel===e);c(a.map(m)),i("static"),l(t instanceof Error?t.message:"Failed to load curriculum")}finally{n(!1)}},[e]);r.useEffect(()=>{u()},[u]);const S=r.useCallback(t=>s.find(a=>a.id===t),[s]),b=r.useCallback(t=>s.find(o=>o.id===t)?.topics||[],[s]);return{subjects:s,isLoading:d,error:p,getSubject:S,getTopics:b,refetch:u}}export{k as u}; +import{r}from"./vendor-react-B4AQeu28.js";import{aH as g}from"./index-pcr0VEFr.js";import{S as f}from"./subjects-DsVN1z_r.js";const m=e=>({id:e.id,code:e.code,name:e.name,gradeLevel:e.gradeLevel,semester:e.semester,color:e.color,pdfAvailable:e.pdfAvailable,topics:e.topics.map(s=>({id:s.id,name:s.name,unit:s.unit}))});function k(e){const[s,c]=r.useState([]),[d,n]=r.useState(!0),[p,l]=r.useState(null),[C,i]=r.useState("static"),u=r.useCallback(async()=>{n(!0),l(null);try{const t=await g(e);if(t&&t.length>0)c(t),i("firestore");else{const a=f.filter(o=>!e||o.gradeLevel===e);c(a.map(m)),i("static")}}catch(t){console.warn("[useCurriculum] API failed, using static:",t);const a=f.filter(o=>!e||o.gradeLevel===e);c(a.map(m)),i("static"),l(t instanceof Error?t.message:"Failed to load curriculum")}finally{n(!1)}},[e]);r.useEffect(()=>{u()},[u]);const S=r.useCallback(t=>s.find(a=>a.id===t),[s]),b=r.useCallback(t=>s.find(o=>o.id===t)?.topics||[],[s]);return{subjects:s,isLoading:d,error:p,getSubject:S,getTopics:b,refetch:u}}export{k as u}; diff --git a/assets/useFeatureAccess-Drs6_TME.js b/assets/useFeatureAccess-BSo8Mi8o.js similarity index 91% rename from assets/useFeatureAccess-Drs6_TME.js rename to assets/useFeatureAccess-BSo8Mi8o.js index 539c4c770e0e9b62c3e1d5ecc75d28ddbd3dae4c..9d14a5a0d29fff0f4a505341e03fc38bdf5acc5d 100644 --- a/assets/useFeatureAccess-Drs6_TME.js +++ b/assets/useFeatureAccess-BSo8Mi8o.js @@ -1 +1 @@ -import{r as c}from"./vendor-react-B4AQeu28.js";import{doc as n,onSnapshot as l}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as d}from"./index-Dl2Y5a7s.js";const t={leaderboard:!0,cosmeticShop:!0,bonusChallenges:!0,optionalModules:!0,lockedFeatures:[],loading:!0};function h(r){const[u,s]=c.useState(t);return c.useEffect(()=>{if(!r){s(t);return}const a=n(d,"users",r);return l(a,o=>{if(!o.exists()){s(t);return}const e=o.data()?.lockedFeatures||[];s({leaderboard:!e.includes("leaderboard"),cosmeticShop:!e.includes("cosmetic_shop"),bonusChallenges:!e.includes("bonus_challenges"),optionalModules:!e.includes("optional_modules"),lockedFeatures:e,loading:!1})},o=>{console.error("[useFeatureAccess] snapshot error:",o),s(t)})},[r]),u}export{h as u}; +import{r as c}from"./vendor-react-B4AQeu28.js";import{doc as n,onSnapshot as l}from"./vendor-firebase-firestore-BJsL6-Wd.js";import{g as d}from"./index-pcr0VEFr.js";const t={leaderboard:!0,cosmeticShop:!0,bonusChallenges:!0,optionalModules:!0,lockedFeatures:[],loading:!0};function h(r){const[u,s]=c.useState(t);return c.useEffect(()=>{if(!r){s(t);return}const a=n(d,"users",r);return l(a,o=>{if(!o.exists()){s(t);return}const e=o.data()?.lockedFeatures||[];s({leaderboard:!e.includes("leaderboard"),cosmeticShop:!e.includes("cosmetic_shop"),bonusChallenges:!e.includes("bonus_challenges"),optionalModules:!e.includes("optional_modules"),lockedFeatures:e,loading:!1})},o=>{console.error("[useFeatureAccess] snapshot error:",o),s(t)})},[r]),u}export{h as u}; diff --git a/assets/useQuery-B50cnw-J.js b/assets/useQuery-BbNTyvNN.js similarity index 99% rename from assets/useQuery-B50cnw-J.js rename to assets/useQuery-BbNTyvNN.js index 31cd1783cdb162294d13c738bea6e8f374a92f29..19752f1a0e627548176baa75bd211de172f030dd 100644 --- a/assets/useQuery-B50cnw-J.js +++ b/assets/useQuery-BbNTyvNN.js @@ -1 +1 @@ -import{ap as Y,aq as N,ar as u,as as Q,at as g,au as M,av as x,aw as B,ax as G,ay as C,az as J,aA as X,aB as A,aC as W,aD as V,Y as Z}from"./index-Dl2Y5a7s.js";import{r as d}from"./vendor-react-B4AQeu28.js";var $=class extends Y{constructor(t,e){super(),this.options=e,this.#s=t,this.#r=null,this.#i=N(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#p=void 0;#e=void 0;#n;#u;#i;#r;#v;#l;#d;#o;#h;#a;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),j(this.#t,this.options)?this.#c():this.updateResult(),this.#g())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return _(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return _(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#y(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof u(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!Q(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&H(this.#t,s,this.options,e)&&this.#c(),this.updateResult(),i&&(this.#t!==s||u(this.options.enabled,this.#t)!==u(e.enabled,this.#t)||g(this.options.staleTime,this.#t)!==g(e.staleTime,this.#t))&&this.#R();const r=this.#b();i&&(this.#t!==s||u(this.options.enabled,this.#t)!==u(e.enabled,this.#t)||r!==this.#a)&&this.#m(r)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return tt(this,s)&&(this.#e=s,this.#u=this.options,this.#n=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#f.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#c({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#c(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(M)),e}#R(){this.#y();const t=g(this.options.staleTime,this.#t);if(x.isServer()||this.#e.isStale||!B(t))return;const s=G(this.#e.dataUpdatedAt,t)+1;this.#o=C.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#b(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#m(t){this.#S(),this.#a=t,!(x.isServer()||u(this.options.enabled,this.#t)===!1||!B(this.#a)||this.#a===0)&&(this.#h=C.setInterval(()=>{(this.options.refetchIntervalInBackground||J.isFocused())&&this.#c()},this.#a))}#g(){this.#R(),this.#m(this.#b())}#y(){this.#o!==void 0&&(C.clearTimeout(this.#o),this.#o=void 0)}#S(){this.#h!==void 0&&(C.clearInterval(this.#h),this.#h=void 0)}createResult(t,e){const s=this.#t,i=this.options,r=this.#e,l=this.#n,a=this.#u,R=t!==s?t.state:this.#p,{state:h}=t;let n={...h},b=!1,o;if(e._optimisticResults){const c=this.hasListeners(),m=!c&&j(t,e),S=c&&H(t,s,e,i);(m||S)&&(n={...n,...X(h.data,t.options)}),e._optimisticResults==="isRestoring"&&(n.fetchStatus="idle")}let{error:y,errorUpdatedAt:D,status:v}=n;o=n.data;let F=!1;if(e.placeholderData!==void 0&&o===void 0&&v==="pending"){let c;r?.isPlaceholderData&&e.placeholderData===a?.placeholderData?(c=r.data,F=!0):c=typeof e.placeholderData=="function"?e.placeholderData(this.#d?.state.data,this.#d):e.placeholderData,c!==void 0&&(v="success",o=A(r?.data,c,e),b=!0)}if(e.select&&o!==void 0&&!F)if(r&&o===l?.data&&e.select===this.#v)o=this.#l;else try{this.#v=e.select,o=e.select(o),o=A(r?.data,o,e),this.#l=o,this.#r=null}catch(c){this.#r=c}this.#r&&(y=this.#r,o=this.#l,D=Date.now(),v="error");const I=n.fetchStatus==="fetching",T=v==="pending",w=v==="error",U=T&&I,k=o!==void 0,p={status:v,fetchStatus:n.fetchStatus,isPending:T,isSuccess:v==="success",isError:w,isInitialLoading:U,isLoading:U,data:o,dataUpdatedAt:n.dataUpdatedAt,error:y,errorUpdatedAt:D,failureCount:n.fetchFailureCount,failureReason:n.fetchFailureReason,errorUpdateCount:n.errorUpdateCount,isFetched:t.isFetched(),isFetchedAfterMount:n.dataUpdateCount>R.dataUpdateCount||n.errorUpdateCount>R.errorUpdateCount,isFetching:I,isRefetching:I&&!T,isLoadingError:w&&!k,isPaused:n.fetchStatus==="paused",isPlaceholderData:b,isRefetchError:w&&k,isStale:P(t,e),refetch:this.refetch,promise:this.#i,isEnabled:u(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const c=p.data!==void 0,m=p.status==="error"&&!c,S=E=>{m?E.reject(p.error):c&&E.resolve(p.data)},L=()=>{const E=this.#i=p.promise=N();S(E)},O=this.#i;switch(O.status){case"pending":t.queryHash===s.queryHash&&S(O);break;case"fulfilled":(m||p.data!==O.value)&&L();break;case"rejected":(!m||p.error!==O.reason)&&L();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#n=this.#t.state,this.#u=this.options,this.#n.data!==void 0&&(this.#d=this.#t),Q(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,r=typeof i=="function"?i():i;if(r==="all"||!r&&!this.#f.size)return!0;const l=new Set(r??this.#f);return this.options.throwOnError&&l.add("error"),Object.keys(this.#e).some(a=>{const f=a;return this.#e[f]!==t[f]&&l.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#p=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#g()}#E(t){W.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function q(t,e){return u(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&u(e.retryOnMount,t)===!1)}function j(t,e){return q(t,e)||t.state.data!==void 0&&_(t,e,e.refetchOnMount)}function _(t,e,s){if(u(e.enabled,t)!==!1&&g(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&P(t,e)}return!1}function H(t,e,s,i){return(t!==e||u(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&P(t,s)}function P(t,e){return u(e.enabled,t)!==!1&&t.isStaleByTime(g(e.staleTime,t))}function tt(t,e){return!Q(t.getCurrentResult(),e)}var K=d.createContext(!1),et=()=>d.useContext(K);K.Provider;function st(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var it=d.createContext(st()),rt=()=>d.useContext(it),at=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?V(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},nt=t=>{d.useEffect(()=>{t.clearReset()},[t])},ot=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:r})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(r&&t.data===void 0||V(s,[t.error,i])),ht=t=>{if(t.suspense){const s=r=>r==="static"?r:Math.max(r??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...r)=>s(i(...r)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},ct=(t,e)=>t.isLoading&&t.isFetching&&!e,ut=(t,e)=>t?.suspense&&e.isPending,z=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function lt(t,e,s){const i=et(),r=rt(),l=Z(),a=l.defaultQueryOptions(t);l.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const f=l.getQueryCache().get(a.queryHash);a._optimisticResults=i?"isRestoring":"optimistic",ht(a),at(a,r,f),nt(r);const R=!l.getQueryCache().get(a.queryHash),[h]=d.useState(()=>new e(l,a)),n=h.getOptimisticResult(a),b=!i&&t.subscribed!==!1;if(d.useSyncExternalStore(d.useCallback(o=>{const y=b?h.subscribe(W.batchCalls(o)):M;return h.updateResult(),y},[h,b]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),d.useEffect(()=>{h.setOptions(a)},[a,h]),ut(a,n))throw z(a,h,r);if(ot({result:n,errorResetBoundary:r,throwOnError:a.throwOnError,query:f,suspense:a.suspense}))throw n.error;return l.getDefaultOptions().queries?._experimental_afterQuery?.(a,n),a.experimental_prefetchInRender&&!x.isServer()&&ct(n,i)&&(R?z(a,h,r):f?.promise)?.catch(M).finally(()=>{h.updateResult()}),a.notifyOnChangeProps?n:h.trackResult(n)}function vt(t,e){return lt(t,$)}export{vt as u}; +import{ap as Y,aq as N,ar as u,as as Q,at as g,au as M,av as x,aw as B,ax as G,ay as C,az as J,aA as X,aB as A,aC as W,aD as V,Y as Z}from"./index-pcr0VEFr.js";import{r as d}from"./vendor-react-B4AQeu28.js";var $=class extends Y{constructor(t,e){super(),this.options=e,this.#s=t,this.#r=null,this.#i=N(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#p=void 0;#e=void 0;#n;#u;#i;#r;#v;#l;#d;#o;#h;#a;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),j(this.#t,this.options)?this.#c():this.updateResult(),this.#g())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return _(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return _(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#y(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof u(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!Q(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&H(this.#t,s,this.options,e)&&this.#c(),this.updateResult(),i&&(this.#t!==s||u(this.options.enabled,this.#t)!==u(e.enabled,this.#t)||g(this.options.staleTime,this.#t)!==g(e.staleTime,this.#t))&&this.#R();const r=this.#b();i&&(this.#t!==s||u(this.options.enabled,this.#t)!==u(e.enabled,this.#t)||r!==this.#a)&&this.#m(r)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return tt(this,s)&&(this.#e=s,this.#u=this.options,this.#n=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#f.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#c({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#c(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(M)),e}#R(){this.#y();const t=g(this.options.staleTime,this.#t);if(x.isServer()||this.#e.isStale||!B(t))return;const s=G(this.#e.dataUpdatedAt,t)+1;this.#o=C.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#b(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#m(t){this.#S(),this.#a=t,!(x.isServer()||u(this.options.enabled,this.#t)===!1||!B(this.#a)||this.#a===0)&&(this.#h=C.setInterval(()=>{(this.options.refetchIntervalInBackground||J.isFocused())&&this.#c()},this.#a))}#g(){this.#R(),this.#m(this.#b())}#y(){this.#o!==void 0&&(C.clearTimeout(this.#o),this.#o=void 0)}#S(){this.#h!==void 0&&(C.clearInterval(this.#h),this.#h=void 0)}createResult(t,e){const s=this.#t,i=this.options,r=this.#e,l=this.#n,a=this.#u,R=t!==s?t.state:this.#p,{state:h}=t;let n={...h},b=!1,o;if(e._optimisticResults){const c=this.hasListeners(),m=!c&&j(t,e),S=c&&H(t,s,e,i);(m||S)&&(n={...n,...X(h.data,t.options)}),e._optimisticResults==="isRestoring"&&(n.fetchStatus="idle")}let{error:y,errorUpdatedAt:D,status:v}=n;o=n.data;let F=!1;if(e.placeholderData!==void 0&&o===void 0&&v==="pending"){let c;r?.isPlaceholderData&&e.placeholderData===a?.placeholderData?(c=r.data,F=!0):c=typeof e.placeholderData=="function"?e.placeholderData(this.#d?.state.data,this.#d):e.placeholderData,c!==void 0&&(v="success",o=A(r?.data,c,e),b=!0)}if(e.select&&o!==void 0&&!F)if(r&&o===l?.data&&e.select===this.#v)o=this.#l;else try{this.#v=e.select,o=e.select(o),o=A(r?.data,o,e),this.#l=o,this.#r=null}catch(c){this.#r=c}this.#r&&(y=this.#r,o=this.#l,D=Date.now(),v="error");const I=n.fetchStatus==="fetching",T=v==="pending",w=v==="error",U=T&&I,k=o!==void 0,p={status:v,fetchStatus:n.fetchStatus,isPending:T,isSuccess:v==="success",isError:w,isInitialLoading:U,isLoading:U,data:o,dataUpdatedAt:n.dataUpdatedAt,error:y,errorUpdatedAt:D,failureCount:n.fetchFailureCount,failureReason:n.fetchFailureReason,errorUpdateCount:n.errorUpdateCount,isFetched:t.isFetched(),isFetchedAfterMount:n.dataUpdateCount>R.dataUpdateCount||n.errorUpdateCount>R.errorUpdateCount,isFetching:I,isRefetching:I&&!T,isLoadingError:w&&!k,isPaused:n.fetchStatus==="paused",isPlaceholderData:b,isRefetchError:w&&k,isStale:P(t,e),refetch:this.refetch,promise:this.#i,isEnabled:u(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const c=p.data!==void 0,m=p.status==="error"&&!c,S=E=>{m?E.reject(p.error):c&&E.resolve(p.data)},L=()=>{const E=this.#i=p.promise=N();S(E)},O=this.#i;switch(O.status){case"pending":t.queryHash===s.queryHash&&S(O);break;case"fulfilled":(m||p.data!==O.value)&&L();break;case"rejected":(!m||p.error!==O.reason)&&L();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#n=this.#t.state,this.#u=this.options,this.#n.data!==void 0&&(this.#d=this.#t),Q(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,r=typeof i=="function"?i():i;if(r==="all"||!r&&!this.#f.size)return!0;const l=new Set(r??this.#f);return this.options.throwOnError&&l.add("error"),Object.keys(this.#e).some(a=>{const f=a;return this.#e[f]!==t[f]&&l.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#p=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#g()}#E(t){W.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function q(t,e){return u(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&u(e.retryOnMount,t)===!1)}function j(t,e){return q(t,e)||t.state.data!==void 0&&_(t,e,e.refetchOnMount)}function _(t,e,s){if(u(e.enabled,t)!==!1&&g(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&P(t,e)}return!1}function H(t,e,s,i){return(t!==e||u(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&P(t,s)}function P(t,e){return u(e.enabled,t)!==!1&&t.isStaleByTime(g(e.staleTime,t))}function tt(t,e){return!Q(t.getCurrentResult(),e)}var K=d.createContext(!1),et=()=>d.useContext(K);K.Provider;function st(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var it=d.createContext(st()),rt=()=>d.useContext(it),at=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?V(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},nt=t=>{d.useEffect(()=>{t.clearReset()},[t])},ot=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:r})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(r&&t.data===void 0||V(s,[t.error,i])),ht=t=>{if(t.suspense){const s=r=>r==="static"?r:Math.max(r??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...r)=>s(i(...r)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},ct=(t,e)=>t.isLoading&&t.isFetching&&!e,ut=(t,e)=>t?.suspense&&e.isPending,z=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function lt(t,e,s){const i=et(),r=rt(),l=Z(),a=l.defaultQueryOptions(t);l.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const f=l.getQueryCache().get(a.queryHash);a._optimisticResults=i?"isRestoring":"optimistic",ht(a),at(a,r,f),nt(r);const R=!l.getQueryCache().get(a.queryHash),[h]=d.useState(()=>new e(l,a)),n=h.getOptimisticResult(a),b=!i&&t.subscribed!==!1;if(d.useSyncExternalStore(d.useCallback(o=>{const y=b?h.subscribe(W.batchCalls(o)):M;return h.updateResult(),y},[h,b]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),d.useEffect(()=>{h.setOptions(a)},[a,h]),ut(a,n))throw z(a,h,r);if(ot({result:n,errorResetBoundary:r,throwOnError:a.throwOnError,query:f,suspense:a.suspense}))throw n.error;return l.getDefaultOptions().queries?._experimental_afterQuery?.(a,n),a.experimental_prefetchInRender&&!x.isServer()&&ct(n,i)&&(R?z(a,h,r):f?.promise)?.catch(M).finally(()=>{h.updateResult()}),a.notifyOnChangeProps?n:h.trackResult(n)}function vt(t,e){return lt(t,$)}export{vt as u}; diff --git a/assets/useSubjectAvailability-DLIjLCt1.js b/assets/useSubjectAvailability-CRpOB4yl.js similarity index 97% rename from assets/useSubjectAvailability-DLIjLCt1.js rename to assets/useSubjectAvailability-CRpOB4yl.js index c42f353a7a8d358eafb7ed7ec4ffb48848f30eb8..a71c44e29a97e4f030db90c966977618f446b51f 100644 --- a/assets/useSubjectAvailability-DLIjLCt1.js +++ b/assets/useSubjectAvailability-CRpOB4yl.js @@ -1 +1 @@ -import{r as u}from"./vendor-react-B4AQeu28.js";import{g as j}from"./index-Dl2Y5a7s.js";import{doc as y,getDoc as w,setDoc as A,serverTimestamp as p,onSnapshot as P}from"./vendor-firebase-firestore-BJsL6-Wd.js";const v="subjects",h="platformConfig";function g(){return{"gen-math":{available:!0,pdfPath:null,lastUpdated:new Date},"stats-prob":{available:!0,pdfPath:null,lastUpdated:new Date},"pre-calc":{available:!1,pdfPath:null,lastUpdated:new Date},"basic-calc":{available:!1,pdfPath:null,lastUpdated:new Date}}}function D(t){const r=t.subjects||{},a={};for(const[e,s]of Object.entries(r))a[e]={available:!!s.available,pdfPath:s.pdfPath?String(s.pdfPath):null,lastUpdated:s.lastUpdated?s.lastUpdated.toDate?.()||new Date:new Date};return{subjects:a,updatedAt:t.updatedAt?t.updatedAt.toDate?.()||new Date:new Date,updatedBy:String(t.updatedBy||"")}}async function x(){try{const t=y(j,h,v),r=await w(t);return r.exists()?D(r.data()):{subjects:g(),updatedAt:new Date,updatedBy:""}}catch(t){return console.error("[platformConfigService] getSubjectAvailability error:",t),{subjects:g(),updatedAt:new Date,updatedBy:""}}}function U(t){const r=y(j,h,v);return P(r,a=>{a.exists()?t(D(a.data())):t({subjects:g(),updatedAt:new Date,updatedBy:""})},a=>{console.error("[platformConfigService] subscribe error:",a),t({subjects:g(),updatedAt:new Date,updatedBy:""})})}async function O(t,r,a){try{const e=y(j,h,v),s=await w(e),o=s.exists()?s.data().subjects||{}:{};await A(e,{subjects:{...o,[t]:{available:r,pdfPath:o[t]?.pdfPath??null,lastUpdated:p()}},updatedAt:p(),updatedBy:a},{merge:!0})}catch(e){throw console.error("[platformConfigService] toggleSubjectAvailability error:",e),e}}async function L(t,r,a){try{const e=y(j,h,v),s=await w(e),o=s.exists()?s.data().subjects||{}:{};await A(e,{subjects:{...o,[t]:{available:o[t]?.available??!0,pdfPath:r,lastUpdated:p()}},updatedAt:p(),updatedBy:a},{merge:!0})}catch(e){throw console.error("[platformConfigService] updateSubjectPdfPath error:",e),e}}let c=null,l=!0,b=null,f=[];function S(){f.forEach(t=>t())}function R(){const[t,r]=u.useState(c),[a,e]=u.useState(l),[s,o]=u.useState(b);u.useEffect(()=>{const n=()=>{r(c),e(l),o(b)};if(f.push(n),!c&&l){x().then(d=>{c=d,l=!1,S()}).catch(d=>{console.error("[useSubjectAvailability] initial fetch error:",d),b="Failed to load subject availability",l=!1,S()});const i=U(d=>{c=d,l=!1,b=null,S()});f.push(i)}return()=>{const i=f.indexOf(n);i>-1&&f.splice(i,1)}},[]);const m=u.useCallback(n=>(t||c)?.subjects[n]?.available??!0,[t]),C=u.useCallback(n=>(t||c)?.subjects[n],[t]);return{availability:(t||c)?.subjects??{},config:t||c,loading:a||l,error:s||b,isSubjectAvailable:m,getSubjectEntry:C}}export{L as a,O as t,R as u}; +import{r as u}from"./vendor-react-B4AQeu28.js";import{g as j}from"./index-pcr0VEFr.js";import{doc as y,getDoc as w,setDoc as A,serverTimestamp as p,onSnapshot as P}from"./vendor-firebase-firestore-BJsL6-Wd.js";const v="subjects",h="platformConfig";function g(){return{"gen-math":{available:!0,pdfPath:null,lastUpdated:new Date},"stats-prob":{available:!0,pdfPath:null,lastUpdated:new Date},"pre-calc":{available:!1,pdfPath:null,lastUpdated:new Date},"basic-calc":{available:!1,pdfPath:null,lastUpdated:new Date}}}function D(t){const r=t.subjects||{},a={};for(const[e,s]of Object.entries(r))a[e]={available:!!s.available,pdfPath:s.pdfPath?String(s.pdfPath):null,lastUpdated:s.lastUpdated?s.lastUpdated.toDate?.()||new Date:new Date};return{subjects:a,updatedAt:t.updatedAt?t.updatedAt.toDate?.()||new Date:new Date,updatedBy:String(t.updatedBy||"")}}async function x(){try{const t=y(j,h,v),r=await w(t);return r.exists()?D(r.data()):{subjects:g(),updatedAt:new Date,updatedBy:""}}catch(t){return console.error("[platformConfigService] getSubjectAvailability error:",t),{subjects:g(),updatedAt:new Date,updatedBy:""}}}function U(t){const r=y(j,h,v);return P(r,a=>{a.exists()?t(D(a.data())):t({subjects:g(),updatedAt:new Date,updatedBy:""})},a=>{console.error("[platformConfigService] subscribe error:",a),t({subjects:g(),updatedAt:new Date,updatedBy:""})})}async function O(t,r,a){try{const e=y(j,h,v),s=await w(e),o=s.exists()?s.data().subjects||{}:{};await A(e,{subjects:{...o,[t]:{available:r,pdfPath:o[t]?.pdfPath??null,lastUpdated:p()}},updatedAt:p(),updatedBy:a},{merge:!0})}catch(e){throw console.error("[platformConfigService] toggleSubjectAvailability error:",e),e}}async function L(t,r,a){try{const e=y(j,h,v),s=await w(e),o=s.exists()?s.data().subjects||{}:{};await A(e,{subjects:{...o,[t]:{available:o[t]?.available??!0,pdfPath:r,lastUpdated:p()}},updatedAt:p(),updatedBy:a},{merge:!0})}catch(e){throw console.error("[platformConfigService] updateSubjectPdfPath error:",e),e}}let c=null,l=!0,b=null,f=[];function S(){f.forEach(t=>t())}function R(){const[t,r]=u.useState(c),[a,e]=u.useState(l),[s,o]=u.useState(b);u.useEffect(()=>{const n=()=>{r(c),e(l),o(b)};if(f.push(n),!c&&l){x().then(d=>{c=d,l=!1,S()}).catch(d=>{console.error("[useSubjectAvailability] initial fetch error:",d),b="Failed to load subject availability",l=!1,S()});const i=U(d=>{c=d,l=!1,b=null,S()});f.push(i)}return()=>{const i=f.indexOf(n);i>-1&&f.splice(i,1)}},[]);const m=u.useCallback(n=>(t||c)?.subjects[n]?.available??!0,[t]),C=u.useCallback(n=>(t||c)?.subjects[n],[t]);return{availability:(t||c)?.subjects??{},config:t||c,loading:a||l,error:s||b,isSubjectAvailable:m,getSubjectEntry:C}}export{L as a,O as t,R as u}; diff --git a/assets/volume-x-Cd_Nj-77.js b/assets/volume-x-Bg34ud3a.js similarity index 97% rename from assets/volume-x-Cd_Nj-77.js rename to assets/volume-x-Bg34ud3a.js index 472edbf5f6c57e6acd5229f8ca952b5c84ab6974..763039808d583bda63aae73800eac7d5efa065ff 100644 --- a/assets/volume-x-Cd_Nj-77.js +++ b/assets/volume-x-Bg34ud3a.js @@ -1,4 +1,4 @@ -import{e as a}from"./index-Dl2Y5a7s.js";/** +import{e as a}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/assets/x-wHRRR-gQ.js b/assets/x-W9f2bIhn.js similarity index 87% rename from assets/x-wHRRR-gQ.js rename to assets/x-W9f2bIhn.js index ff5361a44f8caf5a4c81c78d5d2937b4912aff1f..6c8489549b60a4320b9978fd1c0db33c793dbb55 100644 --- a/assets/x-wHRRR-gQ.js +++ b/assets/x-W9f2bIhn.js @@ -1,4 +1,4 @@ -import{e}from"./index-Dl2Y5a7s.js";/** +import{e}from"./index-pcr0VEFr.js";/** * @license lucide-react v0.487.0 - ISC * * This source code is licensed under the ISC license. diff --git a/index.html b/index.html index eeb13764ecf82f103bc2a7bfd7ca47dd0c74bc57..dce446888fc3f87cc5f2ece63955df38245b3f90 100644 --- a/index.html +++ b/index.html @@ -33,7 +33,7 @@ #pp-static-loader .pp-spinner{width:1rem;height:1rem;border-radius:999px;border:2px solid #0284c7;border-top-color:transparent;animation:pp-spin 1.5s linear infinite} #pp-static-loader .pp-msg{margin:0;font-size:.875rem;font-weight:600;color:#64748b} - + @@ -44,7 +44,7 @@ - +