diff --git a/components/All.js b/components/All.js index 3a089df..8718a78 100644 --- a/components/All.js +++ b/components/All.js @@ -6,14 +6,9 @@ export const get = val => typeof val === "function" ? val() : val; export const getBy = (item, field = 'label') => (item && typeof item === 'object') ? item[field] : item; export const cls = (...classes) => classes.filter(Boolean).join(' ').trim(); export const isFn = f => typeof f === "function"; -export const filterBy = (items, query, field = 'label') => { - const searchTerm = String(query).toLowerCase(); - const list = get(items); - return !searchTerm ? list : list.filter(item => { - const text = (item && typeof item === 'object') ? item[field] : item; - return String(text).toLowerCase().includes(searchTerm); - }); -}; +export const filterBy = (items, query, field = 'label', q = String(query).toLowerCase()) => !query ? get(items) : get(items).filter(item => String(item && typeof item === 'object' ? item[field] : item).toLowerCase().includes(q)); +export const rand = (r) => `${r}-${Math.random().toString(36).slice(2, 9)}` +export const close = () => document.activeElement?.blur() export const listKey = (items, isOpen) => { const cursor = $(-1); watch(() => { if (!get(isOpen)) cursor(-1) }); @@ -29,251 +24,23 @@ export const listKey = (items, isOpen) => { return { cursor, onKey }; }; -export const Alert = (p, c) => h("div", { ...p, class: cls("alert", p.class) }, c); -export const Badge = (p, c) => h("span", { ...p, class: cls("badge", p.class) }, c); -export const Button = (p, c) => h("button", { ...p, class: cls("btn", p.class) }, c); -export const Card = (p, c) => h("div", { ...p, class: cls("card", p.class) }, c); -export const CardTitle = (p, c) => h("div", { ...p, class: cls("card-title", p.class) }, c); -export const CardBody = (p, c) => h("div", { ...p, class: cls("card-body", p.class) }, c); -export const CardActions = (p, c) => h("div", { ...p, class: cls("card-actions", p.class) }, c); -export const Carousel = (p, c) => h("div", { ...p, class: cls("carousel", p.class) }, c); -export const CarouselItem = (p, c) => h("div", { ...p, class: cls("carousel-item", p.class) }, c); -export const Chat = (p, c) => h("div", { ...p, class: cls("chat", p.class) }, c); -export const ChatBubble = (p, c) => h("div", { ...p, class: cls("chat-bubble", p.class) }, c); -export const ChatFooter = (p, c) => h("div", { ...p, class: cls("chat-footer", p.class) }, c); -export const ChatHeader = (p, c) => h("div", { ...p, class: cls("chat-header", p.class) }, c); -export const ChatImage = (p, c) => h("div", { ...p, class: cls("chat-image avatar", p.class) }, h("div", { class: "w-10 rounded-full" }, typeof c === "string" ? h("img", { src: c, alt: "avatar" }) : c)); -export const Checkbox = (p) => h("input", { ...p, type: "checkbox", class: cls("checkbox", p.class) }); -export const Divider = (p) => h("div", { ...p, class: cls("divider", p.class) }); -export const Fab = (p, c) => h("div", { ...p, class: cls("fab", p.class) }, c); -export const Fieldset = (p, c) => h("fieldset", { ...p, class: cls("fieldset", p.class) }, [p.legend && h("legend", { class: "fieldset-legend" }, p.legend), c]); -export const Icon = (p) => h("span", { class: p.startsWith("icon-") ? p : "" }, p.startsWith("icon-") ? null : p); -export const Indicator = (p, c) => h("div", { ...p, class: cls("indicator", p.class) }, [p.value && h("span", { class: cls("indicator-item badge", p.class) }, p.value), c]); -export const Kbd = (p, c) => h("kbd", { ...p, class: cls("kbd", p.class) }, c); -export const Loading = (p, c) => h("span", { ...p, class: cls("loading loading-spinner", p.class) }, c); -export const Navbar = (p, c) => h("div", { ...p, class: cls("navbar", p.class) }, c); -export const Progress = (p) => h("progress", { ...p, class: cls("progress", p.class) }); -export const Radial = (p, c) => h("div", { ...p, class: cls("radial-progress", p.class), style: `--value:${p.value ?? 0};${p.style ?? ''}`, role: "progressbar", "aria-valuenow": p.value ?? 0 }, c ?? `${p.value ?? 0}%`) -export const Radio = (p) => h("input", { ...p, type: "radio", class: cls("radio", p.class) }); -export const Range = (p) => h("input", { ...p, type: "range", class: cls("range", p.class) }); -export const Skeleton = (p) => h("div", { ...p, class: cls("skeleton", p.class) }); -export const SkeletonText = (p) => h("span", { ...p, class: cls("skeleton skeleton-text", p.class) }); -export const Stack = (p, c) => h("div", { ...p, class: cls("stack", p.class) }, c); -export const Steps = (p, c) => h("ul", { ...p, class: cls("steps", p.class) }, c); -export const Step = (p, c) => h("li", { ...p, class: cls("step", p.class), "data-content": p.dataContent }, c); -export const Swap = (p) => h("label", { ...p, class: cls("swap", p.class) }, [ - h("input", { type: "checkbox", checked: () => get(p.value), onchange: (e) => isFn(p.value) && p.value(e.target.checked) }), - h("div", { class: "swap-on" }, p.on), - h("div", { class: "swap-off" }, p.off) -]); -export const Textarea = (p) => h("textarea", { ...p, class: cls("textarea", p.class) }); -export const TextRotate = (p) => { - const words = Array.isArray(p.words) ? p.words : (typeof p.words === 'string' ? p.words.split(',') : []); - return h("span", { ...p, class: cls("text-rotate", p.class) }, h("span", {}, words.map(w => h("span", {}, w)))); -}; -export const Timeline = (p, c) => h("ul", { - ...p, - class: cls("timeline", - p.vertical !== false ? 'timeline-vertical' : 'timeline-horizontal', - p.compact ? 'timeline-compact' : '', - p.class - ) -}, c); -export const Toggle = (p) => h("input", { ...p, type: "checkbox", class: cls("toggle", p.class) }); -export const Tooltip = (p, c) => h("div", { ...p, class: cls("tooltip", p.class), "data-tip": p.tip }, c); - - -// Complex Components - -// Accordion +// Components export const Accordion = (p) => { - const name = p.name || `acc-${Math.random().toString(36).slice(2)}` - const base = cls('collapse', p.variant && `collapse-${p.variant}`, p.class) - const itemFn = (it) => { - const t = getBy(it, 'title') - const c = it.content - return p.type === 'details' - ? h('details', { class: base, name, open: it.open || undefined }, - h('summary', { class: 'collapse-title font-semibold' }, t), - c ? h('div', { class: 'collapse-content text-sm' }, c) : null) - : h('div', { class: base }, - h('input', { type: 'radio', name, checked: it.open || undefined }), - h('div', { class: 'collapse-title font-semibold' }, t), - c ? h('div', { class: 'collapse-content text-sm' }, c) : null) - } - return isFn(p.items) ? each(p.items, itemFn, (it, i) => it?.id ?? i) : (p.items || []).map(itemFn) + const name = p.name || rand('acc') + return each(p.items, (it) => { + return h('div', { class: cls('collapse', p.class) }, [ + h('input', { type: 'radio', name, checked: it.open || undefined }), + it.title ? h('div', { class: cls("collapse-title", `${it.classTitle ?? ' font-semibold'}`) }, it.title) : null, + it.content ? h('div', { class: cls("collapse-content text-sm", `${it.classContent ?? ' font-semibold'}`) }, it.content) : null, + ]); + }); } - -// Table -export const Table = (p) => { - if (p.children !== undefined) return h('table', { class: cls('table', p.class), ...p }, p.children) - const { items, columns = [], header = true, keyFn, ...rest } = p - const hd = header !== false && columns.some(c => c.label) ? h('thead', {}, h('tr', {}, columns.map(c => h('th', { class: c.class }, c.label)))) : null - const bd = h('tbody', {}, each( - () => get(items) || [], - (it, idx) => h('tr', {}, columns.map(c => { - const v = c.render ? c.render(it, idx) : it[c.key] - return h('td', { class: c.class }, v) - })), - keyFn || ((it, idx) => it?.id ?? idx) - )) - return h('table', { class: cls('table', rest.class), ...rest }, [hd, bd]) -} - -// Tabs -export const Tabs = (p) => { - if (p.children !== undefined) return h('div', { class: cls('tabs', p.class), ...p }, p.children) - const { items, activeIndex, onClose, ...rest } = p - const closeHandler = onClose || (isFn(items) ? (idx) => { - const arr = get(items) - const newArr = arr.filter((_, i) => i !== idx) - items(newArr) - if (activeIndex() >= newArr.length) activeIndex(Math.max(0, newArr.length - 1)) - } : null) - - return h('div', { class: cls('tabs', p.class), ...rest }, - each( - () => get(items) || [], - (it, idx) => { - const act = () => activeIndex() === idx - return [ - h('a', { - role: 'tab', - class: () => `tab ${act() ? 'tab-active' : ''} ${it.class || ''}`, - onclick: (e) => { e.preventDefault(); activeIndex(idx); it.onclick?.(e) } - }, getBy(it), it.closable ? h('span', { - class: 'icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70', - onclick: (e) => { e.stopPropagation(); closeHandler?.(idx) } - }) : null), - h('div', { - class: `tab-content ${it.contentClass || ''}`, - style: () => `display: ${act() ? 'block' : 'none'};` - }, isFn(it.content) ? it.content() : it.content) - ] - }, - (it, idx) => it.id ?? idx - ) - ) -} - -// Rating -export const Rating = (p) => { - const name = `rating-${Math.random().toString(36).slice(2, 7)}` - const stars = p.children ?? Array.from({ length: p.count || 5 }, (_, i) => { - const v = i + 1 - return h('input', { - type: 'radio', - name, - class: cls('mask', p.mask || 'mask-star'), - checked: () => get(p.value) === v, - onchange: () => isFn(p.value) ? p.value(v) : p.onchange?.(v) - }) - }) - return h('div', { class: cls('rating', p.class), ...p }, stars) -} - -// Menu -export const Menu = (p) => { - if (p.children !== undefined) return h('ul', { class: cls('menu', p.class), ...p }, p.children) - const { items, keyFn = (it, idx) => it?.id ?? idx, ...rest } = p - const render = (item) => item.children - ? h('li', {}, h('details', {}, h('summary', {}, getBy(item)), h('ul', {}, Menu({ items: item.children })))) - : h('li', {}, h('a', { - href: item.href, - onclick: item.onclick ? (e) => { if (!item.href) e.preventDefault(); item.onclick(e) } : null - }, getBy(item))) - return h('ul', { class: cls('menu', rest.class), ...rest }, - each(() => get(items) || [], render, keyFn) - ) -} - -//Drawer -export const Drawer = (p, c) => { - const id = p.id || `drawer-${Math.random().toString(36).slice(2, 9)}` - return h('div', { class: cls('drawer', p.class) }, [ - h('input', { - id, - type: 'checkbox', - class: 'drawer-toggle', - checked: () => get(p.open), - onchange: (e) => isFn(p.open) && p.open(e.target.checked) - }), - h('div', { class: 'drawer-content' }, c), - h('div', { class: 'drawer-side' }, [ - h('label', { - for: id, - class: 'drawer-overlay', - onclick: () => isFn(p.open) && p.open(false) - }), - h('div', { class: 'min-h-full bg-base-200 w-80 p-4' }, () => get(p.side)) - ]) - ]) -} - -//Dropdown -export const Dropdown = (p, c) => { - const { trigger, items, ...rest } = p - const content = c || (items ? h('ul', { - class: 'menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow' - }, each( - () => get(items) || [], - (item) => h('li', {}, - h('a', { - onclick: (e) => { - item.onclick?.(e) - e.currentTarget.closest('details').open = false - } - }, getBy(item)) - ), - (it, idx) => it.id ?? idx - )) : null) - - return h('details', { class: cls('dropdown', rest.class), ...rest }, [ - h('summary', { class: 'btn m-1' }, trigger || 'Dropdown'), - content - ]) -} - -//Select -export const Select = (p, c) => { - if (c !== undefined) return h('select', { class: cls('select', p.class), ...p }, c) - - const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p - - const opts = () => { - const raw = get(items) || [] - const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: '' }] : [] - return [...ph, ...raw] - } - - return h('label', { class: float ? 'floating-label' : '' }, [ - float && h('span', {}, label), - h('label', { class: cls('select', rest.class) }, [ - label && !float && h('span', { class: 'label' }, label), - left ?? null, - h('select', { - value: () => get(value), - onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) - }, - each(opts, (item) => { - const val = getBy(item, item.value !== undefined ? 'value' : undefined) - const lab = getBy(item, 'label') - return h('option', { value: val, disabled: item.disabled || undefined }, lab) - }, (it, i) => it?.id ?? (typeof it === 'string' ? it : it.value) ?? i) - ), - right ?? null - ]), - hint && h('div', { class: 'validator-hint' }, hint) - ]) -} - -// Autocomplete +export const Alert = (p, c) => h("div", { ...p, class: cls("alert", p.class) }, c); export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...', ...props }) => { const query = $(get(value) || ''); const isOpen = $(false); const filtered = $(() => filterBy(items, query())); const { cursor, onKey } = listKey(filtered, isOpen); - const pick = (item) => { const display = getBy(item); const actual = typeof item === 'string' ? item : item.value; @@ -282,7 +49,6 @@ export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...' onselect?.(item); isOpen(false); }; - return h('div', { class: 'relative w-full' }, [ Input({ ...props, @@ -299,7 +65,6 @@ export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...' onblur: () => setTimeout(() => isOpen(false), 150), onkeydown: (e) => onKey(e, pick) }), - when(isOpen, () => fx({ duration: 200, slide: true }, h('ul', { @@ -324,8 +89,286 @@ export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...' ) ]); }; +export const Badge = (p, c) => h("span", { ...p, class: cls("badge", p.class) }, c); +export const Button = (p, c) => h("button", { ...p, class: cls("btn", p.class) }, c); +export const Calendar = (p) => { + const internalDate = $(new Date()) + const hoverDate = $(null) + const startHour = $(0) + const endHour = $(0) + const now = new Date() + const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}` + const fmt = d => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}` + const rangeMode = () => get(p.range) === true + const current = () => get(p.value) + const selectDate = (date) => { + const s = fmt(date) + const v = current() + if (rangeMode()) { + if (!v?.start || (v.start && v.end)) { + p.onChange?.({ start: s, end: null, ...(p.hour && { startHour: startHour() }) }) + } else { + const start = v.start + const nv = s < start ? { start: s, end: start } : { start, end: s } + if (p.hour) { nv.startHour = v.startHour ?? startHour(); nv.endHour = endHour() } + p.onChange?.(nv) + } + } else { + p.onChange?.(p.hour ? `${s}T${String(startHour()).padStart(2, '0')}:00:00` : s) + } + } + const move = (m) => { const d = internalDate(); internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)) } + const moveYear = (y) => { const d = internalDate(); internalDate(new Date(d.getFullYear() + y, d.getMonth(), 1)) } + const HourSlider = ({ value: hVal, onChange: onH }) => h('div', { class: 'flex-1' }, [ + h('div', { class: 'flex gap-2 items-center' }, [ + h('input', { type: 'range', min: 0, max: 23, value: hVal, class: 'range range-xs flex-1', oninput: e => onH(+e.target.value) }), + h('span', { class: 'text-sm font-mono min-w-[48px] text-center' }, () => String(get(hVal)).padStart(2, '0') + ':00') + ]) + ]) + return h('div', { class: cls('p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none', p.class) }, [ + h('div', { class: 'flex justify-between items-center mb-4 gap-1' }, [ + h('div', { class: 'flex gap-0.5' }, [ + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => moveYear(-1) }, h('span', { class: 'icon-[lucide--chevrons-left]' })), + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => move(-1) }, h('span', { class: 'icon-[lucide--chevron-left]' })) + ]), + h('span', { class: 'font-bold uppercase flex-1 text-center' }, () => internalDate().toLocaleString('es-ES', { month: 'short', year: 'numeric' })), + h('div', { class: 'flex gap-0.5' }, [ + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => move(1) }, h('span', { class: 'icon-[lucide--chevron-right]' })), + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => moveYear(1) }, h('span', { class: 'icon-[lucide--chevrons-right]' })) + ]) + ]), + h('div', { class: 'grid grid-cols-7 gap-1', onmouseleave: () => hoverDate(null) }, [ + ...['L', 'M', 'X', 'J', 'V', 'S', 'D'].map(d => h('div', { class: 'text-[10px] opacity-40 font-bold text-center' }, d)), + () => { + const d = internalDate(), y = d.getFullYear(), m = d.getMonth() + const firstDay = new Date(y, m, 1).getDay() + const offset = firstDay === 0 ? 6 : firstDay - 1 + const dim = new Date(y, m + 1, 0).getDate() + const cells = [] + for (let i = 0; i < offset; i++) cells.push(h('div')) + for (let i = 1; i <= dim; i++) { + const date = new Date(y, m, i), ds = fmt(date) + cells.push(h('button', { + type: 'button', + class: () => { + const v = current(), h = hoverDate() + const isStart = typeof v === 'string' ? v.split('T')[0] === ds : v?.start === ds + const isEnd = v?.end === ds + let inRange = false + if (rangeMode() && v?.start) { + const start = v.start + if (!v.end && h) inRange = (ds > start && ds <= h) || (ds < start && ds >= h) + else if (v.end) inRange = ds > start && ds < v.end + } + const base = 'btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative' + const st = isStart || isEnd ? 'btn-primary z-10' : inRange ? 'bg-primary/20 border-none rounded-none' : 'btn-ghost' + const today = ds === todayStr ? 'ring-1 ring-primary ring-inset font-black text-primary' : '' + return cls(base, st, today) + }, + onmouseenter: () => rangeMode() && hoverDate(ds), + onclick: () => selectDate(date) + }, i.toString())) + } + return cells + } + ]), + p.hour ? h('div', { class: 'mt-3 pt-2 border-t border-base-300' }, + rangeMode() + ? h('div', { class: 'flex gap-4' }, [HourSlider({ value: startHour, onChange: h => startHour(h) }), HourSlider({ value: endHour, onChange: h => endHour(h) })]) + : HourSlider({ value: startHour, onChange: h => startHour(h) }) + ) : null + ]) +} +export const Card = (p, c) => { + if (!p.title && !p.body && !p.actions && !c) return h('div', { ...p, class: cls('card', p.class) }, c) + return h('div', { ...p, class: cls('card', p.class) }, [ + p.title && h('div', { class: cls('card-title', p.titleClass) }, p.title), + (p.body || c) && h('div', { class: cls('card-body', p.bodyClass) }, p.body || c), + p.actions && h('div', { class: cls('card-actions', p.actionsClass) }, p.actions) + ].filter(Boolean)) +} +export const Carousel = (p, c) => h("div", { ...p, class: cls("carousel", p.class) }, c); +export const CarouselItem = (p, c) => h("div", { ...p, class: cls("carousel-item", p.class) }, c); +export const Chat = (p, c) => h("div", { ...p, class: cls("chat", p.class) }, c); +export const ChatBubble = (p, c) => h("div", { ...p, class: cls("chat-bubble", p.class) }, c); +export const ChatFooter = (p, c) => h("div", { ...p, class: cls("chat-footer", p.class) }, c); +export const ChatHeader = (p, c) => h("div", { ...p, class: cls("chat-header", p.class) }, c); +export const ChatImage = (p, c) => h("div", { ...p, class: cls("chat-image avatar", p.class) }, h("div", { class: "w-10 rounded-full" }, typeof c === "string" ? h("img", { src: c, alt: "avatar" }) : c)); +export const Checkbox = (p) => h("input", { ...p, type: "checkbox", class: cls("checkbox", p.class) }); +export const Colorpicker = (p) => { + const isOpen = $(false) + const current = () => get(p.value) || '#000000' + const palette = [ + '#000', '#1A1A1A', '#333', '#4D4D4D', '#666', '#808080', '#B3B3B3', '#FFF', + '#450a0a', '#7f1d1d', '#991b1b', '#b91c1c', '#dc2626', '#ef4444', '#f87171', '#fca5a5', + '#431407', '#7c2d12', '#9a3412', '#c2410c', '#ea580c', '#f97316', '#fb923c', '#ffedd5', + '#713f12', '#a16207', '#ca8a04', '#eab308', '#facc15', '#fde047', '#fef08a', '#fff9c4', + '#064e3b', '#065f46', '#059669', '#10b981', '#34d399', '#4ade80', '#84cc16', '#d9f99d', + '#082f49', '#075985', '#0284c7', '#0ea5e9', '#38bdf8', '#7dd3fc', '#22d3ee', '#cffafe', + '#1e1b4b', '#312e81', '#4338ca', '#4f46e5', '#6366f1', '#818cf8', '#a5b4fc', '#e0e7ff', + '#2e1065', '#4c1d95', '#6d28d9', '#7c3aed', '#8b5cf6', '#a855f7', '#d946ef', '#fae8ff' + ] + const pick = (c) => { isFn(p.value) ? p.value(c) : p.onchange?.(c); isOpen(false) } + return h('div', { class: cls('relative w-fit', p.class) }, [ + h('button', { + type: 'button', + class: 'btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case', + onclick: (e) => { e.stopPropagation(); isOpen(!isOpen()) } + }, [ + h('div', { class: 'size-5 rounded-sm shadow-inner border border-black/10 shrink-0', style: () => `background-color: ${current()}` }), + p.label && h('span', { class: 'opacity-80' }, p.label) + ]), + when(isOpen, () => [ + h('div', { + class: 'fixed inset-0 z-[100]', + onclick: () => isOpen(false) + }), + h('div', { class: 'absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none' }, + h('div', { class: 'grid grid-cols-8 gap-1' }, + palette.map(c => + h('button', { + type: 'button', + style: `background-color: ${c}`, + class: () => { + const act = current().toLowerCase() === c.toLowerCase() + return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${act ? 'ring-2 ring-offset-1 ring-primary z-10 scale-110' : ''}` + }, + onclick: () => pick(c) + }) + ) + ) + ) + ]) + ]) +} +export const Datepicker = (p) => { + const isOpen = $(false) + const displayValue = $("") + const rangeMode = () => get(p.range) === true + watch(() => { + const v = get(p.value) + if (!v) return displayValue("") + let text = "" + if (typeof v === "string") { + text = p.hour && v.includes("T") ? v.replace("T", " ") : v + } else if (v.start && v.end) { + const startStr = p.hour && v.startHour != null ? `${v.start} ${String(v.startHour).padStart(2, "0")}:00` : v.start + const endStr = p.hour && v.endHour != null ? `${v.end} ${String(v.endHour).padStart(2, "0")}:00` : v.end + text = `${startStr} - ${endStr}` + } else if (v.start) { + const startStr = p.hour && v.startHour != null ? `${v.start} ${String(v.startHour).padStart(2, "0")}:00` : v.start + text = `${startStr}...` + } + displayValue(text) + }) + const handleChange = (val) => { + if (isFn(p.value)) p.value(val) + else p.onChange?.(val) + if (!rangeMode() || val?.end != null) isOpen(false) + } + return h('div', { class: cls('relative w-full', p.class) }, [ + h('label', { class: 'input input-bordered w-full', onclick: (e) => { e.stopPropagation(); isOpen(!isOpen()) } }, [ + h('span', { class: 'icon-[lucide--calendar]' }), + h('input', { + ...p, + type: 'text', + class: 'grow', + value: displayValue, + readonly: true, + placeholder: p.placeholder || (rangeMode() ? 'Seleccionar rango...' : 'Seleccionar fecha...') + }) + ]), + when(isOpen, () => [ + h('div', { class: 'fixed inset-0 z-[90]', onclick: () => isOpen(false) }), + h('div', { class: 'absolute left-0 mt-2 z-[100]', onclick: (e) => e.stopPropagation() }, + Calendar({ value: p.value, range: rangeMode(), hour: p.hour, onChange: handleChange }) + ) + ]) + ]) +} +export const Drawer = (p, c) => { + const id = p.id || rand("drawer") + return h('div', { class: cls('drawer', p.class) }, [ + h('input', { id, type: 'checkbox', class: 'drawer-toggle', checked: () => get(p.open), onchange: (e) => isFn(p.open) && p.open(e.target.checked) }), + h('div', { class: 'drawer-side' }, [h('label', { for: id, class: 'drawer-overlay', onclick: () => isFn(p.open) && p.open(false) }), h('div', { class: 'min-h-full bg-base-200 w-80 p-4' }, () => get(p.side))]), + h('div', { class: 'drawer-content' }, c)]) +} +export const Divider = (p) => h("div", { ...p, class: cls("divider", p.class) }); +export const Dropdown = (p, c) => { + return h('div', { ...p, class: cls('dropdown', p.class) }, [ + h('div', { tabindex: '0', role: 'button', class: cls('btn', p.buttonClass) }, p.label), + h('div', { tabindex: '-1', class: 'dropdown-content' }, c) + ]) +} +export const Fab = (p, c) => h("div", { class: "fab" }, [h('div', { tabindex: "0", role: "button", class: cls('btn', p.class) }, Icon(p.icon)), c]); +export const Fieldset = (p, c) => h("fieldset", { class: cls("fieldset", p.class) }, [h("legend", { class: "fieldset-legend" }, p.label), c]) +export const Fileinput = (p) => { + const files = $([]) + const drag = $(false) + const error = $(null) + const maxBytes = (p.max || 2) * 1024 * 1024 + const process = (fileList) => { + const arr = Array.from(fileList) + error(null) + if (arr.some(f => f.size > maxBytes)) { + error(`Máx ${p.max || 2}MB`) + return + } + const updated = [...files(), ...arr] + files(updated) + if (isFn(p.onselect)) p.onselect(updated) + else if (isFn(p.value)) p.value(updated) + } -//Input + const remove = (idx) => { + const updated = files().filter((_, i) => i !== idx) + files(updated) + if (isFn(p.onselect)) p.onselect(updated) + else if (isFn(p.value)) p.value(updated) + } + return h('div', { class: cls('fieldset w-full p-0', p.class) }, [ + h('label', { + class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${drag() ? 'border-primary bg-primary/10' : 'border-base-content/20 bg-base-100 hover:bg-base-200'}`, + ondragover: (e) => { e.preventDefault(); drag(true) }, + ondragleave: () => drag(false), + ondrop: (e) => { e.preventDefault(); drag(false); process(e.dataTransfer.files) } + }, [ + h('div', { class: 'flex items-center gap-3 w-full' }, [ + h('span', { class: 'icon-[lucide--upload]' }), + h('span', { class: 'text-sm opacity-70 truncate grow text-left' }, 'Arrastra o selecciona archivos...'), + h('span', { class: 'text-[10px] opacity-40 shrink-0' }, `Máx ${p.max || 2}MB`) + ]), + h('input', { + type: 'file', + multiple: true, + accept: p.accept || '*', + class: 'hidden', + onchange: (e) => process(e.target.files) + }) + ]), + () => error() && h('span', { class: 'text-[10px] text-error mt-1 px-1 font-medium' }, error()), + when(() => files().length > 0, () => + h('ul', { class: 'mt-2 space-y-1' }, + each(files, (file, idx) => + h('li', { class: 'flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300' }, [ + h('div', { class: 'flex items-center gap-2 truncate' }, [ + h('span', { class: 'opacity-50' }, '📄'), + h('span', { class: 'truncate font-medium max-w-[200px]' }, file.name), + h('span', { class: 'text-[9px] opacity-40' }, `(${(file.size / 1024).toFixed(0)} KB)`) + ]), + h('button', { + type: 'button', + class: 'btn btn-ghost btn-xs btn-circle', + onclick: (e) => { e.preventDefault(); remove(idx) } + }, h('span', { class: 'icon-[lucide--x]' })) + ]) + ) + ) + ) + ]) +} +export const Icon = (p) => h("span", { class: p.startsWith("icon-") ? p : "" }, p.startsWith("icon-") ? null : p); +export const Indicator = (p, c) => h("div", { ...p, class: cls("indicator", p.class) }, [p.value && h("span", { class: cls("indicator-item badge", p.class) }, p.value), c]); export const Input = (p) => { const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p; @@ -369,340 +412,33 @@ export const Input = (p) => { ]), ]); }; - -//Colorpicker -export const Colorpicker = (p) => { - const isOpen = $(false) - const current = () => get(p.value) || '#000000' - - const palette = [ - '#000', '#1A1A1A', '#333', '#4D4D4D', '#666', '#808080', '#B3B3B3', '#FFF', - '#450a0a', '#7f1d1d', '#991b1b', '#b91c1c', '#dc2626', '#ef4444', '#f87171', '#fca5a5', - '#431407', '#7c2d12', '#9a3412', '#c2410c', '#ea580c', '#f97316', '#fb923c', '#ffedd5', - '#713f12', '#a16207', '#ca8a04', '#eab308', '#facc15', '#fde047', '#fef08a', '#fff9c4', - '#064e3b', '#065f46', '#059669', '#10b981', '#34d399', '#4ade80', '#84cc16', '#d9f99d', - '#082f49', '#075985', '#0284c7', '#0ea5e9', '#38bdf8', '#7dd3fc', '#22d3ee', '#cffafe', - '#1e1b4b', '#312e81', '#4338ca', '#4f46e5', '#6366f1', '#818cf8', '#a5b4fc', '#e0e7ff', - '#2e1065', '#4c1d95', '#6d28d9', '#7c3aed', '#8b5cf6', '#a855f7', '#d946ef', '#fae8ff' - ] - - const pick = (c) => { isFn(p.value) ? p.value(c) : p.onchange?.(c); isOpen(false) } - - return h('div', { class: cls('relative w-fit', p.class) }, [ - h('button', { - type: 'button', - class: 'btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case', - onclick: (e) => { e.stopPropagation(); isOpen(!isOpen()) } - }, [ - h('div', { class: 'size-5 rounded-sm shadow-inner border border-black/10 shrink-0', style: () => `background-color: ${current()}` }), - p.label && h('span', { class: 'opacity-80' }, p.label) - ]), - - when(isOpen, () => [ - h('div', { - class: 'fixed inset-0 z-[100]', - onclick: () => isOpen(false) - }), - h('div', { class: 'absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none' }, - h('div', { class: 'grid grid-cols-8 gap-1' }, - palette.map(c => - h('button', { - type: 'button', - style: `background-color: ${c}`, - class: () => { - const act = current().toLowerCase() === c.toLowerCase() - return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${act ? 'ring-2 ring-offset-1 ring-primary z-10 scale-110' : ''}` - }, - onclick: () => pick(c) - }) - ) - ) - ) - ]) +export const Kbd = (p, c) => h("kbd", { ...p, class: cls("kbd", p.class) }, c); +export const List = (p, c) => { + if (!p.items) return h('ul', { ...p, class: cls('list', p.class) }, c) + return h('ul', { ...p, class: cls('list', p.class) }, [ + each(p.items, (item, i) => + h('li', { class: cls('list-row', item.class) }, + typeof p.render === 'function' ? p.render(item, i) : item + ), p.key) ]) } - -// Calendar -export const Calendar = (p) => { - const internalDate = $(new Date()) - const hoverDate = $(null) - const startHour = $(0) - const endHour = $(0) - - const now = new Date() - const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}` - - const fmt = d => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}` - const rangeMode = () => get(p.range) === true - const current = () => get(p.value) - - const selectDate = (date) => { - const s = fmt(date) - const v = current() - if (rangeMode()) { - if (!v?.start || (v.start && v.end)) { - p.onChange?.({ start: s, end: null, ...(p.hour && { startHour: startHour() }) }) - } else { - const start = v.start - const nv = s < start ? { start: s, end: start } : { start, end: s } - if (p.hour) { nv.startHour = v.startHour ?? startHour(); nv.endHour = endHour() } - p.onChange?.(nv) - } - } else { - p.onChange?.(p.hour ? `${s}T${String(startHour()).padStart(2, '0')}:00:00` : s) - } - } - - const move = (m) => { const d = internalDate(); internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)) } - const moveYear = (y) => { const d = internalDate(); internalDate(new Date(d.getFullYear() + y, d.getMonth(), 1)) } - - const HourSlider = ({ value: hVal, onChange: onH }) => h('div', { class: 'flex-1' }, [ - h('div', { class: 'flex gap-2 items-center' }, [ - h('input', { type: 'range', min: 0, max: 23, value: hVal, class: 'range range-xs flex-1', oninput: e => onH(+e.target.value) }), - h('span', { class: 'text-sm font-mono min-w-[48px] text-center' }, () => String(get(hVal)).padStart(2, '0') + ':00') - ]) - ]) - - return h('div', { class: cls('p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none', p.class) }, [ - h('div', { class: 'flex justify-between items-center mb-4 gap-1' }, [ - h('div', { class: 'flex gap-0.5' }, [ - h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => moveYear(-1) }, h('span', { class: 'icon-[lucide--chevrons-left]' })), - h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => move(-1) }, h('span', { class: 'icon-[lucide--chevron-left]' })) - ]), - h('span', { class: 'font-bold uppercase flex-1 text-center' }, () => internalDate().toLocaleString('es-ES', { month: 'short', year: 'numeric' })), - h('div', { class: 'flex gap-0.5' }, [ - h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => move(1) }, h('span', { class: 'icon-[lucide--chevron-right]' })), - h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => moveYear(1) }, h('span', { class: 'icon-[lucide--chevrons-right]' })) - ]) - ]), - - h('div', { class: 'grid grid-cols-7 gap-1', onmouseleave: () => hoverDate(null) }, [ - ...['L', 'M', 'X', 'J', 'V', 'S', 'D'].map(d => h('div', { class: 'text-[10px] opacity-40 font-bold text-center' }, d)), - () => { - const d = internalDate(), y = d.getFullYear(), m = d.getMonth() - const firstDay = new Date(y, m, 1).getDay() - const offset = firstDay === 0 ? 6 : firstDay - 1 - const dim = new Date(y, m + 1, 0).getDate() - const cells = [] - for (let i = 0; i < offset; i++) cells.push(h('div')) - for (let i = 1; i <= dim; i++) { - const date = new Date(y, m, i), ds = fmt(date) - cells.push(h('button', { - type: 'button', - class: () => { - const v = current(), h = hoverDate() - const isStart = typeof v === 'string' ? v.split('T')[0] === ds : v?.start === ds - const isEnd = v?.end === ds - let inRange = false - if (rangeMode() && v?.start) { - const start = v.start - if (!v.end && h) inRange = (ds > start && ds <= h) || (ds < start && ds >= h) - else if (v.end) inRange = ds > start && ds < v.end - } - const base = 'btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative' - const st = isStart || isEnd ? 'btn-primary z-10' : inRange ? 'bg-primary/20 border-none rounded-none' : 'btn-ghost' - const today = ds === todayStr ? 'ring-1 ring-primary ring-inset font-black text-primary' : '' - return cls(base, st, today) - }, - onmouseenter: () => rangeMode() && hoverDate(ds), - onclick: () => selectDate(date) - }, i.toString())) - } - return cells - } - ]), - - p.hour ? h('div', { class: 'mt-3 pt-2 border-t border-base-300' }, - rangeMode() - ? h('div', { class: 'flex gap-4' }, [HourSlider({ value: startHour, onChange: h => startHour(h) }), HourSlider({ value: endHour, onChange: h => endHour(h) })]) - : HourSlider({ value: startHour, onChange: h => startHour(h) }) - ) : null - ]) +export const Loading = (p, c) => h("span", { ...p, class: cls("loading loading-spinner", p.class) }, c); +export const Menu = (p) => { + if (p.children !== undefined) return h('ul', { class: cls('menu', p.class), ...p }, p.children) + const { items } = p + const render = (item) => item.children + ? h('li', {}, h('details', { open: item.open || undefined }, [ + h('summary', {}, getBy(item)), + h('ul', {}, each(() => get(item.children) || [], render)) + ])) + : h('li', {}, h('a', { + href: item.href, + onclick: item.onclick ? (e) => { if (!item.href) e.preventDefault(); item.onclick(e) } : null + }, getBy(item))) + return h('ul', { class: cls('menu', p.class) }, + each(() => get(items) || [], render) + ) } - -//Datepicker.js -export const Datepicker = (p) => { - const isOpen = $(false) - const displayValue = $("") - const rangeMode = () => get(p.range) === true - - watch(() => { - const v = get(p.value) - if (!v) return displayValue("") - let text = "" - if (typeof v === "string") { - text = p.hour && v.includes("T") ? v.replace("T", " ") : v - } else if (v.start && v.end) { - const startStr = p.hour && v.startHour != null ? `${v.start} ${String(v.startHour).padStart(2, "0")}:00` : v.start - const endStr = p.hour && v.endHour != null ? `${v.end} ${String(v.endHour).padStart(2, "0")}:00` : v.end - text = `${startStr} - ${endStr}` - } else if (v.start) { - const startStr = p.hour && v.startHour != null ? `${v.start} ${String(v.startHour).padStart(2, "0")}:00` : v.start - text = `${startStr}...` - } - displayValue(text) - }) - - const handleChange = (val) => { - if (isFn(p.value)) p.value(val) - else p.onChange?.(val) - if (!rangeMode() || val?.end != null) isOpen(false) - } - - return h('div', { class: cls('relative w-full', p.class) }, [ - h('label', { class: 'input input-bordered w-full', onclick: (e) => { e.stopPropagation(); isOpen(!isOpen()) } }, [ - h('span', { class: 'icon-[lucide--calendar]' }), - h('input', { - ...p, - type: 'text', - class: 'grow', - value: displayValue, - readonly: true, - placeholder: p.placeholder || (rangeMode() ? 'Seleccionar rango...' : 'Seleccionar fecha...') - }) - ]), - - when(isOpen, () => [ - h('div', { class: 'fixed inset-0 z-[90]', onclick: () => isOpen(false) }), - h('div', { class: 'absolute left-0 mt-2 z-[100]', onclick: (e) => e.stopPropagation() }, - Calendar({ value: p.value, range: rangeMode(), hour: p.hour, onChange: handleChange }) - ) - ]) - ]) -} - -//Fileinput -export const Fileinput = (p) => { - const files = $([]) - const drag = $(false) - const error = $(null) - const maxBytes = (p.max || 2) * 1024 * 1024 - - const process = (fileList) => { - const arr = Array.from(fileList) - error(null) - if (arr.some(f => f.size > maxBytes)) { - error(`Máx ${p.max || 2}MB`) - return - } - const updated = [...files(), ...arr] - files(updated) - if (isFn(p.onselect)) p.onselect(updated) - else if (isFn(p.value)) p.value(updated) - } - - const remove = (idx) => { - const updated = files().filter((_, i) => i !== idx) - files(updated) - if (isFn(p.onselect)) p.onselect(updated) - else if (isFn(p.value)) p.value(updated) - } - - return h('div', { class: cls('fieldset w-full p-0', p.class) }, [ - h('label', { - class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${drag() ? 'border-primary bg-primary/10' : 'border-base-content/20 bg-base-100 hover:bg-base-200'}`, - ondragover: (e) => { e.preventDefault(); drag(true) }, - ondragleave: () => drag(false), - ondrop: (e) => { e.preventDefault(); drag(false); process(e.dataTransfer.files) } - }, [ - h('div', { class: 'flex items-center gap-3 w-full' }, [ - h('span', { class: 'icon-[lucide--upload]' }), - h('span', { class: 'text-sm opacity-70 truncate grow text-left' }, 'Arrastra o selecciona archivos...'), - h('span', { class: 'text-[10px] opacity-40 shrink-0' }, `Máx ${p.max || 2}MB`) - ]), - h('input', { - type: 'file', - multiple: true, - accept: p.accept || '*', - class: 'hidden', - onchange: (e) => process(e.target.files) - }) - ]), - - () => error() && h('span', { class: 'text-[10px] text-error mt-1 px-1 font-medium' }, error()), - - when(() => files().length > 0, () => - h('ul', { class: 'mt-2 space-y-1' }, - each(files, (file, idx) => - h('li', { class: 'flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300' }, [ - h('div', { class: 'flex items-center gap-2 truncate' }, [ - h('span', { class: 'opacity-50' }, '📄'), - h('span', { class: 'truncate font-medium max-w-[200px]' }, file.name), - h('span', { class: 'text-[9px] opacity-40' }, `(${(file.size / 1024).toFixed(0)} KB)`) - ]), - h('button', { - type: 'button', - class: 'btn btn-ghost btn-xs btn-circle', - onclick: (e) => { e.preventDefault(); remove(idx) } - }, h('span', { class: 'icon-[lucide--x]' })) - ]), - (file) => file.name + file.lastModified - ) - ) - ) - ]) -} - -//Toast -export const Toast = (message, type = "alert-success", duration = 3500) => { - let container = document.getElementById("sigpro-toast-container"); - if (!container) { - container = h("div", { - id: "sigpro-toast-container", - class: "fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none" - }); - document.body.appendChild(container); - } - - const host = h("div", { style: "display: contents" }); - container.appendChild(host); - - let closeFn, timer, enterTimer; - - const ToastComponent = () => { - const visible = $(false); - const leaving = $(false); - - closeFn = () => { - if (leaving()) return; - clearTimeout(timer); - clearTimeout(enterTimer); - leaving(true); - setTimeout(() => { - instance.destroy(); - host.remove(); - if (!container.hasChildNodes()) container.remove(); - }, 300); - }; - - enterTimer = setTimeout(() => visible(true), 0); - - const content = typeof message === 'function' ? get(message) : message; - const msgNode = typeof content === 'string' ? h("span", {}, content) : content; - - return h("div", { - class: () => { - if (leaving()) return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`; - if (visible()) return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`; - return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`; - } - }, [ - msgNode, - h("button", { - class: "btn btn-xs btn-circle btn-ghost", - onclick: closeFn - }, h("span", { class: "icon-[lucide--x]" })) - ]); - }; - - const instance = mount(ToastComponent, host); - - if (duration > 0) timer = setTimeout(closeFn, duration); - - return closeFn; -}; - -//Modal export const Modal = (p) => { let dialogRef = null; @@ -732,4 +468,169 @@ export const Modal = (p) => { h("button", {}, "close") ]) ]); -}; \ No newline at end of file +}; +export const Navbar = (p, c) => h("div", { ...p, class: cls("navbar", p.class) }, c); +export const Progress = (p) => h("progress", { ...p, class: cls("progress", p.class) }); +export const Radial = (p, c) => h("div", { ...p, class: cls("radial-progress", p.class), style: `--value:${p.value ?? 0};${p.style ?? ''}`, role: "progressbar", "aria-valuenow": p.value ?? 0 }, c ?? `${p.value ?? 0}%`) +export const Radio = (p) => h("input", { ...p, type: "radio", class: cls("radio", p.class) }); +export const Range = (p) => h("input", { ...p, type: "range", class: cls("range", p.class) }); +export const Rating = (p) => { + const name = rand('rating') + const stars = p.children ?? Array.from({ length: p.count || 5 }, (_, i) => { + const v = i + 1 + return h('input', { + type: 'radio', + name, + class: cls('mask', p.mask || 'mask-star'), + checked: () => get(p.value) === v, + onchange: () => isFn(p.value) ? p.value(v) : p.onchange?.(v) + }) + }) + return h('div', { class: cls('rating', p.class), ...p }, stars) +} +export const Select = (p, c) => { + if (c !== undefined) return h('select', { class: cls('select', p.class), ...p }, c) + + const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p + + const opts = () => { + const raw = get(items) || [] + const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: '' }] : [] + return [...ph, ...raw] + } + + return h('label', { class: float ? 'floating-label' : '' }, [ + float ? h('span', {}, label) : null, + h('label', { class: cls('select', rest.class) }, [ + (!float && label) ? h('span', { class: 'label' }, label) : null, + left ?? null, + h('select', { + value: () => get(value), + onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) + }, + each(opts, (item) => { + const val = getBy(item, item.value !== undefined ? 'value' : undefined) + const lab = getBy(item, 'label') + return h('option', { value: val, disabled: item.disabled || undefined }, lab) + }) + ), + right ?? null + ]), + hint ? h('div', { class: 'validator-hint' }, hint) : null + ]) +} +export const Skeleton = (p) => h("div", { ...p, class: cls("skeleton", p.class) }); +export const SkeletonText = (p) => h("span", { ...p, class: cls("skeleton skeleton-text", p.class) }); +export const Stack = (p, c) => h("div", { ...p, class: cls("stack", p.class) }, c); +export const Steps = (p, c) => h("ul", { ...p, class: cls("steps", p.class) }, c); +export const Step = (p, c) => h("li", { ...p, class: cls("step", p.class), "data-content": p.dataContent }, c); +export const Swap = (p) => h("label", { ...p, class: cls("swap", p.class) }, [ + h("input", { type: "checkbox", checked: () => get(p.value), onchange: (e) => isFn(p.value) && p.value(e.target.checked) }), + h("div", { class: "swap-on" }, p.on), + h("div", { class: "swap-off" }, p.off) +]); +export const Table = (p) => { + if (p.children !== undefined) return h('table', { class: cls('table', p.class), ...p }, p.children) + const { items, columns = [], header = true, keyFn, ...rest } = p + const hd = header !== false && columns.some(c => c.label) ? h('thead', {}, h('tr', {}, columns.map(c => h('th', { class: c.class }, c.label)))) : null + const bd = h('tbody', {}, each( + () => get(items) || [], + (it, idx) => h('tr', {}, columns.map(c => { + const v = c.render ? c.render(it, idx) : it[c.key] + return h('td', { class: c.class }, v) + })) + )) + return h('table', { class: cls('table', rest.class), ...rest }, [hd, bd]) +} +export const Tabs = (p, c) => { + if (!p.items) { + const { class: className, ...rest } = p + return h('div', { ...rest, class: cls('tabs', className) }, c) + } + + const { items, activeIndex, onClose, class: className, ...rest } = p + const get = x => (isFn(x) ? x() : x) + const closeH = onClose || (isFn(items) ? (idx, item) => { + const arr = get(items) + const newArr = arr.filter((_, i) => i !== idx) + items(newArr) + if (activeIndex() >= newArr.length) activeIndex(Math.max(0, newArr.length - 1)) + } : null) + + return h('div', { ...rest, class: cls('tabs', className) }, () => { + const list = get(items) || [] + return list.flatMap((it, idx) => { + const isActive = () => activeIndex() === idx + const button = h('button', { + class: () => `tab ${isActive() ? 'tab-active' : ''} ${it.class || ''}`, + onclick: (e) => { e.preventDefault(); activeIndex(idx); it.onclick?.(e) } + }, [ + getBy(it), + it.closable ? h('span', { + class: 'ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-base-300 text-base-content/60 hover:text-base-content cursor-pointer', + onclick: (e) => { e.stopPropagation(); closeH?.(idx, it) } + }, h('span', { class: 'icon-[lucide--x] w-3 h-3' })) : null + ]) + const contentDiv = h('div', { + class: 'tab-content bg-base-100 border-base-300 p-6', + style: () => `display: ${isActive() ? 'block' : 'none'};` + }, isFn(it.content) ? it.content() : it.content) + return [button, contentDiv] + }) + }) +} +export const Textarea = (p) => h("textarea", { ...p, class: cls("textarea", p.class) }); +export const TextRotate = (p) => { + const words = Array.isArray(p.words) ? p.words : (typeof p.words === 'string' ? p.words.split(',') : []); + return h("span", { ...p, class: cls("text-rotate", p.class) }, h("span", {}, words.map(w => h("span", {}, w)))); +}; +export const Timeline = (p, c) => h("ul", { ...p, class: cls("timeline", p.class) }, c); +export const Toast = (message, type = "alert-success", duration = 3500) => { + let container = document.getElementById("sigpro-toast-container"); + if (!container) { + container = h("div", { + id: "sigpro-toast-container", + class: "fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none" + }); + document.body.appendChild(container); + } + const host = h("div", { style: "display: contents" }); + container.appendChild(host); + let closeFn, timer, enterTimer; + const ToastComponent = () => { + const visible = $(false); + const leaving = $(false); + closeFn = () => { + if (leaving()) return; + clearTimeout(timer); + clearTimeout(enterTimer); + leaving(true); + setTimeout(() => { + instance.destroy(); + host.remove(); + if (!container.hasChildNodes()) container.remove(); + }, 300); + }; + enterTimer = setTimeout(() => visible(true), 0); + const content = typeof message === 'function' ? get(message) : message; + const msgNode = typeof content === 'string' ? h("span", {}, content) : content; + return h("div", { + class: () => { + if (leaving()) return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`; + if (visible()) return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`; + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`; + } + }, [ + msgNode, + h("button", { + class: "btn btn-xs btn-circle btn-ghost", + onclick: closeFn + }, h("span", { class: "icon-[lucide--x]" })) + ]); + }; + const instance = mount(ToastComponent, host); + if (duration > 0) timer = setTimeout(closeFn, duration); + return closeFn; +}; +export const Toggle = (p) => h("input", { ...p, type: "checkbox", class: cls("toggle", p.class) }); +export const Tooltip = (p, c) => h("div", { ...p, class: cls("tooltip", p.class), "data-tip": p.tip }, c); \ No newline at end of file diff --git a/components/Editor.js b/components/Editor.js index 32ab6f8..b535f00 100644 --- a/components/Editor.js +++ b/components/Editor.js @@ -4,31 +4,82 @@ import { get, cls, isFn } from "./All.js" export const Editor = (p) => { const { value, class: extraClass } = p let editorRef = null + let savedRange = null const isSource = $(false) const source = $("") + const count = $(0) + const refreshTick = $(0) + const showEmojis = $(false) + + const emojis = ["😀", "😊", "😉", "🧐", "😮", "🤔", "😅", "😂", "😍", "😘", "🥰", "👍", "👎", "👌", "🤝", "🤞", "👋", "👏", "🙌", "🙏", "💪", "☝️", "👇", "👈", "👉", "🖕", "✅", "⚠️", "🚀", "📢", "✉️", "❤️"] + + const saveSelection = () => { + const sel = window.getSelection() + if (sel.getRangeAt && sel.rangeCount) savedRange = sel.getRangeAt(0) + } + + const restoreSelection = () => { + if (savedRange) { + const sel = window.getSelection() + sel.removeAllRanges() + sel.addRange(savedRange) + } + } + + const triggerRefresh = () => { + refreshTick(refreshTick() + 1) + if (editorRef) count(editorRef.innerText.length) + } const notify = () => { if (!editorRef) return const html = editorRef.innerHTML if (isFn(value)) value(html) else p.onchange?.(html) + triggerRefresh() } const exec = (cmd, val = null) => { if (!editorRef) return editorRef.focus() + if (savedRange) restoreSelection() document.execCommand(cmd, false, val) + savedRange = null notify() } + const openLightbox = (src) => { + const overlay = document.createElement('div') + overlay.style = `position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;` + const img = document.createElement('img') + img.src = src + img.style = `max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;` + overlay.onclick = () => document.body.removeChild(overlay) + overlay.appendChild(img) + document.body.appendChild(overlay) + } + + const handleUpload = (file) => { + if (!file) return + const reader = new FileReader() + reader.onload = (re) => { + if (file.type.startsWith('image/')) { + const imgHtml = `
 ` + exec("insertHTML", imgHtml) + } else { + const linkHtml = `${file.name} ` + exec("insertHTML", linkHtml) + } + } + reader.readAsDataURL(file) + } + const queryState = (cmd, val = null) => { - if (!editorRef) return false + refreshTick(); if (!editorRef || isSource()) return false try { if (cmd === 'formatBlock') { - const sel = window.getSelection() - if (!sel.rangeCount) return false - let node = sel.getRangeAt(0).commonAncestorContainer + let node = window.getSelection().getRangeAt(0).commonAncestorContainer while (node && node !== editorRef) { if (node.nodeType === 1 && node.tagName === val) return true node = node.parentNode @@ -36,110 +87,122 @@ export const Editor = (p) => { return false } return document.queryCommandState(cmd) - } catch (e) { - return false - } + } catch (e) { return false } } - const toolbar = h("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200" }, [ - h("div", { class: "flex flex-wrap gap-1 flex-1" }, [ - h("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState('bold') ? 'btn-active' : ''}`, - onclick: () => exec("bold") - }, h("span", { class: "icon-[lucide--bold]" })), - - h("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState('italic') ? 'btn-active' : ''}`, - onclick: () => exec("italic") - }, h("span", { class: "icon-[lucide--italic]" })), - - h("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState('underline') ? 'btn-active' : ''}`, - onclick: () => exec("underline") - }, h("span", { class: "icon-[lucide--underline]" })), - - h("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState('strikeThrough') ? 'btn-active' : ''}`, - onclick: () => exec("strikeThrough") - }, h("span", { class: "icon-[lucide--strikethrough]" })), + const toolbar = h("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20" }, [ + h("div", { class: "flex flex-wrap gap-1 flex-1 items-center" }, [ + // GRUPO 1: ESTILOS + h("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState('bold') ? 'btn-active bg-primary/20' : ''}`, onclick: () => exec("bold") }, h("span", { class: "icon-[lucide--bold]" })), + h("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState('italic') ? 'btn-active bg-primary/20' : ''}`, onclick: () => exec("italic") }, h("span", { class: "icon-[lucide--italic]" })), + h("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState('underline') ? 'btn-active bg-primary/20' : ''}`, onclick: () => exec("underline") }, h("span", { class: "icon-[lucide--underline]" })), + h("input", { type: "color", class: "w-5 h-5 p-0 border-0 bg-transparent cursor-pointer", oninput: (e) => exec("foreColor", e.target.value) }), h("span", { class: "w-px h-5 bg-base-300 mx-1" }), + h("button", { + type: "button", + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyLeft") + }, h("span", { class: "icon-[lucide--align-left]" })), + + // --- Botón Alineación Centro --- + h("button", { + type: "button", + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyCenter") + }, h("span", { class: "icon-[lucide--align-center]" })), + + // --- Botón Alineación Derecha --- + h("button", { + type: "button", + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyRight") + }, h("span", { class: "icon-[lucide--align-right]" })), + + h("span", { class: "w-px h-5 bg-base-300 mx-1" }), + + // GRUPO 2: LISTAS Y PÁRRAFO h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertUnorderedList") }, h("span", { class: "icon-[lucide--list]" })), h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertOrderedList") }, h("span", { class: "icon-[lucide--list-ordered]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("outdent"), title: "Mover izquierda" }, h("span", { class: "icon-[lucide--indent-decrease]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("indent"), title: "Mover derecha (Tab)" }, h("span", { class: "icon-[lucide--indent-increase]" })), + h("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState('formatBlock', 'BLOCKQUOTE') ? 'btn-active' : ''}`, onclick: () => exec("formatBlock", queryState('formatBlock', 'BLOCKQUOTE') ? 'P' : 'BLOCKQUOTE') }, h("span", { class: "icon-[lucide--quote]" })), h("span", { class: "w-px h-5 bg-base-300 mx-1" }), - h("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState('formatBlock', 'BLOCKQUOTE') ? 'btn-active' : ''}`, - onclick: () => exec("formatBlock", queryState('formatBlock', 'BLOCKQUOTE') ? 'P' : 'BLOCKQUOTE') - }, h("span", { class: "icon-[lucide--quote]" })), + // GRUPO 3: INSERTAR + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => { const url = window.prompt('URL:'); if (url) exec("createLink", url) } }, h("span", { class: "icon-[lucide--link]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => { const input = document.createElement('input'); input.type = 'file'; input.onchange = (e) => handleUpload(e.target.files[0]); input.click(); } }, h("span", { class: "icon-[lucide--paperclip]" })), - h("span", { class: "w-px h-5 bg-base-300 mx-1" }), - - h("select", { class: "select select-xs w-16", onchange: (e) => exec("fontSize", e.target.value), value: "3" }, [ - h("option", { value: "1" }, "1"), - h("option", { value: "2" }, "2"), - h("option", { value: "3" }, "3"), - h("option", { value: "4" }, "4"), - h("option", { value: "5" }, "5"), - h("option", { value: "6" }, "6"), - h("option", { value: "7" }, "7"), + // EMOJIS + h("div", { class: "relative" }, [ + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: (e) => { e.stopPropagation(); saveSelection(); showEmojis(!showEmojis()); } }, h("span", { class: "icon-[lucide--smile]" })), + h("div", { class: "absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1", style: () => showEmojis() ? "display:flex" : "display:none" }, emojis.map(emo => h("span", { class: "cursor-pointer hover:bg-base-200 p-1 rounded text-lg", onclick: (e) => { e.stopPropagation(); exec("insertText", emo); showEmojis(false); } }, emo))) ]), h("span", { class: "w-px h-5 bg-base-300 mx-1" }), - h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo") }, h("span", { class: "icon-[lucide--undo-2]" })), - h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo") }, h("span", { class: "icon-[lucide--redo-2]" })), + // GRUPO 4: UTILIDADES + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("removeFormat") }, h("span", { class: "icon-[lucide--eraser]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo"), title: "Deshacer" }, h("span", { class: "icon-[lucide--undo-2]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo"), title: "Rehacer" }, h("span", { class: "icon-[lucide--redo-2]" })), ]), - h("div", { class: "flex" }, [ - h("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${isSource() ? 'btn-active' : ''}`, - onclick: () => { - const wasSource = isSource() - if (!wasSource) { - source(editorRef?.innerHTML || "") - } else { - if (editorRef) { - editorRef.innerHTML = source() - notify() - } - } - isSource(!wasSource) - } - }, h("span", { class: "icon-[lucide--code-2]" })) - ]) + h("button", { type: "button", class: () => `btn btn-ghost btn-xs ${isSource() ? 'btn-active' : ''}`, onclick: () => { if (!isSource()) source(editorRef?.innerHTML || ""); else if (editorRef) { editorRef.innerHTML = source(); notify(); }; isSource(!isSource()) } }, h("span", { class: "icon-[lucide--code-2]" })) ]) - return h("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden", extraClass) }, [ + if (typeof document !== 'undefined' && !document.getElementById('editor-styles')) { + const style = document.createElement('style') + style.id = 'editor-styles' + style.textContent = ` + [contenteditable="true"] div, + [contenteditable="true"] p { + margin: 0; + padding: 0; + } + ` + document.head.appendChild(style) + } + return h("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col", extraClass) }, [ toolbar, - h("div", { class: "relative" }, [ + h("div", { class: "relative flex-1 flex flex-col", onclick: () => showEmojis(false) }, [ h("div", { ref: el => { if (!editorRef && el) { - editorRef = el - el.innerHTML = get(value) || "" + editorRef = el; el.innerHTML = get(value) || ""; + document.execCommand("defaultParagraphSeparator", false, "br"); + el.addEventListener('click', (e) => { + const container = e.target.closest('.resizable-img-container'); + if (container) { const img = container.querySelector('img'); if (img) openLightbox(img.src); } + }); } }, - style: () => `min-height:10rem;${isSource() ? 'display:none' : ''}`, - class: "p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]", + style: () => `min-height:22rem;${isSource() ? 'display:none' : ''}`, + class: "p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8", contenteditable: "true", oninput: notify, - onpaste: () => setTimeout(notify, 0) + onkeydown: (e) => { if (e.key === 'Tab') { e.preventDefault(); exec("indent"); } }, + onkeyup: () => { triggerRefresh(); saveSelection(); }, + onclick: (e) => { triggerRefresh(); saveSelection(); e.stopPropagation(); }, + onmouseup: () => { notify(); saveSelection(); }, + onpaste: (e) => { + e.preventDefault(); + const text = e.clipboardData.getData('text/plain'); + exec('insertText', text); + }, + ondragover: (e) => e.preventDefault(), + ondrop: (e) => { e.preventDefault(); handleUpload(e.dataTransfer.files[0]) } }), h("textarea", { - class: "w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0", + class: "w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0", style: () => isSource() ? '' : 'display:none', value: source, - oninput: (e) => source(e.target.value) + oninput: (e) => { source(e.target.value); if (editorRef) editorRef.innerHTML = e.target.value; p.onchange?.(e.target.value); } }) + ]), + h("div", { class: "px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic" }, [ + h("span", () => `${count()} caracteres`) ]) ]) } \ No newline at end of file diff --git a/components/discarted/Autocomplete.js b/components/discarted/Autocomplete.js index 895415a..7c9bdd2 100644 --- a/components/discarted/Autocomplete.js +++ b/components/discarted/Autocomplete.js @@ -48,8 +48,7 @@ export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...' onclick: () => pick(item), onmouseenter: () => cursor(idx) }, getBy(item)) - ]), - (item, idx) => getBy(item) + idx + ]) ), () => filtered().length === 0 ? h('li', { class: 'p-4 opacity-50 text-center' }, 'Sin resultados') diff --git a/components/discarted/Select.js b/components/discarted/Select.js index 7b818b6..7734de5 100644 --- a/components/discarted/Select.js +++ b/components/discarted/Select.js @@ -18,8 +18,7 @@ export const Select = (props) => { const value = typeof item === "string" ? item : item.value; const label = typeof item === "string" ? item : item.label; return h("option", { value }, label); - }, - keyFn || ((item) => (typeof item === "string" ? item : item.value)) + } ); const options = placeholderOption diff --git a/components/discarted/fileinput.js b/components/discarted/fileinput.js index 9a0ca13..d5e5446 100644 --- a/components/discarted/fileinput.js +++ b/components/discarted/fileinput.js @@ -59,8 +59,7 @@ export const Fileinput = (props) => { class: "btn btn-ghost btn-xs btn-circle", onclick: (e) => { e.preventDefault(); removeFile(idx); } }, h("span", { class: "icon-[lucide--x]" })) - ]), - (file) => file.name + file.lastModified + ]) ) ]) ) diff --git a/components/discarted/menu.js b/components/discarted/menu.js index 8c9849a..3a6dc4e 100644 --- a/components/discarted/menu.js +++ b/components/discarted/menu.js @@ -7,7 +7,7 @@ export const Menu = (props, children) => { }; export const MenuItems = (props) => { - const { items, keyFn = (item, idx) => item.id ?? idx } = props; + const { items } = props; const itemsSignal = typeof items === "function" ? items : () => items || []; const renderItem = (item) => { @@ -28,5 +28,5 @@ export const MenuItems = (props) => { }, item.label)); }; - return each(itemsSignal, renderItem, keyFn); + return each(itemsSignal, renderItem); }; \ No newline at end of file diff --git a/components/discarted/table.js b/components/discarted/table.js index b699b74..21a7bde 100644 --- a/components/discarted/table.js +++ b/components/discarted/table.js @@ -23,8 +23,7 @@ export const TableItems = (props) => { const content = col.render ? col.render(item, idx) : item[col.key]; return h("td", { class: col.class }, content); }) - ) - , props.keyFn || ((item, idx) => item.id ?? idx)) + )) ]); return [thead, tbody]; diff --git a/components/discarted/tabs.js b/components/discarted/tabs.js index 2f01378..9ce793a 100644 --- a/components/discarted/tabs.js +++ b/components/discarted/tabs.js @@ -43,7 +43,6 @@ export const TabItems = (props) => { style: () => `display: ${props.activeIndex() === idx ? "block" : "none"};` }, typeof item.content === "function" ? item.content() : item.content) ]; - }, - (item, idx) => item.id ?? idx + } ); }; \ No newline at end of file diff --git a/dist/sigpro-ui.css b/dist/sigpro-ui.css index 6b48771..091f0ed 100644 --- a/dist/sigpro-ui.css +++ b/dist/sigpro-ui.css @@ -7,9 +7,7 @@ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --color-gray-500: oklch(55.1% 0.027 264.364); --color-black: #000; - --color-white: #fff; --spacing: 0.25rem; --container-xs: 20rem; --container-md: 28rem; @@ -21,8 +19,6 @@ --text-xs--line-height: calc(1 / 0.75); --text-sm: 0.875rem; --text-sm--line-height: calc(1.25 / 0.875); - --text-base: 1rem; - --text-base--line-height: calc(1.5 / 1); --text-lg: 1.125rem; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 1.25rem; @@ -33,8 +29,6 @@ --text-3xl--line-height: calc(2.25 / 1.875); --text-4xl: 2.25rem; --text-4xl--line-height: calc(2.5 / 2.25); - --text-6xl: 3.75rem; - --text-6xl--line-height: 1; --text-7xl: 4.5rem; --text-7xl--line-height: 1; --text-9xl: 8rem; @@ -52,7 +46,6 @@ --radius-sm: 0.25rem; --radius-md: 0.375rem; --radius-lg: 0.5rem; - --radius-xl: 0.75rem; --radius-3xl: 1.5rem; --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15); --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; @@ -601,92 +594,6 @@ } } } - .tab\! { - @layer daisyui.l1.l2.l3 { - position: relative !important; - display: inline-flex !important; - cursor: pointer !important; - appearance: none !important; - flex-wrap: wrap !important; - align-items: center !important; - justify-content: center !important; - text-align: center !important; - webkit-user-select: none !important; - user-select: none !important; - &:hover { - @media (hover: hover) { - color: var(--color-base-content) !important; - } - } - --tab-p: 0.75rem !important; - --tab-bg: var(--color-base-100) !important; - --tab-border-color: var(--color-base-300) !important; - --tab-radius-ss: 0 !important; - --tab-radius-se: 0 !important; - --tab-radius-es: 0 !important; - --tab-radius-ee: 0 !important; - --tab-order: 0 !important; - --tab-radius-min: calc(0.75rem - var(--border)) !important; - --tab-radius-limit: min(var(--radius-field), var(--tab-radius-min)) !important; - --tab-radius-grad: #0000 calc(69% - var(--border)), - var(--tab-border-color) calc(69% - var(--border) + 0.25px), - var(--tab-border-color) 69%, - var(--tab-bg) calc(69% + 0.25px) !important; - border-color: #0000 !important; - order: var(--tab-order) !important; - height: var(--tab-height) !important; - font-size: 0.875rem !important; - padding-inline: var(--tab-p) !important; - &:is(input[type="radio"]) { - min-width: fit-content !important; - &:after { - --tw-content: attr(aria-label) !important; - content: var(--tw-content) !important; - } - } - &:is(label) { - position: relative !important; - input { - position: absolute !important; - inset: calc(0.25rem * 0) !important; - cursor: pointer !important; - appearance: none !important; - opacity: 0% !important; - } - } - &:checked, &:is(label:has(:checked)), &:is(.tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"]) { - & + .tab-content { - display: block !important; - } - } - &:not( :checked, label:has(:checked), :hover, .tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"] ) { - color: var(--color-base-content) !important; - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-base-content) 50%, transparent) !important; - } - } - &:not(input):empty { - flex-grow: 1 !important; - cursor: default !important; - } - &:focus { - --tw-outline-style: none !important; - outline-style: none !important; - @media (forced-colors: active) { - outline: 2px solid transparent !important; - outline-offset: 2px !important; - } - } - &:focus-visible, &:is(label:has(:checked:focus-visible)) { - outline: 2px solid currentColor !important; - outline-offset: -5px !important; - } - &[disabled] { - pointer-events: none !important; - opacity: 40% !important; - } - } - } .menu { @layer daisyui.l1.l2.l3 { display: flex; @@ -1216,12 +1123,6 @@ } } } - .tab-disabled { - @layer daisyui.l1.l2 { - pointer-events: none; - opacity: 40%; - } - } .pointer-events-auto { pointer-events: auto; } @@ -1430,89 +1331,6 @@ .visible { visibility: visible; } - .tabs-lift { - @layer daisyui.l1.l2 { - --tabs-height: auto; - --tabs-direction: row; - > .tab { - --tab-border: 0 0 var(--border) 0; - --tab-radius-ss: var(--tab-radius-limit); - --tab-radius-se: var(--tab-radius-limit); - --tab-radius-es: 0; - --tab-radius-ee: 0; - --tab-paddings: var(--border) var(--tab-p) 0 var(--tab-p); - --tab-border-colors: #0000 #0000 var(--tab-border-color) #0000; - --tab-corner-width: calc(100% + var(--tab-radius-limit) * 2); - --tab-corner-height: var(--tab-radius-limit); - --tab-corner-position: top left, top right; - border-width: var(--tab-border); - border-start-start-radius: var(--tab-radius-ss); - border-start-end-radius: var(--tab-radius-se); - border-end-start-radius: var(--tab-radius-es); - border-end-end-radius: var(--tab-radius-ee); - padding: var(--tab-paddings); - border-color: var(--tab-border-colors); - &:is(.tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"]):not( .tab-disabled, [disabled] ), &:is(input:checked, label:has(:checked)) { - --tab-border: var(--border) var(--border) 0 var(--border); - --tab-border-colors: var(--tab-border-color) var(--tab-border-color) #0000 - var(--tab-border-color); - --tab-paddings: 0 calc(var(--tab-p) - var(--border)) var(--border) - calc(var(--tab-p) - var(--border)); - --tab-inset: auto auto 0 auto; - --radius-start: radial-gradient(circle at top left, var(--tab-radius-grad)); - --radius-end: radial-gradient(circle at top right, var(--tab-radius-grad)); - background-color: var(--tab-bg); - &:before { - z-index: 1; - content: ""; - display: block; - position: absolute; - width: var(--tab-corner-width); - height: var(--tab-corner-height); - background-position: var(--tab-corner-position); - background-image: var(--radius-start), var(--radius-end); - background-size: var(--tab-radius-limit) var(--tab-radius-limit); - background-repeat: no-repeat; - inset: var(--tab-inset); - } - &:first-child:before { - --radius-start: none; - } - [dir="rtl"] &:first-child:before { - transform: rotateY(180deg); - } - &:last-child:before { - --radius-end: none; - } - [dir="rtl"] &:last-child:before { - transform: rotateY(180deg); - } - } - } - &:has(> .tab-content) { - > .tab:first-child { - &:not(.tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"]) { - --tab-border-colors: var(--tab-border-color) var(--tab-border-color) #0000 - var(--tab-border-color); - } - } - } - > .tab-content { - --tabcontent-margin: calc(-1 * var(--border)) 0 0 0; - --tabcontent-radius-ss: 0; - --tabcontent-radius-se: var(--radius-box); - --tabcontent-radius-es: var(--radius-box); - --tabcontent-radius-ee: var(--radius-box); - } - :checked, label:has(:checked), :is(.tab-active, [aria-selected="true"], [aria-current="true"], [aria-current="page"]) { - & + .tab-content { - &:nth-child(1), &:nth-child(n + 3) { - --tabcontent-radius-ss: var(--radius-box); - } - } - } - } - } .radial-progress { @layer daisyui.l1.l2.l3 { position: relative; @@ -2493,66 +2311,6 @@ transition: background-color 0.2s ease-out; } } - .menu-horizontal { - @layer daisyui.l1.l2 { - display: inline-flex; - flex-direction: row; - & > li:not(.menu-title) > details { - & > ul { - position: absolute; - margin-inline-start: calc(0.25rem * 0); - margin-top: calc(0.25rem * 4); - transform-origin: top; - border-radius: var(--radius-box); - background-color: var(--color-base-100); - padding-block: calc(0.25rem * 2); - padding-inline-end: calc(0.25rem * 2); - opacity: 0%; - scale: 95%; - box-shadow: 0 1px 3px 0 oklch(0% 0 0/0.1), 0 1px 2px -1px oklch(0% 0 0/0.1); - @media (prefers-reduced-motion: no-preference) { - @starting-style { - scale: 95%; - opacity: 0; - } - animation: menu 0.2s; - transition-property: opacity, scale, display; - transition-behavior: allow-discrete; - transition-duration: 0.2s; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - } - } - &[open] > ul { - opacity: 100%; - scale: 100%; - } - } - & > li > details > ul { - &:before { - --tw-content: none; - content: var(--tw-content); - } - } - } - } - .menu-vertical { - @layer daisyui.l1.l2 { - display: inline-flex; - flex-direction: column; - & > li:not(.menu-title) > details > ul { - position: relative; - margin-inline-start: calc(0.25rem * 4); - margin-top: calc(0.25rem * 0); - padding-block: calc(0.25rem * 0); - padding-inline-end: calc(0.25rem * 0); - background-color: revert-layer; - border-radius: revert-layer; - animation: revert-layer; - transition: revert-layer; - box-shadow: revert-layer; - } - } - } .avatar { @layer daisyui.l1.l2.l3 { position: relative; @@ -2788,74 +2546,6 @@ } } } - .rating\! { - @layer daisyui.l1.l2.l3 { - position: relative !important; - display: inline-flex !important; - vertical-align: middle !important; - & input { - border: none !important; - appearance: none !important; - } - :where(*) { - height: calc(0.25rem * 6) !important; - width: calc(0.25rem * 6) !important; - border-radius: 0 !important; - background-color: var(--color-base-content) !important; - opacity: 20% !important; - @media (prefers-reduced-motion: no-preference) { - animation: rating 0.25s ease-out !important; - } - &:is(input) { - cursor: pointer !important; - } - } - & .rating-hidden { - width: calc(0.25rem * 2) !important; - background-color: transparent !important; - } - input[type="radio"]:checked { - background-image: none !important; - } - * { - &:checked, &[aria-checked="true"], &[aria-current="true"], &:has(~ *:checked, ~ *[aria-checked="true"], ~ *[aria-current="true"]) { - opacity: 100% !important; - } - &:focus-visible { - scale: 1.1 !important; - @media (prefers-reduced-motion: no-preference) { - transition: scale 0.2s ease-out !important; - } - } - } - & *:active:focus { - animation: none !important; - scale: 1.1 !important; - } - } - @layer daisyui.l1.l2 { - &.rating-xs :where(*:not(.rating-hidden)) { - width: calc(0.25rem * 4) !important; - height: calc(0.25rem * 4) !important; - } - &.rating-sm :where(*:not(.rating-hidden)) { - width: calc(0.25rem * 5) !important; - height: calc(0.25rem * 5) !important; - } - &.rating-md :where(*:not(.rating-hidden)) { - width: calc(0.25rem * 6) !important; - height: calc(0.25rem * 6) !important; - } - &.rating-lg :where(*:not(.rating-hidden)) { - width: calc(0.25rem * 7) !important; - height: calc(0.25rem * 7) !important; - } - &.rating-xl :where(*:not(.rating-hidden)) { - width: calc(0.25rem * 8) !important; - height: calc(0.25rem * 8) !important; - } - } - } .navbar { @layer daisyui.l1.l2.l3 { display: flex; @@ -2995,29 +2685,8 @@ .relative { position: relative; } - .tooltip-bottom { - @layer daisyui.l1.l2 { - > .tooltip-content, &[data-tip]:before { - transform: translateX(-50%) translateY(var(--tt-pos, -0.25rem)); - inset: var(--tt-off) auto auto 50%; - } - &:after { - transform: translateX(-50%) translateY(var(--tt-pos, -0.25rem)) rotate(180deg); - inset: var(--tt-tail) auto auto 50%; - } - } - } - .tooltip-left { - @layer daisyui.l1.l2 { - > .tooltip-content, &[data-tip]:before { - transform: translateX(calc(var(--tt-pos, 0.25rem) - 0.25rem)) translateY(-50%); - inset: 50% var(--tt-off) auto auto; - } - &:after { - transform: translateX(var(--tt-pos, 0.25rem)) translateY(-50%) rotate(-90deg); - inset: 50% calc(var(--tt-tail) + 1px) auto auto; - } - } + .sticky { + position: sticky; } .tooltip-right { @layer daisyui.l1.l2 { @@ -3049,61 +2718,9 @@ .inset-y-0 { inset-block: calc(var(--spacing) * 0); } - .dropdown-right { - @layer daisyui.l1.l2 { - --anchor-h: right; - --anchor-v: span-bottom; - .dropdown-content { - inset-inline-start: 100%; - top: calc(0.25rem * 0); - bottom: auto; - transform-origin: 0; - } - } - } .start { inset-inline-start: var(--spacing); } - .dropdown-left { - @layer daisyui.l1.l2 { - --anchor-h: left; - --anchor-v: span-bottom; - .dropdown-content { - inset-inline-end: 100%; - top: calc(0.25rem * 0); - bottom: auto; - transform-origin: 100%; - } - } - } - .dropdown-end { - @layer daisyui.l1.l2 { - --anchor-h: span-left; - :where(.dropdown-content) { - inset-inline-end: calc(0.25rem * 0); - translate: 0 0; - [dir="rtl"] & { - translate: 0 0; - } - } - &.dropdown-left { - --anchor-h: left; - --anchor-v: span-top; - .dropdown-content { - top: auto; - bottom: calc(0.25rem * 0); - } - } - &.dropdown-right { - --anchor-h: right; - --anchor-v: span-top; - .dropdown-content { - top: auto; - bottom: calc(0.25rem * 0); - } - } - } - } .end { inset-inline-end: var(--spacing); } @@ -3117,36 +2734,14 @@ } } } - .dropdown-top { - @layer daisyui.l1.l2 { - --anchor-v: top; - .dropdown-content { - top: auto; - bottom: 100%; - transform-origin: bottom; - } - } - } - .-top-1 { - top: calc(var(--spacing) * -1); - } .top-0 { top: calc(var(--spacing) * 0); } - .top-2 { - top: calc(var(--spacing) * 2); - } - .top-4 { - top: calc(var(--spacing) * 4); - } - .top-6 { - top: calc(var(--spacing) * 6); - } .top-10 { top: calc(var(--spacing) * 10); } - .-right-2 { - right: calc(var(--spacing) * -2); + .top-full { + top: 100%; } .right-0 { right: calc(var(--spacing) * 0); @@ -3178,15 +2773,9 @@ .left-1\/4 { left: calc(1 / 4 * 100%); } - .left-2 { - left: calc(var(--spacing) * 2); - } .left-3 { left: calc(var(--spacing) * 3); } - .left-4 { - left: calc(var(--spacing) * 4); - } .left-6 { left: calc(var(--spacing) * 6); } @@ -3407,6 +2996,9 @@ .-z-0 { z-index: calc(0 * -1); } + .z-1 { + z-index: 1; + } .z-10 { z-index: 10; } @@ -3416,9 +3008,6 @@ .z-50 { z-index: 50; } - .z-\[1\] { - z-index: 1; - } .z-\[50\] { z-index: 50; } @@ -3713,29 +3302,6 @@ grid-row-start: 2; } } - .drawer-end { - @layer daisyui.l1.l2 { - grid-auto-columns: auto max-content; - > .drawer-toggle { - ~ .drawer-content { - grid-column-start: 1; - } - ~ .drawer-side { - grid-column-start: 2; - justify-items: end; - } - ~ .drawer-side > :not(.drawer-overlay) { - translate: 100%; - [dir="rtl"] & { - translate: -100%; - } - } - &:checked ~ .drawer-side > :not(.drawer-overlay) { - translate: 0%; - } - } - } - } .stat-value { @layer daisyui.l1.l2.l3 { grid-column-start: 1; @@ -3772,15 +3338,6 @@ white-space: nowrap; } } - .col-start-1 { - grid-column-start: 1; - } - .col-start-2 { - grid-column-start: 2; - } - .col-start-3 { - grid-column-start: 3; - } .chat-image { @layer daisyui.l1.l2.l3 { grid-row: span 2 / span 2; @@ -3803,12 +3360,6 @@ font-size: 0.6875rem; } } - .row-start-2 { - grid-row-start: 2; - } - .row-start-3 { - grid-row-start: 3; - } .container { width: 100%; @media (width >= 40rem) { @@ -3923,18 +3474,6 @@ } } } - .input-md { - @layer daisyui.l1.l2 { - --size: calc(var(--size-field, 0.25rem) * 10); - font-size: max(var(--font-size, 0.875rem), 0.875rem); - &[type="number"] { - &::-webkit-inner-spin-button { - margin-block: calc(0.25rem * -3); - margin-inline-end: calc(0.25rem * -3); - } - } - } - } .input-sm { @layer daisyui.l1.l2 { --size: calc(var(--size-field, 0.25rem) * 8); @@ -3959,15 +3498,6 @@ } } } - .my-1 { - margin-block: calc(var(--spacing) * 1); - } - .my-4 { - margin-block: calc(var(--spacing) * 4); - } - .my-6 { - margin-block: calc(var(--spacing) * 6); - } .my-16 { margin-block: calc(var(--spacing) * 16); } @@ -4036,9 +3566,6 @@ .mt-4 { margin-top: calc(var(--spacing) * 4); } - .mt-8 { - margin-top: calc(var(--spacing) * 8); - } .mr-1 { margin-right: calc(var(--spacing) * 1); } @@ -4057,18 +3584,12 @@ font-weight: 600; } } - .mb-1 { - margin-bottom: calc(var(--spacing) * 1); - } .mb-2 { margin-bottom: calc(var(--spacing) * 2); } .mb-4 { margin-bottom: calc(var(--spacing) * 4); } - .mb-6 { - margin-bottom: calc(var(--spacing) * 6); - } .mb-10 { margin-bottom: calc(var(--spacing) * 10); } @@ -4078,9 +3599,6 @@ .ml-2 { margin-left: calc(var(--spacing) * 2); } - .ml-6 { - margin-left: calc(var(--spacing) * 6); - } .carousel-item { @layer daisyui.l1.l2.l3 { box-sizing: content-box; @@ -4089,31 +3607,6 @@ scroll-snap-align: start; } } - .status { - @layer daisyui.l1.l2.l3 { - display: inline-block; - aspect-ratio: 1 / 1; - width: calc(0.25rem * 2); - height: calc(0.25rem * 2); - border-radius: var(--radius-selector); - background-color: var(--color-base-content); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-base-content) 20%, transparent); - } - background-position: center; - background-repeat: no-repeat; - vertical-align: middle; - color: color-mix(in srgb, #000 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-black) 30%, transparent); - } - background-image: radial-gradient( circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * 0.5)), #0000 ); - box-shadow: 0 2px 3px -1px currentColor; - @supports (color: color-mix(in lab, red, red)) { - box-shadow: 0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000); - } - } - } .badge { @layer daisyui.l1.l2.l3 { display: inline-flex; @@ -4162,6 +3655,45 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E"); } + .icon-\[lucide--align-center\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M17 12H7m12 6H5M21 6H3'/%3E%3C/svg%3E"); + } + .icon-\[lucide--align-left\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 12H3m14 6H3M21 6H3'/%3E%3C/svg%3E"); + } + .icon-\[lucide--align-right\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H9m12 6H7M21 6H3'/%3E%3C/svg%3E"); + } .icon-\[lucide--bold\] { display: inline-block; width: 1em; @@ -4292,6 +3824,19 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E"); } + .icon-\[lucide--eraser\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21m-7.752-9.91l8.828 8.828'/%3E%3C/svg%3E"); + } .icon-\[lucide--eye-off\] { display: inline-block; width: 1em; @@ -4331,7 +3876,7 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E"); } - .icon-\[lucide--heart\] { + .icon-\[lucide--indent-decrease\] { display: inline-block; width: 1em; height: 1em; @@ -4342,7 +3887,20 @@ mask-repeat: no-repeat; -webkit-mask-size: 100% 100%; mask-size: 100% 100%; - --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 9.5a5.5 5.5 0 0 1 9.591-3.676a.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5'/%3E%3C/svg%3E"); + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H11m10 6H11M21 6H11M7 8l-4 4l4 4'/%3E%3C/svg%3E"); + } + .icon-\[lucide--indent-increase\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H11m10 6H11M21 6H11M3 8l4 4l-4 4'/%3E%3C/svg%3E"); } .icon-\[lucide--info\] { display: inline-block; @@ -4435,6 +3993,19 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E"); } + .icon-\[lucide--paperclip\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 6l-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551'/%3E%3C/svg%3E"); + } .icon-\[lucide--phone\] { display: inline-block; width: 1em; @@ -4448,19 +4019,6 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E"); } - .icon-\[lucide--plus\] { - display: inline-block; - width: 1em; - height: 1em; - background-color: currentColor; - -webkit-mask-image: var(--svg); - mask-image: var(--svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 100% 100%; - mask-size: 100% 100%; - --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7v14'/%3E%3C/svg%3E"); - } .icon-\[lucide--quote\] { display: inline-block; width: 1em; @@ -4500,7 +4058,7 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E"); } - .icon-\[lucide--settings\] { + .icon-\[lucide--smile\] { display: inline-block; width: 1em; height: 1em; @@ -4511,20 +4069,7 @@ mask-repeat: no-repeat; -webkit-mask-size: 100% 100%; mask-size: 100% 100%; - --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9.671 4.136a2.34 2.34 0 0 1 4.659 0a2.34 2.34 0 0 0 3.319 1.915a2.34 2.34 0 0 1 2.33 4.033a2.34 2.34 0 0 0 0 3.831a2.34 2.34 0 0 1-2.33 4.033a2.34 2.34 0 0 0-3.319 1.915a2.34 2.34 0 0 1-4.659 0a2.34 2.34 0 0 0-3.32-1.915a2.34 2.34 0 0 1-2.33-4.033a2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E"); - } - .icon-\[lucide--strikethrough\] { - display: inline-block; - width: 1em; - height: 1em; - background-color: currentColor; - -webkit-mask-image: var(--svg); - mask-image: var(--svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 100% 100%; - mask-size: 100% 100%; - --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 4H9a3 3 0 0 0-2.83 4M14 12a4 4 0 0 1 0 8H6m-2-8h16'/%3E%3C/svg%3E"); + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 14s1.5 2 4 2s4-2 4-2M9 9h.01M15 9h.01'/%3E%3C/g%3E%3C/svg%3E"); } .icon-\[lucide--text\] { display: inline-block; @@ -4737,14 +4282,6 @@ justify-content: flex-end; } } - .navbar-start { - @layer daisyui.l1.l2.l3 { - display: inline-flex; - align-items: center; - width: 50%; - justify-content: flex-start; - } - } .card-body { @layer daisyui.l1.l2.l3 { display: flex; @@ -4758,13 +4295,6 @@ } } } - .navbar-center { - @layer daisyui.l1.l2.l3 { - display: inline-flex; - align-items: center; - flex-shrink: 0; - } - } .fieldset-label { @layer daisyui.l1.l2.l3 { display: flex; @@ -4891,6 +4421,9 @@ .inline-block { display: inline-block; } + .inline-flex { + display: inline-flex; + } .table { display: table; } @@ -4914,40 +4447,6 @@ } } } - .modal-middle { - @layer daisyui.l1.l2 { - place-items: center; - .modal-box { - height: auto; - width: calc(11/12 * 100%); - max-width: 32rem; - max-height: calc(100vh - 5em); - translate: 0 2%; - scale: 98%; - --modal-tl: var(--radius-box); - --modal-tr: var(--radius-box); - --modal-bl: var(--radius-box); - --modal-br: var(--radius-box); - } - } - } - .modal-top { - @layer daisyui.l1.l2 { - place-items: start; - .modal-box { - height: auto; - width: 100%; - max-width: none; - max-height: calc(100vh - 5em); - translate: 0 -100%; - scale: 1; - --modal-tl: 0; - --modal-tr: 0; - --modal-bl: var(--radius-box); - --modal-br: var(--radius-box); - } - } - } .btn-circle { @layer daisyui.l1.l2 { border-radius: calc(infinity * 1px); @@ -4956,13 +4455,6 @@ height: var(--size); } } - .btn-square { - @layer daisyui.l1.l2 { - padding-inline: calc(0.25rem * 0); - width: var(--size); - height: var(--size); - } - } .size-5 { width: calc(var(--spacing) * 5); height: calc(var(--spacing) * 5); @@ -4971,6 +4463,9 @@ width: calc(var(--spacing) * 6); height: calc(var(--spacing) * 6); } + .h-3 { + height: calc(var(--spacing) * 3); + } .h-3\.5 { height: calc(var(--spacing) * 3.5); } @@ -4980,42 +4475,18 @@ .h-5 { height: calc(var(--spacing) * 5); } - .h-8 { - height: calc(var(--spacing) * 8); - } - .h-10 { - height: calc(var(--spacing) * 10); - } .h-12 { height: calc(var(--spacing) * 12); } - .h-16 { - height: calc(var(--spacing) * 16); - } .h-20 { height: calc(var(--spacing) * 20); } - .h-24 { - height: calc(var(--spacing) * 24); - } - .h-32 { - height: calc(var(--spacing) * 32); - } .h-48 { height: calc(var(--spacing) * 48); } .h-96 { height: calc(var(--spacing) * 96); } - .h-\[300px\] { - height: 300px; - } - .h-\[400px\] { - height: 400px; - } - .h-\[500px\] { - height: 500px; - } .h-auto { height: auto; } @@ -5025,56 +4496,35 @@ .max-h-60 { max-height: calc(var(--spacing) * 60); } - .max-h-96 { - max-height: calc(var(--spacing) * 96); - } .min-h-0 { min-height: calc(var(--spacing) * 0); } - .min-h-\[10rem\] { - min-height: 10rem; - } - .min-h-\[300px\] { - min-height: 300px; - } - .min-h-\[400px\] { - min-height: 400px; - } - .min-h-\[500px\] { - min-height: 500px; + .min-h-\[22rem\] { + min-height: 22rem; } .min-h-full { min-height: 100%; } - .btn-wide { - @layer daisyui.l1.l2 { - width: 100%; - max-width: calc(0.25rem * 64); - } - } .btn-block { @layer daisyui.l1.l2 { width: 100%; } } + .w-3 { + width: calc(var(--spacing) * 3); + } .w-3\.5 { width: calc(var(--spacing) * 3.5); } - .w-8 { - width: calc(var(--spacing) * 8); + .w-4 { + width: calc(var(--spacing) * 4); + } + .w-5 { + width: calc(var(--spacing) * 5); } .w-10 { width: calc(var(--spacing) * 10); } - .w-12 { - width: calc(var(--spacing) * 12); - } - .w-16 { - width: calc(var(--spacing) * 16); - } - .w-24 { - width: calc(var(--spacing) * 24); - } .w-32 { width: calc(var(--spacing) * 32); } @@ -5108,6 +4558,9 @@ .w-px { width: 1px; } + .w-xs { + width: var(--container-xs); + } .max-w-2xl { max-width: var(--container-2xl); } @@ -5126,21 +4579,9 @@ .max-w-md { max-width: var(--container-md); } - .max-w-xs { - max-width: var(--container-xs); - } - .min-w-\[4rem\] { - min-width: 4rem; - } .min-w-\[48px\] { min-width: 48px; } - .min-w-\[500px\] { - min-width: 500px; - } - .min-w-\[600px\] { - min-width: 600px; - } .flex-1 { flex: 1; } @@ -5161,14 +4602,6 @@ --tw-translate-x: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); } - .translate-x-2 { - --tw-translate-x: calc(var(--spacing) * 2); - 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-10 { --tw-translate-x: calc(var(--spacing) * 10); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -5177,20 +4610,6 @@ --tw-translate-x: 100%; translate: var(--tw-translate-x) var(--tw-translate-y); } - .translate-y-2 { - --tw-translate-y: calc(var(--spacing) * 2); - 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); - } - .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%; @@ -5210,27 +4629,6 @@ } } } - .swap-flip { - @layer daisyui.l1.l2 { - transform-style: preserve-3d; - perspective: 20rem; - .swap-on, .swap-indeterminate, input:indeterminate ~ .swap-on { - transform: rotateY(180deg); - backface-visibility: hidden; - } - input:is(:checked, :indeterminate) ~ .swap-on, &.swap-active .swap-on { - transform: rotateY(0deg); - } - input:is(:checked, :indeterminate) ~ .swap-off, &.swap-active .swap-off { - transform: rotateY(-180deg); - backface-visibility: hidden; - opacity: 100%; - } - } - } - .transform { - transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); - } .skeleton { @layer daisyui.l1.l2.l3 { border-radius: var(--radius-box); @@ -5250,9 +4648,6 @@ .animate-pulse { animation: var(--animate-pulse); } - .cursor-help { - cursor: help; - } .cursor-pointer { cursor: pointer; } @@ -5288,12 +4683,6 @@ .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-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); } @@ -5330,15 +4719,9 @@ .justify-center { justify-content: center; } - .justify-end { - justify-content: flex-end; - } .justify-start { justify-content: flex-start; } - .justify-items-center { - justify-items: center; - } .gap-0\.5 { gap: calc(var(--spacing) * 0.5); } @@ -5354,9 +4737,6 @@ .gap-4 { gap: calc(var(--spacing) * 4); } - .gap-6 { - gap: calc(var(--spacing) * 6); - } .gap-8 { gap: calc(var(--spacing) * 8); } @@ -5407,62 +4787,6 @@ box-shadow: 0 1px 2px 0 oklch(0% 0 0/0.05); } } - .menu-lg { - @layer daisyui.l1.l2 { - :where(li:not(.menu-title) > *:not(ul, details, .menu-title)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { - border-radius: var(--radius-field); - padding-inline: calc(0.25rem * 4); - padding-block: calc(0.25rem * 1.5); - font-size: 1.125rem; - } - .menu-title { - padding-inline: calc(0.25rem * 6); - padding-block: calc(0.25rem * 3); - } - } - } - .menu-md { - @layer daisyui.l1.l2 { - :where(li:not(.menu-title) > *:not(ul, details, .menu-title)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { - border-radius: var(--radius-field); - padding-inline: calc(0.25rem * 3); - padding-block: calc(0.25rem * 1.5); - font-size: 0.875rem; - } - .menu-title { - padding-inline: calc(0.25rem * 3); - padding-block: calc(0.25rem * 2); - } - } - } - .menu-sm { - @layer daisyui.l1.l2 { - :where(li:not(.menu-title) > *:not(ul, details, .menu-title)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { - border-radius: var(--radius-field); - padding-inline: calc(0.25rem * 2.5); - padding-block: calc(0.25rem * 1); - font-size: 0.75rem; - } - .menu-title { - padding-inline: calc(0.25rem * 3); - padding-block: calc(0.25rem * 2); - } - } - } - .menu-xs { - @layer daisyui.l1.l2 { - :where(li:not(.menu-title) > *:not(ul, details, .menu-title)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { - border-radius: var(--radius-field); - padding-inline: calc(0.25rem * 2); - padding-block: calc(0.25rem * 1); - font-size: 0.6875rem; - } - .menu-title { - padding-inline: calc(0.25rem * 2); - padding-block: calc(0.25rem * 1); - } - } - } .rounded { border-radius: 0.25rem; } @@ -5490,9 +4814,6 @@ .rounded-sm { border-radius: var(--radius-sm); } - .rounded-xl { - border-radius: var(--radius-xl); - } .border { border-style: var(--tw-border-style); border-width: 1px; @@ -5509,18 +4830,10 @@ border-top-style: var(--tw-border-style); border-top-width: 1px; } - .border-r { - border-right-style: var(--tw-border-style); - border-right-width: 1px; - } .border-b { border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; } - .border-l-4 { - border-left-style: var(--tw-border-style); - border-left-width: 4px; - } .badge-dash { @layer daisyui.l1.l2 { color: var(--badge-color); @@ -5539,27 +4852,6 @@ background-image: none; } } - .btn-dash { - @layer daisyui.l1 { - &:not( .btn-active, :hover, :active:focus, :focus-visible, input:checked:not(.filter .btn), :disabled, [disabled], .btn-disabled ) { - --btn-shadow: ""; - --btn-bg: #0000; - --btn-fg: var(--btn-color); - --btn-border: var(--btn-color); - --btn-noise: none; - } - @media (hover: none) { - &:not(.btn-active, :active, :focus-visible, input:checked:not(.filter .btn)):hover { - --btn-shadow: ""; - --btn-bg: #0000; - --btn-fg: var(--btn-color); - --btn-border: var(--btn-color); - --btn-noise: none; - } - } - } - border-style: dashed; - } .border-dashed { --tw-border-style: dashed; border-style: dashed; @@ -5576,41 +4868,6 @@ background-image: none; } } - .select-ghost { - @layer daisyui.l1.l2 { - background-color: transparent; - transition: background-color 0.2s; - box-shadow: none; - border-color: #0000; - &:focus, &:focus-within { - background-color: var(--color-base-100); - color: var(--color-base-content); - border-color: #0000; - box-shadow: none; - } - } - } - .input-ghost { - @layer daisyui.l1.l2 { - background-color: transparent; - box-shadow: none; - border-color: #0000; - &:focus, &:focus-within { - background-color: var(--color-base-100); - color: var(--color-base-content); - border-color: #0000; - box-shadow: none; - } - } - } - .badge-outline { - @layer daisyui.l1.l2 { - color: var(--badge-color); - --badge-bg: #0000; - background-image: none; - border-color: currentColor; - } - } .border-base-200\/30 { border-color: var(--color-base-200); @supports (color: color-mix(in lab, red, red)) { @@ -5641,9 +4898,6 @@ .border-primary { border-color: var(--color-primary); } - .border-transparent { - border-color: transparent; - } .table-zebra { @layer daisyui.l1.l2 { tbody { @@ -5667,12 +4921,15 @@ } } } - .bg-accent { - background-color: var(--color-accent); - } .bg-base-100 { background-color: var(--color-base-100); } + .bg-base-100\/50 { + background-color: var(--color-base-100); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-base-100) 50%, transparent); + } + } .bg-base-200 { background-color: var(--color-base-200); } @@ -5691,36 +4948,9 @@ .bg-base-300 { background-color: var(--color-base-300); } - .bg-black\/20 { - background-color: color-mix(in srgb, #000 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 20%, transparent); - } - } - .bg-error { - background-color: var(--color-error); - } - .bg-error\/10 { - background-color: var(--color-error); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-error) 10%, transparent); - } - } - .bg-info { - background-color: var(--color-info); - } - .bg-neutral { - background-color: var(--color-neutral); - } .bg-primary { background-color: var(--color-primary); } - .bg-primary\/5 { - background-color: var(--color-primary); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-primary) 5%, transparent); - } - } .bg-primary\/10 { background-color: var(--color-primary); @supports (color: color-mix(in lab, red, red)) { @@ -5736,29 +4966,8 @@ .bg-secondary { background-color: var(--color-secondary); } - .bg-success { - background-color: var(--color-success); - } - .bg-success\/10 { - background-color: var(--color-success); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-success) 10%, transparent); - } - } - .bg-warning { - background-color: var(--color-warning); - } - .bg-warning\/10 { - background-color: var(--color-warning); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-warning) 10%, transparent); - } - } - .bg-white\/20 { - background-color: color-mix(in srgb, #fff 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 20%, transparent); - } + .bg-transparent { + background-color: transparent; } .bg-linear-to-r { --tw-gradient-position: to right; @@ -5767,10 +4976,6 @@ } 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)); - } .skeleton-text { @layer daisyui.l1.l2 { background-clip: text; @@ -5801,14 +5006,6 @@ background-image: none; } } - .from-accent { - --tw-gradient-from: var(--color-accent); - --tw-gradient-stops: var(--tw-gradient-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-primary { - --tw-gradient-from: var(--color-primary); - --tw-gradient-stops: var(--tw-gradient-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-secondary { --tw-gradient-from: var(--color-secondary); --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); @@ -5818,18 +5015,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); } - .to-accent { - --tw-gradient-to: var(--color-accent); - --tw-gradient-stops: var(--tw-gradient-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-primary { --tw-gradient-to: var(--color-primary); --tw-gradient-stops: var(--tw-gradient-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-secondary { - --tw-gradient-to: var(--color-secondary); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } .loading-spinner { @layer daisyui.l1.l2 { mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E"); @@ -5850,11 +5039,6 @@ mask-image: url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e"); } } - .mask-star-2 { - @layer daisyui.l1.l2 { - mask-image: url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e"); - } - } .mask-circle { --tw-mask-radial-shape: circle; } @@ -5867,24 +5051,6 @@ --size: calc(var(--size-selector, 0.25rem) * 7); } } - .checkbox-md { - @layer daisyui.l1.l2 { - padding: 0.25rem; - --size: calc(var(--size-selector, 0.25rem) * 6); - } - } - .checkbox-sm { - @layer daisyui.l1.l2 { - padding: 0.1875rem; - --size: calc(var(--size-selector, 0.25rem) * 5); - } - } - .checkbox-xs { - @layer daisyui.l1.l2 { - padding: 0.125rem; - --size: calc(var(--size-selector, 0.25rem) * 4); - } - } .radio-lg { @layer daisyui.l1.l2 { padding: 0.3125rem; @@ -5893,30 +5059,6 @@ } } } - .radio-md { - @layer daisyui.l1.l2 { - padding: 0.25rem; - &:is([type="radio"]) { - --size: calc(var(--size-selector, 0.25rem) * 6); - } - } - } - .radio-sm { - @layer daisyui.l1.l2 { - padding: 0.1875rem; - &:is([type="radio"]) { - --size: calc(var(--size-selector, 0.25rem) * 5); - } - } - } - .radio-xs { - @layer daisyui.l1.l2 { - padding: 0.125rem; - &:is([type="radio"]) { - --size: calc(var(--size-selector, 0.25rem) * 4); - } - } - } .p-0 { padding: calc(var(--spacing) * 0); } @@ -5954,36 +5096,6 @@ } } } - .select-md { - @layer daisyui.l1.l2 { - --size: calc(var(--size-field, 0.25rem) * 10); - font-size: 0.875rem; - option { - padding-inline: calc(0.25rem * 3); - padding-block: calc(0.25rem * 1.5); - } - } - } - .select-sm { - @layer daisyui.l1.l2 { - --size: calc(var(--size-field, 0.25rem) * 8); - font-size: 0.75rem; - option { - padding-inline: calc(0.25rem * 2.5); - padding-block: calc(0.25rem * 1); - } - } - } - .select-xs { - @layer daisyui.l1.l2 { - --size: calc(var(--size-field, 0.25rem) * 6); - font-size: 0.6875rem; - option { - padding-inline: calc(0.25rem * 2); - padding-block: calc(0.25rem * 1); - } - } - } .table-lg { @layer daisyui.l1.l2 { :not(thead, tfoot) tr { @@ -5995,56 +5107,9 @@ } } } - .table-md { - @layer daisyui.l1.l2 { - :not(thead, tfoot) tr { - font-size: 0.875rem; - } - :where(th, td) { - padding-inline: calc(0.25rem * 4); - padding-block: calc(0.25rem * 3); - } - } - } - .table-sm { - @layer daisyui.l1.l2 { - :not(thead, tfoot) tr { - font-size: 0.75rem; - } - :where(th, td) { - padding-inline: calc(0.25rem * 3); - padding-block: calc(0.25rem * 2); - } - } - } - .table-xl { - @layer daisyui.l1.l2 { - :not(thead, tfoot) tr { - font-size: 1.375rem; - } - :where(th, td) { - padding-inline: calc(0.25rem * 6); - padding-block: calc(0.25rem * 5); - } - } - } - .table-xs { - @layer daisyui.l1.l2 { - :not(thead, tfoot) tr { - font-size: 0.6875rem; - } - :where(th, td) { - padding-inline: calc(0.25rem * 2); - padding-block: calc(0.25rem * 1); - } - } - } .px-1 { padding-inline: calc(var(--spacing) * 1); } - .px-2 { - padding-inline: calc(var(--spacing) * 2); - } .px-3 { padding-inline: calc(var(--spacing) * 3); } @@ -6063,12 +5128,6 @@ .py-2 { padding-block: calc(var(--spacing) * 2); } - .py-4 { - padding-block: calc(var(--spacing) * 4); - } - .py-8 { - padding-block: calc(var(--spacing) * 8); - } .py-10 { padding-block: calc(var(--spacing) * 10); } @@ -6116,18 +5175,10 @@ 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-7xl { font-size: var(--text-7xl); line-height: var(--tw-leading, var(--text-7xl--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)); @@ -6144,70 +5195,12 @@ font-size: var(--text-xs); line-height: var(--tw-leading, var(--text-xs--line-height)); } - .tabs-lg { - @layer daisyui.l1.l2 { - --tab-height: calc(var(--size-field, 0.25rem) * 12); - & > .tab { - font-size: 1.125rem; - --tab-p: 1rem; - --tab-radius-min: calc(1.5rem - var(--border)); - } - } - } - .tabs-md { - @layer daisyui.l1.l2 { - --tab-height: calc(var(--size-field, 0.25rem) * 10); - & > .tab { - font-size: 0.875rem; - --tab-p: 0.75rem; - --tab-radius-min: calc(0.75rem - var(--border)); - } - } - } - .tabs-sm { - @layer daisyui.l1.l2 { - --tab-height: calc(var(--size-field, 0.25rem) * 8); - & > .tab { - font-size: 0.875rem; - --tab-p: 0.5rem; - --tab-radius-min: calc(0.5rem - var(--border)); - } - } - } - .tabs-xs { - @layer daisyui.l1.l2 { - --tab-height: calc(var(--size-field, 0.25rem) * 6); - & > .tab { - font-size: 0.75rem; - --tab-p: 0.375rem; - --tab-radius-min: calc(0.5rem - var(--border)); - } - } - } .badge-lg { @layer daisyui.l1.l2 { --size: calc(var(--size-selector, 0.25rem) * 7); font-size: 1rem; } } - .badge-md { - @layer daisyui.l1.l2 { - --size: calc(var(--size-selector, 0.25rem) * 6); - font-size: 0.875rem; - } - } - .badge-sm { - @layer daisyui.l1.l2 { - --size: calc(var(--size-selector, 0.25rem) * 5); - font-size: 0.75rem; - } - } - .badge-xs { - @layer daisyui.l1.l2 { - --size: calc(var(--size-selector, 0.25rem) * 4); - font-size: 0.625rem; - } - } .text-\[9px\] { font-size: 9px; } @@ -6300,36 +5293,6 @@ --input-color: var(--color-error); } } - .checkbox-info { - @layer daisyui.l1.l2 { - color: var(--color-info-content); - --input-color: var(--color-info); - } - } - .checkbox-primary { - @layer daisyui.l1.l2 { - color: var(--color-primary-content); - --input-color: var(--color-primary); - } - } - .checkbox-secondary { - @layer daisyui.l1.l2 { - color: var(--color-secondary-content); - --input-color: var(--color-secondary); - } - } - .checkbox-success { - @layer daisyui.l1.l2 { - color: var(--color-success-content); - --input-color: var(--color-success); - } - } - .checkbox-warning { - @layer daisyui.l1.l2 { - color: var(--color-warning-content); - --input-color: var(--color-warning); - } - } .range-accent { @layer daisyui.l1.l2 { color: var(--color-accent); @@ -6342,36 +5305,6 @@ --range-thumb: var(--color-error-content); } } - .range-info { - @layer daisyui.l1.l2 { - color: var(--color-info); - --range-thumb: var(--color-info-content); - } - } - .range-primary { - @layer daisyui.l1.l2 { - color: var(--color-primary); - --range-thumb: var(--color-primary-content); - } - } - .range-secondary { - @layer daisyui.l1.l2 { - color: var(--color-secondary); - --range-thumb: var(--color-secondary-content); - } - } - .range-success { - @layer daisyui.l1.l2 { - color: var(--color-success); - --range-thumb: var(--color-success-content); - } - } - .range-warning { - @layer daisyui.l1.l2 { - color: var(--color-warning); - --range-thumb: var(--color-warning-content); - } - } .tooltip-accent { @layer daisyui.l1.l2 { --tt-bg: var(--color-accent); @@ -6388,52 +5321,9 @@ } } } - .tooltip-info { - @layer daisyui.l1.l2 { - --tt-bg: var(--color-info); - > .tooltip-content, &[data-tip]:before { - color: var(--color-info-content); - } - } - } - .tooltip-primary { - @layer daisyui.l1.l2 { - --tt-bg: var(--color-primary); - > .tooltip-content, &[data-tip]:before { - color: var(--color-primary-content); - } - } - } - .tooltip-secondary { - @layer daisyui.l1.l2 { - --tt-bg: var(--color-secondary); - > .tooltip-content, &[data-tip]:before { - color: var(--color-secondary-content); - } - } - } - .tooltip-success { - @layer daisyui.l1.l2 { - --tt-bg: var(--color-success); - > .tooltip-content, &[data-tip]:before { - color: var(--color-success-content); - } - } - } - .tooltip-warning { - @layer daisyui.l1.l2 { - --tt-bg: var(--color-warning); - > .tooltip-content, &[data-tip]:before { - color: var(--color-warning-content); - } - } - } .text-accent { color: var(--color-accent); } - .text-accent-content { - color: var(--color-accent-content); - } .text-base-content { color: var(--color-base-content); } @@ -6452,21 +5342,6 @@ .text-error { color: var(--color-error); } - .text-error-content { - color: var(--color-error-content); - } - .text-gray-500 { - color: var(--color-gray-500); - } - .text-info { - color: var(--color-info); - } - .text-info-content { - color: var(--color-info-content); - } - .text-neutral-content { - color: var(--color-neutral-content); - } .text-primary { color: var(--color-primary); } @@ -6482,21 +5357,9 @@ .text-success { color: var(--color-success); } - .text-success-content { - color: var(--color-success-content); - } .text-transparent { color: transparent; } - .text-warning { - color: var(--color-warning); - } - .text-warning-content { - color: var(--color-warning-content); - } - .text-white { - color: var(--color-white); - } .normal-case { text-transform: none; } @@ -6523,9 +5386,6 @@ } } } - .line-through { - text-decoration-line: line-through; - } .underline { text-decoration-line: underline; } @@ -6660,11 +5520,6 @@ 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-transform { transition-property: transform, translate, scale, rotate; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); @@ -6698,78 +5553,6 @@ } } } - .btn-soft { - @layer daisyui.l1 { - &:not( .btn-active, :hover, :active:focus, :focus-visible, input:checked:not(.filter .btn), :disabled, [disabled], .btn-disabled ) { - --btn-shadow: ""; - --btn-fg: var(--btn-color, var(--color-base-content)); - --btn-bg: var(--btn-color, var(--color-base-content)); - @supports (color: color-mix(in lab, red, red)) { - --btn-bg: color-mix( - in oklab, - var(--btn-color, var(--color-base-content)) 8%, - var(--color-base-100) - ); - } - --btn-border: var(--btn-color, var(--color-base-content)); - @supports (color: color-mix(in lab, red, red)) { - --btn-border: color-mix( - in oklab, - var(--btn-color, var(--color-base-content)) 10%, - var(--color-base-100) - ); - } - --btn-noise: none; - } - @media (hover: none) { - &:not(.btn-active, :active, :focus-visible, input:checked:not(.filter .btn)):hover { - --btn-shadow: ""; - --btn-fg: var(--btn-color, var(--color-base-content)); - --btn-bg: var(--btn-color, var(--color-base-content)); - @supports (color: color-mix(in lab, red, red)) { - --btn-bg: color-mix( - in oklab, - var(--btn-color, var(--color-base-content)) 8%, - var(--color-base-100) - ); - } - --btn-border: var(--btn-color, var(--color-base-content)); - @supports (color: color-mix(in lab, red, red)) { - --btn-border: color-mix( - in oklab, - var(--btn-color, var(--color-base-content)) 10%, - var(--color-base-100) - ); - } - --btn-noise: none; - } - } - } - } - .indicator-end { - @layer daisyui.l1.l2 { - --indicator-s: auto; - --indicator-e: 0; - --indicator-x: 50%; - [dir="rtl"] & { - --indicator-s: 0; - --indicator-e: auto; - --indicator-x: -50%; - } - } - } - .indicator-start { - @layer daisyui.l1.l2 { - --indicator-s: 0; - --indicator-e: auto; - --indicator-x: -50%; - [dir="rtl"] & { - --indicator-s: auto; - --indicator-e: 0; - --indicator-x: 50%; - } - } - } .btn-lg { @layer daisyui.l1.l2 { --fontsize: 1.125rem; @@ -6805,20 +5588,6 @@ --size: calc(var(--size-field, 0.25rem) * 6); } } - .indicator-bottom { - @layer daisyui.l1.l2 { - --indicator-t: auto; - --indicator-b: 0; - --indicator-y: 50%; - } - } - .indicator-top { - @layer daisyui.l1.l2 { - --indicator-t: 0; - --indicator-b: auto; - --indicator-y: -50%; - } - } .badge-accent { @layer daisyui.l1.l2 { --badge-color: var(--color-accent); @@ -6831,54 +5600,12 @@ --badge-fg: var(--color-error-content); } } - .badge-info { - @layer daisyui.l1.l2 { - --badge-color: var(--color-info); - --badge-fg: var(--color-info-content); - } - } .badge-primary { @layer daisyui.l1.l2 { --badge-color: var(--color-primary); --badge-fg: var(--color-primary-content); } } - .badge-secondary { - @layer daisyui.l1.l2 { - --badge-color: var(--color-secondary); - --badge-fg: var(--color-secondary-content); - } - } - .badge-success { - @layer daisyui.l1.l2 { - --badge-color: var(--color-success); - --badge-fg: var(--color-success-content); - } - } - .badge-warning { - @layer daisyui.l1.l2 { - --badge-color: var(--color-warning); - --badge-fg: var(--color-warning-content); - } - } - .btn-accent { - @layer daisyui.l1.l2.l3 { - --btn-color: var(--color-accent); - --btn-fg: var(--color-accent-content); - } - } - .btn-error { - @layer daisyui.l1.l2.l3 { - --btn-color: var(--color-error); - --btn-fg: var(--color-error-content); - } - } - .btn-info { - @layer daisyui.l1.l2.l3 { - --btn-color: var(--color-info); - --btn-fg: var(--color-info-content); - } - } .btn-neutral { @layer daisyui.l1.l2.l3 { --btn-color: var(--color-neutral); @@ -6897,18 +5624,6 @@ --btn-fg: var(--color-secondary-content); } } - .btn-success { - @layer daisyui.l1.l2.l3 { - --btn-color: var(--color-success); - --btn-fg: var(--color-success-content); - } - } - .btn-warning { - @layer daisyui.l1.l2.l3 { - --btn-color: var(--color-warning); - --btn-fg: var(--color-warning-content); - } - } .outline-none { --tw-outline-style: none; outline-style: none; @@ -6917,13 +5632,6 @@ -webkit-user-select: none; user-select: none; } - .input-accent { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-accent); - } - } - } .input-error { @layer daisyui.l1.l2 { &, &:focus, &:focus-within { @@ -6931,20 +5639,6 @@ } } } - .input-info { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-info); - } - } - } - .input-primary { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-primary); - } - } - } .input-secondary { @layer daisyui.l1.l2 { &, &:focus, &:focus-within { @@ -6952,20 +5646,6 @@ } } } - .input-success { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-success); - } - } - } - .input-warning { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-warning); - } - } - } .radio-accent { @layer daisyui.l1.l2 { --input-color: var(--color-accent); @@ -6976,46 +5656,11 @@ --input-color: var(--color-error); } } - .radio-info { - @layer daisyui.l1.l2 { - --input-color: var(--color-info); - } - } - .radio-primary { - @layer daisyui.l1.l2 { - --input-color: var(--color-primary); - } - } - .radio-secondary { - @layer daisyui.l1.l2 { - --input-color: var(--color-secondary); - } - } - .radio-success { - @layer daisyui.l1.l2 { - --input-color: var(--color-success); - } - } - .radio-warning { - @layer daisyui.l1.l2 { - --input-color: var(--color-warning); - } - } .range-lg { @layer daisyui.l1.l2 { --range-thumb-size: calc(var(--size-selector, 0.25rem) * 7); } } - .range-md { - @layer daisyui.l1.l2 { - --range-thumb-size: calc(var(--size-selector, 0.25rem) * 6); - } - } - .range-sm { - @layer daisyui.l1.l2 { - --range-thumb-size: calc(var(--size-selector, 0.25rem) * 5); - } - } .range-xs { @layer daisyui.l1.l2 { --range-thumb-size: calc(var(--size-selector, 0.25rem) * 4); @@ -7024,13 +5669,6 @@ .ring-inset { --tw-ring-inset: inset; } - .select-accent { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-accent); - } - } - } .select-error { @layer daisyui.l1.l2 { &, &:focus, &:focus-within { @@ -7038,20 +5676,6 @@ } } } - .select-info { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-info); - } - } - } - .select-primary { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-primary); - } - } - } .select-secondary { @layer daisyui.l1.l2 { &, &:focus, &:focus-within { @@ -7059,20 +5683,6 @@ } } } - .select-success { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-success); - } - } - } - .select-warning { - @layer daisyui.l1.l2 { - &, &:focus, &:focus-within { - --input-color: var(--color-warning); - } - } - } .toggle-accent { @layer daisyui.l1.l2 { &:checked, &[aria-checked="true"] { @@ -7080,20 +5690,6 @@ } } } - .toggle-error { - @layer daisyui.l1.l2 { - &:checked, &[aria-checked="true"] { - --input-color: var(--color-error); - } - } - } - .toggle-info { - @layer daisyui.l1.l2 { - &:checked, &[aria-checked="true"] { - --input-color: var(--color-info); - } - } - } .toggle-lg { @layer daisyui.l1.l2 { &:is([type="checkbox"]), &:has([type="checkbox"]) { @@ -7101,55 +5697,6 @@ } } } - .toggle-md { - @layer daisyui.l1.l2 { - &:is([type="checkbox"]), &:has([type="checkbox"]) { - --size: calc(var(--size-selector, 0.25rem) * 6); - } - } - } - .toggle-primary { - @layer daisyui.l1.l2 { - &:checked, &[aria-checked="true"] { - --input-color: var(--color-primary); - } - } - } - .toggle-secondary { - @layer daisyui.l1.l2 { - &:checked, &[aria-checked="true"] { - --input-color: var(--color-secondary); - } - } - } - .toggle-sm { - @layer daisyui.l1.l2 { - &:is([type="checkbox"]), &:has([type="checkbox"]) { - --size: calc(var(--size-selector, 0.25rem) * 5); - } - } - } - .toggle-success { - @layer daisyui.l1.l2 { - &:checked, &[aria-checked="true"] { - --input-color: var(--color-success); - } - } - } - .toggle-warning { - @layer daisyui.l1.l2 { - &:checked, &[aria-checked="true"] { - --input-color: var(--color-warning); - } - } - } - .toggle-xs { - @layer daisyui.l1.l2 { - &:is([type="checkbox"]), &:has([type="checkbox"]) { - --size: calc(var(--size-selector, 0.25rem) * 4); - } - } - } .group-hover\:translate-x-1 { &:is(:where(.group):hover *) { @media (hover: hover) { @@ -7177,26 +5724,6 @@ } } } - .hover\:scale-105 { - &:hover { - @media (hover: 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 { - @media (hover: hover) { - --tw-scale-x: 110%; - --tw-scale-y: 110%; - --tw-scale-z: 110%; - scale: var(--tw-scale-x) var(--tw-scale-y); - } - } - } .hover\:scale-125 { &:hover { @media (hover: hover) { @@ -7271,16 +5798,6 @@ } } } - .hover\:bg-white\/30 { - &:hover { - @media (hover: hover) { - background-color: color-mix(in srgb, #fff 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 30%, transparent); - } - } - } - } .hover\:text-base-content { &:hover { @media (hover: hover) { @@ -7320,26 +5837,11 @@ width: calc(var(--spacing) * 64); } } - .md\:w-auto { - @media (width >= 48rem) { - width: auto; - } - } .md\:grid-cols-2 { @media (width >= 48rem) { grid-template-columns: repeat(2, minmax(0, 1fr)); } } - .md\:grid-cols-3 { - @media (width >= 48rem) { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - } - .md\:grid-cols-4 { - @media (width >= 48rem) { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - } .md\:text-3xl { @media (width >= 48rem) { font-size: var(--text-3xl); @@ -7357,21 +5859,6 @@ grid-column: span 2 / span 2; } } - .lg\:block { - @media (width >= 64rem) { - display: block; - } - } - .lg\:flex { - @media (width >= 64rem) { - display: flex; - } - } - .lg\:hidden { - @media (width >= 64rem) { - display: none; - } - } .lg\:grid-cols-3 { @media (width >= 64rem) { grid-template-columns: repeat(3, minmax(0, 1fr)); @@ -7382,30 +5869,34 @@ grid-template-columns: repeat(4, minmax(0, 1fr)); } } - .\[\&_br\]\:block { - & br { - display: block; + .\[\&_\.resizable-img-container\]\:hover\:border-primary { + & .resizable-img-container { + &:hover { + @media (hover: hover) { + border-color: var(--color-primary); + } + } } } - .\[\&_br\]\:h-\[1em\] { - & br { - height: 1em; + .\[\&_blockquote\]\:border-l-4 { + & blockquote { + border-left-style: var(--tw-border-style); + border-left-width: 4px; } } - .\[\&_br\]\:content-\[\'\'\] { - & br { - --tw-content: ''; - content: var(--tw-content); + .\[\&_blockquote\]\:border-base-300 { + & blockquote { + border-color: var(--color-base-300); } } - .\[\&_div\]\:m-0 { - & div { - margin: calc(var(--spacing) * 0); + .\[\&_blockquote\]\:pl-4 { + & blockquote { + padding-left: calc(var(--spacing) * 4); } } - .\[\&_li\]\:list-item { - & li { - display: list-item; + .\[\&_blockquote\]\:italic { + & blockquote { + font-style: italic; } } .\[\&_ol\]\:list-decimal { @@ -7413,14 +5904,9 @@ list-style-type: decimal; } } - .\[\&_ol\]\:pl-6 { + .\[\&_ol\]\:pl-8 { & ol { - padding-left: calc(var(--spacing) * 6); - } - } - .\[\&_p\]\:m-0 { - & p { - margin: calc(var(--spacing) * 0); + padding-left: calc(var(--spacing) * 8); } } .\[\&_ul\]\:list-disc { @@ -7428,9 +5914,24 @@ list-style-type: disc; } } - .\[\&_ul\]\:pl-6 { + .\[\&_ul\]\:pl-8 { & ul { - padding-left: calc(var(--spacing) * 6); + padding-left: calc(var(--spacing) * 8); + } + } + .\[\&\>div\]\:m-0 { + &>div { + margin: calc(var(--spacing) * 0); + } + } + .\[\&\>div\]\:min-h-\[1em\] { + &>div { + min-height: 1em; + } + } + .\[\&\>p\]\:m-0 { + &>p { + margin: calc(var(--spacing) * 0); } } } @@ -7903,26 +6404,6 @@ 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-space-y-reverse { syntax: "*"; inherits: false; @@ -8128,11 +6609,6 @@ --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-space-y-reverse: 0; --tw-border-style: solid; --tw-gradient-position: initial; diff --git a/dist/sigpro-ui.esm.js b/dist/sigpro-ui.esm.js index 00a726e..1d4bf17 100644 --- a/dist/sigpro-ui.esm.js +++ b/dist/sigpro-ui.esm.js @@ -16,12 +16,14 @@ var __export = (target, all) => { // components/All.js var exports_All = {}; __export(exports_All, { + rand: () => rand, listKey: () => listKey, isFn: () => isFn, getBy: () => getBy, get: () => get, filterBy: () => filterBy, cls: () => cls, + close: () => close, Tooltip: () => Tooltip, Toggle: () => Toggle, Toast: () => Toast, @@ -46,6 +48,7 @@ __export(exports_All, { Modal: () => Modal, Menu: () => Menu, Loading: () => Loading, + List: () => List, Kbd: () => Kbd, Input: () => Input, Indicator: () => Indicator, @@ -66,9 +69,6 @@ __export(exports_All, { Chat: () => Chat, CarouselItem: () => CarouselItem, Carousel: () => Carousel, - CardTitle: () => CardTitle, - CardBody: () => CardBody, - CardActions: () => CardActions, Card: () => Card, Calendar: () => Calendar, Button: () => Button, @@ -436,7 +436,7 @@ var K = (e, o, n) => { return R(() => (y(e) ? e() : e) || [], (t) => { let r = new Map, l = [], u = t || []; for (let f = 0;f < u.length; f++) { - let h = u[f], d = n ? n(h, f) : h?.id ?? f, m = c.get(d); + let h = u[f], d = n ? h?.[n] ?? f : h?.id ?? f, m = c.get(d); if (!m) m = j(() => o(h, f)); else @@ -515,14 +515,9 @@ var get = (val) => typeof val === "function" ? val() : val; var getBy = (item, field = "label") => item && typeof item === "object" ? item[field] : item; var cls = (...classes) => classes.filter(Boolean).join(" ").trim(); var isFn = (f) => typeof f === "function"; -var filterBy = (items, query, field = "label") => { - const searchTerm = String(query).toLowerCase(); - const list = get(items); - return !searchTerm ? list : list.filter((item) => { - const text = item && typeof item === "object" ? item[field] : item; - return String(text).toLowerCase().includes(searchTerm); - }); -}; +var filterBy = (items, query, field = "label", q2 = String(query).toLowerCase()) => !query ? get(items) : get(items).filter((item) => String(item && typeof item === "object" ? item[field] : item).toLowerCase().includes(q2)); +var rand = (r) => `${r}-${Math.random().toString(36).slice(2, 9)}`; +var close = () => document.activeElement?.blur(); var listKey = (items, isOpen) => { const cursor = S(-1); R(() => { @@ -538,202 +533,17 @@ var listKey = (items, isOpen) => { }; return { cursor, onKey }; }; -var Alert = (p2, c) => O("div", { ...p2, class: cls("alert", p2.class) }, c); -var Badge = (p2, c) => O("span", { ...p2, class: cls("badge", p2.class) }, c); -var Button = (p2, c) => O("button", { ...p2, class: cls("btn", p2.class) }, c); -var Card = (p2, c) => O("div", { ...p2, class: cls("card", p2.class) }, c); -var CardTitle = (p2, c) => O("div", { ...p2, class: cls("card-title", p2.class) }, c); -var CardBody = (p2, c) => O("div", { ...p2, class: cls("card-body", p2.class) }, c); -var CardActions = (p2, c) => O("div", { ...p2, class: cls("card-actions", p2.class) }, c); -var Carousel = (p2, c) => O("div", { ...p2, class: cls("carousel", p2.class) }, c); -var CarouselItem = (p2, c) => O("div", { ...p2, class: cls("carousel-item", p2.class) }, c); -var Chat = (p2, c) => O("div", { ...p2, class: cls("chat", p2.class) }, c); -var ChatBubble = (p2, c) => O("div", { ...p2, class: cls("chat-bubble", p2.class) }, c); -var ChatFooter = (p2, c) => O("div", { ...p2, class: cls("chat-footer", p2.class) }, c); -var ChatHeader = (p2, c) => O("div", { ...p2, class: cls("chat-header", p2.class) }, c); -var ChatImage = (p2, c) => O("div", { ...p2, class: cls("chat-image avatar", p2.class) }, O("div", { class: "w-10 rounded-full" }, typeof c === "string" ? O("img", { src: c, alt: "avatar" }) : c)); -var Checkbox = (p2) => O("input", { ...p2, type: "checkbox", class: cls("checkbox", p2.class) }); -var Divider = (p2) => O("div", { ...p2, class: cls("divider", p2.class) }); -var Fab = (p2, c) => O("div", { ...p2, class: cls("fab", p2.class) }, c); -var Fieldset = (p2, c) => O("fieldset", { ...p2, class: cls("fieldset", p2.class) }, [p2.legend && O("legend", { class: "fieldset-legend" }, p2.legend), c]); -var Icon = (p2) => O("span", { class: p2.startsWith("icon-") ? p2 : "" }, p2.startsWith("icon-") ? null : p2); -var Indicator = (p2, c) => O("div", { ...p2, class: cls("indicator", p2.class) }, [p2.value && O("span", { class: cls("indicator-item badge", p2.class) }, p2.value), c]); -var Kbd = (p2, c) => O("kbd", { ...p2, class: cls("kbd", p2.class) }, c); -var Loading = (p2, c) => O("span", { ...p2, class: cls("loading loading-spinner", p2.class) }, c); -var Navbar = (p2, c) => O("div", { ...p2, class: cls("navbar", p2.class) }, c); -var Progress = (p2) => O("progress", { ...p2, class: cls("progress", p2.class) }); -var Radial = (p2, c) => O("div", { ...p2, class: cls("radial-progress", p2.class), style: `--value:${p2.value ?? 0};${p2.style ?? ""}`, role: "progressbar", "aria-valuenow": p2.value ?? 0 }, c ?? `${p2.value ?? 0}%`); -var Radio = (p2) => O("input", { ...p2, type: "radio", class: cls("radio", p2.class) }); -var Range = (p2) => O("input", { ...p2, type: "range", class: cls("range", p2.class) }); -var Skeleton = (p2) => O("div", { ...p2, class: cls("skeleton", p2.class) }); -var SkeletonText = (p2) => O("span", { ...p2, class: cls("skeleton skeleton-text", p2.class) }); -var Stack = (p2, c) => O("div", { ...p2, class: cls("stack", p2.class) }, c); -var Steps = (p2, c) => O("ul", { ...p2, class: cls("steps", p2.class) }, c); -var Step = (p2, c) => O("li", { ...p2, class: cls("step", p2.class), "data-content": p2.dataContent }, c); -var Swap = (p2) => O("label", { ...p2, class: cls("swap", p2.class) }, [ - O("input", { type: "checkbox", checked: () => get(p2.value), onchange: (e) => isFn(p2.value) && p2.value(e.target.checked) }), - O("div", { class: "swap-on" }, p2.on), - O("div", { class: "swap-off" }, p2.off) -]); -var Textarea = (p2) => O("textarea", { ...p2, class: cls("textarea", p2.class) }); -var TextRotate = (p2) => { - const words = Array.isArray(p2.words) ? p2.words : typeof p2.words === "string" ? p2.words.split(",") : []; - return O("span", { ...p2, class: cls("text-rotate", p2.class) }, O("span", {}, words.map((w2) => O("span", {}, w2)))); -}; -var Timeline = (p2, c) => O("ul", { - ...p2, - class: cls("timeline", p2.vertical !== false ? "timeline-vertical" : "timeline-horizontal", p2.compact ? "timeline-compact" : "", p2.class) -}, c); -var Toggle = (p2) => O("input", { ...p2, type: "checkbox", class: cls("toggle", p2.class) }); -var Tooltip = (p2, c) => O("div", { ...p2, class: cls("tooltip", p2.class), "data-tip": p2.tip }, c); var Accordion = (p2) => { - const name = p2.name || `acc-${Math.random().toString(36).slice(2)}`; - const base = cls("collapse", p2.variant && `collapse-${p2.variant}`, p2.class); - const itemFn = (it) => { - const t = getBy(it, "title"); - const c = it.content; - return p2.type === "details" ? O("details", { class: base, name, open: it.open || undefined }, O("summary", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null) : O("div", { class: base }, O("input", { type: "radio", name, checked: it.open || undefined }), O("div", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null); - }; - return isFn(p2.items) ? K(p2.items, itemFn, (it, i) => it?.id ?? i) : (p2.items || []).map(itemFn); -}; -var Table = (p2) => { - if (p2.children !== undefined) - return O("table", { class: cls("table", p2.class), ...p2 }, p2.children); - const { items, columns = [], header = true, keyFn, ...rest } = p2; - const hd = header !== false && columns.some((c) => c.label) ? O("thead", {}, O("tr", {}, columns.map((c) => O("th", { class: c.class }, c.label)))) : null; - const bd = O("tbody", {}, K(() => get(items) || [], (it, idx) => O("tr", {}, columns.map((c) => { - const v2 = c.render ? c.render(it, idx) : it[c.key]; - return O("td", { class: c.class }, v2); - })), keyFn || ((it, idx) => it?.id ?? idx))); - return O("table", { class: cls("table", rest.class), ...rest }, [hd, bd]); -}; -var Tabs = (p2) => { - if (p2.children !== undefined) - return O("div", { class: cls("tabs", p2.class), ...p2 }, p2.children); - const { items, activeIndex, onClose, ...rest } = p2; - const closeHandler = onClose || (isFn(items) ? (idx) => { - const arr = get(items); - const newArr = arr.filter((_2, i) => i !== idx); - items(newArr); - if (activeIndex() >= newArr.length) - activeIndex(Math.max(0, newArr.length - 1)); - } : null); - return O("div", { class: cls("tabs", p2.class), ...rest }, K(() => get(items) || [], (it, idx) => { - const act = () => activeIndex() === idx; - return [ - O("a", { - role: "tab", - class: () => `tab ${act() ? "tab-active" : ""} ${it.class || ""}`, - onclick: (e) => { - e.preventDefault(); - activeIndex(idx); - it.onclick?.(e); - } - }, getBy(it), it.closable ? O("span", { - class: "icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70", - onclick: (e) => { - e.stopPropagation(); - closeHandler?.(idx); - } - }) : null), - O("div", { - class: `tab-content ${it.contentClass || ""}`, - style: () => `display: ${act() ? "block" : "none"};` - }, isFn(it.content) ? it.content() : it.content) - ]; - }, (it, idx) => it.id ?? idx)); -}; -var Rating = (p2) => { - const name = `rating-${Math.random().toString(36).slice(2, 7)}`; - const stars = p2.children ?? Array.from({ length: p2.count || 5 }, (_2, i) => { - const v2 = i + 1; - return O("input", { - type: "radio", - name, - class: cls("mask", p2.mask || "mask-star"), - checked: () => get(p2.value) === v2, - onchange: () => isFn(p2.value) ? p2.value(v2) : p2.onchange?.(v2) - }); + const name = p2.name || rand("acc"); + return K(p2.items, (it) => { + return O("div", { class: cls("collapse", p2.class) }, [ + O("input", { type: "radio", name, checked: it.open || undefined }), + it.title ? O("div", { class: cls("collapse-title", `${it.classTitle ?? " font-semibold"}`) }, it.title) : null, + it.content ? O("div", { class: cls("collapse-content text-sm", `${it.classContent ?? " font-semibold"}`) }, it.content) : null + ]); }); - return O("div", { class: cls("rating", p2.class), ...p2 }, stars); -}; -var Menu = (p2) => { - if (p2.children !== undefined) - return O("ul", { class: cls("menu", p2.class), ...p2 }, p2.children); - const { items, keyFn = (it, idx) => it?.id ?? idx, ...rest } = p2; - const render = (item) => item.children ? O("li", {}, O("details", {}, O("summary", {}, getBy(item)), O("ul", {}, Menu({ items: item.children })))) : O("li", {}, O("a", { - href: item.href, - onclick: item.onclick ? (e) => { - if (!item.href) - e.preventDefault(); - item.onclick(e); - } : null - }, getBy(item))); - return O("ul", { class: cls("menu", rest.class), ...rest }, K(() => get(items) || [], render, keyFn)); -}; -var Drawer = (p2, c) => { - const id = p2.id || `drawer-${Math.random().toString(36).slice(2, 9)}`; - return O("div", { class: cls("drawer", p2.class) }, [ - O("input", { - id, - type: "checkbox", - class: "drawer-toggle", - checked: () => get(p2.open), - onchange: (e) => isFn(p2.open) && p2.open(e.target.checked) - }), - O("div", { class: "drawer-content" }, c), - O("div", { class: "drawer-side" }, [ - O("label", { - for: id, - class: "drawer-overlay", - onclick: () => isFn(p2.open) && p2.open(false) - }), - O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, () => get(p2.side)) - ]) - ]); -}; -var Dropdown = (p2, c) => { - const { trigger, items, ...rest } = p2; - const content = c || (items ? O("ul", { - class: "menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow" - }, K(() => get(items) || [], (item) => O("li", {}, O("a", { - onclick: (e) => { - item.onclick?.(e); - e.currentTarget.closest("details").open = false; - } - }, getBy(item))), (it, idx) => it.id ?? idx)) : null); - return O("details", { class: cls("dropdown", rest.class), ...rest }, [ - O("summary", { class: "btn m-1" }, trigger || "Dropdown"), - content - ]); -}; -var Select = (p2, c) => { - if (c !== undefined) - return O("select", { class: cls("select", p2.class), ...p2 }, c); - const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p2; - const opts = () => { - const raw = get(items) || []; - const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: "" }] : []; - return [...ph, ...raw]; - }; - return O("label", { class: float ? "floating-label" : "" }, [ - float && O("span", {}, label), - O("label", { class: cls("select", rest.class) }, [ - label && !float && O("span", { class: "label" }, label), - left ?? null, - O("select", { - value: () => get(value), - onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) - }, K(opts, (item) => { - const val = getBy(item, item.value !== undefined ? "value" : undefined); - const lab = getBy(item, "label"); - return O("option", { value: val, disabled: item.disabled || undefined }, lab); - }, (it, i) => it?.id ?? (typeof it === "string" ? it : it.value) ?? i)), - right ?? null - ]), - hint && O("div", { class: "validator-hint" }, hint) - ]); }; +var Alert = (p2, c) => O("div", { ...p2, class: cls("alert", p2.class) }, c); var Autocomplete = ({ items, value, onselect, placeholder = "Buscar...", ...props }) => { const query = S(get(value) || ""); const isOpen = S(false); @@ -780,42 +590,121 @@ var Autocomplete = ({ items, value, onselect, placeholder = "Buscar...", ...prop ]))) ]); }; -var Input = (p2) => { - const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p2; - const showPassword = S(false); - const isFocused = S(false); - const isPassword = p2.type === "password"; - const pattern = rule ?? null; - const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : p2.type || "text"; - return O("div", { - class: "input-container", - onfocusin: () => isFocused(true), - onfocusout: (e) => { - if (!e.currentTarget.contains(e.relatedTarget)) { - isFocused(false); +var Badge = (p2, c) => O("span", { ...p2, class: cls("badge", p2.class) }, c); +var Button = (p2, c) => O("button", { ...p2, class: cls("btn", p2.class) }, c); +var Calendar = (p2) => { + const internalDate = S(new Date); + const hoverDate = S(null); + const startHour = S(0); + const endHour = S(0); + const now = new Date; + const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`; + const fmt = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; + const rangeMode = () => get(p2.range) === true; + const current = () => get(p2.value); + const selectDate = (date) => { + const s = fmt(date); + const v2 = current(); + if (rangeMode()) { + if (!v2?.start || v2.start && v2.end) { + p2.onChange?.({ start: s, end: null, ...p2.hour && { startHour: startHour() } }); + } else { + const start = v2.start; + const nv = s < start ? { start: s, end: start } : { start, end: s }; + if (p2.hour) { + nv.startHour = v2.startHour ?? startHour(); + nv.endHour = endHour(); + } + p2.onChange?.(nv); } + } else { + p2.onChange?.(p2.hour ? `${s}T${String(startHour()).padStart(2, "0")}:00:00` : s); } - }, [ - O("label", { class: float ? "floating-label" : "" }, [ - float ? O("span", {}, label) : null, - O("label", { pattern, class: () => cls("input validator", p2.class) }, [ - label && !float ? O("span", { class: "label" }, label) : null, - left ?? null, - O("input", { ...rest, type: inputType, class: "grow", pattern, placeholder: placeholder || label || " ", value }), - right ?? null, - isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ - O("input", { type: "checkbox", onchange: (e) => showPassword(e.target.checked) }), - O("span", { class: "swap-on icon-[lucide--eye]" }), - O("span", { class: "swap-off icon-[lucide--eye-off]" }) - ]) : null - ]), - hint ? O("div", { class: "validator-hint" }, hint) : null, - z(isFocused, () => G({ duration: 300, slide: true }, O("div", { class: "input-content", onmousedown: (e) => e.preventDefault() }, [ - isFn(content) ? content(isFocused) : content - ]))) + }; + const move = (m) => { + const d = internalDate(); + internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)); + }; + const moveYear = (y2) => { + const d = internalDate(); + internalDate(new Date(d.getFullYear() + y2, d.getMonth(), 1)); + }; + const HourSlider = ({ value: hVal, onChange: onH }) => O("div", { class: "flex-1" }, [ + O("div", { class: "flex gap-2 items-center" }, [ + O("input", { type: "range", min: 0, max: 23, value: hVal, class: "range range-xs flex-1", oninput: (e) => onH(+e.target.value) }), + O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(get(hVal)).padStart(2, "0") + ":00") ]) ]); + return O("div", { class: cls("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none", p2.class) }, [ + O("div", { class: "flex justify-between items-center mb-4 gap-1" }, [ + O("div", { class: "flex gap-0.5" }, [ + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(-1) }, O("span", { class: "icon-[lucide--chevrons-left]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(-1) }, O("span", { class: "icon-[lucide--chevron-left]" })) + ]), + O("span", { class: "font-bold uppercase flex-1 text-center" }, () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" })), + O("div", { class: "flex gap-0.5" }, [ + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(1) }, O("span", { class: "icon-[lucide--chevron-right]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(1) }, O("span", { class: "icon-[lucide--chevrons-right]" })) + ]) + ]), + O("div", { class: "grid grid-cols-7 gap-1", onmouseleave: () => hoverDate(null) }, [ + ...["L", "M", "X", "J", "V", "S", "D"].map((d) => O("div", { class: "text-[10px] opacity-40 font-bold text-center" }, d)), + () => { + const d = internalDate(), y2 = d.getFullYear(), m = d.getMonth(); + const firstDay = new Date(y2, m, 1).getDay(); + const offset = firstDay === 0 ? 6 : firstDay - 1; + const dim = new Date(y2, m + 1, 0).getDate(); + const cells = []; + for (let i = 0;i < offset; i++) + cells.push(O("div")); + for (let i = 1;i <= dim; i++) { + const date = new Date(y2, m, i), ds = fmt(date); + cells.push(O("button", { + type: "button", + class: () => { + const v2 = current(), h = hoverDate(); + const isStart = typeof v2 === "string" ? v2.split("T")[0] === ds : v2?.start === ds; + const isEnd = v2?.end === ds; + let inRange = false; + if (rangeMode() && v2?.start) { + const start = v2.start; + if (!v2.end && h) + inRange = ds > start && ds <= h || ds < start && ds >= h; + else if (v2.end) + inRange = ds > start && ds < v2.end; + } + const base = "btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative"; + const st = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; + const today = ds === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; + return cls(base, st, today); + }, + onmouseenter: () => rangeMode() && hoverDate(ds), + onclick: () => selectDate(date) + }, i.toString())); + } + return cells; + } + ]), + p2.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, rangeMode() ? O("div", { class: "flex gap-4" }, [HourSlider({ value: startHour, onChange: (h) => startHour(h) }), HourSlider({ value: endHour, onChange: (h) => endHour(h) })]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) })) : null + ]); }; +var Card = (p2, c) => { + if (!p2.title && !p2.body && !p2.actions && !c) + return O("div", { ...p2, class: cls("card", p2.class) }, c); + return O("div", { ...p2, class: cls("card", p2.class) }, [ + p2.title && O("div", { class: cls("card-title", p2.titleClass) }, p2.title), + (p2.body || c) && O("div", { class: cls("card-body", p2.bodyClass) }, p2.body || c), + p2.actions && O("div", { class: cls("card-actions", p2.actionsClass) }, p2.actions) + ].filter(Boolean)); +}; +var Carousel = (p2, c) => O("div", { ...p2, class: cls("carousel", p2.class) }, c); +var CarouselItem = (p2, c) => O("div", { ...p2, class: cls("carousel-item", p2.class) }, c); +var Chat = (p2, c) => O("div", { ...p2, class: cls("chat", p2.class) }, c); +var ChatBubble = (p2, c) => O("div", { ...p2, class: cls("chat-bubble", p2.class) }, c); +var ChatFooter = (p2, c) => O("div", { ...p2, class: cls("chat-footer", p2.class) }, c); +var ChatHeader = (p2, c) => O("div", { ...p2, class: cls("chat-header", p2.class) }, c); +var ChatImage = (p2, c) => O("div", { ...p2, class: cls("chat-image avatar", p2.class) }, O("div", { class: "w-10 rounded-full" }, typeof c === "string" ? O("img", { src: c, alt: "avatar" }) : c)); +var Checkbox = (p2) => O("input", { ...p2, type: "checkbox", class: cls("checkbox", p2.class) }); var Colorpicker = (p2) => { const isOpen = S(false); const current = () => get(p2.value) || "#000000"; @@ -918,102 +807,6 @@ var Colorpicker = (p2) => { ]) ]); }; -var Calendar = (p2) => { - const internalDate = S(new Date); - const hoverDate = S(null); - const startHour = S(0); - const endHour = S(0); - const now = new Date; - const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`; - const fmt = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; - const rangeMode = () => get(p2.range) === true; - const current = () => get(p2.value); - const selectDate = (date) => { - const s = fmt(date); - const v2 = current(); - if (rangeMode()) { - if (!v2?.start || v2.start && v2.end) { - p2.onChange?.({ start: s, end: null, ...p2.hour && { startHour: startHour() } }); - } else { - const start = v2.start; - const nv = s < start ? { start: s, end: start } : { start, end: s }; - if (p2.hour) { - nv.startHour = v2.startHour ?? startHour(); - nv.endHour = endHour(); - } - p2.onChange?.(nv); - } - } else { - p2.onChange?.(p2.hour ? `${s}T${String(startHour()).padStart(2, "0")}:00:00` : s); - } - }; - const move = (m) => { - const d = internalDate(); - internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)); - }; - const moveYear = (y2) => { - const d = internalDate(); - internalDate(new Date(d.getFullYear() + y2, d.getMonth(), 1)); - }; - const HourSlider = ({ value: hVal, onChange: onH }) => O("div", { class: "flex-1" }, [ - O("div", { class: "flex gap-2 items-center" }, [ - O("input", { type: "range", min: 0, max: 23, value: hVal, class: "range range-xs flex-1", oninput: (e) => onH(+e.target.value) }), - O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(get(hVal)).padStart(2, "0") + ":00") - ]) - ]); - return O("div", { class: cls("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none", p2.class) }, [ - O("div", { class: "flex justify-between items-center mb-4 gap-1" }, [ - O("div", { class: "flex gap-0.5" }, [ - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(-1) }, O("span", { class: "icon-[lucide--chevrons-left]" })), - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(-1) }, O("span", { class: "icon-[lucide--chevron-left]" })) - ]), - O("span", { class: "font-bold uppercase flex-1 text-center" }, () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" })), - O("div", { class: "flex gap-0.5" }, [ - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(1) }, O("span", { class: "icon-[lucide--chevron-right]" })), - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(1) }, O("span", { class: "icon-[lucide--chevrons-right]" })) - ]) - ]), - O("div", { class: "grid grid-cols-7 gap-1", onmouseleave: () => hoverDate(null) }, [ - ...["L", "M", "X", "J", "V", "S", "D"].map((d) => O("div", { class: "text-[10px] opacity-40 font-bold text-center" }, d)), - () => { - const d = internalDate(), y2 = d.getFullYear(), m = d.getMonth(); - const firstDay = new Date(y2, m, 1).getDay(); - const offset = firstDay === 0 ? 6 : firstDay - 1; - const dim = new Date(y2, m + 1, 0).getDate(); - const cells = []; - for (let i = 0;i < offset; i++) - cells.push(O("div")); - for (let i = 1;i <= dim; i++) { - const date = new Date(y2, m, i), ds = fmt(date); - cells.push(O("button", { - type: "button", - class: () => { - const v2 = current(), h = hoverDate(); - const isStart = typeof v2 === "string" ? v2.split("T")[0] === ds : v2?.start === ds; - const isEnd = v2?.end === ds; - let inRange = false; - if (rangeMode() && v2?.start) { - const start = v2.start; - if (!v2.end && h) - inRange = ds > start && ds <= h || ds < start && ds >= h; - else if (v2.end) - inRange = ds > start && ds < v2.end; - } - const base = "btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative"; - const st = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; - const today = ds === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; - return cls(base, st, today); - }, - onmouseenter: () => rangeMode() && hoverDate(ds), - onclick: () => selectDate(date) - }, i.toString())); - } - return cells; - } - ]), - p2.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, rangeMode() ? O("div", { class: "flex gap-4" }, [HourSlider({ value: startHour, onChange: (h) => startHour(h) }), HourSlider({ value: endHour, onChange: (h) => endHour(h) })]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) })) : null - ]); -}; var Datepicker = (p2) => { const isOpen = S(false); const displayValue = S(""); @@ -1064,6 +857,23 @@ var Datepicker = (p2) => { ]) ]); }; +var Drawer = (p2, c) => { + const id = p2.id || rand("drawer"); + return O("div", { class: cls("drawer", p2.class) }, [ + O("input", { id, type: "checkbox", class: "drawer-toggle", checked: () => get(p2.open), onchange: (e) => isFn(p2.open) && p2.open(e.target.checked) }), + O("div", { class: "drawer-side" }, [O("label", { for: id, class: "drawer-overlay", onclick: () => isFn(p2.open) && p2.open(false) }), O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, () => get(p2.side))]), + O("div", { class: "drawer-content" }, c) + ]); +}; +var Divider = (p2) => O("div", { ...p2, class: cls("divider", p2.class) }); +var Dropdown = (p2, c) => { + return O("div", { ...p2, class: cls("dropdown", p2.class) }, [ + O("div", { tabindex: "0", role: "button", class: cls("btn", p2.buttonClass) }, p2.label), + O("div", { tabindex: "-1", class: "dropdown-content" }, c) + ]); +}; +var Fab = (p2, c) => O("div", { class: "fab" }, [O("div", { tabindex: "0", role: "button", class: cls("btn", p2.class) }, Icon(p2.icon)), c]); +var Fieldset = (p2, c) => O("fieldset", { class: cls("fieldset", p2.class) }, [O("legend", { class: "fieldset-legend" }, p2.label), c]); var Fileinput = (p2) => { const files = S([]); const drag = S(false); @@ -1133,9 +943,217 @@ var Fileinput = (p2) => { remove(idx); } }, O("span", { class: "icon-[lucide--x]" })) - ]), (file) => file.name + file.lastModified))) + ])))) ]); }; +var Icon = (p2) => O("span", { class: p2.startsWith("icon-") ? p2 : "" }, p2.startsWith("icon-") ? null : p2); +var Indicator = (p2, c) => O("div", { ...p2, class: cls("indicator", p2.class) }, [p2.value && O("span", { class: cls("indicator-item badge", p2.class) }, p2.value), c]); +var Input = (p2) => { + const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p2; + const showPassword = S(false); + const isFocused = S(false); + const isPassword = p2.type === "password"; + const pattern = rule ?? null; + const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : p2.type || "text"; + return O("div", { + class: "input-container", + onfocusin: () => isFocused(true), + onfocusout: (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) { + isFocused(false); + } + } + }, [ + O("label", { class: float ? "floating-label" : "" }, [ + float ? O("span", {}, label) : null, + O("label", { pattern, class: () => cls("input validator", p2.class) }, [ + label && !float ? O("span", { class: "label" }, label) : null, + left ?? null, + O("input", { ...rest, type: inputType, class: "grow", pattern, placeholder: placeholder || label || " ", value }), + right ?? null, + isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ + O("input", { type: "checkbox", onchange: (e) => showPassword(e.target.checked) }), + O("span", { class: "swap-on icon-[lucide--eye]" }), + O("span", { class: "swap-off icon-[lucide--eye-off]" }) + ]) : null + ]), + hint ? O("div", { class: "validator-hint" }, hint) : null, + z(isFocused, () => G({ duration: 300, slide: true }, O("div", { class: "input-content", onmousedown: (e) => e.preventDefault() }, [ + isFn(content) ? content(isFocused) : content + ]))) + ]) + ]); +}; +var Kbd = (p2, c) => O("kbd", { ...p2, class: cls("kbd", p2.class) }, c); +var List = (p2, c) => { + if (!p2.items) + return O("ul", { ...p2, class: cls("list", p2.class) }, c); + return O("ul", { ...p2, class: cls("list", p2.class) }, [ + K(p2.items, (item, i) => O("li", { class: cls("list-row", item.class) }, typeof p2.render === "function" ? p2.render(item, i) : item), p2.key) + ]); +}; +var Loading = (p2, c) => O("span", { ...p2, class: cls("loading loading-spinner", p2.class) }, c); +var Menu = (p2) => { + if (p2.children !== undefined) + return O("ul", { class: cls("menu", p2.class), ...p2 }, p2.children); + const { items } = p2; + const render = (item) => item.children ? O("li", {}, O("details", { open: item.open || undefined }, [ + O("summary", {}, getBy(item)), + O("ul", {}, K(() => get(item.children) || [], render)) + ])) : O("li", {}, O("a", { + href: item.href, + onclick: item.onclick ? (e) => { + if (!item.href) + e.preventDefault(); + item.onclick(e); + } : null + }, getBy(item))); + return O("ul", { class: cls("menu", p2.class) }, K(() => get(items) || [], render)); +}; +var Modal = (p2) => { + let dialogRef = null; + R(() => { + const isOpen = get(p2.open); + if (!dialogRef) + return; + isOpen ? dialogRef.showModal() : dialogRef.close(); + }); + const close2 = () => isFn(p2.open) && p2.open(false); + return O("dialog", { + ...p2, + ref: (el) => dialogRef = el, + class: cls("modal", p2.class), + onclose: close2, + oncancel: close2 + }, [ + O("div", { class: "modal-box" }, [ + p2.title && O("h3", { class: "text-lg font-bold" }, p2.title), + p2.children, + O("div", { class: "modal-action" }, [ + p2.actions || Button({ class: "btn", onclick: close2 }, "Cerrar") + ]) + ]), + O("form", { method: "dialog", class: "modal-backdrop" }, [ + O("button", {}, "close") + ]) + ]); +}; +var Navbar = (p2, c) => O("div", { ...p2, class: cls("navbar", p2.class) }, c); +var Progress = (p2) => O("progress", { ...p2, class: cls("progress", p2.class) }); +var Radial = (p2, c) => O("div", { ...p2, class: cls("radial-progress", p2.class), style: `--value:${p2.value ?? 0};${p2.style ?? ""}`, role: "progressbar", "aria-valuenow": p2.value ?? 0 }, c ?? `${p2.value ?? 0}%`); +var Radio = (p2) => O("input", { ...p2, type: "radio", class: cls("radio", p2.class) }); +var Range = (p2) => O("input", { ...p2, type: "range", class: cls("range", p2.class) }); +var Rating = (p2) => { + const name = rand("rating"); + const stars = p2.children ?? Array.from({ length: p2.count || 5 }, (_2, i) => { + const v2 = i + 1; + return O("input", { + type: "radio", + name, + class: cls("mask", p2.mask || "mask-star"), + checked: () => get(p2.value) === v2, + onchange: () => isFn(p2.value) ? p2.value(v2) : p2.onchange?.(v2) + }); + }); + return O("div", { class: cls("rating", p2.class), ...p2 }, stars); +}; +var Select = (p2, c) => { + if (c !== undefined) + return O("select", { class: cls("select", p2.class), ...p2 }, c); + const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p2; + const opts = () => { + const raw = get(items) || []; + const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: "" }] : []; + return [...ph, ...raw]; + }; + return O("label", { class: float ? "floating-label" : "" }, [ + float ? O("span", {}, label) : null, + O("label", { class: cls("select", rest.class) }, [ + !float && label ? O("span", { class: "label" }, label) : null, + left ?? null, + O("select", { + value: () => get(value), + onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) + }, K(opts, (item) => { + const val = getBy(item, item.value !== undefined ? "value" : undefined); + const lab = getBy(item, "label"); + return O("option", { value: val, disabled: item.disabled || undefined }, lab); + })), + right ?? null + ]), + hint ? O("div", { class: "validator-hint" }, hint) : null + ]); +}; +var Skeleton = (p2) => O("div", { ...p2, class: cls("skeleton", p2.class) }); +var SkeletonText = (p2) => O("span", { ...p2, class: cls("skeleton skeleton-text", p2.class) }); +var Stack = (p2, c) => O("div", { ...p2, class: cls("stack", p2.class) }, c); +var Steps = (p2, c) => O("ul", { ...p2, class: cls("steps", p2.class) }, c); +var Step = (p2, c) => O("li", { ...p2, class: cls("step", p2.class), "data-content": p2.dataContent }, c); +var Swap = (p2) => O("label", { ...p2, class: cls("swap", p2.class) }, [ + O("input", { type: "checkbox", checked: () => get(p2.value), onchange: (e) => isFn(p2.value) && p2.value(e.target.checked) }), + O("div", { class: "swap-on" }, p2.on), + O("div", { class: "swap-off" }, p2.off) +]); +var Table = (p2) => { + if (p2.children !== undefined) + return O("table", { class: cls("table", p2.class), ...p2 }, p2.children); + const { items, columns = [], header = true, keyFn, ...rest } = p2; + const hd = header !== false && columns.some((c) => c.label) ? O("thead", {}, O("tr", {}, columns.map((c) => O("th", { class: c.class }, c.label)))) : null; + const bd = O("tbody", {}, K(() => get(items) || [], (it, idx) => O("tr", {}, columns.map((c) => { + const v2 = c.render ? c.render(it, idx) : it[c.key]; + return O("td", { class: c.class }, v2); + })))); + return O("table", { class: cls("table", rest.class), ...rest }, [hd, bd]); +}; +var Tabs = (p2, c) => { + if (!p2.items) { + const { class: className2, ...rest2 } = p2; + return O("div", { ...rest2, class: cls("tabs", className2) }, c); + } + const { items, activeIndex, onClose, class: className, ...rest } = p2; + const get2 = (x2) => isFn(x2) ? x2() : x2; + const closeH = onClose || (isFn(items) ? (idx, item) => { + const arr = get2(items); + const newArr = arr.filter((_2, i) => i !== idx); + items(newArr); + if (activeIndex() >= newArr.length) + activeIndex(Math.max(0, newArr.length - 1)); + } : null); + return O("div", { ...rest, class: cls("tabs", className) }, () => { + const list = get2(items) || []; + return list.flatMap((it, idx) => { + const isActive = () => activeIndex() === idx; + const button = O("button", { + class: () => `tab ${isActive() ? "tab-active" : ""} ${it.class || ""}`, + onclick: (e) => { + e.preventDefault(); + activeIndex(idx); + it.onclick?.(e); + } + }, [ + getBy(it), + it.closable ? O("span", { + class: "ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-base-300 text-base-content/60 hover:text-base-content cursor-pointer", + onclick: (e) => { + e.stopPropagation(); + closeH?.(idx, it); + } + }, O("span", { class: "icon-[lucide--x] w-3 h-3" })) : null + ]); + const contentDiv = O("div", { + class: "tab-content bg-base-100 border-base-300 p-6", + style: () => `display: ${isActive() ? "block" : "none"};` + }, isFn(it.content) ? it.content() : it.content); + return [button, contentDiv]; + }); + }); +}; +var Textarea = (p2) => O("textarea", { ...p2, class: cls("textarea", p2.class) }); +var TextRotate = (p2) => { + const words = Array.isArray(p2.words) ? p2.words : typeof p2.words === "string" ? p2.words.split(",") : []; + return O("span", { ...p2, class: cls("text-rotate", p2.class) }, O("span", {}, words.map((w2) => O("span", {}, w2)))); +}; +var Timeline = (p2, c) => O("ul", { ...p2, class: cls("timeline", p2.class) }, c); var Toast = (message, type = "alert-success", duration = 3500) => { let container = document.getElementById("sigpro-toast-container"); if (!container) { @@ -1188,34 +1206,8 @@ var Toast = (message, type = "alert-success", duration = 3500) => { timer = setTimeout(closeFn, duration); return closeFn; }; -var Modal = (p2) => { - let dialogRef = null; - R(() => { - const isOpen = get(p2.open); - if (!dialogRef) - return; - isOpen ? dialogRef.showModal() : dialogRef.close(); - }); - const close = () => isFn(p2.open) && p2.open(false); - return O("dialog", { - ...p2, - ref: (el) => dialogRef = el, - class: cls("modal", p2.class), - onclose: close, - oncancel: close - }, [ - O("div", { class: "modal-box" }, [ - p2.title && O("h3", { class: "text-lg font-bold" }, p2.title), - p2.children, - O("div", { class: "modal-action" }, [ - p2.actions || Button({ class: "btn", onclick: close }, "Cerrar") - ]) - ]), - O("form", { method: "dialog", class: "modal-backdrop" }, [ - O("button", {}, "close") - ]) - ]); -}; +var Toggle = (p2) => O("input", { ...p2, type: "checkbox", class: cls("toggle", p2.class) }); +var Tooltip = (p2, c) => O("div", { ...p2, class: cls("tooltip", p2.class), "data-tip": p2.tip }, c); // components/Editor.js var exports_Editor = {}; @@ -1225,8 +1217,30 @@ __export(exports_Editor, { var Editor = (p2) => { const { value, class: extraClass } = p2; let editorRef = null; + let savedRange = null; const isSource = S(false); const source = S(""); + const count = S(0); + const refreshTick = S(0); + const showEmojis = S(false); + const emojis = ["\uD83D\uDE00", "\uD83D\uDE0A", "\uD83D\uDE09", "\uD83E\uDDD0", "\uD83D\uDE2E", "\uD83E\uDD14", "\uD83D\uDE05", "\uD83D\uDE02", "\uD83D\uDE0D", "\uD83D\uDE18", "\uD83E\uDD70", "\uD83D\uDC4D", "\uD83D\uDC4E", "\uD83D\uDC4C", "\uD83E\uDD1D", "\uD83E\uDD1E", "\uD83D\uDC4B", "\uD83D\uDC4F", "\uD83D\uDE4C", "\uD83D\uDE4F", "\uD83D\uDCAA", "☝️", "\uD83D\uDC47", "\uD83D\uDC48", "\uD83D\uDC49", "\uD83D\uDD95", "✅", "⚠️", "\uD83D\uDE80", "\uD83D\uDCE2", "✉️", "❤️"]; + const saveSelection = () => { + const sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) + savedRange = sel.getRangeAt(0); + }; + const restoreSelection = () => { + if (savedRange) { + const sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(savedRange); + } + }; + const triggerRefresh = () => { + refreshTick(refreshTick() + 1); + if (editorRef) + count(editorRef.innerText.length); + }; const notify = () => { if (!editorRef) return; @@ -1235,23 +1249,50 @@ var Editor = (p2) => { value(html); else p2.onchange?.(html); + triggerRefresh(); }; const exec = (cmd, val = null) => { if (!editorRef) return; editorRef.focus(); + if (savedRange) + restoreSelection(); document.execCommand(cmd, false, val); + savedRange = null; notify(); }; + const openLightbox = (src) => { + const overlay = document.createElement("div"); + overlay.style = `position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;`; + const img = document.createElement("img"); + img.src = src; + img.style = `max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;`; + overlay.onclick = () => document.body.removeChild(overlay); + overlay.appendChild(img); + document.body.appendChild(overlay); + }; + const handleUpload = (file) => { + if (!file) + return; + const reader = new FileReader; + reader.onload = (re) => { + if (file.type.startsWith("image/")) { + const imgHtml = `
 `; + exec("insertHTML", imgHtml); + } else { + const linkHtml = `${file.name} `; + exec("insertHTML", linkHtml); + } + }; + reader.readAsDataURL(file); + }; const queryState = (cmd, val = null) => { - if (!editorRef) + refreshTick(); + if (!editorRef || isSource()) return false; try { if (cmd === "formatBlock") { - const sel = window.getSelection(); - if (!sel.rangeCount) - return false; - let node = sel.getRangeAt(0).commonAncestorContainer; + let node = window.getSelection().getRangeAt(0).commonAncestorContainer; while (node && node !== editorRef) { if (node.nodeType === 1 && node.tagName === val) return true; @@ -1264,92 +1305,152 @@ var Editor = (p2) => { return false; } }; - const toolbar = O("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200" }, [ - O("div", { class: "flex flex-wrap gap-1 flex-1" }, [ + const toolbar = O("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20" }, [ + O("div", { class: "flex flex-wrap gap-1 flex-1 items-center" }, [ + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("bold") ? "btn-active bg-primary/20" : ""}`, onclick: () => exec("bold") }, O("span", { class: "icon-[lucide--bold]" })), + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("italic") ? "btn-active bg-primary/20" : ""}`, onclick: () => exec("italic") }, O("span", { class: "icon-[lucide--italic]" })), + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("underline") ? "btn-active bg-primary/20" : ""}`, onclick: () => exec("underline") }, O("span", { class: "icon-[lucide--underline]" })), + O("input", { type: "color", class: "w-5 h-5 p-0 border-0 bg-transparent cursor-pointer", oninput: (e) => exec("foreColor", e.target.value) }), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), O("button", { type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("bold") ? "btn-active" : ""}`, - onclick: () => exec("bold") - }, O("span", { class: "icon-[lucide--bold]" })), + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyLeft") + }, O("span", { class: "icon-[lucide--align-left]" })), O("button", { type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("italic") ? "btn-active" : ""}`, - onclick: () => exec("italic") - }, O("span", { class: "icon-[lucide--italic]" })), + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyCenter") + }, O("span", { class: "icon-[lucide--align-center]" })), O("button", { type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("underline") ? "btn-active" : ""}`, - onclick: () => exec("underline") - }, O("span", { class: "icon-[lucide--underline]" })), - O("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("strikeThrough") ? "btn-active" : ""}`, - onclick: () => exec("strikeThrough") - }, O("span", { class: "icon-[lucide--strikethrough]" })), + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyRight") + }, O("span", { class: "icon-[lucide--align-right]" })), O("span", { class: "w-px h-5 bg-base-300 mx-1" }), O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertUnorderedList") }, O("span", { class: "icon-[lucide--list]" })), O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertOrderedList") }, O("span", { class: "icon-[lucide--list-ordered]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("outdent"), title: "Mover izquierda" }, O("span", { class: "icon-[lucide--indent-decrease]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("indent"), title: "Mover derecha (Tab)" }, O("span", { class: "icon-[lucide--indent-increase]" })), + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("formatBlock", "BLOCKQUOTE") ? "btn-active" : ""}`, onclick: () => exec("formatBlock", queryState("formatBlock", "BLOCKQUOTE") ? "P" : "BLOCKQUOTE") }, O("span", { class: "icon-[lucide--quote]" })), O("span", { class: "w-px h-5 bg-base-300 mx-1" }), - O("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("formatBlock", "BLOCKQUOTE") ? "btn-active" : ""}`, - onclick: () => exec("formatBlock", queryState("formatBlock", "BLOCKQUOTE") ? "P" : "BLOCKQUOTE") - }, O("span", { class: "icon-[lucide--quote]" })), - O("span", { class: "w-px h-5 bg-base-300 mx-1" }), - O("select", { class: "select select-xs w-16", onchange: (e) => exec("fontSize", e.target.value), value: "3" }, [ - O("option", { value: "1" }, "1"), - O("option", { value: "2" }, "2"), - O("option", { value: "3" }, "3"), - O("option", { value: "4" }, "4"), - O("option", { value: "5" }, "5"), - O("option", { value: "6" }, "6"), - O("option", { value: "7" }, "7") + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => { + const url = window.prompt("URL:"); + if (url) + exec("createLink", url); + } }, O("span", { class: "icon-[lucide--link]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => { + const input = document.createElement("input"); + input.type = "file"; + input.onchange = (e) => handleUpload(e.target.files[0]); + input.click(); + } }, O("span", { class: "icon-[lucide--paperclip]" })), + O("div", { class: "relative" }, [ + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: (e) => { + e.stopPropagation(); + saveSelection(); + showEmojis(!showEmojis()); + } }, O("span", { class: "icon-[lucide--smile]" })), + O("div", { class: "absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1", style: () => showEmojis() ? "display:flex" : "display:none" }, emojis.map((emo) => O("span", { class: "cursor-pointer hover:bg-base-200 p-1 rounded text-lg", onclick: (e) => { + e.stopPropagation(); + exec("insertText", emo); + showEmojis(false); + } }, emo))) ]), O("span", { class: "w-px h-5 bg-base-300 mx-1" }), - O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo") }, O("span", { class: "icon-[lucide--undo-2]" })), - O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo") }, O("span", { class: "icon-[lucide--redo-2]" })) + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("removeFormat") }, O("span", { class: "icon-[lucide--eraser]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo"), title: "Deshacer" }, O("span", { class: "icon-[lucide--undo-2]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo"), title: "Rehacer" }, O("span", { class: "icon-[lucide--redo-2]" })) ]), - O("div", { class: "flex" }, [ - O("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${isSource() ? "btn-active" : ""}`, - onclick: () => { - const wasSource = isSource(); - if (!wasSource) { - source(editorRef?.innerHTML || ""); - } else { - if (editorRef) { - editorRef.innerHTML = source(); - notify(); - } - } - isSource(!wasSource); - } - }, O("span", { class: "icon-[lucide--code-2]" })) - ]) + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${isSource() ? "btn-active" : ""}`, onclick: () => { + if (!isSource()) + source(editorRef?.innerHTML || ""); + else if (editorRef) { + editorRef.innerHTML = source(); + notify(); + } + isSource(!isSource()); + } }, O("span", { class: "icon-[lucide--code-2]" })) ]); - return O("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden", extraClass) }, [ + if (typeof document !== "undefined" && !document.getElementById("editor-styles")) { + const style = document.createElement("style"); + style.id = "editor-styles"; + style.textContent = ` + [contenteditable="true"] div, + [contenteditable="true"] p { + margin: 0; + padding: 0; + } + `; + document.head.appendChild(style); + } + return O("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col", extraClass) }, [ toolbar, - O("div", { class: "relative" }, [ + O("div", { class: "relative flex-1 flex flex-col", onclick: () => showEmojis(false) }, [ O("div", { ref: (el) => { if (!editorRef && el) { editorRef = el; el.innerHTML = get(value) || ""; + document.execCommand("defaultParagraphSeparator", false, "br"); + el.addEventListener("click", (e) => { + const container = e.target.closest(".resizable-img-container"); + if (container) { + const img = container.querySelector("img"); + if (img) + openLightbox(img.src); + } + }); } }, - style: () => `min-height:10rem;${isSource() ? "display:none" : ""}`, - class: "p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]", + style: () => `min-height:22rem;${isSource() ? "display:none" : ""}`, + class: "p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8", contenteditable: "true", oninput: notify, - onpaste: () => setTimeout(notify, 0) + onkeydown: (e) => { + if (e.key === "Tab") { + e.preventDefault(); + exec("indent"); + } + }, + onkeyup: () => { + triggerRefresh(); + saveSelection(); + }, + onclick: (e) => { + triggerRefresh(); + saveSelection(); + e.stopPropagation(); + }, + onmouseup: () => { + notify(); + saveSelection(); + }, + onpaste: (e) => { + e.preventDefault(); + const text = e.clipboardData.getData("text/plain"); + exec("insertText", text); + }, + ondragover: (e) => e.preventDefault(), + ondrop: (e) => { + e.preventDefault(); + handleUpload(e.dataTransfer.files[0]); + } }), O("textarea", { - class: "w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0", + class: "w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0", style: () => isSource() ? "" : "display:none", value: source, - oninput: (e) => source(e.target.value) + oninput: (e) => { + source(e.target.value); + if (editorRef) + editorRef.innerHTML = e.target.value; + p2.onchange?.(e.target.value); + } }) + ]), + O("div", { class: "px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic" }, [ + O("span", () => `${count()} caracteres`) ]) ]); }; diff --git a/dist/sigpro-ui.esm.min.js b/dist/sigpro-ui.esm.min.js index 6228c8e..d087323 100644 --- a/dist/sigpro-ui.esm.min.js +++ b/dist/sigpro-ui.esm.min.js @@ -1 +1,7 @@ -var Cn=Object.defineProperty;var Ln=(n)=>n;function Tn(n,r){this[n]=Ln.bind(null,r)}var en=(n,r)=>{for(var l in r)Cn(n,l,{get:r[l],enumerable:!0,configurable:!0,set:Tn.bind(r,l)})};var tn={};en(tn,{listKey:()=>cn,isFn:()=>S,getBy:()=>j,get:()=>N,filterBy:()=>bn,cls:()=>c,Tooltip:()=>yt,Toggle:()=>_t,Toast:()=>$t,Timeline:()=>ct,Textarea:()=>bt,TextRotate:()=>it,Tabs:()=>dt,Table:()=>Et,Swap:()=>ut,Steps:()=>at,Step:()=>ft,Stack:()=>st,SkeletonText:()=>lt,Skeleton:()=>et,Select:()=>kt,Rating:()=>gt,Range:()=>ot,Radio:()=>rt,Radial:()=>tt,Progress:()=>nt,Navbar:()=>pn,Modal:()=>At,Menu:()=>yn,Loading:()=>hn,Kbd:()=>Mn,Input:()=>wn,Indicator:()=>Fn,Icon:()=>vn,Fileinput:()=>Tt,Fieldset:()=>Dn,Fab:()=>Hn,Dropdown:()=>St,Drawer:()=>Nt,Divider:()=>On,Datepicker:()=>Lt,Colorpicker:()=>Ct,Checkbox:()=>Vn,ChatImage:()=>In,ChatHeader:()=>Yn,ChatFooter:()=>Zn,ChatBubble:()=>Xn,Chat:()=>Gn,CarouselItem:()=>Kn,Carousel:()=>Bn,CardTitle:()=>Un,CardBody:()=>qn,CardActions:()=>Qn,Card:()=>Rn,Calendar:()=>En,Button:()=>_n,Badge:()=>Pn,Autocomplete:()=>xt,Alert:()=>Jn,Accordion:()=>wt});var A=(n)=>typeof n==="function",h=(n)=>n&&typeof n==="object",q=Array.isArray,W=typeof document<"u"?document:null,ln=(n)=>n?._isRuntime?n.container:n instanceof Node?n:W.createTextNode(n==null?"":String(n)),k=null,L=null,G=!1,Z=0,Y=new Set,sn=new WeakMap,F=Symbol("iter"),M=new WeakMap,R=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let r=[n];while(r.length){let l=r.pop();if(l._cleanups)l._cleanups.forEach((s)=>s()),l._cleanups.clear();if(l._children)l._children.forEach((s)=>r.push(s)),l._children.clear();if(l._deps)l._deps.forEach((s)=>s.delete(l)),l._deps.clear()}},Q=(n)=>{if(L)(L._cleanups||=new Set).add(n)},$n=(n)=>{let r=k;k=null;try{return n()}finally{k=r}},X=(n,r=!1)=>{let l=()=>{if(l._disposed)return;if(l._deps)l._deps.forEach((e)=>e.delete(l));if(l._cleanups)l._cleanups.forEach((e)=>e()),l._cleanups.clear();let s=k,f=L;k=L=l;try{return l._result=n()}catch(e){console.error("[SigPro]",e)}finally{k=s,L=f}};if(l._deps=l._cleanups=l._children=null,l._disposed=!1,l._isComputed=r,l._depth=k?k._depth+1:0,l._mounts=[],l._parent=L,L)(L._children||=new Set).add(l);return l},fn=()=>{if(G)return;G=!0;let n=Array.from(Y).sort((r,l)=>r._depth-l._depth);Y.clear();for(let r of n)if(!r._disposed)r();G=!1},An=(n)=>{Z++;try{return n()}finally{if(Z--,Z===0&&Y.size>0&&!G)fn()}},$=(n,r=!1)=>{if(!r&&k&&!k._disposed)n.add(k),(k._deps||=new Set).add(n);else if(r&&n.size>0){let l=!1;for(let s of n){if(s===k||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)$(s._subs,!0)}else Y.add(s),l=!0}if(l&&!G&&Z===0)queueMicrotask(fn)}},d=(n,r=null)=>{let l=new Set;if(A(n)){let s,f=()=>{if(f._dirty){let e=k;k=f;try{let o=n();if(!Object.is(s,o))s=o,$(l,!0)}finally{k=e}f._dirty=!1}return $(l),s};if(f._isComputed=!0,f._subs=l,f._dirty=!0,f._deps=null,f._disposed=!1,f.stop=()=>{},L)Q(f.stop);return f}if(r)try{n=JSON.parse(localStorage.getItem(r))??n}catch(s){}return(...s)=>{if(s.length){let f=A(s[0])?s[0](n):s[0];if(!Object.is(n,f)){if(n=f,r)localStorage.setItem(r,JSON.stringify(n));$(l,!0)}}return $(l),n}},un=(n)=>{if(!h(n))return n;let r=sn.get(n);if(r)return r;let l=new Map,s=(e)=>{let o=l.get(e);if(!o)l.set(e,o=new Set);return o},f=new Proxy(n,{get(e,o,a){if(typeof o!=="symbol")$(s(o));return un(Reflect.get(e,o,a))},set(e,o,a,u){let i=Reflect.has(e,o),b=Reflect.get(e,o,u),_=Reflect.set(e,o,a,u);if(_&&!Object.is(b,a)){if($(s(o),!0),!i)$(s(F),!0)}return _},deleteProperty(e,o){let a=Reflect.deleteProperty(e,o);if(a)$(s(o),!0),$(s(F),!0);return a},ownKeys(e){return $(s(F)),Reflect.ownKeys(e)}});return sn.set(n,f),f},J=(n,r)=>{if(r===void 0){let s=X(n);return s(),()=>R(s)}let l=X(()=>{let s=Array.isArray(n)?n.map((f)=>f()):n();$n(()=>r(s))});return l(),()=>R(l)},p=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((r)=>r()),n._cleanups.clear();if(n._ownerEffect)R(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((r)=>p(r))},jn=/^\s*(javascript|data|vbscript):/i,Wn=(n)=>n==="src"||n==="href"||n.startsWith("on"),an=(n,r)=>{if(r==null||r===!1)return null;if(Wn(n)){let l=String(r);if(jn.test(l))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return r},t=(n,r={},l=[])=>{if(r instanceof Node||q(r)||!h(r))l=r,r={};if(A(n)){let o=X(()=>{let b=n(r,{children:l,emit:(_,...w)=>r[`on${_[0].toUpperCase()}${_.slice(1)}`]?.(...w)});return o._result=b,b});o();let a=o._result;if(a==null)return null;let u=a instanceof Node||q(a)&&a.every((b)=>b instanceof Node)?a:W.createTextNode(String(a)),i=(b)=>{if(h(b)&&!b._isRuntime)b._mounts=o._mounts||[],b._cleanups=o._cleanups||new Set,b._ownerEffect=o};return q(u)?u.forEach(i):i(u),u}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),f=s?W.createElementNS("http://www.w3.org/2000/svg",n):W.createElement(n);f._cleanups=new Set;for(let o in r){if(!r.hasOwnProperty(o))continue;let a=r[o];if(o==="ref"){A(a)?a(f):a.current=f;continue}if(s&&o.startsWith("xlink:")){a==null?f.removeAttributeNS("http://www.w3.org/1999/xlink",o.slice(6)):f.setAttributeNS("http://www.w3.org/1999/xlink",o.slice(6),a);continue}if(o.startsWith("on")){let u=o.slice(2).toLowerCase();f.addEventListener(u,a);let i=()=>f.removeEventListener(u,a);f._cleanups.add(i),Q(i)}else if(A(a)){let u=X(()=>{let i=an(o,a());if(o==="class")f.className=i||"";else if(i==null)f.removeAttribute(o);else if(o in f&&!s)f[o]=i;else f.setAttribute(o,i===!0?"":i)});if(u(),f._cleanups.add(()=>R(u)),Q(()=>R(u)),/^(INPUT|TEXTAREA|SELECT)$/.test(f.tagName)&&(o==="value"||o==="checked")){let i=o==="checked"?"change":"input";f.addEventListener(i,(b)=>a(b.target[o]))}}else{let u=an(o,a);if(u!=null)if(o in f&&!s)f[o]=u;else f.setAttribute(o,u===!0?"":u)}}let e=(o)=>{if(q(o))return o.forEach(e);if(A(o)){let a=W.createTextNode("");f.appendChild(a);let u=[],i=X(()=>{let b=o(),_=(q(b)?b:[b]).map(ln);u.forEach((E)=>{if(E._isRuntime)E.destroy();else p(E);if(E.parentNode)E.remove()});let w=a;for(let E=_.length-1;E>=0;E--){let y=_[E];if(y.parentNode!==w.parentNode)w.parentNode?.insertBefore(y,w);if(y._mounts)y._mounts.forEach((g)=>g());w=y}u=_});i(),f._cleanups.add(()=>R(i)),Q(()=>R(i))}else{let a=ln(o);if(f.appendChild(a),a._mounts)a._mounts.forEach((u)=>u())}};return e(l),f},I=(n)=>{let r=new Set,l=L,s=k,f=W.createElement("div");f.style.display="contents",f.setAttribute("role","presentation"),L={_cleanups:r},k=null;let e=(o)=>{if(!o)return;if(o._isRuntime)r.add(o.destroy),f.appendChild(o.container);else if(q(o))o.forEach(e);else f.appendChild(o instanceof Node?o:W.createTextNode(String(o==null?"":o)))};try{e(n({onCleanup:(o)=>r.add(o)}))}finally{L=l,k=s}return{_isRuntime:!0,container:f,destroy:()=>{r.forEach((o)=>o()),p(f),f.remove()}}},U=(n,r,l=null)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),e=null;return J(()=>!!(A(n)?n():n),(o)=>{if(e)e.destroy(),e=null;let a=o?r:l;if(a)e=I(()=>A(a)?a():a),f.insertBefore(e.container,s)}),Q(()=>e?.destroy()),f},V=({name:n,duration:r=200,scale:l,slide:s,rotate:f,blur:e},o)=>{let a=typeof o==="function"?o():o;if(!(a instanceof Node))return a;if(n)return a.style.animation=`${n}-in ${r}ms`,a;let u=l||s||f||e,i=[l?"scale(0.95)":"",s?"translateY(-10px)":"",f?"rotate(-2deg)":""].filter(Boolean).join(" ");if(a.style.transition=`all ${r}ms ease`,a.style.opacity="0",u)a.style.transform=i;if(e)a.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(a.style.opacity="1",u)a.style.transform="none";if(e)a.style.filter="none"}),a},m=(n,r,l)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),e=new Map;return J(()=>(A(n)?n():n)||[],(o)=>{let a=new Map,u=[],i=o||[];for(let _=0;_r(w,_));else e.delete(E);a.set(E,y),u.push(y)}e.forEach((_)=>_.destroy());let b=s;for(let _=u.length-1;_>=0;_--){let w=u[_].container;if(w.nextSibling!==b)f.insertBefore(w,b);b=w}e=a}),f},B=(n)=>{let r=()=>window.location.hash.slice(1)||"/",l=d(r()),s=()=>l(r());window.addEventListener("hashchange",s),Q(()=>window.removeEventListener("hashchange",s));let f=t("div",{class:"router-hook"}),e=null;return J([l],()=>{let o=l(),a=n.find((u)=>{let i=u.path.split("/").filter(Boolean),b=o.split("/").filter(Boolean);return i.length===b.length&&i.every((_,w)=>_[0]===":"||_===b[w])})||n.find((u)=>u.path==="*");if(a){e?.destroy();let u={};a.path.split("/").filter(Boolean).forEach((i,b)=>{if(i[0]===":")u[i.slice(1)]=o.split("/").filter(Boolean)[b]}),B.params(u),e=I(()=>A(a.component)?a.component(u):a.component),f.replaceChildren(e.container)}}),f};B.params=d({});B.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");B.back=()=>window.history.back();B.path=()=>window.location.hash.replace(/^#/,"")||"/";var mn=({url:n,method:r="GET",headers:l={}})=>{let s=d(!1),f=d(null),e=d(null),o=null,a=null;return{run:async(u=null)=>{o?.abort(),clearTimeout(a),o=new AbortController,a=setTimeout(()=>o.abort(),1e4),s(!0),f(null);try{let i=u instanceof FormData,b=await fetch(n,{method:r,headers:i?l:{"Content-Type":"application/json",...l},body:i?u:u?JSON.stringify(u):void 0,signal:o.signal}),_=await b.text(),w=_?JSON.parse(_):null;if(!b.ok)throw Error(w?.message||b.statusText);return e(w),w}catch(i){if(i.name!=="AbortError")f(i.message);throw i}finally{s(!1),clearTimeout(a),o=null,a=null}},abort:()=>o?.abort(),loading:s,error:f,data:e}},nn=(n,r)=>{let l=typeof r==="string"?W.querySelector(r):r;if(!l)return;if(M.has(l))M.get(l).destroy();let s=I(A(n)?n:()=>n);return l.replaceChildren(s.container),M.set(l,s),s},zn=Object.freeze({$:d,$$:un,watch:J,h:t,when:U,each:m,fx:V,router:B,req:mn,mount:nn,batch:An});if(typeof window<"u")Object.assign(window,zn),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(r,l)=>t(n,r,l)});var N=(n)=>typeof n==="function"?n():n,j=(n,r="label")=>n&&typeof n==="object"?n[r]:n,c=(...n)=>n.filter(Boolean).join(" ").trim(),S=(n)=>typeof n==="function",bn=(n,r,l="label")=>{let s=String(r).toLowerCase(),f=N(n);return!s?f:f.filter((e)=>{let o=e&&typeof e==="object"?e[l]:e;return String(o).toLowerCase().includes(s)})},cn=(n,r)=>{let l=d(-1);return J(()=>{if(!N(r))l(-1)}),{cursor:l,onKey:(f,e)=>{let o=N(n),a=l(),u=o.length;if(!u)return;let i=f.key;i==="ArrowDown"?(f.preventDefault(),r(!0),l(Math.min(a+1,u-1))):i==="ArrowUp"?(f.preventDefault(),l(Math.max(a-1,0))):i==="Enter"?a>=0&&(f.preventDefault(),e(o[a])):i==="Escape"&&r(!1)}}},Jn=(n,r)=>t("div",{...n,class:c("alert",n.class)},r),Pn=(n,r)=>t("span",{...n,class:c("badge",n.class)},r),_n=(n,r)=>t("button",{...n,class:c("btn",n.class)},r),Rn=(n,r)=>t("div",{...n,class:c("card",n.class)},r),Un=(n,r)=>t("div",{...n,class:c("card-title",n.class)},r),qn=(n,r)=>t("div",{...n,class:c("card-body",n.class)},r),Qn=(n,r)=>t("div",{...n,class:c("card-actions",n.class)},r),Bn=(n,r)=>t("div",{...n,class:c("carousel",n.class)},r),Kn=(n,r)=>t("div",{...n,class:c("carousel-item",n.class)},r),Gn=(n,r)=>t("div",{...n,class:c("chat",n.class)},r),Xn=(n,r)=>t("div",{...n,class:c("chat-bubble",n.class)},r),Zn=(n,r)=>t("div",{...n,class:c("chat-footer",n.class)},r),Yn=(n,r)=>t("div",{...n,class:c("chat-header",n.class)},r),In=(n,r)=>t("div",{...n,class:c("chat-image avatar",n.class)},t("div",{class:"w-10 rounded-full"},typeof r==="string"?t("img",{src:r,alt:"avatar"}):r)),Vn=(n)=>t("input",{...n,type:"checkbox",class:c("checkbox",n.class)}),On=(n)=>t("div",{...n,class:c("divider",n.class)}),Hn=(n,r)=>t("div",{...n,class:c("fab",n.class)},r),Dn=(n,r)=>t("fieldset",{...n,class:c("fieldset",n.class)},[n.legend&&t("legend",{class:"fieldset-legend"},n.legend),r]),vn=(n)=>t("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),Fn=(n,r)=>t("div",{...n,class:c("indicator",n.class)},[n.value&&t("span",{class:c("indicator-item badge",n.class)},n.value),r]),Mn=(n,r)=>t("kbd",{...n,class:c("kbd",n.class)},r),hn=(n,r)=>t("span",{...n,class:c("loading loading-spinner",n.class)},r),pn=(n,r)=>t("div",{...n,class:c("navbar",n.class)},r),nt=(n)=>t("progress",{...n,class:c("progress",n.class)}),tt=(n,r)=>t("div",{...n,class:c("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},r??`${n.value??0}%`),rt=(n)=>t("input",{...n,type:"radio",class:c("radio",n.class)}),ot=(n)=>t("input",{...n,type:"range",class:c("range",n.class)}),et=(n)=>t("div",{...n,class:c("skeleton",n.class)}),lt=(n)=>t("span",{...n,class:c("skeleton skeleton-text",n.class)}),st=(n,r)=>t("div",{...n,class:c("stack",n.class)},r),at=(n,r)=>t("ul",{...n,class:c("steps",n.class)},r),ft=(n,r)=>t("li",{...n,class:c("step",n.class),"data-content":n.dataContent},r),ut=(n)=>t("label",{...n,class:c("swap",n.class)},[t("input",{type:"checkbox",checked:()=>N(n.value),onchange:(r)=>S(n.value)&&n.value(r.target.checked)}),t("div",{class:"swap-on"},n.on),t("div",{class:"swap-off"},n.off)]),bt=(n)=>t("textarea",{...n,class:c("textarea",n.class)}),it=(n)=>{let r=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return t("span",{...n,class:c("text-rotate",n.class)},t("span",{},r.map((l)=>t("span",{},l))))},ct=(n,r)=>t("ul",{...n,class:c("timeline",n.vertical!==!1?"timeline-vertical":"timeline-horizontal",n.compact?"timeline-compact":"",n.class)},r),_t=(n)=>t("input",{...n,type:"checkbox",class:c("toggle",n.class)}),yt=(n,r)=>t("div",{...n,class:c("tooltip",n.class),"data-tip":n.tip},r),wt=(n)=>{let r=n.name||`acc-${Math.random().toString(36).slice(2)}`,l=c("collapse",n.variant&&`collapse-${n.variant}`,n.class),s=(f)=>{let e=j(f,"title"),o=f.content;return n.type==="details"?t("details",{class:l,name:r,open:f.open||void 0},t("summary",{class:"collapse-title font-semibold"},e),o?t("div",{class:"collapse-content text-sm"},o):null):t("div",{class:l},t("input",{type:"radio",name:r,checked:f.open||void 0}),t("div",{class:"collapse-title font-semibold"},e),o?t("div",{class:"collapse-content text-sm"},o):null)};return S(n.items)?m(n.items,s,(f,e)=>f?.id??e):(n.items||[]).map(s)},Et=(n)=>{if(n.children!==void 0)return t("table",{class:c("table",n.class),...n},n.children);let{items:r,columns:l=[],header:s=!0,keyFn:f,...e}=n,o=s!==!1&&l.some((u)=>u.label)?t("thead",{},t("tr",{},l.map((u)=>t("th",{class:u.class},u.label)))):null,a=t("tbody",{},m(()=>N(r)||[],(u,i)=>t("tr",{},l.map((b)=>{let _=b.render?b.render(u,i):u[b.key];return t("td",{class:b.class},_)})),f||((u,i)=>u?.id??i)));return t("table",{class:c("table",e.class),...e},[o,a])},dt=(n)=>{if(n.children!==void 0)return t("div",{class:c("tabs",n.class),...n},n.children);let{items:r,activeIndex:l,onClose:s,...f}=n,e=s||(S(r)?(o)=>{let u=N(r).filter((i,b)=>b!==o);if(r(u),l()>=u.length)l(Math.max(0,u.length-1))}:null);return t("div",{class:c("tabs",n.class),...f},m(()=>N(r)||[],(o,a)=>{let u=()=>l()===a;return[t("a",{role:"tab",class:()=>`tab ${u()?"tab-active":""} ${o.class||""}`,onclick:(i)=>{i.preventDefault(),l(a),o.onclick?.(i)}},j(o),o.closable?t("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(i)=>{i.stopPropagation(),e?.(a)}}):null),t("div",{class:`tab-content ${o.contentClass||""}`,style:()=>`display: ${u()?"block":"none"};`},S(o.content)?o.content():o.content)]},(o,a)=>o.id??a))},gt=(n)=>{let r=`rating-${Math.random().toString(36).slice(2,7)}`,l=n.children??Array.from({length:n.count||5},(s,f)=>{let e=f+1;return t("input",{type:"radio",name:r,class:c("mask",n.mask||"mask-star"),checked:()=>N(n.value)===e,onchange:()=>S(n.value)?n.value(e):n.onchange?.(e)})});return t("div",{class:c("rating",n.class),...n},l)},yn=(n)=>{if(n.children!==void 0)return t("ul",{class:c("menu",n.class),...n},n.children);let{items:r,keyFn:l=(e,o)=>e?.id??o,...s}=n,f=(e)=>e.children?t("li",{},t("details",{},t("summary",{},j(e)),t("ul",{},yn({items:e.children})))):t("li",{},t("a",{href:e.href,onclick:e.onclick?(o)=>{if(!e.href)o.preventDefault();e.onclick(o)}:null},j(e)));return t("ul",{class:c("menu",s.class),...s},m(()=>N(r)||[],f,l))},Nt=(n,r)=>{let l=n.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return t("div",{class:c("drawer",n.class)},[t("input",{id:l,type:"checkbox",class:"drawer-toggle",checked:()=>N(n.open),onchange:(s)=>S(n.open)&&n.open(s.target.checked)}),t("div",{class:"drawer-content"},r),t("div",{class:"drawer-side"},[t("label",{for:l,class:"drawer-overlay",onclick:()=>S(n.open)&&n.open(!1)}),t("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>N(n.side))])])},St=(n,r)=>{let{trigger:l,items:s,...f}=n,e=r||(s?t("ul",{class:"menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow"},m(()=>N(s)||[],(o)=>t("li",{},t("a",{onclick:(a)=>{o.onclick?.(a),a.currentTarget.closest("details").open=!1}},j(o))),(o,a)=>o.id??a)):null);return t("details",{class:c("dropdown",f.class),...f},[t("summary",{class:"btn m-1"},l||"Dropdown"),e])},kt=(n,r)=>{if(r!==void 0)return t("select",{class:c("select",n.class),...n},r);let{label:l,float:s,placeholder:f,placeholderDisabled:e=!0,value:o,left:a,right:u,hint:i,items:b,keyFn:_,...w}=n,E=()=>{let y=N(b)||[];return[...f?[{disabled:e,label:f,value:""}]:[],...y]};return t("label",{class:s?"floating-label":""},[s&&t("span",{},l),t("label",{class:c("select",w.class)},[l&&!s&&t("span",{class:"label"},l),a??null,t("select",{value:()=>N(o),onchange:(y)=>S(o)?o(y.target.value):w.onchange?.(y)},m(E,(y)=>{let g=j(y,y.value!==void 0?"value":void 0),x=j(y,"label");return t("option",{value:g,disabled:y.disabled||void 0},x)},(y,g)=>y?.id??(typeof y==="string"?y:y.value)??g)),u??null]),i&&t("div",{class:"validator-hint"},i)])},xt=({items:n,value:r,onselect:l,placeholder:s="Buscar...",...f})=>{let e=d(N(r)||""),o=d(!1),a=d(()=>bn(n,e())),{cursor:u,onKey:i}=cn(a,o),b=(_)=>{let w=j(_),E=typeof _==="string"?_:_.value;if(e(w),S(r))r(E);l?.(_),o(!1)};return t("div",{class:"relative w-full"},[wn({...f,type:"text",placeholder:s,value:e,left:t("span",{class:"icon-[lucide--search]"}),oninput:(_)=>{if(e(_.target.value),S(r))r(_.target.value);o(!0)},onfocus:()=>o(!0),onblur:()=>setTimeout(()=>o(!1),150),onkeydown:(_)=>i(_,b)}),U(o,()=>V({duration:200,slide:!0},t("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[m(a,(_,w)=>t("li",{},[t("a",{class:()=>u()===w?"active bg-primary text-primary-content":"",onmousedown:(E)=>E.preventDefault(),onclick:()=>b(_),onmouseenter:()=>u(w)},j(_))]),(_,w)=>j(_)+w),()=>a().length===0?t("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},wn=(n)=>{let{label:r,icon:l,float:s,placeholder:f,value:e,left:o,right:a,rule:u,hint:i,content:b,..._}=n,w=d(!1),E=d(!1),y=n.type==="password",g=u??null,x=()=>y?N(w)?"text":"password":n.type||"text";return t("div",{class:"input-container",onfocusin:()=>E(!0),onfocusout:(C)=>{if(!C.currentTarget.contains(C.relatedTarget))E(!1)}},[t("label",{class:s?"floating-label":""},[s?t("span",{},r):null,t("label",{pattern:g,class:()=>c("input validator",n.class)},[r&&!s?t("span",{class:"label"},r):null,o??null,t("input",{..._,type:x,class:"grow",pattern:g,placeholder:f||r||" ",value:e}),a??null,y?t("label",{class:"swap swap-rotate ml-2"},[t("input",{type:"checkbox",onchange:(C)=>w(C.target.checked)}),t("span",{class:"swap-on icon-[lucide--eye]"}),t("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),i?t("div",{class:"validator-hint"},i):null,U(E,()=>V({duration:300,slide:!0},t("div",{class:"input-content",onmousedown:(C)=>C.preventDefault()},[S(b)?b(E):b])))])])},Ct=(n)=>{let r=d(!1),l=()=>N(n.value)||"#000000",s=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],f=(e)=>{S(n.value)?n.value(e):n.onchange?.(e),r(!1)};return t("div",{class:c("relative w-fit",n.class)},[t("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(e)=>{e.stopPropagation(),r(!r())}},[t("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${l()}`}),n.label&&t("span",{class:"opacity-80"},n.label)]),U(r,()=>[t("div",{class:"fixed inset-0 z-[100]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},t("div",{class:"grid grid-cols-8 gap-1"},s.map((e)=>t("button",{type:"button",style:`background-color: ${e}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${l().toLowerCase()===e.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>f(e)}))))])])},En=(n)=>{let r=d(new Date),l=d(null),s=d(0),f=d(0),e=new Date,o=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,a=(y)=>`${y.getFullYear()}-${String(y.getMonth()+1).padStart(2,"0")}-${String(y.getDate()).padStart(2,"0")}`,u=()=>N(n.range)===!0,i=()=>N(n.value),b=(y)=>{let g=a(y),x=i();if(u())if(!x?.start||x.start&&x.end)n.onChange?.({start:g,end:null,...n.hour&&{startHour:s()}});else{let C=x.start,K=g{let g=r();r(new Date(g.getFullYear(),g.getMonth()+y,1))},w=(y)=>{let g=r();r(new Date(g.getFullYear()+y,g.getMonth(),1))},E=({value:y,onChange:g})=>t("div",{class:"flex-1"},[t("div",{class:"flex gap-2 items-center"},[t("input",{type:"range",min:0,max:23,value:y,class:"range range-xs flex-1",oninput:(x)=>g(+x.target.value)}),t("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(N(y)).padStart(2,"0")+":00")])]);return t("div",{class:c("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[t("div",{class:"flex justify-between items-center mb-4 gap-1"},[t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(-1)},t("span",{class:"icon-[lucide--chevrons-left]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(-1)},t("span",{class:"icon-[lucide--chevron-left]"}))]),t("span",{class:"font-bold uppercase flex-1 text-center"},()=>r().toLocaleString("es-ES",{month:"short",year:"numeric"})),t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(1)},t("span",{class:"icon-[lucide--chevron-right]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(1)},t("span",{class:"icon-[lucide--chevrons-right]"}))])]),t("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>l(null)},[...["L","M","X","J","V","S","D"].map((y)=>t("div",{class:"text-[10px] opacity-40 font-bold text-center"},y)),()=>{let y=r(),g=y.getFullYear(),x=y.getMonth(),C=new Date(g,x,1).getDay(),K=C===0?6:C-1,Sn=new Date(g,x+1,0).getDate(),O=[];for(let P=0;P{let z=i(),H=l(),kn=typeof z==="string"?z.split("T")[0]===T:z?.start===T,xn=z?.end===T,D=!1;if(u()&&z?.start){let v=z.start;if(!z.end&&H)D=T>v&&T<=H||T=H;else if(z.end)D=T>v&&Tu()&&l(T),onclick:()=>b(on)},P.toString()))}return O}]),n.hour?t("div",{class:"mt-3 pt-2 border-t border-base-300"},u()?t("div",{class:"flex gap-4"},[E({value:s,onChange:(y)=>s(y)}),E({value:f,onChange:(y)=>f(y)})]):E({value:s,onChange:(y)=>s(y)})):null])},Lt=(n)=>{let r=d(!1),l=d(""),s=()=>N(n.range)===!0;J(()=>{let e=N(n.value);if(!e)return l("");let o="";if(typeof e==="string")o=n.hour&&e.includes("T")?e.replace("T"," "):e;else if(e.start&&e.end){let a=n.hour&&e.startHour!=null?`${e.start} ${String(e.startHour).padStart(2,"0")}:00`:e.start,u=n.hour&&e.endHour!=null?`${e.end} ${String(e.endHour).padStart(2,"0")}:00`:e.end;o=`${a} - ${u}`}else if(e.start)o=`${n.hour&&e.startHour!=null?`${e.start} ${String(e.startHour).padStart(2,"0")}:00`:e.start}...`;l(o)});let f=(e)=>{if(S(n.value))n.value(e);else n.onChange?.(e);if(!s()||e?.end!=null)r(!1)};return t("div",{class:c("relative w-full",n.class)},[t("label",{class:"input input-bordered w-full",onclick:(e)=>{e.stopPropagation(),r(!r())}},[t("span",{class:"icon-[lucide--calendar]"}),t("input",{...n,type:"text",class:"grow",value:l,readonly:!0,placeholder:n.placeholder||(s()?"Seleccionar rango...":"Seleccionar fecha...")})]),U(r,()=>[t("div",{class:"fixed inset-0 z-[90]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(e)=>e.stopPropagation()},En({value:n.value,range:s(),hour:n.hour,onChange:f}))])])},Tt=(n)=>{let r=d([]),l=d(!1),s=d(null),f=(n.max||2)*1024*1024,e=(a)=>{let u=Array.from(a);if(s(null),u.some((b)=>b.size>f)){s(`Máx ${n.max||2}MB`);return}let i=[...r(),...u];if(r(i),S(n.onselect))n.onselect(i);else if(S(n.value))n.value(i)},o=(a)=>{let u=r().filter((i,b)=>b!==a);if(r(u),S(n.onselect))n.onselect(u);else if(S(n.value))n.value(u)};return t("div",{class:c("fieldset w-full p-0",n.class)},[t("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${l()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(a)=>{a.preventDefault(),l(!0)},ondragleave:()=>l(!1),ondrop:(a)=>{a.preventDefault(),l(!1),e(a.dataTransfer.files)}},[t("div",{class:"flex items-center gap-3 w-full"},[t("span",{class:"icon-[lucide--upload]"}),t("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),t("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),t("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(a)=>e(a.target.files)})]),()=>s()&&t("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),U(()=>r().length>0,()=>t("ul",{class:"mt-2 space-y-1"},m(r,(a,u)=>t("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[t("div",{class:"flex items-center gap-2 truncate"},[t("span",{class:"opacity-50"},"\uD83D\uDCC4"),t("span",{class:"truncate font-medium max-w-[200px]"},a.name),t("span",{class:"text-[9px] opacity-40"},`(${(a.size/1024).toFixed(0)} KB)`)]),t("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(i)=>{i.preventDefault(),o(u)}},t("span",{class:"icon-[lucide--x]"}))]),(a)=>a.name+a.lastModified)))])},$t=(n,r="alert-success",l=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=t("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let f=t("div",{style:"display: contents"});s.appendChild(f);let e,o,a,i=nn(()=>{let b=d(!1),_=d(!1);e=()=>{if(_())return;clearTimeout(o),clearTimeout(a),_(!0),setTimeout(()=>{if(i.destroy(),f.remove(),!s.hasChildNodes())s.remove()},300)},a=setTimeout(()=>b(!0),0);let w=typeof n==="function"?N(n):n,E=typeof w==="string"?t("span",{},w):w;return t("div",{class:()=>{if(_())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(b())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[E,t("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:e},t("span",{class:"icon-[lucide--x]"}))])},f);if(l>0)o=setTimeout(e,l);return e},At=(n)=>{let r=null;J(()=>{let s=N(n.open);if(!r)return;s?r.showModal():r.close()});let l=()=>S(n.open)&&n.open(!1);return t("dialog",{...n,ref:(s)=>r=s,class:c("modal",n.class),onclose:l,oncancel:l},[t("div",{class:"modal-box"},[n.title&&t("h3",{class:"text-lg font-bold"},n.title),n.children,t("div",{class:"modal-action"},[n.actions||_n({class:"btn",onclick:l},"Cerrar")])]),t("form",{method:"dialog",class:"modal-backdrop"},[t("button",{},"close")])])};var rn={};en(rn,{Editor:()=>jt});var jt=(n)=>{let{value:r,class:l}=n,s=null,f=d(!1),e=d(""),o=()=>{if(!s)return;let b=s.innerHTML;if(S(r))r(b);else n.onchange?.(b)},a=(b,_=null)=>{if(!s)return;s.focus(),document.execCommand(b,!1,_),o()},u=(b,_=null)=>{if(!s)return!1;try{if(b==="formatBlock"){let w=window.getSelection();if(!w.rangeCount)return!1;let E=w.getRangeAt(0).commonAncestorContainer;while(E&&E!==s){if(E.nodeType===1&&E.tagName===_)return!0;E=E.parentNode}return!1}return document.queryCommandState(b)}catch(w){return!1}},i=t("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200"},[t("div",{class:"flex flex-wrap gap-1 flex-1"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("bold")?"btn-active":""}`,onclick:()=>a("bold")},t("span",{class:"icon-[lucide--bold]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("italic")?"btn-active":""}`,onclick:()=>a("italic")},t("span",{class:"icon-[lucide--italic]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("underline")?"btn-active":""}`,onclick:()=>a("underline")},t("span",{class:"icon-[lucide--underline]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("strikeThrough")?"btn-active":""}`,onclick:()=>a("strikeThrough")},t("span",{class:"icon-[lucide--strikethrough]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertUnorderedList")},t("span",{class:"icon-[lucide--list]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertOrderedList")},t("span",{class:"icon-[lucide--list-ordered]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>a("formatBlock",u("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},t("span",{class:"icon-[lucide--quote]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("select",{class:"select select-xs w-16",onchange:(b)=>a("fontSize",b.target.value),value:"3"},[t("option",{value:"1"},"1"),t("option",{value:"2"},"2"),t("option",{value:"3"},"3"),t("option",{value:"4"},"4"),t("option",{value:"5"},"5"),t("option",{value:"6"},"6"),t("option",{value:"7"},"7")]),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("undo")},t("span",{class:"icon-[lucide--undo-2]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("redo")},t("span",{class:"icon-[lucide--redo-2]"}))]),t("div",{class:"flex"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${f()?"btn-active":""}`,onclick:()=>{let b=f();if(!b)e(s?.innerHTML||"");else if(s)s.innerHTML=e(),o();f(!b)}},t("span",{class:"icon-[lucide--code-2]"}))])]);return t("div",{class:c("border border-base-300 rounded-box bg-base-100 overflow-hidden",l)},[i,t("div",{class:"relative"},[t("div",{ref:(b)=>{if(!s&&b)s=b,b.innerHTML=N(r)||""},style:()=>`min-height:10rem;${f()?"display:none":""}`,class:"p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]",contenteditable:"true",oninput:o,onpaste:()=>setTimeout(o,0)}),t("textarea",{class:"w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0",style:()=>f()?"":"display:none",value:e,oninput:(b)=>e(b.target.value)})])])};var Wt={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},dn=d("es"),gn=(n)=>dn(n),Nn=(n)=>()=>Wt[dn()][n]||n;var mt={...tn,...rn},zt={Locale:gn,tt:Nn};if(typeof window<"u")Object.entries({...mt,...zt}).forEach(([n,r])=>{Object.defineProperty(window,n,{value:r,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");export{zt as Utils,mt as Components}; +var kn=Object.defineProperty;var Kn=(n)=>n;function Pn(n,f){this[n]=Kn.bind(null,f)}var wn=(n,f)=>{for(var t in f)kn(n,t,{get:f[t],enumerable:!0,configurable:!0,set:Pn.bind(f,t)})};var _n={};wn(_n,{rand:()=>d,listKey:()=>Cn,isFn:()=>Q,getBy:()=>q,get:()=>A,filterBy:()=>yn,cls:()=>y,close:()=>Sn,Tooltip:()=>Zr,Toggle:()=>Tr,Toast:()=>Pr,Timeline:()=>Kr,Textarea:()=>Qr,TextRotate:()=>kr,Tabs:()=>Ar,Table:()=>Xr,Swap:()=>Lr,Steps:()=>Jr,Step:()=>jr,Stack:()=>zr,SkeletonText:()=>lr,Skeleton:()=>Wr,Select:()=>Cr,Rating:()=>yr,Range:()=>or,Radio:()=>Nr,Radial:()=>Er,Progress:()=>br,Navbar:()=>ar,Modal:()=>wr,Menu:()=>ur,Loading:()=>_r,List:()=>tr,Kbd:()=>fr,Input:()=>Jn,Indicator:()=>rr,Icon:()=>zn,Fileinput:()=>nr,Fieldset:()=>pn,Fab:()=>hn,Dropdown:()=>en,Drawer:()=>vn,Divider:()=>cn,Datepicker:()=>dn,Colorpicker:()=>mn,Checkbox:()=>Mn,ChatImage:()=>xn,ChatHeader:()=>sn,ChatFooter:()=>Fn,ChatBubble:()=>Rn,Chat:()=>gn,CarouselItem:()=>On,Carousel:()=>Dn,Card:()=>Hn,Calendar:()=>ln,Button:()=>Wn,Badge:()=>In,Autocomplete:()=>qn,Alert:()=>Vn,Accordion:()=>Un});var B=(n)=>typeof n==="function",rn=(n)=>n&&typeof n==="object",O=Array.isArray,S=typeof document<"u"?document:null,an=(n)=>n?._isRuntime?n.container:n instanceof Node?n:S.createTextNode(n==null?"":String(n)),K=null,G=null,F=!1,x=0,M=new Set,bn=new WeakMap,p=Symbol("iter"),nn=new WeakMap,H=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let f=[n];while(f.length){let t=f.pop();if(t._cleanups)t._cleanups.forEach((_)=>_()),t._cleanups.clear();if(t._children)t._children.forEach((_)=>f.push(_)),t._children.clear();if(t._deps)t._deps.forEach((_)=>_.delete(t)),t._deps.clear()}},g=(n)=>{if(G)(G._cleanups||=new Set).add(n)},Tn=(n)=>{let f=K;K=null;try{return n()}finally{K=f}},s=(n,f=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((u)=>u.delete(t));if(t._cleanups)t._cleanups.forEach((u)=>u()),t._cleanups.clear();let _=K,a=G;K=G=t;try{return t._result=n()}catch(u){console.error("[SigPro]",u)}finally{K=_,G=a}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=f,t._depth=K?K._depth+1:0,t._mounts=[],t._parent=G,G)(G._children||=new Set).add(t);return t},Nn=()=>{if(F)return;F=!0;let n=Array.from(M).sort((f,t)=>f._depth-t._depth);M.clear();for(let f of n)if(!f._disposed)f();F=!1},Zn=(n)=>{x++;try{return n()}finally{if(x--,x===0&&M.size>0&&!F)Nn()}},Y=(n,f=!1)=>{if(!f&&K&&!K._disposed)n.add(K),(K._deps||=new Set).add(n);else if(f&&n.size>0){let t=!1;for(let _ of n){if(_===K||_._disposed)continue;if(_._isComputed){if(_._dirty=!0,_._subs)Y(_._subs,!0)}else M.add(_),t=!0}if(t&&!F&&x===0)queueMicrotask(Nn)}},L=(n,f=null)=>{let t=new Set;if(B(n)){let _,a=()=>{if(a._dirty){let u=K;K=a;try{let w=n();if(!Object.is(_,w))_=w,Y(t,!0)}finally{K=u}a._dirty=!1}return Y(t),_};if(a._isComputed=!0,a._subs=t,a._dirty=!0,a._deps=null,a._disposed=!1,a.stop=()=>{},G)g(a.stop);return a}if(f)try{n=JSON.parse(localStorage.getItem(f))??n}catch(_){}return(..._)=>{if(_.length){let a=B(_[0])?_[0](n):_[0];if(!Object.is(n,a)){if(n=a,f)localStorage.setItem(f,JSON.stringify(n));Y(t,!0)}}return Y(t),n}},on=(n)=>{if(!rn(n))return n;let f=bn.get(n);if(f)return f;let t=new Map,_=(u)=>{let w=t.get(u);if(!w)t.set(u,w=new Set);return w},a=new Proxy(n,{get(u,w,b){if(typeof w!=="symbol")Y(_(w));return on(Reflect.get(u,w,b))},set(u,w,b,E){let N=Reflect.has(u,w),o=Reflect.get(u,w,E),C=Reflect.set(u,w,b,E);if(C&&!Object.is(o,b)){if(Y(_(w),!0),!N)Y(_(p),!0)}return C},deleteProperty(u,w){let b=Reflect.deleteProperty(u,w);if(b)Y(_(w),!0),Y(_(p),!0);return b},ownKeys(u){return Y(_(p)),Reflect.ownKeys(u)}});return bn.set(n,a),a},I=(n,f)=>{if(f===void 0){let _=s(n);return _(),()=>H(_)}let t=s(()=>{let _=Array.isArray(n)?n.map((a)=>a()):n();Tn(()=>f(_))});return t(),()=>H(t)},fn=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((f)=>f()),n._cleanups.clear();if(n._ownerEffect)H(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((f)=>fn(f))},Gn=/^\s*(javascript|data|vbscript):/i,$n=(n)=>n==="src"||n==="href"||n.startsWith("on"),En=(n,f)=>{if(f==null||f===!1)return null;if($n(n)){let t=String(f);if(Gn.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return f},r=(n,f={},t=[])=>{if(f instanceof Node||O(f)||!rn(f))t=f,f={};if(B(n)){let w=s(()=>{let o=n(f,{children:t,emit:(C,...J)=>f[`on${C[0].toUpperCase()}${C.slice(1)}`]?.(...J)});return w._result=o,o});w();let b=w._result;if(b==null)return null;let E=b instanceof Node||O(b)&&b.every((o)=>o instanceof Node)?b:S.createTextNode(String(b)),N=(o)=>{if(rn(o)&&!o._isRuntime)o._mounts=w._mounts||[],o._cleanups=w._cleanups||new Set,o._ownerEffect=w};return O(E)?E.forEach(N):N(E),E}let _=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),a=_?S.createElementNS("http://www.w3.org/2000/svg",n):S.createElement(n);a._cleanups=new Set;for(let w in f){if(!f.hasOwnProperty(w))continue;let b=f[w];if(w==="ref"){B(b)?b(a):b.current=a;continue}if(_&&w.startsWith("xlink:")){b==null?a.removeAttributeNS("http://www.w3.org/1999/xlink",w.slice(6)):a.setAttributeNS("http://www.w3.org/1999/xlink",w.slice(6),b);continue}if(w.startsWith("on")){let E=w.slice(2).toLowerCase();a.addEventListener(E,b);let N=()=>a.removeEventListener(E,b);a._cleanups.add(N),g(N)}else if(B(b)){let E=s(()=>{let N=En(w,b());if(w==="class")a.className=N||"";else if(N==null)a.removeAttribute(w);else if(w in a&&!_)a[w]=N;else a.setAttribute(w,N===!0?"":N)});if(E(),a._cleanups.add(()=>H(E)),g(()=>H(E)),/^(INPUT|TEXTAREA|SELECT)$/.test(a.tagName)&&(w==="value"||w==="checked")){let N=w==="checked"?"change":"input";a.addEventListener(N,(o)=>b(o.target[w]))}}else{let E=En(w,b);if(E!=null)if(w in a&&!_)a[w]=E;else a.setAttribute(w,E===!0?"":E)}}let u=(w)=>{if(O(w))return w.forEach(u);if(B(w)){let b=S.createTextNode("");a.appendChild(b);let E=[],N=s(()=>{let o=w(),C=(O(o)?o:[o]).map(an);E.forEach((j)=>{if(j._isRuntime)j.destroy();else fn(j);if(j.parentNode)j.remove()});let J=b;for(let j=C.length-1;j>=0;j--){let l=C[j];if(l.parentNode!==J.parentNode)J.parentNode?.insertBefore(l,J);if(l._mounts)l._mounts.forEach((z)=>z());J=l}E=C});N(),a._cleanups.add(()=>H(N)),g(()=>H(N))}else{let b=an(w);if(a.appendChild(b),b._mounts)b._mounts.forEach((E)=>E())}};return u(t),a},m=(n)=>{let f=new Set,t=G,_=K,a=S.createElement("div");a.style.display="contents",a.setAttribute("role","presentation"),G={_cleanups:f},K=null;let u=(w)=>{if(!w)return;if(w._isRuntime)f.add(w.destroy),a.appendChild(w.container);else if(O(w))w.forEach(u);else a.appendChild(w instanceof Node?w:S.createTextNode(String(w==null?"":w)))};try{u(n({onCleanup:(w)=>f.add(w)}))}finally{G=t,K=_}return{_isRuntime:!0,container:a,destroy:()=>{f.forEach((w)=>w()),fn(a),a.remove()}}},D=(n,f,t=null)=>{let _=S.createTextNode(""),a=r("div",{style:"display:contents"},[_]),u=null;return I(()=>!!(B(n)?n():n),(w)=>{if(u)u.destroy(),u=null;let b=w?f:t;if(b)u=m(()=>B(b)?b():b),a.insertBefore(u.container,_)}),g(()=>u?.destroy()),a},i=({name:n,duration:f=200,scale:t,slide:_,rotate:a,blur:u},w)=>{let b=typeof w==="function"?w():w;if(!(b instanceof Node))return b;if(n)return b.style.animation=`${n}-in ${f}ms`,b;let E=t||_||a||u,N=[t?"scale(0.95)":"",_?"translateY(-10px)":"",a?"rotate(-2deg)":""].filter(Boolean).join(" ");if(b.style.transition=`all ${f}ms ease`,b.style.opacity="0",E)b.style.transform=N;if(u)b.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(b.style.opacity="1",E)b.style.transform="none";if(u)b.style.filter="none"}),b},U=(n,f,t)=>{let _=S.createTextNode(""),a=r("div",{style:"display:contents"},[_]),u=new Map;return I(()=>(B(n)?n():n)||[],(w)=>{let b=new Map,E=[],N=w||[];for(let C=0;Cf(J,C));else u.delete(j);b.set(j,l),E.push(l)}u.forEach((C)=>C.destroy());let o=_;for(let C=E.length-1;C>=0;C--){let J=E[C].container;if(J.nextSibling!==o)a.insertBefore(J,o);o=J}u=b}),a},R=(n)=>{let f=()=>window.location.hash.slice(1)||"/",t=L(f()),_=()=>t(f());window.addEventListener("hashchange",_),g(()=>window.removeEventListener("hashchange",_));let a=r("div",{class:"router-hook"}),u=null;return I([t],()=>{let w=t(),b=n.find((E)=>{let N=E.path.split("/").filter(Boolean),o=w.split("/").filter(Boolean);return N.length===o.length&&N.every((C,J)=>C[0]===":"||C===o[J])})||n.find((E)=>E.path==="*");if(b){u?.destroy();let E={};b.path.split("/").filter(Boolean).forEach((N,o)=>{if(N[0]===":")E[N.slice(1)]=w.split("/").filter(Boolean)[o]}),R.params(E),u=m(()=>B(b.component)?b.component(E):b.component),a.replaceChildren(u.container)}}),a};R.params=L({});R.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");R.back=()=>window.history.back();R.path=()=>window.location.hash.replace(/^#/,"")||"/";var Yn=({url:n,method:f="GET",headers:t={}})=>{let _=L(!1),a=L(null),u=L(null),w=null,b=null;return{run:async(E=null)=>{w?.abort(),clearTimeout(b),w=new AbortController,b=setTimeout(()=>w.abort(),1e4),_(!0),a(null);try{let N=E instanceof FormData,o=await fetch(n,{method:f,headers:N?t:{"Content-Type":"application/json",...t},body:N?E:E?JSON.stringify(E):void 0,signal:w.signal}),C=await o.text(),J=C?JSON.parse(C):null;if(!o.ok)throw Error(J?.message||o.statusText);return u(J),J}catch(N){if(N.name!=="AbortError")a(N.message);throw N}finally{_(!1),clearTimeout(b),w=null,b=null}},abort:()=>w?.abort(),loading:_,error:a,data:u}},tn=(n,f)=>{let t=typeof f==="string"?S.querySelector(f):f;if(!t)return;if(nn.has(t))nn.get(t).destroy();let _=m(B(n)?n:()=>n);return t.replaceChildren(_.container),nn.set(t,_),_},Bn=Object.freeze({$:L,$$:on,watch:I,h:r,when:D,each:U,fx:i,router:R,req:Yn,mount:tn,batch:Zn});if(typeof window<"u")Object.assign(window,Bn),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(f,t)=>r(n,f,t)});var A=(n)=>typeof n==="function"?n():n,q=(n,f="label")=>n&&typeof n==="object"?n[f]:n,y=(...n)=>n.filter(Boolean).join(" ").trim(),Q=(n)=>typeof n==="function",yn=(n,f,t="label",_=String(f).toLowerCase())=>!f?A(n):A(n).filter((a)=>String(a&&typeof a==="object"?a[t]:a).toLowerCase().includes(_)),d=(n)=>`${n}-${Math.random().toString(36).slice(2,9)}`,Sn=()=>document.activeElement?.blur(),Cn=(n,f)=>{let t=L(-1);return I(()=>{if(!A(f))t(-1)}),{cursor:t,onKey:(a,u)=>{let w=A(n),b=t(),E=w.length;if(!E)return;let N=a.key;N==="ArrowDown"?(a.preventDefault(),f(!0),t(Math.min(b+1,E-1))):N==="ArrowUp"?(a.preventDefault(),t(Math.max(b-1,0))):N==="Enter"?b>=0&&(a.preventDefault(),u(w[b])):N==="Escape"&&f(!1)}}},Un=(n)=>{let f=n.name||d("acc");return U(n.items,(t)=>{return r("div",{class:y("collapse",n.class)},[r("input",{type:"radio",name:f,checked:t.open||void 0}),t.title?r("div",{class:y("collapse-title",`${t.classTitle??" font-semibold"}`)},t.title):null,t.content?r("div",{class:y("collapse-content text-sm",`${t.classContent??" font-semibold"}`)},t.content):null])})},Vn=(n,f)=>r("div",{...n,class:y("alert",n.class)},f),qn=({items:n,value:f,onselect:t,placeholder:_="Buscar...",...a})=>{let u=L(A(f)||""),w=L(!1),b=L(()=>yn(n,u())),{cursor:E,onKey:N}=Cn(b,w),o=(C)=>{let J=q(C),j=typeof C==="string"?C:C.value;if(u(J),Q(f))f(j);t?.(C),w(!1)};return r("div",{class:"relative w-full"},[Jn({...a,type:"text",placeholder:_,value:u,left:r("span",{class:"icon-[lucide--search]"}),oninput:(C)=>{if(u(C.target.value),Q(f))f(C.target.value);w(!0)},onfocus:()=>w(!0),onblur:()=>setTimeout(()=>w(!1),150),onkeydown:(C)=>N(C,o)}),D(w,()=>i({duration:200,slide:!0},r("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[U(b,(C,J)=>r("li",{},[r("a",{class:()=>E()===J?"active bg-primary text-primary-content":"",onmousedown:(j)=>j.preventDefault(),onclick:()=>o(C),onmouseenter:()=>E(J)},q(C))]),(C,J)=>q(C)+J),()=>b().length===0?r("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},In=(n,f)=>r("span",{...n,class:y("badge",n.class)},f),Wn=(n,f)=>r("button",{...n,class:y("btn",n.class)},f),ln=(n)=>{let f=L(new Date),t=L(null),_=L(0),a=L(0),u=new Date,w=`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}-${String(u.getDate()).padStart(2,"0")}`,b=(l)=>`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,E=()=>A(n.range)===!0,N=()=>A(n.value),o=(l)=>{let z=b(l),T=N();if(E())if(!T?.start||T.start&&T.end)n.onChange?.({start:z,end:null,...n.hour&&{startHour:_()}});else{let Z=T.start,$=z{let z=f();f(new Date(z.getFullYear(),z.getMonth()+l,1))},J=(l)=>{let z=f();f(new Date(z.getFullYear()+l,z.getMonth(),1))},j=({value:l,onChange:z})=>r("div",{class:"flex-1"},[r("div",{class:"flex gap-2 items-center"},[r("input",{type:"range",min:0,max:23,value:l,class:"range range-xs flex-1",oninput:(T)=>z(+T.target.value)}),r("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(A(l)).padStart(2,"0")+":00")])]);return r("div",{class:y("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[r("div",{class:"flex justify-between items-center mb-4 gap-1"},[r("div",{class:"flex gap-0.5"},[r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>J(-1)},r("span",{class:"icon-[lucide--chevrons-left]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>C(-1)},r("span",{class:"icon-[lucide--chevron-left]"}))]),r("span",{class:"font-bold uppercase flex-1 text-center"},()=>f().toLocaleString("es-ES",{month:"short",year:"numeric"})),r("div",{class:"flex gap-0.5"},[r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>C(1)},r("span",{class:"icon-[lucide--chevron-right]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>J(1)},r("span",{class:"icon-[lucide--chevrons-right]"}))])]),r("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>t(null)},[...["L","M","X","J","V","S","D"].map((l)=>r("div",{class:"text-[10px] opacity-40 font-bold text-center"},l)),()=>{let l=f(),z=l.getFullYear(),T=l.getMonth(),Z=new Date(z,T,1).getDay(),$=Z===0?6:Z-1,v=new Date(z,T+1,0).getDate(),W=[];for(let X=0;X<$;X++)W.push(r("div"));for(let X=1;X<=v;X++){let k=new Date(z,T,X),P=b(k);W.push(r("button",{type:"button",class:()=>{let V=N(),c=t(),An=typeof V==="string"?V.split("T")[0]===P:V?.start===P,Qn=V?.end===P,e=!1;if(E()&&V?.start){let h=V.start;if(!V.end&&c)e=P>h&&P<=c||P=c;else if(V.end)e=P>h&&PE()&&t(P),onclick:()=>o(k)},X.toString()))}return W}]),n.hour?r("div",{class:"mt-3 pt-2 border-t border-base-300"},E()?r("div",{class:"flex gap-4"},[j({value:_,onChange:(l)=>_(l)}),j({value:a,onChange:(l)=>a(l)})]):j({value:_,onChange:(l)=>_(l)})):null])},Hn=(n,f)=>{if(!n.title&&!n.body&&!n.actions&&!f)return r("div",{...n,class:y("card",n.class)},f);return r("div",{...n,class:y("card",n.class)},[n.title&&r("div",{class:y("card-title",n.titleClass)},n.title),(n.body||f)&&r("div",{class:y("card-body",n.bodyClass)},n.body||f),n.actions&&r("div",{class:y("card-actions",n.actionsClass)},n.actions)].filter(Boolean))},Dn=(n,f)=>r("div",{...n,class:y("carousel",n.class)},f),On=(n,f)=>r("div",{...n,class:y("carousel-item",n.class)},f),gn=(n,f)=>r("div",{...n,class:y("chat",n.class)},f),Rn=(n,f)=>r("div",{...n,class:y("chat-bubble",n.class)},f),Fn=(n,f)=>r("div",{...n,class:y("chat-footer",n.class)},f),sn=(n,f)=>r("div",{...n,class:y("chat-header",n.class)},f),xn=(n,f)=>r("div",{...n,class:y("chat-image avatar",n.class)},r("div",{class:"w-10 rounded-full"},typeof f==="string"?r("img",{src:f,alt:"avatar"}):f)),Mn=(n)=>r("input",{...n,type:"checkbox",class:y("checkbox",n.class)}),mn=(n)=>{let f=L(!1),t=()=>A(n.value)||"#000000",_=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],a=(u)=>{Q(n.value)?n.value(u):n.onchange?.(u),f(!1)};return r("div",{class:y("relative w-fit",n.class)},[r("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(u)=>{u.stopPropagation(),f(!f())}},[r("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${t()}`}),n.label&&r("span",{class:"opacity-80"},n.label)]),D(f,()=>[r("div",{class:"fixed inset-0 z-[100]",onclick:()=>f(!1)}),r("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},r("div",{class:"grid grid-cols-8 gap-1"},_.map((u)=>r("button",{type:"button",style:`background-color: ${u}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${t().toLowerCase()===u.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>a(u)}))))])])},dn=(n)=>{let f=L(!1),t=L(""),_=()=>A(n.range)===!0;I(()=>{let u=A(n.value);if(!u)return t("");let w="";if(typeof u==="string")w=n.hour&&u.includes("T")?u.replace("T"," "):u;else if(u.start&&u.end){let b=n.hour&&u.startHour!=null?`${u.start} ${String(u.startHour).padStart(2,"0")}:00`:u.start,E=n.hour&&u.endHour!=null?`${u.end} ${String(u.endHour).padStart(2,"0")}:00`:u.end;w=`${b} - ${E}`}else if(u.start)w=`${n.hour&&u.startHour!=null?`${u.start} ${String(u.startHour).padStart(2,"0")}:00`:u.start}...`;t(w)});let a=(u)=>{if(Q(n.value))n.value(u);else n.onChange?.(u);if(!_()||u?.end!=null)f(!1)};return r("div",{class:y("relative w-full",n.class)},[r("label",{class:"input input-bordered w-full",onclick:(u)=>{u.stopPropagation(),f(!f())}},[r("span",{class:"icon-[lucide--calendar]"}),r("input",{...n,type:"text",class:"grow",value:t,readonly:!0,placeholder:n.placeholder||(_()?"Seleccionar rango...":"Seleccionar fecha...")})]),D(f,()=>[r("div",{class:"fixed inset-0 z-[90]",onclick:()=>f(!1)}),r("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(u)=>u.stopPropagation()},ln({value:n.value,range:_(),hour:n.hour,onChange:a}))])])},vn=(n,f)=>{let t=n.id||d("drawer");return r("div",{class:y("drawer",n.class)},[r("input",{id:t,type:"checkbox",class:"drawer-toggle",checked:()=>A(n.open),onchange:(_)=>Q(n.open)&&n.open(_.target.checked)}),r("div",{class:"drawer-side"},[r("label",{for:t,class:"drawer-overlay",onclick:()=>Q(n.open)&&n.open(!1)}),r("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>A(n.side))]),r("div",{class:"drawer-content"},f)])},cn=(n)=>r("div",{...n,class:y("divider",n.class)}),en=(n,f)=>{return r("div",{...n,class:y("dropdown",n.class)},[r("div",{tabindex:"0",role:"button",class:y("btn",n.buttonClass)},n.label),r("div",{tabindex:"-1",class:"dropdown-content"},f)])},hn=(n,f)=>r("div",{class:"fab"},[r("div",{tabindex:"0",role:"button",class:y("btn",n.class)},zn(n.icon)),f]),pn=(n,f)=>r("fieldset",{class:y("fieldset",n.class)},[r("legend",{class:"fieldset-legend"},n.label),f]),nr=(n)=>{let f=L([]),t=L(!1),_=L(null),a=(n.max||2)*1024*1024,u=(b)=>{let E=Array.from(b);if(_(null),E.some((o)=>o.size>a)){_(`Máx ${n.max||2}MB`);return}let N=[...f(),...E];if(f(N),Q(n.onselect))n.onselect(N);else if(Q(n.value))n.value(N)},w=(b)=>{let E=f().filter((N,o)=>o!==b);if(f(E),Q(n.onselect))n.onselect(E);else if(Q(n.value))n.value(E)};return r("div",{class:y("fieldset w-full p-0",n.class)},[r("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${t()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(b)=>{b.preventDefault(),t(!0)},ondragleave:()=>t(!1),ondrop:(b)=>{b.preventDefault(),t(!1),u(b.dataTransfer.files)}},[r("div",{class:"flex items-center gap-3 w-full"},[r("span",{class:"icon-[lucide--upload]"}),r("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),r("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),r("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(b)=>u(b.target.files)})]),()=>_()&&r("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},_()),D(()=>f().length>0,()=>r("ul",{class:"mt-2 space-y-1"},U(f,(b,E)=>r("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[r("div",{class:"flex items-center gap-2 truncate"},[r("span",{class:"opacity-50"},"\uD83D\uDCC4"),r("span",{class:"truncate font-medium max-w-[200px]"},b.name),r("span",{class:"text-[9px] opacity-40"},`(${(b.size/1024).toFixed(0)} KB)`)]),r("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(N)=>{N.preventDefault(),w(E)}},r("span",{class:"icon-[lucide--x]"}))]))))])},zn=(n)=>r("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),rr=(n,f)=>r("div",{...n,class:y("indicator",n.class)},[n.value&&r("span",{class:y("indicator-item badge",n.class)},n.value),f]),Jn=(n)=>{let{label:f,icon:t,float:_,placeholder:a,value:u,left:w,right:b,rule:E,hint:N,content:o,...C}=n,J=L(!1),j=L(!1),l=n.type==="password",z=E??null,T=()=>l?A(J)?"text":"password":n.type||"text";return r("div",{class:"input-container",onfocusin:()=>j(!0),onfocusout:(Z)=>{if(!Z.currentTarget.contains(Z.relatedTarget))j(!1)}},[r("label",{class:_?"floating-label":""},[_?r("span",{},f):null,r("label",{pattern:z,class:()=>y("input validator",n.class)},[f&&!_?r("span",{class:"label"},f):null,w??null,r("input",{...C,type:T,class:"grow",pattern:z,placeholder:a||f||" ",value:u}),b??null,l?r("label",{class:"swap swap-rotate ml-2"},[r("input",{type:"checkbox",onchange:(Z)=>J(Z.target.checked)}),r("span",{class:"swap-on icon-[lucide--eye]"}),r("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),N?r("div",{class:"validator-hint"},N):null,D(j,()=>i({duration:300,slide:!0},r("div",{class:"input-content",onmousedown:(Z)=>Z.preventDefault()},[Q(o)?o(j):o])))])])},fr=(n,f)=>r("kbd",{...n,class:y("kbd",n.class)},f),tr=(n,f)=>{if(!n.items)return r("ul",{...n,class:y("list",n.class)},f);return r("ul",{...n,class:y("list",n.class)},[U(n.items,(t,_)=>r("li",{class:y("list-row",t.class)},typeof n.render==="function"?n.render(t,_):t),n.key)])},_r=(n,f)=>r("span",{...n,class:y("loading loading-spinner",n.class)},f),ur=(n)=>{if(n.children!==void 0)return r("ul",{class:y("menu",n.class),...n},n.children);let{items:f}=n,t=(_)=>_.children?r("li",{},r("details",{open:_.open||void 0},[r("summary",{},q(_)),r("ul",{},U(()=>A(_.children)||[],t))])):r("li",{},r("a",{href:_.href,onclick:_.onclick?(a)=>{if(!_.href)a.preventDefault();_.onclick(a)}:null},q(_)));return r("ul",{class:y("menu",n.class)},U(()=>A(f)||[],t))},wr=(n)=>{let f=null;I(()=>{let _=A(n.open);if(!f)return;_?f.showModal():f.close()});let t=()=>Q(n.open)&&n.open(!1);return r("dialog",{...n,ref:(_)=>f=_,class:y("modal",n.class),onclose:t,oncancel:t},[r("div",{class:"modal-box"},[n.title&&r("h3",{class:"text-lg font-bold"},n.title),n.children,r("div",{class:"modal-action"},[n.actions||Wn({class:"btn",onclick:t},"Cerrar")])]),r("form",{method:"dialog",class:"modal-backdrop"},[r("button",{},"close")])])},ar=(n,f)=>r("div",{...n,class:y("navbar",n.class)},f),br=(n)=>r("progress",{...n,class:y("progress",n.class)}),Er=(n,f)=>r("div",{...n,class:y("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},f??`${n.value??0}%`),Nr=(n)=>r("input",{...n,type:"radio",class:y("radio",n.class)}),or=(n)=>r("input",{...n,type:"range",class:y("range",n.class)}),yr=(n)=>{let f=d("rating"),t=n.children??Array.from({length:n.count||5},(_,a)=>{let u=a+1;return r("input",{type:"radio",name:f,class:y("mask",n.mask||"mask-star"),checked:()=>A(n.value)===u,onchange:()=>Q(n.value)?n.value(u):n.onchange?.(u)})});return r("div",{class:y("rating",n.class),...n},t)},Cr=(n,f)=>{if(f!==void 0)return r("select",{class:y("select",n.class),...n},f);let{label:t,float:_,placeholder:a,placeholderDisabled:u=!0,value:w,left:b,right:E,hint:N,items:o,keyFn:C,...J}=n,j=()=>{let l=A(o)||[];return[...a?[{disabled:u,label:a,value:""}]:[],...l]};return r("label",{class:_?"floating-label":""},[_?r("span",{},t):null,r("label",{class:y("select",J.class)},[!_&&t?r("span",{class:"label"},t):null,b??null,r("select",{value:()=>A(w),onchange:(l)=>Q(w)?w(l.target.value):J.onchange?.(l)},U(j,(l)=>{let z=q(l,l.value!==void 0?"value":void 0),T=q(l,"label");return r("option",{value:z,disabled:l.disabled||void 0},T)})),E??null]),N?r("div",{class:"validator-hint"},N):null])},Wr=(n)=>r("div",{...n,class:y("skeleton",n.class)}),lr=(n)=>r("span",{...n,class:y("skeleton skeleton-text",n.class)}),zr=(n,f)=>r("div",{...n,class:y("stack",n.class)},f),Jr=(n,f)=>r("ul",{...n,class:y("steps",n.class)},f),jr=(n,f)=>r("li",{...n,class:y("step",n.class),"data-content":n.dataContent},f),Lr=(n)=>r("label",{...n,class:y("swap",n.class)},[r("input",{type:"checkbox",checked:()=>A(n.value),onchange:(f)=>Q(n.value)&&n.value(f.target.checked)}),r("div",{class:"swap-on"},n.on),r("div",{class:"swap-off"},n.off)]),Xr=(n)=>{if(n.children!==void 0)return r("table",{class:y("table",n.class),...n},n.children);let{items:f,columns:t=[],header:_=!0,keyFn:a,...u}=n,w=_!==!1&&t.some((E)=>E.label)?r("thead",{},r("tr",{},t.map((E)=>r("th",{class:E.class},E.label)))):null,b=r("tbody",{},U(()=>A(f)||[],(E,N)=>r("tr",{},t.map((o)=>{let C=o.render?o.render(E,N):E[o.key];return r("td",{class:o.class},C)}))));return r("table",{class:y("table",u.class),...u},[w,b])},Ar=(n,f)=>{if(!n.items){let{class:N,...o}=n;return r("div",{...o,class:y("tabs",N)},f)}let{items:t,activeIndex:_,onClose:a,class:u,...w}=n,b=(N)=>Q(N)?N():N,E=a||(Q(t)?(N,o)=>{let J=b(t).filter((j,l)=>l!==N);if(t(J),_()>=J.length)_(Math.max(0,J.length-1))}:null);return r("div",{...w,class:y("tabs",u)},()=>{return(b(t)||[]).flatMap((o,C)=>{let J=()=>_()===C,j=r("button",{class:()=>`tab ${J()?"tab-active":""} ${o.class||""}`,onclick:(z)=>{z.preventDefault(),_(C),o.onclick?.(z)}},[q(o),o.closable?r("span",{class:"ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-base-300 text-base-content/60 hover:text-base-content cursor-pointer",onclick:(z)=>{z.stopPropagation(),E?.(C,o)}},r("span",{class:"icon-[lucide--x] w-3 h-3"})):null]),l=r("div",{class:"tab-content bg-base-100 border-base-300 p-6",style:()=>`display: ${J()?"block":"none"};`},Q(o.content)?o.content():o.content);return[j,l]})})},Qr=(n)=>r("textarea",{...n,class:y("textarea",n.class)}),kr=(n)=>{let f=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return r("span",{...n,class:y("text-rotate",n.class)},r("span",{},f.map((t)=>r("span",{},t))))},Kr=(n,f)=>r("ul",{...n,class:y("timeline",n.class)},f),Pr=(n,f="alert-success",t=3500)=>{let _=document.getElementById("sigpro-toast-container");if(!_)_=r("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(_);let a=r("div",{style:"display: contents"});_.appendChild(a);let u,w,b,N=tn(()=>{let o=L(!1),C=L(!1);u=()=>{if(C())return;clearTimeout(w),clearTimeout(b),C(!0),setTimeout(()=>{if(N.destroy(),a.remove(),!_.hasChildNodes())_.remove()},300)},b=setTimeout(()=>o(!0),0);let J=typeof n==="function"?A(n):n,j=typeof J==="string"?r("span",{},J):J;return r("div",{class:()=>{if(C())return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(o())return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[j,r("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:u},r("span",{class:"icon-[lucide--x]"}))])},a);if(t>0)w=setTimeout(u,t);return u},Tr=(n)=>r("input",{...n,type:"checkbox",class:y("toggle",n.class)}),Zr=(n,f)=>r("div",{...n,class:y("tooltip",n.class),"data-tip":n.tip},f);var un={};wn(un,{Editor:()=>Gr});var Gr=(n)=>{let{value:f,class:t}=n,_=null,a=null,u=L(!1),w=L(""),b=L(0),E=L(0),N=L(!1),o=["\uD83D\uDE00","\uD83D\uDE0A","\uD83D\uDE09","\uD83E\uDDD0","\uD83D\uDE2E","\uD83E\uDD14","\uD83D\uDE05","\uD83D\uDE02","\uD83D\uDE0D","\uD83D\uDE18","\uD83E\uDD70","\uD83D\uDC4D","\uD83D\uDC4E","\uD83D\uDC4C","\uD83E\uDD1D","\uD83E\uDD1E","\uD83D\uDC4B","\uD83D\uDC4F","\uD83D\uDE4C","\uD83D\uDE4F","\uD83D\uDCAA","☝️","\uD83D\uDC47","\uD83D\uDC48","\uD83D\uDC49","\uD83D\uDD95","✅","⚠️","\uD83D\uDE80","\uD83D\uDCE2","✉️","❤️"],C=()=>{let W=window.getSelection();if(W.getRangeAt&&W.rangeCount)a=W.getRangeAt(0)},J=()=>{if(a){let W=window.getSelection();W.removeAllRanges(),W.addRange(a)}},j=()=>{if(E(E()+1),_)b(_.innerText.length)},l=()=>{if(!_)return;let W=_.innerHTML;if(Q(f))f(W);else n.onchange?.(W);j()},z=(W,X=null)=>{if(!_)return;if(_.focus(),a)J();document.execCommand(W,!1,X),a=null,l()},T=(W)=>{let X=document.createElement("div");X.style="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;";let k=document.createElement("img");k.src=W,k.style="max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;",X.onclick=()=>document.body.removeChild(X),X.appendChild(k),document.body.appendChild(X)},Z=(W)=>{if(!W)return;let X=new FileReader;X.onload=(k)=>{if(W.type.startsWith("image/")){let P=`
 `;z("insertHTML",P)}else{let P=`${W.name} `;z("insertHTML",P)}},X.readAsDataURL(W)},$=(W,X=null)=>{if(E(),!_||u())return!1;try{if(W==="formatBlock"){let k=window.getSelection().getRangeAt(0).commonAncestorContainer;while(k&&k!==_){if(k.nodeType===1&&k.tagName===X)return!0;k=k.parentNode}return!1}return document.queryCommandState(W)}catch(k){return!1}},v=r("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20"},[r("div",{class:"flex flex-wrap gap-1 flex-1 items-center"},[r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("bold")?"btn-active bg-primary/20":""}`,onclick:()=>z("bold")},r("span",{class:"icon-[lucide--bold]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("italic")?"btn-active bg-primary/20":""}`,onclick:()=>z("italic")},r("span",{class:"icon-[lucide--italic]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("underline")?"btn-active bg-primary/20":""}`,onclick:()=>z("underline")},r("span",{class:"icon-[lucide--underline]"})),r("input",{type:"color",class:"w-5 h-5 p-0 border-0 bg-transparent cursor-pointer",oninput:(W)=>z("foreColor",W.target.value)}),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyLeft")},r("span",{class:"icon-[lucide--align-left]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyCenter")},r("span",{class:"icon-[lucide--align-center]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyRight")},r("span",{class:"icon-[lucide--align-right]"})),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("insertUnorderedList")},r("span",{class:"icon-[lucide--list]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("insertOrderedList")},r("span",{class:"icon-[lucide--list-ordered]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("outdent"),title:"Mover izquierda"},r("span",{class:"icon-[lucide--indent-decrease]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("indent"),title:"Mover derecha (Tab)"},r("span",{class:"icon-[lucide--indent-increase]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>z("formatBlock",$("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},r("span",{class:"icon-[lucide--quote]"})),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let W=window.prompt("URL:");if(W)z("createLink",W)}},r("span",{class:"icon-[lucide--link]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let W=document.createElement("input");W.type="file",W.onchange=(X)=>Z(X.target.files[0]),W.click()}},r("span",{class:"icon-[lucide--paperclip]"})),r("div",{class:"relative"},[r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:(W)=>{W.stopPropagation(),C(),N(!N())}},r("span",{class:"icon-[lucide--smile]"})),r("div",{class:"absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1",style:()=>N()?"display:flex":"display:none"},o.map((W)=>r("span",{class:"cursor-pointer hover:bg-base-200 p-1 rounded text-lg",onclick:(X)=>{X.stopPropagation(),z("insertText",W),N(!1)}},W)))]),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("removeFormat")},r("span",{class:"icon-[lucide--eraser]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("undo"),title:"Deshacer"},r("span",{class:"icon-[lucide--undo-2]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("redo"),title:"Rehacer"},r("span",{class:"icon-[lucide--redo-2]"}))]),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u()?"btn-active":""}`,onclick:()=>{if(!u())w(_?.innerHTML||"");else if(_)_.innerHTML=w(),l();u(!u())}},r("span",{class:"icon-[lucide--code-2]"}))]);if(typeof document<"u"&&!document.getElementById("editor-styles")){let W=document.createElement("style");W.id="editor-styles",W.textContent=` + [contenteditable="true"] div, + [contenteditable="true"] p { + margin: 0; + padding: 0; + } + `,document.head.appendChild(W)}return r("div",{class:y("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col",t)},[v,r("div",{class:"relative flex-1 flex flex-col",onclick:()=>N(!1)},[r("div",{ref:(W)=>{if(!_&&W)_=W,W.innerHTML=A(f)||"",document.execCommand("defaultParagraphSeparator",!1,"br"),W.addEventListener("click",(X)=>{let k=X.target.closest(".resizable-img-container");if(k){let P=k.querySelector("img");if(P)T(P.src)}})},style:()=>`min-height:22rem;${u()?"display:none":""}`,class:"p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8",contenteditable:"true",oninput:l,onkeydown:(W)=>{if(W.key==="Tab")W.preventDefault(),z("indent")},onkeyup:()=>{j(),C()},onclick:(W)=>{j(),C(),W.stopPropagation()},onmouseup:()=>{l(),C()},onpaste:(W)=>{W.preventDefault();let X=W.clipboardData.getData("text/plain");z("insertText",X)},ondragover:(W)=>W.preventDefault(),ondrop:(W)=>{W.preventDefault(),Z(W.dataTransfer.files[0])}}),r("textarea",{class:"w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0",style:()=>u()?"":"display:none",value:w,oninput:(W)=>{if(w(W.target.value),_)_.innerHTML=W.target.value;n.onchange?.(W.target.value)}})]),r("div",{class:"px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic"},[r("span",()=>`${b()} caracteres`)])])};var $r={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},jn=L("es"),Ln=(n)=>jn(n),Xn=(n)=>()=>$r[jn()][n]||n;var Yr={..._n,...un},Br={Locale:Ln,tt:Xn};if(typeof window<"u")Object.entries({...Yr,...Br}).forEach(([n,f])=>{Object.defineProperty(window,n,{value:f,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");export{Br as Utils,Yr as Components}; diff --git a/dist/sigpro-ui.js b/dist/sigpro-ui.js index d237738..e993562 100644 --- a/dist/sigpro-ui.js +++ b/dist/sigpro-ui.js @@ -47,12 +47,14 @@ // components/All.js var exports_All = {}; __export(exports_All, { + rand: () => rand, listKey: () => listKey, isFn: () => isFn, getBy: () => getBy, get: () => get, filterBy: () => filterBy, cls: () => cls, + close: () => close, Tooltip: () => Tooltip, Toggle: () => Toggle, Toast: () => Toast, @@ -77,6 +79,7 @@ Modal: () => Modal, Menu: () => Menu, Loading: () => Loading, + List: () => List, Kbd: () => Kbd, Input: () => Input, Indicator: () => Indicator, @@ -97,9 +100,6 @@ Chat: () => Chat, CarouselItem: () => CarouselItem, Carousel: () => Carousel, - CardTitle: () => CardTitle, - CardBody: () => CardBody, - CardActions: () => CardActions, Card: () => Card, Calendar: () => Calendar, Button: () => Button, @@ -467,7 +467,7 @@ return R(() => (y(e) ? e() : e) || [], (t) => { let r = new Map, l = [], u = t || []; for (let f = 0;f < u.length; f++) { - let h = u[f], d = n ? n(h, f) : h?.id ?? f, m = c.get(d); + let h = u[f], d = n ? h?.[n] ?? f : h?.id ?? f, m = c.get(d); if (!m) m = j(() => o(h, f)); else @@ -546,14 +546,9 @@ var getBy = (item, field = "label") => item && typeof item === "object" ? item[field] : item; var cls = (...classes) => classes.filter(Boolean).join(" ").trim(); var isFn = (f) => typeof f === "function"; - var filterBy = (items, query, field = "label") => { - const searchTerm = String(query).toLowerCase(); - const list = get(items); - return !searchTerm ? list : list.filter((item) => { - const text = item && typeof item === "object" ? item[field] : item; - return String(text).toLowerCase().includes(searchTerm); - }); - }; + var filterBy = (items, query, field = "label", q2 = String(query).toLowerCase()) => !query ? get(items) : get(items).filter((item) => String(item && typeof item === "object" ? item[field] : item).toLowerCase().includes(q2)); + var rand = (r) => `${r}-${Math.random().toString(36).slice(2, 9)}`; + var close = () => document.activeElement?.blur(); var listKey = (items, isOpen) => { const cursor = S(-1); R(() => { @@ -569,202 +564,17 @@ }; return { cursor, onKey }; }; - var Alert = (p2, c) => O("div", { ...p2, class: cls("alert", p2.class) }, c); - var Badge = (p2, c) => O("span", { ...p2, class: cls("badge", p2.class) }, c); - var Button = (p2, c) => O("button", { ...p2, class: cls("btn", p2.class) }, c); - var Card = (p2, c) => O("div", { ...p2, class: cls("card", p2.class) }, c); - var CardTitle = (p2, c) => O("div", { ...p2, class: cls("card-title", p2.class) }, c); - var CardBody = (p2, c) => O("div", { ...p2, class: cls("card-body", p2.class) }, c); - var CardActions = (p2, c) => O("div", { ...p2, class: cls("card-actions", p2.class) }, c); - var Carousel = (p2, c) => O("div", { ...p2, class: cls("carousel", p2.class) }, c); - var CarouselItem = (p2, c) => O("div", { ...p2, class: cls("carousel-item", p2.class) }, c); - var Chat = (p2, c) => O("div", { ...p2, class: cls("chat", p2.class) }, c); - var ChatBubble = (p2, c) => O("div", { ...p2, class: cls("chat-bubble", p2.class) }, c); - var ChatFooter = (p2, c) => O("div", { ...p2, class: cls("chat-footer", p2.class) }, c); - var ChatHeader = (p2, c) => O("div", { ...p2, class: cls("chat-header", p2.class) }, c); - var ChatImage = (p2, c) => O("div", { ...p2, class: cls("chat-image avatar", p2.class) }, O("div", { class: "w-10 rounded-full" }, typeof c === "string" ? O("img", { src: c, alt: "avatar" }) : c)); - var Checkbox = (p2) => O("input", { ...p2, type: "checkbox", class: cls("checkbox", p2.class) }); - var Divider = (p2) => O("div", { ...p2, class: cls("divider", p2.class) }); - var Fab = (p2, c) => O("div", { ...p2, class: cls("fab", p2.class) }, c); - var Fieldset = (p2, c) => O("fieldset", { ...p2, class: cls("fieldset", p2.class) }, [p2.legend && O("legend", { class: "fieldset-legend" }, p2.legend), c]); - var Icon = (p2) => O("span", { class: p2.startsWith("icon-") ? p2 : "" }, p2.startsWith("icon-") ? null : p2); - var Indicator = (p2, c) => O("div", { ...p2, class: cls("indicator", p2.class) }, [p2.value && O("span", { class: cls("indicator-item badge", p2.class) }, p2.value), c]); - var Kbd = (p2, c) => O("kbd", { ...p2, class: cls("kbd", p2.class) }, c); - var Loading = (p2, c) => O("span", { ...p2, class: cls("loading loading-spinner", p2.class) }, c); - var Navbar = (p2, c) => O("div", { ...p2, class: cls("navbar", p2.class) }, c); - var Progress = (p2) => O("progress", { ...p2, class: cls("progress", p2.class) }); - var Radial = (p2, c) => O("div", { ...p2, class: cls("radial-progress", p2.class), style: `--value:${p2.value ?? 0};${p2.style ?? ""}`, role: "progressbar", "aria-valuenow": p2.value ?? 0 }, c ?? `${p2.value ?? 0}%`); - var Radio = (p2) => O("input", { ...p2, type: "radio", class: cls("radio", p2.class) }); - var Range = (p2) => O("input", { ...p2, type: "range", class: cls("range", p2.class) }); - var Skeleton = (p2) => O("div", { ...p2, class: cls("skeleton", p2.class) }); - var SkeletonText = (p2) => O("span", { ...p2, class: cls("skeleton skeleton-text", p2.class) }); - var Stack = (p2, c) => O("div", { ...p2, class: cls("stack", p2.class) }, c); - var Steps = (p2, c) => O("ul", { ...p2, class: cls("steps", p2.class) }, c); - var Step = (p2, c) => O("li", { ...p2, class: cls("step", p2.class), "data-content": p2.dataContent }, c); - var Swap = (p2) => O("label", { ...p2, class: cls("swap", p2.class) }, [ - O("input", { type: "checkbox", checked: () => get(p2.value), onchange: (e) => isFn(p2.value) && p2.value(e.target.checked) }), - O("div", { class: "swap-on" }, p2.on), - O("div", { class: "swap-off" }, p2.off) - ]); - var Textarea = (p2) => O("textarea", { ...p2, class: cls("textarea", p2.class) }); - var TextRotate = (p2) => { - const words = Array.isArray(p2.words) ? p2.words : typeof p2.words === "string" ? p2.words.split(",") : []; - return O("span", { ...p2, class: cls("text-rotate", p2.class) }, O("span", {}, words.map((w2) => O("span", {}, w2)))); - }; - var Timeline = (p2, c) => O("ul", { - ...p2, - class: cls("timeline", p2.vertical !== false ? "timeline-vertical" : "timeline-horizontal", p2.compact ? "timeline-compact" : "", p2.class) - }, c); - var Toggle = (p2) => O("input", { ...p2, type: "checkbox", class: cls("toggle", p2.class) }); - var Tooltip = (p2, c) => O("div", { ...p2, class: cls("tooltip", p2.class), "data-tip": p2.tip }, c); var Accordion = (p2) => { - const name = p2.name || `acc-${Math.random().toString(36).slice(2)}`; - const base = cls("collapse", p2.variant && `collapse-${p2.variant}`, p2.class); - const itemFn = (it) => { - const t = getBy(it, "title"); - const c = it.content; - return p2.type === "details" ? O("details", { class: base, name, open: it.open || undefined }, O("summary", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null) : O("div", { class: base }, O("input", { type: "radio", name, checked: it.open || undefined }), O("div", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null); - }; - return isFn(p2.items) ? K(p2.items, itemFn, (it, i) => it?.id ?? i) : (p2.items || []).map(itemFn); - }; - var Table = (p2) => { - if (p2.children !== undefined) - return O("table", { class: cls("table", p2.class), ...p2 }, p2.children); - const { items, columns = [], header = true, keyFn, ...rest } = p2; - const hd = header !== false && columns.some((c) => c.label) ? O("thead", {}, O("tr", {}, columns.map((c) => O("th", { class: c.class }, c.label)))) : null; - const bd = O("tbody", {}, K(() => get(items) || [], (it, idx) => O("tr", {}, columns.map((c) => { - const v2 = c.render ? c.render(it, idx) : it[c.key]; - return O("td", { class: c.class }, v2); - })), keyFn || ((it, idx) => it?.id ?? idx))); - return O("table", { class: cls("table", rest.class), ...rest }, [hd, bd]); - }; - var Tabs = (p2) => { - if (p2.children !== undefined) - return O("div", { class: cls("tabs", p2.class), ...p2 }, p2.children); - const { items, activeIndex, onClose, ...rest } = p2; - const closeHandler = onClose || (isFn(items) ? (idx) => { - const arr = get(items); - const newArr = arr.filter((_2, i) => i !== idx); - items(newArr); - if (activeIndex() >= newArr.length) - activeIndex(Math.max(0, newArr.length - 1)); - } : null); - return O("div", { class: cls("tabs", p2.class), ...rest }, K(() => get(items) || [], (it, idx) => { - const act = () => activeIndex() === idx; - return [ - O("a", { - role: "tab", - class: () => `tab ${act() ? "tab-active" : ""} ${it.class || ""}`, - onclick: (e) => { - e.preventDefault(); - activeIndex(idx); - it.onclick?.(e); - } - }, getBy(it), it.closable ? O("span", { - class: "icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70", - onclick: (e) => { - e.stopPropagation(); - closeHandler?.(idx); - } - }) : null), - O("div", { - class: `tab-content ${it.contentClass || ""}`, - style: () => `display: ${act() ? "block" : "none"};` - }, isFn(it.content) ? it.content() : it.content) - ]; - }, (it, idx) => it.id ?? idx)); - }; - var Rating = (p2) => { - const name = `rating-${Math.random().toString(36).slice(2, 7)}`; - const stars = p2.children ?? Array.from({ length: p2.count || 5 }, (_2, i) => { - const v2 = i + 1; - return O("input", { - type: "radio", - name, - class: cls("mask", p2.mask || "mask-star"), - checked: () => get(p2.value) === v2, - onchange: () => isFn(p2.value) ? p2.value(v2) : p2.onchange?.(v2) - }); + const name = p2.name || rand("acc"); + return K(p2.items, (it) => { + return O("div", { class: cls("collapse", p2.class) }, [ + O("input", { type: "radio", name, checked: it.open || undefined }), + it.title ? O("div", { class: cls("collapse-title", `${it.classTitle ?? " font-semibold"}`) }, it.title) : null, + it.content ? O("div", { class: cls("collapse-content text-sm", `${it.classContent ?? " font-semibold"}`) }, it.content) : null + ]); }); - return O("div", { class: cls("rating", p2.class), ...p2 }, stars); - }; - var Menu = (p2) => { - if (p2.children !== undefined) - return O("ul", { class: cls("menu", p2.class), ...p2 }, p2.children); - const { items, keyFn = (it, idx) => it?.id ?? idx, ...rest } = p2; - const render = (item) => item.children ? O("li", {}, O("details", {}, O("summary", {}, getBy(item)), O("ul", {}, Menu({ items: item.children })))) : O("li", {}, O("a", { - href: item.href, - onclick: item.onclick ? (e) => { - if (!item.href) - e.preventDefault(); - item.onclick(e); - } : null - }, getBy(item))); - return O("ul", { class: cls("menu", rest.class), ...rest }, K(() => get(items) || [], render, keyFn)); - }; - var Drawer = (p2, c) => { - const id = p2.id || `drawer-${Math.random().toString(36).slice(2, 9)}`; - return O("div", { class: cls("drawer", p2.class) }, [ - O("input", { - id, - type: "checkbox", - class: "drawer-toggle", - checked: () => get(p2.open), - onchange: (e) => isFn(p2.open) && p2.open(e.target.checked) - }), - O("div", { class: "drawer-content" }, c), - O("div", { class: "drawer-side" }, [ - O("label", { - for: id, - class: "drawer-overlay", - onclick: () => isFn(p2.open) && p2.open(false) - }), - O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, () => get(p2.side)) - ]) - ]); - }; - var Dropdown = (p2, c) => { - const { trigger, items, ...rest } = p2; - const content = c || (items ? O("ul", { - class: "menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow" - }, K(() => get(items) || [], (item) => O("li", {}, O("a", { - onclick: (e) => { - item.onclick?.(e); - e.currentTarget.closest("details").open = false; - } - }, getBy(item))), (it, idx) => it.id ?? idx)) : null); - return O("details", { class: cls("dropdown", rest.class), ...rest }, [ - O("summary", { class: "btn m-1" }, trigger || "Dropdown"), - content - ]); - }; - var Select = (p2, c) => { - if (c !== undefined) - return O("select", { class: cls("select", p2.class), ...p2 }, c); - const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p2; - const opts = () => { - const raw = get(items) || []; - const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: "" }] : []; - return [...ph, ...raw]; - }; - return O("label", { class: float ? "floating-label" : "" }, [ - float && O("span", {}, label), - O("label", { class: cls("select", rest.class) }, [ - label && !float && O("span", { class: "label" }, label), - left ?? null, - O("select", { - value: () => get(value), - onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) - }, K(opts, (item) => { - const val = getBy(item, item.value !== undefined ? "value" : undefined); - const lab = getBy(item, "label"); - return O("option", { value: val, disabled: item.disabled || undefined }, lab); - }, (it, i) => it?.id ?? (typeof it === "string" ? it : it.value) ?? i)), - right ?? null - ]), - hint && O("div", { class: "validator-hint" }, hint) - ]); }; + var Alert = (p2, c) => O("div", { ...p2, class: cls("alert", p2.class) }, c); var Autocomplete = ({ items, value, onselect, placeholder = "Buscar...", ...props }) => { const query = S(get(value) || ""); const isOpen = S(false); @@ -811,42 +621,121 @@ ]))) ]); }; - var Input = (p2) => { - const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p2; - const showPassword = S(false); - const isFocused = S(false); - const isPassword = p2.type === "password"; - const pattern = rule ?? null; - const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : p2.type || "text"; - return O("div", { - class: "input-container", - onfocusin: () => isFocused(true), - onfocusout: (e) => { - if (!e.currentTarget.contains(e.relatedTarget)) { - isFocused(false); + var Badge = (p2, c) => O("span", { ...p2, class: cls("badge", p2.class) }, c); + var Button = (p2, c) => O("button", { ...p2, class: cls("btn", p2.class) }, c); + var Calendar = (p2) => { + const internalDate = S(new Date); + const hoverDate = S(null); + const startHour = S(0); + const endHour = S(0); + const now = new Date; + const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`; + const fmt = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; + const rangeMode = () => get(p2.range) === true; + const current = () => get(p2.value); + const selectDate = (date) => { + const s = fmt(date); + const v2 = current(); + if (rangeMode()) { + if (!v2?.start || v2.start && v2.end) { + p2.onChange?.({ start: s, end: null, ...p2.hour && { startHour: startHour() } }); + } else { + const start = v2.start; + const nv = s < start ? { start: s, end: start } : { start, end: s }; + if (p2.hour) { + nv.startHour = v2.startHour ?? startHour(); + nv.endHour = endHour(); + } + p2.onChange?.(nv); } + } else { + p2.onChange?.(p2.hour ? `${s}T${String(startHour()).padStart(2, "0")}:00:00` : s); } - }, [ - O("label", { class: float ? "floating-label" : "" }, [ - float ? O("span", {}, label) : null, - O("label", { pattern, class: () => cls("input validator", p2.class) }, [ - label && !float ? O("span", { class: "label" }, label) : null, - left ?? null, - O("input", { ...rest, type: inputType, class: "grow", pattern, placeholder: placeholder || label || " ", value }), - right ?? null, - isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ - O("input", { type: "checkbox", onchange: (e) => showPassword(e.target.checked) }), - O("span", { class: "swap-on icon-[lucide--eye]" }), - O("span", { class: "swap-off icon-[lucide--eye-off]" }) - ]) : null - ]), - hint ? O("div", { class: "validator-hint" }, hint) : null, - z(isFocused, () => G({ duration: 300, slide: true }, O("div", { class: "input-content", onmousedown: (e) => e.preventDefault() }, [ - isFn(content) ? content(isFocused) : content - ]))) + }; + const move = (m) => { + const d = internalDate(); + internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)); + }; + const moveYear = (y2) => { + const d = internalDate(); + internalDate(new Date(d.getFullYear() + y2, d.getMonth(), 1)); + }; + const HourSlider = ({ value: hVal, onChange: onH }) => O("div", { class: "flex-1" }, [ + O("div", { class: "flex gap-2 items-center" }, [ + O("input", { type: "range", min: 0, max: 23, value: hVal, class: "range range-xs flex-1", oninput: (e) => onH(+e.target.value) }), + O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(get(hVal)).padStart(2, "0") + ":00") ]) ]); + return O("div", { class: cls("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none", p2.class) }, [ + O("div", { class: "flex justify-between items-center mb-4 gap-1" }, [ + O("div", { class: "flex gap-0.5" }, [ + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(-1) }, O("span", { class: "icon-[lucide--chevrons-left]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(-1) }, O("span", { class: "icon-[lucide--chevron-left]" })) + ]), + O("span", { class: "font-bold uppercase flex-1 text-center" }, () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" })), + O("div", { class: "flex gap-0.5" }, [ + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(1) }, O("span", { class: "icon-[lucide--chevron-right]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(1) }, O("span", { class: "icon-[lucide--chevrons-right]" })) + ]) + ]), + O("div", { class: "grid grid-cols-7 gap-1", onmouseleave: () => hoverDate(null) }, [ + ...["L", "M", "X", "J", "V", "S", "D"].map((d) => O("div", { class: "text-[10px] opacity-40 font-bold text-center" }, d)), + () => { + const d = internalDate(), y2 = d.getFullYear(), m = d.getMonth(); + const firstDay = new Date(y2, m, 1).getDay(); + const offset = firstDay === 0 ? 6 : firstDay - 1; + const dim = new Date(y2, m + 1, 0).getDate(); + const cells = []; + for (let i = 0;i < offset; i++) + cells.push(O("div")); + for (let i = 1;i <= dim; i++) { + const date = new Date(y2, m, i), ds = fmt(date); + cells.push(O("button", { + type: "button", + class: () => { + const v2 = current(), h = hoverDate(); + const isStart = typeof v2 === "string" ? v2.split("T")[0] === ds : v2?.start === ds; + const isEnd = v2?.end === ds; + let inRange = false; + if (rangeMode() && v2?.start) { + const start = v2.start; + if (!v2.end && h) + inRange = ds > start && ds <= h || ds < start && ds >= h; + else if (v2.end) + inRange = ds > start && ds < v2.end; + } + const base = "btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative"; + const st = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; + const today = ds === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; + return cls(base, st, today); + }, + onmouseenter: () => rangeMode() && hoverDate(ds), + onclick: () => selectDate(date) + }, i.toString())); + } + return cells; + } + ]), + p2.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, rangeMode() ? O("div", { class: "flex gap-4" }, [HourSlider({ value: startHour, onChange: (h) => startHour(h) }), HourSlider({ value: endHour, onChange: (h) => endHour(h) })]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) })) : null + ]); }; + var Card = (p2, c) => { + if (!p2.title && !p2.body && !p2.actions && !c) + return O("div", { ...p2, class: cls("card", p2.class) }, c); + return O("div", { ...p2, class: cls("card", p2.class) }, [ + p2.title && O("div", { class: cls("card-title", p2.titleClass) }, p2.title), + (p2.body || c) && O("div", { class: cls("card-body", p2.bodyClass) }, p2.body || c), + p2.actions && O("div", { class: cls("card-actions", p2.actionsClass) }, p2.actions) + ].filter(Boolean)); + }; + var Carousel = (p2, c) => O("div", { ...p2, class: cls("carousel", p2.class) }, c); + var CarouselItem = (p2, c) => O("div", { ...p2, class: cls("carousel-item", p2.class) }, c); + var Chat = (p2, c) => O("div", { ...p2, class: cls("chat", p2.class) }, c); + var ChatBubble = (p2, c) => O("div", { ...p2, class: cls("chat-bubble", p2.class) }, c); + var ChatFooter = (p2, c) => O("div", { ...p2, class: cls("chat-footer", p2.class) }, c); + var ChatHeader = (p2, c) => O("div", { ...p2, class: cls("chat-header", p2.class) }, c); + var ChatImage = (p2, c) => O("div", { ...p2, class: cls("chat-image avatar", p2.class) }, O("div", { class: "w-10 rounded-full" }, typeof c === "string" ? O("img", { src: c, alt: "avatar" }) : c)); + var Checkbox = (p2) => O("input", { ...p2, type: "checkbox", class: cls("checkbox", p2.class) }); var Colorpicker = (p2) => { const isOpen = S(false); const current = () => get(p2.value) || "#000000"; @@ -949,102 +838,6 @@ ]) ]); }; - var Calendar = (p2) => { - const internalDate = S(new Date); - const hoverDate = S(null); - const startHour = S(0); - const endHour = S(0); - const now = new Date; - const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`; - const fmt = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; - const rangeMode = () => get(p2.range) === true; - const current = () => get(p2.value); - const selectDate = (date) => { - const s = fmt(date); - const v2 = current(); - if (rangeMode()) { - if (!v2?.start || v2.start && v2.end) { - p2.onChange?.({ start: s, end: null, ...p2.hour && { startHour: startHour() } }); - } else { - const start = v2.start; - const nv = s < start ? { start: s, end: start } : { start, end: s }; - if (p2.hour) { - nv.startHour = v2.startHour ?? startHour(); - nv.endHour = endHour(); - } - p2.onChange?.(nv); - } - } else { - p2.onChange?.(p2.hour ? `${s}T${String(startHour()).padStart(2, "0")}:00:00` : s); - } - }; - const move = (m) => { - const d = internalDate(); - internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)); - }; - const moveYear = (y2) => { - const d = internalDate(); - internalDate(new Date(d.getFullYear() + y2, d.getMonth(), 1)); - }; - const HourSlider = ({ value: hVal, onChange: onH }) => O("div", { class: "flex-1" }, [ - O("div", { class: "flex gap-2 items-center" }, [ - O("input", { type: "range", min: 0, max: 23, value: hVal, class: "range range-xs flex-1", oninput: (e) => onH(+e.target.value) }), - O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(get(hVal)).padStart(2, "0") + ":00") - ]) - ]); - return O("div", { class: cls("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none", p2.class) }, [ - O("div", { class: "flex justify-between items-center mb-4 gap-1" }, [ - O("div", { class: "flex gap-0.5" }, [ - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(-1) }, O("span", { class: "icon-[lucide--chevrons-left]" })), - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(-1) }, O("span", { class: "icon-[lucide--chevron-left]" })) - ]), - O("span", { class: "font-bold uppercase flex-1 text-center" }, () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" })), - O("div", { class: "flex gap-0.5" }, [ - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(1) }, O("span", { class: "icon-[lucide--chevron-right]" })), - O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(1) }, O("span", { class: "icon-[lucide--chevrons-right]" })) - ]) - ]), - O("div", { class: "grid grid-cols-7 gap-1", onmouseleave: () => hoverDate(null) }, [ - ...["L", "M", "X", "J", "V", "S", "D"].map((d) => O("div", { class: "text-[10px] opacity-40 font-bold text-center" }, d)), - () => { - const d = internalDate(), y2 = d.getFullYear(), m = d.getMonth(); - const firstDay = new Date(y2, m, 1).getDay(); - const offset = firstDay === 0 ? 6 : firstDay - 1; - const dim = new Date(y2, m + 1, 0).getDate(); - const cells = []; - for (let i = 0;i < offset; i++) - cells.push(O("div")); - for (let i = 1;i <= dim; i++) { - const date = new Date(y2, m, i), ds = fmt(date); - cells.push(O("button", { - type: "button", - class: () => { - const v2 = current(), h = hoverDate(); - const isStart = typeof v2 === "string" ? v2.split("T")[0] === ds : v2?.start === ds; - const isEnd = v2?.end === ds; - let inRange = false; - if (rangeMode() && v2?.start) { - const start = v2.start; - if (!v2.end && h) - inRange = ds > start && ds <= h || ds < start && ds >= h; - else if (v2.end) - inRange = ds > start && ds < v2.end; - } - const base = "btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative"; - const st = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; - const today = ds === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; - return cls(base, st, today); - }, - onmouseenter: () => rangeMode() && hoverDate(ds), - onclick: () => selectDate(date) - }, i.toString())); - } - return cells; - } - ]), - p2.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, rangeMode() ? O("div", { class: "flex gap-4" }, [HourSlider({ value: startHour, onChange: (h) => startHour(h) }), HourSlider({ value: endHour, onChange: (h) => endHour(h) })]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) })) : null - ]); - }; var Datepicker = (p2) => { const isOpen = S(false); const displayValue = S(""); @@ -1095,6 +888,23 @@ ]) ]); }; + var Drawer = (p2, c) => { + const id = p2.id || rand("drawer"); + return O("div", { class: cls("drawer", p2.class) }, [ + O("input", { id, type: "checkbox", class: "drawer-toggle", checked: () => get(p2.open), onchange: (e) => isFn(p2.open) && p2.open(e.target.checked) }), + O("div", { class: "drawer-side" }, [O("label", { for: id, class: "drawer-overlay", onclick: () => isFn(p2.open) && p2.open(false) }), O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, () => get(p2.side))]), + O("div", { class: "drawer-content" }, c) + ]); + }; + var Divider = (p2) => O("div", { ...p2, class: cls("divider", p2.class) }); + var Dropdown = (p2, c) => { + return O("div", { ...p2, class: cls("dropdown", p2.class) }, [ + O("div", { tabindex: "0", role: "button", class: cls("btn", p2.buttonClass) }, p2.label), + O("div", { tabindex: "-1", class: "dropdown-content" }, c) + ]); + }; + var Fab = (p2, c) => O("div", { class: "fab" }, [O("div", { tabindex: "0", role: "button", class: cls("btn", p2.class) }, Icon(p2.icon)), c]); + var Fieldset = (p2, c) => O("fieldset", { class: cls("fieldset", p2.class) }, [O("legend", { class: "fieldset-legend" }, p2.label), c]); var Fileinput = (p2) => { const files = S([]); const drag = S(false); @@ -1164,9 +974,217 @@ remove(idx); } }, O("span", { class: "icon-[lucide--x]" })) - ]), (file) => file.name + file.lastModified))) + ])))) ]); }; + var Icon = (p2) => O("span", { class: p2.startsWith("icon-") ? p2 : "" }, p2.startsWith("icon-") ? null : p2); + var Indicator = (p2, c) => O("div", { ...p2, class: cls("indicator", p2.class) }, [p2.value && O("span", { class: cls("indicator-item badge", p2.class) }, p2.value), c]); + var Input = (p2) => { + const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p2; + const showPassword = S(false); + const isFocused = S(false); + const isPassword = p2.type === "password"; + const pattern = rule ?? null; + const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : p2.type || "text"; + return O("div", { + class: "input-container", + onfocusin: () => isFocused(true), + onfocusout: (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) { + isFocused(false); + } + } + }, [ + O("label", { class: float ? "floating-label" : "" }, [ + float ? O("span", {}, label) : null, + O("label", { pattern, class: () => cls("input validator", p2.class) }, [ + label && !float ? O("span", { class: "label" }, label) : null, + left ?? null, + O("input", { ...rest, type: inputType, class: "grow", pattern, placeholder: placeholder || label || " ", value }), + right ?? null, + isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ + O("input", { type: "checkbox", onchange: (e) => showPassword(e.target.checked) }), + O("span", { class: "swap-on icon-[lucide--eye]" }), + O("span", { class: "swap-off icon-[lucide--eye-off]" }) + ]) : null + ]), + hint ? O("div", { class: "validator-hint" }, hint) : null, + z(isFocused, () => G({ duration: 300, slide: true }, O("div", { class: "input-content", onmousedown: (e) => e.preventDefault() }, [ + isFn(content) ? content(isFocused) : content + ]))) + ]) + ]); + }; + var Kbd = (p2, c) => O("kbd", { ...p2, class: cls("kbd", p2.class) }, c); + var List = (p2, c) => { + if (!p2.items) + return O("ul", { ...p2, class: cls("list", p2.class) }, c); + return O("ul", { ...p2, class: cls("list", p2.class) }, [ + K(p2.items, (item, i) => O("li", { class: cls("list-row", item.class) }, typeof p2.render === "function" ? p2.render(item, i) : item), p2.key) + ]); + }; + var Loading = (p2, c) => O("span", { ...p2, class: cls("loading loading-spinner", p2.class) }, c); + var Menu = (p2) => { + if (p2.children !== undefined) + return O("ul", { class: cls("menu", p2.class), ...p2 }, p2.children); + const { items } = p2; + const render = (item) => item.children ? O("li", {}, O("details", { open: item.open || undefined }, [ + O("summary", {}, getBy(item)), + O("ul", {}, K(() => get(item.children) || [], render)) + ])) : O("li", {}, O("a", { + href: item.href, + onclick: item.onclick ? (e) => { + if (!item.href) + e.preventDefault(); + item.onclick(e); + } : null + }, getBy(item))); + return O("ul", { class: cls("menu", p2.class) }, K(() => get(items) || [], render)); + }; + var Modal = (p2) => { + let dialogRef = null; + R(() => { + const isOpen = get(p2.open); + if (!dialogRef) + return; + isOpen ? dialogRef.showModal() : dialogRef.close(); + }); + const close2 = () => isFn(p2.open) && p2.open(false); + return O("dialog", { + ...p2, + ref: (el) => dialogRef = el, + class: cls("modal", p2.class), + onclose: close2, + oncancel: close2 + }, [ + O("div", { class: "modal-box" }, [ + p2.title && O("h3", { class: "text-lg font-bold" }, p2.title), + p2.children, + O("div", { class: "modal-action" }, [ + p2.actions || Button({ class: "btn", onclick: close2 }, "Cerrar") + ]) + ]), + O("form", { method: "dialog", class: "modal-backdrop" }, [ + O("button", {}, "close") + ]) + ]); + }; + var Navbar = (p2, c) => O("div", { ...p2, class: cls("navbar", p2.class) }, c); + var Progress = (p2) => O("progress", { ...p2, class: cls("progress", p2.class) }); + var Radial = (p2, c) => O("div", { ...p2, class: cls("radial-progress", p2.class), style: `--value:${p2.value ?? 0};${p2.style ?? ""}`, role: "progressbar", "aria-valuenow": p2.value ?? 0 }, c ?? `${p2.value ?? 0}%`); + var Radio = (p2) => O("input", { ...p2, type: "radio", class: cls("radio", p2.class) }); + var Range = (p2) => O("input", { ...p2, type: "range", class: cls("range", p2.class) }); + var Rating = (p2) => { + const name = rand("rating"); + const stars = p2.children ?? Array.from({ length: p2.count || 5 }, (_2, i) => { + const v2 = i + 1; + return O("input", { + type: "radio", + name, + class: cls("mask", p2.mask || "mask-star"), + checked: () => get(p2.value) === v2, + onchange: () => isFn(p2.value) ? p2.value(v2) : p2.onchange?.(v2) + }); + }); + return O("div", { class: cls("rating", p2.class), ...p2 }, stars); + }; + var Select = (p2, c) => { + if (c !== undefined) + return O("select", { class: cls("select", p2.class), ...p2 }, c); + const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p2; + const opts = () => { + const raw = get(items) || []; + const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: "" }] : []; + return [...ph, ...raw]; + }; + return O("label", { class: float ? "floating-label" : "" }, [ + float ? O("span", {}, label) : null, + O("label", { class: cls("select", rest.class) }, [ + !float && label ? O("span", { class: "label" }, label) : null, + left ?? null, + O("select", { + value: () => get(value), + onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) + }, K(opts, (item) => { + const val = getBy(item, item.value !== undefined ? "value" : undefined); + const lab = getBy(item, "label"); + return O("option", { value: val, disabled: item.disabled || undefined }, lab); + })), + right ?? null + ]), + hint ? O("div", { class: "validator-hint" }, hint) : null + ]); + }; + var Skeleton = (p2) => O("div", { ...p2, class: cls("skeleton", p2.class) }); + var SkeletonText = (p2) => O("span", { ...p2, class: cls("skeleton skeleton-text", p2.class) }); + var Stack = (p2, c) => O("div", { ...p2, class: cls("stack", p2.class) }, c); + var Steps = (p2, c) => O("ul", { ...p2, class: cls("steps", p2.class) }, c); + var Step = (p2, c) => O("li", { ...p2, class: cls("step", p2.class), "data-content": p2.dataContent }, c); + var Swap = (p2) => O("label", { ...p2, class: cls("swap", p2.class) }, [ + O("input", { type: "checkbox", checked: () => get(p2.value), onchange: (e) => isFn(p2.value) && p2.value(e.target.checked) }), + O("div", { class: "swap-on" }, p2.on), + O("div", { class: "swap-off" }, p2.off) + ]); + var Table = (p2) => { + if (p2.children !== undefined) + return O("table", { class: cls("table", p2.class), ...p2 }, p2.children); + const { items, columns = [], header = true, keyFn, ...rest } = p2; + const hd = header !== false && columns.some((c) => c.label) ? O("thead", {}, O("tr", {}, columns.map((c) => O("th", { class: c.class }, c.label)))) : null; + const bd = O("tbody", {}, K(() => get(items) || [], (it, idx) => O("tr", {}, columns.map((c) => { + const v2 = c.render ? c.render(it, idx) : it[c.key]; + return O("td", { class: c.class }, v2); + })))); + return O("table", { class: cls("table", rest.class), ...rest }, [hd, bd]); + }; + var Tabs = (p2, c) => { + if (!p2.items) { + const { class: className2, ...rest2 } = p2; + return O("div", { ...rest2, class: cls("tabs", className2) }, c); + } + const { items, activeIndex, onClose, class: className, ...rest } = p2; + const get2 = (x2) => isFn(x2) ? x2() : x2; + const closeH = onClose || (isFn(items) ? (idx, item) => { + const arr = get2(items); + const newArr = arr.filter((_2, i) => i !== idx); + items(newArr); + if (activeIndex() >= newArr.length) + activeIndex(Math.max(0, newArr.length - 1)); + } : null); + return O("div", { ...rest, class: cls("tabs", className) }, () => { + const list = get2(items) || []; + return list.flatMap((it, idx) => { + const isActive = () => activeIndex() === idx; + const button = O("button", { + class: () => `tab ${isActive() ? "tab-active" : ""} ${it.class || ""}`, + onclick: (e) => { + e.preventDefault(); + activeIndex(idx); + it.onclick?.(e); + } + }, [ + getBy(it), + it.closable ? O("span", { + class: "ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-base-300 text-base-content/60 hover:text-base-content cursor-pointer", + onclick: (e) => { + e.stopPropagation(); + closeH?.(idx, it); + } + }, O("span", { class: "icon-[lucide--x] w-3 h-3" })) : null + ]); + const contentDiv = O("div", { + class: "tab-content bg-base-100 border-base-300 p-6", + style: () => `display: ${isActive() ? "block" : "none"};` + }, isFn(it.content) ? it.content() : it.content); + return [button, contentDiv]; + }); + }); + }; + var Textarea = (p2) => O("textarea", { ...p2, class: cls("textarea", p2.class) }); + var TextRotate = (p2) => { + const words = Array.isArray(p2.words) ? p2.words : typeof p2.words === "string" ? p2.words.split(",") : []; + return O("span", { ...p2, class: cls("text-rotate", p2.class) }, O("span", {}, words.map((w2) => O("span", {}, w2)))); + }; + var Timeline = (p2, c) => O("ul", { ...p2, class: cls("timeline", p2.class) }, c); var Toast = (message, type = "alert-success", duration = 3500) => { let container = document.getElementById("sigpro-toast-container"); if (!container) { @@ -1219,34 +1237,8 @@ timer = setTimeout(closeFn, duration); return closeFn; }; - var Modal = (p2) => { - let dialogRef = null; - R(() => { - const isOpen = get(p2.open); - if (!dialogRef) - return; - isOpen ? dialogRef.showModal() : dialogRef.close(); - }); - const close = () => isFn(p2.open) && p2.open(false); - return O("dialog", { - ...p2, - ref: (el) => dialogRef = el, - class: cls("modal", p2.class), - onclose: close, - oncancel: close - }, [ - O("div", { class: "modal-box" }, [ - p2.title && O("h3", { class: "text-lg font-bold" }, p2.title), - p2.children, - O("div", { class: "modal-action" }, [ - p2.actions || Button({ class: "btn", onclick: close }, "Cerrar") - ]) - ]), - O("form", { method: "dialog", class: "modal-backdrop" }, [ - O("button", {}, "close") - ]) - ]); - }; + var Toggle = (p2) => O("input", { ...p2, type: "checkbox", class: cls("toggle", p2.class) }); + var Tooltip = (p2, c) => O("div", { ...p2, class: cls("tooltip", p2.class), "data-tip": p2.tip }, c); // components/Editor.js var exports_Editor = {}; @@ -1256,8 +1248,30 @@ var Editor = (p2) => { const { value, class: extraClass } = p2; let editorRef = null; + let savedRange = null; const isSource = S(false); const source = S(""); + const count = S(0); + const refreshTick = S(0); + const showEmojis = S(false); + const emojis = ["\uD83D\uDE00", "\uD83D\uDE0A", "\uD83D\uDE09", "\uD83E\uDDD0", "\uD83D\uDE2E", "\uD83E\uDD14", "\uD83D\uDE05", "\uD83D\uDE02", "\uD83D\uDE0D", "\uD83D\uDE18", "\uD83E\uDD70", "\uD83D\uDC4D", "\uD83D\uDC4E", "\uD83D\uDC4C", "\uD83E\uDD1D", "\uD83E\uDD1E", "\uD83D\uDC4B", "\uD83D\uDC4F", "\uD83D\uDE4C", "\uD83D\uDE4F", "\uD83D\uDCAA", "☝️", "\uD83D\uDC47", "\uD83D\uDC48", "\uD83D\uDC49", "\uD83D\uDD95", "✅", "⚠️", "\uD83D\uDE80", "\uD83D\uDCE2", "✉️", "❤️"]; + const saveSelection = () => { + const sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) + savedRange = sel.getRangeAt(0); + }; + const restoreSelection = () => { + if (savedRange) { + const sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(savedRange); + } + }; + const triggerRefresh = () => { + refreshTick(refreshTick() + 1); + if (editorRef) + count(editorRef.innerText.length); + }; const notify = () => { if (!editorRef) return; @@ -1266,23 +1280,50 @@ value(html); else p2.onchange?.(html); + triggerRefresh(); }; const exec = (cmd, val = null) => { if (!editorRef) return; editorRef.focus(); + if (savedRange) + restoreSelection(); document.execCommand(cmd, false, val); + savedRange = null; notify(); }; + const openLightbox = (src) => { + const overlay = document.createElement("div"); + overlay.style = `position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;`; + const img = document.createElement("img"); + img.src = src; + img.style = `max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;`; + overlay.onclick = () => document.body.removeChild(overlay); + overlay.appendChild(img); + document.body.appendChild(overlay); + }; + const handleUpload = (file) => { + if (!file) + return; + const reader = new FileReader; + reader.onload = (re) => { + if (file.type.startsWith("image/")) { + const imgHtml = `
 `; + exec("insertHTML", imgHtml); + } else { + const linkHtml = `${file.name} `; + exec("insertHTML", linkHtml); + } + }; + reader.readAsDataURL(file); + }; const queryState = (cmd, val = null) => { - if (!editorRef) + refreshTick(); + if (!editorRef || isSource()) return false; try { if (cmd === "formatBlock") { - const sel = window.getSelection(); - if (!sel.rangeCount) - return false; - let node = sel.getRangeAt(0).commonAncestorContainer; + let node = window.getSelection().getRangeAt(0).commonAncestorContainer; while (node && node !== editorRef) { if (node.nodeType === 1 && node.tagName === val) return true; @@ -1295,92 +1336,152 @@ return false; } }; - const toolbar = O("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200" }, [ - O("div", { class: "flex flex-wrap gap-1 flex-1" }, [ + const toolbar = O("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20" }, [ + O("div", { class: "flex flex-wrap gap-1 flex-1 items-center" }, [ + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("bold") ? "btn-active bg-primary/20" : ""}`, onclick: () => exec("bold") }, O("span", { class: "icon-[lucide--bold]" })), + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("italic") ? "btn-active bg-primary/20" : ""}`, onclick: () => exec("italic") }, O("span", { class: "icon-[lucide--italic]" })), + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("underline") ? "btn-active bg-primary/20" : ""}`, onclick: () => exec("underline") }, O("span", { class: "icon-[lucide--underline]" })), + O("input", { type: "color", class: "w-5 h-5 p-0 border-0 bg-transparent cursor-pointer", oninput: (e) => exec("foreColor", e.target.value) }), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), O("button", { type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("bold") ? "btn-active" : ""}`, - onclick: () => exec("bold") - }, O("span", { class: "icon-[lucide--bold]" })), + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyLeft") + }, O("span", { class: "icon-[lucide--align-left]" })), O("button", { type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("italic") ? "btn-active" : ""}`, - onclick: () => exec("italic") - }, O("span", { class: "icon-[lucide--italic]" })), + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyCenter") + }, O("span", { class: "icon-[lucide--align-center]" })), O("button", { type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("underline") ? "btn-active" : ""}`, - onclick: () => exec("underline") - }, O("span", { class: "icon-[lucide--underline]" })), - O("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("strikeThrough") ? "btn-active" : ""}`, - onclick: () => exec("strikeThrough") - }, O("span", { class: "icon-[lucide--strikethrough]" })), + class: "btn btn-ghost btn-xs", + onclick: () => exec("justifyRight") + }, O("span", { class: "icon-[lucide--align-right]" })), O("span", { class: "w-px h-5 bg-base-300 mx-1" }), O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertUnorderedList") }, O("span", { class: "icon-[lucide--list]" })), O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertOrderedList") }, O("span", { class: "icon-[lucide--list-ordered]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("outdent"), title: "Mover izquierda" }, O("span", { class: "icon-[lucide--indent-decrease]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("indent"), title: "Mover derecha (Tab)" }, O("span", { class: "icon-[lucide--indent-increase]" })), + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${queryState("formatBlock", "BLOCKQUOTE") ? "btn-active" : ""}`, onclick: () => exec("formatBlock", queryState("formatBlock", "BLOCKQUOTE") ? "P" : "BLOCKQUOTE") }, O("span", { class: "icon-[lucide--quote]" })), O("span", { class: "w-px h-5 bg-base-300 mx-1" }), - O("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${queryState("formatBlock", "BLOCKQUOTE") ? "btn-active" : ""}`, - onclick: () => exec("formatBlock", queryState("formatBlock", "BLOCKQUOTE") ? "P" : "BLOCKQUOTE") - }, O("span", { class: "icon-[lucide--quote]" })), - O("span", { class: "w-px h-5 bg-base-300 mx-1" }), - O("select", { class: "select select-xs w-16", onchange: (e) => exec("fontSize", e.target.value), value: "3" }, [ - O("option", { value: "1" }, "1"), - O("option", { value: "2" }, "2"), - O("option", { value: "3" }, "3"), - O("option", { value: "4" }, "4"), - O("option", { value: "5" }, "5"), - O("option", { value: "6" }, "6"), - O("option", { value: "7" }, "7") + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => { + const url = window.prompt("URL:"); + if (url) + exec("createLink", url); + } }, O("span", { class: "icon-[lucide--link]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => { + const input = document.createElement("input"); + input.type = "file"; + input.onchange = (e) => handleUpload(e.target.files[0]); + input.click(); + } }, O("span", { class: "icon-[lucide--paperclip]" })), + O("div", { class: "relative" }, [ + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: (e) => { + e.stopPropagation(); + saveSelection(); + showEmojis(!showEmojis()); + } }, O("span", { class: "icon-[lucide--smile]" })), + O("div", { class: "absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1", style: () => showEmojis() ? "display:flex" : "display:none" }, emojis.map((emo) => O("span", { class: "cursor-pointer hover:bg-base-200 p-1 rounded text-lg", onclick: (e) => { + e.stopPropagation(); + exec("insertText", emo); + showEmojis(false); + } }, emo))) ]), O("span", { class: "w-px h-5 bg-base-300 mx-1" }), - O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo") }, O("span", { class: "icon-[lucide--undo-2]" })), - O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo") }, O("span", { class: "icon-[lucide--redo-2]" })) + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("removeFormat") }, O("span", { class: "icon-[lucide--eraser]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo"), title: "Deshacer" }, O("span", { class: "icon-[lucide--undo-2]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo"), title: "Rehacer" }, O("span", { class: "icon-[lucide--redo-2]" })) ]), - O("div", { class: "flex" }, [ - O("button", { - type: "button", - class: () => `btn btn-ghost btn-xs ${isSource() ? "btn-active" : ""}`, - onclick: () => { - const wasSource = isSource(); - if (!wasSource) { - source(editorRef?.innerHTML || ""); - } else { - if (editorRef) { - editorRef.innerHTML = source(); - notify(); - } - } - isSource(!wasSource); - } - }, O("span", { class: "icon-[lucide--code-2]" })) - ]) + O("button", { type: "button", class: () => `btn btn-ghost btn-xs ${isSource() ? "btn-active" : ""}`, onclick: () => { + if (!isSource()) + source(editorRef?.innerHTML || ""); + else if (editorRef) { + editorRef.innerHTML = source(); + notify(); + } + isSource(!isSource()); + } }, O("span", { class: "icon-[lucide--code-2]" })) ]); - return O("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden", extraClass) }, [ + if (typeof document !== "undefined" && !document.getElementById("editor-styles")) { + const style = document.createElement("style"); + style.id = "editor-styles"; + style.textContent = ` + [contenteditable="true"] div, + [contenteditable="true"] p { + margin: 0; + padding: 0; + } + `; + document.head.appendChild(style); + } + return O("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col", extraClass) }, [ toolbar, - O("div", { class: "relative" }, [ + O("div", { class: "relative flex-1 flex flex-col", onclick: () => showEmojis(false) }, [ O("div", { ref: (el) => { if (!editorRef && el) { editorRef = el; el.innerHTML = get(value) || ""; + document.execCommand("defaultParagraphSeparator", false, "br"); + el.addEventListener("click", (e) => { + const container = e.target.closest(".resizable-img-container"); + if (container) { + const img = container.querySelector("img"); + if (img) + openLightbox(img.src); + } + }); } }, - style: () => `min-height:10rem;${isSource() ? "display:none" : ""}`, - class: "p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]", + style: () => `min-height:22rem;${isSource() ? "display:none" : ""}`, + class: "p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8", contenteditable: "true", oninput: notify, - onpaste: () => setTimeout(notify, 0) + onkeydown: (e) => { + if (e.key === "Tab") { + e.preventDefault(); + exec("indent"); + } + }, + onkeyup: () => { + triggerRefresh(); + saveSelection(); + }, + onclick: (e) => { + triggerRefresh(); + saveSelection(); + e.stopPropagation(); + }, + onmouseup: () => { + notify(); + saveSelection(); + }, + onpaste: (e) => { + e.preventDefault(); + const text = e.clipboardData.getData("text/plain"); + exec("insertText", text); + }, + ondragover: (e) => e.preventDefault(), + ondrop: (e) => { + e.preventDefault(); + handleUpload(e.dataTransfer.files[0]); + } }), O("textarea", { - class: "w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0", + class: "w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0", style: () => isSource() ? "" : "display:none", value: source, - oninput: (e) => source(e.target.value) + oninput: (e) => { + source(e.target.value); + if (editorRef) + editorRef.innerHTML = e.target.value; + p2.onchange?.(e.target.value); + } }) + ]), + O("div", { class: "px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic" }, [ + O("span", () => `${count()} caracteres`) ]) ]); }; diff --git a/dist/sigpro-ui.min.css b/dist/sigpro-ui.min.css index ed139df..28c1be8 100644 --- a/dist/sigpro-ui.min.css +++ b/dist/sigpro-ui.min.css @@ -1,2 +1,2 @@ /*! 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-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-space-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-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-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-duration: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-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--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:calc(1.5 / 1);--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:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--drop-shadow-2xl:0 25px 25px #00000026;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl:64px;--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)}}@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;-webkit-text-decoration: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}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}@property --radialprogress{syntax:"";inherits:true;initial-value:0%}:root:not(span){overflow:var(--page-overflow)}:root{background:var(--page-scroll-bg,var(--root-bg));--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset) ; else: unset)}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background:var(--page-scroll-bg,var(--root-bg));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(25% .006 285);--color-primary:oklch(25% .006 285);--color-primary-content:oklch(98% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(98% 0 0);--color-accent:oklch(96% 0 0);--color-accent-content:oklch(25% .006 285);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(62% .17 163);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .18 84);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(60% .25 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}:where(.drawer-side){overflow:hidden}.drawer-side{pointer-events:none;visibility:hidden;z-index:10;overscroll-behavior:contain;opacity:0;width:100%;transition:opacity .2s ease-out .1s allow-discrete, visibility .3s ease-out .1s allow-discrete;inset-inline-start:0;background-color:#0000;grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));grid-row-start:1;grid-column-start:1;place-items:flex-start start;height:100dvh;display:grid;position:fixed;top:0}.drawer-side>.drawer-overlay{cursor:pointer;background-color:oklch(0% 0 0/.4);place-self:stretch stretch;position:sticky;top:0}.drawer-side>*{grid-row-start:1;grid-column-start:1}.drawer-side>:not(.drawer-overlay){will-change:transform;transition:translate .3s ease-out,width .2s ease-out;translate:-100%}[dir=rtl] :is(.drawer-side>:not(.drawer-overlay)){translate:100%}.fab{pointer-events:none;z-index:999;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;inset-inline-end:1rem;flex-direction:column-reverse;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem}.fab>*{pointer-events:auto;align-items:center;gap:.5rem;display:flex}.fab>:hover,.fab>:has(:focus-visible){z-index:1}.fab>[tabindex]:first-child{transition-property:opacity,visibility,rotate;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:grid;position:relative}.fab .fab-close,.fab .fab-main-action{inset-inline-end:0;position:absolute;bottom:0}:is(.fab:focus-within:has(.fab-close),.fab:focus-within:has(.fab-main-action))>[tabindex]{opacity:0;rotate:90deg}.fab:focus-within>[tabindex]:first-child{pointer-events:none}.fab:focus-within>:nth-child(n+2){visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:1}.fab>:nth-child(n+2){visibility:hidden;--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0;transition-property:opacity,scale,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fab>:nth-child(n+2).fab-main-action,.fab>:nth-child(n+2).fab-close{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.fab>:nth-child(3){transition-delay:30ms}.fab>:nth-child(4){transition-delay:60ms}.fab>:nth-child(5){transition-delay:90ms}.fab>:nth-child(6){transition-delay:.12s}.drawer-toggle{appearance:none;opacity:0;width:0;height:0;position:fixed}:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:currentColor oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}@supports (color:color-mix(in lab, red, red)){:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}}:where(:root:has(.drawer-toggle:checked)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media (prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.tab\!{cursor:pointer!important;appearance:none!important;text-align:center!important;webkit-user-select:none!important;-webkit-user-select:none!important;user-select:none!important;flex-wrap:wrap!important;justify-content:center!important;align-items:center!important;display:inline-flex!important;position:relative!important}@media (hover:hover){.tab\!:hover{color:var(--color-base-content)!important}}.tab\!{--tab-p:.75rem!important;--tab-bg:var(--color-base-100)!important;--tab-border-color:var(--color-base-300)!important;--tab-radius-ss:0!important;--tab-radius-se:0!important;--tab-radius-es:0!important;--tab-radius-ee:0!important;--tab-order:0!important;--tab-radius-min:calc(.75rem - var(--border))!important;--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min))!important;--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px)!important;order:var(--tab-order)!important;height:var(--tab-height)!important;padding-inline:var(--tab-p)!important;border-color:#0000!important;font-size:.875rem!important}.tab\!:is(input[type=radio]){min-width:fit-content!important}.tab\!:is(input[type=radio]):after{--tw-content:attr(aria-label)!important;content:var(--tw-content)!important}.tab\!:is(label){position:relative!important}.tab\!:is(label) input{cursor:pointer!important;appearance:none!important;opacity:0!important;position:absolute!important;inset:0!important}:is(.tab\!:checked,.tab\!:is(label:has(:checked)),.tab\!:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block!important}.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)!important}@supports (color:color-mix(in lab, red, red)){.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)!important}}.tab\!:not(input):empty{cursor:default!important;flex-grow:1!important}.tab\!:focus{--tw-outline-style:none!important;outline-style:none!important}@media (forced-colors:active){.tab\!:focus{outline-offset:2px!important;outline:2px solid #0000!important}}.tab\!:focus-visible,.tab\!:is(label:has(:checked:focus-visible)){outline-offset:-5px!important;outline:2px solid!important}.tab\![disabled]{pointer-events:none!important;opacity:.4!important}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.floating-label{display:block;position:relative}.floating-label input{display:block}.floating-label input::placeholder,.floating-label textarea::placeholder{transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out}.floating-label>span{z-index:1;background-color:var(--color-base-100);opacity:0;inset-inline-start:.75rem;top:calc(var(--size-field,.25rem) * 10 / 2);pointer-events:none;border-radius:2px;padding-inline:.25rem;font-size:.875rem;line-height:1;transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out;position:absolute;translate:0 -50%}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown))) ::placeholder{opacity:0;pointer-events:auto;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown)))>span{opacity:1;pointer-events:auto;z-index:2;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}.floating-label:has(:disabled,[disabled])>span{opacity:0}.floating-label:has(.input-xs,.select-xs,.textarea-xs) span{top:calc(var(--size-field,.25rem) * 6 / 2);font-size:.6875rem}.floating-label:has(.input-sm,.select-sm,.textarea-sm) span{top:calc(var(--size-field,.25rem) * 8 / 2);font-size:.75rem}.floating-label:has(.input-md,.select-md,.textarea-md) span{top:calc(var(--size-field,.25rem) * 10 / 2);font-size:.875rem}.floating-label:has(.input-lg,.select-lg,.textarea-lg) span{top:calc(var(--size-field,.25rem) * 12 / 2);font-size:1.125rem}.floating-label:has(.input-xl,.select-xl,.textarea-xl) span{top:calc(var(--size-field,.25rem) * 14 / 2);font-size:1.375rem}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);--size:calc(var(--size-field,.25rem) * 10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-noise:var(--fx-noise)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}.validator-hint{visibility:hidden;margin-top:.5rem;font-size:.75rem}.validator:user-valid{--input-color:var(--color-success)}.validator:user-valid:focus{--input-color:var(--color-success)}.validator:user-valid:checked{--input-color:var(--color-success)}.validator:user-valid[aria-checked=true]{--input-color:var(--color-success)}.validator:user-valid:focus-within{--input-color:var(--color-success)}.validator:has(:user-valid){--input-color:var(--color-success)}.validator:has(:user-valid):focus{--input-color:var(--color-success)}.validator:has(:user-valid):checked{--input-color:var(--color-success)}.validator:has(:user-valid)[aria-checked=true]{--input-color:var(--color-success)}.validator:has(:user-valid):focus-within{--input-color:var(--color-success)}.validator:user-invalid{--input-color:var(--color-error)}.validator:user-invalid:focus{--input-color:var(--color-error)}.validator:user-invalid:checked{--input-color:var(--color-error)}.validator:user-invalid[aria-checked=true]{--input-color:var(--color-error)}.validator:user-invalid:focus-within{--input-color:var(--color-error)}.validator:user-invalid~.validator-hint{visibility:visible;color:var(--color-error)}.validator:has(:user-invalid){--input-color:var(--color-error)}.validator:has(:user-invalid):focus{--input-color:var(--color-error)}.validator:has(:user-invalid):checked{--input-color:var(--color-error)}.validator:has(:user-invalid)[aria-checked=true]{--input-color:var(--color-error)}.validator:has(:user-invalid):focus-within{--input-color:var(--color-error)}.validator:has(:user-invalid)~.validator-hint{visibility:visible;color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))),:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):checked,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))[aria-checked=true],:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus-within{--input-color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{visibility:visible;color:var(--color-error)}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size) / 10);--radialprogress:calc(var(--value) * 1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0);webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness) / 2);transform:rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input{--size:calc(var(--size-field,.25rem) * 10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.indicator{width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--indicator-t,0);bottom:var(--indicator-b,auto);left:var(--indicator-s,auto);right:var(--indicator-e,0);translate:var(--indicator-x,50%) var(--indicator-y,-50%);position:absolute}.table{border-collapse:separate;--tw-border-spacing-x:calc(.25rem * 0);--tw-border-spacing-y:calc(.25rem * 0);width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:"";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.chat-bubble{border-radius:var(--radius-field);background-color:var(--color-base-300);width:fit-content;color:var(--color-base-content);grid-row-end:3;min-width:2.5rem;max-width:90%;min-height:2rem;padding-block:.5rem;padding-inline:1rem;display:block;position:relative}.chat-bubble:before{background-color:inherit;content:"";width:.75rem;height:.75rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-chat);-webkit-mask-image:var(--mask-chat);mask-image:var(--mask-chat);position:absolute;bottom:0;-webkit-mask-position:0 -1px;mask-position:0 -1px;-webkit-mask-size:.8125rem;mask-size:.8125rem}.select{border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{--size:calc(var(--size-field,.25rem) * 10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0, 1fr)) auto var(--timeline-row-end,minmax(0, 1fr));grid-template-columns:var(--timeline-col-start,minmax(0, 1fr)) auto var(--timeline-col-end,minmax(0, 1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border) solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox{border:var(--border) solid var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 0 #0000 inset, 0 0 #0000;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:0deg}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;display:inline-flex;position:relative}.rating input{appearance:none;border:none}.rating :where(*){background-color:var(--color-base-content);opacity:.2;border-radius:0;width:1.5rem;height:1.5rem}@media (prefers-reduced-motion:no-preference){.rating :where(*){animation:.25s ease-out rating}}.rating :where(*):is(input){cursor:pointer}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating input[type=radio]:checked{background-image:none}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.rating\!{vertical-align:middle!important;display:inline-flex!important;position:relative!important}.rating\! input{appearance:none!important;border:none!important}.rating\! :where(*){background-color:var(--color-base-content)!important;opacity:.2!important;border-radius:0!important;width:1.5rem!important;height:1.5rem!important}@media (prefers-reduced-motion:no-preference){.rating\! :where(*){animation:.25s ease-out rating!important}}.rating\! :where(*):is(input){cursor:pointer!important}.rating\! .rating-hidden{background-color:#0000!important;width:.5rem!important}.rating\! input[type=radio]:checked{background-image:none!important}.rating\! :checked,.rating\! [aria-checked=true],.rating\! [aria-current=true],.rating\! :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1!important}.rating\! :focus-visible{scale:1.1!important}@media (prefers-reduced-motion:no-preference){.rating\! :focus-visible{transition:scale .2s ease-out!important}}.rating\! :active:focus{animation:none!important;scale:1.1!important}.navbar{align-items:center;width:100%;min-height:4rem;padding:.5rem;display:flex}.drawer{grid-auto-columns:max-content auto;width:100%;display:grid;position:relative}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.stats{border-radius:var(--radius-box);grid-auto-flow:column;display:inline-grid;position:relative;overflow-x:auto}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border) solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.timeline-end{grid-area:3/1/4/4;place-self:flex-start center;margin:.25rem}.timeline-start{grid-area:1/1/2/4;place-self:flex-end center;margin:.25rem}.stat-figure{grid-row:1/span 3;grid-column-start:2;place-self:center flex-end}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.drawer-content{grid-row-start:1;grid-column-start:2;min-width:0}.timeline-middle{grid-row-start:2;grid-column-start:2}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-desc{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-desc{font-size:.75rem}.stat-title{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-title{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-title{font-size:.75rem}.stat-actions{white-space:nowrap;grid-column-start:1}.chat-image{grid-row:span 2/span 2;align-self:flex-end}.chat-footer{grid-row-start:3;gap:.25rem;font-size:.6875rem;display:flex}.chat-header{grid-row-start:1;gap:.25rem;font-size:.6875rem;display:flex}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.divider{--divider-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.fieldset-legend{color:var(--color-base-content);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:-.25rem;padding-block:.5rem;font-weight:600;display:flex}.carousel-item{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-block}@supports (color:color-mix(in lab, red, red)){.status{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.status{vertical-align:middle;color:#0000004d;background-position:50%;background-repeat:no-repeat}@supports (color:color-mix(in lab, red, red)){.status{color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.status{background-image:radial-gradient(circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * .5)), #0000);box-shadow:0 2px 3px -1px}@supports (color:color-mix(in lab, red, red)){.status{box-shadow:0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000)}}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.kbd{border-radius:var(--radius-field);background-color:var(--color-base-200);vertical-align:middle;border:var(--border) solid var(--color-base-content);justify-content:center;align-items:center;padding-inline:.5em;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.kbd{border:var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{border-bottom:calc(var(--border) + 1px) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.kbd{border-bottom:calc(var(--border) + 1px) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{--size:calc(var(--size-selector,.25rem) * 6);height:var(--size);min-width:var(--size);font-size:.875rem}.text-rotate{vertical-align:bottom;white-space:nowrap;--duration:var(--tw-duration);transition-property:none;display:inline-block;overflow:hidden}.text-rotate>*{height:calc(var(--items,1) * 100%);justify-items:start;display:grid}.text-rotate>:has(:nth-child(2)){--items:2;animation:rotator var(--duration,10s) linear(0 0% 49%, .5 50% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(3)){--items:3;animation:rotator var(--duration,10s) linear(0 0% 32%, .333333 33% 65%, .666666 66% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(4)){--items:4;animation:rotator var(--duration,10s) linear(0 0% 24%, .25 25% 49%, .5 50% 74%, .75 75% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(5)){--items:5;animation:rotator var(--duration,10s) linear(0 0% 19%, .2 20% 39%, .4 40% 59%, .6 60% 79%, .8 80% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(6)){--items:6;animation:rotator var(--duration,10s) linear(0 0% 15%, .16666 16% 32%, .333333 33% 49%, .5 50% 65%, .666666 66% 82%, .833333 83% 99%, 1 100% 100%) infinite}.text-rotate>*>*{clip-path:inset(.5px 0);align-content:baseline}.text-rotate>*>:first-child{translate:var(--first-item-position)}.text-rotate:hover>*{animation-play-state:paused}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem) * 10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stat:not(:last-child){border-block-end:none}.navbar-end{justify-content:flex-end;align-items:center;width:50%;display:inline-flex}.navbar-start{justify-content:flex-start;align-items:center;width:50%;display:inline-flex}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.navbar-center{flex-shrink:0;align-items:center;display:inline-flex}.fieldset-label{color:var(--color-base-content);align-items:center;gap:.375rem;display:flex}@supports (color:color-mix(in lab, red, red)){.fieldset-label{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.fieldset-label:has(input){cursor:pointer}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){.carousel{scroll-behavior:smooth}}.carousel::-webkit-scrollbar{display:none}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.fieldset{grid-template-columns:1fr;grid-auto-rows:max-content;gap:.375rem;padding-block:.25rem;font-size:.75rem;display:grid}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e");grid-auto-rows:min-content;column-gap:.75rem;padding-block:.25rem;display:grid}.card-actions{flex-wrap:wrap;align-items:flex-start;gap:.5rem;display:flex}.card-title{font-size:var(--cardtitle-fs,1.125rem);align-items:center;gap:.5rem;font-weight:600;display:flex}.mask{vertical-align:middle;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.timeline-box{border:var(--border) solid;border-radius:var(--radius-box);border-color:var(--color-base-300);background-color:var(--color-base-100);padding-block:.5rem;padding-inline:1rem;font-size:.75rem;box-shadow:0 1px 2px oklch(0% 0 0/.05)}.btn-accent{--btn-color:var(--color-accent);--btn-fg:var(--color-accent-content)}.btn-error{--btn-color:var(--color-error);--btn-fg:var(--color-error-content)}.btn-info{--btn-color:var(--color-info);--btn-fg:var(--color-info-content)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}.btn-success{--btn-color:var(--color-success);--btn-fg:var(--color-success-content)}.btn-warning{--btn-color:var(--color-warning);--btn-fg:var(--color-warning-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}:where(.drawer-toggle:checked~.drawer-side){pointer-events:auto;visibility:visible;opacity:1;overflow-y:auto}:where(.drawer-toggle:checked~.drawer-side)>:not(.drawer-overlay){translate:0%}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline:2px solid}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn-disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn-disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn-disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.tab-disabled{pointer-events:none;opacity:.4}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.tabs-lift{--tabs-height:auto;--tabs-direction:row}.tabs-lift>.tab{--tab-border:0 0 var(--border) 0;--tab-radius-ss:var(--tab-radius-limit);--tab-radius-se:var(--tab-radius-limit);--tab-radius-es:0;--tab-radius-ee:0;--tab-paddings:var(--border) var(--tab-p) 0 var(--tab-p);--tab-border-colors:#0000 #0000 var(--tab-border-color) #0000;--tab-corner-width:calc(100% + var(--tab-radius-limit) * 2);--tab-corner-height:var(--tab-radius-limit);--tab-corner-position:top left, top right;border-width:var(--tab-border);padding:var(--tab-paddings);border-color:var(--tab-border-colors);border-start-start-radius:var(--tab-radius-ss);border-start-end-radius:var(--tab-radius-se);border-end-end-radius:var(--tab-radius-ee);border-end-start-radius:var(--tab-radius-es)}.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked)){--tab-border:var(--border) var(--border) 0 var(--border);--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color);--tab-paddings:0 calc(var(--tab-p) - var(--border)) var(--border) calc(var(--tab-p) - var(--border));--tab-inset:auto auto 0 auto;--radius-start:radial-gradient(circle at top left, var(--tab-radius-grad));--radius-end:radial-gradient(circle at top right, var(--tab-radius-grad));background-color:var(--tab-bg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):before{z-index:1;content:"";width:var(--tab-corner-width);height:var(--tab-corner-height);background-position:var(--tab-corner-position);background-image:var(--radius-start), var(--radius-end);background-size:var(--tab-radius-limit) var(--tab-radius-limit);inset:var(--tab-inset);background-repeat:no-repeat;display:block;position:absolute}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{--radius-start:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{transform:rotateY(180deg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{--radius-end:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{transform:rotateY(180deg)}.tabs-lift:has(>.tab-content)>.tab:first-child:not(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color)}.tabs-lift>.tab-content{--tabcontent-margin:calc(-1 * var(--border)) 0 0 0;--tabcontent-radius-ss:0;--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box)}:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:first-child,:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:nth-child(n+3){--tabcontent-radius-ss:var(--radius-box)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.tabs-border>.tab{--tab-border-color:#0000 #0000 var(--tab-border-color) #0000;border-radius:var(--radius-field);position:relative}.tabs-border>.tab:before{content:"";background-color:var(--tab-border-color);border-radius:var(--radius-field);width:80%;height:3px;transition:background-color .2s;position:absolute;bottom:0;left:10%}:is(.tabs-border>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-border>.tab:is(input:checked),.tabs-border>.tab:is(label:has(:checked))):before{--tab-border-color:currentColor;border-top:3px solid}.menu-horizontal{flex-direction:row;display:inline-flex}.menu-horizontal>li:not(.menu-title)>details>ul{transform-origin:top;border-radius:var(--radius-box);background-color:var(--color-base-100);opacity:0;margin-inline-start:0;margin-top:1rem;padding-block:.5rem;padding-inline-end:.5rem;position:absolute;scale:.95;box-shadow:0 1px 3px oklch(0% 0 0/.1),0 1px 2px -1px oklch(0% 0 0/.1)}@media (prefers-reduced-motion:no-preference){@starting-style{.menu-horizontal>li:not(.menu-title)>details>ul{opacity:0;scale:.95}}.menu-horizontal>li:not(.menu-title)>details>ul{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s menu}}.menu-horizontal>li:not(.menu-title)>details[open]>ul{opacity:1;scale:1}.menu-horizontal>li>details>ul:before{--tw-content:none;content:var(--tw-content)}.menu-vertical{flex-direction:column;display:inline-flex}.menu-vertical>li:not(.menu-title)>details>ul{background-color:revert-layer;border-radius:revert-layer;animation:revert-layer;box-shadow:revert-layer;margin-inline-start:1rem;margin-top:0;padding-block:0;padding-inline-end:0;transition:revert-layer;position:relative}.checkbox:disabled,.radio:disabled{cursor:not-allowed;opacity:.2}.rating.rating-xs :where(:not(.rating-hidden)){width:1rem;height:1rem}.rating.rating-sm :where(:not(.rating-hidden)){width:1.25rem;height:1.25rem}.rating.rating-md :where(:not(.rating-hidden)){width:1.5rem;height:1.5rem}.rating.rating-lg :where(:not(.rating-hidden)){width:1.75rem;height:1.75rem}.rating.rating-xl :where(:not(.rating-hidden)){width:2rem;height:2rem}.rating\!.rating-xs :where(:not(.rating-hidden)){width:1rem!important;height:1rem!important}.rating\!.rating-sm :where(:not(.rating-hidden)){width:1.25rem!important;height:1.25rem!important}.rating\!.rating-md :where(:not(.rating-hidden)){width:1.5rem!important;height:1.5rem!important}.rating\!.rating-lg :where(:not(.rating-hidden)){width:1.75rem!important;height:1.75rem!important}.rating\!.rating-xl :where(:not(.rating-hidden)){width:2rem!important;height:2rem!important}:where(.navbar){position:relative}.tooltip-bottom>.tooltip-content,.tooltip-bottom[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem));inset:var(--tt-off) auto auto 50%}.tooltip-bottom:after{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem)) rotate(180deg);inset:var(--tt-tail) auto auto 50%}.tooltip-left>.tooltip-content,.tooltip-left[data-tip]:before{transform:translateX(calc(var(--tt-pos,.25rem) - .25rem)) translateY(-50%);inset:50% var(--tt-off) auto auto}.tooltip-left:after{transform:translateX(var(--tt-pos,.25rem)) translateY(-50%) rotate(-90deg);inset:50% calc(var(--tt-tail) + 1px) auto auto}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translateX(calc(var(--tt-pos,-.25rem) + .25rem)) translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translateX(var(--tt-pos,-.25rem)) translateY(-50%) rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.tooltip-top>.tooltip-content,.tooltip-top[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip-top:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.dropdown-right{--anchor-h:right;--anchor-v:span-bottom}.dropdown-right .dropdown-content{transform-origin:0;inset-inline-start:100%;top:0;bottom:auto}.dropdown-left{--anchor-h:left;--anchor-v:span-bottom}.dropdown-left .dropdown-content{transform-origin:100%;inset-inline-end:100%;top:0;bottom:auto}.dropdown-end{--anchor-h:span-left}.dropdown-end :where(.dropdown-content){inset-inline-end:0;translate:0}[dir=rtl] :is(.dropdown-end :where(.dropdown-content)){translate:0}.dropdown-end.dropdown-left{--anchor-h:left;--anchor-v:span-top}.dropdown-end.dropdown-left .dropdown-content{top:auto;bottom:0}.dropdown-end.dropdown-right{--anchor-h:right;--anchor-v:span-top}.dropdown-end.dropdown-right .dropdown-content{top:auto;bottom:0}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.dropdown-top{--anchor-v:top}.dropdown-top .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn-active{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);isolation:isolate}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.tabs-box{background-color:var(--color-base-200);--tabs-box-radius:calc(3 * var(--radius-field));border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)));box-shadow:0 -.5px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 .5px oklch(0% 0 0 / calc(var(--depth) * .05)) inset;padding:.25rem}.tabs-box>.tab{border-radius:var(--radius-field);border-style:none}.tabs-box>.tab:focus-visible,.tabs-box>.tab:is(label:has(:checked:focus-visible)){outline-offset:2px}.tabs-box>.tab:focus-visible{z-index:1}.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){background-color:var(--tab-bg,var(--color-base-100));box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral)}@supports (color:color-mix(in lab, red, red)){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000)}}@media (forced-colors:active){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){border:1px solid}}.tabs-box>.tab-content{height:calc(100% - var(--tab-height) + var(--border) - .5rem);border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)) - var(--border));margin-top:.25rem}.timeline-horizontal{flex-direction:row}.timeline-horizontal>li{align-items:center}.timeline-horizontal>li>hr{width:100%;height:.25rem}.timeline-horizontal>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline-horizontal>li>hr:last-child{grid-area:2/3/auto/none}.timeline-horizontal .timeline-start{grid-area:1/1/2/4;place-self:flex-end center}.timeline-horizontal .timeline-end{grid-area:3/1/4/4;place-self:flex-start center}.timeline-horizontal:has(.timeline-middle)>li>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-horizontal:has(.timeline-middle)>li>hr:last-child,.timeline-horizontal:not(:has(.timeline-middle)) :first-child>hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline-horizontal:not(:has(.timeline-middle)) :last-child>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-vertical{flex-direction:column}.timeline-vertical>li{--timeline-row-start:minmax(0, 1fr);--timeline-row-end:minmax(0, 1fr);justify-items:center}.timeline-vertical>li>hr{width:.25rem;height:100%}.timeline-vertical>li>hr:first-child{grid-row-start:1;grid-column-start:2}.timeline-vertical>li>hr:last-child{grid-area:3/2/none}.timeline-vertical .timeline-start{grid-area:1/1/4/2;place-self:center flex-end}.timeline-vertical .timeline-end{grid-area:1/3/4/4;place-self:center flex-start}.timeline-vertical:has(.timeline-middle)>li>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical:has(.timeline-middle)>li>hr:last-child,.timeline-vertical:not(:has(.timeline-middle)) :first-child>hr:last-child{border-top-left-radius:var(--radius-selector);border-top-right-radius:var(--radius-selector);border-bottom-right-radius:0;border-bottom-left-radius:0}.timeline-vertical:not(:has(.timeline-middle)) :last-child>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical.timeline-snap-icon>li{--timeline-col-start:minmax(0, 1fr);--timeline-row-start:.5rem}.timeline-compact{--timeline-row-start:0}.timeline-compact .timeline-start{grid-area:3/1/4/4;place-self:flex-start center}.timeline-compact li:has(.timeline-start) .timeline-end{grid-row-start:auto;grid-column-start:none}.timeline-compact.timeline-vertical>li{--timeline-col-start:0}.timeline-compact.timeline-vertical .timeline-start{grid-area:1/3/4/4;place-self:center flex-start}.timeline-compact.timeline-vertical li:has(.timeline-start) .timeline-end{grid-row-start:none;grid-column-start:auto}.drawer-end{grid-auto-columns:auto max-content}.drawer-end>.drawer-toggle~.drawer-content{grid-column-start:1}.drawer-end>.drawer-toggle~.drawer-side{grid-column-start:2;justify-items:end}.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay){translate:100%}[dir=rtl] :is(.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay)){translate:-100%}.drawer-end>.drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){translate:0%}.input-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:max(var(--font-size,1.125rem), 1.125rem)}.input-lg[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-md{--size:calc(var(--size-field,.25rem) * 10);font-size:max(var(--font-size,.875rem), .875rem)}.input-md[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:max(var(--font-size,.75rem), .75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:max(var(--font-size,.6875rem), .6875rem)}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.modal-bottom{place-items:end}.modal-bottom .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.modal-middle{place-items:center}.modal-middle .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:.98}.modal-top{place-items:start}.modal-top .modal-box{--modal-tl:0;--modal-tr:0;--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 -100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-square{width:var(--size);height:var(--size);padding-inline:0}.btn-wide{width:100%;max-width:16rem}.btn-block{width:100%}.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{rotate:45deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-on,.swap-rotate.swap-active .swap-on{rotate:0deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-off,.swap-rotate.swap-active .swap-off{rotate:-45deg}.swap-flip{transform-style:preserve-3d;perspective:20rem}.swap-flip .swap-on,.swap-flip .swap-indeterminate,.swap-flip input:indeterminate~.swap-on{backface-visibility:hidden;transform:rotateY(180deg)}.swap-flip input:is(:checked,:indeterminate)~.swap-on,.swap-flip.swap-active .swap-on{transform:rotateY(0)}.swap-flip input:is(:checked,:indeterminate)~.swap-off,.swap-flip.swap-active .swap-off{backface-visibility:hidden;opacity:1;transform:rotateY(-180deg)}.stats-horizontal{grid-auto-flow:column;overflow-x:auto}.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stats-horizontal .stat:not(:last-child){border-block-end:none}.stats-vertical{grid-auto-flow:row;overflow-y:auto}.stats-vertical .stat:not(:last-child){border-inline-end:none;border-block-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-vertical .stat:not(:last-child){border-block-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.menu-lg :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-lg :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:1rem;font-size:1.125rem}.menu-lg .menu-title{padding-block:.75rem;padding-inline:1.5rem}.menu-md :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-md :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:.75rem;font-size:.875rem}.menu-md .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-sm :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-sm :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.625rem;font-size:.75rem}.menu-sm .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-xs :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-xs :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.5rem;font-size:.6875rem}.menu-xs .menu-title{padding-block:.25rem;padding-inline:.5rem}.badge-dash{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-style:dashed;border-color:currentColor}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.badge-outline{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-color:currentColor}.table-zebra tbody tr:where(:nth-child(2n)),.table-zebra tbody tr:where(:nth-child(2n)) :where(.table-pin-cols tr th){background-color:var(--color-base-200)}@media (hover:hover){:is(.table-zebra tbody tr.row-hover,.table-zebra tbody tr.row-hover:where(:nth-child(2n))):hover{background-color:var(--color-base-300)}}.skeleton-text{webkit-background-clip:text;color:#0000;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(105deg, var(--color-base-content) 0% 40%, var(--color-base-content) 50%, var(--color-base-content) 60% 100%)}@supports (color:color-mix(in lab, red, red)){.skeleton-text{background-image:linear-gradient(105deg, color-mix(in oklab, var(--color-base-content) 20%, transparent) 0% 40%, var(--color-base-content) 50%, color-mix(in oklab, var(--color-base-content) 20%, transparent) 60% 100%)}}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mask-circle{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-heart{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e")}.mask-star{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-star-2{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e")}.checkbox-lg{--size:calc(var(--size-selector,.25rem) * 7);padding:.3125rem}.checkbox-md{--size:calc(var(--size-selector,.25rem) * 6);padding:.25rem}.checkbox-sm{--size:calc(var(--size-selector,.25rem) * 5);padding:.1875rem}.checkbox-xs{--size:calc(var(--size-selector,.25rem) * 4);padding:.125rem}.radio-lg{padding:.3125rem}.radio-lg[type=radio]{--size:calc(var(--size-selector,.25rem) * 7)}.radio-md{padding:.25rem}.radio-md[type=radio]{--size:calc(var(--size-selector,.25rem) * 6)}.radio-sm{padding:.1875rem}.radio-sm[type=radio]{--size:calc(var(--size-selector,.25rem) * 5)}.radio-xs{padding:.125rem}.radio-xs[type=radio]{--size:calc(var(--size-selector,.25rem) * 4)}.select-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:1.125rem}.select-lg option{padding-block:.375rem;padding-inline:1rem}.select-md{--size:calc(var(--size-field,.25rem) * 10);font-size:.875rem}.select-md option{padding-block:.375rem;padding-inline:.75rem}.select-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:.75rem}.select-sm option{padding-block:.25rem;padding-inline:.625rem}.select-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:.6875rem}.select-xs option{padding-block:.25rem;padding-inline:.5rem}.table-lg :not(thead,tfoot) tr{font-size:1.125rem}.table-lg :where(th,td){padding-block:1rem;padding-inline:1.25rem}.table-md :not(thead,tfoot) tr{font-size:.875rem}.table-md :where(th,td){padding-block:.75rem;padding-inline:1rem}.table-sm :not(thead,tfoot) tr{font-size:.75rem}.table-sm :where(th,td){padding-block:.5rem;padding-inline:.75rem}.table-xl :not(thead,tfoot) tr{font-size:1.375rem}.table-xl :where(th,td){padding-block:1.25rem;padding-inline:1.5rem}.table-xs :not(thead,tfoot) tr{font-size:.6875rem}.table-xs :where(th,td){padding-block:.25rem;padding-inline:.5rem}.tabs-lg{--tab-height:calc(var(--size-field,.25rem) * 12)}.tabs-lg>.tab{--tab-p:1rem;--tab-radius-min:calc(1.5rem - var(--border));font-size:1.125rem}.tabs-md{--tab-height:calc(var(--size-field,.25rem) * 10)}.tabs-md>.tab{--tab-p:.75rem;--tab-radius-min:calc(.75rem - var(--border));font-size:.875rem}.tabs-sm{--tab-height:calc(var(--size-field,.25rem) * 8)}.tabs-sm>.tab{--tab-p:.5rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.875rem}.tabs-xs{--tab-height:calc(var(--size-field,.25rem) * 6)}.tabs-xs>.tab{--tab-p:.375rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.75rem}.badge-lg{--size:calc(var(--size-selector,.25rem) * 7);font-size:1rem}.badge-md{--size:calc(var(--size-selector,.25rem) * 6);font-size:.875rem}.badge-sm{--size:calc(var(--size-selector,.25rem) * 5);font-size:.75rem}.badge-xs{--size:calc(var(--size-selector,.25rem) * 4);font-size:.625rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.checkbox-accent{color:var(--color-accent-content);--input-color:var(--color-accent)}.checkbox-error{color:var(--color-error-content);--input-color:var(--color-error)}.checkbox-info{color:var(--color-info-content);--input-color:var(--color-info)}.checkbox-primary{color:var(--color-primary-content);--input-color:var(--color-primary)}.checkbox-secondary{color:var(--color-secondary-content);--input-color:var(--color-secondary)}.checkbox-success{color:var(--color-success-content);--input-color:var(--color-success)}.checkbox-warning{color:var(--color-warning-content);--input-color:var(--color-warning)}.range-accent{color:var(--color-accent);--range-thumb:var(--color-accent-content)}.range-error{color:var(--color-error);--range-thumb:var(--color-error-content)}.range-info{color:var(--color-info);--range-thumb:var(--color-info-content)}.range-primary{color:var(--color-primary);--range-thumb:var(--color-primary-content)}.range-secondary{color:var(--color-secondary);--range-thumb:var(--color-secondary-content)}.range-success{color:var(--color-success);--range-thumb:var(--color-success-content)}.range-warning{color:var(--color-warning);--range-thumb:var(--color-warning-content)}.tooltip-accent{--tt-bg:var(--color-accent)}.tooltip-accent>.tooltip-content,.tooltip-accent[data-tip]:before{color:var(--color-accent-content)}.tooltip-error{--tt-bg:var(--color-error)}.tooltip-error>.tooltip-content,.tooltip-error[data-tip]:before{color:var(--color-error-content)}.tooltip-info{--tt-bg:var(--color-info)}.tooltip-info>.tooltip-content,.tooltip-info[data-tip]:before{color:var(--color-info-content)}.tooltip-primary{--tt-bg:var(--color-primary)}.tooltip-primary>.tooltip-content,.tooltip-primary[data-tip]:before{color:var(--color-primary-content)}.tooltip-secondary{--tt-bg:var(--color-secondary)}.tooltip-secondary>.tooltip-content,.tooltip-secondary[data-tip]:before{color:var(--color-secondary-content)}.tooltip-success{--tt-bg:var(--color-success)}.tooltip-success>.tooltip-content,.tooltip-success[data-tip]:before{color:var(--color-success-content)}.tooltip-warning{--tt-bg:var(--color-warning)}.tooltip-warning>.tooltip-content,.tooltip-warning[data-tip]:before{color:var(--color-warning-content)}.swap-active .swap-off{opacity:0}.swap-active .swap-on{opacity:1}.indicator-end{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}[dir=rtl] .indicator-end,.indicator-start{--indicator-s:0;--indicator-e:auto;--indicator-x:-50%}[dir=rtl] .indicator-start{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem) * 12)}.btn-md{--fontsize:.875rem;--btn-p:1rem;--size:calc(var(--size-field,.25rem) * 10)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.btn-xl{--fontsize:1.375rem;--btn-p:1.5rem;--size:calc(var(--size-field,.25rem) * 14)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem) * 6)}.indicator-bottom{--indicator-t:auto;--indicator-b:0;--indicator-y:50%}.indicator-top{--indicator-t:0;--indicator-b:auto;--indicator-y:-50%}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-error{--badge-color:var(--color-error);--badge-fg:var(--color-error-content)}.badge-info{--badge-color:var(--color-info);--badge-fg:var(--color-info-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.badge-secondary{--badge-color:var(--color-secondary);--badge-fg:var(--color-secondary-content)}.badge-success{--badge-color:var(--color-success);--badge-fg:var(--color-success-content)}.badge-warning{--badge-color:var(--color-warning);--badge-fg:var(--color-warning-content)}.input-accent,.input-accent:focus,.input-accent:focus-within{--input-color:var(--color-accent)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.input-info,.input-info:focus,.input-info:focus-within{--input-color:var(--color-info)}.input-primary,.input-primary:focus,.input-primary:focus-within{--input-color:var(--color-primary)}.input-secondary,.input-secondary:focus,.input-secondary:focus-within{--input-color:var(--color-secondary)}.input-success,.input-success:focus,.input-success:focus-within{--input-color:var(--color-success)}.input-warning,.input-warning:focus,.input-warning:focus-within{--input-color:var(--color-warning)}.radio-accent{--input-color:var(--color-accent)}.radio-error{--input-color:var(--color-error)}.radio-info{--input-color:var(--color-info)}.radio-primary{--input-color:var(--color-primary)}.radio-secondary{--input-color:var(--color-secondary)}.radio-success{--input-color:var(--color-success)}.radio-warning{--input-color:var(--color-warning)}.range-lg{--range-thumb-size:calc(var(--size-selector,.25rem) * 7)}.range-md{--range-thumb-size:calc(var(--size-selector,.25rem) * 6)}.range-sm{--range-thumb-size:calc(var(--size-selector,.25rem) * 5)}.range-xs{--range-thumb-size:calc(var(--size-selector,.25rem) * 4)}.select-accent,.select-accent:focus,.select-accent:focus-within{--input-color:var(--color-accent)}.select-error,.select-error:focus,.select-error:focus-within{--input-color:var(--color-error)}.select-info,.select-info:focus,.select-info:focus-within{--input-color:var(--color-info)}.select-primary,.select-primary:focus,.select-primary:focus-within{--input-color:var(--color-primary)}.select-secondary,.select-secondary:focus,.select-secondary:focus-within{--input-color:var(--color-secondary)}.select-success,.select-success:focus,.select-success:focus-within{--input-color:var(--color-success)}.select-warning,.select-warning:focus,.select-warning:focus-within{--input-color:var(--color-warning)}.toggle-accent:checked,.toggle-accent[aria-checked=true]{--input-color:var(--color-accent)}.toggle-error:checked,.toggle-error[aria-checked=true]{--input-color:var(--color-error)}.toggle-info:checked,.toggle-info[aria-checked=true]{--input-color:var(--color-info)}.toggle-lg[type=checkbox],.toggle-lg:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 7)}.toggle-md[type=checkbox],.toggle-md:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 6)}.toggle-primary:checked,.toggle-primary[aria-checked=true]{--input-color:var(--color-primary)}.toggle-secondary:checked,.toggle-secondary[aria-checked=true]{--input-color:var(--color-secondary)}.toggle-sm[type=checkbox],.toggle-sm:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 5)}.toggle-success:checked,.toggle-success[aria-checked=true]{--input-color:var(--color-success)}.toggle-warning:checked,.toggle-warning[aria-checked=true]{--input-color:var(--color-warning)}.toggle-xs[type=checkbox],.toggle-xs:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 4)}}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse:not(td,tr,colgroup){visibility:revert-layer}.validator:user-invalid~.validator-hint{display:revert-layer}.validator:has(:user-invalid)~.validator-hint{display:revert-layer}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{display:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.right-3{right:calc(var(--spacing) * 3)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.left-0{left:calc(var(--spacing) * 0)}.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-4{left:calc(var(--spacing) * 4)}.left-6{left:calc(var(--spacing) * 6)}.-z-0{z-index:calc(0 * -1)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[50\]{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[9999\]{z-index:9999}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.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-1{margin:calc(var(--spacing) * 1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-16{margin-block:calc(var(--spacing) * 16)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-6{margin-left:calc(var(--spacing) * 6)}.icon-\[lucide--alert-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--alert-triangle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--bold\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--calendar\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 2v4m8-4v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11l3 3L22 4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m11 17l-5-5l5-5m7 10l-5-5l5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--clock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--code-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye-off\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--hash\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--heart\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 9.5a5.5 5.5 0 0 1 9.591-3.676a.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--info\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--italic\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 4h-9m4 16H5M15 4L9 20'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list-ordered\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--lock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--mail\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--phone\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--plus\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7v14'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--quote\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2zM5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--redo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m15 14l5-5l-5-5'/%3E%3Cpath d='M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--settings\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9.671 4.136a2.34 2.34 0 0 1 4.659 0a2.34 2.34 0 0 0 3.319 1.915a2.34 2.34 0 0 1 2.33 4.033a2.34 2.34 0 0 0 0 3.831a2.34 2.34 0 0 1-2.33 4.033a2.34 2.34 0 0 0-3.319 1.915a2.34 2.34 0 0 1-4.659 0a2.34 2.34 0 0 0-3.32-1.915a2.34 2.34 0 0 1-2.33-4.033a2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--strikethrough\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 4H9a3 3 0 0 0-2.83 4M14 12a4 4 0 0 1 0 8H6m-2-8h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--text\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--underline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 4v6a6 6 0 0 0 12 0V4M4 20h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--undo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 14L4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--upload\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--user\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.kbd{box-shadow:none}.text-rotate{height:1lh}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.aspect-square{aspect-ratio:1}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-96{height:calc(var(--spacing) * 96)}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-auto{height:auto}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[10rem\]{min-height:10rem}.min-h-\[300px\]{min-height:300px}.min-h-\[400px\]{min-height:400px}.min-h-\[500px\]{min-height:500px}.min-h-full{min-height:100%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[200px\]{max-width:200px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[4rem\]{min-width:4rem}.min-w-\[48px\]{min-width:48px}.min-w-\[500px\]{min-width:500px}.min-w-\[600px\]{min-width:600px}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);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-10{--tw-translate-x:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);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)}.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)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.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-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.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-center{justify-items:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}: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-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-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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.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-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}@layer daisyui.l1{.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.btn-dash:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-dash:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-link{--btn-border:#0000;--btn-bg:#0000;--btn-noise:none;--btn-shadow:"";outline-color:currentColor;text-decoration-line:underline}.btn-link:not(.btn-disabled,.btn:disabled,.btn[disabled]){--btn-fg:var(--btn-color,var(--color-primary))}.btn-link:is(.btn-active,:hover,:active:focus,:focus-visible){--btn-border:#0000;--btn-bg:#0000}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media (hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-outline:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-noise:none}@media (hover:none){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-noise:none}}}.btn-dash{border-style:dashed}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-base-200\/30{border-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.border-base-200\/30{border-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.border-base-300{border-color:var(--color-base-300)}.border-base-content\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/30{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/30{background-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.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-error,.bg-error\/10{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.bg-info{background-color:var(--color-info)}.bg-neutral{background-color:var(--color-neutral)}.bg-primary,.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-success,.bg-success\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-warning,.bg-warning\/10{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, 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-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{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))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-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-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-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-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-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-accent{--tw-gradient-via:var(--color-accent);--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-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-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-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-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-secondary{--tw-gradient-to:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-circle{--tw-mask-radial-shape:circle}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--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-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-accent-content{color:var(--color-accent-content)}.text-base-content,.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-error{color:var(--color-error)}.text-error-content{color:var(--color-error-content)}.text-gray-500{color:var(--color-gray-500)}.text-info{color:var(--color-info)}.text-info-content{color:var(--color-info-content)}.text-neutral-content{color:var(--color-neutral-content)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-transparent{color:#0000}.text-warning{color:var(--color-warning)}.text-warning-content{color:var(--color-warning-content)}.text-white{color:var(--color-white)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.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-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-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)}.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)}.shadow-secondary\/20{--tw-shadow-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.shadow-secondary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-secondary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-1{--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)}.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-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,)}.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,)}.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,)}.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-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))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.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)}}.before\:z-50:before,.after\:z-50:after{content:var(--tw-content);z-index:50}@media (hover:hover){.hover\:z-10:hover{z-index:10}.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-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent\/40:hover{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-base-content\/20:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:border-base-content\/20:hover{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.hover\:border-primary\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/40:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/40:hover{border-color:color-mix(in oklab, var(--color-secondary) 40%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.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\:text-base-content:hover{color:var(--color-base-content)}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-100:hover{opacity:1}}.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)}@media (min-width:48rem){.md\:h-64{height:calc(var(--spacing) * 64)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-auto{width:auto}.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\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&_br\]\:block br{display:block}.\[\&_br\]\:h-\[1em\] br{height:1em}.\[\&_br\]\:content-\[\'\'\] br{--tw-content:"";content:var(--tw-content)}.\[\&_div\]\:m-0 div{margin:calc(var(--spacing) * 0)}.\[\&_li\]\:list-item li{display:list-item}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-6 ol{padding-left:calc(var(--spacing) * 6)}.\[\&_p\]\:m-0 p{margin:calc(var(--spacing) * 0)}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-6 ul{padding-left:calc(var(--spacing) * 6)}@keyframes fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.animate-fade-in{animation:.15s ease-out forwards fade-in}}:root{font-size:14px}.input,.label,.select,.textarea{transition:all .3s cubic-bezier(.4,0,.2,1)}:is(.input,.label,.select,.textarea):focus,:is(.input,.label,.select,.textarea):focus-within{box-shadow:0 0 4px;outline:none!important}:is(.input,.label,.select,.textarea):hover:not(:focus){background-color:oklch(from var(--color-base-100) calc(l - .03) c h)}.floating-label span{color:oklch(30% .01 260);font-size:1.1rem;transition:all .2s}.floating-label:focus-within span{color:oklch(25% .02 260);font-size:1.1rem}.floating-label:has(input:not(:placeholder-shown)) span{color:oklch(28% .01 260);font-size:1.1rem}.tab-content-inner{transform-origin:top;animation:.3s cubic-bezier(.4,0,.2,1) tabFadeIn}.input-container{flex-direction:column;width:100%;display:flex;position:relative}.input-container .input{align-items:center;width:100%;display:flex}.input-content{z-index:50;background:oklch(var(--b1));border:1px solid oklch(var(--bc) / .2);border-radius:var(--rounded-box,1rem);margin-top:.25rem;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a}.input-content .menu{width:100%}@keyframes tabFadeIn{0%{opacity:0;transform:scaleY(.95)}to{opacity:1;transform:scaleY(1)}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@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-space-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-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-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-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file +@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-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-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-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-duration: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-black:#000;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--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:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-7xl:4.5rem;--text-7xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-3xl:1.5rem;--drop-shadow-2xl:0 25px 25px #00000026;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl:64px;--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)}}@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;-webkit-text-decoration: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}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}@property --radialprogress{syntax:"";inherits:true;initial-value:0%}:root:not(span){overflow:var(--page-overflow)}:root{background:var(--page-scroll-bg,var(--root-bg));--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset) ; else: unset)}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background:var(--page-scroll-bg,var(--root-bg));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(25% .006 285);--color-primary:oklch(25% .006 285);--color-primary-content:oklch(98% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(98% 0 0);--color-accent:oklch(96% 0 0);--color-accent-content:oklch(25% .006 285);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(62% .17 163);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .18 84);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(60% .25 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}:where(.drawer-side){overflow:hidden}.drawer-side{pointer-events:none;visibility:hidden;z-index:10;overscroll-behavior:contain;opacity:0;width:100%;transition:opacity .2s ease-out .1s allow-discrete, visibility .3s ease-out .1s allow-discrete;inset-inline-start:0;background-color:#0000;grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));grid-row-start:1;grid-column-start:1;place-items:flex-start start;height:100dvh;display:grid;position:fixed;top:0}.drawer-side>.drawer-overlay{cursor:pointer;background-color:oklch(0% 0 0/.4);place-self:stretch stretch;position:sticky;top:0}.drawer-side>*{grid-row-start:1;grid-column-start:1}.drawer-side>:not(.drawer-overlay){will-change:transform;transition:translate .3s ease-out,width .2s ease-out;translate:-100%}[dir=rtl] :is(.drawer-side>:not(.drawer-overlay)){translate:100%}.fab{pointer-events:none;z-index:999;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;inset-inline-end:1rem;flex-direction:column-reverse;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem}.fab>*{pointer-events:auto;align-items:center;gap:.5rem;display:flex}.fab>:hover,.fab>:has(:focus-visible){z-index:1}.fab>[tabindex]:first-child{transition-property:opacity,visibility,rotate;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:grid;position:relative}.fab .fab-close,.fab .fab-main-action{inset-inline-end:0;position:absolute;bottom:0}:is(.fab:focus-within:has(.fab-close),.fab:focus-within:has(.fab-main-action))>[tabindex]{opacity:0;rotate:90deg}.fab:focus-within>[tabindex]:first-child{pointer-events:none}.fab:focus-within>:nth-child(n+2){visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:1}.fab>:nth-child(n+2){visibility:hidden;--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0;transition-property:opacity,scale,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fab>:nth-child(n+2).fab-main-action,.fab>:nth-child(n+2).fab-close{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.fab>:nth-child(3){transition-delay:30ms}.fab>:nth-child(4){transition-delay:60ms}.fab>:nth-child(5){transition-delay:90ms}.fab>:nth-child(6){transition-delay:.12s}.drawer-toggle{appearance:none;opacity:0;width:0;height:0;position:fixed}:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:currentColor oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}@supports (color:color-mix(in lab, red, red)){:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}}:where(:root:has(.drawer-toggle:checked)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media (prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.floating-label{display:block;position:relative}.floating-label input{display:block}.floating-label input::placeholder,.floating-label textarea::placeholder{transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out}.floating-label>span{z-index:1;background-color:var(--color-base-100);opacity:0;inset-inline-start:.75rem;top:calc(var(--size-field,.25rem) * 10 / 2);pointer-events:none;border-radius:2px;padding-inline:.25rem;font-size:.875rem;line-height:1;transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out;position:absolute;translate:0 -50%}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown))) ::placeholder{opacity:0;pointer-events:auto;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown)))>span{opacity:1;pointer-events:auto;z-index:2;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}.floating-label:has(:disabled,[disabled])>span{opacity:0}.floating-label:has(.input-xs,.select-xs,.textarea-xs) span{top:calc(var(--size-field,.25rem) * 6 / 2);font-size:.6875rem}.floating-label:has(.input-sm,.select-sm,.textarea-sm) span{top:calc(var(--size-field,.25rem) * 8 / 2);font-size:.75rem}.floating-label:has(.input-md,.select-md,.textarea-md) span{top:calc(var(--size-field,.25rem) * 10 / 2);font-size:.875rem}.floating-label:has(.input-lg,.select-lg,.textarea-lg) span{top:calc(var(--size-field,.25rem) * 12 / 2);font-size:1.125rem}.floating-label:has(.input-xl,.select-xl,.textarea-xl) span{top:calc(var(--size-field,.25rem) * 14 / 2);font-size:1.375rem}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);--size:calc(var(--size-field,.25rem) * 10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-noise:var(--fx-noise)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}.validator-hint{visibility:hidden;margin-top:.5rem;font-size:.75rem}.validator:user-valid{--input-color:var(--color-success)}.validator:user-valid:focus{--input-color:var(--color-success)}.validator:user-valid:checked{--input-color:var(--color-success)}.validator:user-valid[aria-checked=true]{--input-color:var(--color-success)}.validator:user-valid:focus-within{--input-color:var(--color-success)}.validator:has(:user-valid){--input-color:var(--color-success)}.validator:has(:user-valid):focus{--input-color:var(--color-success)}.validator:has(:user-valid):checked{--input-color:var(--color-success)}.validator:has(:user-valid)[aria-checked=true]{--input-color:var(--color-success)}.validator:has(:user-valid):focus-within{--input-color:var(--color-success)}.validator:user-invalid{--input-color:var(--color-error)}.validator:user-invalid:focus{--input-color:var(--color-error)}.validator:user-invalid:checked{--input-color:var(--color-error)}.validator:user-invalid[aria-checked=true]{--input-color:var(--color-error)}.validator:user-invalid:focus-within{--input-color:var(--color-error)}.validator:user-invalid~.validator-hint{visibility:visible;color:var(--color-error)}.validator:has(:user-invalid){--input-color:var(--color-error)}.validator:has(:user-invalid):focus{--input-color:var(--color-error)}.validator:has(:user-invalid):checked{--input-color:var(--color-error)}.validator:has(:user-invalid)[aria-checked=true]{--input-color:var(--color-error)}.validator:has(:user-invalid):focus-within{--input-color:var(--color-error)}.validator:has(:user-invalid)~.validator-hint{visibility:visible;color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))),:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):checked,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))[aria-checked=true],:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus-within{--input-color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{visibility:visible;color:var(--color-error)}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size) / 10);--radialprogress:calc(var(--value) * 1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0);webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness) / 2);transform:rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input{--size:calc(var(--size-field,.25rem) * 10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.indicator{width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--indicator-t,0);bottom:var(--indicator-b,auto);left:var(--indicator-s,auto);right:var(--indicator-e,0);translate:var(--indicator-x,50%) var(--indicator-y,-50%);position:absolute}.table{border-collapse:separate;--tw-border-spacing-x:calc(.25rem * 0);--tw-border-spacing-y:calc(.25rem * 0);width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:"";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.chat-bubble{border-radius:var(--radius-field);background-color:var(--color-base-300);width:fit-content;color:var(--color-base-content);grid-row-end:3;min-width:2.5rem;max-width:90%;min-height:2rem;padding-block:.5rem;padding-inline:1rem;display:block;position:relative}.chat-bubble:before{background-color:inherit;content:"";width:.75rem;height:.75rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-chat);-webkit-mask-image:var(--mask-chat);mask-image:var(--mask-chat);position:absolute;bottom:0;-webkit-mask-position:0 -1px;mask-position:0 -1px;-webkit-mask-size:.8125rem;mask-size:.8125rem}.select{border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{--size:calc(var(--size-field,.25rem) * 10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0, 1fr)) auto var(--timeline-row-end,minmax(0, 1fr));grid-template-columns:var(--timeline-col-start,minmax(0, 1fr)) auto var(--timeline-col-end,minmax(0, 1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border) solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox{border:var(--border) solid var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 0 #0000 inset, 0 0 #0000;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:0deg}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;display:inline-flex;position:relative}.rating input{appearance:none;border:none}.rating :where(*){background-color:var(--color-base-content);opacity:.2;border-radius:0;width:1.5rem;height:1.5rem}@media (prefers-reduced-motion:no-preference){.rating :where(*){animation:.25s ease-out rating}}.rating :where(*):is(input){cursor:pointer}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating input[type=radio]:checked{background-image:none}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.navbar{align-items:center;width:100%;min-height:4rem;padding:.5rem;display:flex}.drawer{grid-auto-columns:max-content auto;width:100%;display:grid;position:relative}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.stats{border-radius:var(--radius-box);grid-auto-flow:column;display:inline-grid;position:relative;overflow-x:auto}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border) solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.timeline-end{grid-area:3/1/4/4;place-self:flex-start center;margin:.25rem}.timeline-start{grid-area:1/1/2/4;place-self:flex-end center;margin:.25rem}.stat-figure{grid-row:1/span 3;grid-column-start:2;place-self:center flex-end}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.drawer-content{grid-row-start:1;grid-column-start:2;min-width:0}.timeline-middle{grid-row-start:2;grid-column-start:2}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-desc{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-desc{font-size:.75rem}.stat-title{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-title{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-title{font-size:.75rem}.stat-actions{white-space:nowrap;grid-column-start:1}.chat-image{grid-row:span 2/span 2;align-self:flex-end}.chat-footer{grid-row-start:3;gap:.25rem;font-size:.6875rem;display:flex}.chat-header{grid-row-start:1;gap:.25rem;font-size:.6875rem;display:flex}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.divider{--divider-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.fieldset-legend{color:var(--color-base-content);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:-.25rem;padding-block:.5rem;font-weight:600;display:flex}.carousel-item{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.kbd{border-radius:var(--radius-field);background-color:var(--color-base-200);vertical-align:middle;border:var(--border) solid var(--color-base-content);justify-content:center;align-items:center;padding-inline:.5em;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.kbd{border:var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{border-bottom:calc(var(--border) + 1px) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.kbd{border-bottom:calc(var(--border) + 1px) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{--size:calc(var(--size-selector,.25rem) * 6);height:var(--size);min-width:var(--size);font-size:.875rem}.text-rotate{vertical-align:bottom;white-space:nowrap;--duration:var(--tw-duration);transition-property:none;display:inline-block;overflow:hidden}.text-rotate>*{height:calc(var(--items,1) * 100%);justify-items:start;display:grid}.text-rotate>:has(:nth-child(2)){--items:2;animation:rotator var(--duration,10s) linear(0 0% 49%, .5 50% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(3)){--items:3;animation:rotator var(--duration,10s) linear(0 0% 32%, .333333 33% 65%, .666666 66% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(4)){--items:4;animation:rotator var(--duration,10s) linear(0 0% 24%, .25 25% 49%, .5 50% 74%, .75 75% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(5)){--items:5;animation:rotator var(--duration,10s) linear(0 0% 19%, .2 20% 39%, .4 40% 59%, .6 60% 79%, .8 80% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(6)){--items:6;animation:rotator var(--duration,10s) linear(0 0% 15%, .16666 16% 32%, .333333 33% 49%, .5 50% 65%, .666666 66% 82%, .833333 83% 99%, 1 100% 100%) infinite}.text-rotate>*>*{clip-path:inset(.5px 0);align-content:baseline}.text-rotate>*>:first-child{translate:var(--first-item-position)}.text-rotate:hover>*{animation-play-state:paused}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem) * 10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stat:not(:last-child){border-block-end:none}.navbar-end{justify-content:flex-end;align-items:center;width:50%;display:inline-flex}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.fieldset-label{color:var(--color-base-content);align-items:center;gap:.375rem;display:flex}@supports (color:color-mix(in lab, red, red)){.fieldset-label{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.fieldset-label:has(input){cursor:pointer}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){.carousel{scroll-behavior:smooth}}.carousel::-webkit-scrollbar{display:none}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.fieldset{grid-template-columns:1fr;grid-auto-rows:max-content;gap:.375rem;padding-block:.25rem;font-size:.75rem;display:grid}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e");grid-auto-rows:min-content;column-gap:.75rem;padding-block:.25rem;display:grid}.card-actions{flex-wrap:wrap;align-items:flex-start;gap:.5rem;display:flex}.card-title{font-size:var(--cardtitle-fs,1.125rem);align-items:center;gap:.5rem;font-weight:600;display:flex}.mask{vertical-align:middle;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.timeline-box{border:var(--border) solid;border-radius:var(--radius-box);border-color:var(--color-base-300);background-color:var(--color-base-100);padding-block:.5rem;padding-inline:1rem;font-size:.75rem;box-shadow:0 1px 2px oklch(0% 0 0/.05)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}:where(.drawer-toggle:checked~.drawer-side){pointer-events:auto;visibility:visible;opacity:1;overflow-y:auto}:where(.drawer-toggle:checked~.drawer-side)>:not(.drawer-overlay){translate:0%}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline:2px solid}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn-disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn-disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn-disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.tabs-border>.tab{--tab-border-color:#0000 #0000 var(--tab-border-color) #0000;border-radius:var(--radius-field);position:relative}.tabs-border>.tab:before{content:"";background-color:var(--tab-border-color);border-radius:var(--radius-field);width:80%;height:3px;transition:background-color .2s;position:absolute;bottom:0;left:10%}:is(.tabs-border>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-border>.tab:is(input:checked),.tabs-border>.tab:is(label:has(:checked))):before{--tab-border-color:currentColor;border-top:3px solid}.checkbox:disabled,.radio:disabled{cursor:not-allowed;opacity:.2}.rating.rating-xs :where(:not(.rating-hidden)){width:1rem;height:1rem}.rating.rating-sm :where(:not(.rating-hidden)){width:1.25rem;height:1.25rem}.rating.rating-md :where(:not(.rating-hidden)){width:1.5rem;height:1.5rem}.rating.rating-lg :where(:not(.rating-hidden)){width:1.75rem;height:1.75rem}.rating.rating-xl :where(:not(.rating-hidden)){width:2rem;height:2rem}:where(.navbar){position:relative}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translateX(calc(var(--tt-pos,-.25rem) + .25rem)) translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translateX(var(--tt-pos,-.25rem)) translateY(-50%) rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.tooltip-top>.tooltip-content,.tooltip-top[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip-top:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn-active{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);isolation:isolate}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.tabs-box{background-color:var(--color-base-200);--tabs-box-radius:calc(3 * var(--radius-field));border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)));box-shadow:0 -.5px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 .5px oklch(0% 0 0 / calc(var(--depth) * .05)) inset;padding:.25rem}.tabs-box>.tab{border-radius:var(--radius-field);border-style:none}.tabs-box>.tab:focus-visible,.tabs-box>.tab:is(label:has(:checked:focus-visible)){outline-offset:2px}.tabs-box>.tab:focus-visible{z-index:1}.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){background-color:var(--tab-bg,var(--color-base-100));box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral)}@supports (color:color-mix(in lab, red, red)){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000)}}@media (forced-colors:active){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){border:1px solid}}.tabs-box>.tab-content{height:calc(100% - var(--tab-height) + var(--border) - .5rem);border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)) - var(--border));margin-top:.25rem}.timeline-horizontal{flex-direction:row}.timeline-horizontal>li{align-items:center}.timeline-horizontal>li>hr{width:100%;height:.25rem}.timeline-horizontal>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline-horizontal>li>hr:last-child{grid-area:2/3/auto/none}.timeline-horizontal .timeline-start{grid-area:1/1/2/4;place-self:flex-end center}.timeline-horizontal .timeline-end{grid-area:3/1/4/4;place-self:flex-start center}.timeline-horizontal:has(.timeline-middle)>li>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-horizontal:has(.timeline-middle)>li>hr:last-child,.timeline-horizontal:not(:has(.timeline-middle)) :first-child>hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline-horizontal:not(:has(.timeline-middle)) :last-child>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-vertical{flex-direction:column}.timeline-vertical>li{--timeline-row-start:minmax(0, 1fr);--timeline-row-end:minmax(0, 1fr);justify-items:center}.timeline-vertical>li>hr{width:.25rem;height:100%}.timeline-vertical>li>hr:first-child{grid-row-start:1;grid-column-start:2}.timeline-vertical>li>hr:last-child{grid-area:3/2/none}.timeline-vertical .timeline-start{grid-area:1/1/4/2;place-self:center flex-end}.timeline-vertical .timeline-end{grid-area:1/3/4/4;place-self:center flex-start}.timeline-vertical:has(.timeline-middle)>li>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical:has(.timeline-middle)>li>hr:last-child,.timeline-vertical:not(:has(.timeline-middle)) :first-child>hr:last-child{border-top-left-radius:var(--radius-selector);border-top-right-radius:var(--radius-selector);border-bottom-right-radius:0;border-bottom-left-radius:0}.timeline-vertical:not(:has(.timeline-middle)) :last-child>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical.timeline-snap-icon>li{--timeline-col-start:minmax(0, 1fr);--timeline-row-start:.5rem}.timeline-compact{--timeline-row-start:0}.timeline-compact .timeline-start{grid-area:3/1/4/4;place-self:flex-start center}.timeline-compact li:has(.timeline-start) .timeline-end{grid-row-start:auto;grid-column-start:none}.timeline-compact.timeline-vertical>li{--timeline-col-start:0}.timeline-compact.timeline-vertical .timeline-start{grid-area:1/3/4/4;place-self:center flex-start}.timeline-compact.timeline-vertical li:has(.timeline-start) .timeline-end{grid-row-start:none;grid-column-start:auto}.input-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:max(var(--font-size,1.125rem), 1.125rem)}.input-lg[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:max(var(--font-size,.75rem), .75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:max(var(--font-size,.6875rem), .6875rem)}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.modal-bottom{place-items:end}.modal-bottom .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-block{width:100%}.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{rotate:45deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-on,.swap-rotate.swap-active .swap-on{rotate:0deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-off,.swap-rotate.swap-active .swap-off{rotate:-45deg}.stats-horizontal{grid-auto-flow:column;overflow-x:auto}.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stats-horizontal .stat:not(:last-child){border-block-end:none}.stats-vertical{grid-auto-flow:row;overflow-y:auto}.stats-vertical .stat:not(:last-child){border-inline-end:none;border-block-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-vertical .stat:not(:last-child){border-block-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.badge-dash{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-style:dashed;border-color:currentColor}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.table-zebra tbody tr:where(:nth-child(2n)),.table-zebra tbody tr:where(:nth-child(2n)) :where(.table-pin-cols tr th){background-color:var(--color-base-200)}@media (hover:hover){:is(.table-zebra tbody tr.row-hover,.table-zebra tbody tr.row-hover:where(:nth-child(2n))):hover{background-color:var(--color-base-300)}}.skeleton-text{webkit-background-clip:text;color:#0000;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(105deg, var(--color-base-content) 0% 40%, var(--color-base-content) 50%, var(--color-base-content) 60% 100%)}@supports (color:color-mix(in lab, red, red)){.skeleton-text{background-image:linear-gradient(105deg, color-mix(in oklab, var(--color-base-content) 20%, transparent) 0% 40%, var(--color-base-content) 50%, color-mix(in oklab, var(--color-base-content) 20%, transparent) 60% 100%)}}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mask-circle{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-heart{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e")}.mask-star{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e")}.checkbox-lg{--size:calc(var(--size-selector,.25rem) * 7);padding:.3125rem}.radio-lg{padding:.3125rem}.radio-lg[type=radio]{--size:calc(var(--size-selector,.25rem) * 7)}.select-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:1.125rem}.select-lg option{padding-block:.375rem;padding-inline:1rem}.table-lg :not(thead,tfoot) tr{font-size:1.125rem}.table-lg :where(th,td){padding-block:1rem;padding-inline:1.25rem}.badge-lg{--size:calc(var(--size-selector,.25rem) * 7);font-size:1rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.checkbox-accent{color:var(--color-accent-content);--input-color:var(--color-accent)}.checkbox-error{color:var(--color-error-content);--input-color:var(--color-error)}.range-accent{color:var(--color-accent);--range-thumb:var(--color-accent-content)}.range-error{color:var(--color-error);--range-thumb:var(--color-error-content)}.tooltip-accent{--tt-bg:var(--color-accent)}.tooltip-accent>.tooltip-content,.tooltip-accent[data-tip]:before{color:var(--color-accent-content)}.tooltip-error{--tt-bg:var(--color-error)}.tooltip-error>.tooltip-content,.tooltip-error[data-tip]:before{color:var(--color-error-content)}.swap-active .swap-off{opacity:0}.swap-active .swap-on{opacity:1}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem) * 12)}.btn-md{--fontsize:.875rem;--btn-p:1rem;--size:calc(var(--size-field,.25rem) * 10)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.btn-xl{--fontsize:1.375rem;--btn-p:1.5rem;--size:calc(var(--size-field,.25rem) * 14)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem) * 6)}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-error{--badge-color:var(--color-error);--badge-fg:var(--color-error-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.input-secondary,.input-secondary:focus,.input-secondary:focus-within{--input-color:var(--color-secondary)}.radio-accent{--input-color:var(--color-accent)}.radio-error{--input-color:var(--color-error)}.range-lg{--range-thumb-size:calc(var(--size-selector,.25rem) * 7)}.range-xs{--range-thumb-size:calc(var(--size-selector,.25rem) * 4)}.select-error,.select-error:focus,.select-error:focus-within{--input-color:var(--color-error)}.select-secondary,.select-secondary:focus,.select-secondary:focus-within{--input-color:var(--color-secondary)}.toggle-accent:checked,.toggle-accent[aria-checked=true]{--input-color:var(--color-accent)}.toggle-lg[type=checkbox],.toggle-lg:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 7)}}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse:not(td,tr,colgroup){visibility:revert-layer}.validator:user-invalid~.validator-hint{display:revert-layer}.validator:has(:user-invalid)~.validator-hint{display:revert-layer}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{display:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-10{top:calc(var(--spacing) * 10)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.right-3{right:calc(var(--spacing) * 3)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-3{left:calc(var(--spacing) * 3)}.left-6{left:calc(var(--spacing) * 6)}.-z-0{z-index:calc(0 * -1)}.z-1{z-index:1}.z-10{z-index:10}.z-20{z-index:20}.z-50,.z-\[50\]{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[9999\]{z-index:9999}.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-1{margin:calc(var(--spacing) * 1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-16{margin-block:calc(var(--spacing) * 16)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.icon-\[lucide--alert-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--alert-triangle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--align-center\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M17 12H7m12 6H5M21 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--align-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 12H3m14 6H3M21 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--align-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H9m12 6H7M21 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--bold\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--calendar\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 2v4m8-4v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11l3 3L22 4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m11 17l-5-5l5-5m7 10l-5-5l5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--clock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--code-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eraser\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21m-7.752-9.91l8.828 8.828'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye-off\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--hash\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--indent-decrease\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H11m10 6H11M21 6H11M7 8l-4 4l4 4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--indent-increase\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H11m10 6H11M21 6H11M3 8l4 4l-4 4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--info\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--italic\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 4h-9m4 16H5M15 4L9 20'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list-ordered\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--lock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--mail\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--paperclip\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 6l-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--phone\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--quote\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2zM5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--redo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m15 14l5-5l-5-5'/%3E%3Cpath d='M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--smile\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 14s1.5 2 4 2s4-2 4-2M9 9h.01M15 9h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--text\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--underline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 4v6a6 6 0 0 0 12 0V4M4 20h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--undo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 14L4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--upload\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--user\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.kbd{box-shadow:none}.text-rotate{height:1lh}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.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}.aspect-square{aspect-ratio:1}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-12{height:calc(var(--spacing) * 12)}.h-20{height:calc(var(--spacing) * 20)}.h-48{height:calc(var(--spacing) * 48)}.h-96{height:calc(var(--spacing) * 96)}.h-auto{height:auto}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[22rem\]{min-height:22rem}.min-h-full{min-height:100%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-xs{width:var(--container-xs)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[200px\]{max-width:200px}.max-w-md{max-width:var(--container-md)}.min-w-\[48px\]{min-width:48px}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-10{--tw-translate-x:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.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-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-8{gap:calc(var(--spacing) * 8)}: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-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-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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.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-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@layer daisyui.l1{.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-link{--btn-border:#0000;--btn-bg:#0000;--btn-noise:none;--btn-shadow:"";outline-color:currentColor;text-decoration-line:underline}.btn-link:not(.btn-disabled,.btn:disabled,.btn[disabled]){--btn-fg:var(--btn-color,var(--color-primary))}.btn-link:is(.btn-active,:hover,:active:focus,:focus-visible){--btn-border:#0000;--btn-bg:#0000}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media (hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-outline:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-base-200\/30{border-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.border-base-200\/30{border-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.border-base-300{border-color:var(--color-base-300)}.border-base-content\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-primary{border-color:var(--color-primary)}.bg-base-100,.bg-base-100\/50{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.bg-base-100\/50{background-color:color-mix(in oklab, var(--color-base-100) 50%, transparent)}}.bg-base-200,.bg-base-200\/30{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/30{background-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-primary,.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-transparent{background-color:#0000}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-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-accent{--tw-gradient-via:var(--color-accent);--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-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-circle{--tw-mask-radial-shape:circle}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--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-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-base-content,.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-error{color:var(--color-error)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-transparent{color:#0000}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.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-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-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)}.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)}.shadow-secondary\/20{--tw-shadow-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.shadow-secondary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-secondary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-1{--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)}.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-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,)}.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,)}.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,)}.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-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))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.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)}}.before\:z-50:before,.after\:z-50:after{content:var(--tw-content);z-index:50}@media (hover:hover){.hover\:z-10:hover{z-index:10}.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent\/40:hover{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-base-content\/20:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:border-base-content\/20:hover{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.hover\:border-primary\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/40:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/40:hover{border-color:color-mix(in oklab, var(--color-secondary) 40%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:text-base-content:hover{color:var(--color-base-content)}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-100:hover{opacity:1}}.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)}@media (min-width:48rem){.md\:h-64{height:calc(var(--spacing) * 64)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (hover:hover){.\[\&_\.resizable-img-container\]\:hover\:border-primary .resizable-img-container:hover{border-color:var(--color-primary)}}.\[\&_blockquote\]\:border-l-4 blockquote{border-left-style:var(--tw-border-style);border-left-width:4px}.\[\&_blockquote\]\:border-base-300 blockquote{border-color:var(--color-base-300)}.\[\&_blockquote\]\:pl-4 blockquote{padding-left:calc(var(--spacing) * 4)}.\[\&_blockquote\]\:italic blockquote{font-style:italic}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-8 ol{padding-left:calc(var(--spacing) * 8)}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-8 ul{padding-left:calc(var(--spacing) * 8)}.\[\&\>div\]\:m-0>div{margin:calc(var(--spacing) * 0)}.\[\&\>div\]\:min-h-\[1em\]>div{min-height:1em}.\[\&\>p\]\:m-0>p{margin:calc(var(--spacing) * 0)}@keyframes fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.animate-fade-in{animation:.15s ease-out forwards fade-in}}:root{font-size:14px}.input,.label,.select,.textarea{transition:all .3s cubic-bezier(.4,0,.2,1)}:is(.input,.label,.select,.textarea):focus,:is(.input,.label,.select,.textarea):focus-within{box-shadow:0 0 4px;outline:none!important}:is(.input,.label,.select,.textarea):hover:not(:focus){background-color:oklch(from var(--color-base-100) calc(l - .03) c h)}.floating-label span{color:oklch(30% .01 260);font-size:1.1rem;transition:all .2s}.floating-label:focus-within span{color:oklch(25% .02 260);font-size:1.1rem}.floating-label:has(input:not(:placeholder-shown)) span{color:oklch(28% .01 260);font-size:1.1rem}.tab-content-inner{transform-origin:top;animation:.3s cubic-bezier(.4,0,.2,1) tabFadeIn}.input-container{flex-direction:column;width:100%;display:flex;position:relative}.input-container .input{align-items:center;width:100%;display:flex}.input-content{z-index:50;background:oklch(var(--b1));border:1px solid oklch(var(--bc) / .2);border-radius:var(--rounded-box,1rem);margin-top:.25rem;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a}.input-content .menu{width:100%}@keyframes tabFadeIn{0%{opacity:0;transform:scaleY(.95)}to{opacity:1;transform:scaleY(1)}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@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-space-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-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-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-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file diff --git a/dist/sigpro-ui.min.js b/dist/sigpro-ui.min.js index e7af0b9..eb20da9 100644 --- a/dist/sigpro-ui.min.js +++ b/dist/sigpro-ui.min.js @@ -1 +1,7 @@ -(()=>{var{defineProperty:F,getOwnPropertyNames:An,getOwnPropertyDescriptor:jn}=Object,Wn=Object.prototype.hasOwnProperty;function mn(n){return this[n]}var zn=(n)=>{var r=(sn??=new WeakMap).get(n),e;if(r)return r;if(r=F({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var s of An(n))if(!Wn.call(r,s))F(r,s,{get:mn.bind(n,s),enumerable:!(e=jn(n,s))||e.enumerable})}return sn.set(n,r),r},sn;var Jn=(n)=>n;function Pn(n,r){this[n]=Jn.bind(null,r)}var M=(n,r)=>{for(var e in r)F(n,e,{get:r[e],enumerable:!0,configurable:!0,set:Pn.bind(r,e)})};var Bt={};M(Bt,{Utils:()=>Cn,Components:()=>xn});var on={};M(on,{listKey:()=>yn,isFn:()=>S,getBy:()=>j,get:()=>N,filterBy:()=>_n,cls:()=>c,Tooltip:()=>xt,Toggle:()=>kt,Toast:()=>Rt,Timeline:()=>St,Textarea:()=>gt,TextRotate:()=>Nt,Tabs:()=>Tt,Table:()=>Lt,Swap:()=>dt,Steps:()=>wt,Step:()=>Et,Stack:()=>yt,SkeletonText:()=>_t,Skeleton:()=>ct,Select:()=>Wt,Rating:()=>$t,Range:()=>it,Radio:()=>bt,Radial:()=>ut,Progress:()=>ft,Navbar:()=>at,Modal:()=>Ut,Menu:()=>En,Loading:()=>st,Kbd:()=>lt,Input:()=>dn,Indicator:()=>et,Icon:()=>ot,Fileinput:()=>Pt,Fieldset:()=>rt,Fab:()=>tt,Dropdown:()=>jt,Drawer:()=>At,Divider:()=>nt,Datepicker:()=>Jt,Colorpicker:()=>zt,Checkbox:()=>pn,ChatImage:()=>hn,ChatHeader:()=>Mn,ChatFooter:()=>Fn,ChatBubble:()=>vn,Chat:()=>Dn,CarouselItem:()=>Hn,Carousel:()=>On,CardTitle:()=>Yn,CardBody:()=>In,CardActions:()=>Vn,Card:()=>Zn,Calendar:()=>gn,Button:()=>wn,Badge:()=>Xn,Autocomplete:()=>mt,Alert:()=>Gn,Accordion:()=>Ct});var A=(n)=>typeof n==="function",nn=(n)=>n&&typeof n==="object",q=Array.isArray,W=typeof document<"u"?document:null,an=(n)=>n?._isRuntime?n.container:n instanceof Node?n:W.createTextNode(n==null?"":String(n)),k=null,L=null,G=!1,Z=0,Y=new Set,fn=new WeakMap,h=Symbol("iter"),p=new WeakMap,R=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let r=[n];while(r.length){let e=r.pop();if(e._cleanups)e._cleanups.forEach((s)=>s()),e._cleanups.clear();if(e._children)e._children.forEach((s)=>r.push(s)),e._children.clear();if(e._deps)e._deps.forEach((s)=>s.delete(e)),e._deps.clear()}},Q=(n)=>{if(L)(L._cleanups||=new Set).add(n)},Rn=(n)=>{let r=k;k=null;try{return n()}finally{k=r}},X=(n,r=!1)=>{let e=()=>{if(e._disposed)return;if(e._deps)e._deps.forEach((l)=>l.delete(e));if(e._cleanups)e._cleanups.forEach((l)=>l()),e._cleanups.clear();let s=k,f=L;k=L=e;try{return e._result=n()}catch(l){console.error("[SigPro]",l)}finally{k=s,L=f}};if(e._deps=e._cleanups=e._children=null,e._disposed=!1,e._isComputed=r,e._depth=k?k._depth+1:0,e._mounts=[],e._parent=L,L)(L._children||=new Set).add(e);return e},bn=()=>{if(G)return;G=!0;let n=Array.from(Y).sort((r,e)=>r._depth-e._depth);Y.clear();for(let r of n)if(!r._disposed)r();G=!1},Un=(n)=>{Z++;try{return n()}finally{if(Z--,Z===0&&Y.size>0&&!G)bn()}},$=(n,r=!1)=>{if(!r&&k&&!k._disposed)n.add(k),(k._deps||=new Set).add(n);else if(r&&n.size>0){let e=!1;for(let s of n){if(s===k||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)$(s._subs,!0)}else Y.add(s),e=!0}if(e&&!G&&Z===0)queueMicrotask(bn)}},d=(n,r=null)=>{let e=new Set;if(A(n)){let s,f=()=>{if(f._dirty){let l=k;k=f;try{let o=n();if(!Object.is(s,o))s=o,$(e,!0)}finally{k=l}f._dirty=!1}return $(e),s};if(f._isComputed=!0,f._subs=e,f._dirty=!0,f._deps=null,f._disposed=!1,f.stop=()=>{},L)Q(f.stop);return f}if(r)try{n=JSON.parse(localStorage.getItem(r))??n}catch(s){}return(...s)=>{if(s.length){let f=A(s[0])?s[0](n):s[0];if(!Object.is(n,f)){if(n=f,r)localStorage.setItem(r,JSON.stringify(n));$(e,!0)}}return $(e),n}},cn=(n)=>{if(!nn(n))return n;let r=fn.get(n);if(r)return r;let e=new Map,s=(l)=>{let o=e.get(l);if(!o)e.set(l,o=new Set);return o},f=new Proxy(n,{get(l,o,a){if(typeof o!=="symbol")$(s(o));return cn(Reflect.get(l,o,a))},set(l,o,a,u){let i=Reflect.has(l,o),b=Reflect.get(l,o,u),_=Reflect.set(l,o,a,u);if(_&&!Object.is(b,a)){if($(s(o),!0),!i)$(s(h),!0)}return _},deleteProperty(l,o){let a=Reflect.deleteProperty(l,o);if(a)$(s(o),!0),$(s(h),!0);return a},ownKeys(l){return $(s(h)),Reflect.ownKeys(l)}});return fn.set(n,f),f},J=(n,r)=>{if(r===void 0){let s=X(n);return s(),()=>R(s)}let e=X(()=>{let s=Array.isArray(n)?n.map((f)=>f()):n();Rn(()=>r(s))});return e(),()=>R(e)},tn=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((r)=>r()),n._cleanups.clear();if(n._ownerEffect)R(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((r)=>tn(r))},qn=/^\s*(javascript|data|vbscript):/i,Qn=(n)=>n==="src"||n==="href"||n.startsWith("on"),un=(n,r)=>{if(r==null||r===!1)return null;if(Qn(n)){let e=String(r);if(qn.test(e))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return r},t=(n,r={},e=[])=>{if(r instanceof Node||q(r)||!nn(r))e=r,r={};if(A(n)){let o=X(()=>{let b=n(r,{children:e,emit:(_,...w)=>r[`on${_[0].toUpperCase()}${_.slice(1)}`]?.(...w)});return o._result=b,b});o();let a=o._result;if(a==null)return null;let u=a instanceof Node||q(a)&&a.every((b)=>b instanceof Node)?a:W.createTextNode(String(a)),i=(b)=>{if(nn(b)&&!b._isRuntime)b._mounts=o._mounts||[],b._cleanups=o._cleanups||new Set,b._ownerEffect=o};return q(u)?u.forEach(i):i(u),u}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),f=s?W.createElementNS("http://www.w3.org/2000/svg",n):W.createElement(n);f._cleanups=new Set;for(let o in r){if(!r.hasOwnProperty(o))continue;let a=r[o];if(o==="ref"){A(a)?a(f):a.current=f;continue}if(s&&o.startsWith("xlink:")){a==null?f.removeAttributeNS("http://www.w3.org/1999/xlink",o.slice(6)):f.setAttributeNS("http://www.w3.org/1999/xlink",o.slice(6),a);continue}if(o.startsWith("on")){let u=o.slice(2).toLowerCase();f.addEventListener(u,a);let i=()=>f.removeEventListener(u,a);f._cleanups.add(i),Q(i)}else if(A(a)){let u=X(()=>{let i=un(o,a());if(o==="class")f.className=i||"";else if(i==null)f.removeAttribute(o);else if(o in f&&!s)f[o]=i;else f.setAttribute(o,i===!0?"":i)});if(u(),f._cleanups.add(()=>R(u)),Q(()=>R(u)),/^(INPUT|TEXTAREA|SELECT)$/.test(f.tagName)&&(o==="value"||o==="checked")){let i=o==="checked"?"change":"input";f.addEventListener(i,(b)=>a(b.target[o]))}}else{let u=un(o,a);if(u!=null)if(o in f&&!s)f[o]=u;else f.setAttribute(o,u===!0?"":u)}}let l=(o)=>{if(q(o))return o.forEach(l);if(A(o)){let a=W.createTextNode("");f.appendChild(a);let u=[],i=X(()=>{let b=o(),_=(q(b)?b:[b]).map(an);u.forEach((E)=>{if(E._isRuntime)E.destroy();else tn(E);if(E.parentNode)E.remove()});let w=a;for(let E=_.length-1;E>=0;E--){let y=_[E];if(y.parentNode!==w.parentNode)w.parentNode?.insertBefore(y,w);if(y._mounts)y._mounts.forEach((g)=>g());w=y}u=_});i(),f._cleanups.add(()=>R(i)),Q(()=>R(i))}else{let a=an(o);if(f.appendChild(a),a._mounts)a._mounts.forEach((u)=>u())}};return l(e),f},I=(n)=>{let r=new Set,e=L,s=k,f=W.createElement("div");f.style.display="contents",f.setAttribute("role","presentation"),L={_cleanups:r},k=null;let l=(o)=>{if(!o)return;if(o._isRuntime)r.add(o.destroy),f.appendChild(o.container);else if(q(o))o.forEach(l);else f.appendChild(o instanceof Node?o:W.createTextNode(String(o==null?"":o)))};try{l(n({onCleanup:(o)=>r.add(o)}))}finally{L=e,k=s}return{_isRuntime:!0,container:f,destroy:()=>{r.forEach((o)=>o()),tn(f),f.remove()}}},U=(n,r,e=null)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),l=null;return J(()=>!!(A(n)?n():n),(o)=>{if(l)l.destroy(),l=null;let a=o?r:e;if(a)l=I(()=>A(a)?a():a),f.insertBefore(l.container,s)}),Q(()=>l?.destroy()),f},V=({name:n,duration:r=200,scale:e,slide:s,rotate:f,blur:l},o)=>{let a=typeof o==="function"?o():o;if(!(a instanceof Node))return a;if(n)return a.style.animation=`${n}-in ${r}ms`,a;let u=e||s||f||l,i=[e?"scale(0.95)":"",s?"translateY(-10px)":"",f?"rotate(-2deg)":""].filter(Boolean).join(" ");if(a.style.transition=`all ${r}ms ease`,a.style.opacity="0",u)a.style.transform=i;if(l)a.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(a.style.opacity="1",u)a.style.transform="none";if(l)a.style.filter="none"}),a},m=(n,r,e)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),l=new Map;return J(()=>(A(n)?n():n)||[],(o)=>{let a=new Map,u=[],i=o||[];for(let _=0;_r(w,_));else l.delete(E);a.set(E,y),u.push(y)}l.forEach((_)=>_.destroy());let b=s;for(let _=u.length-1;_>=0;_--){let w=u[_].container;if(w.nextSibling!==b)f.insertBefore(w,b);b=w}l=a}),f},B=(n)=>{let r=()=>window.location.hash.slice(1)||"/",e=d(r()),s=()=>e(r());window.addEventListener("hashchange",s),Q(()=>window.removeEventListener("hashchange",s));let f=t("div",{class:"router-hook"}),l=null;return J([e],()=>{let o=e(),a=n.find((u)=>{let i=u.path.split("/").filter(Boolean),b=o.split("/").filter(Boolean);return i.length===b.length&&i.every((_,w)=>_[0]===":"||_===b[w])})||n.find((u)=>u.path==="*");if(a){l?.destroy();let u={};a.path.split("/").filter(Boolean).forEach((i,b)=>{if(i[0]===":")u[i.slice(1)]=o.split("/").filter(Boolean)[b]}),B.params(u),l=I(()=>A(a.component)?a.component(u):a.component),f.replaceChildren(l.container)}}),f};B.params=d({});B.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");B.back=()=>window.history.back();B.path=()=>window.location.hash.replace(/^#/,"")||"/";var Bn=({url:n,method:r="GET",headers:e={}})=>{let s=d(!1),f=d(null),l=d(null),o=null,a=null;return{run:async(u=null)=>{o?.abort(),clearTimeout(a),o=new AbortController,a=setTimeout(()=>o.abort(),1e4),s(!0),f(null);try{let i=u instanceof FormData,b=await fetch(n,{method:r,headers:i?e:{"Content-Type":"application/json",...e},body:i?u:u?JSON.stringify(u):void 0,signal:o.signal}),_=await b.text(),w=_?JSON.parse(_):null;if(!b.ok)throw Error(w?.message||b.statusText);return l(w),w}catch(i){if(i.name!=="AbortError")f(i.message);throw i}finally{s(!1),clearTimeout(a),o=null,a=null}},abort:()=>o?.abort(),loading:s,error:f,data:l}},rn=(n,r)=>{let e=typeof r==="string"?W.querySelector(r):r;if(!e)return;if(p.has(e))p.get(e).destroy();let s=I(A(n)?n:()=>n);return e.replaceChildren(s.container),p.set(e,s),s},Kn=Object.freeze({$:d,$$:cn,watch:J,h:t,when:U,each:m,fx:V,router:B,req:Bn,mount:rn,batch:Un});if(typeof window<"u")Object.assign(window,Kn),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(r,e)=>t(n,r,e)});var N=(n)=>typeof n==="function"?n():n,j=(n,r="label")=>n&&typeof n==="object"?n[r]:n,c=(...n)=>n.filter(Boolean).join(" ").trim(),S=(n)=>typeof n==="function",_n=(n,r,e="label")=>{let s=String(r).toLowerCase(),f=N(n);return!s?f:f.filter((l)=>{let o=l&&typeof l==="object"?l[e]:l;return String(o).toLowerCase().includes(s)})},yn=(n,r)=>{let e=d(-1);return J(()=>{if(!N(r))e(-1)}),{cursor:e,onKey:(f,l)=>{let o=N(n),a=e(),u=o.length;if(!u)return;let i=f.key;i==="ArrowDown"?(f.preventDefault(),r(!0),e(Math.min(a+1,u-1))):i==="ArrowUp"?(f.preventDefault(),e(Math.max(a-1,0))):i==="Enter"?a>=0&&(f.preventDefault(),l(o[a])):i==="Escape"&&r(!1)}}},Gn=(n,r)=>t("div",{...n,class:c("alert",n.class)},r),Xn=(n,r)=>t("span",{...n,class:c("badge",n.class)},r),wn=(n,r)=>t("button",{...n,class:c("btn",n.class)},r),Zn=(n,r)=>t("div",{...n,class:c("card",n.class)},r),Yn=(n,r)=>t("div",{...n,class:c("card-title",n.class)},r),In=(n,r)=>t("div",{...n,class:c("card-body",n.class)},r),Vn=(n,r)=>t("div",{...n,class:c("card-actions",n.class)},r),On=(n,r)=>t("div",{...n,class:c("carousel",n.class)},r),Hn=(n,r)=>t("div",{...n,class:c("carousel-item",n.class)},r),Dn=(n,r)=>t("div",{...n,class:c("chat",n.class)},r),vn=(n,r)=>t("div",{...n,class:c("chat-bubble",n.class)},r),Fn=(n,r)=>t("div",{...n,class:c("chat-footer",n.class)},r),Mn=(n,r)=>t("div",{...n,class:c("chat-header",n.class)},r),hn=(n,r)=>t("div",{...n,class:c("chat-image avatar",n.class)},t("div",{class:"w-10 rounded-full"},typeof r==="string"?t("img",{src:r,alt:"avatar"}):r)),pn=(n)=>t("input",{...n,type:"checkbox",class:c("checkbox",n.class)}),nt=(n)=>t("div",{...n,class:c("divider",n.class)}),tt=(n,r)=>t("div",{...n,class:c("fab",n.class)},r),rt=(n,r)=>t("fieldset",{...n,class:c("fieldset",n.class)},[n.legend&&t("legend",{class:"fieldset-legend"},n.legend),r]),ot=(n)=>t("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),et=(n,r)=>t("div",{...n,class:c("indicator",n.class)},[n.value&&t("span",{class:c("indicator-item badge",n.class)},n.value),r]),lt=(n,r)=>t("kbd",{...n,class:c("kbd",n.class)},r),st=(n,r)=>t("span",{...n,class:c("loading loading-spinner",n.class)},r),at=(n,r)=>t("div",{...n,class:c("navbar",n.class)},r),ft=(n)=>t("progress",{...n,class:c("progress",n.class)}),ut=(n,r)=>t("div",{...n,class:c("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},r??`${n.value??0}%`),bt=(n)=>t("input",{...n,type:"radio",class:c("radio",n.class)}),it=(n)=>t("input",{...n,type:"range",class:c("range",n.class)}),ct=(n)=>t("div",{...n,class:c("skeleton",n.class)}),_t=(n)=>t("span",{...n,class:c("skeleton skeleton-text",n.class)}),yt=(n,r)=>t("div",{...n,class:c("stack",n.class)},r),wt=(n,r)=>t("ul",{...n,class:c("steps",n.class)},r),Et=(n,r)=>t("li",{...n,class:c("step",n.class),"data-content":n.dataContent},r),dt=(n)=>t("label",{...n,class:c("swap",n.class)},[t("input",{type:"checkbox",checked:()=>N(n.value),onchange:(r)=>S(n.value)&&n.value(r.target.checked)}),t("div",{class:"swap-on"},n.on),t("div",{class:"swap-off"},n.off)]),gt=(n)=>t("textarea",{...n,class:c("textarea",n.class)}),Nt=(n)=>{let r=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return t("span",{...n,class:c("text-rotate",n.class)},t("span",{},r.map((e)=>t("span",{},e))))},St=(n,r)=>t("ul",{...n,class:c("timeline",n.vertical!==!1?"timeline-vertical":"timeline-horizontal",n.compact?"timeline-compact":"",n.class)},r),kt=(n)=>t("input",{...n,type:"checkbox",class:c("toggle",n.class)}),xt=(n,r)=>t("div",{...n,class:c("tooltip",n.class),"data-tip":n.tip},r),Ct=(n)=>{let r=n.name||`acc-${Math.random().toString(36).slice(2)}`,e=c("collapse",n.variant&&`collapse-${n.variant}`,n.class),s=(f)=>{let l=j(f,"title"),o=f.content;return n.type==="details"?t("details",{class:e,name:r,open:f.open||void 0},t("summary",{class:"collapse-title font-semibold"},l),o?t("div",{class:"collapse-content text-sm"},o):null):t("div",{class:e},t("input",{type:"radio",name:r,checked:f.open||void 0}),t("div",{class:"collapse-title font-semibold"},l),o?t("div",{class:"collapse-content text-sm"},o):null)};return S(n.items)?m(n.items,s,(f,l)=>f?.id??l):(n.items||[]).map(s)},Lt=(n)=>{if(n.children!==void 0)return t("table",{class:c("table",n.class),...n},n.children);let{items:r,columns:e=[],header:s=!0,keyFn:f,...l}=n,o=s!==!1&&e.some((u)=>u.label)?t("thead",{},t("tr",{},e.map((u)=>t("th",{class:u.class},u.label)))):null,a=t("tbody",{},m(()=>N(r)||[],(u,i)=>t("tr",{},e.map((b)=>{let _=b.render?b.render(u,i):u[b.key];return t("td",{class:b.class},_)})),f||((u,i)=>u?.id??i)));return t("table",{class:c("table",l.class),...l},[o,a])},Tt=(n)=>{if(n.children!==void 0)return t("div",{class:c("tabs",n.class),...n},n.children);let{items:r,activeIndex:e,onClose:s,...f}=n,l=s||(S(r)?(o)=>{let u=N(r).filter((i,b)=>b!==o);if(r(u),e()>=u.length)e(Math.max(0,u.length-1))}:null);return t("div",{class:c("tabs",n.class),...f},m(()=>N(r)||[],(o,a)=>{let u=()=>e()===a;return[t("a",{role:"tab",class:()=>`tab ${u()?"tab-active":""} ${o.class||""}`,onclick:(i)=>{i.preventDefault(),e(a),o.onclick?.(i)}},j(o),o.closable?t("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(i)=>{i.stopPropagation(),l?.(a)}}):null),t("div",{class:`tab-content ${o.contentClass||""}`,style:()=>`display: ${u()?"block":"none"};`},S(o.content)?o.content():o.content)]},(o,a)=>o.id??a))},$t=(n)=>{let r=`rating-${Math.random().toString(36).slice(2,7)}`,e=n.children??Array.from({length:n.count||5},(s,f)=>{let l=f+1;return t("input",{type:"radio",name:r,class:c("mask",n.mask||"mask-star"),checked:()=>N(n.value)===l,onchange:()=>S(n.value)?n.value(l):n.onchange?.(l)})});return t("div",{class:c("rating",n.class),...n},e)},En=(n)=>{if(n.children!==void 0)return t("ul",{class:c("menu",n.class),...n},n.children);let{items:r,keyFn:e=(l,o)=>l?.id??o,...s}=n,f=(l)=>l.children?t("li",{},t("details",{},t("summary",{},j(l)),t("ul",{},En({items:l.children})))):t("li",{},t("a",{href:l.href,onclick:l.onclick?(o)=>{if(!l.href)o.preventDefault();l.onclick(o)}:null},j(l)));return t("ul",{class:c("menu",s.class),...s},m(()=>N(r)||[],f,e))},At=(n,r)=>{let e=n.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return t("div",{class:c("drawer",n.class)},[t("input",{id:e,type:"checkbox",class:"drawer-toggle",checked:()=>N(n.open),onchange:(s)=>S(n.open)&&n.open(s.target.checked)}),t("div",{class:"drawer-content"},r),t("div",{class:"drawer-side"},[t("label",{for:e,class:"drawer-overlay",onclick:()=>S(n.open)&&n.open(!1)}),t("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>N(n.side))])])},jt=(n,r)=>{let{trigger:e,items:s,...f}=n,l=r||(s?t("ul",{class:"menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow"},m(()=>N(s)||[],(o)=>t("li",{},t("a",{onclick:(a)=>{o.onclick?.(a),a.currentTarget.closest("details").open=!1}},j(o))),(o,a)=>o.id??a)):null);return t("details",{class:c("dropdown",f.class),...f},[t("summary",{class:"btn m-1"},e||"Dropdown"),l])},Wt=(n,r)=>{if(r!==void 0)return t("select",{class:c("select",n.class),...n},r);let{label:e,float:s,placeholder:f,placeholderDisabled:l=!0,value:o,left:a,right:u,hint:i,items:b,keyFn:_,...w}=n,E=()=>{let y=N(b)||[];return[...f?[{disabled:l,label:f,value:""}]:[],...y]};return t("label",{class:s?"floating-label":""},[s&&t("span",{},e),t("label",{class:c("select",w.class)},[e&&!s&&t("span",{class:"label"},e),a??null,t("select",{value:()=>N(o),onchange:(y)=>S(o)?o(y.target.value):w.onchange?.(y)},m(E,(y)=>{let g=j(y,y.value!==void 0?"value":void 0),x=j(y,"label");return t("option",{value:g,disabled:y.disabled||void 0},x)},(y,g)=>y?.id??(typeof y==="string"?y:y.value)??g)),u??null]),i&&t("div",{class:"validator-hint"},i)])},mt=({items:n,value:r,onselect:e,placeholder:s="Buscar...",...f})=>{let l=d(N(r)||""),o=d(!1),a=d(()=>_n(n,l())),{cursor:u,onKey:i}=yn(a,o),b=(_)=>{let w=j(_),E=typeof _==="string"?_:_.value;if(l(w),S(r))r(E);e?.(_),o(!1)};return t("div",{class:"relative w-full"},[dn({...f,type:"text",placeholder:s,value:l,left:t("span",{class:"icon-[lucide--search]"}),oninput:(_)=>{if(l(_.target.value),S(r))r(_.target.value);o(!0)},onfocus:()=>o(!0),onblur:()=>setTimeout(()=>o(!1),150),onkeydown:(_)=>i(_,b)}),U(o,()=>V({duration:200,slide:!0},t("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[m(a,(_,w)=>t("li",{},[t("a",{class:()=>u()===w?"active bg-primary text-primary-content":"",onmousedown:(E)=>E.preventDefault(),onclick:()=>b(_),onmouseenter:()=>u(w)},j(_))]),(_,w)=>j(_)+w),()=>a().length===0?t("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},dn=(n)=>{let{label:r,icon:e,float:s,placeholder:f,value:l,left:o,right:a,rule:u,hint:i,content:b,..._}=n,w=d(!1),E=d(!1),y=n.type==="password",g=u??null,x=()=>y?N(w)?"text":"password":n.type||"text";return t("div",{class:"input-container",onfocusin:()=>E(!0),onfocusout:(C)=>{if(!C.currentTarget.contains(C.relatedTarget))E(!1)}},[t("label",{class:s?"floating-label":""},[s?t("span",{},r):null,t("label",{pattern:g,class:()=>c("input validator",n.class)},[r&&!s?t("span",{class:"label"},r):null,o??null,t("input",{..._,type:x,class:"grow",pattern:g,placeholder:f||r||" ",value:l}),a??null,y?t("label",{class:"swap swap-rotate ml-2"},[t("input",{type:"checkbox",onchange:(C)=>w(C.target.checked)}),t("span",{class:"swap-on icon-[lucide--eye]"}),t("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),i?t("div",{class:"validator-hint"},i):null,U(E,()=>V({duration:300,slide:!0},t("div",{class:"input-content",onmousedown:(C)=>C.preventDefault()},[S(b)?b(E):b])))])])},zt=(n)=>{let r=d(!1),e=()=>N(n.value)||"#000000",s=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],f=(l)=>{S(n.value)?n.value(l):n.onchange?.(l),r(!1)};return t("div",{class:c("relative w-fit",n.class)},[t("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(l)=>{l.stopPropagation(),r(!r())}},[t("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${e()}`}),n.label&&t("span",{class:"opacity-80"},n.label)]),U(r,()=>[t("div",{class:"fixed inset-0 z-[100]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},t("div",{class:"grid grid-cols-8 gap-1"},s.map((l)=>t("button",{type:"button",style:`background-color: ${l}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${e().toLowerCase()===l.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>f(l)}))))])])},gn=(n)=>{let r=d(new Date),e=d(null),s=d(0),f=d(0),l=new Date,o=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,a=(y)=>`${y.getFullYear()}-${String(y.getMonth()+1).padStart(2,"0")}-${String(y.getDate()).padStart(2,"0")}`,u=()=>N(n.range)===!0,i=()=>N(n.value),b=(y)=>{let g=a(y),x=i();if(u())if(!x?.start||x.start&&x.end)n.onChange?.({start:g,end:null,...n.hour&&{startHour:s()}});else{let C=x.start,K=g{let g=r();r(new Date(g.getFullYear(),g.getMonth()+y,1))},w=(y)=>{let g=r();r(new Date(g.getFullYear()+y,g.getMonth(),1))},E=({value:y,onChange:g})=>t("div",{class:"flex-1"},[t("div",{class:"flex gap-2 items-center"},[t("input",{type:"range",min:0,max:23,value:y,class:"range range-xs flex-1",oninput:(x)=>g(+x.target.value)}),t("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(N(y)).padStart(2,"0")+":00")])]);return t("div",{class:c("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[t("div",{class:"flex justify-between items-center mb-4 gap-1"},[t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(-1)},t("span",{class:"icon-[lucide--chevrons-left]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(-1)},t("span",{class:"icon-[lucide--chevron-left]"}))]),t("span",{class:"font-bold uppercase flex-1 text-center"},()=>r().toLocaleString("es-ES",{month:"short",year:"numeric"})),t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(1)},t("span",{class:"icon-[lucide--chevron-right]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(1)},t("span",{class:"icon-[lucide--chevrons-right]"}))])]),t("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>e(null)},[...["L","M","X","J","V","S","D"].map((y)=>t("div",{class:"text-[10px] opacity-40 font-bold text-center"},y)),()=>{let y=r(),g=y.getFullYear(),x=y.getMonth(),C=new Date(g,x,1).getDay(),K=C===0?6:C-1,Ln=new Date(g,x+1,0).getDate(),O=[];for(let P=0;P{let z=i(),H=e(),Tn=typeof z==="string"?z.split("T")[0]===T:z?.start===T,$n=z?.end===T,D=!1;if(u()&&z?.start){let v=z.start;if(!z.end&&H)D=T>v&&T<=H||T=H;else if(z.end)D=T>v&&Tu()&&e(T),onclick:()=>b(ln)},P.toString()))}return O}]),n.hour?t("div",{class:"mt-3 pt-2 border-t border-base-300"},u()?t("div",{class:"flex gap-4"},[E({value:s,onChange:(y)=>s(y)}),E({value:f,onChange:(y)=>f(y)})]):E({value:s,onChange:(y)=>s(y)})):null])},Jt=(n)=>{let r=d(!1),e=d(""),s=()=>N(n.range)===!0;J(()=>{let l=N(n.value);if(!l)return e("");let o="";if(typeof l==="string")o=n.hour&&l.includes("T")?l.replace("T"," "):l;else if(l.start&&l.end){let a=n.hour&&l.startHour!=null?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start,u=n.hour&&l.endHour!=null?`${l.end} ${String(l.endHour).padStart(2,"0")}:00`:l.end;o=`${a} - ${u}`}else if(l.start)o=`${n.hour&&l.startHour!=null?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start}...`;e(o)});let f=(l)=>{if(S(n.value))n.value(l);else n.onChange?.(l);if(!s()||l?.end!=null)r(!1)};return t("div",{class:c("relative w-full",n.class)},[t("label",{class:"input input-bordered w-full",onclick:(l)=>{l.stopPropagation(),r(!r())}},[t("span",{class:"icon-[lucide--calendar]"}),t("input",{...n,type:"text",class:"grow",value:e,readonly:!0,placeholder:n.placeholder||(s()?"Seleccionar rango...":"Seleccionar fecha...")})]),U(r,()=>[t("div",{class:"fixed inset-0 z-[90]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(l)=>l.stopPropagation()},gn({value:n.value,range:s(),hour:n.hour,onChange:f}))])])},Pt=(n)=>{let r=d([]),e=d(!1),s=d(null),f=(n.max||2)*1024*1024,l=(a)=>{let u=Array.from(a);if(s(null),u.some((b)=>b.size>f)){s(`Máx ${n.max||2}MB`);return}let i=[...r(),...u];if(r(i),S(n.onselect))n.onselect(i);else if(S(n.value))n.value(i)},o=(a)=>{let u=r().filter((i,b)=>b!==a);if(r(u),S(n.onselect))n.onselect(u);else if(S(n.value))n.value(u)};return t("div",{class:c("fieldset w-full p-0",n.class)},[t("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${e()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(a)=>{a.preventDefault(),e(!0)},ondragleave:()=>e(!1),ondrop:(a)=>{a.preventDefault(),e(!1),l(a.dataTransfer.files)}},[t("div",{class:"flex items-center gap-3 w-full"},[t("span",{class:"icon-[lucide--upload]"}),t("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),t("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),t("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(a)=>l(a.target.files)})]),()=>s()&&t("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),U(()=>r().length>0,()=>t("ul",{class:"mt-2 space-y-1"},m(r,(a,u)=>t("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[t("div",{class:"flex items-center gap-2 truncate"},[t("span",{class:"opacity-50"},"\uD83D\uDCC4"),t("span",{class:"truncate font-medium max-w-[200px]"},a.name),t("span",{class:"text-[9px] opacity-40"},`(${(a.size/1024).toFixed(0)} KB)`)]),t("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(i)=>{i.preventDefault(),o(u)}},t("span",{class:"icon-[lucide--x]"}))]),(a)=>a.name+a.lastModified)))])},Rt=(n,r="alert-success",e=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=t("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let f=t("div",{style:"display: contents"});s.appendChild(f);let l,o,a,i=rn(()=>{let b=d(!1),_=d(!1);l=()=>{if(_())return;clearTimeout(o),clearTimeout(a),_(!0),setTimeout(()=>{if(i.destroy(),f.remove(),!s.hasChildNodes())s.remove()},300)},a=setTimeout(()=>b(!0),0);let w=typeof n==="function"?N(n):n,E=typeof w==="string"?t("span",{},w):w;return t("div",{class:()=>{if(_())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(b())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[E,t("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:l},t("span",{class:"icon-[lucide--x]"}))])},f);if(e>0)o=setTimeout(l,e);return l},Ut=(n)=>{let r=null;J(()=>{let s=N(n.open);if(!r)return;s?r.showModal():r.close()});let e=()=>S(n.open)&&n.open(!1);return t("dialog",{...n,ref:(s)=>r=s,class:c("modal",n.class),onclose:e,oncancel:e},[t("div",{class:"modal-box"},[n.title&&t("h3",{class:"text-lg font-bold"},n.title),n.children,t("div",{class:"modal-action"},[n.actions||wn({class:"btn",onclick:e},"Cerrar")])]),t("form",{method:"dialog",class:"modal-backdrop"},[t("button",{},"close")])])};var en={};M(en,{Editor:()=>qt});var qt=(n)=>{let{value:r,class:e}=n,s=null,f=d(!1),l=d(""),o=()=>{if(!s)return;let b=s.innerHTML;if(S(r))r(b);else n.onchange?.(b)},a=(b,_=null)=>{if(!s)return;s.focus(),document.execCommand(b,!1,_),o()},u=(b,_=null)=>{if(!s)return!1;try{if(b==="formatBlock"){let w=window.getSelection();if(!w.rangeCount)return!1;let E=w.getRangeAt(0).commonAncestorContainer;while(E&&E!==s){if(E.nodeType===1&&E.tagName===_)return!0;E=E.parentNode}return!1}return document.queryCommandState(b)}catch(w){return!1}},i=t("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200"},[t("div",{class:"flex flex-wrap gap-1 flex-1"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("bold")?"btn-active":""}`,onclick:()=>a("bold")},t("span",{class:"icon-[lucide--bold]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("italic")?"btn-active":""}`,onclick:()=>a("italic")},t("span",{class:"icon-[lucide--italic]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("underline")?"btn-active":""}`,onclick:()=>a("underline")},t("span",{class:"icon-[lucide--underline]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("strikeThrough")?"btn-active":""}`,onclick:()=>a("strikeThrough")},t("span",{class:"icon-[lucide--strikethrough]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertUnorderedList")},t("span",{class:"icon-[lucide--list]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertOrderedList")},t("span",{class:"icon-[lucide--list-ordered]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>a("formatBlock",u("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},t("span",{class:"icon-[lucide--quote]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("select",{class:"select select-xs w-16",onchange:(b)=>a("fontSize",b.target.value),value:"3"},[t("option",{value:"1"},"1"),t("option",{value:"2"},"2"),t("option",{value:"3"},"3"),t("option",{value:"4"},"4"),t("option",{value:"5"},"5"),t("option",{value:"6"},"6"),t("option",{value:"7"},"7")]),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("undo")},t("span",{class:"icon-[lucide--undo-2]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("redo")},t("span",{class:"icon-[lucide--redo-2]"}))]),t("div",{class:"flex"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${f()?"btn-active":""}`,onclick:()=>{let b=f();if(!b)l(s?.innerHTML||"");else if(s)s.innerHTML=l(),o();f(!b)}},t("span",{class:"icon-[lucide--code-2]"}))])]);return t("div",{class:c("border border-base-300 rounded-box bg-base-100 overflow-hidden",e)},[i,t("div",{class:"relative"},[t("div",{ref:(b)=>{if(!s&&b)s=b,b.innerHTML=N(r)||""},style:()=>`min-height:10rem;${f()?"display:none":""}`,class:"p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]",contenteditable:"true",oninput:o,onpaste:()=>setTimeout(o,0)}),t("textarea",{class:"w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0",style:()=>f()?"":"display:none",value:l,oninput:(b)=>l(b.target.value)})])])};var Qt={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},Nn=d("es"),Sn=(n)=>Nn(n),kn=(n)=>()=>Qt[Nn()][n]||n;var xn={...on,...en},Cn={Locale:Sn,tt:kn};if(typeof window<"u")Object.entries({...xn,...Cn}).forEach(([n,r])=>{Object.defineProperty(window,n,{value:r,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");})(); +(()=>{var{defineProperty:p,getOwnPropertyNames:Zn,getOwnPropertyDescriptor:Gn}=Object,$n=Object.prototype.hasOwnProperty;function Yn(n){return this[n]}var Bn=(n)=>{var f=(bn??=new WeakMap).get(n),t;if(f)return f;if(f=p({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var _ of Zn(n))if(!$n.call(f,_))p(f,_,{get:Yn.bind(n,_),enumerable:!(t=Gn(n,_))||t.enumerable})}return bn.set(n,f),f},bn;var Sn=(n)=>n;function Un(n,f){this[n]=Sn.bind(null,f)}var nn=(n,f)=>{for(var t in f)p(n,t,{get:f[t],enumerable:!0,configurable:!0,set:Un.bind(f,t)})};var Dr={};nn(Dr,{Utils:()=>Kn,Components:()=>kn});var wn={};nn(wn,{rand:()=>d,listKey:()=>ln,isFn:()=>Q,getBy:()=>q,get:()=>A,filterBy:()=>Wn,cls:()=>y,close:()=>gn,Tooltip:()=>qr,Toggle:()=>Vr,Toast:()=>Ur,Timeline:()=>Sr,Textarea:()=>Yr,TextRotate:()=>Br,Tabs:()=>$r,Table:()=>Gr,Swap:()=>Zr,Steps:()=>Pr,Step:()=>Tr,Stack:()=>Kr,SkeletonText:()=>kr,Skeleton:()=>Qr,Select:()=>Ar,Rating:()=>Xr,Range:()=>Lr,Radio:()=>jr,Radial:()=>Jr,Progress:()=>zr,Navbar:()=>lr,Modal:()=>Wr,Menu:()=>Cr,Loading:()=>yr,List:()=>or,Kbd:()=>Nr,Input:()=>Ln,Indicator:()=>Er,Icon:()=>jn,Fileinput:()=>br,Fieldset:()=>ar,Fab:()=>wr,Dropdown:()=>ur,Drawer:()=>tr,Divider:()=>_r,Datepicker:()=>fr,Colorpicker:()=>rr,Checkbox:()=>nr,ChatImage:()=>pn,ChatHeader:()=>hn,ChatFooter:()=>en,ChatBubble:()=>cn,Chat:()=>vn,CarouselItem:()=>dn,Carousel:()=>mn,Card:()=>Mn,Calendar:()=>Jn,Button:()=>zn,Badge:()=>xn,Autocomplete:()=>sn,Alert:()=>Fn,Accordion:()=>Rn});var B=(n)=>typeof n==="function",tn=(n)=>n&&typeof n==="object",O=Array.isArray,S=typeof document<"u"?document:null,En=(n)=>n?._isRuntime?n.container:n instanceof Node?n:S.createTextNode(n==null?"":String(n)),K=null,G=null,F=!1,x=0,M=new Set,Nn=new WeakMap,rn=Symbol("iter"),fn=new WeakMap,H=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let f=[n];while(f.length){let t=f.pop();if(t._cleanups)t._cleanups.forEach((_)=>_()),t._cleanups.clear();if(t._children)t._children.forEach((_)=>f.push(_)),t._children.clear();if(t._deps)t._deps.forEach((_)=>_.delete(t)),t._deps.clear()}},g=(n)=>{if(G)(G._cleanups||=new Set).add(n)},Vn=(n)=>{let f=K;K=null;try{return n()}finally{K=f}},s=(n,f=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((u)=>u.delete(t));if(t._cleanups)t._cleanups.forEach((u)=>u()),t._cleanups.clear();let _=K,a=G;K=G=t;try{return t._result=n()}catch(u){console.error("[SigPro]",u)}finally{K=_,G=a}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=f,t._depth=K?K._depth+1:0,t._mounts=[],t._parent=G,G)(G._children||=new Set).add(t);return t},yn=()=>{if(F)return;F=!0;let n=Array.from(M).sort((f,t)=>f._depth-t._depth);M.clear();for(let f of n)if(!f._disposed)f();F=!1},qn=(n)=>{x++;try{return n()}finally{if(x--,x===0&&M.size>0&&!F)yn()}},Y=(n,f=!1)=>{if(!f&&K&&!K._disposed)n.add(K),(K._deps||=new Set).add(n);else if(f&&n.size>0){let t=!1;for(let _ of n){if(_===K||_._disposed)continue;if(_._isComputed){if(_._dirty=!0,_._subs)Y(_._subs,!0)}else M.add(_),t=!0}if(t&&!F&&x===0)queueMicrotask(yn)}},L=(n,f=null)=>{let t=new Set;if(B(n)){let _,a=()=>{if(a._dirty){let u=K;K=a;try{let w=n();if(!Object.is(_,w))_=w,Y(t,!0)}finally{K=u}a._dirty=!1}return Y(t),_};if(a._isComputed=!0,a._subs=t,a._dirty=!0,a._deps=null,a._disposed=!1,a.stop=()=>{},G)g(a.stop);return a}if(f)try{n=JSON.parse(localStorage.getItem(f))??n}catch(_){}return(..._)=>{if(_.length){let a=B(_[0])?_[0](n):_[0];if(!Object.is(n,a)){if(n=a,f)localStorage.setItem(f,JSON.stringify(n));Y(t,!0)}}return Y(t),n}},Cn=(n)=>{if(!tn(n))return n;let f=Nn.get(n);if(f)return f;let t=new Map,_=(u)=>{let w=t.get(u);if(!w)t.set(u,w=new Set);return w},a=new Proxy(n,{get(u,w,b){if(typeof w!=="symbol")Y(_(w));return Cn(Reflect.get(u,w,b))},set(u,w,b,E){let N=Reflect.has(u,w),o=Reflect.get(u,w,E),C=Reflect.set(u,w,b,E);if(C&&!Object.is(o,b)){if(Y(_(w),!0),!N)Y(_(rn),!0)}return C},deleteProperty(u,w){let b=Reflect.deleteProperty(u,w);if(b)Y(_(w),!0),Y(_(rn),!0);return b},ownKeys(u){return Y(_(rn)),Reflect.ownKeys(u)}});return Nn.set(n,a),a},I=(n,f)=>{if(f===void 0){let _=s(n);return _(),()=>H(_)}let t=s(()=>{let _=Array.isArray(n)?n.map((a)=>a()):n();Vn(()=>f(_))});return t(),()=>H(t)},_n=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((f)=>f()),n._cleanups.clear();if(n._ownerEffect)H(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((f)=>_n(f))},In=/^\s*(javascript|data|vbscript):/i,Hn=(n)=>n==="src"||n==="href"||n.startsWith("on"),on=(n,f)=>{if(f==null||f===!1)return null;if(Hn(n)){let t=String(f);if(In.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return f},r=(n,f={},t=[])=>{if(f instanceof Node||O(f)||!tn(f))t=f,f={};if(B(n)){let w=s(()=>{let o=n(f,{children:t,emit:(C,...J)=>f[`on${C[0].toUpperCase()}${C.slice(1)}`]?.(...J)});return w._result=o,o});w();let b=w._result;if(b==null)return null;let E=b instanceof Node||O(b)&&b.every((o)=>o instanceof Node)?b:S.createTextNode(String(b)),N=(o)=>{if(tn(o)&&!o._isRuntime)o._mounts=w._mounts||[],o._cleanups=w._cleanups||new Set,o._ownerEffect=w};return O(E)?E.forEach(N):N(E),E}let _=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),a=_?S.createElementNS("http://www.w3.org/2000/svg",n):S.createElement(n);a._cleanups=new Set;for(let w in f){if(!f.hasOwnProperty(w))continue;let b=f[w];if(w==="ref"){B(b)?b(a):b.current=a;continue}if(_&&w.startsWith("xlink:")){b==null?a.removeAttributeNS("http://www.w3.org/1999/xlink",w.slice(6)):a.setAttributeNS("http://www.w3.org/1999/xlink",w.slice(6),b);continue}if(w.startsWith("on")){let E=w.slice(2).toLowerCase();a.addEventListener(E,b);let N=()=>a.removeEventListener(E,b);a._cleanups.add(N),g(N)}else if(B(b)){let E=s(()=>{let N=on(w,b());if(w==="class")a.className=N||"";else if(N==null)a.removeAttribute(w);else if(w in a&&!_)a[w]=N;else a.setAttribute(w,N===!0?"":N)});if(E(),a._cleanups.add(()=>H(E)),g(()=>H(E)),/^(INPUT|TEXTAREA|SELECT)$/.test(a.tagName)&&(w==="value"||w==="checked")){let N=w==="checked"?"change":"input";a.addEventListener(N,(o)=>b(o.target[w]))}}else{let E=on(w,b);if(E!=null)if(w in a&&!_)a[w]=E;else a.setAttribute(w,E===!0?"":E)}}let u=(w)=>{if(O(w))return w.forEach(u);if(B(w)){let b=S.createTextNode("");a.appendChild(b);let E=[],N=s(()=>{let o=w(),C=(O(o)?o:[o]).map(En);E.forEach((j)=>{if(j._isRuntime)j.destroy();else _n(j);if(j.parentNode)j.remove()});let J=b;for(let j=C.length-1;j>=0;j--){let l=C[j];if(l.parentNode!==J.parentNode)J.parentNode?.insertBefore(l,J);if(l._mounts)l._mounts.forEach((z)=>z());J=l}E=C});N(),a._cleanups.add(()=>H(N)),g(()=>H(N))}else{let b=En(w);if(a.appendChild(b),b._mounts)b._mounts.forEach((E)=>E())}};return u(t),a},m=(n)=>{let f=new Set,t=G,_=K,a=S.createElement("div");a.style.display="contents",a.setAttribute("role","presentation"),G={_cleanups:f},K=null;let u=(w)=>{if(!w)return;if(w._isRuntime)f.add(w.destroy),a.appendChild(w.container);else if(O(w))w.forEach(u);else a.appendChild(w instanceof Node?w:S.createTextNode(String(w==null?"":w)))};try{u(n({onCleanup:(w)=>f.add(w)}))}finally{G=t,K=_}return{_isRuntime:!0,container:a,destroy:()=>{f.forEach((w)=>w()),_n(a),a.remove()}}},D=(n,f,t=null)=>{let _=S.createTextNode(""),a=r("div",{style:"display:contents"},[_]),u=null;return I(()=>!!(B(n)?n():n),(w)=>{if(u)u.destroy(),u=null;let b=w?f:t;if(b)u=m(()=>B(b)?b():b),a.insertBefore(u.container,_)}),g(()=>u?.destroy()),a},i=({name:n,duration:f=200,scale:t,slide:_,rotate:a,blur:u},w)=>{let b=typeof w==="function"?w():w;if(!(b instanceof Node))return b;if(n)return b.style.animation=`${n}-in ${f}ms`,b;let E=t||_||a||u,N=[t?"scale(0.95)":"",_?"translateY(-10px)":"",a?"rotate(-2deg)":""].filter(Boolean).join(" ");if(b.style.transition=`all ${f}ms ease`,b.style.opacity="0",E)b.style.transform=N;if(u)b.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(b.style.opacity="1",E)b.style.transform="none";if(u)b.style.filter="none"}),b},U=(n,f,t)=>{let _=S.createTextNode(""),a=r("div",{style:"display:contents"},[_]),u=new Map;return I(()=>(B(n)?n():n)||[],(w)=>{let b=new Map,E=[],N=w||[];for(let C=0;Cf(J,C));else u.delete(j);b.set(j,l),E.push(l)}u.forEach((C)=>C.destroy());let o=_;for(let C=E.length-1;C>=0;C--){let J=E[C].container;if(J.nextSibling!==o)a.insertBefore(J,o);o=J}u=b}),a},R=(n)=>{let f=()=>window.location.hash.slice(1)||"/",t=L(f()),_=()=>t(f());window.addEventListener("hashchange",_),g(()=>window.removeEventListener("hashchange",_));let a=r("div",{class:"router-hook"}),u=null;return I([t],()=>{let w=t(),b=n.find((E)=>{let N=E.path.split("/").filter(Boolean),o=w.split("/").filter(Boolean);return N.length===o.length&&N.every((C,J)=>C[0]===":"||C===o[J])})||n.find((E)=>E.path==="*");if(b){u?.destroy();let E={};b.path.split("/").filter(Boolean).forEach((N,o)=>{if(N[0]===":")E[N.slice(1)]=w.split("/").filter(Boolean)[o]}),R.params(E),u=m(()=>B(b.component)?b.component(E):b.component),a.replaceChildren(u.container)}}),a};R.params=L({});R.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");R.back=()=>window.history.back();R.path=()=>window.location.hash.replace(/^#/,"")||"/";var Dn=({url:n,method:f="GET",headers:t={}})=>{let _=L(!1),a=L(null),u=L(null),w=null,b=null;return{run:async(E=null)=>{w?.abort(),clearTimeout(b),w=new AbortController,b=setTimeout(()=>w.abort(),1e4),_(!0),a(null);try{let N=E instanceof FormData,o=await fetch(n,{method:f,headers:N?t:{"Content-Type":"application/json",...t},body:N?E:E?JSON.stringify(E):void 0,signal:w.signal}),C=await o.text(),J=C?JSON.parse(C):null;if(!o.ok)throw Error(J?.message||o.statusText);return u(J),J}catch(N){if(N.name!=="AbortError")a(N.message);throw N}finally{_(!1),clearTimeout(b),w=null,b=null}},abort:()=>w?.abort(),loading:_,error:a,data:u}},un=(n,f)=>{let t=typeof f==="string"?S.querySelector(f):f;if(!t)return;if(fn.has(t))fn.get(t).destroy();let _=m(B(n)?n:()=>n);return t.replaceChildren(_.container),fn.set(t,_),_},On=Object.freeze({$:L,$$:Cn,watch:I,h:r,when:D,each:U,fx:i,router:R,req:Dn,mount:un,batch:qn});if(typeof window<"u")Object.assign(window,On),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(f,t)=>r(n,f,t)});var A=(n)=>typeof n==="function"?n():n,q=(n,f="label")=>n&&typeof n==="object"?n[f]:n,y=(...n)=>n.filter(Boolean).join(" ").trim(),Q=(n)=>typeof n==="function",Wn=(n,f,t="label",_=String(f).toLowerCase())=>!f?A(n):A(n).filter((a)=>String(a&&typeof a==="object"?a[t]:a).toLowerCase().includes(_)),d=(n)=>`${n}-${Math.random().toString(36).slice(2,9)}`,gn=()=>document.activeElement?.blur(),ln=(n,f)=>{let t=L(-1);return I(()=>{if(!A(f))t(-1)}),{cursor:t,onKey:(a,u)=>{let w=A(n),b=t(),E=w.length;if(!E)return;let N=a.key;N==="ArrowDown"?(a.preventDefault(),f(!0),t(Math.min(b+1,E-1))):N==="ArrowUp"?(a.preventDefault(),t(Math.max(b-1,0))):N==="Enter"?b>=0&&(a.preventDefault(),u(w[b])):N==="Escape"&&f(!1)}}},Rn=(n)=>{let f=n.name||d("acc");return U(n.items,(t)=>{return r("div",{class:y("collapse",n.class)},[r("input",{type:"radio",name:f,checked:t.open||void 0}),t.title?r("div",{class:y("collapse-title",`${t.classTitle??" font-semibold"}`)},t.title):null,t.content?r("div",{class:y("collapse-content text-sm",`${t.classContent??" font-semibold"}`)},t.content):null])})},Fn=(n,f)=>r("div",{...n,class:y("alert",n.class)},f),sn=({items:n,value:f,onselect:t,placeholder:_="Buscar...",...a})=>{let u=L(A(f)||""),w=L(!1),b=L(()=>Wn(n,u())),{cursor:E,onKey:N}=ln(b,w),o=(C)=>{let J=q(C),j=typeof C==="string"?C:C.value;if(u(J),Q(f))f(j);t?.(C),w(!1)};return r("div",{class:"relative w-full"},[Ln({...a,type:"text",placeholder:_,value:u,left:r("span",{class:"icon-[lucide--search]"}),oninput:(C)=>{if(u(C.target.value),Q(f))f(C.target.value);w(!0)},onfocus:()=>w(!0),onblur:()=>setTimeout(()=>w(!1),150),onkeydown:(C)=>N(C,o)}),D(w,()=>i({duration:200,slide:!0},r("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[U(b,(C,J)=>r("li",{},[r("a",{class:()=>E()===J?"active bg-primary text-primary-content":"",onmousedown:(j)=>j.preventDefault(),onclick:()=>o(C),onmouseenter:()=>E(J)},q(C))]),(C,J)=>q(C)+J),()=>b().length===0?r("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},xn=(n,f)=>r("span",{...n,class:y("badge",n.class)},f),zn=(n,f)=>r("button",{...n,class:y("btn",n.class)},f),Jn=(n)=>{let f=L(new Date),t=L(null),_=L(0),a=L(0),u=new Date,w=`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}-${String(u.getDate()).padStart(2,"0")}`,b=(l)=>`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,E=()=>A(n.range)===!0,N=()=>A(n.value),o=(l)=>{let z=b(l),T=N();if(E())if(!T?.start||T.start&&T.end)n.onChange?.({start:z,end:null,...n.hour&&{startHour:_()}});else{let Z=T.start,$=z{let z=f();f(new Date(z.getFullYear(),z.getMonth()+l,1))},J=(l)=>{let z=f();f(new Date(z.getFullYear()+l,z.getMonth(),1))},j=({value:l,onChange:z})=>r("div",{class:"flex-1"},[r("div",{class:"flex gap-2 items-center"},[r("input",{type:"range",min:0,max:23,value:l,class:"range range-xs flex-1",oninput:(T)=>z(+T.target.value)}),r("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(A(l)).padStart(2,"0")+":00")])]);return r("div",{class:y("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[r("div",{class:"flex justify-between items-center mb-4 gap-1"},[r("div",{class:"flex gap-0.5"},[r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>J(-1)},r("span",{class:"icon-[lucide--chevrons-left]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>C(-1)},r("span",{class:"icon-[lucide--chevron-left]"}))]),r("span",{class:"font-bold uppercase flex-1 text-center"},()=>f().toLocaleString("es-ES",{month:"short",year:"numeric"})),r("div",{class:"flex gap-0.5"},[r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>C(1)},r("span",{class:"icon-[lucide--chevron-right]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>J(1)},r("span",{class:"icon-[lucide--chevrons-right]"}))])]),r("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>t(null)},[...["L","M","X","J","V","S","D"].map((l)=>r("div",{class:"text-[10px] opacity-40 font-bold text-center"},l)),()=>{let l=f(),z=l.getFullYear(),T=l.getMonth(),Z=new Date(z,T,1).getDay(),$=Z===0?6:Z-1,v=new Date(z,T+1,0).getDate(),W=[];for(let X=0;X<$;X++)W.push(r("div"));for(let X=1;X<=v;X++){let k=new Date(z,T,X),P=b(k);W.push(r("button",{type:"button",class:()=>{let V=N(),c=t(),Pn=typeof V==="string"?V.split("T")[0]===P:V?.start===P,Tn=V?.end===P,e=!1;if(E()&&V?.start){let h=V.start;if(!V.end&&c)e=P>h&&P<=c||P=c;else if(V.end)e=P>h&&PE()&&t(P),onclick:()=>o(k)},X.toString()))}return W}]),n.hour?r("div",{class:"mt-3 pt-2 border-t border-base-300"},E()?r("div",{class:"flex gap-4"},[j({value:_,onChange:(l)=>_(l)}),j({value:a,onChange:(l)=>a(l)})]):j({value:_,onChange:(l)=>_(l)})):null])},Mn=(n,f)=>{if(!n.title&&!n.body&&!n.actions&&!f)return r("div",{...n,class:y("card",n.class)},f);return r("div",{...n,class:y("card",n.class)},[n.title&&r("div",{class:y("card-title",n.titleClass)},n.title),(n.body||f)&&r("div",{class:y("card-body",n.bodyClass)},n.body||f),n.actions&&r("div",{class:y("card-actions",n.actionsClass)},n.actions)].filter(Boolean))},mn=(n,f)=>r("div",{...n,class:y("carousel",n.class)},f),dn=(n,f)=>r("div",{...n,class:y("carousel-item",n.class)},f),vn=(n,f)=>r("div",{...n,class:y("chat",n.class)},f),cn=(n,f)=>r("div",{...n,class:y("chat-bubble",n.class)},f),en=(n,f)=>r("div",{...n,class:y("chat-footer",n.class)},f),hn=(n,f)=>r("div",{...n,class:y("chat-header",n.class)},f),pn=(n,f)=>r("div",{...n,class:y("chat-image avatar",n.class)},r("div",{class:"w-10 rounded-full"},typeof f==="string"?r("img",{src:f,alt:"avatar"}):f)),nr=(n)=>r("input",{...n,type:"checkbox",class:y("checkbox",n.class)}),rr=(n)=>{let f=L(!1),t=()=>A(n.value)||"#000000",_=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],a=(u)=>{Q(n.value)?n.value(u):n.onchange?.(u),f(!1)};return r("div",{class:y("relative w-fit",n.class)},[r("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(u)=>{u.stopPropagation(),f(!f())}},[r("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${t()}`}),n.label&&r("span",{class:"opacity-80"},n.label)]),D(f,()=>[r("div",{class:"fixed inset-0 z-[100]",onclick:()=>f(!1)}),r("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},r("div",{class:"grid grid-cols-8 gap-1"},_.map((u)=>r("button",{type:"button",style:`background-color: ${u}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${t().toLowerCase()===u.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>a(u)}))))])])},fr=(n)=>{let f=L(!1),t=L(""),_=()=>A(n.range)===!0;I(()=>{let u=A(n.value);if(!u)return t("");let w="";if(typeof u==="string")w=n.hour&&u.includes("T")?u.replace("T"," "):u;else if(u.start&&u.end){let b=n.hour&&u.startHour!=null?`${u.start} ${String(u.startHour).padStart(2,"0")}:00`:u.start,E=n.hour&&u.endHour!=null?`${u.end} ${String(u.endHour).padStart(2,"0")}:00`:u.end;w=`${b} - ${E}`}else if(u.start)w=`${n.hour&&u.startHour!=null?`${u.start} ${String(u.startHour).padStart(2,"0")}:00`:u.start}...`;t(w)});let a=(u)=>{if(Q(n.value))n.value(u);else n.onChange?.(u);if(!_()||u?.end!=null)f(!1)};return r("div",{class:y("relative w-full",n.class)},[r("label",{class:"input input-bordered w-full",onclick:(u)=>{u.stopPropagation(),f(!f())}},[r("span",{class:"icon-[lucide--calendar]"}),r("input",{...n,type:"text",class:"grow",value:t,readonly:!0,placeholder:n.placeholder||(_()?"Seleccionar rango...":"Seleccionar fecha...")})]),D(f,()=>[r("div",{class:"fixed inset-0 z-[90]",onclick:()=>f(!1)}),r("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(u)=>u.stopPropagation()},Jn({value:n.value,range:_(),hour:n.hour,onChange:a}))])])},tr=(n,f)=>{let t=n.id||d("drawer");return r("div",{class:y("drawer",n.class)},[r("input",{id:t,type:"checkbox",class:"drawer-toggle",checked:()=>A(n.open),onchange:(_)=>Q(n.open)&&n.open(_.target.checked)}),r("div",{class:"drawer-side"},[r("label",{for:t,class:"drawer-overlay",onclick:()=>Q(n.open)&&n.open(!1)}),r("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>A(n.side))]),r("div",{class:"drawer-content"},f)])},_r=(n)=>r("div",{...n,class:y("divider",n.class)}),ur=(n,f)=>{return r("div",{...n,class:y("dropdown",n.class)},[r("div",{tabindex:"0",role:"button",class:y("btn",n.buttonClass)},n.label),r("div",{tabindex:"-1",class:"dropdown-content"},f)])},wr=(n,f)=>r("div",{class:"fab"},[r("div",{tabindex:"0",role:"button",class:y("btn",n.class)},jn(n.icon)),f]),ar=(n,f)=>r("fieldset",{class:y("fieldset",n.class)},[r("legend",{class:"fieldset-legend"},n.label),f]),br=(n)=>{let f=L([]),t=L(!1),_=L(null),a=(n.max||2)*1024*1024,u=(b)=>{let E=Array.from(b);if(_(null),E.some((o)=>o.size>a)){_(`Máx ${n.max||2}MB`);return}let N=[...f(),...E];if(f(N),Q(n.onselect))n.onselect(N);else if(Q(n.value))n.value(N)},w=(b)=>{let E=f().filter((N,o)=>o!==b);if(f(E),Q(n.onselect))n.onselect(E);else if(Q(n.value))n.value(E)};return r("div",{class:y("fieldset w-full p-0",n.class)},[r("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${t()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(b)=>{b.preventDefault(),t(!0)},ondragleave:()=>t(!1),ondrop:(b)=>{b.preventDefault(),t(!1),u(b.dataTransfer.files)}},[r("div",{class:"flex items-center gap-3 w-full"},[r("span",{class:"icon-[lucide--upload]"}),r("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),r("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),r("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(b)=>u(b.target.files)})]),()=>_()&&r("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},_()),D(()=>f().length>0,()=>r("ul",{class:"mt-2 space-y-1"},U(f,(b,E)=>r("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[r("div",{class:"flex items-center gap-2 truncate"},[r("span",{class:"opacity-50"},"\uD83D\uDCC4"),r("span",{class:"truncate font-medium max-w-[200px]"},b.name),r("span",{class:"text-[9px] opacity-40"},`(${(b.size/1024).toFixed(0)} KB)`)]),r("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(N)=>{N.preventDefault(),w(E)}},r("span",{class:"icon-[lucide--x]"}))]))))])},jn=(n)=>r("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),Er=(n,f)=>r("div",{...n,class:y("indicator",n.class)},[n.value&&r("span",{class:y("indicator-item badge",n.class)},n.value),f]),Ln=(n)=>{let{label:f,icon:t,float:_,placeholder:a,value:u,left:w,right:b,rule:E,hint:N,content:o,...C}=n,J=L(!1),j=L(!1),l=n.type==="password",z=E??null,T=()=>l?A(J)?"text":"password":n.type||"text";return r("div",{class:"input-container",onfocusin:()=>j(!0),onfocusout:(Z)=>{if(!Z.currentTarget.contains(Z.relatedTarget))j(!1)}},[r("label",{class:_?"floating-label":""},[_?r("span",{},f):null,r("label",{pattern:z,class:()=>y("input validator",n.class)},[f&&!_?r("span",{class:"label"},f):null,w??null,r("input",{...C,type:T,class:"grow",pattern:z,placeholder:a||f||" ",value:u}),b??null,l?r("label",{class:"swap swap-rotate ml-2"},[r("input",{type:"checkbox",onchange:(Z)=>J(Z.target.checked)}),r("span",{class:"swap-on icon-[lucide--eye]"}),r("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),N?r("div",{class:"validator-hint"},N):null,D(j,()=>i({duration:300,slide:!0},r("div",{class:"input-content",onmousedown:(Z)=>Z.preventDefault()},[Q(o)?o(j):o])))])])},Nr=(n,f)=>r("kbd",{...n,class:y("kbd",n.class)},f),or=(n,f)=>{if(!n.items)return r("ul",{...n,class:y("list",n.class)},f);return r("ul",{...n,class:y("list",n.class)},[U(n.items,(t,_)=>r("li",{class:y("list-row",t.class)},typeof n.render==="function"?n.render(t,_):t),n.key)])},yr=(n,f)=>r("span",{...n,class:y("loading loading-spinner",n.class)},f),Cr=(n)=>{if(n.children!==void 0)return r("ul",{class:y("menu",n.class),...n},n.children);let{items:f}=n,t=(_)=>_.children?r("li",{},r("details",{open:_.open||void 0},[r("summary",{},q(_)),r("ul",{},U(()=>A(_.children)||[],t))])):r("li",{},r("a",{href:_.href,onclick:_.onclick?(a)=>{if(!_.href)a.preventDefault();_.onclick(a)}:null},q(_)));return r("ul",{class:y("menu",n.class)},U(()=>A(f)||[],t))},Wr=(n)=>{let f=null;I(()=>{let _=A(n.open);if(!f)return;_?f.showModal():f.close()});let t=()=>Q(n.open)&&n.open(!1);return r("dialog",{...n,ref:(_)=>f=_,class:y("modal",n.class),onclose:t,oncancel:t},[r("div",{class:"modal-box"},[n.title&&r("h3",{class:"text-lg font-bold"},n.title),n.children,r("div",{class:"modal-action"},[n.actions||zn({class:"btn",onclick:t},"Cerrar")])]),r("form",{method:"dialog",class:"modal-backdrop"},[r("button",{},"close")])])},lr=(n,f)=>r("div",{...n,class:y("navbar",n.class)},f),zr=(n)=>r("progress",{...n,class:y("progress",n.class)}),Jr=(n,f)=>r("div",{...n,class:y("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},f??`${n.value??0}%`),jr=(n)=>r("input",{...n,type:"radio",class:y("radio",n.class)}),Lr=(n)=>r("input",{...n,type:"range",class:y("range",n.class)}),Xr=(n)=>{let f=d("rating"),t=n.children??Array.from({length:n.count||5},(_,a)=>{let u=a+1;return r("input",{type:"radio",name:f,class:y("mask",n.mask||"mask-star"),checked:()=>A(n.value)===u,onchange:()=>Q(n.value)?n.value(u):n.onchange?.(u)})});return r("div",{class:y("rating",n.class),...n},t)},Ar=(n,f)=>{if(f!==void 0)return r("select",{class:y("select",n.class),...n},f);let{label:t,float:_,placeholder:a,placeholderDisabled:u=!0,value:w,left:b,right:E,hint:N,items:o,keyFn:C,...J}=n,j=()=>{let l=A(o)||[];return[...a?[{disabled:u,label:a,value:""}]:[],...l]};return r("label",{class:_?"floating-label":""},[_?r("span",{},t):null,r("label",{class:y("select",J.class)},[!_&&t?r("span",{class:"label"},t):null,b??null,r("select",{value:()=>A(w),onchange:(l)=>Q(w)?w(l.target.value):J.onchange?.(l)},U(j,(l)=>{let z=q(l,l.value!==void 0?"value":void 0),T=q(l,"label");return r("option",{value:z,disabled:l.disabled||void 0},T)})),E??null]),N?r("div",{class:"validator-hint"},N):null])},Qr=(n)=>r("div",{...n,class:y("skeleton",n.class)}),kr=(n)=>r("span",{...n,class:y("skeleton skeleton-text",n.class)}),Kr=(n,f)=>r("div",{...n,class:y("stack",n.class)},f),Pr=(n,f)=>r("ul",{...n,class:y("steps",n.class)},f),Tr=(n,f)=>r("li",{...n,class:y("step",n.class),"data-content":n.dataContent},f),Zr=(n)=>r("label",{...n,class:y("swap",n.class)},[r("input",{type:"checkbox",checked:()=>A(n.value),onchange:(f)=>Q(n.value)&&n.value(f.target.checked)}),r("div",{class:"swap-on"},n.on),r("div",{class:"swap-off"},n.off)]),Gr=(n)=>{if(n.children!==void 0)return r("table",{class:y("table",n.class),...n},n.children);let{items:f,columns:t=[],header:_=!0,keyFn:a,...u}=n,w=_!==!1&&t.some((E)=>E.label)?r("thead",{},r("tr",{},t.map((E)=>r("th",{class:E.class},E.label)))):null,b=r("tbody",{},U(()=>A(f)||[],(E,N)=>r("tr",{},t.map((o)=>{let C=o.render?o.render(E,N):E[o.key];return r("td",{class:o.class},C)}))));return r("table",{class:y("table",u.class),...u},[w,b])},$r=(n,f)=>{if(!n.items){let{class:N,...o}=n;return r("div",{...o,class:y("tabs",N)},f)}let{items:t,activeIndex:_,onClose:a,class:u,...w}=n,b=(N)=>Q(N)?N():N,E=a||(Q(t)?(N,o)=>{let J=b(t).filter((j,l)=>l!==N);if(t(J),_()>=J.length)_(Math.max(0,J.length-1))}:null);return r("div",{...w,class:y("tabs",u)},()=>{return(b(t)||[]).flatMap((o,C)=>{let J=()=>_()===C,j=r("button",{class:()=>`tab ${J()?"tab-active":""} ${o.class||""}`,onclick:(z)=>{z.preventDefault(),_(C),o.onclick?.(z)}},[q(o),o.closable?r("span",{class:"ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-base-300 text-base-content/60 hover:text-base-content cursor-pointer",onclick:(z)=>{z.stopPropagation(),E?.(C,o)}},r("span",{class:"icon-[lucide--x] w-3 h-3"})):null]),l=r("div",{class:"tab-content bg-base-100 border-base-300 p-6",style:()=>`display: ${J()?"block":"none"};`},Q(o.content)?o.content():o.content);return[j,l]})})},Yr=(n)=>r("textarea",{...n,class:y("textarea",n.class)}),Br=(n)=>{let f=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return r("span",{...n,class:y("text-rotate",n.class)},r("span",{},f.map((t)=>r("span",{},t))))},Sr=(n,f)=>r("ul",{...n,class:y("timeline",n.class)},f),Ur=(n,f="alert-success",t=3500)=>{let _=document.getElementById("sigpro-toast-container");if(!_)_=r("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(_);let a=r("div",{style:"display: contents"});_.appendChild(a);let u,w,b,N=un(()=>{let o=L(!1),C=L(!1);u=()=>{if(C())return;clearTimeout(w),clearTimeout(b),C(!0),setTimeout(()=>{if(N.destroy(),a.remove(),!_.hasChildNodes())_.remove()},300)},b=setTimeout(()=>o(!0),0);let J=typeof n==="function"?A(n):n,j=typeof J==="string"?r("span",{},J):J;return r("div",{class:()=>{if(C())return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(o())return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[j,r("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:u},r("span",{class:"icon-[lucide--x]"}))])},a);if(t>0)w=setTimeout(u,t);return u},Vr=(n)=>r("input",{...n,type:"checkbox",class:y("toggle",n.class)}),qr=(n,f)=>r("div",{...n,class:y("tooltip",n.class),"data-tip":n.tip},f);var an={};nn(an,{Editor:()=>Ir});var Ir=(n)=>{let{value:f,class:t}=n,_=null,a=null,u=L(!1),w=L(""),b=L(0),E=L(0),N=L(!1),o=["\uD83D\uDE00","\uD83D\uDE0A","\uD83D\uDE09","\uD83E\uDDD0","\uD83D\uDE2E","\uD83E\uDD14","\uD83D\uDE05","\uD83D\uDE02","\uD83D\uDE0D","\uD83D\uDE18","\uD83E\uDD70","\uD83D\uDC4D","\uD83D\uDC4E","\uD83D\uDC4C","\uD83E\uDD1D","\uD83E\uDD1E","\uD83D\uDC4B","\uD83D\uDC4F","\uD83D\uDE4C","\uD83D\uDE4F","\uD83D\uDCAA","☝️","\uD83D\uDC47","\uD83D\uDC48","\uD83D\uDC49","\uD83D\uDD95","✅","⚠️","\uD83D\uDE80","\uD83D\uDCE2","✉️","❤️"],C=()=>{let W=window.getSelection();if(W.getRangeAt&&W.rangeCount)a=W.getRangeAt(0)},J=()=>{if(a){let W=window.getSelection();W.removeAllRanges(),W.addRange(a)}},j=()=>{if(E(E()+1),_)b(_.innerText.length)},l=()=>{if(!_)return;let W=_.innerHTML;if(Q(f))f(W);else n.onchange?.(W);j()},z=(W,X=null)=>{if(!_)return;if(_.focus(),a)J();document.execCommand(W,!1,X),a=null,l()},T=(W)=>{let X=document.createElement("div");X.style="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;";let k=document.createElement("img");k.src=W,k.style="max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;",X.onclick=()=>document.body.removeChild(X),X.appendChild(k),document.body.appendChild(X)},Z=(W)=>{if(!W)return;let X=new FileReader;X.onload=(k)=>{if(W.type.startsWith("image/")){let P=`
 `;z("insertHTML",P)}else{let P=`${W.name} `;z("insertHTML",P)}},X.readAsDataURL(W)},$=(W,X=null)=>{if(E(),!_||u())return!1;try{if(W==="formatBlock"){let k=window.getSelection().getRangeAt(0).commonAncestorContainer;while(k&&k!==_){if(k.nodeType===1&&k.tagName===X)return!0;k=k.parentNode}return!1}return document.queryCommandState(W)}catch(k){return!1}},v=r("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20"},[r("div",{class:"flex flex-wrap gap-1 flex-1 items-center"},[r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("bold")?"btn-active bg-primary/20":""}`,onclick:()=>z("bold")},r("span",{class:"icon-[lucide--bold]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("italic")?"btn-active bg-primary/20":""}`,onclick:()=>z("italic")},r("span",{class:"icon-[lucide--italic]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("underline")?"btn-active bg-primary/20":""}`,onclick:()=>z("underline")},r("span",{class:"icon-[lucide--underline]"})),r("input",{type:"color",class:"w-5 h-5 p-0 border-0 bg-transparent cursor-pointer",oninput:(W)=>z("foreColor",W.target.value)}),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyLeft")},r("span",{class:"icon-[lucide--align-left]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyCenter")},r("span",{class:"icon-[lucide--align-center]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyRight")},r("span",{class:"icon-[lucide--align-right]"})),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("insertUnorderedList")},r("span",{class:"icon-[lucide--list]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("insertOrderedList")},r("span",{class:"icon-[lucide--list-ordered]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("outdent"),title:"Mover izquierda"},r("span",{class:"icon-[lucide--indent-decrease]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("indent"),title:"Mover derecha (Tab)"},r("span",{class:"icon-[lucide--indent-increase]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>z("formatBlock",$("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},r("span",{class:"icon-[lucide--quote]"})),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let W=window.prompt("URL:");if(W)z("createLink",W)}},r("span",{class:"icon-[lucide--link]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let W=document.createElement("input");W.type="file",W.onchange=(X)=>Z(X.target.files[0]),W.click()}},r("span",{class:"icon-[lucide--paperclip]"})),r("div",{class:"relative"},[r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:(W)=>{W.stopPropagation(),C(),N(!N())}},r("span",{class:"icon-[lucide--smile]"})),r("div",{class:"absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1",style:()=>N()?"display:flex":"display:none"},o.map((W)=>r("span",{class:"cursor-pointer hover:bg-base-200 p-1 rounded text-lg",onclick:(X)=>{X.stopPropagation(),z("insertText",W),N(!1)}},W)))]),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("removeFormat")},r("span",{class:"icon-[lucide--eraser]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("undo"),title:"Deshacer"},r("span",{class:"icon-[lucide--undo-2]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("redo"),title:"Rehacer"},r("span",{class:"icon-[lucide--redo-2]"}))]),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u()?"btn-active":""}`,onclick:()=>{if(!u())w(_?.innerHTML||"");else if(_)_.innerHTML=w(),l();u(!u())}},r("span",{class:"icon-[lucide--code-2]"}))]);if(typeof document<"u"&&!document.getElementById("editor-styles")){let W=document.createElement("style");W.id="editor-styles",W.textContent=` + [contenteditable="true"] div, + [contenteditable="true"] p { + margin: 0; + padding: 0; + } + `,document.head.appendChild(W)}return r("div",{class:y("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col",t)},[v,r("div",{class:"relative flex-1 flex flex-col",onclick:()=>N(!1)},[r("div",{ref:(W)=>{if(!_&&W)_=W,W.innerHTML=A(f)||"",document.execCommand("defaultParagraphSeparator",!1,"br"),W.addEventListener("click",(X)=>{let k=X.target.closest(".resizable-img-container");if(k){let P=k.querySelector("img");if(P)T(P.src)}})},style:()=>`min-height:22rem;${u()?"display:none":""}`,class:"p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8",contenteditable:"true",oninput:l,onkeydown:(W)=>{if(W.key==="Tab")W.preventDefault(),z("indent")},onkeyup:()=>{j(),C()},onclick:(W)=>{j(),C(),W.stopPropagation()},onmouseup:()=>{l(),C()},onpaste:(W)=>{W.preventDefault();let X=W.clipboardData.getData("text/plain");z("insertText",X)},ondragover:(W)=>W.preventDefault(),ondrop:(W)=>{W.preventDefault(),Z(W.dataTransfer.files[0])}}),r("textarea",{class:"w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0",style:()=>u()?"":"display:none",value:w,oninput:(W)=>{if(w(W.target.value),_)_.innerHTML=W.target.value;n.onchange?.(W.target.value)}})]),r("div",{class:"px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic"},[r("span",()=>`${b()} caracteres`)])])};var Hr={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},Xn=L("es"),An=(n)=>Xn(n),Qn=(n)=>()=>Hr[Xn()][n]||n;var kn={...wn,...an},Kn={Locale:An,tt:Qn};if(typeof window<"u")Object.entries({...kn,...Kn}).forEach(([n,f])=>{Object.defineProperty(window,n,{value:f,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");})(); diff --git a/docs/components/accordion.md b/docs/components/accordion.md deleted file mode 100644 index ef9c046..0000000 --- a/docs/components/accordion.md +++ /dev/null @@ -1,68 +0,0 @@ -# Accordion - -Collapsible accordion component for organizing content into expandable sections. - -## Tag - -`Accordion` - -## Props - -| Prop | Type | Default | Description | -| :--------- | :--------------------------- | :--------------- | :----------------------------------------- | -| `title` | `string \| VNode \| Signal` | Required | Accordion section title | -| `open` | `boolean \| Signal` | `false` | Whether the accordion is expanded | -| `name` | `string` | `auto-generated` | Group name for radio-style accordions | -| `class` | `string` | `''` | Additional CSS classes | -| `children` | `VNode \| Array` | Required | Content to display when expanded | -| `items` | `Array` | `-` | Array of accordion items (alternative API) | - -## Live Examples - -### Basic Accordion - -
-
-

Live Demo

-
-
-
- -```js -const { Accordion, Div, mount } = window; - -const BasicDemo = () => { - const open1 = $(false); - const open2 = $(false); - const open3 = $(false); - - return div({ class: "flex flex-col gap-2" }, [ - Accordion( - { - title: "Section 1", - open: open1, - }, - div( - { class: "p-2" }, - "Content for section 1. This is a basic accordion section.", - ), - ), - Accordion({ - title: "Section 2", - open: open2, - }, div( - { class: "p-2" }, - "Content for section 2. You can put any content here.", - ),), - Accordion({ - title: "Section 3", - open: open3, - children: div( - { class: "p-2" }, - "Content for section 3. Accordions are great for FAQs.", - ), - }), - ]); -}; -mount(BasicDemo, "#demo-basic"); -``` diff --git a/docs/components/alert.md b/docs/components/alert.md deleted file mode 100644 index a66a4ca..0000000 --- a/docs/components/alert.md +++ /dev/null @@ -1,207 +0,0 @@ -# Alert - -Alert component for displaying contextual messages, notifications, and feedback with different severity levels. Supports soft and solid variants. - -## Tag - -`Alert` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `children` | `string \| VNode \| Array` | Required | Alert content | - -## Styling - -Alert supports all **daisyUI Alert classes**: - -| Category | Classes | Description | -| :--- | :--- | :--- | -| Color | `alert-info`, `alert-success`, `alert-warning`, `alert-error` | Alert type variants | -| Style | `alert-soft` (default), `alert-solid` | Visual style variants | - -> For further details, check the [daisyUI Alert Documentation](https://daisyui.com/components/alert) – Full reference for CSS classes. - -## Live Examples - -### Basic Alerts - -
-
-

Live Demo

-
-
-
- -```js -const { Alert, Div, mount } = window; - -const BasicDemo = () => { - return div({ class: 'flex flex-col gap-3' }, [ - Alert({ class: 'alert-info' }, 'This is an informational message.'), - Alert({ class: 'alert-success' }, 'Operation completed successfully!'), - Alert({ class: 'alert-warning' }, 'Please review your input before proceeding.'), - Alert({ class: 'alert-error' }, 'An error occurred while processing your request.') - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Soft vs Solid Variants - -
-
-

Live Demo

-
-
-
- -```js -const { Alert, Div, mount } = window; - -const VariantsDemo = () => { - return div({ class: 'flex flex-col gap-3' }, [ - Alert({ class: 'alert-info alert-soft' }, 'Soft info alert'), - Alert({ class: 'alert-info alert-solid' }, 'Solid info alert'), - Alert({ class: 'alert-success alert-soft' }, 'Soft success alert'), - Alert({ class: 'alert-success alert-solid' }, 'Solid success alert') - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### With Actions - -
-
-

Live Demo

-
-
-
- -```js -const { Alert, Button, Div, mount, Toast } = window; - -const ActionsDemo = () => { - const showUndo = $(false); - const deletedItem = $(null); - - const deleteItem = (item) => { - deletedItem(item); - showUndo(true); - setTimeout(() => { - if (showUndo()) { - showUndo(false); - Toast('Item permanently deleted', 'alert-info', 2000); - } - }, 5000); - }; - - const undoDelete = () => { - showUndo(false); - Toast(`Restored: ${deletedItem()}`, 'alert-success', 2000); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex gap-2' }, [ - button({ class: 'btn btn-sm', onclick: () => deleteItem('Document A') }, 'Delete Document A'), - button({ class: 'btn btn-sm', onclick: () => deleteItem('Document B') }, 'Delete Document B') - ]), - () => showUndo() ? Alert({ class: 'alert-warning alert-soft flex justify-between items-center' }, [ - span({}, `Deleted: ${deletedItem()}`), - button({ class: 'btn btn-sm btn-primary', onclick: undoDelete }, 'Undo') - ]) : null - ]); -}; -mount(ActionsDemo, '#demo-actions'); -``` - -### Dismissible Alert - -
-
-

Live Demo

-
-
-
- -```js -const { Alert, Button, Div, mount } = window; - -const DismissibleDemo = () => { - const visible = $(true); - - return div({ class: 'flex flex-col gap-3' }, [ - () => visible() ? Alert({ class: 'alert-info flex justify-between items-center' }, [ - span({}, 'This alert can be dismissed. Click the X button to close.'), - button({ class: 'btn btn-xs btn-circle btn-ghost', onclick: () => visible(false) }, '✕') - ]) : null, - () => !visible() ? button({ class: 'btn btn-sm btn-ghost', onclick: () => visible(true) }, 'Show Alert') : null - ]); -}; -mount(DismissibleDemo, '#demo-dismissible'); -``` - -### Reactive Alert - -
-
-

Live Demo

-
-
-
- -```js -const { Alert, Div, Input, mount } = window; - -const ReactiveDemo = () => { - const email = $(''); - const error = $(''); - - const validateEmail = (value) => { - email(value); - if (value && !value.includes('@')) { - error('Please enter a valid email address'); - } else { - error(''); - } - }; - - return div({ class: 'flex flex-col gap-4' }, [ - input({ - class: 'input input-bordered', - placeholder: 'Enter your email', - value: email, - oninput: (e) => validateEmail(e.target.value) - }), - () => error() ? Alert({ class: 'alert-error' }, error()) : null, - () => email() && !error() ? Alert({ class: 'alert-success' }, `Valid email: ${email()}`) : null - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### All Types - -
-
-

Live Demo

-
-
-
- -```js -const { Alert, Div, mount } = window; - -const AllTypesDemo = () => { - return div({ class: 'flex flex-col gap-3' }, [ - Alert({ class: 'alert-info' }, 'ℹ️ This is an info alert'), - Alert({ class: 'alert-success' }, '✅ This is a success alert'), - Alert({ class: 'alert-warning' }, '⚠️ This is a warning alert'), - Alert({ class: 'alert-error' }, '❌ This is an error alert') - ]); -}; -mount(AllTypesDemo, '#demo-all'); -``` diff --git a/docs/components/autocomplete.md b/docs/components/autocomplete.md deleted file mode 100644 index 92e058e..0000000 --- a/docs/components/autocomplete.md +++ /dev/null @@ -1,117 +0,0 @@ -# Autocomplete - -
-
-

Live Demo

-
-
-
- -```js -// const App = () => { -// const selected = $(''); -// const filterType = $('all'); - -// const allItems = { -// fruits: ['Apple', 'Banana', 'Orange', 'Mango'], -// vegetables: ['Carrot', 'Broccoli', 'Spinach', 'Potato'], -// all: ['Apple', 'Banana', 'Orange', 'Mango', 'Carrot', 'Broccoli', 'Spinach', 'Potato'] -// }; - -// return div({ class: 'flex flex-col gap-4 w-full' }, [ -// Select({ -// items: [ -// { value: 'all', label: 'All items' }, -// { value: 'fruits', label: 'Fruits' }, -// { value: 'vegetables', label: 'Vegetables' } -// ], -// value: filterType, -// onchange: (e) => filterType(e.target.value) -// }, -// ), -// Autocomplete({ -// items: () => allItems[filterType()], -// value: selected, -// onselect: (value) => selected(value) -// }) -// ]); -// }; - - -const App = () => { - const password = $(""); - const selected = $(''); - - const countries = [ - 'España', 'México', 'Argentina', 'Colombia', 'Chile', - { label: 'Estados Unidos', value: 'US' }, - { label: 'Canadá', value: 'CA' }, - ]; - - // Lógica de validación sencilla - const requirements = [ - { label: "Mínimo 8 caracteres", check: () => password().length >= 8 }, - { label: "Incluye un número", check: () => /\d/.test(password()) }, - { label: "Símbolo especial", check: () => /[^A-Za-z0-9]/.test(password()) }, - ]; - const paisSelected = $(""); - return div({ class: "p-10 max-w-md" }, [ - Autocomplete({ - label: 'País', - float: true, - placeholder: 'Escribe para buscar...', - items: countries, - value: selected, - onselect: (item) => console.log('Seleccionado:', item), - }), - - h('p', { class: 'text-sm opacity-70' }, () => - `Valor actual: ${selected() || 'ninguno'}` - ), - Input({ - type: "password", - value: password, - rule: "[0-9]*", - hint: "Debes escribir numeros del 0 al 9", - oninput: (e) => password(e.target.value), - label: "Pass", - float: true, - left: span({ class: "icon-[lucide--lock] mr-2" }), - // El contenido que se animará con fx() dentro del Input - content: div( - { - class: - "mt-2 p-4 bg-base-200 rounded-lg shadow-xl border border-base-300", - }, - [ - span( - { class: "text-xs font-bold uppercase opacity-50" }, - "Seguridad:", - ), - ul( - { class: "mt-2 space-y-1" }, - requirements.map((req) => - h( - "li", - { - class: () => - `flex items-center text-sm ${req.check() ? "text-success" : "text-error opacity-50"}`, - }, - [ - span({ - class: () => - `mr-2 ${req.check() ? "icon-[lucide--check]" : "icon-[lucide--x]"}`, - }), - req.label, - ], - ), - ), - ), - ], - ), - }), - ]); -}; - -mount(App, "#app-demo"); -``` diff --git a/docs/components/badge.md b/docs/components/badge.md deleted file mode 100644 index 498ae38..0000000 --- a/docs/components/badge.md +++ /dev/null @@ -1,323 +0,0 @@ -# Badge - -Badge component for displaying counts, labels, and status indicators. - -## Tag - -`Badge` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI badge variants) | -| `children` | `string \| VNode` | `-` | Badge content | - -## Styling - -Badge supports all **daisyUI Badge classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color | `badge-primary`, `badge-secondary`, `badge-accent`, `badge-info`, `badge-success`, `badge-warning`, `badge-error` | Visual color variants | -| Size | `badge-xs`, `badge-sm`, `badge-md`, `badge-lg` | Badge scale | -| Style | `badge-outline`, `badge-ghost`, `badge-dash` | Visual style variants | - -> For further details, check the [daisyUI Badge Documentation](https://daisyui.com/components/badge) – Full reference for CSS classes. - -### Example - -```javascript -Badge({ class: "badge-primary badge-lg" }, "New"); -// Applies: primary color, large size -``` - -## Live Examples - -### Basic Badge - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return div({ class: 'flex flex-wrap gap-2' }, [ - Badge({}, 'Default'), - Badge({ class: 'badge-primary' }, 'Primary'), - Badge({ class: 'badge-secondary' }, 'Secondary'), - Badge({ class: 'badge-accent' }, 'Accent'), - Badge({ class: 'badge-info' }, 'Info'), - Badge({ class: 'badge-success' }, 'Success'), - Badge({ class: 'badge-warning' }, 'Warning'), - Badge({ class: 'badge-error' }, 'Error') - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Badge Sizes - -
-
-

Live Demo

-
-
-
- -```javascript -const SizesDemo = () => { - return div({ class: 'flex flex-wrap gap-2 items-center' }, [ - Badge({ class: 'badge-xs' }, 'Extra Small'), - Badge({ class: 'badge-sm' }, 'Small'), - Badge({}, 'Default'), - Badge({ class: 'badge-md' }, 'Medium'), - Badge({ class: 'badge-lg' }, 'Large') - ]); -}; -mount(SizesDemo, '#demo-sizes'); -``` - -### Outline Badges - -
-
-

Live Demo

-
-
-
- -```javascript -const OutlineDemo = () => { - return div({ class: 'flex flex-wrap gap-2' }, [ - Badge({ class: 'badge-outline' }, 'Default'), - Badge({ class: 'badge-outline badge-primary' }, 'Primary'), - Badge({ class: 'badge-outline badge-secondary' }, 'Secondary'), - Badge({ class: 'badge-outline badge-accent' }, 'Accent'), - Badge({ class: 'badge-outline badge-info' }, 'Info'), - Badge({ class: 'badge-outline badge-success' }, 'Success'), - Badge({ class: 'badge-outline badge-warning' }, 'Warning'), - Badge({ class: 'badge-outline badge-error' }, 'Error') - ]); -}; -mount(OutlineDemo, '#demo-outline'); -``` - -### Ghost Badges - -
-
-

Live Demo

-
-
-
- -```javascript -const GhostDemo = () => { - return div({ class: 'flex flex-wrap gap-2' }, [ - Badge({ class: 'badge-ghost' }, 'Default'), - Badge({ class: 'badge-ghost badge-primary' }, 'Primary'), - Badge({ class: 'badge-ghost badge-secondary' }, 'Secondary'), - Badge({ class: 'badge-ghost badge-accent' }, 'Accent'), - Badge({ class: 'badge-ghost badge-info' }, 'Info'), - Badge({ class: 'badge-ghost badge-success' }, 'Success'), - Badge({ class: 'badge-ghost badge-warning' }, 'Warning'), - Badge({ class: 'badge-ghost badge-error' }, 'Error') - ]); -}; -mount(GhostDemo, '#demo-ghost'); -``` - -### With Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - return div({ class: 'flex flex-wrap gap-2' }, [ - Badge({ class: 'gap-1' }, [ - span({}, '✓'), - span({}, 'Success') - ]), - Badge({ class: 'gap-1 badge-warning' }, [ - span({}, '⚠'), - span({}, 'Warning') - ]), - Badge({ class: 'gap-1 badge-error' }, [ - span({}, '✗'), - span({}, 'Error') - ]), - Badge({ class: 'gap-1 badge-info' }, [ - span({}, 'ℹ'), - span({}, 'Info') - ]), - Badge({ class: 'gap-1' }, [ - span({}, '★'), - span({}, '4.5') - ]) - ]); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Status Badges - -
-
-

Live Demo

-
-
-
- -```javascript -const StatusDemo = () => { - const statuses = [ - { label: 'Active', class: 'badge-success' }, - { label: 'Pending', class: 'badge-warning' }, - { label: 'Completed', class: 'badge-info' }, - { label: 'Failed', class: 'badge-error' }, - { label: 'Archived', class: 'badge-ghost' } - ]; - - return div({ class: 'flex flex-col gap-2' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Order Status'), - div({ class: 'flex flex-wrap gap-2' }, statuses.map(status => - Badge({ class: status.class }, status.label) - )) - ]); -}; -mount(StatusDemo, '#demo-status'); -``` - -### Count Badges - -
-
-

Live Demo

-
-
-
- -```javascript -const CountDemo = () => { - const notifications = $(3); - const messages = $(5); - const updates = $(0); - - return div({ class: 'flex flex-wrap gap-6' }, [ - div({ class: 'flex items-center gap-2' }, [ - span({}, 'Notifications'), - Badge({ class: 'badge-primary' }, () => notifications()) - ]), - div({ class: 'flex items-center gap-2' }, [ - span({}, 'Messages'), - Badge({ class: 'badge-secondary' }, () => messages()) - ]), - div({ class: 'flex items-center gap-2' }, [ - span({}, 'Updates'), - Badge({ class: 'badge-ghost' }, () => updates() || '0') - ]) - ]); -}; -mount(CountDemo, '#demo-count'); -``` - -### Interactive Badge - -
-
-

Live Demo

-
-
-
- -```javascript -const InteractiveDemo = () => { - const count = $(0); - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - div({ class: 'flex items-center gap-4' }, [ - button({ class: 'btn btn-sm', onclick: () => count(count() - 1) }, '-'), - Badge({ class: 'badge-primary text-lg min-w-[4rem] justify-center' }, () => count()), - button({ class: 'btn btn-sm', onclick: () => count(count() + 1) }, '+') - ]), - button({ - class: 'btn btn-ghost btn-sm', - onclick: () => count(0) - }, 'Reset') - ]); -}; -mount(InteractiveDemo, '#demo-interactive'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-col gap-6' }, [ - div({ class: 'flex flex-wrap gap-2' }, [ - Badge({ class: 'badge-xs' }, 'XS'), - Badge({ class: 'badge-sm' }, 'SM'), - Badge({}, 'MD'), - Badge({ class: 'badge-lg' }, 'LG') - ]), - div({ class: 'flex flex-wrap gap-2' }, [ - Badge({ class: 'badge-primary badge-sm' }, 'Primary'), - Badge({ class: 'badge-secondary badge-sm' }, 'Secondary'), - Badge({ class: 'badge-accent badge-sm' }, 'Accent') - ]), - div({ class: 'flex flex-wrap gap-2' }, [ - Badge({ class: 'badge-outline badge-primary' }, 'Outline'), - Badge({ class: 'badge-ghost badge-primary' }, 'Ghost') - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Inline with Text - -
-
-

Live Demo

-
-
-
- -```javascript -const InlineDemo = () => { - return div({ class: 'space-y-2' }, [ - div({ class: 'text-sm' }, [ - 'Your order is ', - Badge({ class: 'badge-success badge-sm' }, 'Confirmed'), - ' and will be shipped soon.' - ]), - div({ class: 'text-sm' }, [ - 'This feature is ', - Badge({ class: 'badge-warning badge-sm' }, 'Beta'), - ' and may change.' - ]), - div({ class: 'text-sm' }, [ - 'Version ', - Badge({ class: 'badge-info badge-xs' }, 'v2.1.0'), - ' released on March 2026' - ]) - ]); -}; -mount(InlineDemo, '#demo-inline'); -``` \ No newline at end of file diff --git a/docs/components/button.md b/docs/components/button.md deleted file mode 100644 index 657db00..0000000 --- a/docs/components/button.md +++ /dev/null @@ -1,159 +0,0 @@ -# Button - ---- - -## Props - -| Prop | Type | Description | -| :--------- | :--------------------------- | :----------------------------------------------------- | -| `class` | `string` | Additional CSS classes | -| `loading` | `boolean \| Signal` | Shows a spinner and disables the button | -| `disabled` | `boolean \| Signal` | Disabled state | -| `icon` | `string \| VNode \| Signal` | Icon displayed before the text | -| `onclick` | `function` | Click event handler | -| `type` | `string` | Native button type (`'button'`, `'submit'`, `'reset'`) | - ---- - -## Classes (daisyUI) - -| Category | Keywords | Description | -| :------- | :--------------------------------------------------------------------------------------------------------------- | :-------------------- | -| Color | `btn-primary`, `btn-secondary`, `btn-accent`, `btn-ghost`, `btn-info`, `btn-success`, `btn-warning`, `btn-error` | Visual color variants | -| Size | `btn-xs`, `btn-sm`, `btn-md`, `btn-lg`, `btn-xl` | Button scale | -| Style | `btn-outline`, `btn-soft`, `btn-dash`, `btn-link` | Visual style variants | -| Shape | `btn-circle`, `btn-square`, `btn-wide`, `btn-block` | Button shape | -| State | `btn-active`, `btn-disabled` | Forced visual states | - -> SigProUI supports styling via daisyUI independently or combined with the `ui` prop. -> For further details, check the [daisyUI Button Documentation](https://daisyui.com/components/button) – Full reference for CSS classes. - -### Example - -```javascript -button({ class: "btn-primary btn-lg btn-circle gap-4" }, "Click Me"); -// Applies: primary color, large size, circular shape -// class is any css class from pure css or favorite framework -``` - ---- - -## Examples - -### Basic Button - -
- -```javascript -const BasicDemo = () => { - return button({ class: "btn-primary" }, "Click Me"); -}; -mount(BasicDemo, "#demo-basic"); -``` - -### With Loading State - -
- -```javascript -const LoadingDemo = () => { - const isSaving = $(false); - - return button( - { - class: "btn-success", - disabled: isSaving, - onclick: async () => { - isSaving(true); - await new Promise((resolve) => setTimeout(resolve, 2000)); - isSaving(false); - }, - }, - [when(isSaving, ()=>Loading()), "Save Changes"], - ); -}; -mount(LoadingDemo, "#demo-loading"); -``` - -### With Icon - -
- -```javascript -const IconDemo = () => { - return div({ class: "flex flex-wrap gap-2 justify-center" }, [ - button({ class: "btn-primary" }, [Icon("icon-[lucide--x]"), "Favorite"]), - ]); -}; -mount(IconDemo, "#demo-icon"); -``` - -### With Badge (using Indicator) - -
- -```javascript -const BadgeDemo = () => { - return Indicator( - { value: "3", class: "badge-accent" }, - button({ class: "btn-outline" }, "Notifications"), - ); -}; -mount(BadgeDemo, "#demo-badge"); -``` - -### With Tooltip - -
- -```javascript -const TooltipDemo = () => { - return Tooltip( - { tip: "Delete item" }, - button({ class: "btn-ghost" }, "Delete"), - ); -}; -mount(TooltipDemo, "#demo-tooltip"); -``` - -### Combined (Badge + Tooltip) - -
- -```javascript -const CombinedDemo = () => { - const count = $(0); - return Tooltip( - { tip: () => `${count()} likes` }, - Indicator( - { value: count, class: "badge-accent" }, - button( - { - class: "btn-primary btn-lg", - onclick: () => count(count() + 1), - }, - ["👍", "Like", Icon("icon-[lucide--heart]")], - ), - ), - ); -}; -mount(CombinedDemo, "#demo-combined"); -``` - -### All Color Variants - -
- -```javascript -const VariantsDemo = () => { - return div({ class: "flex flex-wrap gap-2 justify-center" }, [ - button({ class: "btn-primary" }, "Primary"), - button({ class: "btn-secondary" }, "Secondary"), - button({ class: "btn-accent" }, "Accent"), - button({ class: "btn-ghost" }, "Ghost"), - button({ class: "btn-outline" }, "Outline"), - button({ class: "btn-disabled" }, "Disabled"), - ]); -}; -mount(VariantsDemo, "#demo-variants"); -``` diff --git a/docs/components/checkbox.md b/docs/components/checkbox.md deleted file mode 100644 index c971da4..0000000 --- a/docs/components/checkbox.md +++ /dev/null @@ -1,292 +0,0 @@ -# Checkbox - -Toggle checkbox component with label support and reactive state management. - -## Tag - -`Checkbox` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `label` | `string` | `-` | Label text for the checkbox | -| `value` | `boolean \| Signal` | `false` | Checked state | -| `toggle` | `boolean` | `false` | Display as toggle switch instead of checkbox | -| `disabled` | `boolean \| Signal` | `false` | Disabled state | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `onclick` | `function` | `-` | Click event handler | - -## Styling - -Checkbox supports all **daisyUI Checkbox and Toggle classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color (Checkbox) | `checkbox-primary`, `checkbox-secondary`, `checkbox-accent`, `checkbox-info`, `checkbox-success`, `checkbox-warning`, `checkbox-error` | Checkbox color variants | -| Size (Checkbox) | `checkbox-xs`, `checkbox-sm`, `checkbox-md`, `checkbox-lg` | Checkbox scale | -| Color (Toggle) | `toggle-primary`, `toggle-secondary`, `toggle-accent`, `toggle-info`, `toggle-success`, `toggle-warning`, `toggle-error` | Toggle color variants | -| Size (Toggle) | `toggle-xs`, `toggle-sm`, `toggle-md`, `toggle-lg` | Toggle scale | - -> For further details, check the [daisyUI Checkbox Documentation](https://daisyui.com/components/checkbox) and [daisyUI Toggle Documentation](https://daisyui.com/components/toggle) – Full reference for CSS classes. - -### Example - -```javascript -// Checkbox -Checkbox({ class: "checkbox-primary checkbox-lg", label: "Accept terms" }); - -// Toggle switch -Checkbox({ toggle: true, class: "toggle-success", label: "Enable feature" }); -``` - -## Live Examples - -### Basic Checkbox - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const accepted = $(false); - - return Checkbox({ - label: 'I accept the terms and conditions', - value: accepted, - onclick: () => accepted(!accepted()) - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Toggle Switch - -
-
-

Live Demo

-
-
-
- -```javascript -const ToggleDemo = () => { - const enabled = $(false); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - Checkbox({ - label: 'Enable notifications', - value: enabled, - toggle: true, - onclick: () => enabled(!enabled()) - }), - () => enabled() - ? div({ class: 'alert alert-success' }, 'Notifications are ON') - : div({ class: 'alert alert-soft' }, 'Notifications are OFF') - ]); -}; -mount(ToggleDemo, '#demo-toggle'); -``` - -### Disabled State - -
-
-

Live Demo

-
-
-
- -```javascript -const DisabledDemo = () => { - return div({ class: 'flex flex-col gap-3' }, [ - Checkbox({ - label: 'Checked and disabled', - value: true, - disabled: true - }), - Checkbox({ - label: 'Unchecked and disabled', - value: false, - disabled: true - }) - ]); -}; -mount(DisabledDemo, '#demo-disabled'); -``` - -### Reactive Multiple Selection - -
-
-

Live Demo

-
-
-
- -```javascript -const MultipleDemo = () => { - const options = [ - { id: 1, label: 'Option 1', selected: $(false) }, - { id: 2, label: 'Option 2', selected: $(false) }, - { id: 3, label: 'Option 3', selected: $(false) } - ]; - - const selectAll = $(false); - - const toggleAll = (value) => { - selectAll(value); - options.forEach(opt => opt.selected(value)); - }; - - const updateSelectAll = () => { - const allSelected = options.every(opt => opt.selected()); - selectAll(allSelected); - }; - - return div({ class: 'flex flex-col gap-3' }, [ - Checkbox({ - label: 'Select all', - value: selectAll, - onclick: () => toggleAll(!selectAll()) - }), - div({ class: 'divider my-1' }), - ...options.map(opt => Checkbox({ - label: opt.label, - value: opt.selected, - onclick: () => { - opt.selected(!opt.selected()); - updateSelectAll(); - } - })), - div({ class: 'mt-2 text-sm opacity-70' }, () => { - const count = options.filter(opt => opt.selected()).length; - return `${count} of ${options.length} selected`; - }) - ]); -}; -mount(MultipleDemo, '#demo-multiple'); -``` - -### With Tooltip - -
-
-

Live Demo

-
-
-
- -```javascript -const TooltipDemo = () => { - const accepted = $(false); - - return Tooltip({ - tip: "You must accept the terms to continue" - }, - Checkbox({ - label: 'I accept the terms', - value: accepted, - onclick: () => accepted(!accepted()) - }) - ); -}; -mount(TooltipDemo, '#demo-tooltip'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const variant1 = $(true); - const variant2 = $(false); - const variant3 = $(true); - - return div({ class: 'flex flex-col gap-3' }, [ - div({ class: 'flex items-center gap-4' }, [ - Checkbox({ - label: 'Primary', - value: variant1, - class: 'checkbox-primary', - onclick: () => variant1(!variant1()) - }), - Checkbox({ - label: 'Secondary', - value: variant2, - class: 'checkbox-secondary', - onclick: () => variant2(!variant2()) - }) - ]), - div({ class: 'flex items-center gap-4' }, [ - Checkbox({ - label: 'Accent', - value: variant3, - class: 'checkbox-accent', - onclick: () => variant3(!variant3()) - }), - Checkbox({ - label: 'Toggle switch', - value: $(false), - toggle: true, - class: 'toggle-primary' - }) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Form Example - -
-
-

Live Demo

-
-
-
- -```javascript -const FormDemo = () => { - const subscribe = $(false); - const weekly = $(false); - const monthly = $(true); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'text-sm font-bold' }, 'Newsletter preferences'), - Checkbox({ - label: 'Subscribe to newsletter', - value: subscribe, - onclick: () => subscribe(!subscribe()) - }), - () => subscribe() ? div({ class: 'ml-6 flex flex-col gap-2' }, [ - Checkbox({ - label: 'Weekly updates', - value: weekly, - onclick: () => weekly(!weekly()) - }), - Checkbox({ - label: 'Monthly digest', - value: monthly, - onclick: () => monthly(!monthly()) - }) - ]) : null, - () => subscribe() && (weekly() || monthly()) - ? div({ class: 'alert alert-success text-sm mt-2' }, 'You will receive updates!') - : subscribe() - ? div({ class: 'alert alert-warning text-sm mt-2' }, 'Select at least one frequency') - : null - ]); -}; -mount(FormDemo, '#demo-form'); -``` diff --git a/docs/components/colorpicker.md b/docs/components/colorpicker.md deleted file mode 100644 index d9ac017..0000000 --- a/docs/components/colorpicker.md +++ /dev/null @@ -1,225 +0,0 @@ -# Colorpicker - -Color picker component with preset color palette, reactive value binding, and customizable appearance. - -## Tag - -`Colorpicker` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `label` | `string` | `-` | Label text for the button | -| `value` | `string \| Signal` | `'#000000'` | Selected color value (hex format) | -| `class` | `string` | `''` | Additional CSS classes (Tailwind + custom styling) | - -## Styling - -Colorpicker is a custom component built with Tailwind CSS. The button supports standard **daisyUI Button classes** for consistent styling: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Size | `btn-xs`, `btn-sm`, `btn-md`, `btn-lg` | Button scale | -| Style | `btn-outline`, `btn-soft`, `btn-ghost` | Visual style variants | - -> For further details, check the [daisyUI Button Documentation](https://daisyui.com/components/button) – The color picker button accepts standard button styling classes. - -## Live Examples - -### Basic Colorpicker - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const color = $('#3b82f6'); - - return Colorpicker({ - label: 'Pick a color', - value: color - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Reactive Preview - -
-
-

Live Demo

-
-
-
- -```javascript -const PreviewDemo = () => { - const color = $('#10b981'); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - Colorpicker({ - label: 'Choose color', - value: color - }), - div({ - class: 'w-full h-20 rounded-lg shadow-inner transition-all duration-200 flex items-center justify-center', - style: () => `background-color: ${color()}` - }, [ - div({ class: 'text-center font-mono text-sm bg-black/20 px-2 py-1 rounded' }, () => color()) - ]) - ]); -}; -mount(PreviewDemo, '#demo-preview'); -``` - -### Color Palette Grid - -
-
-

Live Demo

-
-
-
- -```javascript -const PaletteDemo = () => { - const selectedColor = $('#ef4444'); - const presets = [ - '#ef4444', '#f97316', '#f59e0b', '#eab308', - '#84cc16', '#10b981', '#14b8a6', '#06b6d4', - '#3b82f6', '#6366f1', '#8b5cf6', '#d946ef', - '#ec489a', '#f43f5e', '#6b7280', '#1f2937' - ]; - - return div({ class: 'flex flex-col gap-4' }, [ - Colorpicker({ - label: 'Custom color', - value: selectedColor - }), - div({ class: 'divider text-xs' }, 'Or choose from palette'), - div({ class: 'grid grid-cols-8 gap-2' }, presets.map(color => - button({ - class: `w-8 h-8 rounded-lg shadow-sm transition-transform hover:scale-110`, - style: `background-color: ${color}`, - onclick: () => selectedColor(color) - }) - )), - div({ class: 'mt-2 text-center text-sm font-mono' }, () => selectedColor()) - ]); -}; -mount(PaletteDemo, '#demo-palette'); -``` - -### With Text Color Preview - -
-
-

Live Demo

-
-
-
- -```javascript -const TextDemo = () => { - const bgColor = $('#1e293b'); - const textColor = $('#f8fafc'); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - div({ class: 'flex gap-4' }, [ - Colorpicker({ - label: 'Background', - value: bgColor - }), - Colorpicker({ - label: 'Text', - value: textColor - }) - ]), - div({ - class: 'p-6 rounded-lg text-center font-bold transition-all duration-200', - style: () => `background-color: ${bgColor()}; color: ${textColor()}` - }, [ - 'Preview text with your colors' - ]) - ]); -}; -mount(TextDemo, '#demo-text'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-wrap gap-4 items-center' }, [ - Colorpicker({ - label: 'Primary', - value: $('#3b82f6') - }), - Colorpicker({ - label: 'Success', - value: $('#10b981') - }), - Colorpicker({ - label: 'Warning', - value: $('#f59e0b') - }), - Colorpicker({ - label: 'Error', - value: $('#ef4444') - }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Dynamic Color Swatch - -
-
-

Live Demo

-
-
-
- -```javascript -const DynamicDemo = () => { - const primary = $('#3b82f6'); - const secondary = $('#ef4444'); - const accent = $('#10b981'); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - div({ class: 'flex flex-wrap gap-4' }, [ - Colorpicker({ label: 'Primary', value: primary }), - Colorpicker({ label: 'Secondary', value: secondary }), - Colorpicker({ label: 'Accent', value: accent }) - ]), - div({ class: 'grid grid-cols-3 gap-2 mt-2' }, [ - div({ - class: 'h-12 rounded-lg shadow-sm flex items-center justify-center text-xs font-bold text-white', - style: () => `background-color: ${primary()}` - }, 'Primary'), - div({ - class: 'h-12 rounded-lg shadow-sm flex items-center justify-center text-xs font-bold text-white', - style: () => `background-color: ${secondary()}` - }, 'Secondary'), - div({ - class: 'h-12 rounded-lg shadow-sm flex items-center justify-center text-xs font-bold text-white', - style: () => `background-color: ${accent()}` - }, 'Accent') - ]) - ]); -}; -mount(DynamicDemo, '#demo-dynamic'); -``` \ No newline at end of file diff --git a/docs/components/datepicker.md b/docs/components/datepicker.md deleted file mode 100644 index f5753be..0000000 --- a/docs/components/datepicker.md +++ /dev/null @@ -1,205 +0,0 @@ -# Datepicker - -Date and date range picker component with calendar interface, time selection, and reactive state management. - -## Tag - -`Datepicker` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `label` | `string` | `-` | Label text for the input | -| `value` | `string \| {start: string, end: string} \| Signal` | `-` | Selected date or range | -| `range` | `boolean` | `false` | Enable date range selection mode | -| `hour` | `boolean` | `false` | Enable hour selection | -| `placeholder` | `string` | `'Select date...'` | Placeholder text | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -## Styling - -Datepicker wraps a **daisyUI Input component** internally. All Input styling classes work: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color | `input-primary`, `input-secondary`, `input-accent`, `input-ghost`, `input-info`, `input-success`, `input-warning`, `input-error` | Input color variants | -| Size | `input-xs`, `input-sm`, `input-md`, `input-lg` | Input scale | -| Style | `input-bordered` (default), `input-ghost` | Visual style variants | - -> For further details, check the [daisyUI Input Documentation](https://daisyui.com/components/input) – Full reference for CSS classes. - -## Live Examples - -### Basic Datepicker - -
-
-

Live Demo

-
-
-
- -```js -const BasicDemo = () => { - const date = $(''); - - return Datepicker({ - label: 'Select date', - value: date, - placeholder: 'Choose a date...' - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Date Range Picker - -
-
-

Live Demo

-
-
-
- -```javascript -const RangeDemo = () => { - const range = $({ start: '', end: '' }); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - Datepicker({ - label: 'Date range', - value: range, - range: true, - placeholder: 'Select start and end date...' - }), - () => range().start && range().end ? div({ class: 'alert alert-success' }, [ - `Selected: ${range().start} → ${range().end}` - ]) : null - ]); -}; -mount(RangeDemo, '#demo-range'); -``` - -### With Time Selection - -
-
-

Live Demo

-
-
-
- -```javascript -const TimeDemo = () => { - const datetime = $(''); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - Datepicker({ - label: 'Select date and time', - value: datetime, - hour: true, - placeholder: 'Choose date and time...' - }), - () => datetime() ? div({ class: 'alert alert-info' }, [ - `Selected: ${datetime()}` - ]) : null - ]); -}; -mount(TimeDemo, '#demo-time'); -``` - -### Range with Time - -
-
-

Live Demo

-
-
-
- -```javascript -const RangeTimeDemo = () => { - const range = $({ start: '', end: '', startHour: 9, endHour: 17 }); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - Datepicker({ - label: 'Schedule range', - value: range, - range: true, - hour: true, - placeholder: 'Select date and time range...' - }), - () => range().start && range().end ? div({ class: 'alert alert-primary' }, [ - `From ${range().start} ${range().startHour || 9}:00 to ${range().end} ${range().endHour || 17}:00` - ]) : null - ]); -}; -mount(RangeTimeDemo, '#demo-range-time'); -``` - -### Reactive Display - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const date = $(''); - const today = new Date().toISOString().split('T')[0]; - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - Datepicker({ - label: 'Select date', - value: date, - placeholder: 'Choose a date...' - }), - div({ class: 'stats shadow' }, [ - div({ class: 'stat' }, [ - div({ class: 'stat-title' }, 'Selected date'), - div({ class: 'stat-value text-sm' }, () => date() || 'Not selected'), - div({ class: 'stat-desc' }, () => date() === today ? 'Today' : '') - ]) - ]) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-col gap-4' }, [ - Datepicker({ - label: 'Single date', - value: $('2024-12-25'), - placeholder: 'Select date...' - }), - Datepicker({ - label: 'Date range', - range: true, - value: $({ start: '2024-12-01', end: '2024-12-31' }), - placeholder: 'Select range...' - }), - Datepicker({ - label: 'With time', - hour: true, - value: $('2024-12-25T14:00:00'), - placeholder: 'Select date and time...' - }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/drawer.md b/docs/components/drawer.md deleted file mode 100644 index 0aedabe..0000000 --- a/docs/components/drawer.md +++ /dev/null @@ -1,493 +0,0 @@ -# Drawer - -Drawer component for creating off-canvas side panels with overlay and toggle functionality. - -## Tag - -`Drawer` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `id` | `string` | Required | Unique identifier for the drawer | -| `open` | `boolean \| Signal` | `false` | Drawer open state | -| `side` | `VNode` | Required | Content to display in the drawer panel | -| `content` | `VNode` | Required | Main page content | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -## Styling - -Drawer supports all **daisyUI Drawer classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Position | `drawer-end` | Drawer opens from the right side | -| Width | `w-64`, `w-80`, `w-96` | Custom drawer width (Tailwind) | - -> For further details, check the [daisyUI Drawer Documentation](https://daisyui.com/components/drawer) – Full reference for CSS classes. - -## Live Examples - -### Basic Drawer - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const isOpen = $(false); - - return Drawer({ - id: 'basic-drawer', - open: isOpen, - side: div({ class: 'p-4' }, [ - div({ class: 'text-lg font-bold mb-4' }, 'Menu'), - div({ class: 'flex flex-col gap-2' }, [ - button({ class: 'btn btn-ghost justify-start' }, 'Home'), - button({ class: 'btn btn-ghost justify-start' }, 'About'), - button({ class: 'btn btn-ghost justify-start' }, 'Contact') - ]) - ]), - content: div({ class: 'p-4 text-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, 'Open Drawer') - ]) - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Navigation Drawer - -
-
-

Live Demo

-
-
-
- -```javascript -const NavDrawer = () => { - const isOpen = $(false); - const activePage = $('home'); - - const pages = { - home: 'Welcome to the Home Page!', - about: 'About Us - Learn more about our company', - services: 'Our Services - What we offer', - contact: 'Contact Us - Get in touch' - }; - - return Drawer({ - id: 'nav-drawer', - open: isOpen, - side: div({ class: 'p-4 w-64' }, [ - div({ class: 'text-xl font-bold mb-6' }, 'MyApp'), - div({ class: 'flex flex-col gap-1' }, [ - button({ - class: `btn btn-ghost justify-start ${activePage() === 'home' ? 'btn-active' : ''}`, - onclick: () => { - activePage('home'); - isOpen(false); - } - }, '🏠 Home'), - button({ - class: `btn btn-ghost justify-start ${activePage() === 'about' ? 'btn-active' : ''}`, - onclick: () => { - activePage('about'); - isOpen(false); - } - }, 'ℹ️ About'), - button({ - class: `btn btn-ghost justify-start ${activePage() === 'services' ? 'btn-active' : ''}`, - onclick: () => { - activePage('services'); - isOpen(false); - } - }, '⚙️ Services'), - button({ - class: `btn btn-ghost justify-start ${activePage() === 'contact' ? 'btn-active' : ''}`, - onclick: () => { - activePage('contact'); - isOpen(false); - } - }, '📧 Contact') - ]) - ]), - content: div({ class: 'p-4' }, [ - div({ class: 'flex justify-between items-center mb-4' }, [ - button({ - class: 'btn btn-ghost btn-circle', - onclick: () => isOpen(true) - }, '☰'), - span({ class: 'text-lg font-bold' }, 'MyApp') - ]), - div({ class: 'card bg-base-200 shadow-lg' }, [ - div({ class: 'card-body' }, [ - div({ class: 'text-2xl font-bold mb-2' }, () => activePage().charAt(0).toUpperCase() + activePage().slice(1)), - div({ class: 'text-lg' }, () => pages[activePage()]) - ]) - ]) - ]) - }); -}; -mount(NavDrawer, '#demo-nav'); -``` - -### Settings Drawer - -
-
-

Live Demo

-
-
-
- -```javascript -const SettingsDrawer = () => { - const isOpen = $(false); - const darkMode = $(false); - const notifications = $(true); - const autoSave = $(false); - - return Drawer({ - id: 'settings-drawer', - open: isOpen, - side: div({ class: 'p-4 w-80' }, [ - div({ class: 'flex justify-between items-center mb-6' }, [ - span({ class: 'text-xl font-bold' }, 'Settings'), - button({ - class: 'btn btn-ghost btn-circle btn-sm', - onclick: () => isOpen(false) - }, '✕') - ]), - div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({}, 'Dark Mode'), - Swap({ - value: darkMode, - on: "🌙", - off: "☀️", - onclick: () => darkMode(!darkMode()) - }) - ]), - div({ class: 'flex justify-between items-center' }, [ - span({}, 'Notifications'), - Swap({ - value: notifications, - on: "🔔", - off: "🔕", - onclick: () => notifications(!notifications()) - }) - ]), - div({ class: 'flex justify-between items-center' }, [ - span({}, 'Auto Save'), - Swap({ - value: autoSave, - on: "✅", - off: "⭕", - onclick: () => autoSave(!autoSave()) - }) - ]) - ]), - div({ class: 'divider my-4' }), - div({ class: 'flex gap-2' }, [ - button({ - class: 'btn btn-primary flex-1', - onclick: () => { - isOpen(false); - Toast('Settings saved!', 'alert-success', 2000); - } - }, 'Save'), - button({ - class: 'btn btn-ghost flex-1', - onclick: () => isOpen(false) - }, 'Cancel') - ]) - ]), - content: div({ class: 'p-4' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-lg font-bold' }, 'Dashboard'), - button({ - class: 'btn btn-ghost btn-circle', - onclick: () => isOpen(true) - }, '⚙️') - ]), - div({ class: 'mt-4 grid grid-cols-2 gap-4' }, [ - div({ class: 'stat bg-base-200 rounded-lg p-4' }, [ - div({ class: 'stat-title' }, 'Users'), - div({ class: 'stat-value' }, '1,234') - ]), - div({ class: 'stat bg-base-200 rounded-lg p-4' }, [ - div({ class: 'stat-title' }, 'Revenue'), - div({ class: 'stat-value' }, '$45K') - ]) - ]) - ]) - }); -}; -mount(SettingsDrawer, '#demo-settings'); -``` - -### Cart Drawer - -
-
-

Live Demo

-
-
-
- -```javascript -const CartDrawer = () => { - const isOpen = $(false); - const cart = $([ - { id: 1, name: 'Product 1', price: 29, quantity: 2 }, - { id: 2, name: 'Product 2', price: 49, quantity: 1 } - ]); - - const updateQuantity = (id, delta) => { - cart(cart().map(item => { - if (item.id === id) { - const newQty = Math.max(0, item.quantity + delta); - return newQty === 0 ? null : { ...item, quantity: newQty }; - } - return item; - }).filter(Boolean)); - }; - - const total = () => cart().reduce((sum, item) => sum + (item.price * item.quantity), 0); - - return Drawer({ - id: 'cart-drawer', - open: isOpen, - side: div({ class: 'flex flex-col h-full' }, [ - div({ class: 'p-4 border-b border-base-300' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-xl font-bold' }, `Cart (${cart().length} items)`), - button({ - class: 'btn btn-ghost btn-circle btn-sm', - onclick: () => isOpen(false) - }, span('✕')) - ]) - ]), - div({ class: 'flex-1 overflow-y-auto p-4' }, cart().length === 0 - ? div({ class: 'text-center text-gray-500 mt-8' }, 'Your cart is empty') - : div({ class: 'flex flex-col gap-3' }, cart().map(item => - div({ class: 'flex gap-3 items-center p-2 bg-base-200 rounded-lg' }, [ - div({ class: 'flex-1' }, [ - div({ class: 'font-medium' }, item.name), - div({ class: 'text-sm' }, `$${item.price} each`) - ]), - div({ class: 'flex items-center gap-2' }, [ - button({ - class: 'btn btn-xs btn-circle', - onclick: () => updateQuantity(item.id, -1) - }, span('-')), - span({ class: 'w-8 text-center' }, item.quantity), - button({ - class: 'btn btn-xs btn-circle', - onclick: () => updateQuantity(item.id, 1) - }, span('+')) - ]), - span({ class: 'font-bold w-16 text-right' }, `$${item.price * item.quantity}`) - ]) - )) - ), - div({ class: 'p-4 border-t border-base-300' }, [ - div({ class: 'flex justify-between items-center mb-4' }, [ - span({ class: 'font-bold' }, 'Total'), - span({ class: 'text-xl font-bold' }, () => `$${total()}`) - ]), - button({ - class: 'btn btn-primary w-full', - onclick: () => { - isOpen(false); - Toast('Checkout initiated!', 'alert-success', 2000); - }, - disabled: () => cart().length === 0 - }, span('Checkout')) - ]) - ]), - content: div({ class: 'p-4' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-lg font-bold' }, 'Store'), - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, span({ class: 'flex items-center gap-2' }, [span('🛒'), span(`Cart (${cart().length})`)])) - ]), - div({ class: 'mt-4 grid grid-cols-2 gap-4' }, [ - button({ - class: 'btn btn-outline h-32 flex flex-col', - onclick: () => { - cart([...cart(), { id: Date.now(), name: 'New Product', price: 39, quantity: 1 }]); - Toast('Added to cart!', 'alert-success', 1500); - } - }, span({ class: 'flex flex-col items-center gap-1' }, [span('📦'), span('Add to Cart')])) - ]) - ]) - }); -}; -mount(CartDrawer, '#demo-cart'); -``` - -### Responsive Drawer - -
-
-

Live Demo

-
-
-
- -```javascript -const ResponsiveDrawer = () => { - const isOpen = $(false); - const activePage = $('home'); - - const MenuItems = () => div({ class: 'flex flex-col gap-1 p-4' }, [ - button({ - class: `btn btn-ghost justify-start ${activePage() === 'home' ? 'btn-active' : ''}`, - onclick: () => { - activePage('home'); - if (window.innerWidth < 1024) isOpen(false); - } - }, '🏠 Home'), - button({ - class: `btn btn-ghost justify-start ${activePage() === 'analytics' ? 'btn-active' : ''}`, - onclick: () => { - activePage('analytics'); - if (window.innerWidth < 1024) isOpen(false); - } - }, '📊 Analytics'), - button({ - class: `btn btn-ghost justify-start ${activePage() === 'settings' ? 'btn-active' : ''}`, - onclick: () => { - activePage('settings'); - if (window.innerWidth < 1024) isOpen(false); - } - }, '⚙️ Settings') - ]); - - return Drawer({ - id: 'responsive-drawer', - open: isOpen, - side: div({ class: 'w-64' }, [ - div({ class: 'text-xl font-bold p-4 border-b border-base-300' }, 'Menu'), - MenuItems() - ]), - content: div({ class: 'flex' }, [ - div({ class: 'hidden lg:block w-64 border-r border-base-300' }, [MenuItems()]), - div({ class: 'flex-1 p-4' }, [ - div({ class: 'flex justify-between items-center lg:hidden mb-4' }, [ - button({ - class: 'btn btn-ghost btn-circle', - onclick: () => isOpen(true) - }, '☰'), - span({ class: 'text-lg font-bold' }, 'MyApp') - ]), - div({ class: 'card bg-base-200' }, [ - div({ class: 'card-body' }, [ - div({ class: 'text-2xl font-bold' }, () => activePage().charAt(0).toUpperCase() + activePage().slice(1)), - div({}, 'Content area. On desktop, the menu is always visible on the left.') - ]) - ]) - ]) - ]) - }); -}; -mount(ResponsiveDrawer, '#demo-responsive'); -``` - -### Form Drawer - -
-
-

Live Demo

-
-
-
- -```javascript -const FormDrawer = () => { - const isOpen = $(false); - const name = $(''); - const email = $(''); - const message = $(''); - - const handleSubmit = () => { - if (name() && email() && message()) { - Toast('Message sent!', 'alert-success', 2000); - isOpen(false); - name(''); - email(''); - message(''); - } else { - Toast('Please fill all fields', 'alert-warning', 2000); - } - }; - - return Drawer({ - id: 'form-drawer', - open: isOpen, - side: div({ class: 'p-4 w-96' }, [ - div({ class: 'flex justify-between items-center mb-4' }, [ - span({ class: 'text-xl font-bold' }, 'Contact Us'), - button({ - class: 'btn btn-ghost btn-circle btn-sm', - onclick: () => isOpen(false) - }, '✕') - ]), - div({ class: 'flex flex-col gap-4' }, [ - input({ - label: 'Name', - value: name, - placeholder: 'Your name', - oninput: (e) => name(e.target.value) - }), - input({ - label: 'Email', - type: 'email', - value: email, - placeholder: 'your@email.com', - oninput: (e) => email(e.target.value) - }), - div({ class: 'form-control' }, [ - span({ class: 'label-text mb-1' }, 'Message'), - h('textarea', { - class: 'textarea textarea-bordered h-24', - placeholder: 'Your message', - value: message, - oninput: (e) => message(e.target.value) - }) - ]), - div({ class: 'flex gap-2 mt-2' }, [ - button({ - class: 'btn btn-primary flex-1', - onclick: handleSubmit - }, 'Send'), - button({ - class: 'btn btn-ghost flex-1', - onclick: () => isOpen(false) - }, 'Cancel') - ]) - ]) - ]), - content: div({ class: 'p-4 text-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, 'Contact Us') - ]) - }); -}; -mount(FormDrawer, '#demo-form'); -``` \ No newline at end of file diff --git a/docs/components/dropdown.md b/docs/components/dropdown.md deleted file mode 100644 index 6cdc059..0000000 --- a/docs/components/dropdown.md +++ /dev/null @@ -1,255 +0,0 @@ -# Dropdown - -Dropdown component for creating menus that appear when triggered. Uses DaisyUI's native details/summary pattern. - -## Tag - -`Dropdown` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `label` | `string \| VNode \| Signal` | `-` | Button label or content | -| `icon` | `string \| VNode \| Signal` | `-` | Icon displayed next to label | -| `items` | `Array \| Signal` | Required | Array of menu items | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -### MenuItem Structure - -| Property | Type | Description | -| :--- | :--- | :--- | -| `label` | `string \| VNode` | Menu item text | -| `icon` | `string \| VNode` | Optional icon for the menu item | -| `onclick` | `function` | Click handler | -| `class` | `string` | Additional CSS classes for the menu item | - -## Styling - -Dropdown supports all **daisyUI Dropdown classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Position | `dropdown-end` | Align dropdown to the right | -| Direction | `dropdown-top`, `dropdown-bottom`, `dropdown-left`, `dropdown-right` | Dropdown open direction | -| Hover | `dropdown-hover` | Open on hover instead of click | - -> For further details, check the [daisyUI Dropdown Documentation](https://daisyui.com/components/dropdown) – Full reference for CSS classes. - -### Example - -```javascript -Dropdown({ - label: "Menu", - class: "dropdown-end dropdown-hover", - items: [ - { label: "Profile", onclick: () => console.log("Profile") }, - { label: "Settings", onclick: () => console.log("Settings") } - ] -}); -``` - -## Live Examples - -### Basic Dropdown - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return Dropdown({ - label: 'Options', - items: [ - { label: 'Profile', onclick: () => Toast('Profile clicked', 'alert-info', 2000) }, - { label: 'Settings', onclick: () => Toast('Settings clicked', 'alert-info', 2000) }, - { label: 'Logout', onclick: () => Toast('Logged out', 'alert-warning', 2000), class: 'text-error' } - ] - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - return Dropdown({ - label: 'Menu', - icon: '☰', - items: [ - { icon: '👤', label: 'Profile', onclick: () => Toast('Profile', 'alert-info', 2000) }, - { icon: '⭐', label: 'Favorites', onclick: () => Toast('Favorites', 'alert-info', 2000) }, - { icon: '📁', label: 'Documents', onclick: () => Toast('Documents', 'alert-info', 2000) }, - { icon: '⚙️', label: 'Settings', onclick: () => Toast('Settings', 'alert-info', 2000) } - ] - }); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Action Dropdown - -
-
-

Live Demo

-
-
-
- -```javascript -const ActionsDemo = () => { - const handleAction = (action) => { - Toast(`${action} action`, 'alert-info', 2000); - }; - - return Dropdown({ - label: 'Actions', - class: 'dropdown-end', - items: [ - { icon: '✏️', label: 'Edit', onclick: () => handleAction('Edit') }, - { icon: '📋', label: 'Copy', onclick: () => handleAction('Copy') }, - { icon: '🗑️', label: 'Delete', onclick: () => handleAction('Delete'), class: 'text-error' } - ] - }); -}; -mount(ActionsDemo, '#demo-actions'); -``` - -### User Dropdown - -
-
-

Live Demo

-
-
-
- -```javascript -const UserDropdown = () => { - return Dropdown({ - label: span({ class: 'flex items-center gap-2' }, [ - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-primary text-primary-content rounded-full w-8 h-8 flex items-center justify-center text-sm' }, 'JD') - ]), - 'John Doe' - ]), - class: 'dropdown-end', - items: [ - { label: 'Profile', onclick: () => Toast('Profile', 'alert-info', 2000) }, - { label: 'Settings', onclick: () => Toast('Settings', 'alert-info', 2000) }, - { label: 'Sign Out', onclick: () => Toast('Signed out', 'alert-warning', 2000), class: 'text-error' } - ] - }); -}; -mount(UserDropdown, '#demo-user'); -``` - -### Reactive Items - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDropdown = () => { - const count = $(0); - const items = () => [ - { label: `Count: ${count()}`, onclick: () => {} }, - { label: 'Increment', onclick: () => count(count() + 1) }, - { label: 'Decrement', onclick: () => count(count() - 1) }, - { label: 'Reset', onclick: () => count(0) } - ]; - - return Dropdown({ - label: () => `Counter (${count()})`, - items: items - }); -}; -mount(ReactiveDropdown, '#demo-reactive'); -``` - -### Notification Dropdown - -
-
-

Live Demo

-
-
-
- -```javascript -const NotificationsDropdown = () => { - const notifications = $([ - { id: 1, title: 'New message', time: '5 min ago', read: false }, - { id: 2, title: 'Update available', time: '1 hour ago', read: false }, - { id: 3, title: 'Task completed', time: '2 hours ago', read: true } - ]); - - const unreadCount = () => notifications().filter(n => !n.read).length; - - const markAsRead = (id) => { - notifications(notifications().map(n => - n.id === id ? { ...n, read: true } : n - )); - }; - - return Dropdown({ - label: span({ class: 'relative' }, [ - '🔔', - () => unreadCount() > 0 ? span({ class: 'badge badge-xs badge-error absolute -top-1 -right-2' }, unreadCount()) : null - ]), - class: 'dropdown-end', - items: () => notifications().map(notif => ({ - label: div({ class: 'flex flex-col' }, [ - span({ class: 'font-medium' }, notif.title), - span({ class: 'text-xs opacity-60' }, notif.time) - ]), - class: notif.read ? '' : 'bg-primary/5', - onclick: () => markAsRead(notif.id) - })) - }); -}; - -mount(NotificationsDropdown, '#demo-notifications'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const commonItems = [ - { label: 'Item 1', onclick: () => Toast('Item 1', 'alert-info', 2000) }, - { label: 'Item 2', onclick: () => Toast('Item 2', 'alert-info', 2000) }, - { label: 'Item 3', onclick: () => Toast('Item 3', 'alert-info', 2000) } - ]; - - return div({ class: 'flex flex-wrap gap-4 justify-center' }, [ - Dropdown({ label: 'Default', items: commonItems }), - Dropdown({ label: 'With Icon', icon: '☰', items: commonItems }), - Dropdown({ label: 'End Position', class: 'dropdown-end', items: commonItems }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/fab.md b/docs/components/fab.md deleted file mode 100644 index a07c44a..0000000 --- a/docs/components/fab.md +++ /dev/null @@ -1,378 +0,0 @@ -# Fab - -Floating Action Button (FAB) component for primary actions with expandable menu options. - -## Tag - -`Fab` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `icon` | `string \| VNode \| Signal` | `-` | Main FAB icon | -| `label` | `string \| VNode \| Signal` | `-` | Text label for main button | -| `actions` | `Array \| Signal` | `[]` | Array of action buttons that expand from FAB | -| `position` | `string` | `'bottom-6 right-6'` | CSS position classes (e.g., 'bottom-6 left-6') | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -### Action Structure - -| Property | Type | Description | -| :--- | :--- | :--- | -| `label` | `string \| VNode` | Label text shown next to action button | -| `icon` | `string \| VNode` | Icon for the action button | -| `onclick` | `function` | Click handler | -| `class` | `string` | Additional CSS classes for the action button | -| `text` | `string` | Alternative text when no icon is provided | - -## Styling - -Fab uses **daisyUI Button classes** for styling the main button and action buttons: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color | `btn-primary`, `btn-secondary`, `btn-accent`, `btn-info`, `btn-success`, `btn-warning`, `btn-error` | Visual color variants | -| Size | `btn-xs`, `btn-sm`, `btn-md`, `btn-lg`, `btn-xl` | Button scale | -| Shape | `btn-circle` | Circular button shape (default for FAB) | - -> For further details, check the [daisyUI FAB Documentation](https://daisyui.com/components/fab) – Full reference for CSS classes. - -### Example - -```javascript -Fab({ - icon: "➕", - class: "btn-primary btn-lg", - position: "bottom-6 right-6", - actions: [ - { icon: "📝", label: "New Note", onclick: () => console.log("Create note") } - ] -}); -``` - -## Live Examples - -### Basic FAB - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return div({ class: 'relative h-[300px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - Fab({ - icon: '➕', - actions: [ - { icon: '📝', label: 'New Note', onclick: () => Toast('Create note', 'alert-info', 2000) }, - { icon: '📷', label: 'Take Photo', onclick: () => Toast('Open camera', 'alert-info', 2000) }, - { icon: '📎', label: 'Attach File', onclick: () => Toast('Attach file', 'alert-info', 2000) } - ] - }) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Label - -
-
-

Live Demo

-
-
-
- -```javascript -const LabelDemo = () => { - return div({ class: 'relative h-[300px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - Fab({ - label: 'Create', - icon: '✨', - actions: [ - { icon: '📝', label: 'Document', onclick: () => Toast('New document', 'alert-success', 2000) }, - { icon: '🎨', label: 'Design', onclick: () => Toast('New design', 'alert-success', 2000) }, - { icon: '📊', label: 'Spreadsheet', onclick: () => Toast('New spreadsheet', 'alert-success', 2000) } - ] - }) - ]); -}; -mount(LabelDemo, '#demo-label'); -``` - -### Different Positions - -
-
-

Live Demo

-
-
-
- -```javascript -const PositionsDemo = () => { - const position = $('bottom-6 right-6'); - - return div({ class: 'relative h-[500px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - div({ class: 'absolute top-4 left-4 z-20 bg-base-200 p-2 rounded-lg shadow' }, [ - select({ - items: [ - { value: 'bottom-6 right-6', label: 'Bottom Right' }, - { value: 'bottom-6 left-6', label: 'Bottom Left' }, - { value: 'top-6 right-6', label: 'Top Right' }, - { value: 'top-6 left-6', label: 'Top Left' } - ], - value: position, - onchange: (e) => position(e.target.value) - }) - ]), - div({ class: 'absolute inset-0 flex items-center justify-center text-sm opacity-50 pointer-events-none' }, [ - 'FAB position changes relative to this container' - ]), - Fab({ - position: () => position(), - icon: '🧭', - actions: [ - { icon: '⬅️', label: 'Bottom Left', onclick: () => position('bottom-6 left-6') }, - { icon: '➡️', label: 'Bottom Right', onclick: () => position('bottom-6 right-6') }, - { icon: '⬆️', label: 'Top Right', onclick: () => position('top-6 right-6') }, - { icon: '⬇️', label: 'Top Left', onclick: () => position('top-6 left-6') } - ] - }) - ]); -}; -mount(PositionsDemo, '#demo-positions'); -``` - -### Color Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const ColorsDemo = () => { - const variant = $('primary'); - - const variants = { - primary: { class: 'btn-primary', icon: '🔵' }, - secondary: { class: 'btn-secondary', icon: '🟣' }, - accent: { class: 'btn-accent', icon: '🔴' }, - info: { class: 'btn-info', icon: '🔷' }, - success: { class: 'btn-success', icon: '🟢' }, - warning: { class: 'btn-warning', icon: '🟡' }, - error: { class: 'btn-error', icon: '🔴' } - }; - - return div({ class: 'relative h-[300px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - div({ class: 'absolute top-4 left-4 z-20 bg-base-200 p-2 rounded-lg shadow' }, [ - select({ - items: Object.keys(variants).map(v => ({ value: v, label: v.charAt(0).toUpperCase() + v.slice(1) })), - value: variant, - onchange: (e) => variant(e.target.value) - }) - ]), - Fab({ - class: variants[variant()].class, - icon: variants[variant()].icon, - actions: [ - { icon: '📝', label: 'Action 1', onclick: () => Toast('Action 1', 'alert-info', 2000) }, - { icon: '🎨', label: 'Action 2', onclick: () => Toast('Action 2', 'alert-info', 2000) }, - { icon: '⚙️', label: 'Action 3', onclick: () => Toast('Action 3', 'alert-info', 2000) } - ] - }) - ]); -}; -mount(ColorsDemo, '#demo-colors'); -``` - -### Reactive Actions - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveActions = () => { - const count = $(0); - - const actions = () => [ - { - icon: '🔢', - label: `Count: ${count()}`, - onclick: () => {} - }, - { - icon: '➕', - label: 'Increment', - onclick: () => count(count() + 1) - }, - { - icon: '➖', - label: 'Decrement', - onclick: () => count(count() - 1) - }, - { - icon: '🔄', - label: 'Reset', - onclick: () => count(0) - } - ]; - - return div({ class: 'relative h-[300px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - Fab({ - icon: () => count() > 0 ? `🔢 ${count()}` : '🎛️', - actions: actions - }) - ]); -}; -mount(ReactiveActions, '#demo-reactive'); -``` - -### Document Actions - -
-
-

Live Demo

-
-
-
- -```javascript -const DocumentActions = () => { - const saved = $(false); - - const handleSave = () => { - saved(true); - Toast('Document saved!', 'alert-success', 2000); - setTimeout(() => saved(false), 3000); - }; - - return div({ class: 'relative h-[300px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - div({ class: 'absolute inset-0 flex flex-col items-center justify-center' }, [ - div({ class: 'text-6xl mb-4' }, '📄'), - div({ class: 'text-sm opacity-70' }, 'Untitled Document'), - () => saved() ? div({ class: 'mt-4' }, Alert({ type: 'success', message: '✓ Saved successfully' })) : null - ]), - Fab({ - icon: '✏️', - actions: [ - { icon: '💾', label: 'Save', onclick: handleSave }, - { icon: '📋', label: 'Copy', onclick: () => Toast('Copied!', 'alert-info', 2000) }, - { icon: '✂️', label: 'Cut', onclick: () => Toast('Cut!', 'alert-info', 2000) }, - { icon: '📎', label: 'Share', onclick: () => Toast('Share dialog', 'alert-info', 2000) } - ] - }) - ]); -}; -mount(DocumentActions, '#demo-document'); -``` - -### Messaging FAB - -
-
-

Live Demo

-
-
-
- -```javascript -const MessagingFAB = () => { - const unread = $(3); - - return div({ class: 'relative h-[300px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - div({ class: 'absolute inset-0 flex flex-col items-center justify-center' }, [ - div({ class: 'text-6xl mb-4' }, '💬'), - div({ class: 'text-sm opacity-70' }, 'Messages'), - () => unread() > 0 ? div({ class: 'badge badge-error mt-2' }, `${unread()} unread`) : null - ]), - Fab({ - icon: () => `💬${unread() > 0 ? ` ${unread()}` : ''}`, - class: 'btn-primary', - actions: [ - { - icon: '👤', - label: 'New Message', - onclick: () => Toast('Start new conversation', 'alert-info', 2000) - }, - { - icon: '👥', - label: 'Group Chat', - onclick: () => Toast('Create group', 'alert-info', 2000) - }, - { - icon: '📞', - label: 'Voice Call', - onclick: () => Toast('Start call', 'alert-info', 2000) - }, - { - icon: '📹', - label: 'Video Call', - onclick: () => Toast('Start video call', 'alert-info', 2000) - }, - { - icon: '🔔', - label: () => `Mark as read (${unread()})`, - onclick: () => { - unread(0); - Toast('All messages read', 'alert-success', 2000); - } - } - ] - }) - ]); -}; -mount(MessagingFAB, '#demo-messaging'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const actions = [ - { icon: '⭐', label: 'Favorite', onclick: () => Toast('Favorited', 'alert-info', 2000) }, - { icon: '🔔', label: 'Remind', onclick: () => Toast('Reminder set', 'alert-info', 2000) }, - { icon: '📅', label: 'Schedule', onclick: () => Toast('Scheduled', 'alert-info', 2000) } - ]; - - return div({ class: 'relative h-[400px] w-full bg-base-100 rounded-lg overflow-hidden' }, [ - div({ class: 'grid grid-cols-2 gap-4 p-4 h-full' }, [ - div({ class: 'relative border rounded-lg bg-base-200' }, [ - span({ class: 'absolute top-2 left-2 text-xs opacity-50' }, 'Primary'), - Fab({ icon: '🔵', class: 'btn-primary', actions, position: 'bottom-6 left-6' }) - ]), - div({ class: 'relative border rounded-lg bg-base-200' }, [ - span({ class: 'absolute top-2 left-2 text-xs opacity-50' }, 'Secondary'), - Fab({ icon: '🟣', class: 'btn-secondary', actions, position: 'bottom-6 right-6' }) - ]), - div({ class: 'relative border rounded-lg bg-base-200' }, [ - span({ class: 'absolute top-2 left-2 text-xs opacity-50' }, 'Accent'), - Fab({ icon: '🔴', class: 'btn-accent', actions, position: 'top-6 left-6' }) - ]), - div({ class: 'relative border rounded-lg bg-base-200' }, [ - span({ class: 'absolute top-2 left-2 text-xs opacity-50' }, 'Success'), - Fab({ icon: '🟢', class: 'btn-success', actions, position: 'top-6 right-6' }) - ]) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/fieldset.md b/docs/components/fieldset.md deleted file mode 100644 index 5b948b5..0000000 --- a/docs/components/fieldset.md +++ /dev/null @@ -1,324 +0,0 @@ -# Fieldset - -Fieldset component for grouping form fields with optional legend and consistent styling. - -## Tag - -`Fieldset` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `legend` | `string \| VNode \| Signal` | `-` | Fieldset legend/title | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `children` | `VNode \| Array` | Required | Form fields or content inside the fieldset | - -## Styling - -Fieldset supports all **daisyUI Fieldset classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `fieldset` | Base fieldset styling | -| Color | `fieldset-primary`, `fieldset-secondary`, `fieldset-accent` | Border color variants | -| Size | `fieldset-xs`, `fieldset-sm`, `fieldset-md`, `fieldset-lg` | Fieldset scale | - -> For further details, check the [daisyUI Fieldset Documentation](https://daisyui.com/components/fieldset) – Full reference for CSS classes. - -### Example - -```javascript -Fieldset({ - legend: "Personal Information", - class: "fieldset-primary w-full max-w-md" -}, [ - input({ label: "Name", placeholder: "Enter your name" }), - input({ label: "Email", type: "email" }) -]); -``` - -## Live Examples - -### Basic Fieldset - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return fieldset({ - legend: 'User Information', - class: 'w-full max-w-md mx-auto' - }, [ - div({ class: 'space-y-4' }, [ - input({ label: 'Full Name', placeholder: 'Enter your name' }), - input({ label: 'Email', type: 'email', placeholder: 'user@example.com' }), - input({ label: 'Phone', type: 'tel', placeholder: '+1 234 567 890' }) - ]) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Reactive Legend - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const name = $(''); - const email = $(''); - const isValid = () => name().length > 0 && email().includes('@'); - - return fieldset({ - legend: () => isValid() ? '✓ Valid Form' : '✗ Incomplete Form', - class: 'w-full max-w-md mx-auto' - }, [ - div({ class: 'space-y-4' }, [ - input({ - label: 'Full Name', - value: name, - oninput: (e) => name(e.target.value), - placeholder: 'Enter your name' - }), - input({ - label: 'Email', - type: 'email', - value: email, - oninput: (e) => email(e.target.value), - placeholder: 'user@example.com' - }), - () => isValid() - ? Alert({ type: 'success', message: 'Form is ready to submit' }) - : Alert({ type: 'warning', message: 'Please fill all required fields' }) - ]) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Address Form - -
-
-

Live Demo

-
-
-
- -```javascript -const AddressDemo = () => { - const address = $(''); - const city = $(''); - const zip = $(''); - const country = $('us'); - - return fieldset({ - legend: span({ class: 'flex items-center gap-2' }, ['📍', 'Shipping Address']), - class: 'w-full max-w-md mx-auto' - }, [ - div({ class: 'space-y-4' }, [ - input({ label: 'Street Address', value: address, placeholder: '123 Main St', oninput: (e) => address(e.target.value) }), - div({ class: 'grid grid-cols-2 gap-4' }, [ - input({ label: 'City', value: city, placeholder: 'City', oninput: (e) => city(e.target.value) }), - input({ label: 'ZIP Code', value: zip, placeholder: 'ZIP', oninput: (e) => zip(e.target.value) }) - ]), - select({ - label: 'Country', - value: country, - items: [ - { value: 'us', label: 'United States' }, - { value: 'ca', label: 'Canada' }, - { value: 'mx', label: 'Mexico' } - ], - onchange: (e) => country(e.target.value) - }) - ]) - ]); -}; -mount(AddressDemo, '#demo-address'); -``` - -### Payment Method - -
-
-

Live Demo

-
-
-
- -```javascript -const PaymentDemo = () => { - const method = $('credit'); - const cardNumber = $(''); - const expiry = $(''); - const cvv = $(''); - - return fieldset({ - legend: span({ class: 'flex items-center gap-2' }, ['💳', 'Payment Details']), - class: 'w-full max-w-md mx-auto' - }, [ - div({ class: 'space-y-4' }, [ - div({ class: 'flex gap-4' }, [ - Radio({ label: 'Credit Card', value: method, inputValue: 'credit', onclick: () => method('credit') }), - Radio({ label: 'PayPal', value: method, inputValue: 'paypal', onclick: () => method('paypal') }), - Radio({ label: 'Bank Transfer', value: method, inputValue: 'bank', onclick: () => method('bank') }) - ]), - () => method() === 'credit' ? div({ class: 'space-y-4' }, [ - input({ label: 'Card Number', value: cardNumber, placeholder: '1234 5678 9012 3456', oninput: (e) => cardNumber(e.target.value) }), - div({ class: 'grid grid-cols-2 gap-4' }, [ - input({ label: 'Expiry Date', value: expiry, placeholder: 'MM/YY', oninput: (e) => expiry(e.target.value) }), - input({ label: 'CVV', type: 'password', value: cvv, placeholder: '123', oninput: (e) => cvv(e.target.value) }) - ]) - ]) : null, - () => method() === 'paypal' ? Alert({ type: 'info', message: 'You will be redirected to PayPal after confirming.' }) : null, - () => method() === 'bank' ? Alert({ type: 'warning', message: 'Bank transfer details will be sent via email.' }) : null - ]) - ]); -}; -mount(PaymentDemo, '#demo-payment'); -``` - -### Preferences Panel - -
-
-

Live Demo

-
-
-
- -```javascript -const PreferencesDemo = () => { - const theme = $('light'); - const language = $('en'); - const notifications = $(true); - - return fieldset({ - legend: span({ class: 'flex items-center gap-2' }, ['⚙️', 'Preferences']), - class: 'w-full max-w-md mx-auto' - }, [ - div({ class: 'space-y-4' }, [ - div({ class: 'form-control' }, [ - span({ class: 'label-text mb-2' }, 'Theme'), - div({ class: 'flex gap-4' }, [ - Radio({ label: 'Light', value: theme, inputValue: 'light', onclick: () => theme('light') }), - Radio({ label: 'Dark', value: theme, inputValue: 'dark', onclick: () => theme('dark') }), - Radio({ label: 'System', value: theme, inputValue: 'system', onclick: () => theme('system') }) - ]) - ]), - select({ - label: 'Language', - value: language, - items: [ - { value: 'en', label: 'English' }, - { value: 'es', label: 'Español' }, - { value: 'fr', label: 'Français' } - ], - onchange: (e) => language(e.target.value) - }), - Checkbox({ - label: 'Enable notifications', - value: notifications, - onclick: () => notifications(!notifications()) - }) - ]) - ]); -}; -mount(PreferencesDemo, '#demo-preferences'); -``` - -### Registration Form - -
-
-

Live Demo

-
-
-
- -```javascript -const RegistrationDemo = () => { - const username = $(''); - const email = $(''); - const password = $(''); - const confirmPassword = $(''); - const accepted = $(false); - - const passwordsMatch = () => password() === confirmPassword(); - const isFormValid = () => username() && email().includes('@') && password().length >= 6 && passwordsMatch() && accepted(); - - const handleSubmit = () => { - if (isFormValid()) { - Toast('Registration successful!', 'alert-success', 2000); - } - }; - - return fieldset({ - legend: span({ class: 'flex items-center gap-2' }, ['📝', 'Create Account']), - class: 'w-full max-w-md mx-auto' - }, [ - div({ class: 'space-y-4' }, [ - input({ label: 'Username', value: username, placeholder: 'Choose a username', oninput: (e) => username(e.target.value) }), - input({ label: 'Email', type: 'email', value: email, placeholder: 'your@email.com', oninput: (e) => email(e.target.value) }), - input({ label: 'Password', type: 'password', value: password, placeholder: 'Min. 6 characters', oninput: (e) => password(e.target.value) }), - input({ - label: 'Confirm Password', - type: 'password', - value: confirmPassword, - error: () => confirmPassword() && !passwordsMatch() ? 'Passwords do not match' : '', - oninput: (e) => confirmPassword(e.target.value) - }), - Checkbox({ - label: 'I accept the Terms and Conditions', - value: accepted, - onclick: () => accepted(!accepted()) - }), - () => !isFormValid() && (username() || email() || password()) ? Alert({ type: 'warning', message: 'Please complete all fields correctly' }) : null, - button({ - class: 'btn btn-primary w-full', - onclick: handleSubmit, - disabled: () => !isFormValid() - }, 'Register') - ]) - ]); -}; -mount(RegistrationDemo, '#demo-registration'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const commonContent = div({ class: 'space-y-4' }, [ - input({ label: 'Field 1', placeholder: 'Enter value' }), - input({ label: 'Field 2', placeholder: 'Enter value' }), - button({ class: 'btn btn-primary' }, 'Submit') - ]); - - return div({ class: 'flex flex-col gap-4' }, [ - fieldset({ legend: 'Default Fieldset', class: 'w-full' }, [commonContent]), - fieldset({ legend: 'With Shadow', class: 'w-full shadow-lg' }, [commonContent]), - fieldset({ legend: 'With Background', class: 'w-full bg-base-100' }, [commonContent]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/indicator.md b/docs/components/indicator.md deleted file mode 100644 index aaa974f..0000000 --- a/docs/components/indicator.md +++ /dev/null @@ -1,284 +0,0 @@ -# Indicator - -Indicator component for adding badges, status markers, or notifications to elements. Perfect for showing counts, online status, or alerts. - -## Tag - -`Indicator` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `value` | `string \| VNode \| Signal` | `-` | Content to display as indicator | -| `class` | `string` | `''` | Additional CSS classes for the badge | -| `children` | `VNode` | `-` | Element to attach the indicator to | - -## Styling - -Indicator uses **daisyUI Indicator and Badge classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Position | `indicator-start`, `indicator-end`, `indicator-top`, `indicator-bottom` | Indicator position (default: top-end) | -| Badge Color | `badge-primary`, `badge-secondary`, `badge-accent`, `badge-info`, `badge-success`, `badge-warning`, `badge-error` | Badge visual variants | -| Badge Size | `badge-xs`, `badge-sm`, `badge-md`, `badge-lg` | Badge scale | - -> For further details, check the [daisyUI Indicator Documentation](https://daisyui.com/components/indicator) – Full reference for CSS classes. - -### Example - -```javascript -Indicator({ value: "3", class: "badge-primary" }, - button({ class: "btn" }, "Notifications") -); -``` - -## Live Examples - -### Basic Indicator - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center' }, [ - Indicator({ value: '3', class: 'badge-primary' }, - div({ class: 'w-16 h-16 bg-base-300 rounded-lg flex items-center justify-center' }, '📦') - ), - Indicator({ value: '99+', class: 'badge-secondary' }, - div({ class: 'w-16 h-16 bg-base-300 rounded-lg flex items-center justify-center' }, '🔔') - ), - Indicator({ value: 'New', class: 'badge-accent' }, - div({ class: 'w-16 h-16 bg-base-300 rounded-lg flex items-center justify-center' }, '✨') - ) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Online Status Indicator - -
-
-

Live Demo

-
-
-
- -```javascript -const StatusDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center' }, [ - Indicator({ value: '●', class: 'badge-success badge-xs' }, - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-neutral text-neutral-content rounded-full w-12 h-12 flex items-center justify-center' }, 'JD') - ]) - ), - Indicator({ value: '●', class: 'badge-warning badge-xs' }, - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-neutral text-neutral-content rounded-full w-12 h-12 flex items-center justify-center' }, 'JS') - ]) - ), - Indicator({ value: '●', class: 'badge-error badge-xs' }, - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-neutral text-neutral-content rounded-full w-12 h-12 flex items-center justify-center' }, 'BC') - ]) - ) - ]); -}; -mount(StatusDemo, '#demo-status'); -``` - -### Reactive Counter - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const count = $(0); - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - Indicator({ - value: () => count() > 0 ? count() : null, - class: 'badge-primary' - }, - button({ - class: 'btn btn-lg btn-primary', - onclick: () => count(count() + 1) - }, 'Notifications') - ), - div({ class: 'flex gap-2' }, [ - button({ - class: 'btn btn-sm', - onclick: () => count(Math.max(0, count() - 1)) - }, 'Decrease'), - button({ - class: 'btn btn-sm btn-ghost', - onclick: () => count(0) - }, 'Clear') - ]) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Shopping Cart - -
-
-

Live Demo

-
-
-
- -```javascript -const CartDemo = () => { - const cart = $([ - { id: 1, name: 'Product 1', price: 29 }, - { id: 2, name: 'Product 2', price: 49 } - ]); - - const addItem = () => { - const newId = Math.max(...cart().map(i => i.id), 0) + 1; - cart([...cart(), { id: newId, name: `Product ${newId}`, price: Math.floor(Math.random() * 100) + 10 }]); - Toast('Item added to cart', 'alert-success', 1500); - }; - - const removeItem = (id) => { - cart(cart().filter(item => item.id !== id)); - Toast('Item removed', 'alert-info', 1500); - }; - - const total = () => cart().reduce((sum, item) => sum + item.price, 0); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex justify-between items-center' }, [ - Indicator({ - value: () => cart().length, - class: 'badge-primary' - }, - button({ class: 'btn', onclick: addItem }, '🛒 Add to Cart') - ), - span({ class: 'text-lg font-bold' }, () => `Total: $${total()}`) - ]), - () => cart().length === 0 - ? div({ class: 'alert alert-soft text-center' }, 'Cart is empty') - : div({ class: 'flex flex-col gap-2' }, cart().map(item => - div({ class: 'flex justify-between items-center p-2 bg-base-200 rounded-lg' }, [ - span({}, item.name), - div({ class: 'flex gap-2 items-center' }, [ - span({ class: 'text-sm font-bold' }, `$${item.price}`), - button({ - class: 'btn btn-xs btn-ghost btn-circle', - onclick: () => removeItem(item.id) - }, '✕') - ]) - ]) - )) - ]); -}; - -mount(CartDemo, '#demo-cart'); -``` - -### Email Inbox - -
-
-

Live Demo

-
-
-
- -```javascript -const InboxDemo = () => { - const unread = $(3); - const messages = $([ - { id: 1, from: 'john@example.com', subject: 'Meeting tomorrow', read: false }, - { id: 2, from: 'jane@example.com', subject: 'Project update', read: false }, - { id: 3, from: 'bob@example.com', subject: 'Question about design', read: false }, - { id: 4, from: 'alice@example.com', subject: 'Weekly report', read: true } - ]); - - const markAsRead = (id) => { - const msg = messages().find(m => m.id === id); - if (!msg.read) { - msg.read = true; - messages([...messages()]); - unread(unread() - 1); - } - }; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex justify-between items-center' }, [ - Indicator({ - value: () => unread(), - class: 'badge-primary' - }, - span({ class: 'text-lg font-bold' }, 'Inbox') - ), - button({ - class: 'btn btn-sm btn-ghost', - onclick: () => { - messages().forEach(m => m.read = true); - messages([...messages()]); - unread(0); - } - }, 'Mark all read') - ]), - div({ class: 'flex flex-col gap-2' }, () => messages().map(msg => - div({ - class: `p-3 rounded-lg cursor-pointer transition-all ${msg.read ? 'bg-base-200 opacity-60' : 'bg-primary/10 border-l-4 border-primary'}`, - onclick: () => markAsRead(msg.id) - }, [ - div({ class: 'font-medium' }, msg.from), - div({ class: 'text-sm' }, msg.subject), - !msg.read && span({ class: 'badge badge-xs badge-primary mt-1' }, 'New') - ]) - )) - ]); -}; - -mount(InboxDemo, '#demo-inbox'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center' }, [ - Indicator({ value: '3', class: 'badge-primary badge-sm' }, - div({ class: 'w-12 h-12 bg-base-300 rounded-lg flex items-center justify-center' }, '📧') - ), - Indicator({ value: '99+', class: 'badge-secondary badge-md' }, - div({ class: 'w-12 h-12 bg-base-300 rounded-lg flex items-center justify-center' }, '🔔') - ), - Indicator({ value: '●', class: 'badge-success badge-xs' }, - div({ class: 'avatar' }, [ - div({ class: 'w-10 h-10 rounded-full bg-primary' }) - ]) - ), - Indicator({ value: '!', class: 'badge-error badge-sm' }, - div({ class: 'w-12 h-12 bg-base-300 rounded-lg flex items-center justify-center' }, '⚠️') - ) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/input.md b/docs/components/input.md deleted file mode 100644 index e128c8c..0000000 --- a/docs/components/input.md +++ /dev/null @@ -1,254 +0,0 @@ -# Input - -Form input component with icons, password toggle, and validation. - -## Tag - -`Input` - -## Props - -| Prop | Type | Default | Description | -| :------------ | :--------------------------- | :------- | :----------------------------------------------- | -| `type` | `string` | `'text'` | Input type (text, password, email, number, date) | -| `value` | `string \| Signal` | `''` | Input value | -| `placeholder` | `string` | `' '` | Placeholder text | -| `disabled` | `boolean \| Signal` | `false` | Disabled state | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `oninput` | `function` | `-` | Input event handler | - -## Styling - -Input supports all **daisyUI Input classes**: - -| Category | Keywords | Description | -| :------- | :---------------------------------------------------------------------------------------------------------------- | :------------------- | -| Style | `input-bordered`, `input-ghost` | Input style variants | -| Color | `input-primary`, `input-secondary`, `input-accent`, `input-info`, `input-success`, `input-warning`, `input-error` | Input color variants | -| Size | `input-xs`, `input-sm`, `input-md`, `input-lg` | Input size variants | - -## Live Examples - -### Basic Input - -
-
-

Live Demo

-
-
-
- -```js -const { Input, mount } = window; - -const BasicDemo = () => { - const name = $(""); - return input({ - placeholder: "Enter your name", - value: name, - oninput: (e) => name(e.target.value) - }); -}; -mount(BasicDemo, "#demo-basic"); -``` - -### With Icon - -Wrap the input inside a `Div` with class `input` and add an icon as a sibling. - -
-
-

Live Demo

-
-
-
- -```js -const { InputLabel, Div, Icon, mount } = window; - -const IconDemo = () => { - const email = $(""); - return div({ class: "input input-bordered flex items-center gap-2" }, [ - Icon("✉️"), - h("input", { - class: "grow", - type: "email", - value: email, - placeholder: "Email", - oninput: (e) => email(e.target.value) - }) - ]); -}; -mount(IconDemo, "#demo-icon"); -``` - -### Password with Toggle - -
-
-

Live Demo

-
-
-
- -```js -const { Input, Div, Icon, Swap, mount } = window; - -const PasswordDemo = () => { - const password = $(""); - const visible = $(false); - return div({ class: "input input-bordered flex items-center gap-2" }, [ - Icon("icon-[lucide--lock]"), - h("input", { - type: () => (visible() ? "text" : "password"), - value: password, - placeholder: "Password", - class: "grow", - oninput: (e) => password(e.target.value) - }), - Swap({ - value: visible, - class: "swap-rotate", - on: Icon("icon-[lucide--eye]"), - off: Icon("icon-[lucide--eye-off]") - }) - ]); -}; -mount(PasswordDemo, "#demo-password"); -``` - -### With Floating Label - -Use a wrapper `Div` with class `floating-label`. - -
-
-

Live Demo

-
-
-
- -```js -const { Input, Div, Span, mount } = window; - -const LabelDemo = () => { - const email = $(""); - return div({ class: "floating-label" }, [ - span("Email"), - input({ - type: "email", - value: email, - placeholder: " ", - oninput: (e) => email(e.target.value) - }) - ]); -}; -mount(LabelDemo, "#demo-label"); -``` - -### With Tooltip - -Wrap the input with `Tooltip` component. - -
-
-

Live Demo

-
-
-
- -```js -const { Input, Tooltip, mount } = window; - -const TooltipDemo = () => { - const username = $(""); - return Tooltip({ tip: "Must be at least 3 characters" }, [ - input({ - placeholder: "Username", - value: username, - oninput: (e) => username(e.target.value) - }) - ]); -}; -mount(TooltipDemo, "#demo-tooltip"); -``` - -### Error State - -Add `input-error` class and show a validation message. - -
-
-

Live Demo

-
-
-
- -```js -const { Input, Div, mount } = window; - -const ErrorDemo = () => { - const email = $(""); - const isValid = () => email().includes("@"); - return div({ class: "flex flex-col gap-2" }, [ - h("input", { - type: "email", - class: () => `input input-bordered ${email() && !isValid() ? "input-error" : ""}`, - value: email, - placeholder: "mail@example.com", - oninput: (e) => email(e.target.value) - }), - () => email() && !isValid() ? div({ class: "text-error text-sm" }, "Enter a valid email") : null - ]); -}; -mount(ErrorDemo, "#demo-error"); -``` - -### Disabled State - -
-
-

Live Demo

-
-
-
- -```js -const { Input, mount } = window; - -const DisabledDemo = () => { - return input({ value: "john.doe", disabled: true }); -}; -mount(DisabledDemo, "#demo-disabled"); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```js -const { Input, Div, mount } = window; - -const VariantsDemo = () => { - const text = $(""); - return div({ class: "flex flex-col gap-4" }, [ - input({ placeholder: "Default", value: text, oninput: (e) => text(e.target.value) }), - input({ class: "input-primary", placeholder: "Primary", value: $("") }), - input({ class: "input-secondary", placeholder: "Secondary", value: $("") }), - input({ class: "input-accent", placeholder: "Accent", value: $("") }), - input({ class: "input-ghost", placeholder: "Ghost", value: $("") }), - input({ class: "input-info", placeholder: "Info", value: $("") }), - input({ class: "input-success", placeholder: "Success", value: $("") }), - input({ class: "input-warning", placeholder: "Warning", value: $("") }), - input({ class: "input-error", placeholder: "Error", value: $("") }), - input({ type: "number", placeholder: "Number", value: $(0), oninput: (e) => e.target.value }), - input({ type: "date", value: $("2024-01-01") }) - ]); -}; -mount(VariantsDemo, "#demo-variants"); -``` diff --git a/docs/components/list.md b/docs/components/list.md deleted file mode 100644 index 235e9a4..0000000 --- a/docs/components/list.md +++ /dev/null @@ -1,425 +0,0 @@ -# List - -List component with custom item rendering, headers, and reactive data binding. - -## Tag - -`List` - -## Props - -| Prop | Type | Default | Description | -| :------- | :-------------------------- | :------------------- | :------------------------------------------ | -| `items` | `Array \| Signal` | `[]` | Data array to display | -| `header` | `string \| VNode \| Signal` | `-` | Optional header content | -| `render` | `function(item, index)` | Required | Custom render function for each item | -| `keyFn` | `function(item, index)` | `(item, idx) => idx` | Unique key function for items | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -## Styling - -List supports all **daisyUI List classes**: - -| Category | Keywords | Description | -| :--------- | :------------ | :------------------------- | -| Base | `list` | Base list styling | -| Variant | `list-row` | Row styling for list items | -| Background | `bg-base-100` | Background color | - -> For further details, check the [daisyUI List Documentation](https://daisyui.com/components/list) – Full reference for CSS classes. - -## Live Examples - -### Basic List - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const items = ["Apple", "Banana", "Orange", "Grape", "Mango"]; - - return List({ - items: items, - render: (item) => - div({ class: "p-3 hover:bg-base-200 transition-colors" }, [ - span({ class: "font-medium" }, item), - ]), - }); -}; -mount(BasicDemo, "#demo-basic"); -``` - -### With Header - -
-
-

Live Demo

-
-
-
- -```javascript -const HeaderDemo = () => { - const users = [ - { name: "John Doe", email: "john@example.com", status: "active" }, - { name: "Jane Smith", email: "jane@example.com", status: "inactive" }, - { name: "Bob Johnson", email: "bob@example.com", status: "active" }, - ]; - - return List({ - items: users, - header: div( - { class: "p-3 bg-primary/10 font-bold border-b border-base-300" }, - "Active Users", - ), - render: (user) => - div({ class: "p-3 border-b border-base-300 hover:bg-base-200" }, [ - div({ class: "font-medium" }, user.name), - div({ class: "text-sm opacity-70" }, user.email), - span( - { - class: `badge badge-sm ${user.status === "active" ? "badge-success" : "badge-ghost"} mt-1`, - }, - user.status, - ), - ]), - }); -}; -mount(HeaderDemo, "#demo-header"); -``` - -### With Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - const settings = [ - { - icon: "🔊", - label: "Sound", - description: "Adjust volume and notifications", - }, - { icon: "🌙", label: "Display", description: "Brightness and dark mode" }, - { icon: "🔒", label: "Privacy", description: "Security settings" }, - { icon: "🌐", label: "Network", description: "WiFi and connections" }, - ]; - - return List({ - items: settings, - render: (item) => - div( - { - class: - "flex gap-3 p-3 hover:bg-base-200 transition-colors cursor-pointer", - }, - [ - div({ class: "text-2xl" }, item.icon), - div({ class: "flex-1" }, [ - div({ class: "font-medium" }, item.label), - div({ class: "text-sm opacity-60" }, item.description), - ]), - span({ class: "opacity-40" }, "→"), - ], - ), - }); -}; -mount(IconsDemo, "#demo-icons"); -``` - -### With Badges - -
-
-

Live Demo

-
-
-
- -```javascript -const BadgesDemo = () => { - const notifications = [ - { - id: 1, - message: "New comment on your post", - time: "5 min ago", - unread: true, - }, - { - id: 2, - message: "Your order has been shipped", - time: "1 hour ago", - unread: true, - }, - { - id: 3, - message: "Welcome to the platform!", - time: "2 days ago", - unread: false, - }, - { - id: 4, - message: "Weekly digest available", - time: "3 days ago", - unread: false, - }, - ]; - - return List({ - items: notifications, - render: (item) => - div( - { - class: `flex justify-between items-center p-3 border-b border-base-300 hover:bg-base-200 ${item.unread ? "bg-primary/5" : ""}`, - }, - [ - div({ class: "flex-1" }, [ - div({ class: "font-medium" }, item.message), - div({ class: "text-xs opacity-50" }, item.time), - ]), - item.unread - ? span({ class: "badge badge-primary badge-sm" }, "New") - : null, - ], - ), - }); -}; -mount(BadgesDemo, "#demo-badges"); -``` - -### Interactive List - -
-
-

Live Demo

-
-
-
- -```javascript -const InteractiveDemo = () => { - const selected = $(null); - const items = [ - { id: 1, name: "Project Alpha", status: "In Progress" }, - { id: 2, name: "Project Beta", status: "Planning" }, - { id: 3, name: "Project Gamma", status: "Completed" }, - { id: 4, name: "Project Delta", status: "Review" }, - ]; - - const statusColors = { - "In Progress": "badge-warning", - Planning: "badge-info", - Completed: "badge-success", - Review: "badge-accent", - }; - - return div({ class: "flex flex-col gap-4" }, [ - List({ - items: items, - render: (item) => - div( - { - class: `p-3 cursor-pointer transition-all hover:bg-base-200 ${selected() === item.id ? "bg-primary/10 border-l-4 border-primary" : "border-l-4 border-transparent"}`, - onclick: () => selected(item.id), - }, - [ - div({ class: "flex justify-between items-center" }, [ - div({ class: "font-medium" }, item.name), - span( - { class: `badge ${statusColors[item.status]}` }, - item.status, - ), - ]), - ], - ), - }), - () => - selected() - ? div( - { class: "alert alert-info" }, - `Selected: ${items.find((i) => i.id === selected()).name}`, - ) - : div({ class: "alert alert-soft" }, "Select a project to see details"), - ]); -}; -mount(InteractiveDemo, "#demo-interactive"); -``` - -### Reactive List (Todo App) - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const todos = $([ - { id: 1, text: 'Complete documentation', done: false }, - { id: 2, text: 'Review pull requests', done: false }, - { id: 3, text: 'Deploy to production', done: false } - ]); - - const newTodo = $(''); - - const addTodo = () => { - if (newTodo().trim()) { - const newId = Math.max(...todos().map(t => t.id), 0) + 1; - todos([...todos(), { id: newId, text: newTodo(), done: false }]); - newTodo(''); - } - }; - - const toggleTodo = (id) => { - todos(todos().map(t => t.id === id ? { ...t, done: !t.done } : t)); - }; - - const deleteTodo = (id) => { - todos(todos().filter(t => t.id !== id)); - }; - - const pendingCount = () => todos().filter(t => !t.done).length; - watch(()=> console.log(pendingCount())); - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex gap-2' }, [ - input({ - placeholder: 'Add new task...', - value: newTodo, - oninput: (e) => newTodo(e.target.value), - onkeypress: (e) => e.key === 'Enter' && addTodo() - }), - button({ class: 'btn btn-primary', onclick: addTodo }, 'Add') - ]), - List({ - items: todos, - render: (item) => { - // Esta función busca siempre el estado actual del item dentro del signal - const it = () => todos().find(t => t.id === item.id) || item; - - return div({ - class: () => `flex items-center gap-3 p-2 border-b border-base-300 ${it().done ? 'opacity-60' : ''}` - }, [ - Checkbox({ - value: () => it().done, - onclick: () => toggleTodo(item.id) - }), - span({ - class: () => `flex-1 ${it().done ? 'line-through' : ''}`, - onclick: () => toggleTodo(item.id) - }, () => it().text), - button({ - class: 'btn btn-ghost btn-xs btn-circle', - onclick: () => deleteTodo(item.id) - }, '✕') - ]); - } - }), - div({ class: 'text-sm opacity-70 mt-2' }, () => `${pendingCount()} tasks remaining`) - ]); -}; - -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Avatar List - -
-
-

Live Demo

-
-
-
- -```javascript -const AvatarDemo = () => { - const contacts = [ - { name: "Alice Johnson", role: "Developer", avatar: "A", online: true }, - { name: "Bob Smith", role: "Designer", avatar: "B", online: false }, - { name: "Charlie Brown", role: "Manager", avatar: "C", online: true }, - { name: "Diana Prince", role: "QA Engineer", avatar: "D", online: false }, - ]; - - return List({ - items: contacts, - render: (contact) => - div({ class: "flex gap-3 p-3 hover:bg-base-200 transition-colors" }, [ - div( - { - class: `avatar ${contact.online ? "online" : "offline"}`, - style: "width: 48px", - }, - [ - div( - { - class: - "rounded-full bg-primary text-primary-content flex items-center justify-center w-12 h-12 font-bold", - }, - contact.avatar, - ), - ], - ), - div({ class: "flex-1" }, [ - div({ class: "font-medium" }, contact.name), - div({ class: "text-sm opacity-60" }, contact.role), - ]), - div( - { - class: `badge badge-sm ${contact.online ? "badge-success" : "badge-ghost"}`, - }, - contact.online ? "Online" : "Offline", - ), - ]), - }); -}; -mount(AvatarDemo, "#demo-avatar"); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const items = ["Item 1", "Item 2", "Item 3"]; - - return div({ class: "flex flex-col gap-6" }, [ - div({ class: "text-sm font-bold" }, "Default List"), - List({ - items: items, - render: (item) => div({ class: "p-2" }, item), - }), - - div({ class: "text-sm font-bold mt-2" }, "With Shadow"), - List({ - items: items, - render: (item) => div({ class: "p-2" }, item), - class: "shadow-lg", - }), - - div({ class: "text-sm font-bold mt-2" }, "Rounded Corners"), - List({ - items: items, - render: (item) => div({ class: "p-2" }, item), - class: "rounded-box overflow-hidden", - }), - ]); -}; -mount(VariantsDemo, "#demo-variants"); -``` diff --git a/docs/components/menu.md b/docs/components/menu.md deleted file mode 100644 index cafa369..0000000 --- a/docs/components/menu.md +++ /dev/null @@ -1,426 +0,0 @@ -# Menu - -Menu component for creating navigation menus, sidebars, and dropdowns with support for nested items, icons, and active states. - -## Tag - -`Menu` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `items` | `Array` | `[]` | Menu items configuration | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -### MenuItem Structure - -| Property | Type | Description | -| :--- | :--- | :--- | -| `label` | `string \| VNode` | Menu item text or content | -| `icon` | `string \| VNode` | Optional icon to display | -| `active` | `boolean \| Signal` | Active state highlighting | -| `onclick` | `function` | Click handler | -| `children` | `Array` | Nested submenu items | -| `open` | `boolean` | Whether submenu is open (for nested items) | - -## Styling - -Menu supports all **daisyUI Menu classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Direction | `menu-vertical` (default), `menu-horizontal` | Menu orientation | -| Size | `menu-xs`, `menu-sm`, `menu-md`, `menu-lg` | Menu scale | -| Style | `menu-compact` | Reduced padding | -| Background | `bg-base-100`, `bg-base-200` | Background colors | - -> For further details, check the [daisyUI Menu Documentation](https://daisyui.com/components/menu) – Full reference for CSS classes. - -## Live Examples - -### Basic Menu - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const activeItem = $('home'); - - return Menu({ - items: [ - { - label: 'Home', - active: () => activeItem() === 'home', - onclick: () => activeItem('home') - }, - { - label: 'About', - active: () => activeItem() === 'about', - onclick: () => activeItem('about') - }, - { - label: 'Contact', - active: () => activeItem() === 'contact', - onclick: () => activeItem('contact') - } - ] - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - const activeItem = $('dashboard'); - - return Menu({ - items: [ - { - icon: '🏠', - label: 'Dashboard', - active: () => activeItem() === 'dashboard', - onclick: () => activeItem('dashboard') - }, - { - icon: '📊', - label: 'Analytics', - active: () => activeItem() === 'analytics', - onclick: () => activeItem('analytics') - }, - { - icon: '⚙️', - label: 'Settings', - active: () => activeItem() === 'settings', - onclick: () => activeItem('settings') - }, - { - icon: '👤', - label: 'Profile', - active: () => activeItem() === 'profile', - onclick: () => activeItem('profile') - } - ] - }); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Nested Menu - -
-
-

Live Demo

-
-
-
- -```javascript -const NestedDemo = () => { - const activeItem = $('products'); - - return Menu({ - items: [ - { - label: 'Dashboard', - onclick: () => activeItem('dashboard'), - active: () => activeItem() === 'dashboard' - }, - { - label: 'Products', - icon: '📦', - open: true, - children: [ - { - label: 'All Products', - onclick: () => activeItem('all-products'), - active: () => activeItem() === 'all-products' - }, - { - label: 'Add New', - onclick: () => activeItem('add-product'), - active: () => activeItem() === 'add-product' - }, - { - label: 'Categories', - children: [ - { - label: 'Electronics', - onclick: () => activeItem('electronics'), - active: () => activeItem() === 'electronics' - }, - { - label: 'Clothing', - onclick: () => activeItem('clothing'), - active: () => activeItem() === 'clothing' - } - ] - } - ] - }, - { - label: 'Orders', - icon: '📋', - onclick: () => activeItem('orders'), - active: () => activeItem() === 'orders' - }, - { - label: 'Settings', - icon: '⚙️', - onclick: () => activeItem('settings'), - active: () => activeItem() === 'settings' - } - ] - }); -}; -mount(NestedDemo, '#demo-nested'); -``` - -### Horizontal Menu - -
-
-

Live Demo

-
-
-
- -```javascript -const HorizontalDemo = () => { - const activeItem = $('home'); - - return Menu({ - class: 'menu-horizontal rounded-box', - items: [ - { - label: 'Home', - active: () => activeItem() === 'home', - onclick: () => activeItem('home') - }, - { - label: 'Products', - children: [ - { label: 'Electronics', onclick: () => activeItem('electronics') }, - { label: 'Clothing', onclick: () => activeItem('clothing') }, - { label: 'Books', onclick: () => activeItem('books') } - ] - }, - { - label: 'About', - onclick: () => activeItem('about'), - active: () => activeItem() === 'about' - }, - { - label: 'Contact', - onclick: () => activeItem('contact'), - active: () => activeItem() === 'contact' - } - ] - }); -}; -mount(HorizontalDemo, '#demo-horizontal'); -``` - -### Sidebar Menu - -
-
-

Live Demo

-
-
-
- -```javascript -const SidebarDemo = () => { - const activeItem = $('dashboard'); - - return div({ class: 'flex' }, [ - div({ class: 'w-64' }, [ - Menu({ - class: 'rounded-box w-full', - items: [ - { - icon: '📊', - label: 'Dashboard', - active: () => activeItem() === 'dashboard', - onclick: () => activeItem('dashboard') - }, - { - icon: '👥', - label: 'Users', - children: [ - { - label: 'All Users', - onclick: () => activeItem('all-users'), - active: () => activeItem() === 'all-users' - }, - { - label: 'Add User', - onclick: () => activeItem('add-user'), - active: () => activeItem() === 'add-user' - } - ] - }, - { - icon: '📁', - label: 'Files', - onclick: () => activeItem('files'), - active: () => activeItem() === 'files' - }, - { - icon: '⚙️', - label: 'Settings', - onclick: () => activeItem('settings'), - active: () => activeItem() === 'settings' - } - ] - }) - ]), - div({ class: 'flex-1 p-4' }, [ - div({ class: 'alert alert-info' }, () => `Current page: ${activeItem()}`) - ]) - ]); -}; -mount(SidebarDemo, '#demo-sidebar'); -``` - -### Account Menu - -
-
-

Live Demo

-
-
-
- -```javascript -const AccountDemo = () => { - const notifications = $(3); - - return Menu({ - class: 'rounded-box w-56', - items: [ - { - icon: '👤', - label: 'My Profile', - onclick: () => Toast('Profile clicked', 'alert-info', 2000) - }, - { - icon: '📧', - label: 'Messages', - onclick: () => Toast('Messages opened', 'alert-info', 2000) - }, - { - icon: '🔔', - label: 'Notifications', - badge: () => notifications(), - onclick: () => { - notifications(0); - Toast('Notifications cleared', 'alert-success', 2000); - } - }, - { - icon: '⚙️', - label: 'Settings', - onclick: () => Toast('Settings opened', 'alert-info', 2000) - }, - { - icon: '🚪', - label: 'Logout', - onclick: () => Toast('Logged out', 'alert-warning', 2000) - } - ] - }); -}; -mount(AccountDemo, '#demo-account'); -``` - -### Collapsible Sidebar - -
-
-

Live Demo

-
-
-
- -```javascript -const CollapsibleDemo = () => { - const collapsed = $(false); - const activeItem = $('dashboard'); - - return div({ class: 'flex gap-4' }, [ - div({ class: `transition-all duration-300 ${collapsed() ? 'w-16' : 'w-64'}` }, [ - button({ - class: 'btn btn-ghost btn-sm mb-2 w-full', - onclick: () => collapsed(!collapsed()) - }, collapsed() ? '→' : '←'), - Menu({ - class: `rounded-box ${collapsed() ? 'menu-compact' : ''}`, - items: [ - { icon: '📊', label: collapsed() ? '' : 'Dashboard', active: () => activeItem() === 'dashboard', onclick: () => activeItem('dashboard') }, - { icon: '👥', label: collapsed() ? '' : 'Users', active: () => activeItem() === 'users', onclick: () => activeItem('users') }, - { icon: '📁', label: collapsed() ? '' : 'Files', active: () => activeItem() === 'files', onclick: () => activeItem('files') }, - { icon: '⚙️', label: collapsed() ? '' : 'Settings', active: () => activeItem() === 'settings', onclick: () => activeItem('settings') } - ] - }) - ]), - div({ class: 'flex-1' }, [ - div({ class: 'alert alert-info' }, () => `Selected: ${activeItem()}`) - ]) - ]); -}; -mount(CollapsibleDemo, '#demo-collapsible'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const items = [ - { label: 'Item 1' }, - { label: 'Item 2' }, - { label: 'Item 3', children: [ - { label: 'Subitem 1' }, - { label: 'Subitem 2' } - ]} - ]; - - return div({ class: 'flex flex-wrap gap-8' }, [ - div({ class: 'w-48' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Default'), - Menu({ items }) - ]), - div({ class: 'w-48' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Compact'), - Menu({ items, class: 'menu-compact' }) - ]), - div({ class: 'w-48' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'With Shadow'), - Menu({ items, class: 'shadow-lg' }) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/modal.md b/docs/components/modal.md deleted file mode 100644 index 198c27e..0000000 --- a/docs/components/modal.md +++ /dev/null @@ -1,395 +0,0 @@ -# Modal - -Modal dialog component for displaying content in an overlay with customizable actions and backdrop. Uses the native HTML `` element for better accessibility and performance. - -## Tag - -`Modal` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `open` | `boolean \| Signal` | `false` | Modal visibility state | -| `title` | `string \| VNode \| Signal` | `-` | Modal title text | -| `buttons` | `Array \| VNode` | `-` | Action buttons to display (auto-closes on click) | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `children` | `string \| VNode` | `-` | Modal content | - -## Styling - -Modal supports all **daisyUI Modal classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Size | `modal-sm`, `modal-md`, `modal-lg`, `modal-xl` | Modal scale | -| Position | `modal-top`, `modal-middle`, `modal-bottom` | Modal vertical alignment | - -> For further details, check the [daisyUI Modal Documentation](https://daisyui.com/components/modal) – Full reference for CSS classes. - -## Live Examples - -### Basic Modal - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const isOpen = $(false); - - return div({ class: 'flex justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => { - isOpen(true); - } - }, 'Open Modal'), - Modal({ - open: isOpen, - title: 'Basic Modal', - buttons: button({ - class: 'btn-primary', - onclick: () => { - isOpen(false); - } - }, 'Custom Action') - }, [ - div({ class: 'py-4' }, 'This is a basic modal dialog. Press ESC or click Close.') - ]) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - - - - - - - - - -### Modal with Actions - -
-
-

Live Demo

-
-
-
- -```javascript -const ActionsDemo = () => { - const isOpen = $(false); - const confirmed = $(false); - - const handleConfirm = () => { - confirmed(true); - isOpen(false); - Toast('Action confirmed!', 'alert-success', 2000); - }; - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, 'Confirm Action'), - () => confirmed() ? Alert({ - type: 'success', - message: 'You confirmed the action!' - }) : null, - Modal({ - open: isOpen, - title: 'Confirm Action', - buttons: [ - button({ - class: 'btn btn-ghost', - onclick: () => isOpen(false) - }, 'Cancel'), - button({ - class: 'btn btn-primary', - onclick: handleConfirm - }, 'Confirm') - ] - }, [ - div({ class: 'py-4' }, 'Are you sure you want to perform this action? This cannot be undone.') - ]) - ]); -}; -mount(ActionsDemo, '#demo-actions'); -``` - -### Form Modal - -
-
-

Live Demo

-
-
-
- -```javascript -const FormModal = () => { - const isOpen = $(false); - const name = $(''); - const email = $(''); - const submitted = $(false); - - const handleSubmit = () => { - if (name() && email()) { - submitted(true); - isOpen(false); - Toast(`Welcome ${name()}!`, 'alert-success', 2000); - setTimeout(() => submitted(false), 3000); - } - }; - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, 'Sign Up'), - () => submitted() ? Alert({ - type: 'success', - message: 'Account created successfully!' - }) : null, - Modal({ - open: isOpen, - title: 'Create Account', - buttons: [ - button({ - class: 'btn btn-ghost', - onclick: () => isOpen(false) - }, 'Cancel'), - button({ - class: 'btn btn-primary', - onclick: handleSubmit - }, 'Sign Up') - ] - }, [ - div({ class: 'flex flex-col gap-4 py-2' }, [ - input({ - label: 'Full Name', - value: name, - placeholder: 'Enter your name', - oninput: (e) => name(e.target.value) - }), - input({ - label: 'Email', - type: 'email', - value: email, - placeholder: 'Enter your email', - oninput: (e) => email(e.target.value) - }) - ]) - ]) - ]); -}; -mount(FormModal, '#demo-form'); -``` - -### Confirmation Modal - -
-
-

Live Demo

-
-
-
- -```javascript -const ConfirmDemo = () => { - const isOpen = $(false); - const items = $([ - { id: 1, name: 'Document A' }, - { id: 2, name: 'Document B' }, - { id: 3, name: 'Document C' } - ]); - const pendingDelete = $(null); - - const confirmDelete = (item) => { - pendingDelete(item); - isOpen(true); - }; - - const handleDelete = () => { - items(items().filter(i => i.id !== pendingDelete().id)); - isOpen(false); - Toast(`Deleted: ${pendingDelete().name}`, 'alert-info', 2000); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex flex-col gap-2' }, items().map(item => - div({ class: 'flex justify-between items-center p-3 bg-base-200 rounded-lg' }, [ - span({}, item.name), - button({ - class: 'btn btn-xs btn-error', - onclick: () => confirmDelete(item) - }, 'Delete') - ]) - )), - Modal({ - open: isOpen, - title: 'Delete Confirmation', - buttons: [ - button({ - class: 'btn btn-ghost', - onclick: () => isOpen(false) - }, 'Cancel'), - button({ - class: 'btn btn-error', - onclick: handleDelete - }, 'Delete') - ] - }, [ - div({ class: 'py-4' }, () => `Are you sure you want to delete "${pendingDelete()?.name}"? This action cannot be undone.`) - ]) - ]); -}; -mount(ConfirmDemo, '#demo-confirm'); -``` - -### Large Content Modal - -
-
-

Live Demo

-
-
-
- -```javascript -const LargeDemo = () => { - const isOpen = $(false); - - return div({ class: 'flex justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, 'Open Large Modal'), - Modal({ - open: isOpen, - title: 'Terms and Conditions', - buttons: button({ - class: 'btn btn-primary', - onclick: () => isOpen(false) - }, 'I Agree') - }, [ - div({ class: 'py-4 max-h-96 overflow-y-auto' }, [ - div({ class: 'space-y-4' }, [ - div({ class: 'text-sm' }, [ - div({ class: 'font-bold mb-2' }, '1. Introduction'), - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.' - ]), - div({ class: 'text-sm' }, [ - div({ class: 'font-bold mb-2' }, '2. User Obligations'), - 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident.' - ]), - div({ class: 'text-sm' }, [ - div({ class: 'font-bold mb-2' }, '3. Privacy Policy'), - 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.' - ]), - div({ class: 'text-sm' }, [ - div({ class: 'font-bold mb-2' }, '4. Termination'), - 'At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores.' - ]) - ]) - ]) - ]) - ]); -}; -mount(LargeDemo, '#demo-large'); -``` - -### Multiple Modals - -
-
-

Live Demo

-
-
-
- -```javascript -const MultipleDemo = () => { - const modal1 = $(false); - const modal2 = $(false); - const modal3 = $(false); - - return div({ class: 'flex flex-wrap gap-4 justify-center' }, [ - button({ class: 'btn', onclick: () => modal1(true) }, 'Info Modal'), - button({ class: 'btn', onclick: () => modal2(true) }, 'Success Modal'), - button({ class: 'btn', onclick: () => modal3(true) }, 'Warning Modal'), - - Modal({ - open: modal1, - title: 'Information', - buttons: button({ onclick: () => modal1(false) }, 'OK') - }, 'This is an informational message.'), - - Modal({ - open: modal2, - title: 'Success!', - buttons: button({ onclick: () => modal2(false) }, 'Great!') - }, 'Your operation was completed successfully.'), - - Modal({ - open: modal3, - title: 'Warning', - buttons: button({ onclick: () => modal3(false) }, 'Understood') - }, 'Please review your input before proceeding.') - ]); -}; -mount(MultipleDemo, '#demo-multiple'); -``` - -### Custom Styled Modal - -
-
-

Live Demo

-
-
-
- -```javascript -const CustomDemo = () => { - const isOpen = $(false); - - return div({ class: 'flex justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => isOpen(true) - }, 'Open Custom Modal'), - Modal({ - open: isOpen, - class: 'bg-gradient-to-r from-primary to-secondary text-primary-content' - }, [ - div({ class: 'text-center py-8' }, [ - div({ class: 'text-6xl mb-4' }, '🎉'), - div({ class: 'text-2xl font-bold mb-2' }, 'Congratulations!'), - div({ class: 'mb-6' }, 'You\'ve successfully completed the tutorial.'), - button({ - class: 'btn btn-ghost bg-white/20 hover:bg-white/30', - onclick: () => isOpen(false) - }, 'Get Started') - ]) - ]) - ]); -}; -mount(CustomDemo, '#demo-custom'); -``` \ No newline at end of file diff --git a/docs/components/navbar.md b/docs/components/navbar.md deleted file mode 100644 index 4611266..0000000 --- a/docs/components/navbar.md +++ /dev/null @@ -1,276 +0,0 @@ -# Navbar - -Navigation bar component for creating responsive headers with logo, navigation links, and actions. - -## Tag - -`Navbar` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `children` | `VNode \| Array` | `-` | Navbar content (should contain left, center, right sections) | - -## Styling - -Navbar supports all **daisyUI Navbar classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `navbar` | Base navbar styling | -| Sections | `navbar-start`, `navbar-center`, `navbar-end` | Content alignment sections | -| Background | `bg-base-100`, `bg-base-200`, `bg-primary`, etc. | Background colors | -| Shadow | `shadow`, `shadow-lg`, `shadow-md` | Box shadow variants | - -> For further details, check the [daisyUI Navbar Documentation](https://daisyui.com/components/navbar) – Full reference for CSS classes. - -## Live Examples - -### Basic Navbar - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return Navbar({ class: 'rounded-box' }, [ - div({ class: 'navbar-start' }, [ - span({ class: 'text-xl font-bold' }, 'Logo') - ]), - div({ class: 'navbar-center hidden lg:flex' }, [ - span({ class: 'text-sm' }, 'Navigation Items') - ]), - div({ class: 'navbar-end' }, [ - button({ class: 'btn btn-ghost btn-sm' }, 'Login') - ]) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Navigation Links - -
-
-

Live Demo

- -
-
- -```javascript -const LinksDemo = () => { - const active = $('home'); - - return Navbar({ class: 'rounded-box' }, [ - div({ class: 'navbar-start' }, [ - span({ class: 'text-xl font-bold' }, 'MyApp') - ]), - div({ class: 'navbar-center hidden lg:flex' }, [ - div({ class: 'menu menu-horizontal px-1' }, [ - button({ - class: `btn btn-ghost btn-sm ${active() === 'home' ? 'btn-active' : ''}`, - onclick: () => active('home') - }, 'Home'), - button({ - class: `btn btn-ghost btn-sm ${active() === 'about' ? 'btn-active' : ''}`, - onclick: () => active('about') - }, 'About'), - button({ - class: `btn btn-ghost btn-sm ${active() === 'contact' ? 'btn-active' : ''}`, - onclick: () => active('contact') - }, 'Contact') - ]) - ]), - div({ class: 'navbar-end' }, [ - button({ class: 'btn btn-primary btn-sm' }, 'Sign Up') - ]) - ]); -}; -mount(LinksDemo, '#demo-links'); -``` - -### With Search - -
-
-

Live Demo

- -
-
- -```javascript -const SearchDemo = () => { - const searchQuery = $(''); - - return Navbar({ class: 'rounded-box' }, [ - div({ class: 'navbar-start' }, [ - span({ class: 'text-xl font-bold' }, 'MyApp') - ]), - div({ class: 'navbar-center' }, [ - div({ class: 'form-control' }, [ - input({ - placeholder: 'Search...', - value: searchQuery, - class: 'input input-bordered w-48 md:w-auto', - oninput: (e) => searchQuery(e.target.value) - }) - ]) - ]), - div({ class: 'navbar-end' }, [ - button({ class: 'btn btn-ghost btn-circle' }, '🔔'), - button({ class: 'btn btn-ghost btn-circle' }, '👤') - ]) - ]); -}; -mount(SearchDemo, '#demo-search'); -``` - -### With Avatar and Dropdown - -
-
-

Live Demo

-
-
-
- -```javascript -const AvatarDemo = () => { - return Navbar({ class: 'rounded-box' }, [ - div({ class: 'navbar-start' }, [ - span({ class: 'text-xl font-bold' }, 'MyApp') - ]), - div({ class: 'navbar-center hidden lg:flex' }, [ - div({ class: 'menu menu-horizontal px-1' }, [ - span({ class: 'text-sm' }, 'Dashboard'), - span({ class: 'text-sm' }, 'Projects'), - span({ class: 'text-sm' }, 'Tasks') - ]) - ]), - div({ class: 'navbar-end' }, [ - div({ class: 'dropdown dropdown-end' }, [ - div({ tabindex: 0, role: 'button', class: 'btn btn-ghost btn-circle avatar' }, [ - div({ class: 'w-8 rounded-full bg-primary text-primary-content flex items-center justify-center' }, 'JD') - ]), - div({ tabindex: 0, class: 'dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow' }, [ - span({ class: 'menu-item' }, 'Profile'), - span({ class: 'menu-item' }, 'Settings'), - span({ class: 'menu-item' }, 'Logout') - ]) - ]) - ]) - ]); -}; -mount(AvatarDemo, '#demo-avatar'); -``` - -### Responsive Navbar - -
-
-

Live Demo

-
-
-
- -```javascript -const ResponsiveDemo = () => { - const isOpen = $(false); - - return div({ class: 'flex flex-col' }, [ - Navbar({ class: 'rounded-box' }, [ - div({ class: 'navbar-start' }, [ - button({ - class: 'btn btn-ghost btn-circle lg:hidden', - onclick: () => isOpen(!isOpen()) - }, '☰') - ]), - div({ class: 'navbar-center' }, [ - span({ class: 'text-xl font-bold' }, 'MyApp') - ]), - div({ class: 'navbar-end' }, [ - button({ class: 'btn btn-ghost btn-circle' }, '🔔') - ]) - ]), - () => isOpen() ? div({ class: 'flex flex-col gap-2 p-4 bg-base-200 rounded-box mt-2' }, [ - button({ class: 'btn btn-ghost justify-start' }, 'Home'), - button({ class: 'btn btn-ghost justify-start' }, 'About'), - button({ class: 'btn btn-ghost justify-start' }, 'Services'), - button({ class: 'btn btn-ghost justify-start' }, 'Contact') - ]) : null - ]); -}; -mount(ResponsiveDemo, '#demo-responsive'); -``` - -### With Brand and Actions - -
-
-

Live Demo

-
-
-
- -```javascript -const BrandDemo = () => { - return Navbar({ class: 'rounded-box bg-primary text-primary-content' }, [ - div({ class: 'navbar-start' }, [ - span({ class: 'text-xl font-bold' }, 'Brand') - ]), - div({ class: 'navbar-center hidden lg:flex' }, [ - div({ class: 'menu menu-horizontal px-1' }, [ - span({ class: 'text-sm' }, 'Features'), - span({ class: 'text-sm' }, 'Pricing'), - span({ class: 'text-sm' }, 'About') - ]) - ]), - div({ class: 'navbar-end' }, [ - button({ class: 'btn btn-ghost btn-sm' }, 'Login'), - button({ class: 'btn btn-outline btn-sm ml-2' }, 'Sign Up') - ]) - ]); -}; -mount(BrandDemo, '#demo-brand'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'text-sm font-bold' }, 'Default Navbar'), - Navbar({ class: 'rounded-box' }, [ - div({ class: 'navbar-start' }, [span({}, 'Start')]), - div({ class: 'navbar-center' }, [span({}, 'Center')]), - div({ class: 'navbar-end' }, [span({}, 'End')]) - ]), - - div({ class: 'text-sm font-bold mt-2' }, 'With Shadow'), - Navbar({ class: 'rounded-box shadow-lg' }, [ - div({ class: 'navbar-start' }, [span({}, 'Logo')]), - div({ class: 'navbar-end' }, [button({ class: 'btn btn-sm' }, 'Button')]) - ]), - - div({ class: 'text-sm font-bold mt-2' }, 'With Background'), - Navbar({ class: 'rounded-box bg-base-300' }, [ - div({ class: 'navbar-start' }, [span({ class: 'font-bold' }, 'Colored')]), - div({ class: 'navbar-end' }, [span({ class: 'text-sm' }, 'Info')]) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/radio.md b/docs/components/radio.md deleted file mode 100644 index e09da28..0000000 --- a/docs/components/radio.md +++ /dev/null @@ -1,409 +0,0 @@ -# Radio - -Radio button component with label, tooltip support, and reactive group selection. All radios in the same group share a common `name` attribute for proper HTML semantics. - -## Tag - -`Radio` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `label` | `string` | `-` | Label text for the radio button | -| `value` | `string \| Signal` | `-` | Selected value signal for the group | -| `inputValue` | `string` | `-` | Value of this radio button | -| `name` | `string` | `-` | Group name (all radios in group should share this) | -| `tooltip` | `string` | `-` | Tooltip text on hover | -| `disabled` | `boolean \| Signal` | `false` | Disabled state | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `onclick` | `function` | `-` | Click event handler | - -## Styling - -Radio supports all **daisyUI Radio classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color | `radio-primary`, `radio-secondary`, `radio-accent`, `radio-info`, `radio-success`, `radio-warning`, `radio-error` | Radio color variants | -| Size | `radio-xs`, `radio-sm`, `radio-md`, `radio-lg` | Radio scale | - -> For further details, check the [daisyUI Radio Documentation](https://daisyui.com/components/radio) – Full reference for CSS classes. - -## Live Examples - -### Basic Radio Group - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const selected = $('option1'); - - return div({ class: 'flex flex-col gap-3' }, [ - Radio({ - label: 'Option 1', - name: 'basic-group', - value: selected, - inputValue: 'option1', - onclick: () => selected('option1') - }), - Radio({ - label: 'Option 2', - name: 'basic-group', - value: selected, - inputValue: 'option2', - onclick: () => selected('option2') - }), - Radio({ - label: 'Option 3', - name: 'basic-group', - value: selected, - inputValue: 'option3', - onclick: () => selected('option3') - }), - div({ class: 'mt-2 text-sm opacity-70' }, () => `Selected: ${selected()}`) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Tooltip - -
-
-

Live Demo

-
-
-
- -```javascript -const TooltipDemo = () => { - const selected = $('light'); - - return div({ class: 'flex flex-col gap-3' }, [ - Radio({ - label: 'Light mode', - name: 'theme-group', - value: selected, - inputValue: 'light', - tooltip: 'Light theme with white background', - onclick: () => selected('light') - }), - Radio({ - label: 'Dark mode', - name: 'theme-group', - value: selected, - inputValue: 'dark', - tooltip: 'Dark theme with black background', - onclick: () => selected('dark') - }) - ]); -}; -mount(TooltipDemo, '#demo-tooltip'); -``` - -### Disabled State - -
-
-

Live Demo

-
-
-
- -```javascript -const DisabledDemo = () => { - const selected = $('enabled'); - - return div({ class: 'flex flex-col gap-3' }, [ - Radio({ - label: 'Enabled option', - name: 'disabled-group', - value: selected, - inputValue: 'enabled', - onclick: () => selected('enabled') - }), - Radio({ - label: 'Disabled option (cannot select)', - name: 'disabled-group', - value: selected, - inputValue: 'disabled', - disabled: true, - onclick: () => selected('disabled') - }) - ]); -}; -mount(DisabledDemo, '#demo-disabled'); -``` - -### Reactive Preview - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const size = $('medium'); - const color = $('blue'); - - const sizes = [ - { value: 'small', label: 'Small' }, - { value: 'medium', label: 'Medium' }, - { value: 'large', label: 'Large' } - ]; - - const colors = [ - { value: 'blue', label: 'Blue' }, - { value: 'green', label: 'Green' }, - { value: 'red', label: 'Red' } - ]; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'text-sm font-bold' }, 'Select size'), - div({ class: 'flex gap-4' }, sizes.map(s => - Radio({ - label: s.label, - name: 'size-group', - value: size, - inputValue: s.value, - onclick: () => size(s.value) - }) - )), - div({ class: 'text-sm font-bold mt-2' }, 'Select color'), - div({ class: 'flex gap-4' }, colors.map(c => - Radio({ - label: c.label, - name: 'color-group', - value: color, - inputValue: c.value, - onclick: () => color(c.value) - }) - )), - div({ - class: 'mt-4 p-4 rounded-lg text-center transition-all', - style: () => { - const sizeMap = { small: 'text-sm', medium: 'text-base', large: 'text-lg' }; - const colorMap = { blue: '#3b82f6', green: '#10b981', red: '#ef4444' }; - return `background-color: ${colorMap[color()]}; color: white; ${sizeMap[size()]}`; - } - }, () => `${size()} ${color()} preview`) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Payment Method Selection - -
-
-

Live Demo

-
-
-
- -```javascript -const PaymentDemo = () => { - const method = $('credit'); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'text-sm font-bold' }, 'Payment method'), - div({ class: 'flex flex-col gap-3' }, [ - Radio({ - label: '💳 Credit Card', - name: 'payment-group', - value: method, - inputValue: 'credit', - onclick: () => method('credit') - }), - Radio({ - label: '🏦 Bank Transfer', - name: 'payment-group', - value: method, - inputValue: 'bank', - onclick: () => method('bank') - }), - Radio({ - label: '📱 Digital Wallet', - name: 'payment-group', - value: method, - inputValue: 'wallet', - onclick: () => method('wallet') - }) - ]), - div({ class: 'alert alert-info mt-2' }, () => { - const messages = { - credit: 'You selected Credit Card. Enter your card details.', - bank: 'You selected Bank Transfer. Use the provided account number.', - wallet: 'You selected Digital Wallet. Scan the QR code to pay.' - }; - return messages[method()]; - }) - ]); -}; -mount(PaymentDemo, '#demo-payment'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const primary = $('primary1'); - const secondary = $('secondary1'); - const accent = $('accent1'); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'card bg-base-200 p-4' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Primary variant'), - div({ class: 'flex gap-4' }, [ - Radio({ - label: 'Option A', - name: 'primary-group', - value: primary, - inputValue: 'primary1', - class: 'radio-primary', - onclick: () => primary('primary1') - }), - Radio({ - label: 'Option B', - name: 'primary-group', - value: primary, - inputValue: 'primary2', - class: 'radio-primary', - onclick: () => primary('primary2') - }) - ]) - ]), - div({ class: 'card bg-base-200 p-4' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Secondary variant'), - div({ class: 'flex gap-4' }, [ - Radio({ - label: 'Option A', - name: 'secondary-group', - value: secondary, - inputValue: 'secondary1', - class: 'radio-secondary', - onclick: () => secondary('secondary1') - }), - Radio({ - label: 'Option B', - name: 'secondary-group', - value: secondary, - inputValue: 'secondary2', - class: 'radio-secondary', - onclick: () => secondary('secondary2') - }) - ]) - ]), - div({ class: 'card bg-base-200 p-4' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Accent variant'), - div({ class: 'flex gap-4' }, [ - Radio({ - label: 'Option A', - name: 'accent-group', - value: accent, - inputValue: 'accent1', - class: 'radio-accent', - onclick: () => accent('accent1') - }), - Radio({ - label: 'Option B', - name: 'accent-group', - value: accent, - inputValue: 'accent2', - class: 'radio-accent', - onclick: () => accent('accent2') - }) - ]) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Dynamic Options - -
-
-

Live Demo

-
-
-
- -```javascript -const DynamicDemo = () => { - const category = $('cars'); - const selected = $(''); - - const options = { - cars: [ - { value: 'sedan', label: 'Sedan' }, - { value: 'suv', label: 'SUV' }, - { value: 'sports', label: 'Sports' } - ], - colors: [ - { value: 'red', label: 'Red' }, - { value: 'blue', label: 'Blue' }, - { value: 'black', label: 'Black' } - ] - }; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex gap-4' }, [ - Radio({ - label: 'Cars', - name: 'category-group', - value: category, - inputValue: 'cars', - onclick: () => { - category('cars'); - selected(''); - } - }), - Radio({ - label: 'Colors', - name: 'category-group', - value: category, - inputValue: 'colors', - onclick: () => { - category('colors'); - selected(''); - } - }) - ]), - div({ class: 'divider my-1' }), - div({ class: 'text-sm font-bold' }, () => `Select ${category()}`), - div({ class: 'flex flex-col gap-2' }, () => - options[category()].map(opt => - Radio({ - label: opt.label, - name: 'dynamic-option-group', - value: selected, - inputValue: opt.value, - onclick: () => selected(opt.value) - }) - ) - ), - () => selected() - ? div({ class: 'alert alert-success mt-2' }, () => `Selected ${category()}: ${selected()}`) - : null - ]); -}; -mount(DynamicDemo, '#demo-dynamic'); -``` \ No newline at end of file diff --git a/docs/components/range.md b/docs/components/range.md deleted file mode 100644 index 50f00a4..0000000 --- a/docs/components/range.md +++ /dev/null @@ -1,258 +0,0 @@ -# Range - -Range slider component for selecting numeric values with labels, tooltips, and DaisyUI styling. - -## Tag - -`Range` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `value` | `number \| Signal` | `0` | Current slider value | -| `min` | `number` | `0` | Minimum value | -| `max` | `number` | `100` | Maximum value | -| `step` | `number` | `1` | Step increment | -| `label` | `string \| VNode \| Signal` | `-` | Label text for the slider | -| `tooltip` | `string` | `-` | Tooltip text on hover | -| `disabled` | `boolean \| Signal` | `false` | Disabled state | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `oninput` | `function` | `-` | Input event handler | - -## Styling - -Range supports all **daisyUI Range classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color | `range-primary`, `range-secondary`, `range-accent`, `range-info`, `range-success`, `range-warning`, `range-error` | Range color variants | -| Size | `range-xs`, `range-sm`, `range-md`, `range-lg` | Range scale | - -> For further details, check the [daisyUI Range Documentation](https://daisyui.com/components/range) – Full reference for CSS classes. - -## Live Examples - -### Basic Range - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const value = $(50); - - return div({ class: 'flex flex-col gap-4' }, [ - Range({ - label: 'Volume', - value: value, - min: 0, - max: 100, - oninput: (e) => value(parseInt(e.target.value)) - }), - div({ class: 'text-center' }, () => `Value: ${value()}%`) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Tooltip - -
-
-

Live Demo

-
-
-
- -```javascript -const TooltipDemo = () => { - const brightness = $(75); - - return div({ class: 'flex flex-col gap-4' }, [ - Range({ - label: 'Brightness', - value: brightness, - min: 0, - max: 100, - tooltip: () => `${brightness()}% brightness`, - oninput: (e) => brightness(parseInt(e.target.value)) - }), - div({ class: 'w-full h-20 rounded-lg transition-all', style: () => `background-color: hsl(0, 0%, ${brightness()}%)` }) - ]); -}; -mount(TooltipDemo, '#demo-tooltip'); -``` - -### Color Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const ColorsDemo = () => { - const primary = $(30); - const secondary = $(60); - const accent = $(90); - - return div({ class: 'flex flex-col gap-4' }, [ - Range({ label: 'Primary', value: primary, class: 'range-primary', oninput: (e) => primary(e.target.value) }), - Range({ label: 'Secondary', value: secondary, class: 'range-secondary', oninput: (e) => secondary(e.target.value) }), - Range({ label: 'Accent', value: accent, class: 'range-accent', oninput: (e) => accent(e.target.value) }) - ]); -}; -mount(ColorsDemo, '#demo-colors'); -``` - -### Size Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const SizesDemo = () => { - const xs = $(25); - const sm = $(50); - const md = $(75); - const lg = $(100); - - return div({ class: 'flex flex-col gap-4' }, [ - Range({ label: 'Extra Small', value: xs, class: 'range-xs', oninput: (e) => xs(e.target.value) }), - Range({ label: 'Small', value: sm, class: 'range-sm', oninput: (e) => sm(e.target.value) }), - Range({ label: 'Medium', value: md, class: 'range-md', oninput: (e) => md(e.target.value) }), - Range({ label: 'Large', value: lg, class: 'range-lg', oninput: (e) => lg(e.target.value) }) - ]); -}; -mount(SizesDemo, '#demo-sizes'); -``` - -### Price Range - -
-
-

Live Demo

-
-
-
- -```javascript -const PriceDemo = () => { - const price = $(500); - const maxPrice = 1000; - - return div({ class: 'flex flex-col gap-4' }, [ - Range({ - label: 'Price Range', - value: price, - min: 0, - max: maxPrice, - step: 10, - oninput: (e) => price(parseInt(e.target.value)) - }), - div({ class: 'flex justify-between' }, [ - span({}, '$0'), - span({}, () => `$${price()}`), - span({}, `$${maxPrice}`) - ]), - div({ class: 'mt-2 text-sm opacity-70' }, () => { - if (price() < 250) return 'Budget friendly'; - if (price() < 750) return 'Mid range'; - return 'Premium'; - }) - ]); -}; -mount(PriceDemo, '#demo-price'); -``` - -### Audio Controls - -
-
-

Live Demo

-
-
-
- -```javascript -const AudioDemo = () => { - const volume = $(50); - const bass = $(40); - const treble = $(60); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex items-center gap-3' }, [ - span({ class: 'w-12' }, '🔊'), - Range({ - value: volume, - min: 0, - max: 100, - class: 'range-primary flex-1', - oninput: (e) => volume(e.target.value) - }), - span({ class: 'w-12 text-right' }, () => `${volume()}%`) - ]), - div({ class: 'flex items-center gap-3' }, [ - span({ class: 'w-12' }, '🎵 Bass'), - Range({ - value: bass, - min: 0, - max: 100, - class: 'range-secondary flex-1', - oninput: (e) => bass(e.target.value) - }), - span({ class: 'w-12 text-right' }, () => `${bass()}%`) - ]), - div({ class: 'flex items-center gap-3' }, [ - span({ class: 'w-12' }, '🎶 Treble'), - Range({ - value: treble, - min: 0, - max: 100, - class: 'range-accent flex-1', - oninput: (e) => treble(e.target.value) - }), - span({ class: 'w-12 text-right' }, () => `${treble()}%`) - ]) - ]); -}; -mount(AudioDemo, '#demo-audio'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const value = $(50); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'text-sm font-bold' }, 'With Label'), - Range({ label: 'Label', value: $(50), oninput: (e) => {} }), - - div({ class: 'text-sm font-bold mt-2' }, 'With Tooltip'), - Range({ tooltip: 'Tooltip message', value: $(50), oninput: (e) => {} }), - - div({ class: 'text-sm font-bold mt-2' }, 'Disabled'), - Range({ disabled: true, value: $(50), oninput: (e) => {} }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/rating.md b/docs/components/rating.md deleted file mode 100644 index 2f514b3..0000000 --- a/docs/components/rating.md +++ /dev/null @@ -1,272 +0,0 @@ -# Rating - -Star rating component with customizable count, icons, and read-only mode. - -## Tag - -`Rating` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `value` | `number \| Signal` | `0` | Current rating value | -| `count` | `number \| Signal` | `5` | Number of stars/items | -| `mask` | `string` | `'mask-star'` | Mask shape (`mask-star`, `mask-star-2`, `mask-heart`) | -| `readonly` | `boolean \| Signal` | `false` | Disable interaction | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `onchange` | `function` | `-` | Callback when rating changes | - -## Styling - -Rating supports all **daisyUI Rating classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `rating` | Base rating container | -| Color | `rating-primary`, `rating-secondary`, `rating-accent`, `rating-info`, `rating-success`, `rating-warning`, `rating-error` | Rating color variants | -| Size | `rating-xs`, `rating-sm`, `rating-md`, `rating-lg` | Rating scale | -| Mask | `mask-star`, `mask-star-2`, `mask-heart` | Rating icon shapes | - -> For further details, check the [daisyUI Rating Documentation](https://daisyui.com/components/rating) – Full reference for CSS classes. - -## Live Examples - -### Basic Rating - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const rating = $(3); - - return div({ class: 'flex flex-col gap-2 items-center' }, [ - Rating({ - value: rating, - count: 5, - onchange: (value) => rating(value) - }), - div({ class: 'text-sm opacity-70' }, () => `Rating: ${rating()} / 5`) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Heart Rating - -
-
-

Live Demo

-
-
-
- -```javascript -const HeartDemo = () => { - const rating = $(4); - - return div({ class: 'flex flex-col gap-2 items-center' }, [ - Rating({ - value: rating, - count: 5, - mask: 'mask-heart', - onchange: (value) => rating(value) - }), - div({ class: 'text-sm opacity-70' }, () => `${rating()} hearts`) - ]); -}; -mount(HeartDemo, '#demo-heart'); -``` - -### Star with Outline - -
-
-

Live Demo

-
-
-
- -```javascript -const Star2Demo = () => { - const rating = $(2); - - return div({ class: 'flex flex-col gap-2 items-center' }, [ - Rating({ - value: rating, - count: 5, - mask: 'mask-star-2', - onchange: (value) => rating(value) - }), - div({ class: 'text-sm opacity-70' }, () => `${rating()} stars`) - ]); -}; -mount(Star2Demo, '#demo-star2'); -``` - -### Read-only Rating - -
-
-

Live Demo

-
-
-
- -```javascript -const ReadonlyDemo = () => { - const rating = $(4.5); - - return div({ class: 'flex flex-col gap-2 items-center' }, [ - Rating({ - value: rating, - count: 5, - readonly: true - }), - div({ class: 'text-sm opacity-70' }, 'Average rating: 4.5/5 (read-only)') - ]); -}; -mount(ReadonlyDemo, '#demo-readonly'); -``` - -### Product Review - -
-
-

Live Demo

-
-
-
- -```javascript -const ReviewDemo = () => { - const quality = $(4); - const price = $(3); - const support = $(5); - - const average = () => Math.round(((quality() + price() + support()) / 3) * 10) / 10; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'text-lg font-bold' }, 'Product Review'), - div({ class: 'flex flex-col gap-2' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-sm w-24' }, 'Quality:'), - Rating({ - value: quality, - count: 5, - onchange: (v) => quality(v) - }) - ]), - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-sm w-24' }, 'Price:'), - Rating({ - value: price, - count: 5, - onchange: (v) => price(v) - }) - ]), - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-sm w-24' }, 'Support:'), - Rating({ - value: support, - count: 5, - onchange: (v) => support(v) - }) - ]) - ]), - div({ class: 'divider my-1' }), - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'font-bold' }, 'Overall:'), - div({ class: 'text-2xl font-bold text-primary' }, () => average()) - ]) - ]); -}; -mount(ReviewDemo, '#demo-review'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-col gap-6' }, [ - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Mask Star'), - Rating({ value: $(3), count: 5, mask: 'mask-star' }) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Mask Star 2 (yellow)'), - Rating({ value: $(4), count: 5, mask: 'mask-star-2', class: 'rating-warning' }) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Mask Heart'), - Rating({ value: $(5), count: 5, mask: 'mask-heart', class: 'rating-error' }) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Half Stars (read-only)'), - Rating({ value: $(3.5), count: 5, readonly: true }) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Interactive Feedback - -
-
-

Live Demo

-
-
-
- -```javascript -const FeedbackDemo = () => { - const rating = $(0); - - const messages = { - 1: 'Very disappointed 😞', - 2: 'Could be better 😕', - 3: 'Good 👍', - 4: 'Very good 😊', - 5: 'Excellent! 🎉' - }; - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'How was your experience?'), - Rating({ - value: rating, - count: 5, - onchange: (value) => { - rating(value); - if (value >= 4) { - Toast('Thank you for your positive feedback!', 'alert-success', 2000); - } else if (value <= 2) { - Toast('We appreciate your feedback and will improve!', 'alert-warning', 2000); - } else { - Toast('Thanks for your rating!', 'alert-info', 2000); - } - } - }) - ]), - () => rating() > 0 - ? div({ class: 'alert alert-soft text-center' }, [ - messages[rating()] || `Rating: ${rating()} stars` - ]) - : null - ]); -}; -mount(FeedbackDemo, '#demo-feedback'); -``` \ No newline at end of file diff --git a/docs/components/select.md b/docs/components/select.md deleted file mode 100644 index fa25282..0000000 --- a/docs/components/select.md +++ /dev/null @@ -1,267 +0,0 @@ -# Select - -Dropdown select component with full DaisyUI styling and reactive options. - -## Tag - -`Select`, `Options` - -## Select Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `value` | `string \| Signal` | `''` | Selected value | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `disabled` | `boolean \| Signal` | `false` | Disabled state | -| `onchange` | `function` | `-` | Change event handler | - -## Options Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `items` | `Array \| Signal` | `[]` | Array of items (strings or objects) | -| `placeholder` | `string` | `-` | Optional placeholder option (disabled, selected) | - -## Styling - -Select supports all **daisyUI Select classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Color | `select-primary`, `select-secondary`, `select-accent`, `select-info`, `select-success`, `select-warning`, `select-error` | Select color variants | -| Size | `select-xs`, `select-sm`, `select-md`, `select-lg` | Select scale | -| Style | `select-bordered` (default), `select-ghost` | Visual style variants | - -> For further details, check the [daisyUI Select Documentation](https://daisyui.com/components/select) – Full reference for CSS classes. - -## Live Examples - -### Basic Select - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const selected = $('apple'); - - return div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Choose a fruit')), - select({ - class: 'select select-bordered w-full', - value: selected, - onchange: (e) => selected(e.target.value) - }, [ - Options({ - items: [ - { value: 'apple', label: '🍎 Apple' }, - { value: 'banana', label: '🍌 Banana' }, - { value: 'orange', label: '🍊 Orange' }, - { value: 'grape', label: '🍇 Grape' } - ] - }) - ]) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Reactive Display - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const selected = $('small'); - return div({ class: 'flex flex-col gap-4 w-full' }, [ - div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Select size')), - select({ - class: 'select select-bordered w-full', - value: selected, - onchange: (e) => selected(e.target.value) - }, [ - Options({ - items: [ - { value: 'small', label: 'Small' }, - { value: 'medium', label: 'Medium' }, - { value: 'large', label: 'Large' } - ] - }) - ]) - ]), - div({ class: 'alert alert-info' }, () => `You selected: ${selected()}`) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Disabled State - -
-
-

Live Demo

-
-
-
- -```javascript -const DisabledDemo = () => { - return div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Country (disabled)')), - select({ - class: 'select select-bordered w-full', - value: 'mx', - disabled: true - }, [ - Options({ - items: [ - { value: 'mx', label: 'Mexico' }, - { value: 'us', label: 'United States' }, - { value: 'ca', label: 'Canada' } - ] - }) - ]) - ]); -}; -mount(DisabledDemo, '#demo-disabled'); -``` - -### Dynamic Items - -
-
-

Live Demo

-
-
-
- -```javascript -const DynamicDemo = () => { - const category = $('fruits'); - const selectedItem = $(''); - - const items = { - fruits: [ - { value: 'apple', label: '🍎 Apple' }, - { value: 'banana', label: '🍌 Banana' } - ], - vegetables: [ - { value: 'carrot', label: '🥕 Carrot' }, - { value: 'broccoli', label: '🥦 Broccoli' } - ] - }; - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Category')), - select({ - class: 'select select-bordered w-full', - value: category, - onchange: (e) => { - category(e.target.value); - selectedItem(''); - } - }, [ - Options({ - items: [ - { value: 'fruits', label: 'Fruits' }, - { value: 'vegetables', label: 'Vegetables' } - ] - }) - ]) - ]), - div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Item')), - select({ - class: 'select select-bordered w-full', - value: selectedItem, - onchange: (e) => selectedItem(e.target.value) - }, [ - Options({ - items: () => items[category()] || [] - }) - ]) - ]), - () => selectedItem() ? div({ class: 'alert alert-success' }, `Selected: ${selectedItem()}`) : null - ]); -}; -mount(DynamicDemo, '#demo-dynamic'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const primary = $('option1'); - const secondary = $('option2'); - const ghost = $(''); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Primary Select')), - select({ - class: 'select select-primary w-full', - value: primary, - onchange: (e) => primary(e.target.value) - }, [ - Options({ - items: [ - { value: 'option1', label: 'Option 1' }, - { value: 'option2', label: 'Option 2' }, - { value: 'option3', label: 'Option 3' } - ] - }) - ]) - ]), - div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Secondary Select')), - select({ - class: 'select select-secondary w-full', - value: secondary, - onchange: (e) => secondary(e.target.value) - }, [ - Options({ - items: [ - { value: 'option1', label: 'Option 1' }, - { value: 'option2', label: 'Option 2' } - ] - }) - ]) - ]), - div({ class: 'form-control w-full max-w-xs' }, [ - label({ class: 'label' }, span({ class: 'label-text' }, 'Ghost Select')), - select({ - class: 'select select-ghost w-full', - value: ghost, - onchange: (e) => ghost(e.target.value) - }, [ - Options({ - placeholder: 'Select an option', - items: [ - { value: 'opt1', label: 'Option 1' }, - { value: 'opt2', label: 'Option 2' } - ] - }) - ]) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/stack.md b/docs/components/stack.md deleted file mode 100644 index 4b879de..0000000 --- a/docs/components/stack.md +++ /dev/null @@ -1,294 +0,0 @@ -# Stack - -Stack component for layering multiple elements on top of each other, creating depth and visual hierarchy. - -## Tag - -`Stack` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `children` | `Array \| VNode` | `-` | Elements to stack (first is bottom, last is top) | - -## Styling - -Stack supports all **daisyUI Stack classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `stack` | Base stack container | -| Direction | `stack-top`, `stack-bottom`, `stack-start`, `stack-end` | Stack alignment | -| Width | `w-*` (Tailwind) | Custom width for the stack | - -> For further details, check the [daisyUI Stack Documentation](https://daisyui.com/components/stack) – Full reference for CSS classes. - -## Live Examples - -### Basic Stack - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return Stack({ class: 'w-40' }, [ - div({ class: 'bg-primary text-primary-content rounded-lg p-4 shadow-lg' }, 'Layer 1'), - div({ class: 'bg-secondary text-secondary-content rounded-lg p-4 shadow-lg' }, 'Layer 2'), - div({ class: 'bg-accent text-accent-content rounded-lg p-4 shadow-lg' }, 'Layer 3') - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Card Stack - -
-
-

Live Demo

-
-
-
- -```javascript -const CardsDemo = () => { - return Stack({ class: 'w-64' }, [ - div({ class: 'card bg-base-100 shadow-xl border border-base-300' }, [ - div({ class: 'card-body p-4' }, [ - span({ class: 'text-sm opacity-70' }, 'Back Card'), - span({ class: 'font-bold' }, 'Additional info') - ]) - ]), - div({ class: 'card bg-primary text-primary-content shadow-xl' }, [ - div({ class: 'card-body p-4' }, [ - span({ class: 'text-sm' }, 'Front Card'), - span({ class: 'font-bold text-lg' }, 'Main Content') - ]) - ]) - ]); -}; -mount(CardsDemo, '#demo-cards'); -``` - -### Avatar Stack - -
-
-

Live Demo

-
-
-
- -```javascript -const AvatarsDemo = () => { - return Stack({ class: 'w-32' }, [ - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-neutral text-neutral-content rounded-full w-16 h-16 flex items-center justify-center' }, 'JD') - ]), - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-primary text-primary-content rounded-full w-16 h-16 flex items-center justify-center' }, 'JS') - ]), - div({ class: 'avatar placeholder' }, [ - div({ class: 'bg-secondary text-secondary-content rounded-full w-16 h-16 flex items-center justify-center' }, 'BC') - ]) - ]); -}; -mount(AvatarsDemo, '#demo-avatars'); -``` - -### Image Stack - -
-
-

Live Demo

-
-
-
- -```javascript -const ImagesDemo = () => { - return Stack({ class: 'w-48' }, [ - div({ class: 'w-full h-32 bg-gradient-to-r from-primary to-secondary rounded-lg shadow-lg' }, [ - div({ class: 'p-2 text-white text-sm' }, 'Background Image') - ]), - div({ class: 'w-full h-32 bg-gradient-to-r from-secondary to-accent rounded-lg shadow-lg translate-x-2 translate-y-2' }, [ - div({ class: 'p-2 text-white text-sm' }, 'Middle Layer') - ]), - div({ class: 'w-full h-32 bg-gradient-to-r from-accent to-primary rounded-lg shadow-lg translate-x-4 translate-y-4 flex items-center justify-center' }, [ - span({ class: 'text-white font-bold' }, 'Top Layer') - ]) - ]); -}; -mount(ImagesDemo, '#demo-images'); -``` - -### Photo Gallery Stack - -
-
-

Live Demo

- -
-
- -```javascript -const GalleryDemo = () => { - const photos = [ - { color: 'bg-primary', label: 'Photo 1' }, - { color: 'bg-secondary', label: 'Photo 2' }, - { color: 'bg-accent', label: 'Photo 3' }, - { color: 'bg-info', label: 'Photo 4' } - ]; - - return Stack({ class: 'w-48 cursor-pointer hover:scale-105 transition-transform' }, [ - ...photos.map((photo, idx) => - div({ - class: `${photo.color} rounded-lg shadow-lg transition-all`, - style: `transform: translate(${idx * 4}px, ${idx * 4}px);` - }, [ - div({ class: 'p-4 text-white font-bold' }, photo.label) - ]) - ) - ]); -}; -mount(GalleryDemo, '#demo-gallery'); -``` - -### Interactive Stack - -
-
-

Live Demo

-
-
-
- -```javascript -const InteractiveDemo = () => { - const active = $(0); - const colors = ['primary', 'secondary', 'accent', 'info', 'success']; - const labels = ['Home', 'Profile', 'Settings', 'Messages', 'Notifications']; - - return div({ class: 'flex flex-col gap-6 items-center' }, [ - Stack({ class: 'w-56' }, colors.map((color, idx) => - div({ - class: () => `bg-${color} text-${color}-content rounded-lg p-4 shadow-lg transition-all cursor-pointer ${idx === active() ? 'scale-105 z-10' : ''}`, - style: () => `transform: translate(${idx * 8}px, ${idx * 8}px);`, - onclick: () => active(idx) - }, [ - div({ class: 'font-bold' }, labels[idx]), - div({ class: 'text-sm opacity-80' }, `Layer ${idx + 1}`) - ]) - )), - div({ class: 'mt-4 text-center' }, [ - span({ class: 'font-bold' }, () => `Active: ${labels[active()]}`), - div({ class: 'flex gap-2 mt-2' }, colors.map((_, idx) => - button({ - class: () => `btn btn-xs ${idx === active() ? 'btn-primary' : 'btn-ghost'}`, - onclick: () => active(idx) - }, `${idx + 1}`) - )) - ]) - ]); -}; -mount(InteractiveDemo, '#demo-interactive'); -``` - -### Notification Stack - -
-
-

Live Demo

-
-
-
- -```javascript -const NotificationsDemo = () => { - const notifications = $([ - { id: 1, message: 'New message from John', type: 'info' }, - { id: 2, message: 'Your order has shipped', type: 'success' }, - { id: 3, message: 'Meeting in 10 minutes', type: 'warning' } - ]); - - const removeNotification = (id) => { - notifications(notifications().filter(n => n.id !== id)); - }; - - const typeClasses = { - info: 'bg-info text-info-content', - success: 'bg-success text-success-content', - warning: 'bg-warning text-warning-content', - error: 'bg-error text-error-content' - }; - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - Stack({ class: 'w-80' }, () => notifications().map((notif, idx) => - div({ - class: () => `${typeClasses[notif.type]} rounded-lg p-3 shadow-lg transition-all cursor-pointer`, - style: () => `transform: translate(${idx * 4}px, ${idx * 4}px);`, - onclick: () => removeNotification(notif.id) - }, [ - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'text-sm' }, notif.message), - span({ class: 'text-xs opacity-70 cursor-pointer hover:opacity-100' }, '✕') - ]) - ]) - )), - () => notifications().length === 0 - ? div({ class: 'alert alert-soft' }, 'No notifications') - : button({ - class: 'btn btn-sm btn-ghost mt-2', - onclick: () => notifications([]) - }, 'Clear All') - ]); -}; -mount(NotificationsDemo, '#demo-notifications'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center' }, [ - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Small Stack'), - Stack({ class: 'w-24' }, [ - div({ class: 'bg-primary rounded p-2 text-xs' }, '1'), - div({ class: 'bg-secondary rounded p-2 text-xs' }, '2'), - div({ class: 'bg-accent rounded p-2 text-xs' }, '3') - ]) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Medium Stack'), - Stack({ class: 'w-32' }, [ - div({ class: 'bg-primary rounded p-3' }, 'A'), - div({ class: 'bg-secondary rounded p-3' }, 'B'), - div({ class: 'bg-accent rounded p-3' }, 'C') - ]) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-sm mb-2' }, 'Large Stack'), - Stack({ class: 'w-40' }, [ - div({ class: 'bg-primary rounded p-4' }, 'X'), - div({ class: 'bg-secondary rounded p-4' }, 'Y'), - div({ class: 'bg-accent rounded p-4' }, 'Z') - ]) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/stat.md b/docs/components/stat.md deleted file mode 100644 index 49ba51d..0000000 --- a/docs/components/stat.md +++ /dev/null @@ -1,329 +0,0 @@ -# Stat - -Statistic card component for displaying metrics, counts, and key performance indicators with optional icons and descriptions. - -## Tag - -`Stat` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `label` | `string \| VNode \| Signal` | `-` | Statistic label/title | -| `value` | `string \| number \| Signal` | `-` | Main statistic value | -| `desc` | `string \| VNode \| Signal` | `-` | Description or trend text | -| `icon` | `string \| VNode \| Signal` | `-` | Icon displayed in the figure area | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -## Styling - -Stat supports all **daisyUI Stat classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `stat` | Base stat container | -| Sections | `stat-figure`, `stat-title`, `stat-value`, `stat-desc` | Stat sub-components | -| Variants | `stat-compact` | Compact spacing variant | - -> For further details, check the [daisyUI Stat Documentation](https://daisyui.com/components/stat) – Full reference for CSS classes. - -## Live Examples - -### Basic Stat - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return div({ class: 'grid grid-cols-1 md:grid-cols-3 gap-4' }, [ - Stat({ - label: 'Total Users', - value: '2,345', - desc: '↗︎ 120 new users this month' - }), - Stat({ - label: 'Revenue', - value: '$45,678', - desc: '↘︎ 5% decrease from last month' - }), - Stat({ - label: 'Conversion Rate', - value: '3.45%', - desc: '↗︎ 0.5% increase' - }) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - return div({ class: 'grid grid-cols-1 md:grid-cols-3 gap-4' }, [ - Stat({ - label: 'Active Users', - value: '1,234', - desc: 'Currently online', - icon: span({ class: 'text-4xl' }, '👥') // text-4xl para emojis - }), - Stat({ - label: 'New Orders', - value: '89', - desc: 'Today', - icon: span({ class: 'text-4xl' }, '📦') - }), - Stat({ - label: 'Pending Tasks', - value: '23', - desc: 'Need attention', - icon: span({ class: 'text-4xl' }, '⏳') - }) - ]); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Reactive Values - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const count = $(0); - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'grid grid-cols-1 md:grid-cols-2 gap-4' }, [ - Stat({ - label: 'Counter', - value: () => count(), - desc: 'Click the button to increase', - icon: span({ class: 'text-2xl' }, '🔢') - }), - Stat({ - label: 'Squared', - value: () => Math.pow(count(), 2), - desc: 'Square of counter', - icon: span({ class: 'text-2xl' }, '📐') - }) - ]), - div({ class: 'flex gap-2 justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: () => count(count() + 1) - }, 'Increment'), - button({ - class: 'btn btn-ghost', - onclick: () => count(0) - }, 'Reset') - ]) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Multiple Stats in Row - -
-
-

Live Demo

-
-
-
- -```javascript -const MultipleDemo = () => { - return div({ class: 'grid grid-cols-1 md:grid-cols-4 gap-4' }, [ - Stat({ - label: 'Posts', - value: '1,234', - desc: 'Total content', - icon: span({ class: 'text-4xl' }, '📝') // text-4xl - }), - Stat({ - label: 'Comments', - value: '8,901', - desc: 'Engagement', - icon: span({ class: 'text-4xl' }, '💬') - }), - Stat({ - label: 'Likes', - value: '12,345', - desc: 'Reactions', - icon: span({ class: 'text-4xl' }, '❤️') - }), - Stat({ - label: 'Shares', - value: '456', - desc: 'Viral reach', - icon: span({ class: 'text-4xl' }, '🔄') - }) - ]); -}; -mount(MultipleDemo, '#demo-multiple'); -``` - -### Dashboard Example - -
-
-

Live Demo

-
-
-
- -```javascript -const DashboardDemo = () => { - const stats = $({ - users: 1245, - revenue: 89342, - orders: 342, - satisfaction: 94 - }); - - const updateStats = () => { - stats({ - users: stats().users + Math.floor(Math.random() * 50), - revenue: stats().revenue + Math.floor(Math.random() * 1000), - orders: stats().orders + Math.floor(Math.random() * 20), - satisfaction: Math.min(100, stats().satisfaction + Math.floor(Math.random() * 5) - 2) - }); - }; - - return div({ class: 'flex flex-col gap-6' }, [ - div({ class: 'grid grid-cols-1 md:grid-cols-4 gap-4' }, [ - Stat({ - label: 'Total Users', - value: () => stats().users.toLocaleString(), - desc: 'Registered users', - icon: span({ class: 'text-4xl' }, '👥') // text-4xl - }), - Stat({ - label: 'Revenue', - value: () => `$${stats().revenue.toLocaleString()}`, - desc: 'This month', - icon: span({ class: 'text-4xl' }, '💰') - }), - Stat({ - label: 'Orders', - value: () => stats().orders.toLocaleString(), - desc: 'Completed', - icon: span({ class: 'text-4xl' }, '📦') - }), - Stat({ - label: 'Satisfaction', - value: () => `${stats().satisfaction}%`, - desc: stats().satisfaction > 90 ? 'Excellent!' : 'Good', - icon: span({ class: 'text-4xl' }, '😊') - }) - ]), - div({ class: 'flex justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: updateStats - }, 'Refresh Data') - ]) - ]); -}; -mount(DashboardDemo, '#demo-dashboard'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'grid grid-cols-1 md:grid-cols-2 gap-4' }, [ - Stat({ - label: 'Primary Stat', - value: '1,234', - desc: 'With description', - icon: span({ class: 'text-4xl' }, '⭐'), // text-4xl - class: 'bg-primary/10 text-primary' - }), - Stat({ - label: 'Success Stat', - value: '89%', - desc: 'Success rate', - icon: span({ class: 'text-4xl' }, '✅'), - class: 'bg-success/10 text-success' - }), - Stat({ - label: 'Warning Stat', - value: '23', - desc: 'Pending items', - icon: span({ class: 'text-4xl' }, '⚠️'), - class: 'bg-warning/10 text-warning' - }), - Stat({ - label: 'Error Stat', - value: '5', - desc: 'Failed attempts', - icon: span({ class: 'text-4xl' }, '❌'), - class: 'bg-error/10 text-error' - }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Compact Stats - -
-
-

Live Demo

-
-
-
- -```javascript -const CompactDemo = () => { - return div({ class: 'flex flex-wrap gap-4' }, [ - Stat({ - label: 'Views', - value: '12.3K', - class: 'stat-compact' - }), - Stat({ - label: 'Likes', - value: '2,456', - class: 'stat-compact' - }), - Stat({ - label: 'Comments', - value: '345', - class: 'stat-compact' - }), - Stat({ - label: 'Shares', - value: '89', - class: 'stat-compact' - }) - ]); -}; -mount(CompactDemo, '#demo-compact'); -``` \ No newline at end of file diff --git a/docs/components/swap.md b/docs/components/swap.md deleted file mode 100644 index caf8116..0000000 --- a/docs/components/swap.md +++ /dev/null @@ -1,283 +0,0 @@ -# Swap - -Toggle component that swaps between two states (on/off) with customizable icons or content. - -## Tag - -`Swap` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `value` | `boolean \| Signal` | `false` | Swap state (true = on, false = off) | -| `on` | `string \| VNode \| Signal` | `-` | Content to show when state is on | -| `off` | `string \| VNode \| Signal` | `-` | Content to show when state is off | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `onclick` | `function` | `-` | Click event handler | - -## Styling - -Swap supports all **daisyUI Swap classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `swap` | Base swap container | -| Size | `swap-xs`, `swap-sm`, `swap-md`, `swap-lg` | Swap scale | -| Effect | `swap-rotate`, `swap-flip` | Animation effect on toggle | - -> For further details, check the [daisyUI Swap Documentation](https://daisyui.com/components/swap) – Full reference for CSS classes. - -## Live Examples - -### Basic Swap - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const isOn = $(false); - - return Swap({ - value: isOn, - on: "🌟 ON", - off: "💫 OFF" - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Icon Swap - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - const isOn = $(false); - - return Swap({ - value: isOn, - on: "👁️", - off: "👁️‍🗨️" - }); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Emoji Swap - -
-
-

Live Demo

-
-
-
- -```javascript -const EmojiDemo = () => { - const isOn = $(false); - - return Swap({ - value: isOn, - on: "❤️", - off: "🖤" - }); -}; -mount(EmojiDemo, '#demo-emoji'); -``` - -### Custom Content Swap - -
-
-

Live Demo

-
-
-
- -```javascript -const CustomDemo = () => { - const isOn = $(false); - - return Swap({ - value: isOn, - on: div({ class: "badge badge-success gap-1" }, ["✅", " Active"]), - off: div({ class: "badge badge-ghost gap-1" }, ["⭕", " Inactive"]) - }); -}; -mount(CustomDemo, '#demo-custom'); -``` - -### With Reactive State - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const isOn = $(false); - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - Swap({ - value: isOn, - on: "👁️", - off: "👁️‍🗨️" - }), - div({ class: 'text-center' }, () => - isOn() - ? div({ class: 'alert alert-success' }, 'Content is visible') - : div({ class: 'alert alert-soft' }, 'Content is hidden') - ) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Toggle Mode Swap - -
-
-

Live Demo

-
-
-
- -```javascript -const ModeDemo = () => { - const darkMode = $(false); - const notifications = $(true); - const sound = $(false); - - return div({ class: 'flex flex-col gap-4 w-full' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({}, 'Dark mode'), - Swap({ - value: darkMode, - on: "🌙", - off: "☀️" - }) - ]), - div({ class: 'flex justify-between items-center' }, [ - span({}, 'Notifications'), - Swap({ - value: notifications, - on: "🔔", - off: "🔕" - }) - ]), - div({ class: 'flex justify-between items-center' }, [ - span({}, 'Sound effects'), - Swap({ - value: sound, - on: "🔊", - off: "🔇" - }) - ]), - div({ class: 'mt-2 p-3 rounded-lg', style: () => darkMode() ? 'background: #1f2937; color: white' : 'background: #f3f4f6' }, [ - div({ class: 'text-sm' }, () => `Mode: ${darkMode() ? 'Dark' : 'Light'} | Notifications: ${notifications() ? 'On' : 'Off'} | Sound: ${sound() ? 'On' : 'Off'}`) - ]) - ]); -}; -mount(ModeDemo, '#demo-mode'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center items-center' }, [ - div({ class: 'text-center' }, [ - div({ class: 'text-xs mb-2' }, 'Volume'), - Swap({ - value: $(false), - on: "🔊", - off: "🔇" - }) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-xs mb-2' }, 'Like'), - Swap({ - value: $(true), - on: "❤️", - off: "🤍" - }) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-xs mb-2' }, 'Star'), - Swap({ - value: $(false), - on: "⭐", - off: "☆" - }) - ]), - div({ class: 'text-center' }, [ - div({ class: 'text-xs mb-2' }, 'Check'), - Swap({ - value: $(true), - on: "✅", - off: "❌" - }) - ]) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Simple Todo Toggle - -
-
-

Live Demo

-
-
-
- -```javascript -const TodoDemo = () => { - const todos = [ - { id: 1, text: 'Complete documentation', completed: $(true) }, - { id: 2, text: 'Review pull requests', completed: $(false) }, - { id: 3, text: 'Deploy to production', completed: $(false) } - ]; - - return div({ class: 'flex flex-col gap-3' }, [ - div({ class: 'text-sm font-bold mb-2' }, 'Todo list'), - ...todos.map(todo => - div({ class: 'flex items-center justify-between p-2 bg-base-200 rounded-lg' }, [ - span({ class: todo.completed() ? 'line-through opacity-50' : '' }, todo.text), - Swap({ - value: todo.completed, - on: "✅", - off: "⬜" - }) - ]) - ), - div({ class: 'mt-2 text-sm opacity-70' }, () => { - const completed = todos.filter(t => t.completed()).length; - return `${completed} of ${todos.length} tasks completed`; - }) - ]); -}; -mount(TodoDemo, '#demo-todo'); -``` \ No newline at end of file diff --git a/docs/components/table.md b/docs/components/table.md deleted file mode 100644 index 9220d6a..0000000 --- a/docs/components/table.md +++ /dev/null @@ -1,412 +0,0 @@ -# Table - -Data table component with sorting, pagination, zebra stripes, pin rows, and custom cell rendering. - -## Tag - -`Table` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `items` | `Array \| Signal` | `[]` | Data array to display | -| `columns` | `Array` | `[]` | Column definitions | -| `keyFn` | `function` | `(item, idx) => idx` | Unique key function for rows | -| `zebra` | `boolean \| Signal` | `false` | Enable zebra striping | -| `pinRows` | `boolean \| Signal` | `false` | Pin header rows on scroll | -| `empty` | `string \| VNode` | `'No data'` | Content to show when no data | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -### Column Structure - -| Property | Type | Description | -| :--- | :--- | :--- | -| `label` | `string` | Column header text | -| `key` | `string` | Property key to display from item | -| `render` | `function(item, index)` | Custom render function for cell content | -| `class` | `string` | Additional CSS classes for column cells | -| `footer` | `string \| VNode` | Footer content for the column | - -## Styling - -Table supports all **daisyUI Table classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `table` | Base table styling | -| Variant | `table-zebra` | Zebra striping | -| Size | `table-xs`, `table-sm`, `table-md`, `table-lg`, `table-xl` | Table scale | -| Feature | `table-pin-rows`, `table-pin-cols` | Pin headers/columns | - -> For further details, check the [daisyUI Table Documentation](https://daisyui.com/components/table) – Full reference for CSS classes. - -## Live Examples - -### Basic Table - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const users = [ - { id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin' }, - { id: 2, name: 'Jane Smith', email: 'jane@example.com', role: 'User' }, - { id: 3, name: 'Bob Johnson', email: 'bob@example.com', role: 'Editor' } - ]; - - return table({ - items: users, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Name', key: 'name' }, - { label: 'Email', key: 'email' }, - { label: 'Role', key: 'role' } - ] - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Zebra Stripes - -
-
-

Live Demo

-
-
-
- -```javascript -const ZebraDemo = () => { - const products = [ - { id: 1, name: 'Laptop', price: '$999', stock: 15 }, - { id: 2, name: 'Mouse', price: '$29', stock: 42 }, - { id: 3, name: 'Keyboard', price: '$79', stock: 28 }, - { id: 4, name: 'Monitor', price: '$299', stock: 12 } - ]; - - return table({ - items: products, - columns: [ - { label: 'Product', key: 'name' }, - { label: 'Price', key: 'price' }, - { label: 'Stock', key: 'stock' } - ], - zebra: true - }); -}; -mount(ZebraDemo, '#demo-zebra'); -``` - -### With Custom Cell Rendering - -
-
-

Live Demo

-
-
-
- -```javascript -const CustomDemo = () => { - const orders = [ - { id: 101, customer: 'Alice', amount: 250, status: 'completed' }, - { id: 102, customer: 'Bob', amount: 89, status: 'pending' }, - { id: 103, customer: 'Charlie', amount: 450, status: 'shipped' } - ]; - - return table({ - items: orders, - columns: [ - { label: 'Order ID', key: 'id' }, - { label: 'Customer', key: 'customer' }, - { - label: 'Amount', - key: 'amount', - render: (item) => `$${item.amount}` - }, - { - label: 'Status', - key: 'status', - render: (item) => { - const statusClass = { - completed: 'badge badge-success', - pending: 'badge badge-warning', - shipped: 'badge badge-info' - }; - return span({ class: statusClass[item.status] }, item.status); - } - } - ], - zebra: true - }); -}; -mount(CustomDemo, '#demo-custom'); -``` - -### With Footers - -
-
-

Live Demo

- -
-
- -```javascript -const FooterDemo = () => { - const sales = [ - { month: 'January', revenue: 12500, expenses: 8900 }, - { month: 'February', revenue: 14200, expenses: 9200 }, - { month: 'March', revenue: 16800, expenses: 10100 } - ]; - - const totalRevenue = sales.reduce((sum, item) => sum + item.revenue, 0); - const totalExpenses = sales.reduce((sum, item) => sum + item.expenses, 0); - - return table({ - items: sales, - columns: [ - { label: 'Month', key: 'month' }, - { - label: 'Revenue', - key: 'revenue', - render: (item) => `$${item.revenue.toLocaleString()}`, - footer: `Total: $${totalRevenue.toLocaleString()}` - }, - { - label: 'Expenses', - key: 'expenses', - render: (item) => `$${item.expenses.toLocaleString()}`, - footer: `Total: $${totalExpenses.toLocaleString()}` - }, - { - label: 'Profit', - render: (item) => `$${(item.revenue - item.expenses).toLocaleString()}`, - footer: `$${(totalRevenue - totalExpenses).toLocaleString()}` - } - ], - zebra: true - }); -}; -mount(FooterDemo, '#demo-footer'); -``` - -### Empty State - -
-
-

Live Demo

-
-
-
- -```javascript -const EmptyDemo = () => { - const emptyList = []; - - return table({ - items: emptyList, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Name', key: 'name' } - ], - empty: div({ class: 'flex flex-col items-center gap-2 p-4' }, [ - span({ class: 'text-2xl' }, '📭'), - span({}, 'No records found') - ]) - }); -}; -mount(EmptyDemo, '#demo-empty'); -``` - -### Reactive Data - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const filter = $('all'); - const tasks = $([ - { id: 1, title: 'Complete documentation', completed: true }, - { id: 2, title: 'Review pull requests', completed: false }, - { id: 3, title: 'Deploy to production', completed: false }, - { id: 4, title: 'Update dependencies', completed: true } - ]); - - const filteredTasks = () => { - if (filter() === 'completed') { - return tasks().filter(t => t.completed); - } else if (filter() === 'pending') { - return tasks().filter(t => !t.completed); - } - return tasks(); - }; - - const addTask = () => { - const newId = Math.max(...tasks().map(t => t.id), 0) + 1; - tasks([...tasks(), { id: newId, title: `Task ${newId}`, completed: false }]); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex gap-2' }, [ - button({ - class: 'btn btn-sm', - onclick: () => filter('all') - }, 'All'), - button({ - class: 'btn btn-sm', - onclick: () => filter('completed') - }, 'Completed'), - button({ - class: 'btn btn-sm', - onclick: () => filter('pending') - }, 'Pending'), - button({ - class: 'btn btn-sm btn-primary', - onclick: addTask - }, 'Add Task') - ]), - table({ - items: filteredTasks, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Title', key: 'title' }, - { - label: 'Status', - render: (item) => item.completed - ? span({ class: 'badge badge-success' }, '✓ Done') - : span({ class: 'badge badge-warning' }, '○ Pending') - } - ], - zebra: true - }) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### With Actions - -
-
-

Live Demo

-
-
-
- -```javascript -const ActionsDemo = () => { - const users = $([ - { id: 1, name: 'John Doe', email: 'john@example.com', active: true }, - { id: 2, name: 'Jane Smith', email: 'jane@example.com', active: false }, - { id: 3, name: 'Bob Johnson', email: 'bob@example.com', active: true } - ]); - - const deleteUser = (id) => { - users(users().filter(u => u.id !== id)); - Toast('User deleted', 'alert-info', 2000); - }; - - const toggleActive = (id) => { - users(users().map(u => - u.id === id ? { ...u, active: !u.active } : u - )); - }; - - return table({ - items: users, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Name', key: 'name' }, - { label: 'Email', key: 'email' }, - { - label: 'Status', - render: (item) => item.active - ? span({ class: 'badge badge-success' }, 'Active') - : span({ class: 'badge badge-ghost' }, 'Inactive') - }, - { - label: 'Actions', - render: (item) => div({ class: 'flex gap-1' }, [ - button({ - class: 'btn btn-xs btn-ghost', - onclick: () => toggleActive(item.id) - }, item.active ? 'Deactivate' : 'Activate'), - button({ - class: 'btn btn-xs btn-error', - onclick: () => deleteUser(item.id) - }, 'Delete') - ]) - } - ], - zebra: true - }); -}; -mount(ActionsDemo, '#demo-actions'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const data = [ - { id: 1, name: 'Item 1', value: 100 }, - { id: 2, name: 'Item 2', value: 200 }, - { id: 3, name: 'Item 3', value: 300 } - ]; - - return div({ class: 'flex flex-col gap-6' }, [ - div({ class: 'text-sm font-bold' }, 'Default Table'), - table({ - items: data, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Name', key: 'name' }, - { label: 'Value', key: 'value' } - ] - }), - - div({ class: 'text-sm font-bold mt-4' }, 'Zebra Stripes'), - table({ - items: data, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Name', key: 'name' }, - { label: 'Value', key: 'value' } - ], - zebra: true - }), - - div({ class: 'text-sm font-bold mt-4' }, 'Compact Table'), - table({ - items: data, - columns: [ - { label: 'ID', key: 'id' }, - { label: 'Name', key: 'name' }, - { label: 'Value', key: 'value' } - ], - class: 'table-compact' - }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/tabs.md b/docs/components/tabs.md deleted file mode 100644 index fbf056f..0000000 --- a/docs/components/tabs.md +++ /dev/null @@ -1,456 +0,0 @@ -# Tabs - -Tabs component for organizing content into separate panels with tab navigation. - -## Tag - -`Tabs` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `items` | `Array \| Signal` | `[]` | Array of tab items | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -### TabItem Structure - -| Property | Type | Description | -| :--- | :--- | :--- | -| `label` | `string \| VNode` | Tab button label | -| `content` | `VNode \| function` | Content to display when tab is active | -| `active` | `boolean \| Signal` | Whether this tab is active (only one per group) | -| `disabled` | `boolean` | Whether tab is disabled | -| `tip` | `string` | Tooltip text for the tab | -| `onclick` | `function` | Click handler (optional, overrides default) | - -## Styling - -Tabs supports all **daisyUI Tabs classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `tabs` | Base tabs container | -| Variant | `tabs-box`, `tabs-lifted` | Tab style variants | -| Size | `tabs-xs`, `tabs-sm`, `tabs-md`, `tabs-lg` | Tab scale | -| State | `tab-active`, `tab-disabled` | Tab states | - -> For further details, check the [daisyUI Tabs Documentation](https://daisyui.com/components/tabs) – Full reference for CSS classes. - -### Example - -```javascript -Tabs({ - items: [ - { label: "Tab 1", content: "Content 1", active: true }, - { label: "Tab 2", content: "Content 2" } - ], - class: "tabs-box" -}); -``` - -## Live Examples - -### Basic Tabs - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const activeTab = $('tab1'); - - return Tabs({ - items: [ - { - label: 'Tab 1', - active: () => activeTab() === 'tab1', - onclick: () => activeTab('tab1'), - content: div({ class: 'p-4' }, 'Content for Tab 1') - }, - { - label: 'Tab 2', - active: () => activeTab() === 'tab2', - onclick: () => activeTab('tab2'), - content: div({ class: 'p-4' }, 'Content for Tab 2') - }, - { - label: 'Tab 3', - active: () => activeTab() === 'tab3', - onclick: () => activeTab('tab3'), - content: div({ class: 'p-4' }, 'Content for Tab 3') - } - ] - }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### With Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - const activeTab = $('home'); - - return Tabs({ - items: [ - { - label: span({ class: 'flex items-center gap-2' }, ['🏠', 'Home']), - active: () => activeTab() === 'home', - onclick: () => activeTab('home'), - content: div({ class: 'p-4' }, 'Welcome to the Home tab!') - }, - { - label: span({ class: 'flex items-center gap-2' }, ['⭐', 'Favorites']), - active: () => activeTab() === 'favorites', - onclick: () => activeTab('favorites'), - content: div({ class: 'p-4' }, 'Your favorite items appear here.') - }, - { - label: span({ class: 'flex items-center gap-2' }, ['⚙️', 'Settings']), - active: () => activeTab() === 'settings', - onclick: () => activeTab('settings'), - content: div({ class: 'p-4' }, 'Configure your preferences.') - } - ] - }); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### With Tooltips - -
-
-

Live Demo

-
-
-
- -```javascript -const TooltipsDemo = () => { - const activeTab = $('profile'); - - return Tabs({ - items: [ - { - label: 'Profile', - tip: 'View your profile information', - active: () => activeTab() === 'profile', - onclick: () => activeTab('profile'), - content: div({ class: 'p-4' }, 'Profile information here.') - }, - { - label: 'Settings', - tip: 'Adjust your preferences', - active: () => activeTab() === 'settings', - onclick: () => activeTab('settings'), - content: div({ class: 'p-4' }, 'Settings configuration.') - }, - { - label: 'Notifications', - tip: 'Manage notifications', - active: () => activeTab() === 'notifications', - onclick: () => activeTab('notifications'), - content: div({ class: 'p-4' }, 'Notification settings.') - } - ] - }); -}; -mount(TooltipsDemo, '#demo-tooltips'); -``` - -### Disabled Tab - -
-
-

Live Demo

-
-
-
- -```javascript -const DisabledDemo = () => { - const activeTab = $('basic'); - - return Tabs({ - items: [ - { - label: 'Basic', - active: () => activeTab() === 'basic', - onclick: () => activeTab('basic'), - content: div({ class: 'p-4' }, 'Basic features available.') - }, - { - label: 'Premium', - disabled: true, - tip: 'Upgrade to access', - content: div({ class: 'p-4' }, 'Premium content (locked)') - }, - { - label: 'Pro', - disabled: true, - tip: 'Coming soon', - content: div({ class: 'p-4' }, 'Pro features (coming soon)') - } - ] - }); -}; -mount(DisabledDemo, '#demo-disabled'); -``` - -### Reactive Content - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const activeTab = $('counter'); - const count = $(0); - - return Tabs({ - items: [ - { - label: 'Counter', - active: () => activeTab() === 'counter', - onclick: () => activeTab('counter'), - content: div({ class: 'p-4 text-center' }, [ - div({ class: 'text-4xl font-bold mb-4' }, () => count()), - button({ - class: 'btn btn-primary', - onclick: () => count(count() + 1) - }, 'Increment') - ]) - }, - { - label: 'Timer', - active: () => activeTab() === 'timer', - onclick: () => activeTab('timer'), - content: div({ class: 'p-4' }, () => `Current time: ${new Date().toLocaleTimeString()}`) - }, - { - label: 'Status', - active: () => activeTab() === 'status', - onclick: () => activeTab('status'), - content: div({ class: 'p-4' }, () => `Counter value: ${count()}, Last updated: ${new Date().toLocaleTimeString()}`) - } - ] - }); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Form Tabs - -
-
-

Live Demo

-
-
-
- -```javascript -const FormTabs = () => { - const activeTab = $('personal'); - const formData = $({ - name: '', - email: '', - address: '', - city: '', - notifications: true, - newsletter: false - }); - - const updateField = (field, value) => { - formData({ ...formData(), [field]: value }); - }; - - const handleSubmit = () => { - Toast('Form submitted!', 'alert-success', 2000); - console.log(formData()); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - Tabs({ - items: [ - { - label: 'Personal Info', - active: () => activeTab() === 'personal', - onclick: () => activeTab('personal'), - content: div({ class: 'p-4 space-y-4' }, [ - input({ - label: 'Name', - value: () => formData().name, - placeholder: 'Enter your name', - oninput: (e) => updateField('name', e.target.value) - }), - input({ - label: 'Email', - type: 'email', - value: () => formData().email, - placeholder: 'email@example.com', - oninput: (e) => updateField('email', e.target.value) - }) - ]) - }, - { - label: 'Address', - active: () => activeTab() === 'address', - onclick: () => activeTab('address'), - content: div({ class: 'p-4 space-y-4' }, [ - input({ - label: 'Address', - value: () => formData().address, - placeholder: 'Street address', - oninput: (e) => updateField('address', e.target.value) - }), - input({ - label: 'City', - value: () => formData().city, - placeholder: 'City', - oninput: (e) => updateField('city', e.target.value) - }) - ]) - }, - { - label: 'Preferences', - active: () => activeTab() === 'prefs', - onclick: () => activeTab('prefs'), - content: div({ class: 'p-4 space-y-4' }, [ - Checkbox({ - label: 'Email notifications', - value: () => formData().notifications, - onclick: () => updateField('notifications', !formData().notifications) - }), - Checkbox({ - label: 'Newsletter subscription', - value: () => formData().newsletter, - onclick: () => updateField('newsletter', !formData().newsletter) - }) - ]) - } - ] - }), - div({ class: 'flex justify-end mt-4' }, [ - button({ - class: 'btn btn-primary', - onclick: handleSubmit - }, 'Submit') - ]) - ]); -}; -mount(FormTabs, '#demo-form'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const active1 = $('tab1'); - const active2 = $('tab1'); - const active3 = $('tab1'); - const active4 = $('tab4'); - - const createItems = (active) => [ - { - label: 'Tab 1', - active: () => active() === 'tab1', - onclick: () => active('tab1'), - content: div({ class: 'p-4' }, 'Content 1') - }, - { - label: 'Tab 2', - active: () => active() === 'tab2', - onclick: () => active('tab2'), - content: div({ class: 'p-4' }, 'Content 2') - }, - { - label: 'Tab 3', - active: () => active() === 'tab3', - onclick: () => active('tab3'), - content: div({ class: 'p-4' }, 'Content 3') - }, - { - label: 'Tab 4', - active: () => active() === 'tab4', - onclick: () => active('tab4'), - content: div({ class: 'p-4' }, 'Content 4') - } - ]; - - return div({ class: 'flex flex-col gap-6' }, [ - div({ class: 'text-sm font-bold' }, 'Default Tabs'), - Tabs({ items: createItems(active1) }), - - div({ class: 'text-sm font-bold mt-4' }, 'Boxed Tabs'), - Tabs({ items: createItems(active2), class: 'tabs-box' }), - - div({ class: 'text-sm font-bold mt-4' }, 'Lifted Tabs'), - Tabs({ items: createItems(active3), class: 'tabs-lift' }), - - div({ class: 'text-sm font-bold mt-4' }, 'Bordered Tabs'), - Tabs({ items: createItems(active4), class: 'tabs-border' }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` - -### Closable Tabs - -

Live Demo

- -```javascript -let nextTabId = 4; - -const ClosableTabsDemo = () => { - const tabs = $([ - { label: 'Tab 1', tip:"Tab1" , content: div('Content 1') }, // ❌ quita active: true - { label: 'Tab 2', tip: "Tab 2 Default", content: div('Content 2'), closable: true }, - { label: 'Tab 3', content: div('Content 3'), closable: true } - ]); - - // Opcional: si quieres que la primera pestaña esté activa al inicio, - // puedes hacerlo mediante una señal externa o simplemente confiar en que - // activeIndex empieza en 0 (que es el comportamiento por defecto). - - const addTab = () => { - const newId = nextTabId++; - tabs([...tabs(), { - label: `Tab ${newId}`, - content: div(`Content ${newId}`), - onClose: (item) => console.log('Closing Individual', item), - closable: true - }]); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - button({ class: 'btn btn-sm btn-outline mb-2', onclick: addTab }, 'Add Tab'), - Tabs({ items: tabs, onTabClose: (item) => console.log('Closing', item) }) - ]); -}; - -mount(ClosableTabsDemo, '#demo-closable'); -``` \ No newline at end of file diff --git a/docs/components/timeline.md b/docs/components/timeline.md deleted file mode 100644 index 86dbb5d..0000000 --- a/docs/components/timeline.md +++ /dev/null @@ -1,294 +0,0 @@ -# Timeline - -Timeline component for displaying chronological events, steps, or progress with customizable icons and content. - -## Tag - -`Timeline` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `items` | `Array \| Signal` | `[]` | Timeline items to display | -| `vertical` | `boolean \| Signal` | `true` | Vertical or horizontal orientation | -| `compact` | `boolean \| Signal` | `false` | Compact mode with less padding | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | - -### TimelineItem Structure - -| Property | Type | Description | -| :--- | :--- | :--- | -| `title` | `string \| VNode \| Signal` | Event title or main text | -| `detail` | `string \| VNode \| Signal` | Additional details or description | -| `icon` | `string \| VNode` | Custom icon (overrides type) | -| `type` | `string` | Type: `'success'`, `'warning'`, `'error'`, `'info'` | -| `completed` | `boolean` | Whether event is completed (affects connector) | - -## Styling - -Timeline supports all **daisyUI Timeline classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Base | `timeline`, `timeline-vertical`, `timeline-horizontal` | Timeline orientation | -| Size | `timeline-compact` | Compact spacing variant | -| Color | `bg-primary`, `bg-success`, `bg-warning`, `bg-error`, `bg-info` | Icon background colors | - -> For further details, check the [daisyUI Timeline Documentation](https://daisyui.com/components/timeline) – Full reference for CSS classes. - -## Live Examples - -### Basic Timeline - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - const events = [ - { title: 'Project Started', detail: 'Initial planning and setup', type: 'info', completed: true }, - { title: 'Design Phase', detail: 'UI/UX design completed', type: 'success', completed: true }, - { title: 'Development', detail: 'Core features implemented', type: 'warning', completed: false }, - { title: 'Testing', detail: 'Quality assurance', type: 'info', completed: false }, - { title: 'Launch', detail: 'Production deployment', type: 'success', completed: false } - ]; - - return Timeline({ items: events }); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Horizontal Timeline - -
-
-

Live Demo

-
-
-
- -```javascript -const HorizontalDemo = () => { - const steps = [ - { title: 'Step 1', detail: 'Requirements', type: 'success', completed: true }, - { title: 'Step 2', detail: 'Design', type: 'success', completed: true }, - { title: 'Step 3', detail: 'Development', type: 'warning', completed: false }, - { title: 'Step 4', detail: 'Testing', type: 'info', completed: false }, - { title: 'Step 5', detail: 'Deploy', type: 'info', completed: false } - ]; - - return Timeline({ - items: steps, - vertical: false, - class: 'min-w-[600px]' - }); -}; -mount(HorizontalDemo, '#demo-horizontal'); -``` - -### Compact Timeline - -
-
-

Live Demo

-
-
-
- -```javascript -const CompactDemo = () => { - const activities = [ - { title: 'User login', detail: '10:30 AM', type: 'success', completed: true }, - { title: 'Viewed dashboard', detail: '10:32 AM', type: 'info', completed: true }, - { title: 'Updated profile', detail: '10:45 AM', type: 'success', completed: true }, - { title: 'Made purchase', detail: '11:00 AM', type: 'warning', completed: false } - ]; - - return Timeline({ - items: activities, - compact: true - }); -}; -mount(CompactDemo, '#demo-compact'); -``` - -### Custom Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - const milestones = [ - { title: 'Kickoff', detail: 'Project kickoff meeting', icon: '🚀', completed: true }, - { title: 'MVP', detail: 'Minimum viable product', icon: '💡', completed: true }, - { title: 'Beta', detail: 'Beta release', icon: '⚙️', completed: false }, - { title: 'Launch', detail: 'Public launch', icon: '🎉', completed: false } - ]; - - return Timeline({ items: milestones }); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Reactive Timeline - -
-
-

Live Demo

-
-
-
- -```javascript -const ReactiveDemo = () => { - const currentStep = $(0); - const steps = [ - { title: 'Order Placed', detail: 'Your order has been confirmed', type: 'success' }, - { title: 'Processing', detail: 'Payment verified, preparing shipment', type: 'success' }, - { title: 'Shipped', detail: 'Package on the way', type: 'warning' }, - { title: 'Delivered', detail: 'Arriving soon', type: 'info' } - ]; - - const items = () => steps.map((step, idx) => ({ - ...step, - completed: idx < currentStep() - })); - - const nextStep = () => { - if (currentStep() < steps.length) { - currentStep(currentStep() + 1); - Toast(`Step ${currentStep()}: ${steps[currentStep() - 1].title}`, 'alert-info', 1500); - } - }; - - const reset = () => { - currentStep(0); - Toast('Order tracking reset', 'alert-warning', 1500); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - Timeline({ items: items }), - div({ class: 'flex gap-2 justify-center mt-4' }, [ - button({ - class: 'btn btn-primary btn-sm', - onclick: nextStep, - disabled: () => currentStep() >= steps.length - }, 'Next Step'), - button({ - class: 'btn btn-ghost btn-sm', - onclick: reset, - disabled: () => currentStep() === 0 - }, 'Reset') - ]) - ]); -}; -mount(ReactiveDemo, '#demo-reactive'); -``` - -### Order Status Tracker - -
-
-

Live Demo

-
-
-
- -```javascript -const OrderDemo = () => { - const status = $('pending'); // ← empezar en 'pending' - - const statusMap = { - pending: { title: 'Order Pending', detail: 'Awaiting confirmation', type: 'warning' }, - confirmed: { title: 'Order Confirmed', detail: 'Payment received', type: 'info' }, - processing: { title: 'Processing', detail: 'Preparing your order', type: 'info' }, - shipped: { title: 'Shipped', detail: 'Package in transit', type: 'info' }, - delivered: { title: 'Delivered', detail: 'Order completed', type: 'success' } - }; - - const statusOrder = ['pending', 'confirmed', 'processing', 'shipped', 'delivered']; - const currentIndex = () => statusOrder.indexOf(status()); - - const items = () => statusOrder.map((key, idx) => ({ - ...statusMap[key], - completed: idx < currentIndex() - })); - - return div({ class: 'flex flex-col gap-4' }, [ - Timeline({ items, compact: true }), - div({ class: 'flex gap-2 justify-center flex-wrap mt-4' }, statusOrder.map(s => - button({ - class: () => `btn btn-xs ${status() === s ? 'btn-primary' : 'btn-ghost'}`, - onclick: () => status(s) - }, statusMap[s].title) - )) - ]); -}; -mount(OrderDemo, '#demo-order'); -``` - -### Company History - -
-
-

Live Demo

-
-
-
- -```javascript -const HistoryDemo = () => { - const milestones = [ - { title: '2015 - Founded', detail: 'Company started with 3 employees', type: 'success', completed: true }, - { title: '2017 - First Product', detail: 'Launched first software product', type: 'success', completed: true }, - { title: '2019 - Series A', detail: 'Raised $5M, expanded to 50 employees', type: 'success', completed: true }, - { title: '2022 - Global Expansion', detail: 'Opened offices in Europe and Asia', type: 'info', completed: true }, - { title: '2024 - AI Integration', detail: 'Launched AI-powered features', type: 'warning', completed: false }, - { title: '2026 - Future Goals', detail: 'Aiming for market leadership', type: 'info', completed: false } - ]; - - return Timeline({ items: milestones }); -}; -mount(HistoryDemo, '#demo-history'); -``` - -### All Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const VariantsDemo = () => { - const sampleItems = [ - { title: 'Event 1', detail: 'Description here', type: 'success', completed: true }, - { title: 'Event 2', detail: 'Description here', type: 'warning', completed: false }, - { title: 'Event 3', detail: 'Description here', type: 'info', completed: false } - ]; - - return div({ class: 'flex flex-col gap-8' }, [ - div({ class: 'text-sm font-bold' }, 'Vertical Timeline'), - Timeline({ items: sampleItems }), - - div({ class: 'text-sm font-bold mt-4' }, 'Horizontal Timeline'), - Timeline({ items: sampleItems, vertical: false, class: 'min-w-[500px]' }), - - div({ class: 'text-sm font-bold mt-4' }, 'Compact Timeline'), - Timeline({ items: sampleItems, compact: true }) - ]); -}; -mount(VariantsDemo, '#demo-variants'); -``` \ No newline at end of file diff --git a/docs/components/toast.md b/docs/components/toast.md deleted file mode 100644 index a3a74f5..0000000 --- a/docs/components/toast.md +++ /dev/null @@ -1,343 +0,0 @@ -# Toast - -Toast notification utility for displaying temporary messages that automatically dismiss after a specified duration. Can be used programmatically. - -## Function - -`Toast(message, type = 'alert-info', duration = 3500)` - -| Param | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `message` | `string \| VNode` | `-` | Message content to display | -| `type` | `string` | `'alert-info'` | Alert type: `'alert-info'`, `'alert-success'`, `'alert-warning'`, `'alert-error'` | -| `duration` | `number` | `3500` | Auto-dismiss duration in milliseconds | - -## Live Examples - -### Basic Toast - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return div({ class: 'flex flex-wrap gap-2 justify-center' }, [ - button({ - class: 'btn btn-info', - onclick: () => Toast('This is an info message', 'alert-info', 3000) - }, 'Info Toast'), - button({ - class: 'btn btn-success', - onclick: () => Toast('Operation successful!', 'alert-success', 3000) - }, 'Success Toast'), - button({ - class: 'btn btn-warning', - onclick: () => Toast('Please check your input', 'alert-warning', 3000) - }, 'Warning Toast'), - button({ - class: 'btn btn-error', - onclick: () => Toast('An error occurred', 'alert-error', 3000) - }, 'Error Toast') - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Different Durations - -
-
-

Live Demo

-
-
-
- -```javascript -const DurationDemo = () => { - return div({ class: 'flex flex-wrap gap-2 justify-center' }, [ - button({ - class: 'btn btn-sm', - onclick: () => Toast('Short (1s)', 'alert-info', 1000) - }, '1 Second'), - button({ - class: 'btn btn-sm', - onclick: () => Toast('Normal (3s)', 'alert-success', 3000) - }, '3 Seconds'), - button({ - class: 'btn btn-sm', - onclick: () => Toast('Long (5s)', 'alert-warning', 5000) - }, '5 Seconds'), - button({ - class: 'btn btn-sm', - onclick: () => Toast('Very Long (8s)', 'alert-error', 8000) - }, '8 Seconds') - ]); -}; -mount(DurationDemo, '#demo-duration'); -``` - -### Interactive Toast - -
-
-

Live Demo

-
-
-
- -```javascript -const InteractiveDemo = () => { - const count = $(0); - - const showRandomToast = () => { - const types = ['alert-info', 'alert-success', 'alert-warning', 'alert-error']; - const messages = [ - 'You clicked the button!', - 'Action completed successfully', - 'Processing your request...', - 'Something interesting happened' - ]; - const randomType = types[Math.floor(Math.random() * types.length)]; - const randomMessage = messages[Math.floor(Math.random() * messages.length)]; - count(count() + 1); - Toast(`${randomMessage} (${count()})`, randomType, 2000); - }; - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - button({ - class: 'btn btn-primary', - onclick: showRandomToast - }, 'Show Random Toast'), - div({ class: 'text-sm opacity-70' }, () => `Toasts shown: ${count()}`) - ]); -}; -mount(InteractiveDemo, '#demo-interactive'); -``` - -### Form Validation Toast - -
-
-

Live Demo

-
-
-
- -```javascript -const FormToastDemo = () => { - const email = $(''); - const password = $(''); - - const handleSubmit = () => { - if (!email()) { - Toast('Please enter your email', 'alert-warning', 3000); - return; - } - if (!email().includes('@')) { - Toast('Please enter a valid email address', 'alert-error', 3000); - return; - } - if (!password()) { - Toast('Please enter your password', 'alert-warning', 3000); - return; - } - if (password().length < 6) { - Toast('Password must be at least 6 characters', 'alert-error', 3000); - return; - } - Toast('Login successful! Redirecting...', 'alert-success', 2000); - }; - - return div({ class: 'flex flex-col gap-4 max-w-md mx-auto' }, [ - div({ class: 'text-lg font-bold text-center' }, 'Login Form'), - input({ - label: 'Email', - type: 'email', - value: email, - placeholder: 'user@example.com', - oninput: (e) => email(e.target.value) - }), - input({ - label: 'Password', - type: 'password', - value: password, - placeholder: 'Enter password', - oninput: (e) => password(e.target.value) - }), - button({ - class: 'btn btn-primary', - onclick: handleSubmit - }, 'Login') - ]); -}; -mount(FormToastDemo, '#demo-form'); -``` - -### Success Feedback - -
-
-

Live Demo

-
-
-
- -```javascript -const FeedbackDemo = () => { - const items = $([ - { id: 1, name: 'Item 1', saved: false }, - { id: 2, name: 'Item 2', saved: false }, - { id: 3, name: 'Item 3', saved: false } - ]); - - const saveItem = (id) => { - items(items().map(item => - item.id === id ? { ...item, saved: true } : item - )); - Toast(`Item ${id} saved successfully!`, 'alert-success', 2000); - }; - - const saveAll = () => { - items(items().map(item => ({ ...item, saved: true }))); - Toast('All items saved!', 'alert-success', 2000); - }; - - return div({ class: 'flex flex-col gap-4' }, [ - div({ class: 'flex justify-between items-center' }, [ - span({ class: 'font-bold' }, 'Items to Save'), - button({ - class: 'btn btn-sm btn-primary', - onclick: saveAll - }, 'Save All') - ]), - div({ class: 'flex flex-col gap-2' }, items().map(item => - div({ class: 'flex justify-between items-center p-3 bg-base-200 rounded-lg' }, [ - span({}, item.name), - item.saved - ? span({ class: 'badge badge-success' }, '✓ Saved') - : button({ - class: 'btn btn-xs btn-primary', - onclick: () => saveItem(item.id) - }, 'Save') - ]) - )) - ]); -}; -mount(FeedbackDemo, '#demo-feedback'); -``` - -### Error Handling - -
-
-

Live Demo

-
-
-
- -```javascript -const ErrorDemo = () => { - const simulateApiCall = () => { - const success = Math.random() > 0.3; - - if (success) { - Toast('Data loaded successfully!', 'alert-success', 2000); - } else { - Toast('Failed to load data. Please try again.', 'alert-error', 3000); - } - }; - - const simulateNetworkError = () => { - Toast('Network error: Unable to connect to server', 'alert-error', 4000); - }; - - const simulateTimeout = () => { - Toast('Request timeout (5s). Please check your connection.', 'alert-warning', 4000); - }; - - return div({ class: 'flex flex-wrap gap-3 justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: simulateApiCall - }, 'Simulate API Call'), - button({ - class: 'btn btn-error', - onclick: simulateNetworkError - }, 'Network Error'), - button({ - class: 'btn btn-warning', - onclick: simulateTimeout - }, 'Timeout') - ]); -}; -mount(ErrorDemo, '#demo-error'); -``` - -### Custom Messages - -
-
-

Live Demo

-
-
-
- -```javascript -const CustomDemo = () => { - const showCustomToast = (type, message) => { - Toast(message, type, 3000); - }; - - return div({ class: 'flex flex-wrap gap-2 justify-center' }, [ - button({ - class: 'btn btn-info', - onclick: () => showCustomToast('alert-info', '📧 New email received from john@example.com') - }, 'Email'), - button({ - class: 'btn btn-success', - onclick: () => showCustomToast('alert-success', '💰 Payment of $49.99 completed') - }, 'Payment'), - button({ - class: 'btn btn-warning', - onclick: () => showCustomToast('alert-warning', '⚠️ Your session will expire in 5 minutes') - }, 'Session Warning'), - button({ - class: 'btn btn-error', - onclick: () => showCustomToast('alert-error', '🔒 Failed login attempt detected') - }, 'Security Alert') - ]); -}; -mount(CustomDemo, '#demo-custom'); -``` - -### Multiple Toasts - -
-
-

Live Demo

-
-
-
- -```javascript -const MultipleDemo = () => { - const showMultipleToasts = () => { - Toast('First message', 'alert-info', 3000); - setTimeout(() => Toast('Second message', 'alert-success', 3000), 500); - setTimeout(() => Toast('Third message', 'alert-warning', 3000), 1000); - setTimeout(() => Toast('Fourth message', 'alert-error', 3000), 1500); - }; - - return div({ class: 'flex justify-center' }, [ - button({ - class: 'btn btn-primary', - onclick: showMultipleToasts - }, 'Show Multiple Toasts') - ]); -}; -mount(MultipleDemo, '#demo-multiple'); -``` \ No newline at end of file diff --git a/docs/components/tooltip.md b/docs/components/tooltip.md deleted file mode 100644 index 299b343..0000000 --- a/docs/components/tooltip.md +++ /dev/null @@ -1,319 +0,0 @@ -# Tooltip - -Tooltip component for displaying helpful hints and additional information on hover. - -## Tag - -`Tooltip` - -## Props - -| Prop | Type | Default | Description | -| :--- | :--- | :--- | :--- | -| `tip` | `string \| VNode \| Signal` | `-` | Tooltip content to display on hover | -| `class` | `string` | `''` | Additional CSS classes (DaisyUI + Tailwind) | -| `children` | `VNode` | `-` | Element to attach the tooltip to | - -## Styling - -Tooltip supports all **daisyUI Tooltip classes**: - -| Category | Keywords | Description | -| :--- | :--- | :--- | -| Position | `tooltip-top` (default), `tooltip-bottom`, `tooltip-left`, `tooltip-right` | Tooltip position | -| Color | `tooltip-primary`, `tooltip-secondary`, `tooltip-accent`, `tooltip-info`, `tooltip-success`, `tooltip-warning`, `tooltip-error` | Tooltip color variants | - -> For further details, check the [daisyUI Tooltip Documentation](https://daisyui.com/components/tooltip) – Full reference for CSS classes. - -### Example - -```javascript -Tooltip({ tip: "This is a tooltip", class: "tooltip-primary" }, [ - button({ class: "btn" }, "Hover me") -]); -``` - -## Live Examples - -### Basic Tooltip - -
-
-

Live Demo

-
-
-
- -```javascript -const BasicDemo = () => { - return div({ class: 'flex flex-wrap gap-4 justify-center' }, [ - Tooltip({ tip: 'This is a tooltip' }, [ - button({ class: 'btn btn-primary' }, 'Hover me') - ]), - Tooltip({ tip: 'Tooltips can be placed on any element' }, [ - span({ class: 'text-sm cursor-help border-b border-dashed' }, 'Help text') - ]), - Tooltip({ tip: 'Icons can also have tooltips' }, [ - span({ class: 'text-2xl' }, 'ℹ️') - ]) - ]); -}; -mount(BasicDemo, '#demo-basic'); -``` - -### Tooltip Positions - -
-
-

Live Demo

-
-
-
- -```javascript -const PositionsDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center' }, [ - Tooltip({ tip: 'Top tooltip', class: 'tooltip-top' }, [ - button({ class: 'btn btn-sm' }, 'Top') - ]), - Tooltip({ tip: 'Bottom tooltip', class: 'tooltip-bottom' }, [ - button({ class: 'btn btn-sm' }, 'Bottom') - ]), - Tooltip({ tip: 'Left tooltip', class: 'tooltip-left' }, [ - button({ class: 'btn btn-sm' }, 'Left') - ]), - Tooltip({ tip: 'Right tooltip', class: 'tooltip-right' }, [ - button({ class: 'btn btn-sm' }, 'Right') - ]) - ]); -}; -mount(PositionsDemo, '#demo-positions'); -``` - -### Tooltip with Icons - -
-
-

Live Demo

-
-
-
- -```javascript -const IconsDemo = () => { - return div({ class: 'flex flex-wrap gap-8 justify-center' }, [ - Tooltip({ tip: 'Save document' }, [ - button({ class: 'btn btn-ghost btn-circle' }, '💾') - ]), - Tooltip({ tip: 'Edit item' }, [ - button({ class: 'btn btn-ghost btn-circle' }, '✏️') - ]), - Tooltip({ tip: 'Delete permanently' }, [ - button({ class: 'btn btn-ghost btn-circle text-error' }, '🗑️') - ]), - Tooltip({ tip: 'Settings' }, [ - button({ class: 'btn btn-ghost btn-circle' }, '⚙️') - ]) - ]); -}; -mount(IconsDemo, '#demo-icons'); -``` - -### Form Field Tooltips - -
-
-

Live Demo

-
-
-
- -```javascript -const FormDemo = () => { - const username = $(''); - const email = $(''); - - return div({ class: 'flex flex-col gap-4 max-w-md mx-auto' }, [ - div({ class: 'flex items-center gap-2' }, [ - input({ - label: 'Username', - value: username, - placeholder: 'Choose a username', - oninput: (e) => username(e.target.value) - }), - Tooltip({ tip: 'Must be at least 3 characters, letters and numbers only' }, [ - span({ class: 'cursor-help text-info' }, '?') - ]) - ]), - div({ class: 'flex items-center gap-2' }, [ - input({ - label: 'Email', - type: 'email', - value: email, - placeholder: 'Enter your email', - oninput: (e) => email(e.target.value) - }), - Tooltip({ tip: 'We\'ll never share your email with anyone' }, [ - span({ class: 'cursor-help text-info' }, '?') - ]) - ]) - ]); -}; -mount(FormDemo, '#demo-form'); -``` - -### Interactive Tooltip - -
-
-

Live Demo

-
-
-
- -```javascript -const InteractiveDemo = () => { - const tooltipText = $('Hover over the button!'); - - const updateTooltip = (text) => { - tooltipText(text); - setTimeout(() => { - tooltipText('Hover over the button!'); - }, 2000); - }; - - return div({ class: 'flex flex-col gap-4 items-center' }, [ - Tooltip({ tip: () => tooltipText() }, [ - button({ - class: 'btn btn-primary btn-lg', - onclick: () => Toast('Button clicked!', 'alert-info', 2000) - }, 'Interactive Button') - ]), - div({ class: 'flex gap-2 flex-wrap justify-center mt-4' }, [ - button({ - class: 'btn btn-xs', - onclick: () => updateTooltip('You clicked the button!') - }, 'Change Tooltip'), - button({ - class: 'btn btn-xs', - onclick: () => updateTooltip('Try hovering now!') - }, 'Change Again') - ]) - ]); -}; -mount(InteractiveDemo, '#demo-interactive'); -``` - -### Rich Tooltip Content - -
-
-

Live Demo

-
-
-
- -```javascript -const RichDemo = () => { - return div({ class: 'flex flex-wrap gap-4 justify-center' }, [ - Tooltip({ - tip: div({ class: 'text-left p-1' }, [ - div({ class: 'font-bold' }, 'User Info'), - div({ class: 'text-xs' }, 'John Doe'), - div({ class: 'text-xs' }, 'john@example.com'), - div({ class: 'badge badge-xs badge-primary mt-1' }, 'Admin') - ]) - }, [ - button({ class: 'btn btn-outline' }, 'User Profile') - ]), - Tooltip({ - tip: div({ class: 'text-left p-1' }, [ - div({ class: 'font-bold flex items-center gap-1' }, [ - span({}, '⚠️'), - span({}, 'System Status') - ]), - div({ class: 'text-xs' }, 'All systems operational'), - div({ class: 'text-xs text-success' }, '✓ 99.9% uptime') - ]) - }, [ - button({ class: 'btn btn-outline' }, 'System Status') - ]) - ]); -}; -mount(RichDemo, '#demo-rich'); -``` - -### Color Variants - -
-
-

Live Demo

-
-
-
- -```javascript -const ColorsDemo = () => { - return div({ class: 'flex flex-wrap gap-4 justify-center' }, [ - Tooltip({ tip: 'Primary tooltip', class: 'tooltip-primary' }, [ - button({ class: 'btn btn-primary btn-sm' }, 'Primary') - ]), - Tooltip({ tip: 'Secondary tooltip', class: 'tooltip-secondary' }, [ - button({ class: 'btn btn-secondary btn-sm' }, 'Secondary') - ]), - Tooltip({ tip: 'Accent tooltip', class: 'tooltip-accent' }, [ - button({ class: 'btn btn-accent btn-sm' }, 'Accent') - ]), - Tooltip({ tip: 'Info tooltip', class: 'tooltip-info' }, [ - button({ class: 'btn btn-info btn-sm' }, 'Info') - ]), - Tooltip({ tip: 'Success tooltip', class: 'tooltip-success' }, [ - button({ class: 'btn btn-success btn-sm' }, 'Success') - ]), - Tooltip({ tip: 'Warning tooltip', class: 'tooltip-warning' }, [ - button({ class: 'btn btn-warning btn-sm' }, 'Warning') - ]), - Tooltip({ tip: 'Error tooltip', class: 'tooltip-error' }, [ - button({ class: 'btn btn-error btn-sm' }, 'Error') - ]) - ]); -}; -mount(ColorsDemo, '#demo-colors'); -``` - -### All Tooltip Positions - -
-
-

Live Demo

-
-
-
- -```javascript -const AllPositionsDemo = () => { - return div({ class: 'grid grid-cols-3 gap-4 justify-items-center' }, [ - div({ class: 'col-start-2' }, [ - Tooltip({ tip: 'Top tooltip', class: 'tooltip-top' }, [ - button({ class: 'btn btn-sm w-24' }, 'Top') - ]) - ]), - div({ class: 'col-start-1 row-start-2' }, [ - Tooltip({ tip: 'Left tooltip', class: 'tooltip-left' }, [ - button({ class: 'btn btn-sm w-24' }, 'Left') - ]) - ]), - div({ class: 'col-start-3 row-start-2' }, [ - Tooltip({ tip: 'Right tooltip', class: 'tooltip-right' }, [ - button({ class: 'btn btn-sm w-24' }, 'Right') - ]) - ]), - div({ class: 'col-start-2 row-start-3' }, [ - Tooltip({ tip: 'Bottom tooltip', class: 'tooltip-bottom' }, [ - button({ class: 'btn btn-sm w-24' }, 'Bottom') - ]) - ]) - ]); -}; -mount(AllPositionsDemo, '#demo-all-positions'); -``` \ No newline at end of file diff --git a/docs/demo_layout.md b/docs/demo_layout.md index c3ab004..43bce0e 100644 --- a/docs/demo_layout.md +++ b/docs/demo_layout.md @@ -12,26 +12,7 @@ const accItems = $([ mount( div({ class: 'flex flex-col gap-8' }, [ - // Example 1: radio type with arrow variant - Accordion({ - variant: 'arrow', - items: [ - { title: 'Radio with arrow', content: 'This uses collapse‑arrow' }, - { title: 'Open by default', content: 'This one is open', open: true }, - 'Simple string item (no content)' - ] - }), - // Example 2: details type with plus variant - Accordion({ - type: 'details', - variant: 'plus', - items: [ - { title: 'Details with plus', content: 'Uses the native
element' }, - { title: 'Another detail', content: 'Accordion style but with plus icon' } - ] - }), - // Example 3: reactive items (signal) - Accordion({ items: accItems }) + Accordion({items: accItems, class: "collapse-arrow bg-base-100 border border-base-300"}) ]), '#demo-accordion' ); @@ -45,14 +26,14 @@ const drawerOpen = $(false); mount( div({}, [ - Button({ class: 'btn', onclick: () => drawerOpen(true) }, 'Open Drawer'), - Drawer({ open: drawerOpen, side: Menu({ items: [ + Drawer({ open: drawerOpen, id: 'drw', side: Menu({ items: [ { label: 'Dashboard', onclick: () => drawerOpen(false) }, { label: 'Settings' }, { label: 'Help' } ]}) }, [ - div({ class: 'p-4' }, [ + div({ class: 'p-4 border border-base-300' }, [ h3({ class: 'text-lg font-bold' }, 'Main Content'), + Button({ class: 'btn', onclick: () => drawerOpen(true) }, 'Open Drawer'), p({}, 'This is the main page. Click the button above to open the drawer.') ]) ]) @@ -67,25 +48,35 @@ mount( ```js mount( div({ class: 'flex gap-4' }, [ - // Example 1: automatic items - Dropdown({ - trigger: 'Options', - items: [ - { label: 'Edit', onclick: () => console.log('Edit') }, - { label: 'Delete', onclick: () => console.log('Delete') }, - { label: 'Archive' } - ] - }), - // Example 2: custom children (manual) - Dropdown({ trigger: 'More' }, [ - h('ul', { class: 'menu dropdown-content bg-base-100 rounded-box w-40 p-2 shadow' }, [ - li({}, a({}, 'Profile')), - li({}, a({}, 'Logout')) + // Example 1: con Menu (cierre automático al hacer clic en un ítem) + Dropdown({ label: 'Options', class: 'dropdown' }, [ + Menu({ + items: [ + { label: 'Edit', onclick: () => close() }, + { label: 'Delete', onclick: () => close() }, + { label: 'Archive' } + ], + class: 'dropdown-content menu bg-base-100 rounded-box w-52 p-2 shadow z-1' + }) + ]), + // Example 2: manual (cerrar ítems con blur) + Dropdown({ label: 'More', class: 'dropdown' }, [ + ul({ class: 'dropdown-content menu bg-base-100 rounded-box w-40 p-2 shadow' }, [ + li({}, a({ + tabindex: '-1', + href: '#', + onclick: (e) => { e.preventDefault(); close(); } + }, 'Profile')), + li({}, a({ + tabindex: '-1', + href: '#', + onclick: (e) => { e.preventDefault(); close(); } + }, 'Logout')) ]) ]) ]), '#demo-dropdown' -); +) ``` ## Fab @@ -94,8 +85,11 @@ mount( ```js mount( div({ class: 'flex gap-4' }, [ - Fab({ class: 'fab-bottom-left' }, span({ class: 'icon-[lucide--plus]' })), - Fab({ class: 'fab-top-right', style: 'position:relative' }, span({ class: 'icon-[lucide--settings]' })) + Fab({ class: 'btn-lg btn-circle btn-secondary', icon:"R" }, [ + Button({},"C"), + Button({},"B"), + Button({},"A"), + ]) ]), '#demo-fab' ); @@ -106,13 +100,13 @@ mount( ```js mount( - div({ class: 'flex gap-4' }, [ - Fieldset({ legend: 'Personal Info' }, [ + div({ class: 'flex gap-4 bg' }, [ + Fieldset({ label: 'Personal Info', class:"bg-base-200 border-base-300 rounded-box w-xs border gap-3 p-4" }, [ Input({ label: 'Name', float: true, value: $('') }), Select({ label: 'Country', float: true, items: ['Spain', 'France', 'Italy'], value: $('') }) ]), - Fieldset({ class: 'bg-base-200 p-4 rounded-box' }, [ - div({}, 'Any content without legend') + Fieldset({ class: 'bg-base-200 p-4 rounded-box' , label: "Any content"}, [ + div({}, 'Any content') ]) ]), '#demo-fieldset' @@ -134,13 +128,7 @@ const menuItems = $([ mount( div({ class: 'flex gap-4' }, [ - // Example 1: automatic from items (signal) - Menu({ items: menuItems, class: 'menu-vertical' }), - // Example 2: manual children - Menu({ class: 'menu-horizontal bg-base-200 rounded-box' }, [ - li({}, a({}, 'One')), - li({}, a({}, 'Two')) - ]) + Menu({ items: menuItems, class: 'bg-base-200 rounded-box w-56' }), ]), '#demo-menu' ); @@ -173,29 +161,10 @@ const tabsData = $([ { label: 'Tab A', content: 'Content of tab A' }, { label: 'Tab B', content: 'Content of tab B', closable: true }, { label: 'Tab C', content: 'Content of tab C' } -]); +]) mount( - div({ class: 'flex flex-col gap-4' }, [ - // Example 1: reactive tabs with closable - Tabs({ - items: tabsData, - activeIndex: activeTab, - class: "tabs-box", - onClose: (idx) => { - const newTabs = tabsData().filter((_, i) => i !== idx); - tabsData(newTabs); - if (activeTab() >= newTabs.length) activeTab(Math.max(0, newTabs.length - 1)); - } - }), - // Example 2: manual tabs with custom content - Tabs({}, [ - a({ class: () => `tab ${activeTab() === 0 ? 'tab-active' : ''}`, onclick: () => activeTab(0) }, 'Manual A'), - a({ class: () => `tab ${activeTab() === 1 ? 'tab-active' : ''}`, onclick: () => activeTab(1) }, 'Manual B'), - div({ class: 'tab-content', style: () => `display:${activeTab() === 0 ? 'block' : 'none'}` }, 'Content for manual A'), - div({ class: 'tab-content', style: () => `display:${activeTab() === 1 ? 'block' : 'none'}` }, 'Content for manual B') - ]) - ]), + Tabs({ class: 'tabs-box', items: tabsData, activeIndex: activeTab }), '#demo-tabs' -); +) ``` \ No newline at end of file diff --git a/docs/sigpro-ui.min.css b/docs/sigpro-ui.min.css index ed139df..28c1be8 100644 --- a/docs/sigpro-ui.min.css +++ b/docs/sigpro-ui.min.css @@ -1,2 +1,2 @@ /*! 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-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-space-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-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-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-duration: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-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--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:calc(1.5 / 1);--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:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--drop-shadow-2xl:0 25px 25px #00000026;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl:64px;--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)}}@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;-webkit-text-decoration: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}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}@property --radialprogress{syntax:"";inherits:true;initial-value:0%}:root:not(span){overflow:var(--page-overflow)}:root{background:var(--page-scroll-bg,var(--root-bg));--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset) ; else: unset)}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background:var(--page-scroll-bg,var(--root-bg));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(25% .006 285);--color-primary:oklch(25% .006 285);--color-primary-content:oklch(98% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(98% 0 0);--color-accent:oklch(96% 0 0);--color-accent-content:oklch(25% .006 285);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(62% .17 163);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .18 84);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(60% .25 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}:where(.drawer-side){overflow:hidden}.drawer-side{pointer-events:none;visibility:hidden;z-index:10;overscroll-behavior:contain;opacity:0;width:100%;transition:opacity .2s ease-out .1s allow-discrete, visibility .3s ease-out .1s allow-discrete;inset-inline-start:0;background-color:#0000;grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));grid-row-start:1;grid-column-start:1;place-items:flex-start start;height:100dvh;display:grid;position:fixed;top:0}.drawer-side>.drawer-overlay{cursor:pointer;background-color:oklch(0% 0 0/.4);place-self:stretch stretch;position:sticky;top:0}.drawer-side>*{grid-row-start:1;grid-column-start:1}.drawer-side>:not(.drawer-overlay){will-change:transform;transition:translate .3s ease-out,width .2s ease-out;translate:-100%}[dir=rtl] :is(.drawer-side>:not(.drawer-overlay)){translate:100%}.fab{pointer-events:none;z-index:999;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;inset-inline-end:1rem;flex-direction:column-reverse;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem}.fab>*{pointer-events:auto;align-items:center;gap:.5rem;display:flex}.fab>:hover,.fab>:has(:focus-visible){z-index:1}.fab>[tabindex]:first-child{transition-property:opacity,visibility,rotate;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:grid;position:relative}.fab .fab-close,.fab .fab-main-action{inset-inline-end:0;position:absolute;bottom:0}:is(.fab:focus-within:has(.fab-close),.fab:focus-within:has(.fab-main-action))>[tabindex]{opacity:0;rotate:90deg}.fab:focus-within>[tabindex]:first-child{pointer-events:none}.fab:focus-within>:nth-child(n+2){visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:1}.fab>:nth-child(n+2){visibility:hidden;--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0;transition-property:opacity,scale,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fab>:nth-child(n+2).fab-main-action,.fab>:nth-child(n+2).fab-close{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.fab>:nth-child(3){transition-delay:30ms}.fab>:nth-child(4){transition-delay:60ms}.fab>:nth-child(5){transition-delay:90ms}.fab>:nth-child(6){transition-delay:.12s}.drawer-toggle{appearance:none;opacity:0;width:0;height:0;position:fixed}:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:currentColor oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}@supports (color:color-mix(in lab, red, red)){:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}}:where(:root:has(.drawer-toggle:checked)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media (prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.tab\!{cursor:pointer!important;appearance:none!important;text-align:center!important;webkit-user-select:none!important;-webkit-user-select:none!important;user-select:none!important;flex-wrap:wrap!important;justify-content:center!important;align-items:center!important;display:inline-flex!important;position:relative!important}@media (hover:hover){.tab\!:hover{color:var(--color-base-content)!important}}.tab\!{--tab-p:.75rem!important;--tab-bg:var(--color-base-100)!important;--tab-border-color:var(--color-base-300)!important;--tab-radius-ss:0!important;--tab-radius-se:0!important;--tab-radius-es:0!important;--tab-radius-ee:0!important;--tab-order:0!important;--tab-radius-min:calc(.75rem - var(--border))!important;--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min))!important;--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px)!important;order:var(--tab-order)!important;height:var(--tab-height)!important;padding-inline:var(--tab-p)!important;border-color:#0000!important;font-size:.875rem!important}.tab\!:is(input[type=radio]){min-width:fit-content!important}.tab\!:is(input[type=radio]):after{--tw-content:attr(aria-label)!important;content:var(--tw-content)!important}.tab\!:is(label){position:relative!important}.tab\!:is(label) input{cursor:pointer!important;appearance:none!important;opacity:0!important;position:absolute!important;inset:0!important}:is(.tab\!:checked,.tab\!:is(label:has(:checked)),.tab\!:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block!important}.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)!important}@supports (color:color-mix(in lab, red, red)){.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)!important}}.tab\!:not(input):empty{cursor:default!important;flex-grow:1!important}.tab\!:focus{--tw-outline-style:none!important;outline-style:none!important}@media (forced-colors:active){.tab\!:focus{outline-offset:2px!important;outline:2px solid #0000!important}}.tab\!:focus-visible,.tab\!:is(label:has(:checked:focus-visible)){outline-offset:-5px!important;outline:2px solid!important}.tab\![disabled]{pointer-events:none!important;opacity:.4!important}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.floating-label{display:block;position:relative}.floating-label input{display:block}.floating-label input::placeholder,.floating-label textarea::placeholder{transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out}.floating-label>span{z-index:1;background-color:var(--color-base-100);opacity:0;inset-inline-start:.75rem;top:calc(var(--size-field,.25rem) * 10 / 2);pointer-events:none;border-radius:2px;padding-inline:.25rem;font-size:.875rem;line-height:1;transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out;position:absolute;translate:0 -50%}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown))) ::placeholder{opacity:0;pointer-events:auto;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown)))>span{opacity:1;pointer-events:auto;z-index:2;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}.floating-label:has(:disabled,[disabled])>span{opacity:0}.floating-label:has(.input-xs,.select-xs,.textarea-xs) span{top:calc(var(--size-field,.25rem) * 6 / 2);font-size:.6875rem}.floating-label:has(.input-sm,.select-sm,.textarea-sm) span{top:calc(var(--size-field,.25rem) * 8 / 2);font-size:.75rem}.floating-label:has(.input-md,.select-md,.textarea-md) span{top:calc(var(--size-field,.25rem) * 10 / 2);font-size:.875rem}.floating-label:has(.input-lg,.select-lg,.textarea-lg) span{top:calc(var(--size-field,.25rem) * 12 / 2);font-size:1.125rem}.floating-label:has(.input-xl,.select-xl,.textarea-xl) span{top:calc(var(--size-field,.25rem) * 14 / 2);font-size:1.375rem}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);--size:calc(var(--size-field,.25rem) * 10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-noise:var(--fx-noise)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}.validator-hint{visibility:hidden;margin-top:.5rem;font-size:.75rem}.validator:user-valid{--input-color:var(--color-success)}.validator:user-valid:focus{--input-color:var(--color-success)}.validator:user-valid:checked{--input-color:var(--color-success)}.validator:user-valid[aria-checked=true]{--input-color:var(--color-success)}.validator:user-valid:focus-within{--input-color:var(--color-success)}.validator:has(:user-valid){--input-color:var(--color-success)}.validator:has(:user-valid):focus{--input-color:var(--color-success)}.validator:has(:user-valid):checked{--input-color:var(--color-success)}.validator:has(:user-valid)[aria-checked=true]{--input-color:var(--color-success)}.validator:has(:user-valid):focus-within{--input-color:var(--color-success)}.validator:user-invalid{--input-color:var(--color-error)}.validator:user-invalid:focus{--input-color:var(--color-error)}.validator:user-invalid:checked{--input-color:var(--color-error)}.validator:user-invalid[aria-checked=true]{--input-color:var(--color-error)}.validator:user-invalid:focus-within{--input-color:var(--color-error)}.validator:user-invalid~.validator-hint{visibility:visible;color:var(--color-error)}.validator:has(:user-invalid){--input-color:var(--color-error)}.validator:has(:user-invalid):focus{--input-color:var(--color-error)}.validator:has(:user-invalid):checked{--input-color:var(--color-error)}.validator:has(:user-invalid)[aria-checked=true]{--input-color:var(--color-error)}.validator:has(:user-invalid):focus-within{--input-color:var(--color-error)}.validator:has(:user-invalid)~.validator-hint{visibility:visible;color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))),:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):checked,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))[aria-checked=true],:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus-within{--input-color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{visibility:visible;color:var(--color-error)}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size) / 10);--radialprogress:calc(var(--value) * 1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0);webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness) / 2);transform:rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input{--size:calc(var(--size-field,.25rem) * 10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.indicator{width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--indicator-t,0);bottom:var(--indicator-b,auto);left:var(--indicator-s,auto);right:var(--indicator-e,0);translate:var(--indicator-x,50%) var(--indicator-y,-50%);position:absolute}.table{border-collapse:separate;--tw-border-spacing-x:calc(.25rem * 0);--tw-border-spacing-y:calc(.25rem * 0);width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:"";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.chat-bubble{border-radius:var(--radius-field);background-color:var(--color-base-300);width:fit-content;color:var(--color-base-content);grid-row-end:3;min-width:2.5rem;max-width:90%;min-height:2rem;padding-block:.5rem;padding-inline:1rem;display:block;position:relative}.chat-bubble:before{background-color:inherit;content:"";width:.75rem;height:.75rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-chat);-webkit-mask-image:var(--mask-chat);mask-image:var(--mask-chat);position:absolute;bottom:0;-webkit-mask-position:0 -1px;mask-position:0 -1px;-webkit-mask-size:.8125rem;mask-size:.8125rem}.select{border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{--size:calc(var(--size-field,.25rem) * 10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0, 1fr)) auto var(--timeline-row-end,minmax(0, 1fr));grid-template-columns:var(--timeline-col-start,minmax(0, 1fr)) auto var(--timeline-col-end,minmax(0, 1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border) solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox{border:var(--border) solid var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 0 #0000 inset, 0 0 #0000;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:0deg}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;display:inline-flex;position:relative}.rating input{appearance:none;border:none}.rating :where(*){background-color:var(--color-base-content);opacity:.2;border-radius:0;width:1.5rem;height:1.5rem}@media (prefers-reduced-motion:no-preference){.rating :where(*){animation:.25s ease-out rating}}.rating :where(*):is(input){cursor:pointer}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating input[type=radio]:checked{background-image:none}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.rating\!{vertical-align:middle!important;display:inline-flex!important;position:relative!important}.rating\! input{appearance:none!important;border:none!important}.rating\! :where(*){background-color:var(--color-base-content)!important;opacity:.2!important;border-radius:0!important;width:1.5rem!important;height:1.5rem!important}@media (prefers-reduced-motion:no-preference){.rating\! :where(*){animation:.25s ease-out rating!important}}.rating\! :where(*):is(input){cursor:pointer!important}.rating\! .rating-hidden{background-color:#0000!important;width:.5rem!important}.rating\! input[type=radio]:checked{background-image:none!important}.rating\! :checked,.rating\! [aria-checked=true],.rating\! [aria-current=true],.rating\! :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1!important}.rating\! :focus-visible{scale:1.1!important}@media (prefers-reduced-motion:no-preference){.rating\! :focus-visible{transition:scale .2s ease-out!important}}.rating\! :active:focus{animation:none!important;scale:1.1!important}.navbar{align-items:center;width:100%;min-height:4rem;padding:.5rem;display:flex}.drawer{grid-auto-columns:max-content auto;width:100%;display:grid;position:relative}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.stats{border-radius:var(--radius-box);grid-auto-flow:column;display:inline-grid;position:relative;overflow-x:auto}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border) solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.timeline-end{grid-area:3/1/4/4;place-self:flex-start center;margin:.25rem}.timeline-start{grid-area:1/1/2/4;place-self:flex-end center;margin:.25rem}.stat-figure{grid-row:1/span 3;grid-column-start:2;place-self:center flex-end}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.drawer-content{grid-row-start:1;grid-column-start:2;min-width:0}.timeline-middle{grid-row-start:2;grid-column-start:2}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-desc{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-desc{font-size:.75rem}.stat-title{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-title{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-title{font-size:.75rem}.stat-actions{white-space:nowrap;grid-column-start:1}.chat-image{grid-row:span 2/span 2;align-self:flex-end}.chat-footer{grid-row-start:3;gap:.25rem;font-size:.6875rem;display:flex}.chat-header{grid-row-start:1;gap:.25rem;font-size:.6875rem;display:flex}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.divider{--divider-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.fieldset-legend{color:var(--color-base-content);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:-.25rem;padding-block:.5rem;font-weight:600;display:flex}.carousel-item{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-block}@supports (color:color-mix(in lab, red, red)){.status{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.status{vertical-align:middle;color:#0000004d;background-position:50%;background-repeat:no-repeat}@supports (color:color-mix(in lab, red, red)){.status{color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.status{background-image:radial-gradient(circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * .5)), #0000);box-shadow:0 2px 3px -1px}@supports (color:color-mix(in lab, red, red)){.status{box-shadow:0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000)}}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.kbd{border-radius:var(--radius-field);background-color:var(--color-base-200);vertical-align:middle;border:var(--border) solid var(--color-base-content);justify-content:center;align-items:center;padding-inline:.5em;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.kbd{border:var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{border-bottom:calc(var(--border) + 1px) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.kbd{border-bottom:calc(var(--border) + 1px) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{--size:calc(var(--size-selector,.25rem) * 6);height:var(--size);min-width:var(--size);font-size:.875rem}.text-rotate{vertical-align:bottom;white-space:nowrap;--duration:var(--tw-duration);transition-property:none;display:inline-block;overflow:hidden}.text-rotate>*{height:calc(var(--items,1) * 100%);justify-items:start;display:grid}.text-rotate>:has(:nth-child(2)){--items:2;animation:rotator var(--duration,10s) linear(0 0% 49%, .5 50% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(3)){--items:3;animation:rotator var(--duration,10s) linear(0 0% 32%, .333333 33% 65%, .666666 66% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(4)){--items:4;animation:rotator var(--duration,10s) linear(0 0% 24%, .25 25% 49%, .5 50% 74%, .75 75% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(5)){--items:5;animation:rotator var(--duration,10s) linear(0 0% 19%, .2 20% 39%, .4 40% 59%, .6 60% 79%, .8 80% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(6)){--items:6;animation:rotator var(--duration,10s) linear(0 0% 15%, .16666 16% 32%, .333333 33% 49%, .5 50% 65%, .666666 66% 82%, .833333 83% 99%, 1 100% 100%) infinite}.text-rotate>*>*{clip-path:inset(.5px 0);align-content:baseline}.text-rotate>*>:first-child{translate:var(--first-item-position)}.text-rotate:hover>*{animation-play-state:paused}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem) * 10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stat:not(:last-child){border-block-end:none}.navbar-end{justify-content:flex-end;align-items:center;width:50%;display:inline-flex}.navbar-start{justify-content:flex-start;align-items:center;width:50%;display:inline-flex}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.navbar-center{flex-shrink:0;align-items:center;display:inline-flex}.fieldset-label{color:var(--color-base-content);align-items:center;gap:.375rem;display:flex}@supports (color:color-mix(in lab, red, red)){.fieldset-label{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.fieldset-label:has(input){cursor:pointer}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){.carousel{scroll-behavior:smooth}}.carousel::-webkit-scrollbar{display:none}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.fieldset{grid-template-columns:1fr;grid-auto-rows:max-content;gap:.375rem;padding-block:.25rem;font-size:.75rem;display:grid}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e");grid-auto-rows:min-content;column-gap:.75rem;padding-block:.25rem;display:grid}.card-actions{flex-wrap:wrap;align-items:flex-start;gap:.5rem;display:flex}.card-title{font-size:var(--cardtitle-fs,1.125rem);align-items:center;gap:.5rem;font-weight:600;display:flex}.mask{vertical-align:middle;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.timeline-box{border:var(--border) solid;border-radius:var(--radius-box);border-color:var(--color-base-300);background-color:var(--color-base-100);padding-block:.5rem;padding-inline:1rem;font-size:.75rem;box-shadow:0 1px 2px oklch(0% 0 0/.05)}.btn-accent{--btn-color:var(--color-accent);--btn-fg:var(--color-accent-content)}.btn-error{--btn-color:var(--color-error);--btn-fg:var(--color-error-content)}.btn-info{--btn-color:var(--color-info);--btn-fg:var(--color-info-content)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}.btn-success{--btn-color:var(--color-success);--btn-fg:var(--color-success-content)}.btn-warning{--btn-color:var(--color-warning);--btn-fg:var(--color-warning-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}:where(.drawer-toggle:checked~.drawer-side){pointer-events:auto;visibility:visible;opacity:1;overflow-y:auto}:where(.drawer-toggle:checked~.drawer-side)>:not(.drawer-overlay){translate:0%}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline:2px solid}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn-disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn-disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn-disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.tab-disabled{pointer-events:none;opacity:.4}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.tabs-lift{--tabs-height:auto;--tabs-direction:row}.tabs-lift>.tab{--tab-border:0 0 var(--border) 0;--tab-radius-ss:var(--tab-radius-limit);--tab-radius-se:var(--tab-radius-limit);--tab-radius-es:0;--tab-radius-ee:0;--tab-paddings:var(--border) var(--tab-p) 0 var(--tab-p);--tab-border-colors:#0000 #0000 var(--tab-border-color) #0000;--tab-corner-width:calc(100% + var(--tab-radius-limit) * 2);--tab-corner-height:var(--tab-radius-limit);--tab-corner-position:top left, top right;border-width:var(--tab-border);padding:var(--tab-paddings);border-color:var(--tab-border-colors);border-start-start-radius:var(--tab-radius-ss);border-start-end-radius:var(--tab-radius-se);border-end-end-radius:var(--tab-radius-ee);border-end-start-radius:var(--tab-radius-es)}.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked)){--tab-border:var(--border) var(--border) 0 var(--border);--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color);--tab-paddings:0 calc(var(--tab-p) - var(--border)) var(--border) calc(var(--tab-p) - var(--border));--tab-inset:auto auto 0 auto;--radius-start:radial-gradient(circle at top left, var(--tab-radius-grad));--radius-end:radial-gradient(circle at top right, var(--tab-radius-grad));background-color:var(--tab-bg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):before{z-index:1;content:"";width:var(--tab-corner-width);height:var(--tab-corner-height);background-position:var(--tab-corner-position);background-image:var(--radius-start), var(--radius-end);background-size:var(--tab-radius-limit) var(--tab-radius-limit);inset:var(--tab-inset);background-repeat:no-repeat;display:block;position:absolute}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{--radius-start:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{transform:rotateY(180deg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{--radius-end:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{transform:rotateY(180deg)}.tabs-lift:has(>.tab-content)>.tab:first-child:not(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color)}.tabs-lift>.tab-content{--tabcontent-margin:calc(-1 * var(--border)) 0 0 0;--tabcontent-radius-ss:0;--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box)}:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:first-child,:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:nth-child(n+3){--tabcontent-radius-ss:var(--radius-box)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.tabs-border>.tab{--tab-border-color:#0000 #0000 var(--tab-border-color) #0000;border-radius:var(--radius-field);position:relative}.tabs-border>.tab:before{content:"";background-color:var(--tab-border-color);border-radius:var(--radius-field);width:80%;height:3px;transition:background-color .2s;position:absolute;bottom:0;left:10%}:is(.tabs-border>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-border>.tab:is(input:checked),.tabs-border>.tab:is(label:has(:checked))):before{--tab-border-color:currentColor;border-top:3px solid}.menu-horizontal{flex-direction:row;display:inline-flex}.menu-horizontal>li:not(.menu-title)>details>ul{transform-origin:top;border-radius:var(--radius-box);background-color:var(--color-base-100);opacity:0;margin-inline-start:0;margin-top:1rem;padding-block:.5rem;padding-inline-end:.5rem;position:absolute;scale:.95;box-shadow:0 1px 3px oklch(0% 0 0/.1),0 1px 2px -1px oklch(0% 0 0/.1)}@media (prefers-reduced-motion:no-preference){@starting-style{.menu-horizontal>li:not(.menu-title)>details>ul{opacity:0;scale:.95}}.menu-horizontal>li:not(.menu-title)>details>ul{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s menu}}.menu-horizontal>li:not(.menu-title)>details[open]>ul{opacity:1;scale:1}.menu-horizontal>li>details>ul:before{--tw-content:none;content:var(--tw-content)}.menu-vertical{flex-direction:column;display:inline-flex}.menu-vertical>li:not(.menu-title)>details>ul{background-color:revert-layer;border-radius:revert-layer;animation:revert-layer;box-shadow:revert-layer;margin-inline-start:1rem;margin-top:0;padding-block:0;padding-inline-end:0;transition:revert-layer;position:relative}.checkbox:disabled,.radio:disabled{cursor:not-allowed;opacity:.2}.rating.rating-xs :where(:not(.rating-hidden)){width:1rem;height:1rem}.rating.rating-sm :where(:not(.rating-hidden)){width:1.25rem;height:1.25rem}.rating.rating-md :where(:not(.rating-hidden)){width:1.5rem;height:1.5rem}.rating.rating-lg :where(:not(.rating-hidden)){width:1.75rem;height:1.75rem}.rating.rating-xl :where(:not(.rating-hidden)){width:2rem;height:2rem}.rating\!.rating-xs :where(:not(.rating-hidden)){width:1rem!important;height:1rem!important}.rating\!.rating-sm :where(:not(.rating-hidden)){width:1.25rem!important;height:1.25rem!important}.rating\!.rating-md :where(:not(.rating-hidden)){width:1.5rem!important;height:1.5rem!important}.rating\!.rating-lg :where(:not(.rating-hidden)){width:1.75rem!important;height:1.75rem!important}.rating\!.rating-xl :where(:not(.rating-hidden)){width:2rem!important;height:2rem!important}:where(.navbar){position:relative}.tooltip-bottom>.tooltip-content,.tooltip-bottom[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem));inset:var(--tt-off) auto auto 50%}.tooltip-bottom:after{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem)) rotate(180deg);inset:var(--tt-tail) auto auto 50%}.tooltip-left>.tooltip-content,.tooltip-left[data-tip]:before{transform:translateX(calc(var(--tt-pos,.25rem) - .25rem)) translateY(-50%);inset:50% var(--tt-off) auto auto}.tooltip-left:after{transform:translateX(var(--tt-pos,.25rem)) translateY(-50%) rotate(-90deg);inset:50% calc(var(--tt-tail) + 1px) auto auto}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translateX(calc(var(--tt-pos,-.25rem) + .25rem)) translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translateX(var(--tt-pos,-.25rem)) translateY(-50%) rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.tooltip-top>.tooltip-content,.tooltip-top[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip-top:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.dropdown-right{--anchor-h:right;--anchor-v:span-bottom}.dropdown-right .dropdown-content{transform-origin:0;inset-inline-start:100%;top:0;bottom:auto}.dropdown-left{--anchor-h:left;--anchor-v:span-bottom}.dropdown-left .dropdown-content{transform-origin:100%;inset-inline-end:100%;top:0;bottom:auto}.dropdown-end{--anchor-h:span-left}.dropdown-end :where(.dropdown-content){inset-inline-end:0;translate:0}[dir=rtl] :is(.dropdown-end :where(.dropdown-content)){translate:0}.dropdown-end.dropdown-left{--anchor-h:left;--anchor-v:span-top}.dropdown-end.dropdown-left .dropdown-content{top:auto;bottom:0}.dropdown-end.dropdown-right{--anchor-h:right;--anchor-v:span-top}.dropdown-end.dropdown-right .dropdown-content{top:auto;bottom:0}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.dropdown-top{--anchor-v:top}.dropdown-top .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn-active{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);isolation:isolate}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.tabs-box{background-color:var(--color-base-200);--tabs-box-radius:calc(3 * var(--radius-field));border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)));box-shadow:0 -.5px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 .5px oklch(0% 0 0 / calc(var(--depth) * .05)) inset;padding:.25rem}.tabs-box>.tab{border-radius:var(--radius-field);border-style:none}.tabs-box>.tab:focus-visible,.tabs-box>.tab:is(label:has(:checked:focus-visible)){outline-offset:2px}.tabs-box>.tab:focus-visible{z-index:1}.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){background-color:var(--tab-bg,var(--color-base-100));box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral)}@supports (color:color-mix(in lab, red, red)){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000)}}@media (forced-colors:active){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){border:1px solid}}.tabs-box>.tab-content{height:calc(100% - var(--tab-height) + var(--border) - .5rem);border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)) - var(--border));margin-top:.25rem}.timeline-horizontal{flex-direction:row}.timeline-horizontal>li{align-items:center}.timeline-horizontal>li>hr{width:100%;height:.25rem}.timeline-horizontal>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline-horizontal>li>hr:last-child{grid-area:2/3/auto/none}.timeline-horizontal .timeline-start{grid-area:1/1/2/4;place-self:flex-end center}.timeline-horizontal .timeline-end{grid-area:3/1/4/4;place-self:flex-start center}.timeline-horizontal:has(.timeline-middle)>li>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-horizontal:has(.timeline-middle)>li>hr:last-child,.timeline-horizontal:not(:has(.timeline-middle)) :first-child>hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline-horizontal:not(:has(.timeline-middle)) :last-child>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-vertical{flex-direction:column}.timeline-vertical>li{--timeline-row-start:minmax(0, 1fr);--timeline-row-end:minmax(0, 1fr);justify-items:center}.timeline-vertical>li>hr{width:.25rem;height:100%}.timeline-vertical>li>hr:first-child{grid-row-start:1;grid-column-start:2}.timeline-vertical>li>hr:last-child{grid-area:3/2/none}.timeline-vertical .timeline-start{grid-area:1/1/4/2;place-self:center flex-end}.timeline-vertical .timeline-end{grid-area:1/3/4/4;place-self:center flex-start}.timeline-vertical:has(.timeline-middle)>li>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical:has(.timeline-middle)>li>hr:last-child,.timeline-vertical:not(:has(.timeline-middle)) :first-child>hr:last-child{border-top-left-radius:var(--radius-selector);border-top-right-radius:var(--radius-selector);border-bottom-right-radius:0;border-bottom-left-radius:0}.timeline-vertical:not(:has(.timeline-middle)) :last-child>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical.timeline-snap-icon>li{--timeline-col-start:minmax(0, 1fr);--timeline-row-start:.5rem}.timeline-compact{--timeline-row-start:0}.timeline-compact .timeline-start{grid-area:3/1/4/4;place-self:flex-start center}.timeline-compact li:has(.timeline-start) .timeline-end{grid-row-start:auto;grid-column-start:none}.timeline-compact.timeline-vertical>li{--timeline-col-start:0}.timeline-compact.timeline-vertical .timeline-start{grid-area:1/3/4/4;place-self:center flex-start}.timeline-compact.timeline-vertical li:has(.timeline-start) .timeline-end{grid-row-start:none;grid-column-start:auto}.drawer-end{grid-auto-columns:auto max-content}.drawer-end>.drawer-toggle~.drawer-content{grid-column-start:1}.drawer-end>.drawer-toggle~.drawer-side{grid-column-start:2;justify-items:end}.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay){translate:100%}[dir=rtl] :is(.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay)){translate:-100%}.drawer-end>.drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){translate:0%}.input-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:max(var(--font-size,1.125rem), 1.125rem)}.input-lg[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-md{--size:calc(var(--size-field,.25rem) * 10);font-size:max(var(--font-size,.875rem), .875rem)}.input-md[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:max(var(--font-size,.75rem), .75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:max(var(--font-size,.6875rem), .6875rem)}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.modal-bottom{place-items:end}.modal-bottom .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.modal-middle{place-items:center}.modal-middle .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:.98}.modal-top{place-items:start}.modal-top .modal-box{--modal-tl:0;--modal-tr:0;--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 -100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-square{width:var(--size);height:var(--size);padding-inline:0}.btn-wide{width:100%;max-width:16rem}.btn-block{width:100%}.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{rotate:45deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-on,.swap-rotate.swap-active .swap-on{rotate:0deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-off,.swap-rotate.swap-active .swap-off{rotate:-45deg}.swap-flip{transform-style:preserve-3d;perspective:20rem}.swap-flip .swap-on,.swap-flip .swap-indeterminate,.swap-flip input:indeterminate~.swap-on{backface-visibility:hidden;transform:rotateY(180deg)}.swap-flip input:is(:checked,:indeterminate)~.swap-on,.swap-flip.swap-active .swap-on{transform:rotateY(0)}.swap-flip input:is(:checked,:indeterminate)~.swap-off,.swap-flip.swap-active .swap-off{backface-visibility:hidden;opacity:1;transform:rotateY(-180deg)}.stats-horizontal{grid-auto-flow:column;overflow-x:auto}.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stats-horizontal .stat:not(:last-child){border-block-end:none}.stats-vertical{grid-auto-flow:row;overflow-y:auto}.stats-vertical .stat:not(:last-child){border-inline-end:none;border-block-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-vertical .stat:not(:last-child){border-block-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.menu-lg :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-lg :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:1rem;font-size:1.125rem}.menu-lg .menu-title{padding-block:.75rem;padding-inline:1.5rem}.menu-md :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-md :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:.75rem;font-size:.875rem}.menu-md .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-sm :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-sm :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.625rem;font-size:.75rem}.menu-sm .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-xs :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-xs :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.5rem;font-size:.6875rem}.menu-xs .menu-title{padding-block:.25rem;padding-inline:.5rem}.badge-dash{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-style:dashed;border-color:currentColor}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.badge-outline{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-color:currentColor}.table-zebra tbody tr:where(:nth-child(2n)),.table-zebra tbody tr:where(:nth-child(2n)) :where(.table-pin-cols tr th){background-color:var(--color-base-200)}@media (hover:hover){:is(.table-zebra tbody tr.row-hover,.table-zebra tbody tr.row-hover:where(:nth-child(2n))):hover{background-color:var(--color-base-300)}}.skeleton-text{webkit-background-clip:text;color:#0000;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(105deg, var(--color-base-content) 0% 40%, var(--color-base-content) 50%, var(--color-base-content) 60% 100%)}@supports (color:color-mix(in lab, red, red)){.skeleton-text{background-image:linear-gradient(105deg, color-mix(in oklab, var(--color-base-content) 20%, transparent) 0% 40%, var(--color-base-content) 50%, color-mix(in oklab, var(--color-base-content) 20%, transparent) 60% 100%)}}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mask-circle{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-heart{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e")}.mask-star{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-star-2{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e")}.checkbox-lg{--size:calc(var(--size-selector,.25rem) * 7);padding:.3125rem}.checkbox-md{--size:calc(var(--size-selector,.25rem) * 6);padding:.25rem}.checkbox-sm{--size:calc(var(--size-selector,.25rem) * 5);padding:.1875rem}.checkbox-xs{--size:calc(var(--size-selector,.25rem) * 4);padding:.125rem}.radio-lg{padding:.3125rem}.radio-lg[type=radio]{--size:calc(var(--size-selector,.25rem) * 7)}.radio-md{padding:.25rem}.radio-md[type=radio]{--size:calc(var(--size-selector,.25rem) * 6)}.radio-sm{padding:.1875rem}.radio-sm[type=radio]{--size:calc(var(--size-selector,.25rem) * 5)}.radio-xs{padding:.125rem}.radio-xs[type=radio]{--size:calc(var(--size-selector,.25rem) * 4)}.select-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:1.125rem}.select-lg option{padding-block:.375rem;padding-inline:1rem}.select-md{--size:calc(var(--size-field,.25rem) * 10);font-size:.875rem}.select-md option{padding-block:.375rem;padding-inline:.75rem}.select-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:.75rem}.select-sm option{padding-block:.25rem;padding-inline:.625rem}.select-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:.6875rem}.select-xs option{padding-block:.25rem;padding-inline:.5rem}.table-lg :not(thead,tfoot) tr{font-size:1.125rem}.table-lg :where(th,td){padding-block:1rem;padding-inline:1.25rem}.table-md :not(thead,tfoot) tr{font-size:.875rem}.table-md :where(th,td){padding-block:.75rem;padding-inline:1rem}.table-sm :not(thead,tfoot) tr{font-size:.75rem}.table-sm :where(th,td){padding-block:.5rem;padding-inline:.75rem}.table-xl :not(thead,tfoot) tr{font-size:1.375rem}.table-xl :where(th,td){padding-block:1.25rem;padding-inline:1.5rem}.table-xs :not(thead,tfoot) tr{font-size:.6875rem}.table-xs :where(th,td){padding-block:.25rem;padding-inline:.5rem}.tabs-lg{--tab-height:calc(var(--size-field,.25rem) * 12)}.tabs-lg>.tab{--tab-p:1rem;--tab-radius-min:calc(1.5rem - var(--border));font-size:1.125rem}.tabs-md{--tab-height:calc(var(--size-field,.25rem) * 10)}.tabs-md>.tab{--tab-p:.75rem;--tab-radius-min:calc(.75rem - var(--border));font-size:.875rem}.tabs-sm{--tab-height:calc(var(--size-field,.25rem) * 8)}.tabs-sm>.tab{--tab-p:.5rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.875rem}.tabs-xs{--tab-height:calc(var(--size-field,.25rem) * 6)}.tabs-xs>.tab{--tab-p:.375rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.75rem}.badge-lg{--size:calc(var(--size-selector,.25rem) * 7);font-size:1rem}.badge-md{--size:calc(var(--size-selector,.25rem) * 6);font-size:.875rem}.badge-sm{--size:calc(var(--size-selector,.25rem) * 5);font-size:.75rem}.badge-xs{--size:calc(var(--size-selector,.25rem) * 4);font-size:.625rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.checkbox-accent{color:var(--color-accent-content);--input-color:var(--color-accent)}.checkbox-error{color:var(--color-error-content);--input-color:var(--color-error)}.checkbox-info{color:var(--color-info-content);--input-color:var(--color-info)}.checkbox-primary{color:var(--color-primary-content);--input-color:var(--color-primary)}.checkbox-secondary{color:var(--color-secondary-content);--input-color:var(--color-secondary)}.checkbox-success{color:var(--color-success-content);--input-color:var(--color-success)}.checkbox-warning{color:var(--color-warning-content);--input-color:var(--color-warning)}.range-accent{color:var(--color-accent);--range-thumb:var(--color-accent-content)}.range-error{color:var(--color-error);--range-thumb:var(--color-error-content)}.range-info{color:var(--color-info);--range-thumb:var(--color-info-content)}.range-primary{color:var(--color-primary);--range-thumb:var(--color-primary-content)}.range-secondary{color:var(--color-secondary);--range-thumb:var(--color-secondary-content)}.range-success{color:var(--color-success);--range-thumb:var(--color-success-content)}.range-warning{color:var(--color-warning);--range-thumb:var(--color-warning-content)}.tooltip-accent{--tt-bg:var(--color-accent)}.tooltip-accent>.tooltip-content,.tooltip-accent[data-tip]:before{color:var(--color-accent-content)}.tooltip-error{--tt-bg:var(--color-error)}.tooltip-error>.tooltip-content,.tooltip-error[data-tip]:before{color:var(--color-error-content)}.tooltip-info{--tt-bg:var(--color-info)}.tooltip-info>.tooltip-content,.tooltip-info[data-tip]:before{color:var(--color-info-content)}.tooltip-primary{--tt-bg:var(--color-primary)}.tooltip-primary>.tooltip-content,.tooltip-primary[data-tip]:before{color:var(--color-primary-content)}.tooltip-secondary{--tt-bg:var(--color-secondary)}.tooltip-secondary>.tooltip-content,.tooltip-secondary[data-tip]:before{color:var(--color-secondary-content)}.tooltip-success{--tt-bg:var(--color-success)}.tooltip-success>.tooltip-content,.tooltip-success[data-tip]:before{color:var(--color-success-content)}.tooltip-warning{--tt-bg:var(--color-warning)}.tooltip-warning>.tooltip-content,.tooltip-warning[data-tip]:before{color:var(--color-warning-content)}.swap-active .swap-off{opacity:0}.swap-active .swap-on{opacity:1}.indicator-end{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}[dir=rtl] .indicator-end,.indicator-start{--indicator-s:0;--indicator-e:auto;--indicator-x:-50%}[dir=rtl] .indicator-start{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem) * 12)}.btn-md{--fontsize:.875rem;--btn-p:1rem;--size:calc(var(--size-field,.25rem) * 10)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.btn-xl{--fontsize:1.375rem;--btn-p:1.5rem;--size:calc(var(--size-field,.25rem) * 14)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem) * 6)}.indicator-bottom{--indicator-t:auto;--indicator-b:0;--indicator-y:50%}.indicator-top{--indicator-t:0;--indicator-b:auto;--indicator-y:-50%}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-error{--badge-color:var(--color-error);--badge-fg:var(--color-error-content)}.badge-info{--badge-color:var(--color-info);--badge-fg:var(--color-info-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.badge-secondary{--badge-color:var(--color-secondary);--badge-fg:var(--color-secondary-content)}.badge-success{--badge-color:var(--color-success);--badge-fg:var(--color-success-content)}.badge-warning{--badge-color:var(--color-warning);--badge-fg:var(--color-warning-content)}.input-accent,.input-accent:focus,.input-accent:focus-within{--input-color:var(--color-accent)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.input-info,.input-info:focus,.input-info:focus-within{--input-color:var(--color-info)}.input-primary,.input-primary:focus,.input-primary:focus-within{--input-color:var(--color-primary)}.input-secondary,.input-secondary:focus,.input-secondary:focus-within{--input-color:var(--color-secondary)}.input-success,.input-success:focus,.input-success:focus-within{--input-color:var(--color-success)}.input-warning,.input-warning:focus,.input-warning:focus-within{--input-color:var(--color-warning)}.radio-accent{--input-color:var(--color-accent)}.radio-error{--input-color:var(--color-error)}.radio-info{--input-color:var(--color-info)}.radio-primary{--input-color:var(--color-primary)}.radio-secondary{--input-color:var(--color-secondary)}.radio-success{--input-color:var(--color-success)}.radio-warning{--input-color:var(--color-warning)}.range-lg{--range-thumb-size:calc(var(--size-selector,.25rem) * 7)}.range-md{--range-thumb-size:calc(var(--size-selector,.25rem) * 6)}.range-sm{--range-thumb-size:calc(var(--size-selector,.25rem) * 5)}.range-xs{--range-thumb-size:calc(var(--size-selector,.25rem) * 4)}.select-accent,.select-accent:focus,.select-accent:focus-within{--input-color:var(--color-accent)}.select-error,.select-error:focus,.select-error:focus-within{--input-color:var(--color-error)}.select-info,.select-info:focus,.select-info:focus-within{--input-color:var(--color-info)}.select-primary,.select-primary:focus,.select-primary:focus-within{--input-color:var(--color-primary)}.select-secondary,.select-secondary:focus,.select-secondary:focus-within{--input-color:var(--color-secondary)}.select-success,.select-success:focus,.select-success:focus-within{--input-color:var(--color-success)}.select-warning,.select-warning:focus,.select-warning:focus-within{--input-color:var(--color-warning)}.toggle-accent:checked,.toggle-accent[aria-checked=true]{--input-color:var(--color-accent)}.toggle-error:checked,.toggle-error[aria-checked=true]{--input-color:var(--color-error)}.toggle-info:checked,.toggle-info[aria-checked=true]{--input-color:var(--color-info)}.toggle-lg[type=checkbox],.toggle-lg:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 7)}.toggle-md[type=checkbox],.toggle-md:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 6)}.toggle-primary:checked,.toggle-primary[aria-checked=true]{--input-color:var(--color-primary)}.toggle-secondary:checked,.toggle-secondary[aria-checked=true]{--input-color:var(--color-secondary)}.toggle-sm[type=checkbox],.toggle-sm:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 5)}.toggle-success:checked,.toggle-success[aria-checked=true]{--input-color:var(--color-success)}.toggle-warning:checked,.toggle-warning[aria-checked=true]{--input-color:var(--color-warning)}.toggle-xs[type=checkbox],.toggle-xs:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 4)}}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse:not(td,tr,colgroup){visibility:revert-layer}.validator:user-invalid~.validator-hint{display:revert-layer}.validator:has(:user-invalid)~.validator-hint{display:revert-layer}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{display:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.right-3{right:calc(var(--spacing) * 3)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.left-0{left:calc(var(--spacing) * 0)}.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-4{left:calc(var(--spacing) * 4)}.left-6{left:calc(var(--spacing) * 6)}.-z-0{z-index:calc(0 * -1)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[50\]{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[9999\]{z-index:9999}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.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-1{margin:calc(var(--spacing) * 1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-16{margin-block:calc(var(--spacing) * 16)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-6{margin-left:calc(var(--spacing) * 6)}.icon-\[lucide--alert-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--alert-triangle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--bold\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--calendar\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 2v4m8-4v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11l3 3L22 4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m11 17l-5-5l5-5m7 10l-5-5l5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--clock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--code-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye-off\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--hash\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--heart\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 9.5a5.5 5.5 0 0 1 9.591-3.676a.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--info\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--italic\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 4h-9m4 16H5M15 4L9 20'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list-ordered\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--lock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--mail\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--phone\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--plus\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7v14'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--quote\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2zM5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--redo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m15 14l5-5l-5-5'/%3E%3Cpath d='M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--settings\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9.671 4.136a2.34 2.34 0 0 1 4.659 0a2.34 2.34 0 0 0 3.319 1.915a2.34 2.34 0 0 1 2.33 4.033a2.34 2.34 0 0 0 0 3.831a2.34 2.34 0 0 1-2.33 4.033a2.34 2.34 0 0 0-3.319 1.915a2.34 2.34 0 0 1-4.659 0a2.34 2.34 0 0 0-3.32-1.915a2.34 2.34 0 0 1-2.33-4.033a2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--strikethrough\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 4H9a3 3 0 0 0-2.83 4M14 12a4 4 0 0 1 0 8H6m-2-8h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--text\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--underline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 4v6a6 6 0 0 0 12 0V4M4 20h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--undo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 14L4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--upload\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--user\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.kbd{box-shadow:none}.text-rotate{height:1lh}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.aspect-square{aspect-ratio:1}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-96{height:calc(var(--spacing) * 96)}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-auto{height:auto}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[10rem\]{min-height:10rem}.min-h-\[300px\]{min-height:300px}.min-h-\[400px\]{min-height:400px}.min-h-\[500px\]{min-height:500px}.min-h-full{min-height:100%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[200px\]{max-width:200px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[4rem\]{min-width:4rem}.min-w-\[48px\]{min-width:48px}.min-w-\[500px\]{min-width:500px}.min-w-\[600px\]{min-width:600px}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);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-10{--tw-translate-x:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);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)}.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)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.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-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.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-center{justify-items:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}: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-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-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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.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-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}@layer daisyui.l1{.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.btn-dash:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-dash:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-link{--btn-border:#0000;--btn-bg:#0000;--btn-noise:none;--btn-shadow:"";outline-color:currentColor;text-decoration-line:underline}.btn-link:not(.btn-disabled,.btn:disabled,.btn[disabled]){--btn-fg:var(--btn-color,var(--color-primary))}.btn-link:is(.btn-active,:hover,:active:focus,:focus-visible){--btn-border:#0000;--btn-bg:#0000}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media (hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-outline:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-noise:none}@media (hover:none){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-noise:none}}}.btn-dash{border-style:dashed}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-base-200\/30{border-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.border-base-200\/30{border-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.border-base-300{border-color:var(--color-base-300)}.border-base-content\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/30{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/30{background-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.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-error,.bg-error\/10{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.bg-info{background-color:var(--color-info)}.bg-neutral{background-color:var(--color-neutral)}.bg-primary,.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-success,.bg-success\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-warning,.bg-warning\/10{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, 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-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{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))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-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-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-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-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-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-accent{--tw-gradient-via:var(--color-accent);--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-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-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-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-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-secondary{--tw-gradient-to:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-circle{--tw-mask-radial-shape:circle}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--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-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-accent-content{color:var(--color-accent-content)}.text-base-content,.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-error{color:var(--color-error)}.text-error-content{color:var(--color-error-content)}.text-gray-500{color:var(--color-gray-500)}.text-info{color:var(--color-info)}.text-info-content{color:var(--color-info-content)}.text-neutral-content{color:var(--color-neutral-content)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-transparent{color:#0000}.text-warning{color:var(--color-warning)}.text-warning-content{color:var(--color-warning-content)}.text-white{color:var(--color-white)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.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-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-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)}.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)}.shadow-secondary\/20{--tw-shadow-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.shadow-secondary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-secondary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-1{--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)}.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-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,)}.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,)}.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,)}.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-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))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.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)}}.before\:z-50:before,.after\:z-50:after{content:var(--tw-content);z-index:50}@media (hover:hover){.hover\:z-10:hover{z-index:10}.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-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent\/40:hover{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-base-content\/20:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:border-base-content\/20:hover{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.hover\:border-primary\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/40:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/40:hover{border-color:color-mix(in oklab, var(--color-secondary) 40%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.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\:text-base-content:hover{color:var(--color-base-content)}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-100:hover{opacity:1}}.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)}@media (min-width:48rem){.md\:h-64{height:calc(var(--spacing) * 64)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-auto{width:auto}.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\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&_br\]\:block br{display:block}.\[\&_br\]\:h-\[1em\] br{height:1em}.\[\&_br\]\:content-\[\'\'\] br{--tw-content:"";content:var(--tw-content)}.\[\&_div\]\:m-0 div{margin:calc(var(--spacing) * 0)}.\[\&_li\]\:list-item li{display:list-item}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-6 ol{padding-left:calc(var(--spacing) * 6)}.\[\&_p\]\:m-0 p{margin:calc(var(--spacing) * 0)}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-6 ul{padding-left:calc(var(--spacing) * 6)}@keyframes fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.animate-fade-in{animation:.15s ease-out forwards fade-in}}:root{font-size:14px}.input,.label,.select,.textarea{transition:all .3s cubic-bezier(.4,0,.2,1)}:is(.input,.label,.select,.textarea):focus,:is(.input,.label,.select,.textarea):focus-within{box-shadow:0 0 4px;outline:none!important}:is(.input,.label,.select,.textarea):hover:not(:focus){background-color:oklch(from var(--color-base-100) calc(l - .03) c h)}.floating-label span{color:oklch(30% .01 260);font-size:1.1rem;transition:all .2s}.floating-label:focus-within span{color:oklch(25% .02 260);font-size:1.1rem}.floating-label:has(input:not(:placeholder-shown)) span{color:oklch(28% .01 260);font-size:1.1rem}.tab-content-inner{transform-origin:top;animation:.3s cubic-bezier(.4,0,.2,1) tabFadeIn}.input-container{flex-direction:column;width:100%;display:flex;position:relative}.input-container .input{align-items:center;width:100%;display:flex}.input-content{z-index:50;background:oklch(var(--b1));border:1px solid oklch(var(--bc) / .2);border-radius:var(--rounded-box,1rem);margin-top:.25rem;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a}.input-content .menu{width:100%}@keyframes tabFadeIn{0%{opacity:0;transform:scaleY(.95)}to{opacity:1;transform:scaleY(1)}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@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-space-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-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-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-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file +@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-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-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-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-duration: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-black:#000;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--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:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-7xl:4.5rem;--text-7xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-3xl:1.5rem;--drop-shadow-2xl:0 25px 25px #00000026;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl:64px;--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)}}@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;-webkit-text-decoration: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}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}@property --radialprogress{syntax:"";inherits:true;initial-value:0%}:root:not(span){overflow:var(--page-overflow)}:root{background:var(--page-scroll-bg,var(--root-bg));--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset) ; else: unset)}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background:var(--page-scroll-bg,var(--root-bg));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(25% .006 285);--color-primary:oklch(25% .006 285);--color-primary-content:oklch(98% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(98% 0 0);--color-accent:oklch(96% 0 0);--color-accent-content:oklch(25% .006 285);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(62% .17 163);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .18 84);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(60% .25 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}:where(.drawer-side){overflow:hidden}.drawer-side{pointer-events:none;visibility:hidden;z-index:10;overscroll-behavior:contain;opacity:0;width:100%;transition:opacity .2s ease-out .1s allow-discrete, visibility .3s ease-out .1s allow-discrete;inset-inline-start:0;background-color:#0000;grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));grid-row-start:1;grid-column-start:1;place-items:flex-start start;height:100dvh;display:grid;position:fixed;top:0}.drawer-side>.drawer-overlay{cursor:pointer;background-color:oklch(0% 0 0/.4);place-self:stretch stretch;position:sticky;top:0}.drawer-side>*{grid-row-start:1;grid-column-start:1}.drawer-side>:not(.drawer-overlay){will-change:transform;transition:translate .3s ease-out,width .2s ease-out;translate:-100%}[dir=rtl] :is(.drawer-side>:not(.drawer-overlay)){translate:100%}.fab{pointer-events:none;z-index:999;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;inset-inline-end:1rem;flex-direction:column-reverse;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem}.fab>*{pointer-events:auto;align-items:center;gap:.5rem;display:flex}.fab>:hover,.fab>:has(:focus-visible){z-index:1}.fab>[tabindex]:first-child{transition-property:opacity,visibility,rotate;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:grid;position:relative}.fab .fab-close,.fab .fab-main-action{inset-inline-end:0;position:absolute;bottom:0}:is(.fab:focus-within:has(.fab-close),.fab:focus-within:has(.fab-main-action))>[tabindex]{opacity:0;rotate:90deg}.fab:focus-within>[tabindex]:first-child{pointer-events:none}.fab:focus-within>:nth-child(n+2){visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:1}.fab>:nth-child(n+2){visibility:hidden;--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0;transition-property:opacity,scale,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fab>:nth-child(n+2).fab-main-action,.fab>:nth-child(n+2).fab-close{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.fab>:nth-child(3){transition-delay:30ms}.fab>:nth-child(4){transition-delay:60ms}.fab>:nth-child(5){transition-delay:90ms}.fab>:nth-child(6){transition-delay:.12s}.drawer-toggle{appearance:none;opacity:0;width:0;height:0;position:fixed}:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:currentColor oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}@supports (color:color-mix(in lab, red, red)){:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}}:where(:root:has(.drawer-toggle:checked)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media (prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.floating-label{display:block;position:relative}.floating-label input{display:block}.floating-label input::placeholder,.floating-label textarea::placeholder{transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out}.floating-label>span{z-index:1;background-color:var(--color-base-100);opacity:0;inset-inline-start:.75rem;top:calc(var(--size-field,.25rem) * 10 / 2);pointer-events:none;border-radius:2px;padding-inline:.25rem;font-size:.875rem;line-height:1;transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out;position:absolute;translate:0 -50%}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown))) ::placeholder{opacity:0;pointer-events:auto;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown)))>span{opacity:1;pointer-events:auto;z-index:2;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}.floating-label:has(:disabled,[disabled])>span{opacity:0}.floating-label:has(.input-xs,.select-xs,.textarea-xs) span{top:calc(var(--size-field,.25rem) * 6 / 2);font-size:.6875rem}.floating-label:has(.input-sm,.select-sm,.textarea-sm) span{top:calc(var(--size-field,.25rem) * 8 / 2);font-size:.75rem}.floating-label:has(.input-md,.select-md,.textarea-md) span{top:calc(var(--size-field,.25rem) * 10 / 2);font-size:.875rem}.floating-label:has(.input-lg,.select-lg,.textarea-lg) span{top:calc(var(--size-field,.25rem) * 12 / 2);font-size:1.125rem}.floating-label:has(.input-xl,.select-xl,.textarea-xl) span{top:calc(var(--size-field,.25rem) * 14 / 2);font-size:1.375rem}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);--size:calc(var(--size-field,.25rem) * 10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-noise:var(--fx-noise)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}.validator-hint{visibility:hidden;margin-top:.5rem;font-size:.75rem}.validator:user-valid{--input-color:var(--color-success)}.validator:user-valid:focus{--input-color:var(--color-success)}.validator:user-valid:checked{--input-color:var(--color-success)}.validator:user-valid[aria-checked=true]{--input-color:var(--color-success)}.validator:user-valid:focus-within{--input-color:var(--color-success)}.validator:has(:user-valid){--input-color:var(--color-success)}.validator:has(:user-valid):focus{--input-color:var(--color-success)}.validator:has(:user-valid):checked{--input-color:var(--color-success)}.validator:has(:user-valid)[aria-checked=true]{--input-color:var(--color-success)}.validator:has(:user-valid):focus-within{--input-color:var(--color-success)}.validator:user-invalid{--input-color:var(--color-error)}.validator:user-invalid:focus{--input-color:var(--color-error)}.validator:user-invalid:checked{--input-color:var(--color-error)}.validator:user-invalid[aria-checked=true]{--input-color:var(--color-error)}.validator:user-invalid:focus-within{--input-color:var(--color-error)}.validator:user-invalid~.validator-hint{visibility:visible;color:var(--color-error)}.validator:has(:user-invalid){--input-color:var(--color-error)}.validator:has(:user-invalid):focus{--input-color:var(--color-error)}.validator:has(:user-invalid):checked{--input-color:var(--color-error)}.validator:has(:user-invalid)[aria-checked=true]{--input-color:var(--color-error)}.validator:has(:user-invalid):focus-within{--input-color:var(--color-error)}.validator:has(:user-invalid)~.validator-hint{visibility:visible;color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))),:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):checked,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))[aria-checked=true],:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus-within{--input-color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{visibility:visible;color:var(--color-error)}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size) / 10);--radialprogress:calc(var(--value) * 1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0);webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness) / 2);transform:rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input{--size:calc(var(--size-field,.25rem) * 10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.indicator{width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--indicator-t,0);bottom:var(--indicator-b,auto);left:var(--indicator-s,auto);right:var(--indicator-e,0);translate:var(--indicator-x,50%) var(--indicator-y,-50%);position:absolute}.table{border-collapse:separate;--tw-border-spacing-x:calc(.25rem * 0);--tw-border-spacing-y:calc(.25rem * 0);width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:"";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.chat-bubble{border-radius:var(--radius-field);background-color:var(--color-base-300);width:fit-content;color:var(--color-base-content);grid-row-end:3;min-width:2.5rem;max-width:90%;min-height:2rem;padding-block:.5rem;padding-inline:1rem;display:block;position:relative}.chat-bubble:before{background-color:inherit;content:"";width:.75rem;height:.75rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-chat);-webkit-mask-image:var(--mask-chat);mask-image:var(--mask-chat);position:absolute;bottom:0;-webkit-mask-position:0 -1px;mask-position:0 -1px;-webkit-mask-size:.8125rem;mask-size:.8125rem}.select{border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{--size:calc(var(--size-field,.25rem) * 10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0, 1fr)) auto var(--timeline-row-end,minmax(0, 1fr));grid-template-columns:var(--timeline-col-start,minmax(0, 1fr)) auto var(--timeline-col-end,minmax(0, 1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border) solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox{border:var(--border) solid var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 0 #0000 inset, 0 0 #0000;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:0deg}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;display:inline-flex;position:relative}.rating input{appearance:none;border:none}.rating :where(*){background-color:var(--color-base-content);opacity:.2;border-radius:0;width:1.5rem;height:1.5rem}@media (prefers-reduced-motion:no-preference){.rating :where(*){animation:.25s ease-out rating}}.rating :where(*):is(input){cursor:pointer}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating input[type=radio]:checked{background-image:none}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.navbar{align-items:center;width:100%;min-height:4rem;padding:.5rem;display:flex}.drawer{grid-auto-columns:max-content auto;width:100%;display:grid;position:relative}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.stats{border-radius:var(--radius-box);grid-auto-flow:column;display:inline-grid;position:relative;overflow-x:auto}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border) solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.timeline-end{grid-area:3/1/4/4;place-self:flex-start center;margin:.25rem}.timeline-start{grid-area:1/1/2/4;place-self:flex-end center;margin:.25rem}.stat-figure{grid-row:1/span 3;grid-column-start:2;place-self:center flex-end}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.drawer-content{grid-row-start:1;grid-column-start:2;min-width:0}.timeline-middle{grid-row-start:2;grid-column-start:2}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-desc{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-desc{font-size:.75rem}.stat-title{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-title{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-title{font-size:.75rem}.stat-actions{white-space:nowrap;grid-column-start:1}.chat-image{grid-row:span 2/span 2;align-self:flex-end}.chat-footer{grid-row-start:3;gap:.25rem;font-size:.6875rem;display:flex}.chat-header{grid-row-start:1;gap:.25rem;font-size:.6875rem;display:flex}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.divider{--divider-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.fieldset-legend{color:var(--color-base-content);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:-.25rem;padding-block:.5rem;font-weight:600;display:flex}.carousel-item{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.kbd{border-radius:var(--radius-field);background-color:var(--color-base-200);vertical-align:middle;border:var(--border) solid var(--color-base-content);justify-content:center;align-items:center;padding-inline:.5em;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.kbd{border:var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{border-bottom:calc(var(--border) + 1px) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.kbd{border-bottom:calc(var(--border) + 1px) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{--size:calc(var(--size-selector,.25rem) * 6);height:var(--size);min-width:var(--size);font-size:.875rem}.text-rotate{vertical-align:bottom;white-space:nowrap;--duration:var(--tw-duration);transition-property:none;display:inline-block;overflow:hidden}.text-rotate>*{height:calc(var(--items,1) * 100%);justify-items:start;display:grid}.text-rotate>:has(:nth-child(2)){--items:2;animation:rotator var(--duration,10s) linear(0 0% 49%, .5 50% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(3)){--items:3;animation:rotator var(--duration,10s) linear(0 0% 32%, .333333 33% 65%, .666666 66% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(4)){--items:4;animation:rotator var(--duration,10s) linear(0 0% 24%, .25 25% 49%, .5 50% 74%, .75 75% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(5)){--items:5;animation:rotator var(--duration,10s) linear(0 0% 19%, .2 20% 39%, .4 40% 59%, .6 60% 79%, .8 80% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(6)){--items:6;animation:rotator var(--duration,10s) linear(0 0% 15%, .16666 16% 32%, .333333 33% 49%, .5 50% 65%, .666666 66% 82%, .833333 83% 99%, 1 100% 100%) infinite}.text-rotate>*>*{clip-path:inset(.5px 0);align-content:baseline}.text-rotate>*>:first-child{translate:var(--first-item-position)}.text-rotate:hover>*{animation-play-state:paused}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem) * 10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stat:not(:last-child){border-block-end:none}.navbar-end{justify-content:flex-end;align-items:center;width:50%;display:inline-flex}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.fieldset-label{color:var(--color-base-content);align-items:center;gap:.375rem;display:flex}@supports (color:color-mix(in lab, red, red)){.fieldset-label{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.fieldset-label:has(input){cursor:pointer}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){.carousel{scroll-behavior:smooth}}.carousel::-webkit-scrollbar{display:none}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.fieldset{grid-template-columns:1fr;grid-auto-rows:max-content;gap:.375rem;padding-block:.25rem;font-size:.75rem;display:grid}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e");grid-auto-rows:min-content;column-gap:.75rem;padding-block:.25rem;display:grid}.card-actions{flex-wrap:wrap;align-items:flex-start;gap:.5rem;display:flex}.card-title{font-size:var(--cardtitle-fs,1.125rem);align-items:center;gap:.5rem;font-weight:600;display:flex}.mask{vertical-align:middle;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.timeline-box{border:var(--border) solid;border-radius:var(--radius-box);border-color:var(--color-base-300);background-color:var(--color-base-100);padding-block:.5rem;padding-inline:1rem;font-size:.75rem;box-shadow:0 1px 2px oklch(0% 0 0/.05)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}:where(.drawer-toggle:checked~.drawer-side){pointer-events:auto;visibility:visible;opacity:1;overflow-y:auto}:where(.drawer-toggle:checked~.drawer-side)>:not(.drawer-overlay){translate:0%}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline:2px solid}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn-disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn-disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn-disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.tabs-border>.tab{--tab-border-color:#0000 #0000 var(--tab-border-color) #0000;border-radius:var(--radius-field);position:relative}.tabs-border>.tab:before{content:"";background-color:var(--tab-border-color);border-radius:var(--radius-field);width:80%;height:3px;transition:background-color .2s;position:absolute;bottom:0;left:10%}:is(.tabs-border>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-border>.tab:is(input:checked),.tabs-border>.tab:is(label:has(:checked))):before{--tab-border-color:currentColor;border-top:3px solid}.checkbox:disabled,.radio:disabled{cursor:not-allowed;opacity:.2}.rating.rating-xs :where(:not(.rating-hidden)){width:1rem;height:1rem}.rating.rating-sm :where(:not(.rating-hidden)){width:1.25rem;height:1.25rem}.rating.rating-md :where(:not(.rating-hidden)){width:1.5rem;height:1.5rem}.rating.rating-lg :where(:not(.rating-hidden)){width:1.75rem;height:1.75rem}.rating.rating-xl :where(:not(.rating-hidden)){width:2rem;height:2rem}:where(.navbar){position:relative}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translateX(calc(var(--tt-pos,-.25rem) + .25rem)) translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translateX(var(--tt-pos,-.25rem)) translateY(-50%) rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.tooltip-top>.tooltip-content,.tooltip-top[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip-top:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn-active{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);isolation:isolate}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.tabs-box{background-color:var(--color-base-200);--tabs-box-radius:calc(3 * var(--radius-field));border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)));box-shadow:0 -.5px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 .5px oklch(0% 0 0 / calc(var(--depth) * .05)) inset;padding:.25rem}.tabs-box>.tab{border-radius:var(--radius-field);border-style:none}.tabs-box>.tab:focus-visible,.tabs-box>.tab:is(label:has(:checked:focus-visible)){outline-offset:2px}.tabs-box>.tab:focus-visible{z-index:1}.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){background-color:var(--tab-bg,var(--color-base-100));box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral)}@supports (color:color-mix(in lab, red, red)){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000)}}@media (forced-colors:active){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){border:1px solid}}.tabs-box>.tab-content{height:calc(100% - var(--tab-height) + var(--border) - .5rem);border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)) - var(--border));margin-top:.25rem}.timeline-horizontal{flex-direction:row}.timeline-horizontal>li{align-items:center}.timeline-horizontal>li>hr{width:100%;height:.25rem}.timeline-horizontal>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline-horizontal>li>hr:last-child{grid-area:2/3/auto/none}.timeline-horizontal .timeline-start{grid-area:1/1/2/4;place-self:flex-end center}.timeline-horizontal .timeline-end{grid-area:3/1/4/4;place-self:flex-start center}.timeline-horizontal:has(.timeline-middle)>li>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-horizontal:has(.timeline-middle)>li>hr:last-child,.timeline-horizontal:not(:has(.timeline-middle)) :first-child>hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline-horizontal:not(:has(.timeline-middle)) :last-child>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-vertical{flex-direction:column}.timeline-vertical>li{--timeline-row-start:minmax(0, 1fr);--timeline-row-end:minmax(0, 1fr);justify-items:center}.timeline-vertical>li>hr{width:.25rem;height:100%}.timeline-vertical>li>hr:first-child{grid-row-start:1;grid-column-start:2}.timeline-vertical>li>hr:last-child{grid-area:3/2/none}.timeline-vertical .timeline-start{grid-area:1/1/4/2;place-self:center flex-end}.timeline-vertical .timeline-end{grid-area:1/3/4/4;place-self:center flex-start}.timeline-vertical:has(.timeline-middle)>li>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical:has(.timeline-middle)>li>hr:last-child,.timeline-vertical:not(:has(.timeline-middle)) :first-child>hr:last-child{border-top-left-radius:var(--radius-selector);border-top-right-radius:var(--radius-selector);border-bottom-right-radius:0;border-bottom-left-radius:0}.timeline-vertical:not(:has(.timeline-middle)) :last-child>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical.timeline-snap-icon>li{--timeline-col-start:minmax(0, 1fr);--timeline-row-start:.5rem}.timeline-compact{--timeline-row-start:0}.timeline-compact .timeline-start{grid-area:3/1/4/4;place-self:flex-start center}.timeline-compact li:has(.timeline-start) .timeline-end{grid-row-start:auto;grid-column-start:none}.timeline-compact.timeline-vertical>li{--timeline-col-start:0}.timeline-compact.timeline-vertical .timeline-start{grid-area:1/3/4/4;place-self:center flex-start}.timeline-compact.timeline-vertical li:has(.timeline-start) .timeline-end{grid-row-start:none;grid-column-start:auto}.input-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:max(var(--font-size,1.125rem), 1.125rem)}.input-lg[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:max(var(--font-size,.75rem), .75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:max(var(--font-size,.6875rem), .6875rem)}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.modal-bottom{place-items:end}.modal-bottom .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-block{width:100%}.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{rotate:45deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-on,.swap-rotate.swap-active .swap-on{rotate:0deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-off,.swap-rotate.swap-active .swap-off{rotate:-45deg}.stats-horizontal{grid-auto-flow:column;overflow-x:auto}.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stats-horizontal .stat:not(:last-child){border-block-end:none}.stats-vertical{grid-auto-flow:row;overflow-y:auto}.stats-vertical .stat:not(:last-child){border-inline-end:none;border-block-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-vertical .stat:not(:last-child){border-block-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.badge-dash{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-style:dashed;border-color:currentColor}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.table-zebra tbody tr:where(:nth-child(2n)),.table-zebra tbody tr:where(:nth-child(2n)) :where(.table-pin-cols tr th){background-color:var(--color-base-200)}@media (hover:hover){:is(.table-zebra tbody tr.row-hover,.table-zebra tbody tr.row-hover:where(:nth-child(2n))):hover{background-color:var(--color-base-300)}}.skeleton-text{webkit-background-clip:text;color:#0000;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(105deg, var(--color-base-content) 0% 40%, var(--color-base-content) 50%, var(--color-base-content) 60% 100%)}@supports (color:color-mix(in lab, red, red)){.skeleton-text{background-image:linear-gradient(105deg, color-mix(in oklab, var(--color-base-content) 20%, transparent) 0% 40%, var(--color-base-content) 50%, color-mix(in oklab, var(--color-base-content) 20%, transparent) 60% 100%)}}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mask-circle{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-heart{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e")}.mask-star{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e")}.checkbox-lg{--size:calc(var(--size-selector,.25rem) * 7);padding:.3125rem}.radio-lg{padding:.3125rem}.radio-lg[type=radio]{--size:calc(var(--size-selector,.25rem) * 7)}.select-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:1.125rem}.select-lg option{padding-block:.375rem;padding-inline:1rem}.table-lg :not(thead,tfoot) tr{font-size:1.125rem}.table-lg :where(th,td){padding-block:1rem;padding-inline:1.25rem}.badge-lg{--size:calc(var(--size-selector,.25rem) * 7);font-size:1rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.checkbox-accent{color:var(--color-accent-content);--input-color:var(--color-accent)}.checkbox-error{color:var(--color-error-content);--input-color:var(--color-error)}.range-accent{color:var(--color-accent);--range-thumb:var(--color-accent-content)}.range-error{color:var(--color-error);--range-thumb:var(--color-error-content)}.tooltip-accent{--tt-bg:var(--color-accent)}.tooltip-accent>.tooltip-content,.tooltip-accent[data-tip]:before{color:var(--color-accent-content)}.tooltip-error{--tt-bg:var(--color-error)}.tooltip-error>.tooltip-content,.tooltip-error[data-tip]:before{color:var(--color-error-content)}.swap-active .swap-off{opacity:0}.swap-active .swap-on{opacity:1}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem) * 12)}.btn-md{--fontsize:.875rem;--btn-p:1rem;--size:calc(var(--size-field,.25rem) * 10)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.btn-xl{--fontsize:1.375rem;--btn-p:1.5rem;--size:calc(var(--size-field,.25rem) * 14)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem) * 6)}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-error{--badge-color:var(--color-error);--badge-fg:var(--color-error-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.input-secondary,.input-secondary:focus,.input-secondary:focus-within{--input-color:var(--color-secondary)}.radio-accent{--input-color:var(--color-accent)}.radio-error{--input-color:var(--color-error)}.range-lg{--range-thumb-size:calc(var(--size-selector,.25rem) * 7)}.range-xs{--range-thumb-size:calc(var(--size-selector,.25rem) * 4)}.select-error,.select-error:focus,.select-error:focus-within{--input-color:var(--color-error)}.select-secondary,.select-secondary:focus,.select-secondary:focus-within{--input-color:var(--color-secondary)}.toggle-accent:checked,.toggle-accent[aria-checked=true]{--input-color:var(--color-accent)}.toggle-lg[type=checkbox],.toggle-lg:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 7)}}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse:not(td,tr,colgroup){visibility:revert-layer}.validator:user-invalid~.validator-hint{display:revert-layer}.validator:has(:user-invalid)~.validator-hint{display:revert-layer}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{display:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-10{top:calc(var(--spacing) * 10)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.right-3{right:calc(var(--spacing) * 3)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-3{left:calc(var(--spacing) * 3)}.left-6{left:calc(var(--spacing) * 6)}.-z-0{z-index:calc(0 * -1)}.z-1{z-index:1}.z-10{z-index:10}.z-20{z-index:20}.z-50,.z-\[50\]{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[9999\]{z-index:9999}.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-1{margin:calc(var(--spacing) * 1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-16{margin-block:calc(var(--spacing) * 16)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.icon-\[lucide--alert-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--alert-triangle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--align-center\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M17 12H7m12 6H5M21 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--align-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 12H3m14 6H3M21 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--align-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H9m12 6H7M21 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--bold\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--calendar\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 2v4m8-4v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11l3 3L22 4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m11 17l-5-5l5-5m7 10l-5-5l5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--clock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--code-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eraser\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21m-7.752-9.91l8.828 8.828'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye-off\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--hash\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--indent-decrease\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H11m10 6H11M21 6H11M7 8l-4 4l4 4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--indent-increase\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 12H11m10 6H11M21 6H11M3 8l4 4l-4 4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--info\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--italic\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 4h-9m4 16H5M15 4L9 20'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list-ordered\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--lock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--mail\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--paperclip\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 6l-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--phone\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--quote\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2zM5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--redo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m15 14l5-5l-5-5'/%3E%3Cpath d='M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--smile\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 14s1.5 2 4 2s4-2 4-2M9 9h.01M15 9h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--text\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--underline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 4v6a6 6 0 0 0 12 0V4M4 20h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--undo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 14L4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--upload\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--user\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.kbd{box-shadow:none}.text-rotate{height:1lh}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.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}.aspect-square{aspect-ratio:1}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-12{height:calc(var(--spacing) * 12)}.h-20{height:calc(var(--spacing) * 20)}.h-48{height:calc(var(--spacing) * 48)}.h-96{height:calc(var(--spacing) * 96)}.h-auto{height:auto}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[22rem\]{min-height:22rem}.min-h-full{min-height:100%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-xs{width:var(--container-xs)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[200px\]{max-width:200px}.max-w-md{max-width:var(--container-md)}.min-w-\[48px\]{min-width:48px}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-10{--tw-translate-x:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.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-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-8{gap:calc(var(--spacing) * 8)}: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-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-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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.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-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@layer daisyui.l1{.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-link{--btn-border:#0000;--btn-bg:#0000;--btn-noise:none;--btn-shadow:"";outline-color:currentColor;text-decoration-line:underline}.btn-link:not(.btn-disabled,.btn:disabled,.btn[disabled]){--btn-fg:var(--btn-color,var(--color-primary))}.btn-link:is(.btn-active,:hover,:active:focus,:focus-visible){--btn-border:#0000;--btn-bg:#0000}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media (hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-outline:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-base-200\/30{border-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.border-base-200\/30{border-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.border-base-300{border-color:var(--color-base-300)}.border-base-content\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-primary{border-color:var(--color-primary)}.bg-base-100,.bg-base-100\/50{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.bg-base-100\/50{background-color:color-mix(in oklab, var(--color-base-100) 50%, transparent)}}.bg-base-200,.bg-base-200\/30{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/30{background-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-primary,.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-transparent{background-color:#0000}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-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-accent{--tw-gradient-via:var(--color-accent);--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-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-circle{--tw-mask-radial-shape:circle}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--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-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-base-content,.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-error{color:var(--color-error)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-transparent{color:#0000}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.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-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-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)}.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)}.shadow-secondary\/20{--tw-shadow-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.shadow-secondary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-secondary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-1{--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)}.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-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,)}.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,)}.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,)}.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-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))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.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)}}.before\:z-50:before,.after\:z-50:after{content:var(--tw-content);z-index:50}@media (hover:hover){.hover\:z-10:hover{z-index:10}.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent\/40:hover{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-base-content\/20:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:border-base-content\/20:hover{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.hover\:border-primary\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/40:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/40:hover{border-color:color-mix(in oklab, var(--color-secondary) 40%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:text-base-content:hover{color:var(--color-base-content)}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-100:hover{opacity:1}}.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)}@media (min-width:48rem){.md\:h-64{height:calc(var(--spacing) * 64)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (hover:hover){.\[\&_\.resizable-img-container\]\:hover\:border-primary .resizable-img-container:hover{border-color:var(--color-primary)}}.\[\&_blockquote\]\:border-l-4 blockquote{border-left-style:var(--tw-border-style);border-left-width:4px}.\[\&_blockquote\]\:border-base-300 blockquote{border-color:var(--color-base-300)}.\[\&_blockquote\]\:pl-4 blockquote{padding-left:calc(var(--spacing) * 4)}.\[\&_blockquote\]\:italic blockquote{font-style:italic}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-8 ol{padding-left:calc(var(--spacing) * 8)}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-8 ul{padding-left:calc(var(--spacing) * 8)}.\[\&\>div\]\:m-0>div{margin:calc(var(--spacing) * 0)}.\[\&\>div\]\:min-h-\[1em\]>div{min-height:1em}.\[\&\>p\]\:m-0>p{margin:calc(var(--spacing) * 0)}@keyframes fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.animate-fade-in{animation:.15s ease-out forwards fade-in}}:root{font-size:14px}.input,.label,.select,.textarea{transition:all .3s cubic-bezier(.4,0,.2,1)}:is(.input,.label,.select,.textarea):focus,:is(.input,.label,.select,.textarea):focus-within{box-shadow:0 0 4px;outline:none!important}:is(.input,.label,.select,.textarea):hover:not(:focus){background-color:oklch(from var(--color-base-100) calc(l - .03) c h)}.floating-label span{color:oklch(30% .01 260);font-size:1.1rem;transition:all .2s}.floating-label:focus-within span{color:oklch(25% .02 260);font-size:1.1rem}.floating-label:has(input:not(:placeholder-shown)) span{color:oklch(28% .01 260);font-size:1.1rem}.tab-content-inner{transform-origin:top;animation:.3s cubic-bezier(.4,0,.2,1) tabFadeIn}.input-container{flex-direction:column;width:100%;display:flex;position:relative}.input-container .input{align-items:center;width:100%;display:flex}.input-content{z-index:50;background:oklch(var(--b1));border:1px solid oklch(var(--bc) / .2);border-radius:var(--rounded-box,1rem);margin-top:.25rem;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a}.input-content .menu{width:100%}@keyframes tabFadeIn{0%{opacity:0;transform:scaleY(.95)}to{opacity:1;transform:scaleY(1)}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@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-space-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-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-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-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file diff --git a/docs/sigpro-ui.min.js b/docs/sigpro-ui.min.js index e7af0b9..eb20da9 100644 --- a/docs/sigpro-ui.min.js +++ b/docs/sigpro-ui.min.js @@ -1 +1,7 @@ -(()=>{var{defineProperty:F,getOwnPropertyNames:An,getOwnPropertyDescriptor:jn}=Object,Wn=Object.prototype.hasOwnProperty;function mn(n){return this[n]}var zn=(n)=>{var r=(sn??=new WeakMap).get(n),e;if(r)return r;if(r=F({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var s of An(n))if(!Wn.call(r,s))F(r,s,{get:mn.bind(n,s),enumerable:!(e=jn(n,s))||e.enumerable})}return sn.set(n,r),r},sn;var Jn=(n)=>n;function Pn(n,r){this[n]=Jn.bind(null,r)}var M=(n,r)=>{for(var e in r)F(n,e,{get:r[e],enumerable:!0,configurable:!0,set:Pn.bind(r,e)})};var Bt={};M(Bt,{Utils:()=>Cn,Components:()=>xn});var on={};M(on,{listKey:()=>yn,isFn:()=>S,getBy:()=>j,get:()=>N,filterBy:()=>_n,cls:()=>c,Tooltip:()=>xt,Toggle:()=>kt,Toast:()=>Rt,Timeline:()=>St,Textarea:()=>gt,TextRotate:()=>Nt,Tabs:()=>Tt,Table:()=>Lt,Swap:()=>dt,Steps:()=>wt,Step:()=>Et,Stack:()=>yt,SkeletonText:()=>_t,Skeleton:()=>ct,Select:()=>Wt,Rating:()=>$t,Range:()=>it,Radio:()=>bt,Radial:()=>ut,Progress:()=>ft,Navbar:()=>at,Modal:()=>Ut,Menu:()=>En,Loading:()=>st,Kbd:()=>lt,Input:()=>dn,Indicator:()=>et,Icon:()=>ot,Fileinput:()=>Pt,Fieldset:()=>rt,Fab:()=>tt,Dropdown:()=>jt,Drawer:()=>At,Divider:()=>nt,Datepicker:()=>Jt,Colorpicker:()=>zt,Checkbox:()=>pn,ChatImage:()=>hn,ChatHeader:()=>Mn,ChatFooter:()=>Fn,ChatBubble:()=>vn,Chat:()=>Dn,CarouselItem:()=>Hn,Carousel:()=>On,CardTitle:()=>Yn,CardBody:()=>In,CardActions:()=>Vn,Card:()=>Zn,Calendar:()=>gn,Button:()=>wn,Badge:()=>Xn,Autocomplete:()=>mt,Alert:()=>Gn,Accordion:()=>Ct});var A=(n)=>typeof n==="function",nn=(n)=>n&&typeof n==="object",q=Array.isArray,W=typeof document<"u"?document:null,an=(n)=>n?._isRuntime?n.container:n instanceof Node?n:W.createTextNode(n==null?"":String(n)),k=null,L=null,G=!1,Z=0,Y=new Set,fn=new WeakMap,h=Symbol("iter"),p=new WeakMap,R=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let r=[n];while(r.length){let e=r.pop();if(e._cleanups)e._cleanups.forEach((s)=>s()),e._cleanups.clear();if(e._children)e._children.forEach((s)=>r.push(s)),e._children.clear();if(e._deps)e._deps.forEach((s)=>s.delete(e)),e._deps.clear()}},Q=(n)=>{if(L)(L._cleanups||=new Set).add(n)},Rn=(n)=>{let r=k;k=null;try{return n()}finally{k=r}},X=(n,r=!1)=>{let e=()=>{if(e._disposed)return;if(e._deps)e._deps.forEach((l)=>l.delete(e));if(e._cleanups)e._cleanups.forEach((l)=>l()),e._cleanups.clear();let s=k,f=L;k=L=e;try{return e._result=n()}catch(l){console.error("[SigPro]",l)}finally{k=s,L=f}};if(e._deps=e._cleanups=e._children=null,e._disposed=!1,e._isComputed=r,e._depth=k?k._depth+1:0,e._mounts=[],e._parent=L,L)(L._children||=new Set).add(e);return e},bn=()=>{if(G)return;G=!0;let n=Array.from(Y).sort((r,e)=>r._depth-e._depth);Y.clear();for(let r of n)if(!r._disposed)r();G=!1},Un=(n)=>{Z++;try{return n()}finally{if(Z--,Z===0&&Y.size>0&&!G)bn()}},$=(n,r=!1)=>{if(!r&&k&&!k._disposed)n.add(k),(k._deps||=new Set).add(n);else if(r&&n.size>0){let e=!1;for(let s of n){if(s===k||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)$(s._subs,!0)}else Y.add(s),e=!0}if(e&&!G&&Z===0)queueMicrotask(bn)}},d=(n,r=null)=>{let e=new Set;if(A(n)){let s,f=()=>{if(f._dirty){let l=k;k=f;try{let o=n();if(!Object.is(s,o))s=o,$(e,!0)}finally{k=l}f._dirty=!1}return $(e),s};if(f._isComputed=!0,f._subs=e,f._dirty=!0,f._deps=null,f._disposed=!1,f.stop=()=>{},L)Q(f.stop);return f}if(r)try{n=JSON.parse(localStorage.getItem(r))??n}catch(s){}return(...s)=>{if(s.length){let f=A(s[0])?s[0](n):s[0];if(!Object.is(n,f)){if(n=f,r)localStorage.setItem(r,JSON.stringify(n));$(e,!0)}}return $(e),n}},cn=(n)=>{if(!nn(n))return n;let r=fn.get(n);if(r)return r;let e=new Map,s=(l)=>{let o=e.get(l);if(!o)e.set(l,o=new Set);return o},f=new Proxy(n,{get(l,o,a){if(typeof o!=="symbol")$(s(o));return cn(Reflect.get(l,o,a))},set(l,o,a,u){let i=Reflect.has(l,o),b=Reflect.get(l,o,u),_=Reflect.set(l,o,a,u);if(_&&!Object.is(b,a)){if($(s(o),!0),!i)$(s(h),!0)}return _},deleteProperty(l,o){let a=Reflect.deleteProperty(l,o);if(a)$(s(o),!0),$(s(h),!0);return a},ownKeys(l){return $(s(h)),Reflect.ownKeys(l)}});return fn.set(n,f),f},J=(n,r)=>{if(r===void 0){let s=X(n);return s(),()=>R(s)}let e=X(()=>{let s=Array.isArray(n)?n.map((f)=>f()):n();Rn(()=>r(s))});return e(),()=>R(e)},tn=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((r)=>r()),n._cleanups.clear();if(n._ownerEffect)R(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((r)=>tn(r))},qn=/^\s*(javascript|data|vbscript):/i,Qn=(n)=>n==="src"||n==="href"||n.startsWith("on"),un=(n,r)=>{if(r==null||r===!1)return null;if(Qn(n)){let e=String(r);if(qn.test(e))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return r},t=(n,r={},e=[])=>{if(r instanceof Node||q(r)||!nn(r))e=r,r={};if(A(n)){let o=X(()=>{let b=n(r,{children:e,emit:(_,...w)=>r[`on${_[0].toUpperCase()}${_.slice(1)}`]?.(...w)});return o._result=b,b});o();let a=o._result;if(a==null)return null;let u=a instanceof Node||q(a)&&a.every((b)=>b instanceof Node)?a:W.createTextNode(String(a)),i=(b)=>{if(nn(b)&&!b._isRuntime)b._mounts=o._mounts||[],b._cleanups=o._cleanups||new Set,b._ownerEffect=o};return q(u)?u.forEach(i):i(u),u}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),f=s?W.createElementNS("http://www.w3.org/2000/svg",n):W.createElement(n);f._cleanups=new Set;for(let o in r){if(!r.hasOwnProperty(o))continue;let a=r[o];if(o==="ref"){A(a)?a(f):a.current=f;continue}if(s&&o.startsWith("xlink:")){a==null?f.removeAttributeNS("http://www.w3.org/1999/xlink",o.slice(6)):f.setAttributeNS("http://www.w3.org/1999/xlink",o.slice(6),a);continue}if(o.startsWith("on")){let u=o.slice(2).toLowerCase();f.addEventListener(u,a);let i=()=>f.removeEventListener(u,a);f._cleanups.add(i),Q(i)}else if(A(a)){let u=X(()=>{let i=un(o,a());if(o==="class")f.className=i||"";else if(i==null)f.removeAttribute(o);else if(o in f&&!s)f[o]=i;else f.setAttribute(o,i===!0?"":i)});if(u(),f._cleanups.add(()=>R(u)),Q(()=>R(u)),/^(INPUT|TEXTAREA|SELECT)$/.test(f.tagName)&&(o==="value"||o==="checked")){let i=o==="checked"?"change":"input";f.addEventListener(i,(b)=>a(b.target[o]))}}else{let u=un(o,a);if(u!=null)if(o in f&&!s)f[o]=u;else f.setAttribute(o,u===!0?"":u)}}let l=(o)=>{if(q(o))return o.forEach(l);if(A(o)){let a=W.createTextNode("");f.appendChild(a);let u=[],i=X(()=>{let b=o(),_=(q(b)?b:[b]).map(an);u.forEach((E)=>{if(E._isRuntime)E.destroy();else tn(E);if(E.parentNode)E.remove()});let w=a;for(let E=_.length-1;E>=0;E--){let y=_[E];if(y.parentNode!==w.parentNode)w.parentNode?.insertBefore(y,w);if(y._mounts)y._mounts.forEach((g)=>g());w=y}u=_});i(),f._cleanups.add(()=>R(i)),Q(()=>R(i))}else{let a=an(o);if(f.appendChild(a),a._mounts)a._mounts.forEach((u)=>u())}};return l(e),f},I=(n)=>{let r=new Set,e=L,s=k,f=W.createElement("div");f.style.display="contents",f.setAttribute("role","presentation"),L={_cleanups:r},k=null;let l=(o)=>{if(!o)return;if(o._isRuntime)r.add(o.destroy),f.appendChild(o.container);else if(q(o))o.forEach(l);else f.appendChild(o instanceof Node?o:W.createTextNode(String(o==null?"":o)))};try{l(n({onCleanup:(o)=>r.add(o)}))}finally{L=e,k=s}return{_isRuntime:!0,container:f,destroy:()=>{r.forEach((o)=>o()),tn(f),f.remove()}}},U=(n,r,e=null)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),l=null;return J(()=>!!(A(n)?n():n),(o)=>{if(l)l.destroy(),l=null;let a=o?r:e;if(a)l=I(()=>A(a)?a():a),f.insertBefore(l.container,s)}),Q(()=>l?.destroy()),f},V=({name:n,duration:r=200,scale:e,slide:s,rotate:f,blur:l},o)=>{let a=typeof o==="function"?o():o;if(!(a instanceof Node))return a;if(n)return a.style.animation=`${n}-in ${r}ms`,a;let u=e||s||f||l,i=[e?"scale(0.95)":"",s?"translateY(-10px)":"",f?"rotate(-2deg)":""].filter(Boolean).join(" ");if(a.style.transition=`all ${r}ms ease`,a.style.opacity="0",u)a.style.transform=i;if(l)a.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(a.style.opacity="1",u)a.style.transform="none";if(l)a.style.filter="none"}),a},m=(n,r,e)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),l=new Map;return J(()=>(A(n)?n():n)||[],(o)=>{let a=new Map,u=[],i=o||[];for(let _=0;_r(w,_));else l.delete(E);a.set(E,y),u.push(y)}l.forEach((_)=>_.destroy());let b=s;for(let _=u.length-1;_>=0;_--){let w=u[_].container;if(w.nextSibling!==b)f.insertBefore(w,b);b=w}l=a}),f},B=(n)=>{let r=()=>window.location.hash.slice(1)||"/",e=d(r()),s=()=>e(r());window.addEventListener("hashchange",s),Q(()=>window.removeEventListener("hashchange",s));let f=t("div",{class:"router-hook"}),l=null;return J([e],()=>{let o=e(),a=n.find((u)=>{let i=u.path.split("/").filter(Boolean),b=o.split("/").filter(Boolean);return i.length===b.length&&i.every((_,w)=>_[0]===":"||_===b[w])})||n.find((u)=>u.path==="*");if(a){l?.destroy();let u={};a.path.split("/").filter(Boolean).forEach((i,b)=>{if(i[0]===":")u[i.slice(1)]=o.split("/").filter(Boolean)[b]}),B.params(u),l=I(()=>A(a.component)?a.component(u):a.component),f.replaceChildren(l.container)}}),f};B.params=d({});B.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");B.back=()=>window.history.back();B.path=()=>window.location.hash.replace(/^#/,"")||"/";var Bn=({url:n,method:r="GET",headers:e={}})=>{let s=d(!1),f=d(null),l=d(null),o=null,a=null;return{run:async(u=null)=>{o?.abort(),clearTimeout(a),o=new AbortController,a=setTimeout(()=>o.abort(),1e4),s(!0),f(null);try{let i=u instanceof FormData,b=await fetch(n,{method:r,headers:i?e:{"Content-Type":"application/json",...e},body:i?u:u?JSON.stringify(u):void 0,signal:o.signal}),_=await b.text(),w=_?JSON.parse(_):null;if(!b.ok)throw Error(w?.message||b.statusText);return l(w),w}catch(i){if(i.name!=="AbortError")f(i.message);throw i}finally{s(!1),clearTimeout(a),o=null,a=null}},abort:()=>o?.abort(),loading:s,error:f,data:l}},rn=(n,r)=>{let e=typeof r==="string"?W.querySelector(r):r;if(!e)return;if(p.has(e))p.get(e).destroy();let s=I(A(n)?n:()=>n);return e.replaceChildren(s.container),p.set(e,s),s},Kn=Object.freeze({$:d,$$:cn,watch:J,h:t,when:U,each:m,fx:V,router:B,req:Bn,mount:rn,batch:Un});if(typeof window<"u")Object.assign(window,Kn),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(r,e)=>t(n,r,e)});var N=(n)=>typeof n==="function"?n():n,j=(n,r="label")=>n&&typeof n==="object"?n[r]:n,c=(...n)=>n.filter(Boolean).join(" ").trim(),S=(n)=>typeof n==="function",_n=(n,r,e="label")=>{let s=String(r).toLowerCase(),f=N(n);return!s?f:f.filter((l)=>{let o=l&&typeof l==="object"?l[e]:l;return String(o).toLowerCase().includes(s)})},yn=(n,r)=>{let e=d(-1);return J(()=>{if(!N(r))e(-1)}),{cursor:e,onKey:(f,l)=>{let o=N(n),a=e(),u=o.length;if(!u)return;let i=f.key;i==="ArrowDown"?(f.preventDefault(),r(!0),e(Math.min(a+1,u-1))):i==="ArrowUp"?(f.preventDefault(),e(Math.max(a-1,0))):i==="Enter"?a>=0&&(f.preventDefault(),l(o[a])):i==="Escape"&&r(!1)}}},Gn=(n,r)=>t("div",{...n,class:c("alert",n.class)},r),Xn=(n,r)=>t("span",{...n,class:c("badge",n.class)},r),wn=(n,r)=>t("button",{...n,class:c("btn",n.class)},r),Zn=(n,r)=>t("div",{...n,class:c("card",n.class)},r),Yn=(n,r)=>t("div",{...n,class:c("card-title",n.class)},r),In=(n,r)=>t("div",{...n,class:c("card-body",n.class)},r),Vn=(n,r)=>t("div",{...n,class:c("card-actions",n.class)},r),On=(n,r)=>t("div",{...n,class:c("carousel",n.class)},r),Hn=(n,r)=>t("div",{...n,class:c("carousel-item",n.class)},r),Dn=(n,r)=>t("div",{...n,class:c("chat",n.class)},r),vn=(n,r)=>t("div",{...n,class:c("chat-bubble",n.class)},r),Fn=(n,r)=>t("div",{...n,class:c("chat-footer",n.class)},r),Mn=(n,r)=>t("div",{...n,class:c("chat-header",n.class)},r),hn=(n,r)=>t("div",{...n,class:c("chat-image avatar",n.class)},t("div",{class:"w-10 rounded-full"},typeof r==="string"?t("img",{src:r,alt:"avatar"}):r)),pn=(n)=>t("input",{...n,type:"checkbox",class:c("checkbox",n.class)}),nt=(n)=>t("div",{...n,class:c("divider",n.class)}),tt=(n,r)=>t("div",{...n,class:c("fab",n.class)},r),rt=(n,r)=>t("fieldset",{...n,class:c("fieldset",n.class)},[n.legend&&t("legend",{class:"fieldset-legend"},n.legend),r]),ot=(n)=>t("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),et=(n,r)=>t("div",{...n,class:c("indicator",n.class)},[n.value&&t("span",{class:c("indicator-item badge",n.class)},n.value),r]),lt=(n,r)=>t("kbd",{...n,class:c("kbd",n.class)},r),st=(n,r)=>t("span",{...n,class:c("loading loading-spinner",n.class)},r),at=(n,r)=>t("div",{...n,class:c("navbar",n.class)},r),ft=(n)=>t("progress",{...n,class:c("progress",n.class)}),ut=(n,r)=>t("div",{...n,class:c("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},r??`${n.value??0}%`),bt=(n)=>t("input",{...n,type:"radio",class:c("radio",n.class)}),it=(n)=>t("input",{...n,type:"range",class:c("range",n.class)}),ct=(n)=>t("div",{...n,class:c("skeleton",n.class)}),_t=(n)=>t("span",{...n,class:c("skeleton skeleton-text",n.class)}),yt=(n,r)=>t("div",{...n,class:c("stack",n.class)},r),wt=(n,r)=>t("ul",{...n,class:c("steps",n.class)},r),Et=(n,r)=>t("li",{...n,class:c("step",n.class),"data-content":n.dataContent},r),dt=(n)=>t("label",{...n,class:c("swap",n.class)},[t("input",{type:"checkbox",checked:()=>N(n.value),onchange:(r)=>S(n.value)&&n.value(r.target.checked)}),t("div",{class:"swap-on"},n.on),t("div",{class:"swap-off"},n.off)]),gt=(n)=>t("textarea",{...n,class:c("textarea",n.class)}),Nt=(n)=>{let r=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return t("span",{...n,class:c("text-rotate",n.class)},t("span",{},r.map((e)=>t("span",{},e))))},St=(n,r)=>t("ul",{...n,class:c("timeline",n.vertical!==!1?"timeline-vertical":"timeline-horizontal",n.compact?"timeline-compact":"",n.class)},r),kt=(n)=>t("input",{...n,type:"checkbox",class:c("toggle",n.class)}),xt=(n,r)=>t("div",{...n,class:c("tooltip",n.class),"data-tip":n.tip},r),Ct=(n)=>{let r=n.name||`acc-${Math.random().toString(36).slice(2)}`,e=c("collapse",n.variant&&`collapse-${n.variant}`,n.class),s=(f)=>{let l=j(f,"title"),o=f.content;return n.type==="details"?t("details",{class:e,name:r,open:f.open||void 0},t("summary",{class:"collapse-title font-semibold"},l),o?t("div",{class:"collapse-content text-sm"},o):null):t("div",{class:e},t("input",{type:"radio",name:r,checked:f.open||void 0}),t("div",{class:"collapse-title font-semibold"},l),o?t("div",{class:"collapse-content text-sm"},o):null)};return S(n.items)?m(n.items,s,(f,l)=>f?.id??l):(n.items||[]).map(s)},Lt=(n)=>{if(n.children!==void 0)return t("table",{class:c("table",n.class),...n},n.children);let{items:r,columns:e=[],header:s=!0,keyFn:f,...l}=n,o=s!==!1&&e.some((u)=>u.label)?t("thead",{},t("tr",{},e.map((u)=>t("th",{class:u.class},u.label)))):null,a=t("tbody",{},m(()=>N(r)||[],(u,i)=>t("tr",{},e.map((b)=>{let _=b.render?b.render(u,i):u[b.key];return t("td",{class:b.class},_)})),f||((u,i)=>u?.id??i)));return t("table",{class:c("table",l.class),...l},[o,a])},Tt=(n)=>{if(n.children!==void 0)return t("div",{class:c("tabs",n.class),...n},n.children);let{items:r,activeIndex:e,onClose:s,...f}=n,l=s||(S(r)?(o)=>{let u=N(r).filter((i,b)=>b!==o);if(r(u),e()>=u.length)e(Math.max(0,u.length-1))}:null);return t("div",{class:c("tabs",n.class),...f},m(()=>N(r)||[],(o,a)=>{let u=()=>e()===a;return[t("a",{role:"tab",class:()=>`tab ${u()?"tab-active":""} ${o.class||""}`,onclick:(i)=>{i.preventDefault(),e(a),o.onclick?.(i)}},j(o),o.closable?t("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(i)=>{i.stopPropagation(),l?.(a)}}):null),t("div",{class:`tab-content ${o.contentClass||""}`,style:()=>`display: ${u()?"block":"none"};`},S(o.content)?o.content():o.content)]},(o,a)=>o.id??a))},$t=(n)=>{let r=`rating-${Math.random().toString(36).slice(2,7)}`,e=n.children??Array.from({length:n.count||5},(s,f)=>{let l=f+1;return t("input",{type:"radio",name:r,class:c("mask",n.mask||"mask-star"),checked:()=>N(n.value)===l,onchange:()=>S(n.value)?n.value(l):n.onchange?.(l)})});return t("div",{class:c("rating",n.class),...n},e)},En=(n)=>{if(n.children!==void 0)return t("ul",{class:c("menu",n.class),...n},n.children);let{items:r,keyFn:e=(l,o)=>l?.id??o,...s}=n,f=(l)=>l.children?t("li",{},t("details",{},t("summary",{},j(l)),t("ul",{},En({items:l.children})))):t("li",{},t("a",{href:l.href,onclick:l.onclick?(o)=>{if(!l.href)o.preventDefault();l.onclick(o)}:null},j(l)));return t("ul",{class:c("menu",s.class),...s},m(()=>N(r)||[],f,e))},At=(n,r)=>{let e=n.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return t("div",{class:c("drawer",n.class)},[t("input",{id:e,type:"checkbox",class:"drawer-toggle",checked:()=>N(n.open),onchange:(s)=>S(n.open)&&n.open(s.target.checked)}),t("div",{class:"drawer-content"},r),t("div",{class:"drawer-side"},[t("label",{for:e,class:"drawer-overlay",onclick:()=>S(n.open)&&n.open(!1)}),t("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>N(n.side))])])},jt=(n,r)=>{let{trigger:e,items:s,...f}=n,l=r||(s?t("ul",{class:"menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow"},m(()=>N(s)||[],(o)=>t("li",{},t("a",{onclick:(a)=>{o.onclick?.(a),a.currentTarget.closest("details").open=!1}},j(o))),(o,a)=>o.id??a)):null);return t("details",{class:c("dropdown",f.class),...f},[t("summary",{class:"btn m-1"},e||"Dropdown"),l])},Wt=(n,r)=>{if(r!==void 0)return t("select",{class:c("select",n.class),...n},r);let{label:e,float:s,placeholder:f,placeholderDisabled:l=!0,value:o,left:a,right:u,hint:i,items:b,keyFn:_,...w}=n,E=()=>{let y=N(b)||[];return[...f?[{disabled:l,label:f,value:""}]:[],...y]};return t("label",{class:s?"floating-label":""},[s&&t("span",{},e),t("label",{class:c("select",w.class)},[e&&!s&&t("span",{class:"label"},e),a??null,t("select",{value:()=>N(o),onchange:(y)=>S(o)?o(y.target.value):w.onchange?.(y)},m(E,(y)=>{let g=j(y,y.value!==void 0?"value":void 0),x=j(y,"label");return t("option",{value:g,disabled:y.disabled||void 0},x)},(y,g)=>y?.id??(typeof y==="string"?y:y.value)??g)),u??null]),i&&t("div",{class:"validator-hint"},i)])},mt=({items:n,value:r,onselect:e,placeholder:s="Buscar...",...f})=>{let l=d(N(r)||""),o=d(!1),a=d(()=>_n(n,l())),{cursor:u,onKey:i}=yn(a,o),b=(_)=>{let w=j(_),E=typeof _==="string"?_:_.value;if(l(w),S(r))r(E);e?.(_),o(!1)};return t("div",{class:"relative w-full"},[dn({...f,type:"text",placeholder:s,value:l,left:t("span",{class:"icon-[lucide--search]"}),oninput:(_)=>{if(l(_.target.value),S(r))r(_.target.value);o(!0)},onfocus:()=>o(!0),onblur:()=>setTimeout(()=>o(!1),150),onkeydown:(_)=>i(_,b)}),U(o,()=>V({duration:200,slide:!0},t("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[m(a,(_,w)=>t("li",{},[t("a",{class:()=>u()===w?"active bg-primary text-primary-content":"",onmousedown:(E)=>E.preventDefault(),onclick:()=>b(_),onmouseenter:()=>u(w)},j(_))]),(_,w)=>j(_)+w),()=>a().length===0?t("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},dn=(n)=>{let{label:r,icon:e,float:s,placeholder:f,value:l,left:o,right:a,rule:u,hint:i,content:b,..._}=n,w=d(!1),E=d(!1),y=n.type==="password",g=u??null,x=()=>y?N(w)?"text":"password":n.type||"text";return t("div",{class:"input-container",onfocusin:()=>E(!0),onfocusout:(C)=>{if(!C.currentTarget.contains(C.relatedTarget))E(!1)}},[t("label",{class:s?"floating-label":""},[s?t("span",{},r):null,t("label",{pattern:g,class:()=>c("input validator",n.class)},[r&&!s?t("span",{class:"label"},r):null,o??null,t("input",{..._,type:x,class:"grow",pattern:g,placeholder:f||r||" ",value:l}),a??null,y?t("label",{class:"swap swap-rotate ml-2"},[t("input",{type:"checkbox",onchange:(C)=>w(C.target.checked)}),t("span",{class:"swap-on icon-[lucide--eye]"}),t("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),i?t("div",{class:"validator-hint"},i):null,U(E,()=>V({duration:300,slide:!0},t("div",{class:"input-content",onmousedown:(C)=>C.preventDefault()},[S(b)?b(E):b])))])])},zt=(n)=>{let r=d(!1),e=()=>N(n.value)||"#000000",s=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],f=(l)=>{S(n.value)?n.value(l):n.onchange?.(l),r(!1)};return t("div",{class:c("relative w-fit",n.class)},[t("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(l)=>{l.stopPropagation(),r(!r())}},[t("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${e()}`}),n.label&&t("span",{class:"opacity-80"},n.label)]),U(r,()=>[t("div",{class:"fixed inset-0 z-[100]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},t("div",{class:"grid grid-cols-8 gap-1"},s.map((l)=>t("button",{type:"button",style:`background-color: ${l}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${e().toLowerCase()===l.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>f(l)}))))])])},gn=(n)=>{let r=d(new Date),e=d(null),s=d(0),f=d(0),l=new Date,o=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,a=(y)=>`${y.getFullYear()}-${String(y.getMonth()+1).padStart(2,"0")}-${String(y.getDate()).padStart(2,"0")}`,u=()=>N(n.range)===!0,i=()=>N(n.value),b=(y)=>{let g=a(y),x=i();if(u())if(!x?.start||x.start&&x.end)n.onChange?.({start:g,end:null,...n.hour&&{startHour:s()}});else{let C=x.start,K=g{let g=r();r(new Date(g.getFullYear(),g.getMonth()+y,1))},w=(y)=>{let g=r();r(new Date(g.getFullYear()+y,g.getMonth(),1))},E=({value:y,onChange:g})=>t("div",{class:"flex-1"},[t("div",{class:"flex gap-2 items-center"},[t("input",{type:"range",min:0,max:23,value:y,class:"range range-xs flex-1",oninput:(x)=>g(+x.target.value)}),t("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(N(y)).padStart(2,"0")+":00")])]);return t("div",{class:c("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[t("div",{class:"flex justify-between items-center mb-4 gap-1"},[t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(-1)},t("span",{class:"icon-[lucide--chevrons-left]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(-1)},t("span",{class:"icon-[lucide--chevron-left]"}))]),t("span",{class:"font-bold uppercase flex-1 text-center"},()=>r().toLocaleString("es-ES",{month:"short",year:"numeric"})),t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(1)},t("span",{class:"icon-[lucide--chevron-right]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(1)},t("span",{class:"icon-[lucide--chevrons-right]"}))])]),t("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>e(null)},[...["L","M","X","J","V","S","D"].map((y)=>t("div",{class:"text-[10px] opacity-40 font-bold text-center"},y)),()=>{let y=r(),g=y.getFullYear(),x=y.getMonth(),C=new Date(g,x,1).getDay(),K=C===0?6:C-1,Ln=new Date(g,x+1,0).getDate(),O=[];for(let P=0;P{let z=i(),H=e(),Tn=typeof z==="string"?z.split("T")[0]===T:z?.start===T,$n=z?.end===T,D=!1;if(u()&&z?.start){let v=z.start;if(!z.end&&H)D=T>v&&T<=H||T=H;else if(z.end)D=T>v&&Tu()&&e(T),onclick:()=>b(ln)},P.toString()))}return O}]),n.hour?t("div",{class:"mt-3 pt-2 border-t border-base-300"},u()?t("div",{class:"flex gap-4"},[E({value:s,onChange:(y)=>s(y)}),E({value:f,onChange:(y)=>f(y)})]):E({value:s,onChange:(y)=>s(y)})):null])},Jt=(n)=>{let r=d(!1),e=d(""),s=()=>N(n.range)===!0;J(()=>{let l=N(n.value);if(!l)return e("");let o="";if(typeof l==="string")o=n.hour&&l.includes("T")?l.replace("T"," "):l;else if(l.start&&l.end){let a=n.hour&&l.startHour!=null?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start,u=n.hour&&l.endHour!=null?`${l.end} ${String(l.endHour).padStart(2,"0")}:00`:l.end;o=`${a} - ${u}`}else if(l.start)o=`${n.hour&&l.startHour!=null?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start}...`;e(o)});let f=(l)=>{if(S(n.value))n.value(l);else n.onChange?.(l);if(!s()||l?.end!=null)r(!1)};return t("div",{class:c("relative w-full",n.class)},[t("label",{class:"input input-bordered w-full",onclick:(l)=>{l.stopPropagation(),r(!r())}},[t("span",{class:"icon-[lucide--calendar]"}),t("input",{...n,type:"text",class:"grow",value:e,readonly:!0,placeholder:n.placeholder||(s()?"Seleccionar rango...":"Seleccionar fecha...")})]),U(r,()=>[t("div",{class:"fixed inset-0 z-[90]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(l)=>l.stopPropagation()},gn({value:n.value,range:s(),hour:n.hour,onChange:f}))])])},Pt=(n)=>{let r=d([]),e=d(!1),s=d(null),f=(n.max||2)*1024*1024,l=(a)=>{let u=Array.from(a);if(s(null),u.some((b)=>b.size>f)){s(`Máx ${n.max||2}MB`);return}let i=[...r(),...u];if(r(i),S(n.onselect))n.onselect(i);else if(S(n.value))n.value(i)},o=(a)=>{let u=r().filter((i,b)=>b!==a);if(r(u),S(n.onselect))n.onselect(u);else if(S(n.value))n.value(u)};return t("div",{class:c("fieldset w-full p-0",n.class)},[t("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${e()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(a)=>{a.preventDefault(),e(!0)},ondragleave:()=>e(!1),ondrop:(a)=>{a.preventDefault(),e(!1),l(a.dataTransfer.files)}},[t("div",{class:"flex items-center gap-3 w-full"},[t("span",{class:"icon-[lucide--upload]"}),t("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),t("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),t("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(a)=>l(a.target.files)})]),()=>s()&&t("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),U(()=>r().length>0,()=>t("ul",{class:"mt-2 space-y-1"},m(r,(a,u)=>t("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[t("div",{class:"flex items-center gap-2 truncate"},[t("span",{class:"opacity-50"},"\uD83D\uDCC4"),t("span",{class:"truncate font-medium max-w-[200px]"},a.name),t("span",{class:"text-[9px] opacity-40"},`(${(a.size/1024).toFixed(0)} KB)`)]),t("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(i)=>{i.preventDefault(),o(u)}},t("span",{class:"icon-[lucide--x]"}))]),(a)=>a.name+a.lastModified)))])},Rt=(n,r="alert-success",e=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=t("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let f=t("div",{style:"display: contents"});s.appendChild(f);let l,o,a,i=rn(()=>{let b=d(!1),_=d(!1);l=()=>{if(_())return;clearTimeout(o),clearTimeout(a),_(!0),setTimeout(()=>{if(i.destroy(),f.remove(),!s.hasChildNodes())s.remove()},300)},a=setTimeout(()=>b(!0),0);let w=typeof n==="function"?N(n):n,E=typeof w==="string"?t("span",{},w):w;return t("div",{class:()=>{if(_())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(b())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[E,t("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:l},t("span",{class:"icon-[lucide--x]"}))])},f);if(e>0)o=setTimeout(l,e);return l},Ut=(n)=>{let r=null;J(()=>{let s=N(n.open);if(!r)return;s?r.showModal():r.close()});let e=()=>S(n.open)&&n.open(!1);return t("dialog",{...n,ref:(s)=>r=s,class:c("modal",n.class),onclose:e,oncancel:e},[t("div",{class:"modal-box"},[n.title&&t("h3",{class:"text-lg font-bold"},n.title),n.children,t("div",{class:"modal-action"},[n.actions||wn({class:"btn",onclick:e},"Cerrar")])]),t("form",{method:"dialog",class:"modal-backdrop"},[t("button",{},"close")])])};var en={};M(en,{Editor:()=>qt});var qt=(n)=>{let{value:r,class:e}=n,s=null,f=d(!1),l=d(""),o=()=>{if(!s)return;let b=s.innerHTML;if(S(r))r(b);else n.onchange?.(b)},a=(b,_=null)=>{if(!s)return;s.focus(),document.execCommand(b,!1,_),o()},u=(b,_=null)=>{if(!s)return!1;try{if(b==="formatBlock"){let w=window.getSelection();if(!w.rangeCount)return!1;let E=w.getRangeAt(0).commonAncestorContainer;while(E&&E!==s){if(E.nodeType===1&&E.tagName===_)return!0;E=E.parentNode}return!1}return document.queryCommandState(b)}catch(w){return!1}},i=t("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200"},[t("div",{class:"flex flex-wrap gap-1 flex-1"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("bold")?"btn-active":""}`,onclick:()=>a("bold")},t("span",{class:"icon-[lucide--bold]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("italic")?"btn-active":""}`,onclick:()=>a("italic")},t("span",{class:"icon-[lucide--italic]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("underline")?"btn-active":""}`,onclick:()=>a("underline")},t("span",{class:"icon-[lucide--underline]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("strikeThrough")?"btn-active":""}`,onclick:()=>a("strikeThrough")},t("span",{class:"icon-[lucide--strikethrough]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertUnorderedList")},t("span",{class:"icon-[lucide--list]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertOrderedList")},t("span",{class:"icon-[lucide--list-ordered]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>a("formatBlock",u("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},t("span",{class:"icon-[lucide--quote]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("select",{class:"select select-xs w-16",onchange:(b)=>a("fontSize",b.target.value),value:"3"},[t("option",{value:"1"},"1"),t("option",{value:"2"},"2"),t("option",{value:"3"},"3"),t("option",{value:"4"},"4"),t("option",{value:"5"},"5"),t("option",{value:"6"},"6"),t("option",{value:"7"},"7")]),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("undo")},t("span",{class:"icon-[lucide--undo-2]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("redo")},t("span",{class:"icon-[lucide--redo-2]"}))]),t("div",{class:"flex"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${f()?"btn-active":""}`,onclick:()=>{let b=f();if(!b)l(s?.innerHTML||"");else if(s)s.innerHTML=l(),o();f(!b)}},t("span",{class:"icon-[lucide--code-2]"}))])]);return t("div",{class:c("border border-base-300 rounded-box bg-base-100 overflow-hidden",e)},[i,t("div",{class:"relative"},[t("div",{ref:(b)=>{if(!s&&b)s=b,b.innerHTML=N(r)||""},style:()=>`min-height:10rem;${f()?"display:none":""}`,class:"p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]",contenteditable:"true",oninput:o,onpaste:()=>setTimeout(o,0)}),t("textarea",{class:"w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0",style:()=>f()?"":"display:none",value:l,oninput:(b)=>l(b.target.value)})])])};var Qt={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},Nn=d("es"),Sn=(n)=>Nn(n),kn=(n)=>()=>Qt[Nn()][n]||n;var xn={...on,...en},Cn={Locale:Sn,tt:kn};if(typeof window<"u")Object.entries({...xn,...Cn}).forEach(([n,r])=>{Object.defineProperty(window,n,{value:r,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");})(); +(()=>{var{defineProperty:p,getOwnPropertyNames:Zn,getOwnPropertyDescriptor:Gn}=Object,$n=Object.prototype.hasOwnProperty;function Yn(n){return this[n]}var Bn=(n)=>{var f=(bn??=new WeakMap).get(n),t;if(f)return f;if(f=p({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var _ of Zn(n))if(!$n.call(f,_))p(f,_,{get:Yn.bind(n,_),enumerable:!(t=Gn(n,_))||t.enumerable})}return bn.set(n,f),f},bn;var Sn=(n)=>n;function Un(n,f){this[n]=Sn.bind(null,f)}var nn=(n,f)=>{for(var t in f)p(n,t,{get:f[t],enumerable:!0,configurable:!0,set:Un.bind(f,t)})};var Dr={};nn(Dr,{Utils:()=>Kn,Components:()=>kn});var wn={};nn(wn,{rand:()=>d,listKey:()=>ln,isFn:()=>Q,getBy:()=>q,get:()=>A,filterBy:()=>Wn,cls:()=>y,close:()=>gn,Tooltip:()=>qr,Toggle:()=>Vr,Toast:()=>Ur,Timeline:()=>Sr,Textarea:()=>Yr,TextRotate:()=>Br,Tabs:()=>$r,Table:()=>Gr,Swap:()=>Zr,Steps:()=>Pr,Step:()=>Tr,Stack:()=>Kr,SkeletonText:()=>kr,Skeleton:()=>Qr,Select:()=>Ar,Rating:()=>Xr,Range:()=>Lr,Radio:()=>jr,Radial:()=>Jr,Progress:()=>zr,Navbar:()=>lr,Modal:()=>Wr,Menu:()=>Cr,Loading:()=>yr,List:()=>or,Kbd:()=>Nr,Input:()=>Ln,Indicator:()=>Er,Icon:()=>jn,Fileinput:()=>br,Fieldset:()=>ar,Fab:()=>wr,Dropdown:()=>ur,Drawer:()=>tr,Divider:()=>_r,Datepicker:()=>fr,Colorpicker:()=>rr,Checkbox:()=>nr,ChatImage:()=>pn,ChatHeader:()=>hn,ChatFooter:()=>en,ChatBubble:()=>cn,Chat:()=>vn,CarouselItem:()=>dn,Carousel:()=>mn,Card:()=>Mn,Calendar:()=>Jn,Button:()=>zn,Badge:()=>xn,Autocomplete:()=>sn,Alert:()=>Fn,Accordion:()=>Rn});var B=(n)=>typeof n==="function",tn=(n)=>n&&typeof n==="object",O=Array.isArray,S=typeof document<"u"?document:null,En=(n)=>n?._isRuntime?n.container:n instanceof Node?n:S.createTextNode(n==null?"":String(n)),K=null,G=null,F=!1,x=0,M=new Set,Nn=new WeakMap,rn=Symbol("iter"),fn=new WeakMap,H=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let f=[n];while(f.length){let t=f.pop();if(t._cleanups)t._cleanups.forEach((_)=>_()),t._cleanups.clear();if(t._children)t._children.forEach((_)=>f.push(_)),t._children.clear();if(t._deps)t._deps.forEach((_)=>_.delete(t)),t._deps.clear()}},g=(n)=>{if(G)(G._cleanups||=new Set).add(n)},Vn=(n)=>{let f=K;K=null;try{return n()}finally{K=f}},s=(n,f=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((u)=>u.delete(t));if(t._cleanups)t._cleanups.forEach((u)=>u()),t._cleanups.clear();let _=K,a=G;K=G=t;try{return t._result=n()}catch(u){console.error("[SigPro]",u)}finally{K=_,G=a}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=f,t._depth=K?K._depth+1:0,t._mounts=[],t._parent=G,G)(G._children||=new Set).add(t);return t},yn=()=>{if(F)return;F=!0;let n=Array.from(M).sort((f,t)=>f._depth-t._depth);M.clear();for(let f of n)if(!f._disposed)f();F=!1},qn=(n)=>{x++;try{return n()}finally{if(x--,x===0&&M.size>0&&!F)yn()}},Y=(n,f=!1)=>{if(!f&&K&&!K._disposed)n.add(K),(K._deps||=new Set).add(n);else if(f&&n.size>0){let t=!1;for(let _ of n){if(_===K||_._disposed)continue;if(_._isComputed){if(_._dirty=!0,_._subs)Y(_._subs,!0)}else M.add(_),t=!0}if(t&&!F&&x===0)queueMicrotask(yn)}},L=(n,f=null)=>{let t=new Set;if(B(n)){let _,a=()=>{if(a._dirty){let u=K;K=a;try{let w=n();if(!Object.is(_,w))_=w,Y(t,!0)}finally{K=u}a._dirty=!1}return Y(t),_};if(a._isComputed=!0,a._subs=t,a._dirty=!0,a._deps=null,a._disposed=!1,a.stop=()=>{},G)g(a.stop);return a}if(f)try{n=JSON.parse(localStorage.getItem(f))??n}catch(_){}return(..._)=>{if(_.length){let a=B(_[0])?_[0](n):_[0];if(!Object.is(n,a)){if(n=a,f)localStorage.setItem(f,JSON.stringify(n));Y(t,!0)}}return Y(t),n}},Cn=(n)=>{if(!tn(n))return n;let f=Nn.get(n);if(f)return f;let t=new Map,_=(u)=>{let w=t.get(u);if(!w)t.set(u,w=new Set);return w},a=new Proxy(n,{get(u,w,b){if(typeof w!=="symbol")Y(_(w));return Cn(Reflect.get(u,w,b))},set(u,w,b,E){let N=Reflect.has(u,w),o=Reflect.get(u,w,E),C=Reflect.set(u,w,b,E);if(C&&!Object.is(o,b)){if(Y(_(w),!0),!N)Y(_(rn),!0)}return C},deleteProperty(u,w){let b=Reflect.deleteProperty(u,w);if(b)Y(_(w),!0),Y(_(rn),!0);return b},ownKeys(u){return Y(_(rn)),Reflect.ownKeys(u)}});return Nn.set(n,a),a},I=(n,f)=>{if(f===void 0){let _=s(n);return _(),()=>H(_)}let t=s(()=>{let _=Array.isArray(n)?n.map((a)=>a()):n();Vn(()=>f(_))});return t(),()=>H(t)},_n=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((f)=>f()),n._cleanups.clear();if(n._ownerEffect)H(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((f)=>_n(f))},In=/^\s*(javascript|data|vbscript):/i,Hn=(n)=>n==="src"||n==="href"||n.startsWith("on"),on=(n,f)=>{if(f==null||f===!1)return null;if(Hn(n)){let t=String(f);if(In.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return f},r=(n,f={},t=[])=>{if(f instanceof Node||O(f)||!tn(f))t=f,f={};if(B(n)){let w=s(()=>{let o=n(f,{children:t,emit:(C,...J)=>f[`on${C[0].toUpperCase()}${C.slice(1)}`]?.(...J)});return w._result=o,o});w();let b=w._result;if(b==null)return null;let E=b instanceof Node||O(b)&&b.every((o)=>o instanceof Node)?b:S.createTextNode(String(b)),N=(o)=>{if(tn(o)&&!o._isRuntime)o._mounts=w._mounts||[],o._cleanups=w._cleanups||new Set,o._ownerEffect=w};return O(E)?E.forEach(N):N(E),E}let _=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),a=_?S.createElementNS("http://www.w3.org/2000/svg",n):S.createElement(n);a._cleanups=new Set;for(let w in f){if(!f.hasOwnProperty(w))continue;let b=f[w];if(w==="ref"){B(b)?b(a):b.current=a;continue}if(_&&w.startsWith("xlink:")){b==null?a.removeAttributeNS("http://www.w3.org/1999/xlink",w.slice(6)):a.setAttributeNS("http://www.w3.org/1999/xlink",w.slice(6),b);continue}if(w.startsWith("on")){let E=w.slice(2).toLowerCase();a.addEventListener(E,b);let N=()=>a.removeEventListener(E,b);a._cleanups.add(N),g(N)}else if(B(b)){let E=s(()=>{let N=on(w,b());if(w==="class")a.className=N||"";else if(N==null)a.removeAttribute(w);else if(w in a&&!_)a[w]=N;else a.setAttribute(w,N===!0?"":N)});if(E(),a._cleanups.add(()=>H(E)),g(()=>H(E)),/^(INPUT|TEXTAREA|SELECT)$/.test(a.tagName)&&(w==="value"||w==="checked")){let N=w==="checked"?"change":"input";a.addEventListener(N,(o)=>b(o.target[w]))}}else{let E=on(w,b);if(E!=null)if(w in a&&!_)a[w]=E;else a.setAttribute(w,E===!0?"":E)}}let u=(w)=>{if(O(w))return w.forEach(u);if(B(w)){let b=S.createTextNode("");a.appendChild(b);let E=[],N=s(()=>{let o=w(),C=(O(o)?o:[o]).map(En);E.forEach((j)=>{if(j._isRuntime)j.destroy();else _n(j);if(j.parentNode)j.remove()});let J=b;for(let j=C.length-1;j>=0;j--){let l=C[j];if(l.parentNode!==J.parentNode)J.parentNode?.insertBefore(l,J);if(l._mounts)l._mounts.forEach((z)=>z());J=l}E=C});N(),a._cleanups.add(()=>H(N)),g(()=>H(N))}else{let b=En(w);if(a.appendChild(b),b._mounts)b._mounts.forEach((E)=>E())}};return u(t),a},m=(n)=>{let f=new Set,t=G,_=K,a=S.createElement("div");a.style.display="contents",a.setAttribute("role","presentation"),G={_cleanups:f},K=null;let u=(w)=>{if(!w)return;if(w._isRuntime)f.add(w.destroy),a.appendChild(w.container);else if(O(w))w.forEach(u);else a.appendChild(w instanceof Node?w:S.createTextNode(String(w==null?"":w)))};try{u(n({onCleanup:(w)=>f.add(w)}))}finally{G=t,K=_}return{_isRuntime:!0,container:a,destroy:()=>{f.forEach((w)=>w()),_n(a),a.remove()}}},D=(n,f,t=null)=>{let _=S.createTextNode(""),a=r("div",{style:"display:contents"},[_]),u=null;return I(()=>!!(B(n)?n():n),(w)=>{if(u)u.destroy(),u=null;let b=w?f:t;if(b)u=m(()=>B(b)?b():b),a.insertBefore(u.container,_)}),g(()=>u?.destroy()),a},i=({name:n,duration:f=200,scale:t,slide:_,rotate:a,blur:u},w)=>{let b=typeof w==="function"?w():w;if(!(b instanceof Node))return b;if(n)return b.style.animation=`${n}-in ${f}ms`,b;let E=t||_||a||u,N=[t?"scale(0.95)":"",_?"translateY(-10px)":"",a?"rotate(-2deg)":""].filter(Boolean).join(" ");if(b.style.transition=`all ${f}ms ease`,b.style.opacity="0",E)b.style.transform=N;if(u)b.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(b.style.opacity="1",E)b.style.transform="none";if(u)b.style.filter="none"}),b},U=(n,f,t)=>{let _=S.createTextNode(""),a=r("div",{style:"display:contents"},[_]),u=new Map;return I(()=>(B(n)?n():n)||[],(w)=>{let b=new Map,E=[],N=w||[];for(let C=0;Cf(J,C));else u.delete(j);b.set(j,l),E.push(l)}u.forEach((C)=>C.destroy());let o=_;for(let C=E.length-1;C>=0;C--){let J=E[C].container;if(J.nextSibling!==o)a.insertBefore(J,o);o=J}u=b}),a},R=(n)=>{let f=()=>window.location.hash.slice(1)||"/",t=L(f()),_=()=>t(f());window.addEventListener("hashchange",_),g(()=>window.removeEventListener("hashchange",_));let a=r("div",{class:"router-hook"}),u=null;return I([t],()=>{let w=t(),b=n.find((E)=>{let N=E.path.split("/").filter(Boolean),o=w.split("/").filter(Boolean);return N.length===o.length&&N.every((C,J)=>C[0]===":"||C===o[J])})||n.find((E)=>E.path==="*");if(b){u?.destroy();let E={};b.path.split("/").filter(Boolean).forEach((N,o)=>{if(N[0]===":")E[N.slice(1)]=w.split("/").filter(Boolean)[o]}),R.params(E),u=m(()=>B(b.component)?b.component(E):b.component),a.replaceChildren(u.container)}}),a};R.params=L({});R.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");R.back=()=>window.history.back();R.path=()=>window.location.hash.replace(/^#/,"")||"/";var Dn=({url:n,method:f="GET",headers:t={}})=>{let _=L(!1),a=L(null),u=L(null),w=null,b=null;return{run:async(E=null)=>{w?.abort(),clearTimeout(b),w=new AbortController,b=setTimeout(()=>w.abort(),1e4),_(!0),a(null);try{let N=E instanceof FormData,o=await fetch(n,{method:f,headers:N?t:{"Content-Type":"application/json",...t},body:N?E:E?JSON.stringify(E):void 0,signal:w.signal}),C=await o.text(),J=C?JSON.parse(C):null;if(!o.ok)throw Error(J?.message||o.statusText);return u(J),J}catch(N){if(N.name!=="AbortError")a(N.message);throw N}finally{_(!1),clearTimeout(b),w=null,b=null}},abort:()=>w?.abort(),loading:_,error:a,data:u}},un=(n,f)=>{let t=typeof f==="string"?S.querySelector(f):f;if(!t)return;if(fn.has(t))fn.get(t).destroy();let _=m(B(n)?n:()=>n);return t.replaceChildren(_.container),fn.set(t,_),_},On=Object.freeze({$:L,$$:Cn,watch:I,h:r,when:D,each:U,fx:i,router:R,req:Dn,mount:un,batch:qn});if(typeof window<"u")Object.assign(window,On),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(f,t)=>r(n,f,t)});var A=(n)=>typeof n==="function"?n():n,q=(n,f="label")=>n&&typeof n==="object"?n[f]:n,y=(...n)=>n.filter(Boolean).join(" ").trim(),Q=(n)=>typeof n==="function",Wn=(n,f,t="label",_=String(f).toLowerCase())=>!f?A(n):A(n).filter((a)=>String(a&&typeof a==="object"?a[t]:a).toLowerCase().includes(_)),d=(n)=>`${n}-${Math.random().toString(36).slice(2,9)}`,gn=()=>document.activeElement?.blur(),ln=(n,f)=>{let t=L(-1);return I(()=>{if(!A(f))t(-1)}),{cursor:t,onKey:(a,u)=>{let w=A(n),b=t(),E=w.length;if(!E)return;let N=a.key;N==="ArrowDown"?(a.preventDefault(),f(!0),t(Math.min(b+1,E-1))):N==="ArrowUp"?(a.preventDefault(),t(Math.max(b-1,0))):N==="Enter"?b>=0&&(a.preventDefault(),u(w[b])):N==="Escape"&&f(!1)}}},Rn=(n)=>{let f=n.name||d("acc");return U(n.items,(t)=>{return r("div",{class:y("collapse",n.class)},[r("input",{type:"radio",name:f,checked:t.open||void 0}),t.title?r("div",{class:y("collapse-title",`${t.classTitle??" font-semibold"}`)},t.title):null,t.content?r("div",{class:y("collapse-content text-sm",`${t.classContent??" font-semibold"}`)},t.content):null])})},Fn=(n,f)=>r("div",{...n,class:y("alert",n.class)},f),sn=({items:n,value:f,onselect:t,placeholder:_="Buscar...",...a})=>{let u=L(A(f)||""),w=L(!1),b=L(()=>Wn(n,u())),{cursor:E,onKey:N}=ln(b,w),o=(C)=>{let J=q(C),j=typeof C==="string"?C:C.value;if(u(J),Q(f))f(j);t?.(C),w(!1)};return r("div",{class:"relative w-full"},[Ln({...a,type:"text",placeholder:_,value:u,left:r("span",{class:"icon-[lucide--search]"}),oninput:(C)=>{if(u(C.target.value),Q(f))f(C.target.value);w(!0)},onfocus:()=>w(!0),onblur:()=>setTimeout(()=>w(!1),150),onkeydown:(C)=>N(C,o)}),D(w,()=>i({duration:200,slide:!0},r("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[U(b,(C,J)=>r("li",{},[r("a",{class:()=>E()===J?"active bg-primary text-primary-content":"",onmousedown:(j)=>j.preventDefault(),onclick:()=>o(C),onmouseenter:()=>E(J)},q(C))]),(C,J)=>q(C)+J),()=>b().length===0?r("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},xn=(n,f)=>r("span",{...n,class:y("badge",n.class)},f),zn=(n,f)=>r("button",{...n,class:y("btn",n.class)},f),Jn=(n)=>{let f=L(new Date),t=L(null),_=L(0),a=L(0),u=new Date,w=`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}-${String(u.getDate()).padStart(2,"0")}`,b=(l)=>`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,E=()=>A(n.range)===!0,N=()=>A(n.value),o=(l)=>{let z=b(l),T=N();if(E())if(!T?.start||T.start&&T.end)n.onChange?.({start:z,end:null,...n.hour&&{startHour:_()}});else{let Z=T.start,$=z{let z=f();f(new Date(z.getFullYear(),z.getMonth()+l,1))},J=(l)=>{let z=f();f(new Date(z.getFullYear()+l,z.getMonth(),1))},j=({value:l,onChange:z})=>r("div",{class:"flex-1"},[r("div",{class:"flex gap-2 items-center"},[r("input",{type:"range",min:0,max:23,value:l,class:"range range-xs flex-1",oninput:(T)=>z(+T.target.value)}),r("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(A(l)).padStart(2,"0")+":00")])]);return r("div",{class:y("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[r("div",{class:"flex justify-between items-center mb-4 gap-1"},[r("div",{class:"flex gap-0.5"},[r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>J(-1)},r("span",{class:"icon-[lucide--chevrons-left]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>C(-1)},r("span",{class:"icon-[lucide--chevron-left]"}))]),r("span",{class:"font-bold uppercase flex-1 text-center"},()=>f().toLocaleString("es-ES",{month:"short",year:"numeric"})),r("div",{class:"flex gap-0.5"},[r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>C(1)},r("span",{class:"icon-[lucide--chevron-right]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>J(1)},r("span",{class:"icon-[lucide--chevrons-right]"}))])]),r("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>t(null)},[...["L","M","X","J","V","S","D"].map((l)=>r("div",{class:"text-[10px] opacity-40 font-bold text-center"},l)),()=>{let l=f(),z=l.getFullYear(),T=l.getMonth(),Z=new Date(z,T,1).getDay(),$=Z===0?6:Z-1,v=new Date(z,T+1,0).getDate(),W=[];for(let X=0;X<$;X++)W.push(r("div"));for(let X=1;X<=v;X++){let k=new Date(z,T,X),P=b(k);W.push(r("button",{type:"button",class:()=>{let V=N(),c=t(),Pn=typeof V==="string"?V.split("T")[0]===P:V?.start===P,Tn=V?.end===P,e=!1;if(E()&&V?.start){let h=V.start;if(!V.end&&c)e=P>h&&P<=c||P=c;else if(V.end)e=P>h&&PE()&&t(P),onclick:()=>o(k)},X.toString()))}return W}]),n.hour?r("div",{class:"mt-3 pt-2 border-t border-base-300"},E()?r("div",{class:"flex gap-4"},[j({value:_,onChange:(l)=>_(l)}),j({value:a,onChange:(l)=>a(l)})]):j({value:_,onChange:(l)=>_(l)})):null])},Mn=(n,f)=>{if(!n.title&&!n.body&&!n.actions&&!f)return r("div",{...n,class:y("card",n.class)},f);return r("div",{...n,class:y("card",n.class)},[n.title&&r("div",{class:y("card-title",n.titleClass)},n.title),(n.body||f)&&r("div",{class:y("card-body",n.bodyClass)},n.body||f),n.actions&&r("div",{class:y("card-actions",n.actionsClass)},n.actions)].filter(Boolean))},mn=(n,f)=>r("div",{...n,class:y("carousel",n.class)},f),dn=(n,f)=>r("div",{...n,class:y("carousel-item",n.class)},f),vn=(n,f)=>r("div",{...n,class:y("chat",n.class)},f),cn=(n,f)=>r("div",{...n,class:y("chat-bubble",n.class)},f),en=(n,f)=>r("div",{...n,class:y("chat-footer",n.class)},f),hn=(n,f)=>r("div",{...n,class:y("chat-header",n.class)},f),pn=(n,f)=>r("div",{...n,class:y("chat-image avatar",n.class)},r("div",{class:"w-10 rounded-full"},typeof f==="string"?r("img",{src:f,alt:"avatar"}):f)),nr=(n)=>r("input",{...n,type:"checkbox",class:y("checkbox",n.class)}),rr=(n)=>{let f=L(!1),t=()=>A(n.value)||"#000000",_=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],a=(u)=>{Q(n.value)?n.value(u):n.onchange?.(u),f(!1)};return r("div",{class:y("relative w-fit",n.class)},[r("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(u)=>{u.stopPropagation(),f(!f())}},[r("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${t()}`}),n.label&&r("span",{class:"opacity-80"},n.label)]),D(f,()=>[r("div",{class:"fixed inset-0 z-[100]",onclick:()=>f(!1)}),r("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},r("div",{class:"grid grid-cols-8 gap-1"},_.map((u)=>r("button",{type:"button",style:`background-color: ${u}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${t().toLowerCase()===u.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>a(u)}))))])])},fr=(n)=>{let f=L(!1),t=L(""),_=()=>A(n.range)===!0;I(()=>{let u=A(n.value);if(!u)return t("");let w="";if(typeof u==="string")w=n.hour&&u.includes("T")?u.replace("T"," "):u;else if(u.start&&u.end){let b=n.hour&&u.startHour!=null?`${u.start} ${String(u.startHour).padStart(2,"0")}:00`:u.start,E=n.hour&&u.endHour!=null?`${u.end} ${String(u.endHour).padStart(2,"0")}:00`:u.end;w=`${b} - ${E}`}else if(u.start)w=`${n.hour&&u.startHour!=null?`${u.start} ${String(u.startHour).padStart(2,"0")}:00`:u.start}...`;t(w)});let a=(u)=>{if(Q(n.value))n.value(u);else n.onChange?.(u);if(!_()||u?.end!=null)f(!1)};return r("div",{class:y("relative w-full",n.class)},[r("label",{class:"input input-bordered w-full",onclick:(u)=>{u.stopPropagation(),f(!f())}},[r("span",{class:"icon-[lucide--calendar]"}),r("input",{...n,type:"text",class:"grow",value:t,readonly:!0,placeholder:n.placeholder||(_()?"Seleccionar rango...":"Seleccionar fecha...")})]),D(f,()=>[r("div",{class:"fixed inset-0 z-[90]",onclick:()=>f(!1)}),r("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(u)=>u.stopPropagation()},Jn({value:n.value,range:_(),hour:n.hour,onChange:a}))])])},tr=(n,f)=>{let t=n.id||d("drawer");return r("div",{class:y("drawer",n.class)},[r("input",{id:t,type:"checkbox",class:"drawer-toggle",checked:()=>A(n.open),onchange:(_)=>Q(n.open)&&n.open(_.target.checked)}),r("div",{class:"drawer-side"},[r("label",{for:t,class:"drawer-overlay",onclick:()=>Q(n.open)&&n.open(!1)}),r("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>A(n.side))]),r("div",{class:"drawer-content"},f)])},_r=(n)=>r("div",{...n,class:y("divider",n.class)}),ur=(n,f)=>{return r("div",{...n,class:y("dropdown",n.class)},[r("div",{tabindex:"0",role:"button",class:y("btn",n.buttonClass)},n.label),r("div",{tabindex:"-1",class:"dropdown-content"},f)])},wr=(n,f)=>r("div",{class:"fab"},[r("div",{tabindex:"0",role:"button",class:y("btn",n.class)},jn(n.icon)),f]),ar=(n,f)=>r("fieldset",{class:y("fieldset",n.class)},[r("legend",{class:"fieldset-legend"},n.label),f]),br=(n)=>{let f=L([]),t=L(!1),_=L(null),a=(n.max||2)*1024*1024,u=(b)=>{let E=Array.from(b);if(_(null),E.some((o)=>o.size>a)){_(`Máx ${n.max||2}MB`);return}let N=[...f(),...E];if(f(N),Q(n.onselect))n.onselect(N);else if(Q(n.value))n.value(N)},w=(b)=>{let E=f().filter((N,o)=>o!==b);if(f(E),Q(n.onselect))n.onselect(E);else if(Q(n.value))n.value(E)};return r("div",{class:y("fieldset w-full p-0",n.class)},[r("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${t()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(b)=>{b.preventDefault(),t(!0)},ondragleave:()=>t(!1),ondrop:(b)=>{b.preventDefault(),t(!1),u(b.dataTransfer.files)}},[r("div",{class:"flex items-center gap-3 w-full"},[r("span",{class:"icon-[lucide--upload]"}),r("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),r("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),r("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(b)=>u(b.target.files)})]),()=>_()&&r("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},_()),D(()=>f().length>0,()=>r("ul",{class:"mt-2 space-y-1"},U(f,(b,E)=>r("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[r("div",{class:"flex items-center gap-2 truncate"},[r("span",{class:"opacity-50"},"\uD83D\uDCC4"),r("span",{class:"truncate font-medium max-w-[200px]"},b.name),r("span",{class:"text-[9px] opacity-40"},`(${(b.size/1024).toFixed(0)} KB)`)]),r("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(N)=>{N.preventDefault(),w(E)}},r("span",{class:"icon-[lucide--x]"}))]))))])},jn=(n)=>r("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),Er=(n,f)=>r("div",{...n,class:y("indicator",n.class)},[n.value&&r("span",{class:y("indicator-item badge",n.class)},n.value),f]),Ln=(n)=>{let{label:f,icon:t,float:_,placeholder:a,value:u,left:w,right:b,rule:E,hint:N,content:o,...C}=n,J=L(!1),j=L(!1),l=n.type==="password",z=E??null,T=()=>l?A(J)?"text":"password":n.type||"text";return r("div",{class:"input-container",onfocusin:()=>j(!0),onfocusout:(Z)=>{if(!Z.currentTarget.contains(Z.relatedTarget))j(!1)}},[r("label",{class:_?"floating-label":""},[_?r("span",{},f):null,r("label",{pattern:z,class:()=>y("input validator",n.class)},[f&&!_?r("span",{class:"label"},f):null,w??null,r("input",{...C,type:T,class:"grow",pattern:z,placeholder:a||f||" ",value:u}),b??null,l?r("label",{class:"swap swap-rotate ml-2"},[r("input",{type:"checkbox",onchange:(Z)=>J(Z.target.checked)}),r("span",{class:"swap-on icon-[lucide--eye]"}),r("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),N?r("div",{class:"validator-hint"},N):null,D(j,()=>i({duration:300,slide:!0},r("div",{class:"input-content",onmousedown:(Z)=>Z.preventDefault()},[Q(o)?o(j):o])))])])},Nr=(n,f)=>r("kbd",{...n,class:y("kbd",n.class)},f),or=(n,f)=>{if(!n.items)return r("ul",{...n,class:y("list",n.class)},f);return r("ul",{...n,class:y("list",n.class)},[U(n.items,(t,_)=>r("li",{class:y("list-row",t.class)},typeof n.render==="function"?n.render(t,_):t),n.key)])},yr=(n,f)=>r("span",{...n,class:y("loading loading-spinner",n.class)},f),Cr=(n)=>{if(n.children!==void 0)return r("ul",{class:y("menu",n.class),...n},n.children);let{items:f}=n,t=(_)=>_.children?r("li",{},r("details",{open:_.open||void 0},[r("summary",{},q(_)),r("ul",{},U(()=>A(_.children)||[],t))])):r("li",{},r("a",{href:_.href,onclick:_.onclick?(a)=>{if(!_.href)a.preventDefault();_.onclick(a)}:null},q(_)));return r("ul",{class:y("menu",n.class)},U(()=>A(f)||[],t))},Wr=(n)=>{let f=null;I(()=>{let _=A(n.open);if(!f)return;_?f.showModal():f.close()});let t=()=>Q(n.open)&&n.open(!1);return r("dialog",{...n,ref:(_)=>f=_,class:y("modal",n.class),onclose:t,oncancel:t},[r("div",{class:"modal-box"},[n.title&&r("h3",{class:"text-lg font-bold"},n.title),n.children,r("div",{class:"modal-action"},[n.actions||zn({class:"btn",onclick:t},"Cerrar")])]),r("form",{method:"dialog",class:"modal-backdrop"},[r("button",{},"close")])])},lr=(n,f)=>r("div",{...n,class:y("navbar",n.class)},f),zr=(n)=>r("progress",{...n,class:y("progress",n.class)}),Jr=(n,f)=>r("div",{...n,class:y("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},f??`${n.value??0}%`),jr=(n)=>r("input",{...n,type:"radio",class:y("radio",n.class)}),Lr=(n)=>r("input",{...n,type:"range",class:y("range",n.class)}),Xr=(n)=>{let f=d("rating"),t=n.children??Array.from({length:n.count||5},(_,a)=>{let u=a+1;return r("input",{type:"radio",name:f,class:y("mask",n.mask||"mask-star"),checked:()=>A(n.value)===u,onchange:()=>Q(n.value)?n.value(u):n.onchange?.(u)})});return r("div",{class:y("rating",n.class),...n},t)},Ar=(n,f)=>{if(f!==void 0)return r("select",{class:y("select",n.class),...n},f);let{label:t,float:_,placeholder:a,placeholderDisabled:u=!0,value:w,left:b,right:E,hint:N,items:o,keyFn:C,...J}=n,j=()=>{let l=A(o)||[];return[...a?[{disabled:u,label:a,value:""}]:[],...l]};return r("label",{class:_?"floating-label":""},[_?r("span",{},t):null,r("label",{class:y("select",J.class)},[!_&&t?r("span",{class:"label"},t):null,b??null,r("select",{value:()=>A(w),onchange:(l)=>Q(w)?w(l.target.value):J.onchange?.(l)},U(j,(l)=>{let z=q(l,l.value!==void 0?"value":void 0),T=q(l,"label");return r("option",{value:z,disabled:l.disabled||void 0},T)})),E??null]),N?r("div",{class:"validator-hint"},N):null])},Qr=(n)=>r("div",{...n,class:y("skeleton",n.class)}),kr=(n)=>r("span",{...n,class:y("skeleton skeleton-text",n.class)}),Kr=(n,f)=>r("div",{...n,class:y("stack",n.class)},f),Pr=(n,f)=>r("ul",{...n,class:y("steps",n.class)},f),Tr=(n,f)=>r("li",{...n,class:y("step",n.class),"data-content":n.dataContent},f),Zr=(n)=>r("label",{...n,class:y("swap",n.class)},[r("input",{type:"checkbox",checked:()=>A(n.value),onchange:(f)=>Q(n.value)&&n.value(f.target.checked)}),r("div",{class:"swap-on"},n.on),r("div",{class:"swap-off"},n.off)]),Gr=(n)=>{if(n.children!==void 0)return r("table",{class:y("table",n.class),...n},n.children);let{items:f,columns:t=[],header:_=!0,keyFn:a,...u}=n,w=_!==!1&&t.some((E)=>E.label)?r("thead",{},r("tr",{},t.map((E)=>r("th",{class:E.class},E.label)))):null,b=r("tbody",{},U(()=>A(f)||[],(E,N)=>r("tr",{},t.map((o)=>{let C=o.render?o.render(E,N):E[o.key];return r("td",{class:o.class},C)}))));return r("table",{class:y("table",u.class),...u},[w,b])},$r=(n,f)=>{if(!n.items){let{class:N,...o}=n;return r("div",{...o,class:y("tabs",N)},f)}let{items:t,activeIndex:_,onClose:a,class:u,...w}=n,b=(N)=>Q(N)?N():N,E=a||(Q(t)?(N,o)=>{let J=b(t).filter((j,l)=>l!==N);if(t(J),_()>=J.length)_(Math.max(0,J.length-1))}:null);return r("div",{...w,class:y("tabs",u)},()=>{return(b(t)||[]).flatMap((o,C)=>{let J=()=>_()===C,j=r("button",{class:()=>`tab ${J()?"tab-active":""} ${o.class||""}`,onclick:(z)=>{z.preventDefault(),_(C),o.onclick?.(z)}},[q(o),o.closable?r("span",{class:"ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-base-300 text-base-content/60 hover:text-base-content cursor-pointer",onclick:(z)=>{z.stopPropagation(),E?.(C,o)}},r("span",{class:"icon-[lucide--x] w-3 h-3"})):null]),l=r("div",{class:"tab-content bg-base-100 border-base-300 p-6",style:()=>`display: ${J()?"block":"none"};`},Q(o.content)?o.content():o.content);return[j,l]})})},Yr=(n)=>r("textarea",{...n,class:y("textarea",n.class)}),Br=(n)=>{let f=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return r("span",{...n,class:y("text-rotate",n.class)},r("span",{},f.map((t)=>r("span",{},t))))},Sr=(n,f)=>r("ul",{...n,class:y("timeline",n.class)},f),Ur=(n,f="alert-success",t=3500)=>{let _=document.getElementById("sigpro-toast-container");if(!_)_=r("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(_);let a=r("div",{style:"display: contents"});_.appendChild(a);let u,w,b,N=un(()=>{let o=L(!1),C=L(!1);u=()=>{if(C())return;clearTimeout(w),clearTimeout(b),C(!0),setTimeout(()=>{if(N.destroy(),a.remove(),!_.hasChildNodes())_.remove()},300)},b=setTimeout(()=>o(!0),0);let J=typeof n==="function"?A(n):n,j=typeof J==="string"?r("span",{},J):J;return r("div",{class:()=>{if(C())return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(o())return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${f} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[j,r("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:u},r("span",{class:"icon-[lucide--x]"}))])},a);if(t>0)w=setTimeout(u,t);return u},Vr=(n)=>r("input",{...n,type:"checkbox",class:y("toggle",n.class)}),qr=(n,f)=>r("div",{...n,class:y("tooltip",n.class),"data-tip":n.tip},f);var an={};nn(an,{Editor:()=>Ir});var Ir=(n)=>{let{value:f,class:t}=n,_=null,a=null,u=L(!1),w=L(""),b=L(0),E=L(0),N=L(!1),o=["\uD83D\uDE00","\uD83D\uDE0A","\uD83D\uDE09","\uD83E\uDDD0","\uD83D\uDE2E","\uD83E\uDD14","\uD83D\uDE05","\uD83D\uDE02","\uD83D\uDE0D","\uD83D\uDE18","\uD83E\uDD70","\uD83D\uDC4D","\uD83D\uDC4E","\uD83D\uDC4C","\uD83E\uDD1D","\uD83E\uDD1E","\uD83D\uDC4B","\uD83D\uDC4F","\uD83D\uDE4C","\uD83D\uDE4F","\uD83D\uDCAA","☝️","\uD83D\uDC47","\uD83D\uDC48","\uD83D\uDC49","\uD83D\uDD95","✅","⚠️","\uD83D\uDE80","\uD83D\uDCE2","✉️","❤️"],C=()=>{let W=window.getSelection();if(W.getRangeAt&&W.rangeCount)a=W.getRangeAt(0)},J=()=>{if(a){let W=window.getSelection();W.removeAllRanges(),W.addRange(a)}},j=()=>{if(E(E()+1),_)b(_.innerText.length)},l=()=>{if(!_)return;let W=_.innerHTML;if(Q(f))f(W);else n.onchange?.(W);j()},z=(W,X=null)=>{if(!_)return;if(_.focus(),a)J();document.execCommand(W,!1,X),a=null,l()},T=(W)=>{let X=document.createElement("div");X.style="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;";let k=document.createElement("img");k.src=W,k.style="max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;",X.onclick=()=>document.body.removeChild(X),X.appendChild(k),document.body.appendChild(X)},Z=(W)=>{if(!W)return;let X=new FileReader;X.onload=(k)=>{if(W.type.startsWith("image/")){let P=`
 `;z("insertHTML",P)}else{let P=`${W.name} `;z("insertHTML",P)}},X.readAsDataURL(W)},$=(W,X=null)=>{if(E(),!_||u())return!1;try{if(W==="formatBlock"){let k=window.getSelection().getRangeAt(0).commonAncestorContainer;while(k&&k!==_){if(k.nodeType===1&&k.tagName===X)return!0;k=k.parentNode}return!1}return document.queryCommandState(W)}catch(k){return!1}},v=r("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20"},[r("div",{class:"flex flex-wrap gap-1 flex-1 items-center"},[r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("bold")?"btn-active bg-primary/20":""}`,onclick:()=>z("bold")},r("span",{class:"icon-[lucide--bold]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("italic")?"btn-active bg-primary/20":""}`,onclick:()=>z("italic")},r("span",{class:"icon-[lucide--italic]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("underline")?"btn-active bg-primary/20":""}`,onclick:()=>z("underline")},r("span",{class:"icon-[lucide--underline]"})),r("input",{type:"color",class:"w-5 h-5 p-0 border-0 bg-transparent cursor-pointer",oninput:(W)=>z("foreColor",W.target.value)}),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyLeft")},r("span",{class:"icon-[lucide--align-left]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyCenter")},r("span",{class:"icon-[lucide--align-center]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("justifyRight")},r("span",{class:"icon-[lucide--align-right]"})),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("insertUnorderedList")},r("span",{class:"icon-[lucide--list]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("insertOrderedList")},r("span",{class:"icon-[lucide--list-ordered]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("outdent"),title:"Mover izquierda"},r("span",{class:"icon-[lucide--indent-decrease]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("indent"),title:"Mover derecha (Tab)"},r("span",{class:"icon-[lucide--indent-increase]"})),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${$("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>z("formatBlock",$("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},r("span",{class:"icon-[lucide--quote]"})),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let W=window.prompt("URL:");if(W)z("createLink",W)}},r("span",{class:"icon-[lucide--link]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let W=document.createElement("input");W.type="file",W.onchange=(X)=>Z(X.target.files[0]),W.click()}},r("span",{class:"icon-[lucide--paperclip]"})),r("div",{class:"relative"},[r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:(W)=>{W.stopPropagation(),C(),N(!N())}},r("span",{class:"icon-[lucide--smile]"})),r("div",{class:"absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1",style:()=>N()?"display:flex":"display:none"},o.map((W)=>r("span",{class:"cursor-pointer hover:bg-base-200 p-1 rounded text-lg",onclick:(X)=>{X.stopPropagation(),z("insertText",W),N(!1)}},W)))]),r("span",{class:"w-px h-5 bg-base-300 mx-1"}),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("removeFormat")},r("span",{class:"icon-[lucide--eraser]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("undo"),title:"Deshacer"},r("span",{class:"icon-[lucide--undo-2]"})),r("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>z("redo"),title:"Rehacer"},r("span",{class:"icon-[lucide--redo-2]"}))]),r("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u()?"btn-active":""}`,onclick:()=>{if(!u())w(_?.innerHTML||"");else if(_)_.innerHTML=w(),l();u(!u())}},r("span",{class:"icon-[lucide--code-2]"}))]);if(typeof document<"u"&&!document.getElementById("editor-styles")){let W=document.createElement("style");W.id="editor-styles",W.textContent=` + [contenteditable="true"] div, + [contenteditable="true"] p { + margin: 0; + padding: 0; + } + `,document.head.appendChild(W)}return r("div",{class:y("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col",t)},[v,r("div",{class:"relative flex-1 flex flex-col",onclick:()=>N(!1)},[r("div",{ref:(W)=>{if(!_&&W)_=W,W.innerHTML=A(f)||"",document.execCommand("defaultParagraphSeparator",!1,"br"),W.addEventListener("click",(X)=>{let k=X.target.closest(".resizable-img-container");if(k){let P=k.querySelector("img");if(P)T(P.src)}})},style:()=>`min-height:22rem;${u()?"display:none":""}`,class:"p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8",contenteditable:"true",oninput:l,onkeydown:(W)=>{if(W.key==="Tab")W.preventDefault(),z("indent")},onkeyup:()=>{j(),C()},onclick:(W)=>{j(),C(),W.stopPropagation()},onmouseup:()=>{l(),C()},onpaste:(W)=>{W.preventDefault();let X=W.clipboardData.getData("text/plain");z("insertText",X)},ondragover:(W)=>W.preventDefault(),ondrop:(W)=>{W.preventDefault(),Z(W.dataTransfer.files[0])}}),r("textarea",{class:"w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0",style:()=>u()?"":"display:none",value:w,oninput:(W)=>{if(w(W.target.value),_)_.innerHTML=W.target.value;n.onchange?.(W.target.value)}})]),r("div",{class:"px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic"},[r("span",()=>`${b()} caracteres`)])])};var Hr={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},Xn=L("es"),An=(n)=>Xn(n),Qn=(n)=>()=>Hr[Xn()][n]||n;var kn={...wn,...an},Kn={Locale:An,tt:Qn};if(typeof window<"u")Object.entries({...kn,...Kn}).forEach(([n,f])=>{Object.defineProperty(window,n,{value:f,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");})(); diff --git a/sigpro.css b/sigpro.css index ddc9cbc..8f6687f 100644 --- a/sigpro.css +++ b/sigpro.css @@ -174,6 +174,7 @@ } + /* sigpro-ui daisyUI classes - extracted from components */ /* join join-vertical lg:join-horizontal divider divider-horizontal validator validator-hint glass */